Skip to content

Commit

Permalink
Merge branch '4170_github_ci'
Browse files Browse the repository at this point in the history
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
  • Loading branch information
zyv committed Nov 1, 2024
2 parents 4bd73a7 + 61909fa commit 494aeab
Show file tree
Hide file tree
Showing 53 changed files with 698 additions and 374 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/ci-alpine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: ci-alpine

on:
workflow_call:

jobs:
build-alpine:
runs-on: ubuntu-latest
container:
image: alpine:latest
timeout-minutes: 5

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
apk add autoconf automake build-base libtool pkgconf sudo
apk add aspell-dev check-dev e2fsprogs-dev gettext-dev glib-dev gpm-dev libssh2-dev perl slang-dev
- name: Bootstrap build system
run: ./autogen.sh

- name: Build default configuration
run: |
adduser --home "$(pwd)" --no-create-home --disabled-password test
chown -R test "$(pwd)"
su - test -c ' \
./configure \
--prefix="$(pwd)/install-prefix" \
--enable-mclib \
--enable-aspell \
--enable-werror \
&& \
\
make -j$(nproc) && \
make check && \
make install \
'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-alpine
path: ./**/test-suite.log
53 changes: 53 additions & 0 deletions .github/workflows/ci-fedora.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: ci-fedora

on:
workflow_call:

jobs:
build-fedora:
runs-on: ubuntu-latest
container:
image: fedora:latest
timeout-minutes: 5

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
dnf install -y autoconf automake gcc gettext-devel groff libtool make pkgconfig
dnf install -y aspell-devel check-devel gpm-devel libX11-devel "pkgconfig(ext2fs)" "pkgconfig(glib-2.0)" "pkgconfig(gmodule-2.0)" "pkgconfig(libssh2)" "pkgconfig(slang)"
# For tests
dnf install -y glibc-gconv-extra util-linux
- name: Lint documentation
working-directory: maint
run: ./doctest

- name: Bootstrap build system
run: ./autogen.sh

- name: Build default configuration
run: |
useradd --home "$(pwd)" test
chown -R test "$(pwd)"
su - test -c ' \
./configure \
--prefix="$(pwd)/install-prefix" \
--enable-mclib \
--enable-aspell \
--enable-werror \
&& \
\
make -j$(nproc) && \
make check && \
make install \
'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-fedora
path: ./**/test-suite.log
54 changes: 54 additions & 0 deletions .github/workflows/ci-freebsd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: ci-freebsd

on:
workflow_call:
inputs:
CFLAGS:
description: 'Custom CFLAGS'
default: ''
required: false
type: string

jobs:
build-freebsd:
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- uses: actions/checkout@v4

- name: Build on FreeBSD
uses: vmactions/freebsd-vm@v1
with:
prepare: |
pkg install -y autoconf automake gettext libtool pkgconf
pkg install -y aspell check glib libssh2 libX11
run: |
./autogen.sh
pw useradd test -d "$(pwd)"
chown -R test $(pwd)
su - test -c ' \
\
export CFLAGS="${{ inputs.CFLAGS }}" && \
\
./configure \
--prefix="$(pwd)/install-prefix" \
--with-screen=ncurses \
--enable-mclib \
--enable-aspell \
--enable-werror \
&& \
\
make && \
make check && \
make install \
'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-freebsd
path: ./**/test-suite.log
47 changes: 47 additions & 0 deletions .github/workflows/ci-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: ci-macos

on:
workflow_call:
inputs:
CFLAGS:
description: 'Custom CFLAGS'
default: ''
required: false
type: string

jobs:
build-macos:
runs-on: macos-latest
timeout-minutes: 5

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
brew install autoconf automake gettext check gnu-indent libtool pkg-config
brew install aspell e2fsprogs glib libssh2 openssl s-lang
# unzip is part of the base system
- name: Bootstrap build system
run: ./autogen.sh

- name: Build default configuration
run: |
export CFLAGS="${{ inputs.CFLAGS }}"
./configure \
--prefix="$(pwd)/install-prefix" \
--enable-mclib \
--enable-aspell=/opt/homebrew
make -j$(sysctl -n hw.logicalcpu)
make check
make install
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-macos
path: ./**/test-suite.log
48 changes: 48 additions & 0 deletions .github/workflows/ci-solaris.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: ci-solaris

on:
workflow_call:

jobs:
build-solaris:
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- uses: actions/checkout@v4

- name: Build on Solaris
uses: vmactions/solaris-vm@v1
with:
release: "11.4-gcc" # autoconf automake developer/gcc/gcc-c libtool pkg-config
prepare: |
pkg install --no-backup-be --no-refresh --accept -v \
aspell check glib2 libssh2 libx11
run: |
./autogen.sh
useradd -d "$(pwd)" test
chown -R test $(pwd)
su - test -c ' \
export PKG_CONFIG_PATH=/usr/lib/64/pkgconfig && \
\
./configure \
--prefix="$(pwd)/install-prefix" \
--with-screen=ncurses \
--enable-mclib \
--enable-aspell \
--enable-werror \
&& \
\
make && \
make check && \
make install \
'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-solaris
path: ./**/test-suite.log
100 changes: 100 additions & 0 deletions .github/workflows/ci-ubuntu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: ci-ubuntu

on:
workflow_call:

jobs:
build-ubuntu:
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get install -y autoconf autopoint check gettext indent libtool pkg-config
sudo apt-get install -y e2fslibs-dev libaspell-dev libglib2.0-dev libgpm-dev libncurses5-dev libpcre2-dev libslang2-dev libssh2-1-dev libx11-dev unzip
- name: Bootstrap build system
run: ./autogen.sh

- name: Build distribution archive
run: |
mkdir -p build-distrib && cd $_
../configure
make dist-bzip2
- name: Build full configuration
run: |
tar -xjf $(ls build-distrib/mc-*.tar.bz2) --one-top-level=build-full
cd build-full
../configure \
--prefix="$(pwd)/install" \
--enable-mclib \
--enable-aspell \
--enable-vfs-undelfs \
--enable-werror
make indent
# TODO: exit 1
git ls-files --modified
make -j$(nproc)
make check
make install
- name: Build ncurses & pcre2 configuration
run: |
tar -xjf $(ls build-distrib/mc-*.tar.bz2) --one-top-level=build-ncurses
cd build-ncurses
../configure \
--prefix="$(pwd)/install" \
--with-screen=ncurses \
--with-search-engine=pcre2 \
--enable-werror
make -j$(nproc)
make check
- name: Build minimal configuration
run: |
tar -xjf $(ls build-distrib/mc-*.tar.bz2) --one-top-level=build-minimal
cd build-minimal
../configure \
--prefix="$(pwd)/install" \
--disable-shared \
--disable-static \
--disable-maintainer-mode \
--disable-largefile \
--disable-nls \
--disable-rpath \
--disable-charset \
--disable-mclib \
--disable-assert \
--disable-aspell \
--disable-background \
--disable-vfs \
--disable-doxygen-doc \
--without-x \
--without-gpm-mouse \
--without-internal-edit \
--without-diff-viewer \
--without-subshell \
--enable-tests \
--enable-werror
make -j$(nproc)
make check
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-ubuntu
path: build-*/**/test-suite.log

34 changes: 34 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: CI
on: [ push, pull_request ]

jobs:
call-build-ubuntu:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
uses: ./.github/workflows/ci-ubuntu.yml

call-build-fedora:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
uses: ./.github/workflows/ci-fedora.yml

call-build-alpine:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
uses: ./.github/workflows/ci-alpine.yml

call-build-macos:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
uses: ./.github/workflows/ci-macos.yml
with:
# https://github.com/llvm/llvm-project/issues/20574
CFLAGS: -Wno-assign-enum

call-build-solaris:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
uses: ./.github/workflows/ci-solaris.yml

call-build-freebsd:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
uses: ./.github/workflows/ci-freebsd.yml
with:
# https://github.com/llvm/llvm-project/issues/20574
# https://github.com/GNUAspell/aspell/pull/651
CFLAGS: -Wno-assign-enum -Wno-strict-prototypes
Loading

0 comments on commit 494aeab

Please sign in to comment.