- 05 May, 2019 5 commits
-
-
Joe Loser authored
Summary: - As of C++17, `std::string` contains a non-const `data()` member function. This is useful when working with C APIs that have `char*` output parameters. - Implements P0272 for `FBString`: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html Example of workaround without this: ``` fbstring s{}; some_api(&s.front()); ``` - The expression `&s.front()` above causes undefined behavior since the string is empty. - Add non-const public member function `data()` to `fbstring` which delegates to `fbstring_core`. Pull Request resolved: https://github.com/facebook/folly/pull/1116 Reviewed By: Orvid Differential Revision: D15213884 Pulled By: yfeldblum fbshipit-source-id: f533542db0a7e34c09a622e5257d7c1e66ab75e2
-
Yedidya Feldblum authored
Summary: [Folly] `small_vector<T>::get_allocator()` for compatibility with other container types. While `small_vector` is not actually parameterizable over the allocator types, compatibility with generic interfaces such as the presorted-ctor interfaces of `sorted_vector_set` and `sorted_vector_map` require `get_allocator`. Reviewed By: vitaut Differential Revision: D15194509 fbshipit-source-id: 3a7842d5640f8e95a09c4cd8e2a9ab6ffc4fe9ac
-
Yedidya Feldblum authored
Summary: [Folly] container_type member alias for `sorted_vector_set` and `sorted_vector_map`, following the protocol from `std::queue`, `std::priority_queue`, and `std::stack` container adaptors. Reviewed By: vitaut Differential Revision: D15194108 fbshipit-source-id: 91332478c66779690f415d598b99274b8ee52df4
-
Yedidya Feldblum authored
Summary: [Folly] `kGlibcxxVer`, from `_GLIBCXX_RELEASE` if available. Differential Revision: D15209042 fbshipit-source-id: 077e94db623f33ebc3ec2cb93a5d7774d384a863
-
Yedidya Feldblum authored
Summary: [Folly] Always `#include <bits/c++config.h>` if possible from `folly/portability/Config.h`. This is the libstdc++ (glibcxx) version/config/features header, so include it alongside the corresponding glibc version/config/features header. Differential Revision: D15209040 fbshipit-source-id: 6f624283f58523d74317f3d998aa99c1c50ee2b3
-
- 04 May, 2019 2 commits
-
-
Krishna Kondaka authored
Summary: Split validateRecord to allow validating header and data separately. This is useful when the header is used while storing records on storage devices. Validating header alone before validating the record helps avoiding unnecessary device reads. It also helps avoiding unnecessary memory allocations while trying to read invalid dataLength bytes present in an invalid header. Reviewed By: yfeldblum Differential Revision: D15184763 fbshipit-source-id: e1f008df82cf2d040322b8d62135ea2b5e0dcc0e
-
Yedidya Feldblum authored
Summary: [Folly] Use `noexcept` in `IOBuf` v.s. reimplementing it via explicit `catch` and `abort`, with the intended side-effect of adding support for `-fno-exceptions`. Reviewed By: simpkins Differential Revision: D15208427 fbshipit-source-id: bcf9d7b0f1a556e43d996c84b1df43ff891da974
-
- 03 May, 2019 33 commits
-
-
Chad Austin authored
Differential Revision: D15073229 Original commit changeset: 417a1f4e42d0 fbshipit-source-id: 689b010627482e9a05f3dd34e89baae485875025
-
Wez Furlong authored
Summary: This is useful especially on Windows where the up-to-date checks for the dependencies take a long time. The idea is that you might run this to start: ``` $ getdeps.py build eden ``` and then while in the edit/debug/build iteration cycle: ``` $ getdeps.py build --no-deps eden ``` Reviewed By: pkaush Differential Revision: D15200352 fbshipit-source-id: 086f2f49db967ef4d1914a69fa80067104d79136
-
Wez Furlong authored
Summary: Previously, we were using autoconf to build sqlite, but that isn't available on Windows. Instead, here's a builder that generates a little cmake configuration for building and installing sqlite. Using cmake for this means that we can test the same builder on all platforms that need to pull in sqlite. Reviewed By: simpkins Differential Revision: D15179387 fbshipit-source-id: fccf969182565982bd5be55545a2d2625aa99124
-
Wez Furlong authored
Summary: When running in FB infra, prefer to download from our local LFS server rather than going out to the internet. Fall back to a normal internet download if the LFS get fails for some reason. Upload to LFS after successfully verifying the hash for the downloaded archive. Add a subcommand that performs a fetch for all possible platforms so that it is easier to ensure that the lfs-pointers file is up to date. Reviewed By: simpkins Differential Revision: D14978660 fbshipit-source-id: 240fc32fc7003d1e06c88b80d85054dae36e2f31
-
Wez Furlong authored
Summary: In order to pull in the treemanifest and other libraries from our mercurial repo, add a manifest file for it, and then adjust the logic in our cmake module to look for it. The fb-mercurial manifest just copies the source tree to the installation dir. In the future, we could teach it to invoke the build for real. Reviewed By: simpkins Differential Revision: D14969806 fbshipit-source-id: cb270c5003a1c134eeea92c7481a84938f1c5957
-
Wez Furlong authored
Summary: This prints out the installation or source prefix for a given project. This is useful in eg: packaging scripts to figure out where they can find the built artifacts. Reviewed By: simpkins Differential Revision: D14967378 fbshipit-source-id: 7e1b5de2ca7219af24cfb07b4b42de22aa410469
-
Wez Furlong authored
Summary: If `testpilot` is available, generate a buck compatible json file describing the available test binaries and feed that to testpilot to have it run the tests. A later (yet to be written) diff will be able to pass appropriate flags down to testpilot in continuous runs and that will allow testpilot to auto-disable and file tasks for tests in the opensource builds. Reviewed By: simpkins Differential Revision: D14766856 fbshipit-source-id: 4e144ff18f6788cf5e830d29788eabd2dbbae46a
-
Wez Furlong authored
Summary: The loader makes it possible to monkey patch the functions that are responsible for loading manifests. It is intended to be use in tests that are run in bucks sandboxed environment and that don't have direct access to the manifest files on disk. Reviewed By: simpkins Differential Revision: D14781326 fbshipit-source-id: 18f69f8ce5768dc605b1a9388a80b7b7b9ffe0f4
-
Wez Furlong authored
Summary: previously, a relatively lame hash was computed to use for the build directory based on some hash of the source directory. That was good enough to get things off the ground, but in the interest of being able to cache the build outputs and safely invalidate them we need a slightly more rigorous implementation. This diff computes a hash based on the manifest contents and relevant environmental factors. The hash is used to name the build directory which will ultimately be cached eg: using the travis/appveyor cache directory configuration and some other means for the FB internal CI. The hash needs to be sufficient that we change the hash when the manifests change. We can tolerate a false positive change in hash (it just means that a build will take longer), but cannot tolerate a false negative (which would result in an incorrect build). Reviewed By: simpkins Differential Revision: D14710332 fbshipit-source-id: ebc2e74eafc6f3305d4412a82195bc9fb9dfa615
-
Wez Furlong authored
Summary: This command schedules a facebook specific sandcastle job for the current commit in your repo for each of the platforms we have support for in sandcastle. You can use `--dry-run` to have it print out the job specs. To support this, I've moved around some of the support utilities to make it easier to import them. Reviewed By: simpkins Differential Revision: D14710330 fbshipit-source-id: fb1e2a2ce78e52894291159514977da97028b37f
-
Wez Furlong authored
Summary: Adds a `test` subcommand that runs the tests for project. We're mostly interested in the 1st party facebook projects for this. The `sandcastle` flow will run the `test` subcommand just for the "leaf" project--the one named on the command line. Reviewed By: simpkins Differential Revision: D14710331 fbshipit-source-id: 7d04a46cfd723894d61018de2f230140b52285ac
-
Wez Furlong authored
Summary: This cleans up the scratch dir, removing everything except for downloaded tarballs. Reviewed By: simpkins Differential Revision: D14781328 fbshipit-source-id: 9304e44a268cf7996c5e572a2eca219aefbf4b46
-
Wez Furlong authored
Summary: This fixes a TODO; in our CI environment we want to use the real shipit, so we'll use this flag to make that happen. Reviewed By: simpkins Differential Revision: D14695576 fbshipit-source-id: 64ee72c210e2472d295dcbd39c86549273b68452
-
Wez Furlong authored
Summary: This makes it possible to disable eden (and thus thrift) support. I've defaulted this to off so that we don't break the existing watchman CI. Reviewed By: simpkins, strager Differential Revision: D14726767 fbshipit-source-id: 0f4d0597d901a91850f1ba6d71609c059c064c22
-
Wez Furlong authored
Summary: adds the command that is used to drive a build. The dependencies of the named project are computed using the same mechanism behind the `list-deps` subcommand. If a manifest specifies that it uses the `cmake` builder then a dependency on `cmake` is synthesized so that we can download a recent version of cmake ahead of time. The build command uses the fetcher to update the src and then executes the builder. Reviewed By: simpkins Differential Revision: D14691011 fbshipit-source-id: 31ae59614651ef021a9505e89c13b5717b440071
-
Wez Furlong authored
Summary: this could do with a better name; the NopBuilder doesn't actually build anything, but instead copies some files to the destination location. This is used together with eg: cmake to install pre-built binaries downloaded from a tarball. Reviewed By: simpkins Differential Revision: D14691015 fbshipit-source-id: a938e977aa4ec5a664bdb8085ff708319a204594
-
Wez Furlong authored
Summary: the boost builder knows how to perform the non-standard configure and build for boost. Ideally we'd just build this statically and be happy but there are some nuances I've observed while building on different platforms: * One of our projects (thrift or wangle) explicitly requests static boost linkage for reasons unspecified * on darwin the install_name is broken when building dynamic libs For the sake of expediency in getting getdeps up and running, the solution for the moment is to build static on posix systems and build both static and shared on windows systems. Reviewed By: simpkins Differential Revision: D14691009 fbshipit-source-id: 634770a6f53c3ada42d1877cc6c3dacc6eed7d18
-
Wez Furlong authored
Summary: the openssl builder knows how to perform the non-standard configuration and build steps to build openssl. On Linux systems the manifests for our projects don't mention openssl, causing them to pick up the system openssl. On Mac, apple don't ship openssl headers so we need to build our own. On Windows there is no standard openssl installation so we also need to build our own. As a result, this builder only works on windows and mac. Reviewed By: simpkins Differential Revision: D14691010 fbshipit-source-id: 9f8979f9eaeb5209c290cf4f43c97c0cb43d13a2
-
Wez Furlong authored
Summary: this builder is used to bootstrap the ninja build tool. On Windows and mac the manifest for ninja is set to download a pre-built executable. While pre-built executables are available for linux they aren't portable enough for our purposes so we need to be able to build it for ourselves. Reviewed By: simpkins Differential Revision: D14690992 fbshipit-source-id: b60fd02ad04f58dc7c2931280341791270609737
-
Wez Furlong authored
Summary: the cmake builder knows how to use cmake to configure a build for (preferably) and out-of-src build. The `cmake.defines` section of the manifest is used to pass `-Dkey=value` options to the cmake configure command line. We prefer to use `ninja` to execute the build so that we can use more cores than 1 on Windows and just for consistency across platforms with mac and linux. Reviewed By: simpkins Differential Revision: D14690998 fbshipit-source-id: 8102e8b4a47da515ca001772788ed0e5f2645ad7
-
Wez Furlong authored
Summary: the autoconf builder performs an out-of-source build using the autoconf suite to configure the build rules. The `autoconf.args` section from the manifest is passed to the `./configure` command line. If an `autogen.sh` script is present then it will be used to regenerate a missing `configure` script, otherwise we'll try `autoreconf`. Reviewed By: simpkins Differential Revision: D14691002 fbshipit-source-id: ab8cceafb833dab513d5a50c65f4c895a4f40047
-
Wez Furlong authored
Summary: the make builder runs `make` in the source directory. The `make.args` section from the manifest is passed as arguments to the `make` invocation. Reviewed By: simpkins Differential Revision: D14690996 fbshipit-source-id: 180d657ad05f0c0266a8c1d30979d8d1473958c9
-
Wez Furlong authored
Summary: a builder knows how to build and install a project. Later diffs add concrete implementations of the BuilderBase Reviewed By: simpkins Differential Revision: D14691018 fbshipit-source-id: 89b14614b5160353cd7e59f27037afcdf6229eb7
-
Wez Furlong authored
Summary: While the command isn't necessarily super useful on its own, it does show that the plumbing for walking the deps is functioning, and that is important when it comes to building. The output lists the projects in the order that they would be built. The `fetch` command has been augmented to add a `--recursive` flag that uses the same mechanism to recursively fetch the dependencies. Reviewed By: simpkins Differential Revision: D14691004 fbshipit-source-id: b00bf6ad4742f8bb0a70698f71a5fe03d6a1f453
-
Wez Furlong authored
Summary: Adds a command that can be used to trigger a fetch for a project ``` $ ./opensource/fbcode_builder/getdeps.py fetch zstd Cloning https://github.com/facebook/zstd.git... --- + git clone --depth=100 https://github.com/facebook/zstd.git /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/repos/github.com-facebook-zstd.git Cloning into '/data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/repos/github.com-facebook-zstd.git'... remote: Enumerating objects: 3816, done. remote: Counting objects: 100% (3816/3816), done. remote: Compressing objects: 100% (1415/1415), done. remote: Total 3816 (delta 2556), reused 3312 (delta 2288), pack-reused 0 Receiving objects: 100% (3816/3816), 2.93 MiB | 9.59 MiB/s, done. Resolving deltas: 100% (2556/2556), done. Updating /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/repos/github.com-facebook-zstd.git -> v1.3.8 --- + git -C /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/repos/github.com-facebook-zstd.git fetch origin v1.3.8 From https://github.com/facebook/zstd * tag v1.3.8 -> FETCH_HEAD --- + git -C /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/repos/github.com-facebook-zstd.git checkout FETCH_HEAD Note: checking out 'FETCH_HEAD'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 470344d Merge pull request #1479 from facebook/visualTest --- + git -C /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/repos/github.com-facebook-zstd.git submodule update --init ``` Reviewed By: simpkins Differential Revision: D14691008 fbshipit-source-id: 3afa391360518a08ebd6ff97f5b8b4993f10c4e8
-
Wez Furlong authored
Summary: This fetcher knows how to transform a 1st party project from fbsource into approximately the same shape as ShipIt produces for the github repo mirrors. It does this by reading shipit mapping information from the manifest file for the project. Since this fetcher uses data in the manifest and is implemented directly in the getdeps codebase, it is suitable for iterating on the opensource builds directly out of fbsource on both devservers and laptops inside FB. Reviewed By: simpkins Differential Revision: D14691012 fbshipit-source-id: 05f68a7be64a2e465937b24b8825d25d3348ed13
-
Wez Furlong authored
Summary: This fetcher knows how to take a 1st party FB project from fbsource and transform it to the same shape as our github repos using ShipIt. The transformation creates a transformed mirror of the code in scratch space (rather than mutating fbsource directly). This can only be used in environments where shipit is available. A later diff implements an alternative that works in more environments. Reviewed By: simpkins Differential Revision: D14691013 fbshipit-source-id: 539e307755c9fc0a098a235868ab622652061494
-
Wez Furlong authored
Summary: this fetcher knows how to download a URL that references an archive and extract the sources from it. Compressed tarballs and zipfiles are supported. Reviewed By: simpkins Differential Revision: D14690994 fbshipit-source-id: ffbbd1d9479b0d5aa3e5cd13fe11a560e9d01c2a
-
Wez Furlong authored
Summary: this fetcher knows how to check out sources via git. Reviewed By: simpkins Differential Revision: D14691000 fbshipit-source-id: 60f1ffbfed7b32a019aef6aa70ae0903f2782451
-
Wez Furlong authored
Summary: Fetchers are used to fetch a source directory from a source defined in a manifest file. More details can be found in comments on the various methods. The Manifest class offers a create_fetcher method for constructing an appropriate fetcher. This is just a stub in this commit, but will expand over the course of the next few diffs as concrete fetcher instances are added. Reviewed By: simpkins Differential Revision: D14691001 fbshipit-source-id: 8c9038eacae3345e9403d5d1304bf979a9ee1555
-
Wez Furlong authored
Summary: The build options class contains some environmental and build related information that will be passed down to fetcher and builder objects that will be introduced in later diffs. Reviewed By: simpkins Differential Revision: D14691007 fbshipit-source-id: e8fe7322f590667ac28a5a3925a072056df0b3e3
-
Wez Furlong authored
Summary: This will feed into the manifest context for system dependent manifest sections. This is essentially the same code borrowed from the watchman and eden getdeps.py. Reviewed By: simpkins Differential Revision: D14690997 fbshipit-source-id: 3d3ae146237a2cd49609aaa2bd0e785ebe21f02c
-
Wez Furlong authored
Summary: this module adds some functions that help with copying directory trees. The copytree function is aware of eden and will issue a prefetch prior to walking the directory. Reviewed By: simpkins Differential Revision: D14691006 fbshipit-source-id: 079bf850756f61aca17978453d07bc73b2f91788
-