Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions .github/workflows/extra-linux-classic.yml
Original file line number Diff line number Diff line change
@@ -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 }}
2 changes: 1 addition & 1 deletion .github/workflows/extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux-arm64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions scripts/ci/actions_prepare_linux_arm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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



Expand Down
12 changes: 8 additions & 4 deletions scripts/ci/actions_prepare_linux_x86.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down