diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml new file mode 100644 index 0000000000..beb9a83390 --- /dev/null +++ b/.github/workflows/extra-linux-classic.yml @@ -0,0 +1,119 @@ +name: Extra Monthly Builds (Linux Classic) +# For older glibc version +# See: https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/742 + +on: + push: + paths: + - '.github/workflows/extra-linux-classic.yml' + schedule: + - cron: '0 0 1 * *' # Build on the 1st of every month at midnight + workflow_dispatch: + inputs: + should-deploy: + description: 'Deploy on success' + required: true + default: "true" # No boolean support at the moment + +# !! NOTICE !! +# This workflow spec is basically a copy of linux.yml. It includes +# aspects of extra.yml for the manual workflow dispatch. Please update +# this file according to its original files. + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: + - name: ubuntu-20.04 + docker: buildpack-deps:20.04-scm + arch: + - linux64x64 + - linux32x86 + flavor: + - squeak.cog.spur + heartbeat: + - threaded + - itimer + mode: + - fast + #- debug + #- assert + #include: + # # sista build not fully prepared for linux64x64, so only choose selected configurations for linux32x86 + # - arch: linux32x86 + # flavor: squeak.sista.spur + # heartbeat: threaded + # mode: fast + # # squeak.stack.spur builds are not prepared for itimer + # - arch: linux64x64 + # flavor: squeak.stack.spur + # heartbeat: threaded + # mode: fast + # - arch: linux32x86 + # flavor: squeak.stack.spur + # heartbeat: threaded + # mode: fast + + runs-on: ubuntu-22.04 + container: + image: ${{ matrix.os.docker }} + name: ${{ matrix.flavor }}${{ matrix.heartbeat == 'itimer' && ' (itimer)' || '' }} for ${{ matrix.arch }}/${{ matrix.os.name }} ${{ matrix.mode == 'debug' && ' (DEBUG)' || matrix.mode == 'assert' && ' (ASSERT)' || '' }} + env: + ARCH: ${{ matrix.arch }} + FLAVOR: ${{ matrix.flavor }} + MODE: ${{ matrix.mode }} + DEBIAN_FRONTEND: noninteractive # for container + steps: + - name: Checkout files + if: github.event_name != 'workflow_dispatch' + uses: actions/checkout@v3 + + - name: Checkout files for new release candidate + if: github.event_name == 'workflow_dispatch' + uses: actions/checkout@v3 + with: + ref: refs/tags/${{ github.event.inputs.tag }} + + - name: Configure git safe directory + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + + - name: Restore build cache + uses: actions/cache@v3 + with: + path: .thirdparty-cache + key: thirdparty-cache-${{ matrix.os.name }}-${{ matrix.arch }}-${{ matrix.flavor }} + + - name: Prepare environment + run: ./scripts/ci/actions_prepare_linux_x86.sh + + - name: Build VM + run: ./scripts/ci/actions_build.sh + env: + HEARTBEAT: ${{ matrix.heartbeat }} + + - name: Sign VM (not implemented) + if: false + run: ./deploy/sign-vm.sh + + - name: Pack VM + run: ./deploy/pack-vm.sh + + - name: Store artifact w/ revision + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ASSET_NAME }}_${{ env.ASSET_REVISION }} + path: ${{ env.PRODUCTS_PATH }}/${{ env.ASSET_NAME }}.${{ env.ASSET_EXTENSION }} + + - name: Update artifact in latest-build + uses: ncipollo/release-action@v1 + if: github.event_name == 'schedule' || (github.event.inputs.should-deploy == 'true' && endsWith( github.ref , 'Cog' )) + with: + prerelease: true + allowUpdates: true + replacesArtifacts: true + artifacts: ${{ env.PRODUCTS_PATH }}/${{ env.ASSET_NAME }}.${{ env.ASSET_EXTENSION }} + token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ matrix.mode == 'debug' && 'latest-debug-build' || matrix.mode == 'assert' && 'latest-assert-build' || 'latest-build' }} + body: ${{ github.event.head_commit.message }} diff --git a/.github/workflows/extra.yml b/.github/workflows/extra.yml index 318e55866c..12f30194ff 100644 --- a/.github/workflows/extra.yml +++ b/.github/workflows/extra.yml @@ -50,7 +50,7 @@ jobs: - name: Prepare Linux build environment if: startsWith(matrix.arch.name, 'linux') - run: ./scripts/ci/actions_prepare_linux_x86.sh + run: sudo ./scripts/ci/actions_prepare_linux_x86.sh - name: Prepare MSYS2/Windows build environment if: startsWith(matrix.arch.name, 'win') diff --git a/.github/workflows/linux-arm64.yml b/.github/workflows/linux-arm64.yml index 1eab21fbbb..ce63d2b2f2 100644 --- a/.github/workflows/linux-arm64.yml +++ b/.github/workflows/linux-arm64.yml @@ -83,7 +83,7 @@ jobs: key: thirdparty-cache-${{ matrix.arch }}-${{ matrix.flavor }} - name: Prepare environment - run: ./scripts/ci/actions_prepare_linux_arm.sh + run: sudo ./scripts/ci/actions_prepare_linux_arm.sh - name: Build VM run: ./scripts/ci/actions_build.sh diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 0868d26482..b5abbc9092 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -101,7 +101,7 @@ jobs: key: thirdparty-cache-${{ matrix.arch }}-${{ matrix.flavor }} - name: Prepare environment - run: ./scripts/ci/actions_prepare_linux_x86.sh + run: sudo ./scripts/ci/actions_prepare_linux_x86.sh - name: Build VM run: ./scripts/ci/actions_build.sh diff --git a/scripts/ci/actions_prepare_linux_arm.sh b/scripts/ci/actions_prepare_linux_arm.sh index d19ef10052..a20481a8a8 100755 --- a/scripts/ci/actions_prepare_linux_arm.sh +++ b/scripts/ci/actions_prepare_linux_arm.sh @@ -10,8 +10,8 @@ set -e # Note that "libtool automake autoconf libltdl-dev" are required to # let the configure script pass. -sudo apt-get update -y -sudo apt-get install -yq --no-install-suggests --no-install-recommends build-essential git devscripts uuid-dev libcairo2-dev libpango1.0-dev libgl1-mesa-dev libgl1 libglx-mesa0 libssl-dev libevdev-dev m4 libpulse-dev libasound2-dev libfreetype6-dev libx11-dev libxrender-dev libxrandr-dev libtool automake autoconf libltdl-dev +apt-get update -y +apt-get install -yq --no-install-suggests --no-install-recommends build-essential git devscripts uuid-dev libcairo2-dev libpango1.0-dev libgl1-mesa-dev libgl1 libglx-mesa0 libssl-dev libevdev-dev m4 libpulse-dev libasound2-dev libfreetype6-dev libx11-dev libxrender-dev libxrandr-dev libtool automake autoconf libltdl-dev diff --git a/scripts/ci/actions_prepare_linux_x86.sh b/scripts/ci/actions_prepare_linux_x86.sh index 8add081bb8..dea49fa54a 100755 --- a/scripts/ci/actions_prepare_linux_x86.sh +++ b/scripts/ci/actions_prepare_linux_x86.sh @@ -24,18 +24,22 @@ DEV_PKGS=( uuid-dev libglu1-mesa-dev libpcre2-8-0 + libltdl-dev ) # Per default, let apt decide ARCHCODE="" if [[ "${ARCH}" = "linux32x86" ]]; then - sudo dpkg --add-architecture i386 - sudo add-apt-repository ppa:ondrej/php + apt-get update -y + apt-get install -y software-properties-common # for add-apt-repository + + dpkg --add-architecture i386 + add-apt-repository ppa:ondrej/php ARCHCODE=":i386" fi -sudo apt-get update -y -sudo apt-get install -yq --no-install-suggests --no-install-recommends --allow-unauthenticated \ +apt-get update -y +apt-get install -yq --no-install-suggests --no-install-recommends --allow-unauthenticated \ debhelper \ devscripts \ gcc-multilib \