Skip to content

[2.4] GitHub CI: Add Alpine and openSUSE; run netatalk after installing #2173

[2.4] GitHub CI: Add Alpine and openSUSE; run netatalk after installing

[2.4] GitHub CI: Add Alpine and openSUSE; run netatalk after installing #2173

Workflow file for this run

name: Checks
on:
push:
branches:
- main
- branch-*
paths-ignore:
- 'CONTRIBUTORS'
- 'NEWS'
pull_request:
branches:
- main
- branch-*
types:
- opened
- synchronize
- reopened
paths-ignore:
- 'CONTRIBUTORS'
- 'NEWS'
env:
APT_PACKAGES: |
autoconf \
automake \
docbook-xsl \
libacl1-dev \
libavahi-client-dev \
libcrack2-dev \
libcups2-dev \
libdb-dev \
libgcrypt-dev \
libkrb5-dev \
libldap2-dev \
libltdl-dev \
libpam0g-dev \
libssl-dev \
libtirpc-dev \
libtool \
libtool-bin \
libwrap0-dev \
meson \
ninja-build \
quota \
tcpd \
xsltproc
jobs:
build-alpine:
name: Alpine Linux
runs-on: ubuntu-22.04
container:
image: alpine:latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
apk add \
acl-dev \
autoconf \
automake \
avahi-dev \
build-base \
cracklib \
cracklib-dev \
cracklib-words \
cups \
cups-dev \
curl \
db-dev \
gcc \
krb5-dev \
libgcrypt-dev \
libtirpc-dev \
libtool \
linux-pam-dev \
meson \
ninja \
openldap-dev \
openrc \
openssl-dev \
pkgconfig
- name: Autotools - Bootstrap
run: ./bootstrap
- name: Autotools - Configure
run: |
./configure \
--enable-krbV-uam \
--enable-openrc \
--enable-pgp-uam \
--with-cracklib \
--with-libtirpc
- name: Autotools - Build
run: make -j $(nproc)
- name: Autotools - Run tests
run: make check
- name: Autotools - Install
run: make install
- name: Autotools - Uninstall
run: make uninstall
- name: Meson - Configure
run: |
meson setup build \
-Dbuild-tests=true \
-Denable-openrc=true
- name: Meson - Build
run: ninja -C build
- name: Meson - Run tests
run: cd build && meson test
- name: Meson - Install
run: ninja -C build install
- name: Meson - Uninstall
run: ninja -C build uninstall
build-debian:
name: Debian Linux
runs-on: ubuntu-22.04
container:
image: debian:latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
apt-get update
apt-get install --assume-yes --no-install-recommends ${{ env.APT_PACKAGES }}
- name: Autotools - Bootstrap
run: ./bootstrap
- name: Autotools - Configure
run: |
./configure \
--enable-debian \
--enable-krbV-uam \
--enable-pgp-uam \
--enable-quota \
--with-cracklib \
--with-libtirpc
- name: Autotools - Build
run: make -j $(nproc) all
- name: Autotools - Run tests
run: make check
- name: Autotools - Install
run: make install
- name: Autotools - Uninstall
run: make uninstall
- name: Meson - Configure
run: |
meson setup build \
-Dbuild-tests=true \
-Denable-debian=true \
-Dwith-libtirpc=true
- name: Meson - Build
run: ninja -C build
- name: Meson - Tests
run: cd build && meson test
- name: Meson - Install
run: ninja -C build install
- name: Meson - Uninstall
run: ninja -C build uninstall
build-fedora:
name: Fedora
runs-on: ubuntu-22.04
container:
image: fedora:latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
dnf --setopt=install_weak_deps=False --assumeyes install \
automake \
avahi-devel \
chkconfig \
cracklib-devel \
cups-devel \
file \
krb5-devel \
libacl-devel \
libdb-devel \
libgcrypt-devel \
libtool \
meson \
ninja-build \
openldap-devel \
openssl-devel
- name: Autotools - Bootstrap
run: ./bootstrap
- name: Autotools - Configure
run: |
./configure \
--enable-pgp-uam \
--enable-krbV-uam \
--enable-redhat \
--with-cracklib=/usr/share/cracklib
- name: Autotools - Build
run: make -j $(nproc) all
- name: Autotools - Run tests
run: make check
- name: Autotools - Install
run: sudo make install
- name: Autotools - Uninstall
run: sudo make uninstall
- name: Meson - Configure
run: |
meson setup build \
-Dbuild-tests=true \
-Dwith-libtirpc=true \
-Denable-redhat=true
- name: Meson - Build
run: ninja -C build
- name: Meson - Tests
run: cd build && meson test
- name: Meson - Install
run: sudo ninja -C build install
- name: Meson - Uninstall
run: sudo ninja -C build uninstall
build-macos:
name: macOS
runs-on: macos-latest
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install automake berkeley-db krb5 libressl libtool meson
- name: Autotools - Bootstrap
run: ./bootstrap
- name: Autotools - Configure
# Disable DDP in the absence of an AppleTalk stack on macOS
run: |
./configure \
--disable-ddp \
--enable-krbV-uam \
--enable-pgp-uam \
--with-bdb=/opt/homebrew/opt/berkeley-db \
--with-ssl-dir=/opt/homebrew/opt/libressl
- name: Autotools - Build
run: make -j $(nproc) all
- name: Autotools - Run tests
run: make check
- name: Autotools - Install
run: sudo make install
- name: Autotools - Uninstall
run: sudo make uninstall
- name: Meson - Configure
run: |
meson setup build \
-Dbuild-tests=true \
-Denable-macos=true \
-Dwith-bdb=/opt/homebrew/opt/berkeley-db \
-Dwith-ssl-dir=/opt/homebrew/opt/libressl
- name: Meson - Build
run: ninja -C build
- name: Meson - Tests
run: cd build && meson test
- name: Meson - Install
run: sudo ninja -C build install
- name: Meson - Uninstall
run: sudo ninja -C build uninstall
build-netbsd:
name: "NetBSD"
runs-on: ubuntu-22.04
permissions:
contents: read
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
- name: "Build on VM"
uses: vmactions/[email protected]
with:
release: "9.3"
copyback: false
prepare: |
pkg_add \
autoconf \
automake \
avahi \
db5 \
gcc13 \
gmake \
libcups \
libgcrypt \
libressl \
libtool \
meson \
pkg-config
run: |
set -e
echo "Building with Autotools"
./bootstrap
./configure \
--enable-krbV-uam \
--enable-netbsd \
--enable-pgp-uam \
--with-bdb=/usr/pkg \
--with-libgcrypt-dir=/usr/pkg \
MAKE=gmake \
PKG_CONFIG_PATH=/usr/pkg/lib/pkgconfig
gmake -j2 all
gmake install
service netatalk onestart
sleep 2
asip-status localhost
service netatalk onestop
echo "Building with Meson"
meson setup build \
-Dpkg_config_path=/usr/pkg/lib/pkgconfig \
-Denable-netbsd=true
ninja -C build
ninja -C build install
service netatalk onestart
sleep 2
asip-status localhost
service netatalk onestop
ninja -C build uninstall
build-opensuse:
name: openSUSE Linux
runs-on: ubuntu-22.04
container:
image: opensuse/tumbleweed:latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
zypper in -y \
automake \
file \
gawk \
gcc \
libtool \
make \
meson \
ninja \
pkg-config \
systemd \
wget &&
zypper in -y \
cracklib-devel \
glib2-devel \
krb5-devel \
libacl-devel \
libavahi-devel \
libdb-4_8-devel \
libgcrypt-devel \
libmariadb-devel \
libopenssl-devel \
libtdb-devel \
openldap2-devel \
pam-devel \
systemtap-sdt-devel \
tcpd-devel
- name: Autotools - Bootstrap
run: ./bootstrap
- name: Autotools - Configure
run: |
./configure \
--disable-install-privileged \
--enable-krbV-uam \
--enable-pgp-uam \
--with-cracklib \
--enable-systemd
- name: Autotools - Build
run: make -j $(nproc)
- name: Autotools - Run tests
run: make check
- name: Autotools - Install
run: make install
- name: Autotools - Uninstall
run: make uninstall
- name: Meson - Configure
run: |
meson setup build \
-Dbuild-tests=true
- name: Meson - Build
run: ninja -C build
- name: Meson - Run tests
run: cd build && meson test
- name: Meson - Install
run: ninja -C build install
- name: Meson - Uninstall
run: ninja -C build uninstall
build-solaris:
name: "Solaris"
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
- name: "Build on VM"
uses: vmactions/[email protected]
with:
release: 11.4
prepare: |
pkg install \
autoconf \
automake \
gcc \
libgcrypt \
libtool \
pkg-config
wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz --no-check-certificate
wget https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz --no-check-certificate
tar xvf autoconf-2.71.tar.gz
tar xvf automake-1.16.5.tar.gz
cd autoconf-2.71
./configure --prefix=/usr
make
make install
cd ../automake-1.16.5
./configure --prefix=/usr
make
make install
cd ..
run: |
set -e
echo "Building with Autotools"
./bootstrap
./configure \
MAKE=gmake \
--enable-cups=no
gmake -j $(nproc) all
gmake install
/etc/rc2.d/S90netatalk start
sleep 2
/usr/local/bin/asip-status localhost
sudo /etc/rc2.d/S90netatalk stop
gmake uninstall
build-ubuntu:
name: Ubuntu Linux
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install --assume-yes --no-install-recommends ${{ env.APT_PACKAGES }}
- name: Autotools - Bootstrap
run: ./bootstrap
- name: Autotools - Configure
run: |
./configure \
--enable-krbV-uam \
--enable-pgp-uam \
--enable-quota \
--enable-systemd \
--with-cracklib \
--with-libtirpc
- name: Autotools - Generate manual pages
run: make html
- name: Autotools - Build
run: make -j $(nproc) all
- name: Autotools - Run tests
run: make check
- name: Autotools - Run distribution tests
run: make distcheck
- name: Autotools - Install
run: sudo make install
- name: Start netatalk
run: sudo systemctl start afpd && sleep 2 && asip-status localhost
- name: Stop netatalk
run: sudo systemctl stop afpd
- name: Autotools - Uninstall
run: sudo make uninstall
- name: Meson - Configure
run: |
meson setup build \
-Dbuild-tests=true \
-Dbuild-manual=true \
-Denable-systemd=true \
-Dwith-libtirpc=true
- name: Meson - Build and generate man pages
run: ninja -C build
- name: Meson - Tests
run: cd build && meson test
- name: Meson - Distribution tests
run: cd build && meson dist
- name: Meson - Install
run: sudo ninja -C build install
- name: Start netatalk
run: sudo systemctl start afpd && sleep 2 && asip-status localhost
- name: Stop netatalk
run: sudo systemctl stop afpd
- name: Meson - Uninstall
run: sudo ninja -C build uninstall
static_analysis:
name: Static Analysis
runs-on: ubuntu-22.04
env:
# Directory where build-wrapper output will be placed
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory
# Run only if not originating from a fork
if: ${{ !github.event.pull_request.head.repo.fork }}
steps:
- uses: actions/checkout@v4
with:
# Shallow clones should be disabled for a better relevancy of analysis
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install --assume-yes --no-install-recommends ${{ env.APT_PACKAGES }}
- name: Install sonar-scanner and build-wrapper
uses: SonarSource/sonarcloud-github-c-cpp@v2
- name: Run build-wrapper
run: |
mkdir -p ${{ env.BUILD_WRAPPER_OUT_DIR }}
meson setup build \
-Denable-krbV-uam=enabled \
-Denable-pgp-uam=enabled \
-Dwith-libtirpc=true
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} ninja -C build
- name: Run sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"