diff --git a/.github/workflows/bwrap.yml b/.github/workflows/bwrap.yml index aac301b..dcbe1bd 100644 --- a/.github/workflows/bwrap.yml +++ b/.github/workflows/bwrap.yml @@ -57,11 +57,11 @@ jobs: - name: Archive sysc_image uses: actions/upload-artifact@v3 with: - name: sysc_image + name: internal_sysc_image path: sysc_image.tar - sysc: - name: Run sysc under bubblewrap + sysc1: + name: Run sysc (part 1) under bubblewrap needs: sysa runs-on: ubuntu-latest steps: @@ -77,11 +77,46 @@ jobs: - name: Get sysc_image uses: actions/download-artifact@v3 with: - name: sysc_image + name: internal_sysc_image - name: Extract sysc_image run: tar -xf sysc_image.tar - name: Run bootstrap run: ./rootfs.py --bwrap --external-sources --build-kernels --preserve --cores 2 --internal-ci pass2 + - name: Archive created packages + if: always() # archive failed builds progress + uses: actions/upload-artifact@v3 + with: + name: internal_packages_sysc1 + path: tmp/sysa/sysc_image/usr/src/repo/** + + sysc2: + name: Run sysc (part 2) under bubblewrap + needs: sysc1 + runs-on: ubuntu-latest + steps: + - name: Install bubblewrap + run: sudo apt install bubblewrap + - name: Checkout repo + uses: actions/checkout@v3 + 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: Get sysc_image + uses: actions/download-artifact@v3 + with: + name: internal_sysc_image + - name: Extract sysc_image + run: tar -xf sysc_image.tar + # By doing this, all packages that have already been compiled will come from the preseed. + - name: Get packages repo progress + uses: actions/download-artifact@v3 + with: + name: internal_packages_sysc1 + path: tmp/sysa/sysc_image/usr/src/repo-preseeded/ + - name: Run bootstrap + run: ./rootfs.py --bwrap --external-sources --build-kernels --preserve --cores 2 --internal-ci pass3 - name: Archive created packages if: always() # archive failed builds uses: actions/upload-artifact@v3 diff --git a/rootfs.py b/rootfs.py index 48d713b..4e96dbc 100755 --- a/rootfs.py +++ b/rootfs.py @@ -15,6 +15,7 @@ you can run bootstap inside chroot. import argparse import os +import shutil from sysa import SysA from sysc import SysC @@ -35,6 +36,7 @@ def create_configuration_file(args): config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n") config.write(f"JOBS={args.cores}\n") config.write("DISK=sda1\n") + config.write(f"INTERNAL_CI={args.internal_ci}\n") if (args.bare_metal or args.qemu) and not args.kernel: config.write("KERNEL_BOOTSTRAP=True\n") else: @@ -198,7 +200,9 @@ print(shutil.which('chroot')) '--dev-bind', '/dev/urandom', '/dev/urandom', init) - if not args.internal_ci or args.internal_ci == "pass2": + if not args.internal_ci or args.internal_ci == "pass2" or args.internal_ci == "pass3": + shutil.copy2(os.path.join('sysa', 'bootstrap.cfg'), + os.path.join('tmp', 'sysa', 'sysc_image', 'usr', 'src', 'bootstrap.cfg')) run('bwrap', '--unshare-user', '--uid', '0', '--gid', '0', diff --git a/sysc/init b/sysc/init index 6a6ef41..f0f1b07 100755 --- a/sysc/init +++ b/sysc/init @@ -78,6 +78,7 @@ DESTDIR=${DESTDIR} DISTFILES=${DISTFILES} SRCDIR=${SRCDIR} MAKEJOBS=${MAKEJOBS} +INTERNAL_CI=${INTERNAL_CI} EOF exec ./run.sh diff --git a/sysc/run2.sh b/sysc/run2.sh index c56aba7..394ca34 100755 --- a/sysc/run2.sh +++ b/sysc/run2.sh @@ -120,6 +120,8 @@ build python-3.8.16 build python-3.11.1 +[ "${INTERNAL_CI}" = "pass2" ] && exit 0 + build gcc-10.4.0 build binutils-2.38 pass2.sh