From 9da21a82a80293ddb869d404a8a899fdae14fa04 Mon Sep 17 00:00:00 2001 From: Jai-JAP Date: Sat, 23 Dec 2023 17:59:25 +0530 Subject: [PATCH] Fix caching on build - Fix cache on x64 - Run tar as root --- .github/workflows/build.yml | 49 +++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c10c9e2..a24156c3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -160,42 +160,49 @@ jobs: with: node-version: 18 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install libarchive-tools zsh crossbuild-essential-${{matrix.arch}} + + - name: Setup tar to run as root + run: sudo chmod u+s "$(command -v tar)" + if: matrix.build-arch != 'x64' + - name: Download cached sysroot uses: actions/cache@v3 - id: cache-sysroot + id: dl-cached-sysroot if: matrix.build-arch !='x64' with: key: sysroot-${{matrix.build-arch}} path: /${{matrix.build-arch}}-sysroot - - name: Install deps (amd64) + - name: Setup crossbuild sysroot run: | - sudo apt-get update - sudo apt-get install libarchive-tools zsh crossbuild-essential-${{matrix.arch}} + sudo apt-get update -y && sudo apt-get install debootstrap qemu-user-static binfmt-support -y + sudo qemu-debootstrap --include=libfontconfig1-dev,libsecret-1-dev,libnss3,libatk1.0-0,libatk-bridge2.0-0,libgdk-pixbuf2.0-0,libgtk-3-0,libgbm1 --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb --arch ${{matrix.arch}} bionic /${{matrix.build-arch}}-sysroot/ http://ports.ubuntu.com/ubuntu-ports/ + sudo find /${{matrix.build-arch}}-sysroot -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; + if: matrix.build-arch != 'x64' && steps.dl-cached-sysroot.outputs.cache-hit != 'true' - - name: Setup Crossbuild (${{matrix.arch}}) + - name: Setup env to use ${{matrix.build-arch}} sysroot run: | - echo "CFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV - echo "CXXFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV - echo "LDFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV + echo "CFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV + echo "CXXFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV + echo "LDFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV - [[ ${npm_config_arch} == 'arm' ]] && echo "npm_config_arch=armv7l" >> $GITHUB_ENV + [[ ${npm_config_arch} == 'arm' ]] && echo "npm_config_arch=armv7l" >> $GITHUB_ENV - if [[ ${{matrix.arch}} == 'armhf' ]]; then - echo "PKG_CONFIG_PATH=/${{matrix.build-arch}}-sysroot/usr/lib/pkgconfig/:/${{matrix.build-arch}}-sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig/" >> $GITHUB_ENV - elif [[ ${{matrix.arch}} == 'arm64' ]]; then - echo "PKG_CONFIG_PATH=/${{matrix.build-arch}}-sysroot/usr/lib/pkgconfig/:/${{matrix.build-arch}}-sysroot/usr/lib/aarch64-linux-gnu/pkgconfig/" >> $GITHUB_ENV - fi - - sudo apt-get update -y && sudo apt-get install debootstrap qemu-user-static binfmt-support -y - sudo qemu-debootstrap --include=libfontconfig1-dev,libsecret-1-dev,libnss3,libatk1.0-0,libatk-bridge2.0-0,libgdk-pixbuf2.0-0,libgtk-3-0,libgbm1 --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb --arch ${{matrix.arch}} bionic /${{matrix.build-arch}}-sysroot/ http://ports.ubuntu.com/ubuntu-ports/ - sudo find /${{matrix.build-arch}}-sysroot -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; - if: matrix.build-arch != 'x64' && steps.cache-sysroot.outputs.cache-hit != 'true' + if [[ ${{matrix.arch}} == 'armhf' ]]; then + echo "PKG_CONFIG_PATH=/${{matrix.build-arch}}-sysroot/usr/lib/pkgconfig/:/${{matrix.build-arch}}-sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig/" >> $GITHUB_ENV + elif [[ ${{matrix.arch}} == 'arm64' ]]; then + echo "PKG_CONFIG_PATH=/${{matrix.build-arch}}-sysroot/usr/lib/pkgconfig/:/${{matrix.build-arch}}-sysroot/usr/lib/aarch64-linux-gnu/pkgconfig/" >> $GITHUB_ENV + fi + if: matrix.build-arch != 'x64' - name: Install npm_modules (amd64) run: | - npm i -g yarn node-gyp - yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target-arch=${{matrix.build-arch}} + npm i -g yarn node-gyp + yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target-arch=${{matrix.build-arch}} - name: Webpack (${{matrix.arch}}) run: yarn run build --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}