From 797b4a96d8488d0ccea6bb8e4033b72debe2ce1c Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:11:18 +0000 Subject: [PATCH 01/11] [ci] add extra monthly builds for older linux/glibc versions --- .github/workflows/extra-linux-classic.yml | 111 ++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 .github/workflows/extra-linux-classic.yml diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml new file mode 100644 index 0000000000..5ec4c3bf4a --- /dev/null +++ b/.github/workflows/extra-linux-classic.yml @@ -0,0 +1,111 @@ +name: Extra Monthly Builds (Linux Classic) +# For older glibc version +# See: https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/742 + +on: + 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: + - ubuntu-20.04 + 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 }} + name: ${{ matrix.flavor }}${{ matrix.heartbeat == 'itimer' && ' (itimer)' || '' }} for ${{ matrix.arch }}/${{ matrix.os }} ${{ matrix.mode == 'debug' && ' (DEBUG)' || matrix.mode == 'assert' && ' (ASSERT)' || '' }} + env: + ARCH: ${{ matrix.arch }} + FLAVOR: ${{ matrix.flavor }} + MODE: ${{ matrix.mode }} + 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: Restore build cache + uses: actions/cache@v3 + with: + path: .thirdparty-cache + key: thirdparty-cache-${{ matrix.os }}-${{ 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 }} From 97af2597cd2bf2ad8e6a037d0d04bbd455ee174b Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:16:33 +0000 Subject: [PATCH 02/11] test new ci job --- .github/workflows/extra-linux-classic.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index 5ec4c3bf4a..e6f1ec6f60 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -3,6 +3,9 @@ name: Extra Monthly Builds (Linux Classic) # 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: From 8daf00e3e0c48fd8e8d70154dd5426d235855f27 Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:19:06 +0000 Subject: [PATCH 03/11] [ci] fix docker image name slip --- .github/workflows/extra-linux-classic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index e6f1ec6f60..509ce124d0 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -26,7 +26,7 @@ jobs: fail-fast: false matrix: os: - - ubuntu-20.04 + - ubuntu:20.04 arch: - linux64x64 - linux32x86 From c21d89d3e4ca9ac69aa2cb66a725f679817e2a49 Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:22:57 +0000 Subject: [PATCH 04/11] [ci] install sudo in docker --- .github/workflows/extra-linux-classic.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index 509ce124d0..8e81fdf6c1 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -80,6 +80,9 @@ jobs: path: .thirdparty-cache key: thirdparty-cache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.flavor }} + - name: Install sudo + run: apt-get update && apt-get install -y sudo + - name: Prepare environment run: ./scripts/ci/actions_prepare_linux_x86.sh From 4ce270747d4d79e9db5b6982776f0a1862d808ea Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:30:31 +0000 Subject: [PATCH 05/11] [ci] assure availability of add-apt-repository for linux32x68 --- scripts/ci/actions_prepare_linux_x86.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/ci/actions_prepare_linux_x86.sh b/scripts/ci/actions_prepare_linux_x86.sh index 8add081bb8..c600d0bccf 100755 --- a/scripts/ci/actions_prepare_linux_x86.sh +++ b/scripts/ci/actions_prepare_linux_x86.sh @@ -29,6 +29,9 @@ DEV_PKGS=( # Per default, let apt decide ARCHCODE="" if [[ "${ARCH}" = "linux32x86" ]]; then + sudo apt-get update -y + sudo apt-get install -y software-properties-common # for add-apt-repository + sudo dpkg --add-architecture i386 sudo add-apt-repository ppa:ondrej/php ARCHCODE=":i386" From 8e83c744bda7aef7b1668e3457b2226d3536d1e3 Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:35:46 +0000 Subject: [PATCH 06/11] [ci] fix unattended apt installs in docker --- .github/workflows/extra-linux-classic.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index 8e81fdf6c1..c9ed50af83 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -63,6 +63,7 @@ jobs: ARCH: ${{ matrix.arch }} FLAVOR: ${{ matrix.flavor }} MODE: ${{ matrix.mode }} + DEBIAN_FRONTEND: noninteractive # for container steps: - name: Checkout files if: github.event_name != 'workflow_dispatch' @@ -81,7 +82,7 @@ jobs: key: thirdparty-cache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.flavor }} - name: Install sudo - run: apt-get update && apt-get install -y sudo + run: apt-get update -y && apt-get install -y sudo - name: Prepare environment run: ./scripts/ci/actions_prepare_linux_x86.sh From bbe78e867823f530a27898f5ebee3bfa2fa00578 Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:42:03 +0000 Subject: [PATCH 07/11] [ci] extract sudo from prepare scripts because docker does not need it ... and specifying envvars like DEBIAN_FRONTEND from the outside is not possible if the script uses sudo without -E. --- .github/workflows/extra-linux-classic.yml | 3 --- .github/workflows/extra.yml | 2 +- .github/workflows/linux-arm64.yml | 2 +- .github/workflows/linux.yml | 2 +- scripts/ci/actions_prepare_linux_arm.sh | 4 ++-- scripts/ci/actions_prepare_linux_x86.sh | 12 ++++++------ 6 files changed, 11 insertions(+), 14 deletions(-) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index c9ed50af83..c56dfdf3f0 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -81,9 +81,6 @@ jobs: path: .thirdparty-cache key: thirdparty-cache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.flavor }} - - name: Install sudo - run: apt-get update -y && apt-get install -y sudo - - name: Prepare environment run: ./scripts/ci/actions_prepare_linux_x86.sh 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 c600d0bccf..879c155b87 100755 --- a/scripts/ci/actions_prepare_linux_x86.sh +++ b/scripts/ci/actions_prepare_linux_x86.sh @@ -29,16 +29,16 @@ DEV_PKGS=( # Per default, let apt decide ARCHCODE="" if [[ "${ARCH}" = "linux32x86" ]]; then - sudo apt-get update -y - sudo apt-get install -y software-properties-common # for add-apt-repository + apt-get update -y + apt-get install -y software-properties-common # for add-apt-repository - sudo dpkg --add-architecture i386 - sudo add-apt-repository ppa:ondrej/php + 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 \ From c4d0c5004b7b39dfc600932cccd096aa46018b58 Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 19:58:10 +0000 Subject: [PATCH 08/11] [ci] switch to ubuntu build-essential image with git/m4/etc preinstalled --- .github/workflows/extra-linux-classic.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index c56dfdf3f0..4ce11c0db8 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -26,7 +26,8 @@ jobs: fail-fast: false matrix: os: - - ubuntu:20.04 + - name: ubuntu-20.04 + docker: buildpack-deps:22.04-scm arch: - linux64x64 - linux32x86 @@ -57,8 +58,8 @@ jobs: runs-on: ubuntu-22.04 container: - image: ${{ matrix.os }} - name: ${{ matrix.flavor }}${{ matrix.heartbeat == 'itimer' && ' (itimer)' || '' }} for ${{ matrix.arch }}/${{ matrix.os }} ${{ matrix.mode == 'debug' && ' (DEBUG)' || matrix.mode == 'assert' && ' (ASSERT)' || '' }} + 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 }} @@ -79,7 +80,7 @@ jobs: uses: actions/cache@v3 with: path: .thirdparty-cache - key: thirdparty-cache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.flavor }} + key: thirdparty-cache-${{ matrix.os.name }}-${{ matrix.arch }}-${{ matrix.flavor }} - name: Prepare environment run: ./scripts/ci/actions_prepare_linux_x86.sh From 130a43c08d972b66db5496c5d39192d8b13bef0a Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 20:04:30 +0000 Subject: [PATCH 09/11] [ci] add missing dev package libltdl-dev --- scripts/ci/actions_prepare_linux_x86.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ci/actions_prepare_linux_x86.sh b/scripts/ci/actions_prepare_linux_x86.sh index 879c155b87..dea49fa54a 100755 --- a/scripts/ci/actions_prepare_linux_x86.sh +++ b/scripts/ci/actions_prepare_linux_x86.sh @@ -24,6 +24,7 @@ DEV_PKGS=( uuid-dev libglu1-mesa-dev libpcre2-8-0 + libltdl-dev ) # Per default, let apt decide From e5f83fde95995543a32a952b14e12cefb85fa79d Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 20:04:40 +0000 Subject: [PATCH 10/11] [ci] configure git safe directory for container --- .github/workflows/extra-linux-classic.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index 4ce11c0db8..352881e63a 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -76,6 +76,9 @@ jobs: 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: From d186322e81019e47e594075259e88a7f6905b7dd Mon Sep 17 00:00:00 2001 From: Christoph Thiede <38782922+LinqLover@users.noreply.github.com> Date: Tue, 18 Nov 2025 20:10:26 +0000 Subject: [PATCH 11/11] [ci] fix typo in container name --- .github/workflows/extra-linux-classic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extra-linux-classic.yml b/.github/workflows/extra-linux-classic.yml index 352881e63a..beb9a83390 100644 --- a/.github/workflows/extra-linux-classic.yml +++ b/.github/workflows/extra-linux-classic.yml @@ -27,7 +27,7 @@ jobs: matrix: os: - name: ubuntu-20.04 - docker: buildpack-deps:22.04-scm + docker: buildpack-deps:20.04-scm arch: - linux64x64 - linux32x86