• Lukas Piatkowski's avatar
    eden/scm: provide getdeps.py way of building eden/scm on GitHub · 63977f90
    Lukas Piatkowski authored
    Summary:
    In order to do what the title says, this diff does:
    1. Add the `eden/oss/.../third-party/rust/.../Cargo.toml` files. As mentioned in the previous diff, those are required by GitHub so that the third party dependencies that are local in fbsource are properly defined with a "git" dependency in order for Cargo to "link" crates properly.
    2. Changes to `eden/scm/Makefile` to add build/install commands for getdeps to invoke. Those command knowing that they are called from withing getdeps context they link the dependencies brought by getdeps into their proper places that match their folder layout in fbsource. Those Makefile commands also pass a GETDEPS_BUILD env to the setup.py invocations so that it knows it is being called withing a getdeps build.
    3. Changes to `eden/scm/setup.py` that add "thriftasset" that makes use of the getdeps.py provided "thrift" binary to build .py files out of thrift files.
    4. Changes to `distutils_rust` to use the vendored crates dir provided by getdeps.
    5. Changes to `getdeps/builder.py` and `getdeps/manifest.py` that enable more fine-grained configuratior of how Makefile builds are invoked.
    6. Changes to `getdeps/buildopts.py` and `getdeps/manifest.py` to disable overriding PATH and pkgconfig env, so that "eden/scm" builds in getdeps using system libraries rather than getdeps-provided ones (NOTE: I've tried to use getdeps provided libraries, but the trickiest bit was that Rust links with Python, which is currently not providable by getdeps, so if you try to build everything the system provided Python libraries will collide with getdeps provided ones)
    7. Added `opensource/fbcode_builder/manifests/eden_scm` for the getdeps build.
    
    Reviewed By: quark-zju
    
    Differential Revision: D22336485
    
    fbshipit-source-id: 244d10c9e06ee83de61e97e62a1f2a2184d2312f
    63977f90
builder.py 43.9 KB