From ef8203269612cad98e0e18ad4b87607f00305c78 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sat, 3 May 2025 14:53:37 +0200 Subject: [PATCH 01/27] Update action.yml --- action.yml | 247 ++++++++++++++++++++++++++++------------------------- 1 file changed, 131 insertions(+), 116 deletions(-) diff --git a/action.yml b/action.yml index 75e19f5..4bb3bd2 100644 --- a/action.yml +++ b/action.yml @@ -1,139 +1,154 @@ name: 'Setup GAP for package testing' -description: 'Download and compile CI scripts, GAP and its packages' +description: 'Download and compile GAP and its packages' inputs: - GAP_PKGS_TO_CLONE: - description: 'the GAP packages to clone' + gap-version: + description: 'The GAP version or branch to build' required: false - default: '' - GAP_PKGS_TO_BUILD: - description: 'the GAP packages to build' - required: false - default: 'io profiling' - GAPBRANCH: - description: 'the gap branch to clone' + default: 'latest' + repository: + description: 'The GitHub repository from which to clone GAP' required: false - default: 'master' - HPCGAP: - description: 'build HPC-GAP if set to yes' - required: false - default: 'no' - ABI: - description: 'set to 32 to use 32bit build flags for the package' + default: 'gap-system/gap' + configflags: + description: 'Arguments to pass to the GAP configure script (e.g. --enable-debug)' required: false default: '' - CONFIGFLAGS: - description: 'arguments to pass to the GAP configure script (e.g. --enable-debug)' + gap-pkgs-to-build: + description: 'A space-separated list of the GAP packages to build' required: false + default: 'io json profiling' + deprecationMessage: 'This input will possibly be removed in the future, so do not rely on it too much' + token: + description: 'Token to authenticate with the GitHub API' + required: true default: '' - GAP_BOOTSTRAP: - description: 'make bootstrap-pkg-? (i.e. full/minimal)' - required: false - default: 'full' -env: - CHERE_INVOKING: 1 + runs: using: "composite" steps: - - name: "Install dependencies" - run: | - echo "Installing dependencies" - if [ "${{runner.os}}" = "Linux" ]; then - if [ "${{inputs.ABI}}" = "32" ]; then - sudo dpkg --add-architecture i386 - sudo apt-get update - packages=( - libgmp-dev:i386 - libreadline-dev:i386 - zlib1g-dev:i386 - gcc-multilib - g++-multilib - ) + + - name: "Install dependencies" + shell: bash + if: ${{ runner.os != 'Windows' }} + run: | + if [[ "${{ runner.os }}" == "Linux" ]] ; then + sudo apt-get install libgmp-dev libreadline-dev zlib1g-dev + elif [[ "${{ runner.os }}" = "macOS" ]] ; then + brew install zlib autoconf && brew link zlib --force + fi + + - name: "Determine GAP version" + id: version + shell: bash + run: | + VERSION="" + IS_RELEASE=false + + # Select only those releases we wish to allow, with or without pre-releases + + if [[ -z "${{ inputs.gap-version }}" || "${{ inputs.gap-version }}" == "latest" ]] ; then + echo "Version: latest release" + IS_RELEASE=true + VERSION=$(wget --header="Authorization: Bearer ${{ inputs.token }}" -qO- "https://api.github.com/repos/${{ inputs.repository }}/releases/latest" | jq -r '.tag_name') + elif [[ "${{ inputs.gap-version }}" =~ ^(master|main|default)$ ]] ; then + echo "Version: default branch" + VERSION=$(git ls-remote --symref https://github.com/${{ inputs.repository }}.git HEAD | head -n 1 | sed 's|ref: refs/heads/||; s|\tHEAD||') + else + echo "Checking releases" + GIT_RELS_JSON=$(wget --header="Authorization: Bearer ${{ inputs.token }}" -qO- "https://api.github.com/repos/${{ inputs.repository }}/releases") + GIT_RELS=$(echo "$GIT_RELS_JSON" | jq -r '.[].tag_name' | sort -V) + GIT_NPRS=$(echo "$GIT_RELS_JSON" | jq -r '.[] | select((.draft == false) and (.prerelease == false)) | .tag_name' | sort -V) + + # Add "v" in front if missing + REL=${{ inputs.gap-version }} + REL=v${REL#v} + + if echo "$GIT_RELS" | grep -qx "$REL" ; then + echo "Version: exact release match" + IS_RELEASE=true + VERSION=$REL + elif echo "$GIT_NPRS" | grep -q "^$REL\." ; then + echo "Version: expanded to release" + IS_RELEASE=true + VERSION=$(echo "$GIT_NPRS" | grep "^$REL\." | tail -n 1) + else + echo "Checking branches and tags" + if git ls-remote --heads https://github.com/${{ inputs.repository }}.git | sed 's|.*refs/heads/||' | grep -qx "${{ inputs.gap-version }}" ; then + echo "Version: exact branch match" + VERSION=${{ inputs.gap-version }} + elif git ls-remote --tags --refs https://github.com/${{ inputs.repository }}.git | sed 's|.*refs/tags/||' | grep -qx "${{ inputs.gap-version }}" ; then + echo "Version: exact tag match" + VERSION=${{ inputs.gap-version }} else - packages=( - libgmp-dev - libreadline-dev - zlib1g-dev - ) - fi - sudo apt-get install "${packages[@]}" - elif [ "${{runner.os}}" = "macOS" ]; then - if [ "${{inputs.ABI}}" = "32" ]; then - echo "Can't use macOS with 32bit!" + echo "No release, branch or tag with name ${{ inputs.gap-version }} found" exit 1 fi - brew install gmp zlib autoconf && brew link zlib fi - shell: bash + fi - - name: "Clone GAP" - shell: bash - run: git clone --depth=2 -b ${{ inputs.GAPBRANCH }} https://github.com/gap-system/gap.git $HOME/gap + echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" + echo "IS_RELEASE=$IS_RELEASE" >> "$GITHUB_OUTPUT" - - name: "Build GAP" - shell: bash - env: - ABI: ${{ inputs.ABI }} - run: | - cd $HOME/gap - CONFIGFLAGS="${{ inputs.CONFIGFLAGS }}" - # for HPC-GAP, add suitable flags - if [[ ${{ inputs.HPCGAP }} = yes ]]; then - CONFIGFLAGS="$CONFIGFLAGS --enable-hpcgap" - fi + - name: "Set GAPROOT" + shell: bash + run: | + GAPROOT="$HOME/gap" + mkdir -p $GAPROOT + echo "GAPROOT=$GAPROOT" >> "$GITHUB_ENV" + + - name: "Download or clone GAP" + shell: bash + env: + VERSION: ${{ steps.version.outputs.VERSION }} + IS_RELEASE: ${{ steps.version.outputs.IS_RELEASE }} + run: | + if [[ "$IS_RELEASE" == "true" ]] ; then + WGET="wget -q -N --no-check-certificate --tries=5 --waitretry=5 --retry-connrefused" + URL=https://github.com/${{ inputs.repository }}/releases/download/$VERSION/ + FILE=gap-${VERSION#v}.tar.gz + $WGET $URL$FILE + tar xzf $FILE -C $GAPROOT --strip-components=1 + else + git clone --branch $VERSION --depth=1 --single-branch https://github.com/${{ inputs.repository }}.git $GAPROOT + fi - # build GAP in a subdirectory - ./autogen.sh - ./configure $CONFIGFLAGS - make -j4 V=1 + - name: "Build GAP" + shell: bash + run: | + cd $GAPROOT - # make it available - ln -s $HOME/gap/gap /usr/local/bin/gap + if [ -f "autogen.sh" ] ; then + ./autogen.sh + fi + ./configure "${{ inputs.configflags }}" + make -j4 V=1 - - name: "Download packages" - shell: bash - run: | - cd $HOME/gap + # Add to PATH + if [ -f "$GAPROOT/gap" ] ; then + ln -s $GAPROOT/gap /usr/local/bin/gap + else + echo -e '#!/bin/sh\nsh '"$GAPROOT"'/bin/gap.sh "$@"\n' > /usr/local/bin/gap + fi - # download packages; instruct wget to retry several times if the - # connection is refused, to work around intermittent failures. - # for older versions, set WGET, for GAP >= 4.11 set DOWNLOAD - WGET="wget -N --no-check-certificate --tries=5 --waitretry=5 --retry-connrefused" - make bootstrap-pkg-${{ inputs.GAP_BOOTSTRAP }} DOWNLOAD="$WGET" WGET="$WGET" + # Just to be sure it's executable + chmod +x /usr/local/bin/gap - - name: "Clone additional GAP packages" - shell: bash - run: | - # optionally: clone specific package versions, in case we need to test - # with development versions - cd $HOME/gap/pkg - for pkg in ${{ inputs.GAP_PKGS_TO_CLONE }}; do - # delete any existing variants of the package to avoid multiple versions - # from being compiled later on - rm -rf "${pkg##*/}"* - if [[ "$pkg" =~ ^http ]] ; then - # looks like a full URL - git clone "$pkg" - elif [[ "$pkg" =~ ^[^/]+/[^/]+$ ]] ; then - # looks like ORG/REPO - git clone https://github.com/"$pkg" - elif [[ "$pkg" =~ ^[^/]+$ ]] ; then - # looks like just a REPO name - git clone https://github.com/gap-packages/"$pkg" - else - echo "Invalid package name or URL '$pkg' in GAP_PKGS_TO_CLONE" - exit 1 - fi - done + - name: "Download GAP packages" + shell: bash + if: ${{ steps.version.outputs.IS_RELEASE == 'false' }} + run: | + cd $GAPROOT + WGET="wget -q -N --no-check-certificate --tries=5 --waitretry=5 --retry-connrefused" + # For GAP >= 4.11 set DOWNLOAD, for older versions set WGET + make bootstrap-pkg-full DOWNLOAD="$WGET" WGET="$WGET" - - name: "Build additional GAP packages" - shell: bash - env: - ABI: ${{ inputs.ABI }} - run: | - # build some packages - BuildPackagesOptions="--strict" - shopt -s nocaseglob - cd $HOME/gap/pkg - for pkg in ${{inputs.GAP_PKGS_TO_BUILD}}; do - ../bin/BuildPackages.sh ${BuildPackagesOptions} $pkg* - done + - name: "Build GAP packages" + shell: bash + if: ${{ inputs.gap-pkgs-to-build != '' }} + run: | + BuildPackagesOptions="--strict" + shopt -s nocaseglob + cd $GAPROOT/pkg + for pkg in ${{ inputs.gap-pkgs-to-build }}; do + ../bin/BuildPackages.sh ${BuildPackagesOptions} $pkg* + done From b428ed73474c9c69f2520bd94b544f230eb1f844 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sat, 3 May 2025 14:54:03 +0200 Subject: [PATCH 02/27] Update CI.yml --- .github/workflows/CI.yml | 81 +++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9e39582..b757343 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -1,53 +1,58 @@ name: CI -# Trigger the workflow on push or pull request on: push: - branches: - - master - - cygwin* pull_request: - -env: - CHERE_INVOKING: 1 + workflow_call: + workflow_dispatch: jobs: test: - name: ${{ matrix.gap-branch }} ${{ matrix.ABI }} - Packages ${{ matrix.GAP_PKGS_TO_BUILD }} - HPCGAP ${{ matrix.HPCGAP }} - ${{ matrix.os }} + name: ${{ matrix.gap-version }} on ${{ matrix.os }} with ${{ matrix.configflags }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ubuntu-latest] - gap-branch: - - master - ABI: [''] - GAP_PKGS_TO_BUILD: - - '' - - 'default' - HPCGAP: ['no'] - include: - - os: ubuntu-latest - gap-branch: master - GAP_PKGS_TO_BUILD: '' - HPCGAP: yes - - os: ubuntu-latest - gap-branch: master - ABI: 32 - GAP_PKGS_TO_BUILD: 'default' - HPCGAP: no - - os: macos-latest - gap-branch: master - GAP_PKGS_TO_BUILD: '' - HPCGAP: no + os: [ubuntu-latest, macos-latest, windows-latest] + gap-version: + - "4.10" + - v4.11.1 + - 4.12.0 + - v4.13.0-alpha2 + - v4 + - latest + - stable-4.10 + - stable-4.12 + - stable-4.14 + - default + - v4.15dev + configflags: ['--with-gmp=system', '--with-gmp=builtin'] steps: - - uses: actions/checkout@v4 - - if: ${{ matrix.os == 'windows-latest' }} - uses: gap-actions/setup-cygwin@v1 - - uses: ./ + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Setup Cygwin" + if: ${{ matrix.os == 'windows-latest' }} + uses: stertooy/setup-cygwin@official-action-and-batch + + - name: "Setup GAP" + uses: ./ with: - GAPBRANCH: ${{ matrix.gap-branch }} - ABI: ${{ matrix.ABI }} - GAP_PKGS_TO_BUILD: ${{ matrix.GAP_PKGS_TO_BUILD }} - HPCGAP: ${{ matrix.HPCGAP }} + gap-version: ${{ matrix.gap-version }} + token: ${{ secrets.GITHUB_TOKEN }} + configflags: ${{ matrix.configflags }} + + - name: "Check if GAP can run" + shell: bash + run: | + gap -A --quitonbreak < Date: Sat, 3 May 2025 14:54:20 +0200 Subject: [PATCH 03/27] Update README.md --- README.md | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 62f912b..771b87b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# setup-gap V2 +# setup-gap V3 This GitHub action downloads and prepares an instance of GAP. It is intended to be used by the Continuous Integration (CI) action of a GAP @@ -6,7 +6,7 @@ package, that is by an action which runs a package's test suite. ## Supported OSes -This action can be run on macOS and Ubuntu. +This action can be run on macOS, Ubuntu and Windows (when preceded by the `setup-cygwin` action). ## Usage @@ -14,9 +14,8 @@ This action can be run on macOS and Ubuntu. The action `setup-gap` has to be called by the workflow of a GAP package. By default it -- downloads and compiles the master branch of GAP, -- downloads the packages distributed with GAP, and -- compiles the packages `io` and `profiling` +- downloads and compiles the latest release of GAP, and +- compiles the packages `io`, `json` and `profiling` Its behaviour can be customized via the inputs below. @@ -24,26 +23,20 @@ Its behaviour can be customized via the inputs below. All of the following inputs are optional. -- `GAP_PKGS_TO_CLONE`: - - A space-separated list of the GAP packages to clone. +- `gap-version`: + - The gap version or branch to build. You may specify "latest" for the latest release, or "default" for the default branch. + - default: `latest` +- `repository` + - The GitHub repository from which to clone GAP. + - default: `'gap-system/gap'` +- `configflags`: + - Arguments to pass to the GAP configure script. - default: `''` - - example: `'io autodoc'` -- `GAP_PKGS_TO_BUILD`: - - A space-separated list of the GAP packages to build. Must include - `io` and `profiling`. - - default: `'io profiling'` -- `GAPBRANCH`: - - The gap branch to clone. - - default: `master` -- `HPCGAP`: - - Build HPC-GAP if set to `yes`. - - default: `no` -- `ABI`: - - Set to `32` to use 32bit build flags for the package - - default: `''` -- `GAP_BOOTSTRAP` - - Which packages to build GAP with (options: full or minimal) - - default: `'full'` +- `gpk-pkgs-to-build`: + - A space-separated list of the GAP packages to build. + - default: `'io json profiling'` +- `token`: + - Token to authenticate with the GitHub API. You should set this to `${{ secrets.GITHUB_TOKEN }}` in your workflow. ## Contact Please submit bug reports, suggestions for improvements and patches via From 140600b4674cd8816f75474b5bbb495e35abaa57 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Thu, 8 May 2025 23:39:55 +0200 Subject: [PATCH 04/27] Make installing GAP on MacOS more robust, misc cleanup --- .github/workflows/CI.yml | 19 ++++++++++++------- action.yml | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b757343..3b74e0f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -15,18 +15,23 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] gap-version: - - "4.10" + - v4.10 - v4.11.1 - - 4.12.0 + - stable-4.12 - v4.13.0-alpha2 - - v4 + - 4 - latest - - stable-4.10 - - stable-4.12 - - stable-4.14 - default - v4.15dev - configflags: ['--with-gmp=system', '--with-gmp=builtin'] + configflags: ['', '--with-gmp=builtin'] + exclude: + - os: windows-latest + configflags: '--with-gmp=builtin' + - os: macos-latest + gap-version: v4.10 + - os: macos-latest + gap-version: v4.11.1 + configflags: '--with-gmp=builtin' steps: - name: "Checkout" diff --git a/action.yml b/action.yml index 4bb3bd2..d740864 100644 --- a/action.yml +++ b/action.yml @@ -116,13 +116,24 @@ runs: shell: bash run: | cd $GAPROOT - + CONFIGFLAGS="${{ inputs.configflags }}" + if [ -f "autogen.sh" ] ; then + echo "::group:: Running autogen" ./autogen.sh fi - ./configure "${{ inputs.configflags }}" + + if [[ "${{ runner.os }}" = "macOS" ]] ; then + BP=$(brew --prefix) + CONFIGFLAGS="--with-gmp=$BP --with-readline=$BP/opt/readline $CONFIGFLAGS" + fi + echo "::group:: Running configure with flags $CONFIGFLAGS" + ./configure $CONFIGFLAGS + + echo "::group:: Running make" make -j4 V=1 + echo "::group:: Adding GAP to PATH" # Add to PATH if [ -f "$GAPROOT/gap" ] ; then ln -s $GAPROOT/gap /usr/local/bin/gap From cba8d34513f4fe4ea00b545b8923b96c1da9ac7f Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:14:37 +0200 Subject: [PATCH 05/27] Update setup-cygwin action to v2 Co-authored-by: Max Horn --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 68470f4..32b9850 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -39,7 +39,7 @@ jobs: - name: "Setup Cygwin" if: ${{ matrix.os == 'windows-latest' }} - uses: stertooy/setup-cygwin@official-action-and-batch + uses: gap-actions/setup-cygwin@v2 - name: "Setup GAP" uses: ./ From 1845af4b5edd295339de2cf7f562689efa03a34e Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Fri, 29 Aug 2025 12:21:55 +0200 Subject: [PATCH 06/27] Remove need for token input --- README.md | 2 -- action.yml | 8 ++------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 771b87b..67caae4 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,6 @@ All of the following inputs are optional. - `gpk-pkgs-to-build`: - A space-separated list of the GAP packages to build. - default: `'io json profiling'` -- `token`: - - Token to authenticate with the GitHub API. You should set this to `${{ secrets.GITHUB_TOKEN }}` in your workflow. ## Contact Please submit bug reports, suggestions for improvements and patches via diff --git a/action.yml b/action.yml index d740864..a64c891 100644 --- a/action.yml +++ b/action.yml @@ -18,10 +18,6 @@ inputs: required: false default: 'io json profiling' deprecationMessage: 'This input will possibly be removed in the future, so do not rely on it too much' - token: - description: 'Token to authenticate with the GitHub API' - required: true - default: '' runs: using: "composite" @@ -49,13 +45,13 @@ runs: if [[ -z "${{ inputs.gap-version }}" || "${{ inputs.gap-version }}" == "latest" ]] ; then echo "Version: latest release" IS_RELEASE=true - VERSION=$(wget --header="Authorization: Bearer ${{ inputs.token }}" -qO- "https://api.github.com/repos/${{ inputs.repository }}/releases/latest" | jq -r '.tag_name') + VERSION=$(wget --header="Authorization: Bearer ${{ github.token }}" -qO- "https://api.github.com/repos/${{ inputs.repository }}/releases/latest" | jq -r '.tag_name') elif [[ "${{ inputs.gap-version }}" =~ ^(master|main|default)$ ]] ; then echo "Version: default branch" VERSION=$(git ls-remote --symref https://github.com/${{ inputs.repository }}.git HEAD | head -n 1 | sed 's|ref: refs/heads/||; s|\tHEAD||') else echo "Checking releases" - GIT_RELS_JSON=$(wget --header="Authorization: Bearer ${{ inputs.token }}" -qO- "https://api.github.com/repos/${{ inputs.repository }}/releases") + GIT_RELS_JSON=$(wget --header="Authorization: Bearer ${{ github.token }}" -qO- "https://api.github.com/repos/${{ inputs.repository }}/releases") GIT_RELS=$(echo "$GIT_RELS_JSON" | jq -r '.[].tag_name' | sort -V) GIT_NPRS=$(echo "$GIT_RELS_JSON" | jq -r '.[] | select((.draft == false) and (.prerelease == false)) | .tag_name' | sort -V) From 4bd8f3198e93c44861a31f8d3f47886a6fffb298 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:20:26 +0200 Subject: [PATCH 07/27] Add GAP version 4.15.0-beta1 to CII --- .github/workflows/CI.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 32b9850..a0d21bf 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -19,10 +19,11 @@ jobs: - v4.11.1 - stable-4.12 - v4.13.0-alpha2 + - 4.15.0-beta1 - 4 - latest - default - - v4.15dev + - v4.16dev configflags: ['', '--with-gmp=builtin'] exclude: - os: windows-latest From 5ef4bdb29157139379b14bbbd0a09e658a892835 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:40:37 +0200 Subject: [PATCH 08/27] Add info on v2 and v3 differences to README.md --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 67caae4..bc2134e 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,30 @@ All of the following inputs are optional. - `configflags`: - Arguments to pass to the GAP configure script. - default: `''` -- `gpk-pkgs-to-build`: +- `gap-pkgs-to-build`: - A space-separated list of the GAP packages to build. - default: `'io json profiling'` +### What's new in v3 +Version v3 contains many changes compared to version v2. Simply replacing `setup-gap@v2` by `setup-gap@v3` in an existing workflow +will almost surely not work. + +#### Changes to inputs: + - The `GAPBRANCH` input has been replaced by `gap-version`, which accepts version numbers, branch names, or either `default` or `latest`. + - The input `GAP_PKGS_TO_CLONE` has been removed. This should now be done by the user in a separate step in the workflow. + - The input `GAP_PKGS_TO_BUILD` has been renamed to `gap-pkgs-to-build`. It can only be used to build packages distributed with GAP. + In addition to `IO` and `profiling`, the package `json` is now also built by default. + - The inputs `HPCGAP` and `ABI` have been removed, and support for both HPC-GAP and 32-bit builds has been removed. + - The (previously undocumented) input `CONFIGFLAGS` has been renamed to `configflags`. + - The input `GAP_BOOTSTRAP` has been removed. GAP will always come with all distributed packages. + - An input `repository` has been added, which allows building a version of GAP hosted on a repository different from `gap-system/gap`. + +#### Changes to functionality: + - There is no longer a separate branch for running this action on Windows. This action should work on Windows, assuming it is + preceded by version v2 or later of [setup-cygwin](https://github.com/gap-actions/setup-gap). + - The installation location of GAP is added to the variable `GAPROOT`, which can be used in subsequent steps in the workflow. + - The GAP executable is added to `PATH`, thus GAP can now always be started by calling `gap`. + ## Contact Please submit bug reports, suggestions for improvements and patches via the [issue tracker](https://github.com/gap-actions/setup-gap/issues). From f3d3933e3c798b08dbea24d6a081bbf28be2f1b3 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:45:58 +0200 Subject: [PATCH 09/27] Remove token input from CI --- .github/workflows/CI.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a0d21bf..7f94877 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -46,7 +46,6 @@ jobs: uses: ./ with: gap-version: ${{ matrix.gap-version }} - token: ${{ secrets.GITHUB_TOKEN }} configflags: ${{ matrix.configflags }} - name: "Check if GAP can run" From 431a4f4eeed2ff2a4e905a00a13a620cc6bb5631 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:46:35 +0200 Subject: [PATCH 10/27] Add example workflows to README.md --- README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bc2134e..c8b1c8f 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,61 @@ will almost surely not work. preceded by version v2 or later of [setup-cygwin](https://github.com/gap-actions/setup-gap). - The installation location of GAP is added to the variable `GAPROOT`, which can be used in subsequent steps in the workflow. - The GAP executable is added to `PATH`, thus GAP can now always be started by calling `gap`. - + +### Example + +The following is a minimal example to run this action. + +```yaml +name: CI + +on: + push: + pull_request: + +jobs: + # The CI test job + test: + name: CI test + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v5 + - uses: gap-actions/setup-gap@v3 +``` + +A more extensive example: + +```yaml +name: CI + +on: + push: + pull_request: + +jobs: + # The CI test job + test: + name: CI test + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + gap-version: + - latest + - v4.15.0-beta1 + - master + + steps: + - uses: gap-actions/setup-cygwin@v2 + if: ${{ matrix.os == 'windows-latest' }} + - uses: actions/checkout@v5 + - uses: gap-actions/setup-gap@v3 + with: + gap-version: ${{ matrix.gap-version }} +``` + ## Contact Please submit bug reports, suggestions for improvements and patches via the [issue tracker](https://github.com/gap-actions/setup-gap/issues). From 8455fc0455cc3f0ae744c7da4d8ea381ee8ff462 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:00:41 +0200 Subject: [PATCH 11/27] Apply suggestions from code review Co-authored-by: Max Horn --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c8b1c8f..69eea62 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ will almost surely not work. #### Changes to functionality: - There is no longer a separate branch for running this action on Windows. This action should work on Windows, assuming it is preceded by version v2 or later of [setup-cygwin](https://github.com/gap-actions/setup-gap). - - The installation location of GAP is added to the variable `GAPROOT`, which can be used in subsequent steps in the workflow. + - The installation location of GAP is stored in the environment variable `GAPROOT`, which can be used in subsequent steps in the workflow. - The GAP executable is added to `PATH`, thus GAP can now always be started by calling `gap`. ### Example @@ -76,6 +76,7 @@ jobs: steps: - uses: actions/checkout@v5 - uses: gap-actions/setup-gap@v3 + # ... additional steps using GAP will usually follow here ``` A more extensive example: From cf3993e1198b1c10909e1947c0826f75a2e20d0c Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:20:52 +0200 Subject: [PATCH 12/27] Explain gap-version input options more clearly. --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 69eea62..4dfadf3 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,20 @@ All of the following inputs are optional. - default: `'io json profiling'` ### What's new in v3 -Version v3 contains many changes compared to version v2. Simply replacing `setup-gap@v2` by `setup-gap@v3` in an existing workflow -will almost surely not work. +Version v3 contains many changes compared to version v2. When replacing `setup-gap@v2` by `setup-gap@v3` in an existing workflow, +you will have to change the inputs accordingly. We also recommend replacing branches be releases, e.g. `stable-v4.14` by `v4.14`. #### Changes to inputs: - - The `GAPBRANCH` input has been replaced by `gap-version`, which accepts version numbers, branch names, or either `default` or `latest`. + - The `GAPBRANCH` input has been replaced by `gap-version`, which accepts the following input types: + - `latest`: this will use the latest release of GAP. This will **not** point to the latest pre-release if it is more recent + than the latest release. + - version numbers: e.g. `v4.14.0`, `v4.15.0-beta1`, etc. The leading `v` is optional. + - incomplete version numbers: e.g. `v4`, `v4.10`, etc. These will be expanded to the most recent release starting with the incomplete + version number, e.g. `v4.10` is equivalent to `v4.10.2`. This will **not** expand to pre-releases, and again the leading `v` is + optional. + - branch and tag names: e.g. `master`, `stable-v4.14`, etc. This will use the GAP version built from the corresponding branch or tag. + NB: the inputs `master`, `main` and `default` will always point at the "default branch" of the repository, i.e. the branch you are + presented with when navigating to `github.com//`. - The input `GAP_PKGS_TO_CLONE` has been removed. This should now be done by the user in a separate step in the workflow. - The input `GAP_PKGS_TO_BUILD` has been renamed to `gap-pkgs-to-build`. It can only be used to build packages distributed with GAP. In addition to `IO` and `profiling`, the package `json` is now also built by default. From fdc0bbc8dd9747ac6e6da685e386a8ebdb8e32a3 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:23:27 +0200 Subject: [PATCH 13/27] typo in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4dfadf3..b821345 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ All of the following inputs are optional. ### What's new in v3 Version v3 contains many changes compared to version v2. When replacing `setup-gap@v2` by `setup-gap@v3` in an existing workflow, -you will have to change the inputs accordingly. We also recommend replacing branches be releases, e.g. `stable-v4.14` by `v4.14`. +you will have to change the inputs accordingly. We also recommend replacing branches by releases, e.g. `stable-v4.14` by `v4.14`. #### Changes to inputs: - The `GAPBRANCH` input has been replaced by `gap-version`, which accepts the following input types: From bfed76f6e9ab402e82b6c3c978020c88cd1ac8a1 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:53:39 +0200 Subject: [PATCH 14/27] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b821345..3faa4fe 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ All of the following inputs are optional. - `gap-version`: - The gap version or branch to build. You may specify "latest" for the latest release, or "default" for the default branch. + see "Changes to inputs" under "What's new in v3" for more details. - default: `latest` - `repository` - The GitHub repository from which to clone GAP. From ad215ac05e16e4e0813bf7b0d603f11db2a33480 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 17:48:38 +0200 Subject: [PATCH 15/27] Apply suggestions from code review Co-authored-by: Max Horn --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index a64c891..2cb4d1d 100644 --- a/action.yml +++ b/action.yml @@ -30,7 +30,7 @@ runs: if [[ "${{ runner.os }}" == "Linux" ]] ; then sudo apt-get install libgmp-dev libreadline-dev zlib1g-dev elif [[ "${{ runner.os }}" = "macOS" ]] ; then - brew install zlib autoconf && brew link zlib --force + brew install zlib autoconf readline && brew link zlib --force fi - name: "Determine GAP version" From 61b93c525e9b1b680f8d9855be19af44babd4c78 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:30:15 +0200 Subject: [PATCH 16/27] Fix name of branches in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3faa4fe..78b5fc3 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All of the following inputs are optional. ### What's new in v3 Version v3 contains many changes compared to version v2. When replacing `setup-gap@v2` by `setup-gap@v3` in an existing workflow, -you will have to change the inputs accordingly. We also recommend replacing branches by releases, e.g. `stable-v4.14` by `v4.14`. +you will have to change the inputs accordingly. We also recommend replacing branches by releases, e.g. `stable-4.14` by `4.14`. #### Changes to inputs: - The `GAPBRANCH` input has been replaced by `gap-version`, which accepts the following input types: From 1a51760dfe34cf012e5dd8c240afb3f3d1623897 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:51:38 +0200 Subject: [PATCH 17/27] Add default command line options to gap executable (#4) --- .github/workflows/CI.yml | 2 +- action.yml | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 7f94877..5c59ccd 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -51,7 +51,7 @@ jobs: - name: "Check if GAP can run" shell: bash run: | - gap -A --quitonbreak < /usr/local/bin/gap + EXEC="sh $GAPROOT/bin/gap.sh" fi + echo -e '#!/bin/bash\n'"$EXEC"' '"$OPTS"' "$@"\n' > /usr/local/bin/gap - # Just to be sure it's executable + # Make it executable chmod +x /usr/local/bin/gap - name: "Download GAP packages" From b921309a005bca03a5d151af152e06a1a74f356f Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:52:13 +0200 Subject: [PATCH 18/27] V3 to v3 in README title --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78b5fc3..8eab687 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# setup-gap V3 +# setup-gap v3 This GitHub action downloads and prepares an instance of GAP. It is intended to be used by the Continuous Integration (CI) action of a GAP From 04a7c8dae41d63935e00f250e307cf688d82501d Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 09:11:46 +0200 Subject: [PATCH 19/27] Move --quitonbreak from executable 'gap' to variable 'GAP' --- action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/action.yml b/action.yml index 96775aa..76f0d3b 100644 --- a/action.yml +++ b/action.yml @@ -135,18 +135,18 @@ runs: mkdir -p /tmp/gaproot/pkg/ ln -f -s $PWD /tmp/gaproot/pkg/ - OPTS='-l "/tmp/gaproot;" --quitonbreak' - if [ -f "$GAPROOT/gap" ] ; then EXEC="$GAPROOT/gap" else EXEC="sh $GAPROOT/bin/gap.sh" fi - echo -e '#!/bin/bash\n'"$EXEC"' '"$OPTS"' "$@"\n' > /usr/local/bin/gap + echo -e '#!/bin/bash\n'"$EXEC"' -l "/tmp/gaproot;" "$@"\n' > /usr/local/bin/gap # Make it executable chmod +x /usr/local/bin/gap + echo 'GAP="gap --quitonbreak"' >> "$GITHUB_ENV" + - name: "Download GAP packages" shell: bash if: ${{ steps.version.outputs.IS_RELEASE == 'false' }} From 2e8311f376cbd40187856672b656e831b87a8b9a Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 09:12:35 +0200 Subject: [PATCH 20/27] Update CI to check for GAP variable --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5c59ccd..a0cdf76 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -55,9 +55,9 @@ jobs: quit; GAPINPUT - - name: "Check ENV for GAPROOT" + - name: "Check ENV for GAPROOT and GAP variables" shell: bash run: | - if [[ -z "$GAPROOT" ]] ; then + if [[ -z "$GAPROOT" || -z "$GAP" ]] ; then exit 1 fi From daf99fb30fe33c0d684980f01cb2e368de5ab149 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 10:09:42 +0200 Subject: [PATCH 21/27] Add information on cloning packages in README.md --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8eab687..10b75f0 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,8 @@ you will have to change the inputs accordingly. We also recommend replacing bran - branch and tag names: e.g. `master`, `stable-v4.14`, etc. This will use the GAP version built from the corresponding branch or tag. NB: the inputs `master`, `main` and `default` will always point at the "default branch" of the repository, i.e. the branch you are presented with when navigating to `github.com//`. - - The input `GAP_PKGS_TO_CLONE` has been removed. This should now be done by the user in a separate step in the workflow. + - The input `GAP_PKGS_TO_CLONE` has been removed. This should now be done by the user in a separate step in the workflow, e.g. by using + `git clone` or the [PackageManager](https://gap-packages.github.io/PackageManager/) package. See the Examples section below. - The input `GAP_PKGS_TO_BUILD` has been renamed to `gap-pkgs-to-build`. It can only be used to build packages distributed with GAP. In addition to `IO` and `profiling`, the package `json` is now also built by default. - The inputs `HPCGAP` and `ABI` have been removed, and support for both HPC-GAP and 32-bit builds has been removed. @@ -66,7 +67,7 @@ you will have to change the inputs accordingly. We also recommend replacing bran - The installation location of GAP is stored in the environment variable `GAPROOT`, which can be used in subsequent steps in the workflow. - The GAP executable is added to `PATH`, thus GAP can now always be started by calling `gap`. -### Example +### Examples The following is a minimal example to run this action. @@ -119,6 +120,16 @@ jobs: - uses: gap-actions/setup-gap@v3 with: gap-version: ${{ matrix.gap-version }} + - shell: bash + run: | + # Install package via 'git clone' + cd $HOME/.gap/pkg + git clone https://github.com/gap-packages/io + - shell: bash + run: | + # Install packages via PackageManager + gap -c 'LoadPackage("PackageManager"); InstallPackage("https://github.com/gap-packages/orb"); QUIT;' + gap -c 'LoadPackage("PackageManager"); InstallPackage("cvec"); QUIT;' ``` ## Contact From e3700247e351ef73988cf6f26fcb55809fa3f98e Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 11:49:09 +0200 Subject: [PATCH 22/27] Remove gap-pkgs-to-build from action.yml --- action.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/action.yml b/action.yml index 76f0d3b..38f1161 100644 --- a/action.yml +++ b/action.yml @@ -13,11 +13,6 @@ inputs: description: 'Arguments to pass to the GAP configure script (e.g. --enable-debug)' required: false default: '' - gap-pkgs-to-build: - description: 'A space-separated list of the GAP packages to build' - required: false - default: 'io json profiling' - deprecationMessage: 'This input will possibly be removed in the future, so do not rely on it too much' runs: using: "composite" @@ -155,14 +150,3 @@ runs: WGET="wget -q -N --no-check-certificate --tries=5 --waitretry=5 --retry-connrefused" # For GAP >= 4.11 set DOWNLOAD, for older versions set WGET make bootstrap-pkg-full DOWNLOAD="$WGET" WGET="$WGET" - - - name: "Build GAP packages" - shell: bash - if: ${{ inputs.gap-pkgs-to-build != '' }} - run: | - BuildPackagesOptions="--strict" - shopt -s nocaseglob - cd $GAPROOT/pkg - for pkg in ${{ inputs.gap-pkgs-to-build }}; do - ../bin/BuildPackages.sh ${BuildPackagesOptions} $pkg* - done From fb829a6f4f6c9d08dc843961a094532f58fa79a5 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 11:55:25 +0200 Subject: [PATCH 23/27] Update README to reflect removal of gap-pkgs-to-build --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 10b75f0..2e48cb0 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,9 @@ you will have to change the inputs accordingly. We also recommend replacing bran - branch and tag names: e.g. `master`, `stable-v4.14`, etc. This will use the GAP version built from the corresponding branch or tag. NB: the inputs `master`, `main` and `default` will always point at the "default branch" of the repository, i.e. the branch you are presented with when navigating to `github.com//`. - - The input `GAP_PKGS_TO_CLONE` has been removed. This should now be done by the user in a separate step in the workflow, e.g. by using - `git clone` or the [PackageManager](https://gap-packages.github.io/PackageManager/) package. See the Examples section below. + - The inputs `GAP_PKGS_TO_CLONE` and `GAP_PKGS_TO_BUILD` have been removed. This should now be done by the user in a separate step in + the workflow, e.g. by using `git clone` or the [PackageManager](https://gap-packages.github.io/PackageManager/) package. See the + Examples section below. - The input `GAP_PKGS_TO_BUILD` has been renamed to `gap-pkgs-to-build`. It can only be used to build packages distributed with GAP. In addition to `IO` and `profiling`, the package `json` is now also built by default. - The inputs `HPCGAP` and `ABI` have been removed, and support for both HPC-GAP and 32-bit builds has been removed. @@ -125,6 +126,10 @@ jobs: # Install package via 'git clone' cd $HOME/.gap/pkg git clone https://github.com/gap-packages/io + cd io + sh autogen.sh + ./configure --with-gaproot=$GAPROOT + make -j4 - shell: bash run: | # Install packages via PackageManager From 1dc0aec1b49e3fa75dd3c020898ac9a3504604a5 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 13:15:49 +0200 Subject: [PATCH 24/27] Also remove gap-pkgs-to-build from inputs list in README.md --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 2e48cb0..be621e1 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,6 @@ All of the following inputs are optional. - `configflags`: - Arguments to pass to the GAP configure script. - default: `''` -- `gap-pkgs-to-build`: - - A space-separated list of the GAP packages to build. - - default: `'io json profiling'` ### What's new in v3 Version v3 contains many changes compared to version v2. When replacing `setup-gap@v2` by `setup-gap@v3` in an existing workflow, From 3fc48bf68064c06ad91c6a6ead948d238edb7764 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 13:27:55 +0200 Subject: [PATCH 25/27] Don't try to install readline on macOS, already installed --- action.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 38f1161..391d534 100644 --- a/action.yml +++ b/action.yml @@ -25,7 +25,8 @@ runs: if [[ "${{ runner.os }}" == "Linux" ]] ; then sudo apt-get install libgmp-dev libreadline-dev zlib1g-dev elif [[ "${{ runner.os }}" = "macOS" ]] ; then - brew install zlib autoconf readline && brew link zlib --force + # Note: readline is installed by default, adding it here causes warnings in GitHub runners + brew install zlib autoconf && brew link zlib --force fi - name: "Determine GAP version" From dbb1141b6d73e6a4dcbef985add52421e8979af0 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 13:29:24 +0200 Subject: [PATCH 26/27] Don't test stable-4.12 on macOS, causes unpredictable errors --- .github/workflows/CI.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a0cdf76..21344cb 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -28,6 +28,8 @@ jobs: exclude: - os: windows-latest configflags: '--with-gmp=builtin' + - os: macos-latest + gap-version: stable-4.12 - os: macos-latest gap-version: v4.10 - os: macos-latest From 4da4e286186cafccccf196bdff073dcffa731b35 Mon Sep 17 00:00:00 2001 From: stertooy <5571903+stertooy@users.noreply.github.com> Date: Mon, 1 Sep 2025 13:31:39 +0200 Subject: [PATCH 27/27] Document in README that the oldest available release is v4.10.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index be621e1..20503d1 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ you will have to change the inputs accordingly. We also recommend replacing bran - The `GAPBRANCH` input has been replaced by `gap-version`, which accepts the following input types: - `latest`: this will use the latest release of GAP. This will **not** point to the latest pre-release if it is more recent than the latest release. - - version numbers: e.g. `v4.14.0`, `v4.15.0-beta1`, etc. The leading `v` is optional. + - version numbers: e.g. `v4.14.0`, `v4.15.0-beta1`, etc. The leading `v` is optional, the oldest available release is `v4.10.0`. - incomplete version numbers: e.g. `v4`, `v4.10`, etc. These will be expanded to the most recent release starting with the incomplete version number, e.g. `v4.10` is equivalent to `v4.10.2`. This will **not** expand to pre-releases, and again the leading `v` is optional.