Skip to content

🌞 mommy tests on solaris again~ #550

🌞 mommy tests on solaris again~

🌞 mommy tests on solaris again~ #550

Workflow file for this run

name: 🧪 ci~
on:
push:
paths-ignore:
- ".github/img/**"
- "CONTRIBUTING.md"
- "README.md"
- "SECURITY.md"
pull_request:
paths-ignore:
- ".github/img/**"
- "CONTRIBUTING.md"
- "README.md"
- "SECURITY.md"
jobs:
test-linux:
runs-on: ubuntu-latest
steps:
- name: Install dependencies for mommy
run: |
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
sudo make -C /tmp/shellspec/ install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
sudo apt-get install fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
- name: Checkout
uses: actions/checkout@v6
- name: Test script
run: make test
- name: Install fpm and build dependencies
run: |
sudo apt-get install -y rubygems libarchive-tools rpm zstd
sudo gem install --no-document fpm
- name: Test fpm package
run: |
printf "::group::Build\n"
make dist/deb
printf "::endgroup::\n"
printf "::group::Install\n"
sudo apt-get install -y ./dist/mommy-*.deb
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
sudo apt-get purge -y mommy
printf "::endgroup::\n"
- name: Install Homebrew
run: |
NONINTERACTIVE=1 \
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: Checkout homebrew-mommy
uses: actions/checkout@v6
with:
repository: fwdekker/homebrew-mommy
path: homebrew-mommy
ref: dev
- name: Patch homebrew-mommy
working-directory: homebrew-mommy
env:
RELEVANT_URL: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
# Point the formula to the commit that is being tested in this workflow
sed -i -e "s|head \(.*\), branch: .*|head \"https://github.com/$RELEVANT_URL.git\", revision: \"$RELEVANT_SHA\"|g" mommy.rb
git -c user.name=ignore -c user.email=ignore commit -am ignore
- name: Test Homebrew package
run: |
printf "::group::Enable Homebrew\n"
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
mkdir -p "$HOME/.config/fish/"; printf "set -p fish_complete_path \"%s/share/fish/vendor_completions.d/\"\n" "$(brew --prefix)" >> "$HOME/.config/fish/config.fish"
printf "FPATH=\"%s/share/zsh/site-functions/:\$FPATH\"\n" "$(brew --prefix)" >> "$HOME/.zshrc"
printf "::endgroup::\n"
printf "::group::Install\n"
brew tap local/mommy "$(pwd)/homebrew-mommy"
brew install mommy --HEAD
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
brew uninstall mommy
brew untap local/mommy
printf "::endgroup::\n"
test-archlinux:
runs-on: ubuntu-latest
container: archlinux:latest
steps:
- name: Set up basic system
run: |
printf "::group::Update system\n"
pacman -Syu --noconfirm
printf "::endgroup::\n"
printf "::group::Install basic packages\n"
pacman -S --noconfirm --needed git base-devel
printf "::endgroup::\n"
printf "::group::Add non-privileged user to run makepkg\n"
useradd -m build
printf "build ALL=(ALL:ALL) NOPASSWD: ALL\n" >> /etc/sudoers
printf "::endgroup::\n"
- name: Install dependencies for mommy
run: |
printf "::group::Install man-db\n"
pacman -S --noconfirm man-db
sed -i "/NoExtract.*man/d" /etc/pacman.conf # Extract man pages
printf "::endgroup::\n"
printf "::group::Install ShellSpec\n"
git clone https://aur.archlinux.org/shellspec-git.git /tmp/shellspec-git
chown -R build:build /tmp/shellspec-git
cd /tmp/shellspec-git
sudo -u build makepkg -si --noconfirm
rm -rf /tmp/shellspec-git
cd -
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
pacman -S --noconfirm fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
- name: Checkout mommy
uses: actions/checkout@v6
with:
path: mommy
- name: Fix mommy directory ownership
run: chown -R build:build ./mommy/
- name: Test script
working-directory: ./mommy/
run: make test
- name: Install fpm
run: |
pacman -S --noconfirm ruby
gem install --no-document fpm erb
ln -s "$HOME/.local/share/gem/ruby/"*"/bin/fpm" /usr/local/bin/fpm # Symlink 'fpm' to latest version
- name: Test fpm package
working-directory: ./mommy/
run: |
printf "::group::Build\n"
make dist/pacman
printf "::endgroup::\n"
printf "::group::Install\n"
pacman -U --noconfirm ./dist/mommy*.pacman
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
pacman -R --noconfirm mommy
printf "::endgroup::\n"
- name: Checkout aur-mommy
uses: actions/checkout@v6
with:
repository: fwdekker/aur-mommy
path: aur-mommy
ref: dev
- name: Fix aur-mommy directory ownership
run: chown -R build:build ./aur-mommy/
- name: Test AUR package
working-directory: ./aur-mommy/
env:
RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
printf "::group::Patch\n"
sudo -u build ./update.sh "$RELEVANT_SHA"
printf "::endgroup::\n"
printf "::group::Build and install\n"
sudo -u build makepkg -si --noconfirm
printf "::endgroup::\n"
cd ../mommy/
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
pacman -R --noconfirm mommy
printf "::endgroup::\n"
test-fedora:
runs-on: ubuntu-latest
container: fedora:latest
steps:
- name: Set up basic system
run: |
printf "::group::Update system\n"
dnf -y update
printf "::endgroup::\n"
printf "::group::Install basic packages\n"
dnf -y install git make rpm-build util-linux-script
printf "::endgroup::\n"
- name: Install dependencies for mommy
run: |
printf "::group::Install man-db\n"
dnf -y install man-db
sed -i "/nodocs/d" /etc/dnf/dnf.conf # Extract man pages
printf "::endgroup::\n"
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
make -C /tmp/shellspec install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
dnf -y install fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
- name: Checkout mommy
uses: actions/checkout@v6
with:
# Checkout to subdirectory is required for 'pkg/rpkg/rpkg.conf' to correctly determine '${git_props:root}'
path: mommy
- name: Test script
working-directory: ./mommy/
run: make test
- name: Install fpm
run: |
dnf -y install rubygems
gem install --no-document fpm
- name: Test fpm package
working-directory: ./mommy/
run: |
printf "::group::Build\n"
make dist/rpm
printf "::endgroup::\n"
printf "::group::Install\n"
dnf -y install ./dist/mommy*.rpm
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
dnf -y remove mommy
printf "::endgroup::\n"
- name: Install rpkg
run: dnf -y install rpkg
- name: Test SRPM package
working-directory: ./mommy/
run: |
printf "::group::Build\n"
rpkg -p ./pkg/rpkg local # build srpm
rpmbuild --rebuild /tmp/rpkg/mommy-*/*.rpm
printf "::endgroup::\n"
printf "::group::Install\n"
dnf -y install "$HOME"/rpmbuild/RPMS/*/*.rpm
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
dnf -y remove mommy
printf "::endgroup::\n"
test-macos:
runs-on: macos-latest
steps:
- name: Install dependencies for mommy
run: |
printf "::group::Install ShellSpec\n"
brew tap shellspec/shellspec
brew install shellspec
printf "::endgroup::\n"
printf "::group::Install additional shell(s)\n"
curl -L -o /tmp/fish.pkg \
"$(curl -s -L https://fishshell.com/ | \
grep -m 1 -io "https://github\.com/fish-shell/fish-shell/releases/download/[a-z0-9/\.\-]*.pkg")"
sudo installer -pkg /tmp/fish.pkg -target /
rm /tmp/fish.pkg
printf "::endgroup::\n"
- name: Checkout
uses: actions/checkout@v6
- name: Test script
run: make test
- name: Install fpm
run: sudo gem install --no-document fpm
- name: Test fpm package
run: |
printf "::group::Build\n"
make dist/osxpkg
printf "::endgroup::\n"
printf "::group::Install\n"
sudo installer -pkg ./dist/mommy*+osx.pkg -target /
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
sudo make uninstall/osxpkg
printf "::endgroup::\n"
- name: Checkout homebrew-mommy
uses: actions/checkout@v6
with:
repository: fwdekker/homebrew-mommy
path: homebrew-mommy
ref: dev
- name: Patch homebrew-mommy
working-directory: homebrew-mommy
env:
RELEVANT_URL: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
# Point the formula to the commit that is being tested in this workflow
sed -i -e "s|head \(.*\), branch: .*|head \"https://github.com/$RELEVANT_URL.git\", revision: \"$RELEVANT_SHA\"|g" mommy.rb
git -c user.name=ignore -c user.email=ignore commit -am ignore
- name: Test Homebrew package
run: |
printf "::group::Configure shell completions for Brew\n"
mkdir -p "$HOME/.config/fish/"; printf "set -p fish_complete_path \"%s/share/fish/vendor_completions.d/\"\n" "$(brew --prefix)" >> "$HOME/.config/fish/config.fish"
printf "FPATH=\"%s/share/zsh/site-functions/:\$FPATH\"\n" "$(brew --prefix)" >> "$HOME/.zshrc"
printf "::endgroup::\n"
printf "::group::Install\n"
brew tap local/mommy "$(pwd)/homebrew-mommy"
brew install mommy --HEAD
printf "::endgroup::\n"
printf "::group::Test\n"
MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall\n"
brew uninstall mommy
brew untap local/mommy
printf "::endgroup::\n"
test-freebsd:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Test script and package
uses: cross-platform-actions/action@v0.30.0
with:
operating_system: freebsd
version: "14.3"
run: |
printf "::group::Install basic packages\n"
sudo pkg install -y git gmake
printf "::endgroup::\n"
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
sudo gmake -C /tmp/shellspec install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
sudo pkg install -y fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
# fpm
printf "::group::Install fpm: Actually install fpm\n"
sudo pkg install -y devel/ruby-gems
sudo gem install --no-document fpm
printf "::endgroup::\n"
# TODO[Workaround]: Remove after https://github.com/jordansissel/fpm/pull/1922 is merged
printf "::group::Install fpm: Install gtar\n"
sudo pkg install -y gtar
sudo mv /usr/bin/tar /usr/bin/bsdtar
sudo mv /usr/local/bin/gtar /usr/bin/tar
printf "::endgroup::\n"
# /fpm
printf "::group::Ignore ownership issues\n"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
printf "::endgroup::\n"
printf "::group::Test script\n"
gmake test
printf "::endgroup::\n"
printf "::group::Build package\n"
gmake dist/freebsd
printf "::endgroup::\n"
printf "::group::Install package\n"
sudo pkg add ./dist/mommy-*.freebsd
printf "::endgroup::\n"
printf "::group::Test package\n"
env MOMMY_SYSTEM=1 gmake test
printf "::endgroup::\n"
printf "::group::Uninstall package\n"
sudo pkg delete -y mommy
printf "::endgroup::\n"
test-netbsd:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Test script and package
uses: cross-platform-actions/action@v0.30.0
with:
operating_system: netbsd
version: "10.1"
run: |
export PATH="/usr/sbin:$PATH" # Add 'pkg_*' commands to path
export MOMMY_ZSH_SKIP=1 # 'script' does not have the '-q' option in NetBSD
printf "::group::Install basic packages\n"
sudo pkgin -y in git gmake mozilla-rootcerts-openssl
printf "::endgroup::\n"
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec/
sudo gmake -C /tmp/shellspec/ install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
sudo pkgin -y in fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
printf "::group::Ignore ownership issues\n"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
printf "::endgroup::\n"
printf "::group::Test script\n"
gmake test
printf "::endgroup::\n"
printf "::group::Build package\n"
gmake dist/netbsd
printf "::endgroup::\n"
printf "::group::Install package\n"
sudo pkg_add ./dist/mommy-*+netbsd.tgz
printf "::endgroup::\n"
printf "::group::Test package\n"
env MOMMY_SYSTEM=1 gmake test
printf "::endgroup::\n"
printf "::group::Uninstall package\n"
sudo pkg_delete mommy
printf "::endgroup::\n"
test-openbsd:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install dependencies for mommy && Test script && Build package && Test package
uses: cross-platform-actions/action@v0.30.0
with:
operating_system: openbsd
version: "7.8"
run: |
export MOMMY_ZSH_SKIP=1 # 'script' does not have the '-q' option in OpenBSD
printf "::group::Install basic packages\n"
sudo pkg_add git gmake
printf "::endgroup::\n"
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
sudo gmake -C /tmp/shellspec install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
sudo pkg_add fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
printf "::group::Install fpm\n"
sudo pkg_add "$(pkg_info -Q ruby | grep "^ruby-[0-9]" | tail -n 1)"
sudo /usr/local/bin/gem* install --no-document fpm
sudo ln -s "$(printf "%s\n" /usr/local/bin/fpm* | tr " " \\n | grep -E "[0-9]+$")" /usr/local/bin/fpm # Symlink 'fpm' to latest version
printf "::endgroup::\n"
printf "::group::Ignore ownership issues\n"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
printf "::endgroup::\n"
printf "::group::Test script\n"
gmake test
printf "::endgroup::\n"
printf "::group::Build package\n"
gmake dist/openbsd
printf "::endgroup::\n"
printf "::group::Install package\n"
sudo pkg_add -D unsigned ./dist/mommy-*+openbsd.tgz
printf "::endgroup::\n"
printf "::group::Test package\n"
env MOMMY_SYSTEM=1 gmake test
printf "::endgroup::\n"
printf "::group::Uninstall package\n"
sudo pkg_delete mommy
printf "::endgroup::\n"
test-windows:
runs-on: windows-latest
steps:
- name: Set up msys2
uses: msys2/setup-msys2@v2
with:
update: true
# Install basic package && Install additional shells
install: git make fish zsh
- name: Install dependencies for mommy
shell: msys2 {0}
run: |
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
make -C /tmp/shellspec install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Post-install additional shells\n"
touch "$HOME/.zshrc"
printf "::endgroup::\n"
- name: Checkout
uses: actions/checkout@v6
- name: Test script
shell: msys2 {0}
run: make test
- name: Install mommy
shell: msys2 {0}
run: make install
- name: Test installed mommy
shell: msys2 {0}
run: MOMMY_SYSTEM=1 make test
test-nixpkgs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Enable nix
uses: DeterminateSystems/nix-installer-action@main
- name: Enable cache
uses: DeterminateSystems/magic-nix-cache-action@main
- name: Build
run: |
nix build \
--impure \
--expr "(import <nixpkgs> {}).mommy.overrideAttrs (prev: { src = ./.; })"
test-haiku:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Test script and package
uses: cross-platform-actions/action@v0.30.0
with:
operating_system: haiku
version: "r1beta5"
run: |
export MOMMY_ZSH_SKIP=1 # Haiku does not have the 'script' command
printf "::group::Install ShellSpec\n"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
PREFIX="$HOME/config/non-packaged" make -C /tmp/shellspec install
rm -rf /tmp/shellspec
printf "::endgroup::\n"
printf "::group::Install additional shells\n"
pkgman install -y fish zsh
touch "$HOME/.zshrc"
printf "::endgroup::\n"
printf "::group::Ignore ownership issues\n"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
printf "::endgroup::\n"
printf "::group::Test script\n"
make test
printf "::endgroup::\n"
printf "::group::Build package\n"
make dist/haiku
printf "::endgroup::\n"
printf "::group::Install package\n"
pkgman install -y ./dist/mommy-*.hpkg
printf "::endgroup::\n"
printf "::group::Test package\n"
env MOMMY_SYSTEM=1 make test
printf "::endgroup::\n"
printf "::group::Uninstall package\n"
pkgman uninstall -y mommy
printf "::endgroup::\n"
test-solaris:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test script and package
uses: vmactions/solaris-vm@v1
with:
usesh: true
prepare: |
set -e
echo "::group::Update package list"
pkgutil -U
echo "::endgroup::"
echo "::group::Install basic packages"
pkgutil -y -i git gmake
echo "::endgroup::"
echo "::group::Install ShellSpec"
# `gmake install` does not work because Solaris' `find` works differently
git clone --depth=1 https://github.com/shellspec/shellspec.git
ln -s "$PWD/shellspec/shellspec" /usr/bin/shellspec
echo "::endgroup::"
echo "::group::Install additional shells"
pkgutil -y -i fish zsh
echo "::endgroup::"
echo "::group::Ignore ownership issues"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
echo "::endgroup::"
run: |
set -e
export MOMMY_FISH_SKIP=1 # Solaris' fish shell is completely botched
export MOMMY_ZSH_SKIP=1 # Solaris' `script` does not have `-c` option
echo "::group::Modify mommy for non-modern-POSIX compliance"
gsed -i -e "s/grep -E/egrep/g" src/main/sh/mommy
gsed -i -e "s/sed -i/gsed -i/g" GNUmakefile
echo "::endgroup::"
echo "::group::Test script"
gmake test
echo "::endgroup::"