From 2cd2ecdfd3135469ef5e2d3ac377bd3fd91c7e52 Mon Sep 17 00:00:00 2001 From: Pranav Bhandari Date: Fri, 10 Jan 2025 13:26:37 -0800 Subject: [PATCH] Update getdeps_linux.yml --- .github/workflows/getdeps_linux.yml | 719 +++++++++++++++++++++++----- 1 file changed, 598 insertions(+), 121 deletions(-) diff --git a/.github/workflows/getdeps_linux.yml b/.github/workflows/getdeps_linux.yml index 0f08a07fc..0da9aa6aa 100644 --- a/.github/workflows/getdeps_linux.yml +++ b/.github/workflows/getdeps_linux.yml @@ -11,249 +11,726 @@ on: - main permissions: - contents: read + contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: 16-core-ubuntu + runs-on: 16-core-ubuntu-22.04 steps: - uses: actions/checkout@v4 - - name: Update system package info - run: sudo apt-get update - - name: Install system deps - run: sudo python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive cachelib && sudo python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive patchelf - id: paths name: Query paths - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages query-paths --recursive --src-dir=. cachelib >> "$GITHUB_OUTPUT" + run: python3 build/fbcode_builder/getdeps.py query-paths --recursive --src-dir=. cachelib >> "$GITHUB_OUTPUT" - name: Fetch libaio if: ${{ steps.paths.outputs.libaio_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libaio + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libaio - name: Fetch ninja if: ${{ steps.paths.outputs.ninja_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests ninja - name: Fetch cmake if: ${{ steps.paths.outputs.cmake_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests cmake - name: Fetch fmt if: ${{ steps.paths.outputs.fmt_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests fmt - name: Fetch googletest if: ${{ steps.paths.outputs.googletest_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests googletest - name: Fetch xxhash if: ${{ steps.paths.outputs.xxhash_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xxhash + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests xxhash - name: Fetch zstd if: ${{ steps.paths.outputs.zstd_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests zstd - name: Fetch zlib if: ${{ steps.paths.outputs.zlib_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zlib + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests zlib - name: Fetch boost if: ${{ steps.paths.outputs.boost_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests boost - name: Fetch double-conversion if: ${{ steps.paths.outputs.double-conversion_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests double-conversion - name: Fetch fast_float if: ${{ steps.paths.outputs.fast_float_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fast_float + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests fast_float - name: Fetch gflags if: ${{ steps.paths.outputs.gflags_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests gflags - name: Fetch glog if: ${{ steps.paths.outputs.glog_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests glog - name: Fetch libdwarf if: ${{ steps.paths.outputs.libdwarf_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libdwarf + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libdwarf - name: Fetch libevent if: ${{ steps.paths.outputs.libevent_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libevent - name: Fetch lz4 if: ${{ steps.paths.outputs.lz4_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4 + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests lz4 - name: Fetch snappy if: ${{ steps.paths.outputs.snappy_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests snappy - name: Fetch sparsemap if: ${{ steps.paths.outputs.sparsemap_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests sparsemap + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests sparsemap - name: Fetch bz2 if: ${{ steps.paths.outputs.bz2_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests bz2 + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests bz2 - name: Fetch openssl if: ${{ steps.paths.outputs.openssl_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests openssl + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests openssl - name: Fetch liboqs if: ${{ steps.paths.outputs.liboqs_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests liboqs + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests liboqs - name: Fetch autoconf if: ${{ steps.paths.outputs.autoconf_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests autoconf - name: Fetch automake if: ${{ steps.paths.outputs.automake_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests automake - name: Fetch libtool if: ${{ steps.paths.outputs.libtool_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libtool - name: Fetch numa if: ${{ steps.paths.outputs.numa_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests numa + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests numa - name: Fetch libiberty if: ${{ steps.paths.outputs.libiberty_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libiberty + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libiberty - name: Fetch libsodium if: ${{ steps.paths.outputs.libsodium_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libsodium - name: Fetch libunwind if: ${{ steps.paths.outputs.libunwind_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libunwind + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libunwind - name: Fetch xz if: ${{ steps.paths.outputs.xz_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests xz - name: Fetch folly if: ${{ steps.paths.outputs.folly_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests folly + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests folly - name: Fetch fizz if: ${{ steps.paths.outputs.fizz_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fizz + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests fizz - name: Fetch wangle if: ${{ steps.paths.outputs.wangle_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests wangle + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests wangle - name: Fetch mvfst if: ${{ steps.paths.outputs.mvfst_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests mvfst + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests mvfst - name: Fetch libffi if: ${{ steps.paths.outputs.libffi_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libffi + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libffi - name: Fetch ncurses if: ${{ steps.paths.outputs.ncurses_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ncurses + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests ncurses - name: Fetch python if: ${{ steps.paths.outputs.python_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests python + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests python - name: Fetch fbthrift if: ${{ steps.paths.outputs.fbthrift_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fbthrift - - name: Build libaio + run: python3 build/fbcode_builder/getdeps.py fetch --no-tests fbthrift + - name: Restore libaio from cache + id: restore_libaio if: ${{ steps.paths.outputs.libaio_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libaio - - name: Build ninja + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libaio_INSTALL }} + key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install + - name: Build libaio + if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libaio + - name: Save libaio to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libaio_INSTALL }} + key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install + - name: Restore ninja from cache + id: restore_ninja if: ${{ steps.paths.outputs.ninja_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests ninja - - name: Build cmake + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.ninja_INSTALL }} + key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install + - name: Build ninja + if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests ninja + - name: Save ninja to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.ninja_INSTALL }} + key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install + - name: Restore cmake from cache + id: restore_cmake if: ${{ steps.paths.outputs.cmake_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests cmake - - name: Build fmt + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.cmake_INSTALL }} + key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install + - name: Build cmake + if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests cmake + - name: Save cmake to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.cmake_INSTALL }} + key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install + - name: Restore fmt from cache + id: restore_fmt if: ${{ steps.paths.outputs.fmt_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fmt - - name: Build googletest + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.fmt_INSTALL }} + key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install + - name: Build fmt + if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests fmt + - name: Save fmt to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.fmt_INSTALL }} + key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install + - name: Restore googletest from cache + id: restore_googletest if: ${{ steps.paths.outputs.googletest_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests googletest - - name: Build xxhash + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.googletest_INSTALL }} + key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install + - name: Build googletest + if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests googletest + - name: Save googletest to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.googletest_INSTALL }} + key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install + - name: Restore xxhash from cache + id: restore_xxhash if: ${{ steps.paths.outputs.xxhash_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests xxhash - - name: Build zstd + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.xxhash_INSTALL }} + key: ${{ steps.paths.outputs.xxhash_CACHE_KEY }}-install + - name: Build xxhash + if: ${{ steps.paths.outputs.xxhash_SOURCE && ! steps.restore_xxhash.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests xxhash + - name: Save xxhash to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.xxhash_SOURCE && ! steps.restore_xxhash.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.xxhash_INSTALL }} + key: ${{ steps.paths.outputs.xxhash_CACHE_KEY }}-install + - name: Restore zstd from cache + id: restore_zstd if: ${{ steps.paths.outputs.zstd_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests zstd - - name: Build zlib + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.zstd_INSTALL }} + key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install + - name: Build zstd + if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests zstd + - name: Save zstd to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.zstd_INSTALL }} + key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install + - name: Restore zlib from cache + id: restore_zlib if: ${{ steps.paths.outputs.zlib_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests zlib - - name: Build boost + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.zlib_INSTALL }} + key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install + - name: Build zlib + if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests zlib + - name: Save zlib to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.zlib_INSTALL }} + key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install + - name: Restore boost from cache + id: restore_boost if: ${{ steps.paths.outputs.boost_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests boost - - name: Build double-conversion + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.boost_INSTALL }} + key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install + - name: Build boost + if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests boost + - name: Save boost to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.boost_INSTALL }} + key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install + - name: Restore double-conversion from cache + id: restore_double-conversion if: ${{ steps.paths.outputs.double-conversion_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests double-conversion - - name: Build fast_float + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.double-conversion_INSTALL }} + key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install + - name: Build double-conversion + if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests double-conversion + - name: Save double-conversion to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.double-conversion_INSTALL }} + key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install + - name: Restore fast_float from cache + id: restore_fast_float if: ${{ steps.paths.outputs.fast_float_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fast_float - - name: Build gflags + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.fast_float_INSTALL }} + key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install + - name: Build fast_float + if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests fast_float + - name: Save fast_float to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.fast_float_INSTALL }} + key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install + - name: Restore gflags from cache + id: restore_gflags if: ${{ steps.paths.outputs.gflags_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests gflags - - name: Build glog + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.gflags_INSTALL }} + key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install + - name: Build gflags + if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests gflags + - name: Save gflags to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.gflags_INSTALL }} + key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install + - name: Restore glog from cache + id: restore_glog if: ${{ steps.paths.outputs.glog_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests glog - - name: Build libdwarf + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.glog_INSTALL }} + key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install + - name: Build glog + if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests glog + - name: Save glog to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.glog_INSTALL }} + key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install + - name: Restore libdwarf from cache + id: restore_libdwarf if: ${{ steps.paths.outputs.libdwarf_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libdwarf - - name: Build libevent + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libdwarf_INSTALL }} + key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install + - name: Build libdwarf + if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libdwarf + - name: Save libdwarf to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libdwarf_INSTALL }} + key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install + - name: Restore libevent from cache + id: restore_libevent if: ${{ steps.paths.outputs.libevent_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libevent - - name: Build lz4 + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libevent_INSTALL }} + key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install + - name: Build libevent + if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libevent + - name: Save libevent to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libevent_INSTALL }} + key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install + - name: Restore lz4 from cache + id: restore_lz4 if: ${{ steps.paths.outputs.lz4_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests lz4 - - name: Build snappy + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.lz4_INSTALL }} + key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install + - name: Build lz4 + if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests lz4 + - name: Save lz4 to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.lz4_INSTALL }} + key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install + - name: Restore snappy from cache + id: restore_snappy if: ${{ steps.paths.outputs.snappy_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests snappy - - name: Build sparsemap + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.snappy_INSTALL }} + key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install + - name: Build snappy + if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests snappy + - name: Save snappy to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.snappy_INSTALL }} + key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install + - name: Restore sparsemap from cache + id: restore_sparsemap if: ${{ steps.paths.outputs.sparsemap_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests sparsemap - - name: Build bz2 + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.sparsemap_INSTALL }} + key: ${{ steps.paths.outputs.sparsemap_CACHE_KEY }}-install + - name: Build sparsemap + if: ${{ steps.paths.outputs.sparsemap_SOURCE && ! steps.restore_sparsemap.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests sparsemap + - name: Save sparsemap to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.sparsemap_SOURCE && ! steps.restore_sparsemap.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.sparsemap_INSTALL }} + key: ${{ steps.paths.outputs.sparsemap_CACHE_KEY }}-install + - name: Restore bz2 from cache + id: restore_bz2 if: ${{ steps.paths.outputs.bz2_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests bz2 - - name: Build openssl + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.bz2_INSTALL }} + key: ${{ steps.paths.outputs.bz2_CACHE_KEY }}-install + - name: Build bz2 + if: ${{ steps.paths.outputs.bz2_SOURCE && ! steps.restore_bz2.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests bz2 + - name: Save bz2 to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.bz2_SOURCE && ! steps.restore_bz2.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.bz2_INSTALL }} + key: ${{ steps.paths.outputs.bz2_CACHE_KEY }}-install + - name: Restore openssl from cache + id: restore_openssl if: ${{ steps.paths.outputs.openssl_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests openssl - - name: Build liboqs + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.openssl_INSTALL }} + key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install + - name: Build openssl + if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests openssl + - name: Save openssl to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.openssl_INSTALL }} + key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install + - name: Restore liboqs from cache + id: restore_liboqs if: ${{ steps.paths.outputs.liboqs_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests liboqs - - name: Build autoconf + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.liboqs_INSTALL }} + key: ${{ steps.paths.outputs.liboqs_CACHE_KEY }}-install + - name: Build liboqs + if: ${{ steps.paths.outputs.liboqs_SOURCE && ! steps.restore_liboqs.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests liboqs + - name: Save liboqs to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.liboqs_SOURCE && ! steps.restore_liboqs.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.liboqs_INSTALL }} + key: ${{ steps.paths.outputs.liboqs_CACHE_KEY }}-install + - name: Restore autoconf from cache + id: restore_autoconf if: ${{ steps.paths.outputs.autoconf_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests autoconf - - name: Build automake + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.autoconf_INSTALL }} + key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install + - name: Build autoconf + if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests autoconf + - name: Save autoconf to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.autoconf_INSTALL }} + key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install + - name: Restore automake from cache + id: restore_automake if: ${{ steps.paths.outputs.automake_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests automake - - name: Build libtool + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.automake_INSTALL }} + key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install + - name: Build automake + if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests automake + - name: Save automake to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.automake_INSTALL }} + key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install + - name: Restore libtool from cache + id: restore_libtool if: ${{ steps.paths.outputs.libtool_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libtool - - name: Build numa + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libtool_INSTALL }} + key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install + - name: Build libtool + if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libtool + - name: Save libtool to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libtool_INSTALL }} + key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install + - name: Restore numa from cache + id: restore_numa if: ${{ steps.paths.outputs.numa_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests numa - - name: Build libiberty + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.numa_INSTALL }} + key: ${{ steps.paths.outputs.numa_CACHE_KEY }}-install + - name: Build numa + if: ${{ steps.paths.outputs.numa_SOURCE && ! steps.restore_numa.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests numa + - name: Save numa to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.numa_SOURCE && ! steps.restore_numa.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.numa_INSTALL }} + key: ${{ steps.paths.outputs.numa_CACHE_KEY }}-install + - name: Restore libiberty from cache + id: restore_libiberty if: ${{ steps.paths.outputs.libiberty_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libiberty - - name: Build libsodium + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libiberty_INSTALL }} + key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install + - name: Build libiberty + if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libiberty + - name: Save libiberty to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libiberty_INSTALL }} + key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install + - name: Restore libsodium from cache + id: restore_libsodium if: ${{ steps.paths.outputs.libsodium_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libsodium - - name: Build libunwind + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libsodium_INSTALL }} + key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install + - name: Build libsodium + if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libsodium + - name: Save libsodium to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libsodium_INSTALL }} + key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install + - name: Restore libunwind from cache + id: restore_libunwind if: ${{ steps.paths.outputs.libunwind_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libunwind - - name: Build xz + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libunwind_INSTALL }} + key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install + - name: Build libunwind + if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libunwind + - name: Save libunwind to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libunwind_INSTALL }} + key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install + - name: Restore xz from cache + id: restore_xz if: ${{ steps.paths.outputs.xz_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests xz - - name: Build folly + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.xz_INSTALL }} + key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install + - name: Build xz + if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests xz + - name: Save xz to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.xz_INSTALL }} + key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install + - name: Restore folly from cache + id: restore_folly if: ${{ steps.paths.outputs.folly_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests folly - - name: Build fizz + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.folly_INSTALL }} + key: ${{ steps.paths.outputs.folly_CACHE_KEY }}-install + - name: Build folly + if: ${{ steps.paths.outputs.folly_SOURCE && ! steps.restore_folly.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests folly + - name: Save folly to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.folly_SOURCE && ! steps.restore_folly.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.folly_INSTALL }} + key: ${{ steps.paths.outputs.folly_CACHE_KEY }}-install + - name: Restore fizz from cache + id: restore_fizz if: ${{ steps.paths.outputs.fizz_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fizz - - name: Build wangle + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.fizz_INSTALL }} + key: ${{ steps.paths.outputs.fizz_CACHE_KEY }}-install + - name: Build fizz + if: ${{ steps.paths.outputs.fizz_SOURCE && ! steps.restore_fizz.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests fizz + - name: Save fizz to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.fizz_SOURCE && ! steps.restore_fizz.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.fizz_INSTALL }} + key: ${{ steps.paths.outputs.fizz_CACHE_KEY }}-install + - name: Restore wangle from cache + id: restore_wangle if: ${{ steps.paths.outputs.wangle_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests wangle - - name: Build mvfst + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.wangle_INSTALL }} + key: ${{ steps.paths.outputs.wangle_CACHE_KEY }}-install + - name: Build wangle + if: ${{ steps.paths.outputs.wangle_SOURCE && ! steps.restore_wangle.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests wangle + - name: Save wangle to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.wangle_SOURCE && ! steps.restore_wangle.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.wangle_INSTALL }} + key: ${{ steps.paths.outputs.wangle_CACHE_KEY }}-install + - name: Restore mvfst from cache + id: restore_mvfst if: ${{ steps.paths.outputs.mvfst_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests mvfst - - name: Build libffi + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.mvfst_INSTALL }} + key: ${{ steps.paths.outputs.mvfst_CACHE_KEY }}-install + - name: Build mvfst + if: ${{ steps.paths.outputs.mvfst_SOURCE && ! steps.restore_mvfst.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests mvfst + - name: Save mvfst to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.mvfst_SOURCE && ! steps.restore_mvfst.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.mvfst_INSTALL }} + key: ${{ steps.paths.outputs.mvfst_CACHE_KEY }}-install + - name: Restore libffi from cache + id: restore_libffi if: ${{ steps.paths.outputs.libffi_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libffi - - name: Build ncurses + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.libffi_INSTALL }} + key: ${{ steps.paths.outputs.libffi_CACHE_KEY }}-install + - name: Build libffi + if: ${{ steps.paths.outputs.libffi_SOURCE && ! steps.restore_libffi.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests libffi + - name: Save libffi to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.libffi_SOURCE && ! steps.restore_libffi.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.libffi_INSTALL }} + key: ${{ steps.paths.outputs.libffi_CACHE_KEY }}-install + - name: Restore ncurses from cache + id: restore_ncurses if: ${{ steps.paths.outputs.ncurses_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests ncurses - - name: Build python + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.ncurses_INSTALL }} + key: ${{ steps.paths.outputs.ncurses_CACHE_KEY }}-install + - name: Build ncurses + if: ${{ steps.paths.outputs.ncurses_SOURCE && ! steps.restore_ncurses.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests ncurses + - name: Save ncurses to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.ncurses_SOURCE && ! steps.restore_ncurses.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.ncurses_INSTALL }} + key: ${{ steps.paths.outputs.ncurses_CACHE_KEY }}-install + - name: Restore python from cache + id: restore_python if: ${{ steps.paths.outputs.python_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests python - - name: Build fbthrift + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.python_INSTALL }} + key: ${{ steps.paths.outputs.python_CACHE_KEY }}-install + - name: Build python + if: ${{ steps.paths.outputs.python_SOURCE && ! steps.restore_python.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests python + - name: Save python to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.python_SOURCE && ! steps.restore_python.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.python_INSTALL }} + key: ${{ steps.paths.outputs.python_CACHE_KEY }}-install + - name: Restore fbthrift from cache + id: restore_fbthrift if: ${{ steps.paths.outputs.fbthrift_SOURCE }} - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fbthrift + uses: actions/cache/restore@v4 + with: + path: ${{ steps.paths.outputs.fbthrift_INSTALL }} + key: ${{ steps.paths.outputs.fbthrift_CACHE_KEY }}-install + - name: Build fbthrift + if: ${{ steps.paths.outputs.fbthrift_SOURCE && ! steps.restore_fbthrift.outputs.cache-hit }} + run: python3 build/fbcode_builder/getdeps.py build --no-tests fbthrift + - name: Save fbthrift to cache + uses: actions/cache/save@v4 + if: ${{ steps.paths.outputs.fbthrift_SOURCE && ! steps.restore_fbthrift.outputs.cache-hit }} + with: + path: ${{ steps.paths.outputs.fbthrift_INSTALL }} + key: ${{ steps.paths.outputs.fbthrift_CACHE_KEY }}-install - name: Build cachelib - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. cachelib --project-install-prefix cachelib:/usr/local + run: python3 build/fbcode_builder/getdeps.py build --src-dir=. cachelib --project-install-prefix cachelib:/usr/local - name: Copy artifacts - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --strip --src-dir=. cachelib _artifacts/linux --project-install-prefix cachelib:/usr/local --final-install-prefix /usr/local + run: python3 build/fbcode_builder/getdeps.py fixup-dyn-deps --strip --src-dir=. cachelib _artifacts/linux --project-install-prefix cachelib:/usr/local --final-install-prefix /usr/local - uses: actions/upload-artifact@v4 with: name: cachelib path: _artifacts - name: Test cachelib - run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --src-dir=. cachelib --project-install-prefix cachelib:/usr/local + run: python3 build/fbcode_builder/getdeps.py test --src-dir=. cachelib --project-install-prefix cachelib:/usr/local