From 63ad08e1b3d2447344b47cf4106f6a95494a7efa Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Fri, 22 May 2026 05:18:47 +0200 Subject: [PATCH] cirrus/gh: migrating Cirrus CI jobs to GitHub Actions Cirrus CI is shutting down (https://cirruslabs.org/). It was a very good CI service, very helpful for the project. We are moving our CI jobs that were running there on GitHub Actions (GHA). * FreeBSD job is removed, as no FreeBSD image is available on GHA * Several Linux jobs are folded into existing GHA jobs to optimize the total number of CI jobs This commit also rework the way to pass options to the configure script to be able to handle value containing whitespace or shell-specific characters. Closes #624 Signed-off-by: Xavier Delaruelle --- .cirrus.yml | 246 ------------------------- .github/workflows/linux_tests.yaml | 244 ++++++++++++++++++++++-- .github/workflows/macos_tests.yaml | 59 ++++++ .hunspell.en.dic | 2 + testsuite/install.00-init/080-args.exp | 2 +- 5 files changed, 289 insertions(+), 264 deletions(-) delete mode 100644 .cirrus.yml create mode 100644 .github/workflows/macos_tests.yaml diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 35753a239..000000000 --- a/.cirrus.yml +++ /dev/null @@ -1,246 +0,0 @@ -env: - MAKE: make - -clone_template: &CLONE_TEMPLATE - # need to supersede Cirrus CI-specific git clone with a regular git client - clone_script: | - if [ "$CIRRUS_OS" = 'darwin' ]; then - brew install git - elif [ "$CIRRUS_OS" = 'freebsd' ]; then - pkg install -y git - elif [ -n "$(command -v zypper)" ]; then - zypper install -y git - elif [ -n "$(command -v apt-get)" ]; then - apt-get update - apt-get -y install git - else - yum install -y git - fi - if [ -z "$CIRRUS_PR" ]; then - git clone --branch=$CIRRUS_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR - else - git clone https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR - fi - cd $CIRRUS_WORKING_DIR - if [ -n "$CIRRUS_PR" ]; then - git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR - fi - git reset --hard $CIRRUS_CHANGE_IN_REPO - -artifacts_template: &ARTIFACTS_TEMPLATE - always: - log_artifacts: - path: modules.log - type: text/plain - installlog_artifacts: - path: install.log - type: text/plain - -build_install_test_template: &BUILD_INSTALL_TEST_TEMPLATE - build_script: - - $MAKE - test_script: | - if [ -n "$TEST_SPECIFIC_CONFIG" ]; then - $MAKE $TEST_SPECIFIC_CONFIG - fi - $MAKE test-deps - script/mt - if [ -n "$TEST_SPECIFIC_CONFIG" ]; then - $MAKE uninstall-testconfig - fi - install_script: - - $MAKE install - testinstall_script: - - script/mt install - uninstall_script: - - $MAKE uninstall - -build_install_xvfbtest_template: &BUILD_INSTALL_XVBFTEST_TEMPLATE - build_script: - - $MAKE - test_script: | - if [ -n "$TEST_SPECIFIC_CONFIG" ]; then - $MAKE $TEST_SPECIFIC_CONFIG - fi - $MAKE test-deps - xvfb-run script/mt - if [ -n "$TEST_SPECIFIC_CONFIG" ]; then - $MAKE uninstall-testconfig - fi - install_script: - - $MAKE install - testinstall_script: - - xvfb-run script/mt install - uninstall_script: - - $MAKE uninstall - - -task: - << : *CLONE_TEMPLATE - env: - MAKE: gmake - freebsd_instance: - image_family: freebsd-14-3 - cpu: 1 - memory: 2G - reqinstall_script: pkg install -y bash curl gmake dejagnu py311-sphinx gzip tcl86 tcl-wrapper autoconf ksh93 zsh fish perl5 python311 ruby cmake R readline - configure_script: - - ./configure - << : *BUILD_INSTALL_TEST_TEMPLATE - << : *ARTIFACTS_TEMPLATE - -task: - << : *CLONE_TEMPLATE - env: - COVERAGE: y - macos_instance: - image: ghcr.io/cirruslabs/macos-runner:sonoma - reqinstall_script: - - brew uninstall mise - - brew update - - brew install md5sha1sum expect dejagnu grep fish r tcl-tk gzip powershell - configure_script: - - ./configure --prefix=/tmp/modules --with-loadedmodules=null:dot --with-tcl=/opt/homebrew/lib --with-tclsh=/opt/homebrew/bin/tclsh - << : *BUILD_INSTALL_TEST_TEMPLATE - coverage_script: - - for f in tcl/*.tcl; do script/nglfar2ccov $f; done - - cd lib; gcov envmodules; cd .. - - curl -Os https://uploader.codecov.io/latest/macos/codecov - - chmod +x codecov - - ./codecov - << : *ARTIFACTS_TEMPLATE - -task: - << : *CLONE_TEMPLATE - # change dir to launch tests from path containing specific chars - env: - CIRRUS_WORKING_DIR: /tmp/modules-1.2.3+branch_name-91-g6dd3db49 - DEBIAN_FRONTEND: noninteractive - LANGUAGE: C - LANG: C - LC_ALL: C - TEST_SPECIFIC_CONFIG: install-testmodspath-wild - EXTRATEST_SOURCESH: y - TESTSUITE_ENABLE_MODULECACHE: 1 - container: - image: ubuntu:noble - cpu: 1 - memory: 2G - reqinstall_script: | - # restore manpages subsystem in container - yes | unminimize || true - # install requirements - apt-get update - apt-get -y install curl expect-dev dejagnu python3-sphinx gzip man-db bash tcsh ksh zsh fish tcl tcl8.6 perl python3 ruby cmake r-base-core - # libtclenvmodules build requirements - apt-get -y install gcc autoconf tcl8.6-dev - # requirements for source-sh extra tests - apt-get -y install lsof - # install powershell - curl -LJO https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb - dpkg -i packages-microsoft-prod.deb - rm packages-microsoft-prod.deb - apt-get update - apt-get install -y powershell - configure_script: - - ./configure --with-tclsh=tclsh8.6 --prefix /tmp/modules --with-tcl=/usr/lib/tcl8.6 --enable-append-manpath --enable-append-binpath --with-bin-search-path=/usr/bin:/bin --enable-silent-shell-debug-support --enable-windows-support --with-loadedmodules=null:dot --enable-quarantine-support --with-quarantine-vars=LD_LIBRARY_PATH --enable-new-features --with-dark-background-colors='hi=1:se=2:er=91:wa=93:mp=1;94:di=94:al=96:sy=95' --enable-foo FOO=bar - << : *BUILD_INSTALL_TEST_TEMPLATE - << : *ARTIFACTS_TEMPLATE - -task: - << : *CLONE_TEMPLATE - env: - DEBIAN_FRONTEND: noninteractive - LANGUAGE: C - LANG: C - LC_ALL: C - container: - image: ubuntu:jammy - cpu: 1 - memory: 2G - reqinstall_script: | - # restore manpages subsystem in container - yes | unminimize || true - # install requirements - apt-get update - apt-get -y install curl expect-dev dejagnu python3-sphinx gzip man-db bash tcsh ksh zsh fish tcl tcl8.6 perl python3 ruby cmake r-base-core lsb-release - # libtclenvmodules build requirements - apt-get -y install gcc autoconf tcl8.6-dev - # requirements for source-sh extra tests - apt-get -y install lsof - # install powershell - curl -LJO https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb - dpkg -i packages-microsoft-prod.deb - rm packages-microsoft-prod.deb - apt-get update - apt-get install -y powershell - configure_script: - - ./configure --with-tclsh=tclsh8.6 --prefix='/tmp/mo ules' --with-tcl=/usr/lib/tcl8.6 - << : *BUILD_INSTALL_TEST_TEMPLATE - << : *ARTIFACTS_TEMPLATE - -task: - << : *CLONE_TEMPLATE - container: - matrix: - image: rockylinux:8 - cpu: 1 - memory: 2G - reqinstall_script: | - sed -i 's|enabled=0|enabled=1|' /etc/yum.repos.d/Rocky-PowerTools.repo - # specific update of libarchive is required for CMake on EL8.3 - yum update -y libarchive - # need to pre-install correct module implementation to avoid fetching - # another one from EPEL (as dependency for R-core) on recent RockyLinux 8 - yum install -y environment-modules - yum install -y epel-release - yum install -y tcsh zsh ksh tcl perl python36 gzip ruby cmake R-core make curl perl python3-sphinx git dejagnu man-db rpm-build bzip2 autoconf gcc tcl-devel emacs - yum install -y which xorg-x11-server-utils xorg-x11-server-Xvfb - yum install -y fish - configure_script: - - ./configure --with-loadedmodules=null:dot --enable-quarantine-support --with-quarantine-vars='LD_LIBRARY_PATH LD_PRELOAD' --with-bashcompletiondir=/usr/share/bash-completion/completions --with-fishcompletiondir=/usr/share/fish/vendor_completions.d --with-zshcompletiondir=/usr/share/zsh/site-functions - # also enable a display on this test case to validate x-resource behavior - << : *BUILD_INSTALL_XVBFTEST_TEMPLATE - rpm_script: - - xvfb-run make srpm rpm - << : *ARTIFACTS_TEMPLATE - -task: - << : *CLONE_TEMPLATE - env: - LANGUAGE: C - LANG: C - LC_ALL: C - arm_container: - image: almalinux:9 - cpu: 1 - memory: 2G - reqinstall_script: | - dnf install -y dnf-plugins-core epel-release - dnf config-manager --set-enabled crb - dnf install -y tcsh zsh ksh fish tcl perl python3 gzip ruby cmake R-core make perl python3-sphinx git dejagnu man-db rpm-build bzip2 autoconf gcc tcl-devel procps-ng emacs - configure_script: - - ./configure --with-bashcompletiondir=/usr/share/bash-completion/completions --with-fishcompletiondir=/usr/share/fish/vendor_completions.d --with-zshcompletiondir=/usr/share/zsh/site-functions - # also enable a display on this test case to validate x-resource behavior - << : *BUILD_INSTALL_TEST_TEMPLATE - rpm_script: - - make srpm rpm - << : *ARTIFACTS_TEMPLATE - -task: - << : *CLONE_TEMPLATE - container: - matrix: - image: opensuse/leap:15.5 - cpu: 1 - memory: 2G - reqinstall_script: | - zypper install -y tcsh zsh ksh fish tcl perl python3 ruby cmake R-core R-core-packages make curl python3-Sphinx gzip git dejagnu man net-tools autoconf gcc tcl-devel util-linux-systemd procps - zypper install -y which xrdb xvfb-run - configure_script: - - ./configure --enable-versioning --with-loadedmodules=null:dot --with-quarantine-vars='LD_LIBRARY_PATH LD_PRELOAD' - # also enable a display on this test case to validate x-resource behavior - << : *BUILD_INSTALL_XVBFTEST_TEMPLATE - << : *ARTIFACTS_TEMPLATE - -# vim:set tabstop=2 shiftwidth=2 expandtab autoindent: diff --git a/.github/workflows/linux_tests.yaml b/.github/workflows/linux_tests.yaml index 0dbfbbdd5..1276a9eac 100644 --- a/.github/workflows/linux_tests.yaml +++ b/.github/workflows/linux_tests.yaml @@ -11,7 +11,16 @@ jobs: tcl86-nolibtclenvmodules: runs-on: ubuntu-22.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh8.6 --disable-libtclenvmodules --prefix=/tmp/modules --with-pager=more --with-pager-opts=-X --with-initconf-in=initdir --enable-quarantine-support --disable-set-binpath --disable-set-manpath + CONFIGURE_OPTS: | + --with-tclsh=tclsh8.6 + --disable-libtclenvmodules + --prefix=/tmp/mo ules + --with-pager=more + --with-pager-opts=-X + --with-initconf-in=initdir + --enable-quarantine-support + --disable-set-binpath + --disable-set-manpath COVERAGE: y EXTRA_SCRIPT_PRETEST: make install-testmodulerc install-testetcrc install-testmodspath-empty install-testmoguicmd EXTRA_SCRIPT_POSTTEST: make uninstall-testconfig @@ -31,7 +40,8 @@ jobs: sudo apt-get install -y xvfb x11-xserver-utils - name: Build Modules run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build run: | @@ -68,7 +78,27 @@ jobs: tcl85-nolibtclenvmodules: runs-on: ubuntu-22.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh8.5 --prefix=/tmp/modules --disable-libtclenvmodules --with-tcl=/usr/local/lib --enable-versioning --with-loadedmodules=null:dot --without-pager --disable-avail-indepth --disable-spider-indepth --with-terminal-background=light --with-unload-match-order=returnfirst --disable-implicit-default --with-search-match=contains --with-locked-configs=extra_siteconfig --disable-auto-handling --disable-extended-default --disable-advanced-version-spec --disable-color --with-icase=never --with-tcl-linter=nagelfar135/nagelfar.tcl + CONFIGURE_OPTS: | + --with-tclsh=tclsh8.5 + --prefix=/tmp/modules + --disable-libtclenvmodules + --with-tcl=/usr/local/lib + --enable-versioning + --with-loadedmodules=null:dot + --without-pager + --disable-avail-indepth + --disable-spider-indepth + --with-terminal-background=light + --with-unload-match-order=returnfirst + --disable-implicit-default + --with-search-match=contains + --with-locked-configs=extra_siteconfig + --disable-auto-handling + --disable-extended-default + --disable-advanced-version-spec + --disable-color + --with-icase=never + --with-tcl-linter=nagelfar135/nagelfar.tcl COVERAGE: y EXTRA_SCRIPT_PRETEST: make install-testinitrc install-testsiteconfig EXTRA_SCRIPT_POSTTEST: make uninstall-testconfig @@ -95,7 +125,8 @@ jobs: sudo make install - name: Build Modules run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build run: | @@ -132,7 +163,23 @@ jobs: tcl85-2: runs-on: ubuntu-22.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh8.5 --prefix=/tmp/modules --with-tcl=/usr/local/lib --enable-quarantine-support --enable-silent-shell-debug-support --enable-modulespath --with-pager=more --with-dark-background-colors=hi --with-locked-configs=implicit_default --enable-wa-277 --enable-advanced-version-spec --disable-ml --disable-implicit-requirement --enable-set-shell-startup --enable-path-entry-reorder --disable-compressed-changelog + CONFIGURE_OPTS: | + --with-tclsh=tclsh8.5 + --prefix=/tmp/modules + --with-tcl=/usr/local/lib + --enable-quarantine-support + --enable-silent-shell-debug-support + --enable-modulespath + --with-pager=more + --with-dark-background-colors=hi + --with-locked-configs=implicit_default + --enable-wa-277 + --enable-advanced-version-spec + --disable-ml + --disable-implicit-requirement + --enable-set-shell-startup + --enable-path-entry-reorder + --disable-compressed-changelog COVERAGE: y EXTRA_SCRIPT_PRETEST: make install-testinitrc-1 install-testetcrc install-testmodspath EXTRA_SCRIPT_POSTTEST: make uninstall-testconfig @@ -159,7 +206,8 @@ jobs: sudo make install - name: Build Modules run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build run: | @@ -196,7 +244,12 @@ jobs: tcl86: runs-on: ubuntu-22.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh8.6 --prefix=/tmp/modules --libdir=/tmp/modules/lib64 --enable-multilib-support --enable-new-features + CONFIGURE_OPTS: | + --with-tclsh=tclsh8.6 + --prefix=/tmp/modules + --libdir=/tmp/modules/lib64 + --enable-multilib-support + --enable-new-features COVERAGE: y COVERAGE_OLDTCL: y COVERAGE_MULTILIB: y @@ -219,7 +272,8 @@ jobs: sudo apt-get install -y gcc autoconf tcl8.6-dev - name: Build Modules run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build shell: 'script -q -e -c "bash {0}"' @@ -258,7 +312,10 @@ jobs: tcl85: runs-on: ubuntu-22.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh8.5 --prefix=/tmp/modules --with-tcl=/usr/local/lib + CONFIGURE_OPTS: | + --with-tclsh=tclsh8.5 + --prefix=/tmp/modules + --with-tcl=/usr/local/lib COVERAGE: y EXTRA_SCRIPT_PRETEST: make install-testsiteconfig-1 && export TESTSUITE_ENABLE_SITECONFIG=1 EXTRA_SCRIPT_POSTTEST: unset TESTSUITE_ENABLE_SITECONFIG @@ -285,7 +342,8 @@ jobs: sudo make install - name: Build Modules run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build shell: 'script -q -e -c "bash {0}"' @@ -322,13 +380,34 @@ jobs: retention-days: 5 tcl91: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh9.1 --prefix=/tmp/modules --with-tcl=/usr/local/lib + CONFIGURE_OPTS: | + --with-tclsh=/usr/local/bin/tclsh9.1 + --prefix=/tmp/modules + --with-tcl=/usr/local/lib + --enable-append-manpath + --enable-append-binpath + --with-bin-search-path=/usr/bin:/bin + --enable-silent-shell-debug-support + --enable-windows-support + --with-loadedmodules=null:dot + --enable-quarantine-support + --with-quarantine-vars=LD_LIBRARY_PATH + --enable-new-features + --with-dark-background-colors=hi=1:se=2:er=91:wa=93:mp=1;94:di=94:al=96:sy=95 + --enable-foo + FOO=bar + EXTRA_SCRIPT_PRETEST: make install-testmodspath-wild + EXTRA_SCRIPT_POSTTEST: unset TESTSUITE_ENABLE_SITECONFIG + TESTSUITE_ENABLE_MODULECACHE: 1 + EXTRATEST_SOURCESH: y steps: - uses: actions/checkout@v6 with: fetch-depth: 0 + # change dir to launch tests from path containing specific chars + path: modules-1.2.3+branch_name-91-g6dd3db49 - name: Install system packages run: | # add microsoft repository for powershell @@ -347,20 +426,28 @@ jobs: make -j sudo make install - name: Build Modules + working-directory: modules-1.2.3+branch_name-91-g6dd3db49 run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build + working-directory: modules-1.2.3+branch_name-91-g6dd3db49 run: | + eval $EXTRA_SCRIPT_PRETEST make test-deps script/mt + eval $EXTRA_SCRIPT_POSTTEST - name: Install Modules + working-directory: modules-1.2.3+branch_name-91-g6dd3db49 run: | make install - name: Test Modules installation + working-directory: modules-1.2.3+branch_name-91-g6dd3db49 run: | script/mt install - name: Uninstall Modules + working-directory: modules-1.2.3+branch_name-91-g6dd3db49 run: | make uninstall - uses: actions/upload-artifact@v7 @@ -368,14 +455,17 @@ jobs: with: name: testsuite-logs-${{ github.job }} path: | - modules.log - install.log + modules-1.2.3+branch_name-91-g6dd3db49/modules.log + modules-1.2.3+branch_name-91-g6dd3db49/install.log retention-days: 5 tcl90: runs-on: ubuntu-22.04 env: - CONFIGURE_OPTS: --with-tclsh=tclsh9.0 --prefix=/tmp/modules --with-tcl=/usr/local/lib + CONFIGURE_OPTS: | + --with-tclsh=tclsh9.0 + --prefix=/tmp/modules + --with-tcl=/usr/local/lib COVERAGE: y steps: - uses: actions/checkout@v6 @@ -400,7 +490,8 @@ jobs: sudo make install - name: Build Modules run: | - ./configure $CONFIGURE_OPTS + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" make - name: Test Modules build run: | @@ -431,3 +522,122 @@ jobs: modules.log install.log retention-days: 5 + + el8: + runs-on: ubuntu-latest + container: + image: rockylinux:8 + env: + CONFIGURE_OPTS: | + --with-loadedmodules=null:dot + --enable-quarantine-support + --with-quarantine-vars=LD_LIBRARY_PATH LD_PRELOAD + --with-bashcompletiondir=/usr/share/bash-completion/completions + --with-fishcompletiondir=/usr/share/fish/vendor_completions.d + --with-zshcompletiondir=/usr/share/zsh/site-functions + steps: + - name: Install system packages + run: | + sed -i 's|enabled=0|enabled=1|' /etc/yum.repos.d/Rocky-PowerTools.repo + # specific update of libarchive is required for CMake on EL8.3 + yum update -y libarchive + # need to pre-install correct module implementation to avoid fetching + # another one from EPEL (as dependency for R-core) on recent RockyLinux 8 + yum install -y environment-modules + # need git in PATH for actions/checkout to get git repo instead of github export + dnf install -y git + yum install -y epel-release + yum install -y tcsh zsh ksh tcl perl python36 gzip ruby cmake R-core make curl perl python3-sphinx git dejagnu man-db rpm-build bzip2 autoconf gcc tcl-devel emacs + yum install -y which xorg-x11-server-utils xorg-x11-server-Xvfb + yum install -y fish + - name: Fix git safe directory + run: | + # avoid "detected dubious ownership in repository" error + git config --global --add safe.directory "$GITHUB_WORKSPACE" + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Build Modules + run: | + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" + make + # also enable a display on this test case to validate x-resource behavior + - name: Test Modules build + run: | + make test-deps + xvfb-run script/mt + - name: Install Modules + run: | + make install + - name: Test Modules installation + run: | + xvfb-run script/mt install + - name: Uninstall Modules + run: | + make uninstall + - name: Build RPM & SRPM packages + run: | + xvfb-run make srpm rpm + - uses: actions/upload-artifact@v7 + if: failure() + with: + name: testsuite-logs-${{ github.job }} + path: | + /__w/modules/modules/modules.log + /__w/modules/modules/install.log + retention-days: 5 + + el9: + runs-on: ubuntu-latest + container: + image: almalinux:9 + env: + CONFIGURE_OPTS: | + --with-bashcompletiondir=/usr/share/bash-completion/completions + --with-fishcompletiondir=/usr/share/fish/vendor_completions.d + --with-zshcompletiondir=/usr/share/zsh/site-functions + steps: + - name: Install system packages + run: | + # need git in PATH for actions/checkout to get git repo instead of github export + dnf install -y git + dnf install -y dnf-plugins-core epel-release + dnf config-manager --set-enabled crb + dnf install -y tcsh zsh ksh fish tcl perl python3 gzip ruby cmake R-core make perl python3-sphinx git dejagnu man-db rpm-build bzip2 autoconf gcc tcl-devel procps-ng emacs + - name: Fix git safe directory + run: | + # avoid "detected dubious ownership in repository" error + git config --global --add safe.directory "$GITHUB_WORKSPACE" + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Build Modules + run: | + mapfile -t opts <<< "$CONFIGURE_OPTS" + ./configure "${opts[@]}" + make + - name: Test Modules build + run: | + make test-deps + script/mt + - name: Install Modules + run: | + make install + - name: Test Modules installation + run: | + script/mt install + - name: Uninstall Modules + run: | + make uninstall + - name: Build RPM & SRPM packages + run: | + make srpm rpm + - uses: actions/upload-artifact@v7 + if: failure() + with: + name: testsuite-logs-${{ github.job }} + path: | + /__w/modules/modules/modules.log + /__w/modules/modules/install.log + retention-days: 5 diff --git a/.github/workflows/macos_tests.yaml b/.github/workflows/macos_tests.yaml new file mode 100644 index 000000000..1c3547d96 --- /dev/null +++ b/.github/workflows/macos_tests.yaml @@ -0,0 +1,59 @@ +name: macos-tests + +on: + push: + branches-ignore: + - c-main + - c-3.2 + pull_request: + +jobs: + macos: + runs-on: macos-15 + env: + CONFIGURE_OPTS: --prefix=/tmp/modules --with-loadedmodules=null:dot --with-tcl=/opt/homebrew/lib --with-tclsh=/opt/homebrew/bin/tclsh + COVERAGE: y + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Install system packages + run: | + brew update + brew install autoconf md5sha1sum expect dejagnu grep fish r tcl-tk gzip powershell sphinx-doc + - name: Build Modules + run: | + # handle CONFIGURE_OPTS differently than on linux tests as bash version here + # does not support "mapfile" builtin. as a result, CONFIGURE_OPTS cannot contain + # here whitespace or shell specific characters like ';' + ./configure $CONFIGURE_OPTS + make + - name: Test Modules build + run: | + make test-deps + script/mt + - name: Install Modules + run: | + make install + - name: Test Modules installation + run: | + script/mt install + for f in tcl/*.tcl; do + script/nglfar2ccov $f + done + cd lib + gcov envmodules + - name: Uninstall Modules + run: | + make uninstall + - uses: codecov/codecov-action@v6 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - uses: actions/upload-artifact@v7 + if: failure() + with: + name: testsuite-logs-${{ github.job }} + path: | + modules.log + install.log + retention-days: 5 diff --git a/.hunspell.en.dic b/.hunspell.en.dic index 601e2c5f4..0c40f8703 100644 --- a/.hunspell.en.dic +++ b/.hunspell.en.dic @@ -1332,3 +1332,5 @@ tsc LFX YYYYMMDD roadmap +CI +GHA diff --git a/testsuite/install.00-init/080-args.exp b/testsuite/install.00-init/080-args.exp index 894b5bb6f..7e3781917 100644 --- a/testsuite/install.00-init/080-args.exp +++ b/testsuite/install.00-init/080-args.exp @@ -155,7 +155,7 @@ foreach shell $othlang_list { testall_cmd_re "$shell" "append-path,FOO,\\\$foo:source,$modfile" "" "$foo:\\\\\\\$foo" 0 } python { - testall_cmd_re "$shell" "append-path,FOO,\\\$foo:source,$modfile" "" "(:3: SyntaxWarning: invalid escape sequence '\\\\\\$'\\n)?$foo:\\\\\\\$foo" 0 + testall_cmd_re "$shell" "append-path,FOO,\\\$foo:source,$modfile" "" "(:3: SyntaxWarning: invalid escape sequence '\\\\\\$'\\n|:3: SyntaxWarning: \"\\\\\\$\" is an invalid escape sequence.*\\n)?$foo:\\\\\\\$foo" 0 } default { testall_cmd_re "$shell" "append-path,FOO,\\\$foo:source,$modfile" "" "$foo:\\\$foo" 0