From fdc3a0b1f1fb177cf1f5382cc1474313bdcf7d99 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Wed, 15 Oct 2025 11:06:16 +1100 Subject: [PATCH] Remove the multi-stage GH actions build Now that GH actions supports jobs up to 6 hours long we don't need to do multi-stage builds anymore. --- .github/workflows/bwrap.yml | 106 ++---------------------------------- lib/generator.py | 8 --- rootfs.py | 10 +--- 3 files changed, 7 insertions(+), 117 deletions(-) diff --git a/.github/workflows/bwrap.yml b/.github/workflows/bwrap.yml index c5eb944a..1cafbd59 100644 --- a/.github/workflows/bwrap.yml +++ b/.github/workflows/bwrap.yml @@ -12,12 +12,12 @@ on: - master jobs: - pass1: - name: Run up to Linux build under bubblewrap + build: + name: Run under bubblewrap runs-on: ubuntu-24.04 steps: - name: Install bubblewrap - run: sudo apt install bubblewrap + run: sudo apt-get install bubblewrap - name: Checkout repo uses: actions/checkout@v4 with: @@ -49,105 +49,7 @@ jobs: mirror-state key: cache-${{ hashFiles('steps/*/sources') }} - name: Run bootstrap - run: ./rootfs.py --bwrap --external-sources --build-kernels --cores 2 --internal-ci pass1 --mirror file://${PWD}/mirror - - name: Archive created packages - if: failure() # archive failed builds progress - uses: actions/upload-artifact@v4 - with: - name: packages - path: target/external/repo/** - - name: Tar pass1 image - run: tar -cf pass1_image.tar target - - name: Archive pass1_image - uses: actions/upload-artifact@v4 - with: - name: internal_pass1_image - path: pass1_image.tar - - pass2: - name: Run up to Python bootstrap under bubblewrap - needs: pass1 - runs-on: ubuntu-24.04 - steps: - - name: Install bubblewrap - run: sudo apt install bubblewrap - - name: Checkout repo - uses: actions/checkout@v4 - with: - submodules: recursive - # There is a strange bug(?) in nongnu, when you clone a git repository - # against a commit != HEAD with depth=1, it errors out. - fetch-depth: 0 - - name: Work around Ubuntu 24.04 bubblewrap bug - run: sudo cp .github/workflows/bwrap.apparmor /etc/apparmor.d/bwrap && sudo systemctl reload apparmor - - name: Get pass1_image - uses: actions/download-artifact@v4 - with: - name: internal_pass1_image - - name: Extract pass1_image - run: tar -xf pass1_image.tar - - name: Query cache for sources - id: cache - uses: actions/cache/restore@v4 - with: - path: | - mirror - mirror-state - key: cache-${{ hashFiles('steps/*/sources') }} - fail-on-cache-miss: true - - name: Copy distfiles - run: ./download-distfiles.sh file:///${PWD}/mirror - - name: Run bootstrap - run: ./rootfs.py --bwrap --external-sources --build-kernels --cores 2 --internal-ci pass2 --mirror file://${PWD}/mirror - - name: Archive created packages - if: failure() # archive failed builds progress - uses: actions/upload-artifact@v4 - with: - name: internal_packages_pass2 - path: target/external/repo/** - - name: Tar pass2 image - run: tar -cf pass2_image.tar target - - name: Archive pass2_image - uses: actions/upload-artifact@v4 - with: - name: internal_pass2_image - path: pass2_image.tar - - pass3: - name: Run remaining builds under bubblewrap - needs: pass2 - runs-on: ubuntu-24.04 - steps: - - name: Install bubblewrap - run: sudo apt install bubblewrap - - name: Checkout repo - uses: actions/checkout@v4 - with: - submodules: recursive - # There is a strange bug(?) in nongnu, when you clone a git repository - # against a commit != HEAD with depth=1, it errors out. - fetch-depth: 0 - - name: Work around Ubuntu 24.04 bubblewrap bug - run: sudo cp .github/workflows/bwrap.apparmor /etc/apparmor.d/bwrap && sudo systemctl reload apparmor - - name: Get pass2_image - uses: actions/download-artifact@v4 - with: - name: internal_pass2_image - - name: Extract pass2_image - run: tar -xf pass2_image.tar - - name: Query cache for sources - id: cache - uses: actions/cache/restore@v4 - with: - path: | - mirror - mirror-state - key: cache-${{ hashFiles('steps/*/sources') }} - fail-on-cache-miss: true - - name: Copy distfiles - run: ./download-distfiles.sh file:///${PWD}/mirror - - name: Run bootstrap - run: ./rootfs.py --bwrap --external-sources --build-kernels --cores 2 --internal-ci pass3 --mirror file://${PWD}/mirror + run: ./rootfs.py --bwrap --external-sources --build-kernels --cores 2 --mirror file://${PWD}/mirror - name: Archive created packages if: always() # archive both failed and successful builds uses: actions/upload-artifact@v4 diff --git a/lib/generator.py b/lib/generator.py index 82647f36..71f913bf 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -38,14 +38,6 @@ class Generator(): self.target_dir = None self.external_dir = None - def reuse(self, target): - """ - Reuse a previously prepared bwrap environment for further stages. - """ - self.target_dir = target.path - self.external_dir = os.path.join(self.target_dir, 'external') - self.distfiles() - def prepare(self, target, using_kernel=False, kernel_bootstrap=False, target_size=0): """ Prepare basic media of live-bootstrap. diff --git a/rootfs.py b/rootfs.py index cbab2dbb..43d1b65a 100755 --- a/rootfs.py +++ b/rootfs.py @@ -39,7 +39,6 @@ def create_configuration_file(args): config.write(f"JOBS={args.cores}\n") config.write(f"SWAP_SIZE={args.swap}\n") config.write(f"FINAL_JOBS={args.cores}\n") - config.write(f"INTERNAL_CI={args.internal_ci or False}\n") config.write(f"INTERACTIVE={args.interactive}\n") config.write(f"QEMU={args.qemu}\n") config.write(f"BARE_METAL={args.bare_metal or (args.qemu and args.interactive)}\n") @@ -252,13 +251,10 @@ print(shutil.which('chroot')) elif args.bwrap: init = '/init' - if not args.internal_ci or args.internal_ci == "pass1": - generator.prepare(target, using_kernel=False) + generator.prepare(target, using_kernel=False) - arch = stage0_arch_map.get(args.arch, args.arch) - init = os.path.join(os.sep, 'bootstrap-seeds', 'POSIX', arch, 'kaem-optional-seed') - else: - generator.reuse(target) + arch = stage0_arch_map.get(args.arch, args.arch) + init = os.path.join(os.sep, 'bootstrap-seeds', 'POSIX', arch, 'kaem-optional-seed') run('env', '-i', 'bwrap', '--unshare-user', '--uid', '0',