1
0
mirror of https://git.code.sf.net/p/fuse-emulator/fuse-utils synced 2025-04-19 08:42:15 +03:00

Arki55/features/t9 GitHub build checks utils ==> master (#1)

* arki55/features/T9-github-build-checks-utils
build:  GitHub worflow files for building Fuse Utils on multiple platforms:

1) Linux, running on Ubuntu Latest
- Builds and packs Libspectrum with all libs enabled + real glib
- Builds Fuse Utils with previously built Libspectrum, which is saved as a workflow artefact
- Only one build configuration configured

2) Win 32, running on Windows latest, using Cygwin environment and libraries
- Builds and packs Libspectrum with all libs enabled + fake glib
- Builds Fuse Utils with previously built Libspectrum, which is saved as a workflow artefact
- Only one build configuration configured

3) MacOS, running on MacOS latest, using  brew libraries
- Build and packs Libspectrum with all libs enabled + real glib
- Builds Fuse Utils with previously built Libspectrum, which is saved as a workflow artefact
- Only one build configuration configured

Any compile errors stop workflow. Warnings while building do not. This might be changed later if needed.
This commit is contained in:
Miroslav Ďurčík 2023-03-08 21:48:20 +01:00 committed by GitHub
parent 659214ec55
commit bb96b0153f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 417 additions and 0 deletions

8
.github/scripts/in_config.sh vendored Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
echo "Looking for line '$1' .."
lines1=(`cat "./configure.out" | grep -c "$1"`)
if [[ "$lines1" -ne "1" ]]; then
echo "Error: Line $1 not found!"
exit 1
fi
echo "Line '$1' was found."

30
.github/workflows/build_linux.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Fuse Utils For Linux
run-name: Build Fuse Utils for Linux / ${{ github.actor }} /
# Executed upon each commit pushed, merge commit in PR
on: [push, pull_request]
jobs:
libspectrum:
# Reuse libspectrum's build wokflow and artefact (all libs enabled, real glib)
name: "Libspectrum lib (Linux)"
uses: arki55/fuse-libspectrum/.github/workflows/build_linux_sub.yml@arki55/github-workflows
with:
branch: arki55/github-workflows
key: fuse-utils
# repo name is taken from var.LIBSPECTRUM_REPO
#########################################
### SUPPORTED Linux configurations ###
#########################################
# Default build without any configure params
utils-default:
name: "Fuse Utils Default (Linux)"
needs: [libspectrum]
uses: ./.github/workflows/build_linux_sub.yml
with:
name: Default
dependencies: "libaudiofile-dev"
configure_params: ""

77
.github/workflows/build_linux_sub.yml vendored Normal file
View File

@ -0,0 +1,77 @@
# Reusable workflow for all Linux builds
name: Fuse Utils For Linux
run-name: Build Fuse Utils for Linux / ${{ github.actor }} /
on:
workflow_call:
inputs:
name:
type: string
required: true
dependencies:
type: string
required: false
default: ""
configure_params:
type: string
required: false
default: ""
jobs:
build:
name: Build Utils
runs-on: ubuntu-latest
timeout-minutes: 15
defaults:
run:
shell: bash
steps:
- name: (1) Install dependencies
if: ${{ inputs.dependencies }}
run: |
sudo apt-get update
sudo apt-get install -y ${{ inputs.dependencies }}
- name: (2) Check out repository code
uses: actions/checkout@v3
- name: (3) Download libspectrum artefact
uses: actions/download-artifact@v3
with:
name: libspectrum-installed-linux-fuse-utils
path: libspectrum
- name: (4) Install libspectrum from artefact
run: |
# Extract (-x) files into /usr/local
sudo tar --directory / -xvf libspectrum/libspectrum-installed-linux.tar
echo "Done"
- name: (5) Autogen.sh
run: ./autogen.sh
- name: (6) Configure for Linux
run: |
./configure ${{ inputs.configure_params }} \
|& tee ./configure.out
- name: (7) Verify output from configure
# Most of the tested strings are common for all Linux builds
run: |
.github/scripts/in_config.sh "The Fuse utils are ready to be compiled"
.github/scripts/in_config.sh "zlib support: yes"
.github/scripts/in_config.sh "libjpeg support: yes"
.github/scripts/in_config.sh "libpng support: yes"
.github/scripts/in_config.sh "libgcrypt support: yes"
.github/scripts/in_config.sh "libaudiofile support: yes"
.github/scripts/in_config.sh "libspectrum's internal GLib replacement: no"
- name: (7) Make
run: make
- name: (8) Install
run: sudo make install
- name: (9) Finish
run: |
echo "🍏 Finishing with status ${{ job.status }}."

30
.github/workflows/build_macos.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Fuse Utils For MacOS
run-name: Build Fuse Utils for MacOS / ${{ github.actor }} /
# Executed upon each commit pushed, merge commit in PR
on: [push, pull_request]
jobs:
libspectrum:
# Reuse libspectrum's build wokflow and artefact (all libs enabled, real glib)
name: "Libspectrum lib (MacOS)"
uses: arki55/fuse-libspectrum/.github/workflows/build_macos_sub.yml@arki55/github-workflows
with:
branch: arki55/github-workflows
key: fuse-utils
# repo name is taken from var.LIBSPECTRUM_REPO
#########################################
### SUPPORTED MacOS configurations ###
#########################################
# Default build without any configure params
utils-default:
name: "Fuse Utils Default (Utils)"
needs: [libspectrum]
uses: ./.github/workflows/build_macos_sub.yml
with:
name: Default
dependencies: ""
configure_params: ""

99
.github/workflows/build_macos_sub.yml vendored Normal file
View File

@ -0,0 +1,99 @@
# Reusable workflow for all MacOS builds
name: Fuse Utils For MacOS
run-name: Build Fuse Utils for MacOS / ${{ github.actor }} /
on:
workflow_call:
inputs:
name:
type: string
required: true
dependencies:
type: string
required: false
default: ""
configure_params:
type: string
required: false
default: ""
jobs:
build:
name: Build Utils
runs-on: macos-latest
timeout-minutes: 15
defaults:
run:
shell: bash
steps:
- name: (1) Prepare environment
run: |
echo -n "Current directory: "
pwd
ls -la
- name: (2) Check out repository code
uses: actions/checkout@v3
- name: (3) Install dependencies
run: |
echo "Inspect if brew installed .."
brew doctor || true
echo "Upgrade bash (fix |& ) .."
brew install bash
which -a bash
bash --version
sudo sh -c 'echo /usr/local/bin/bash >> /etc/shells'
echo "Installing dependencies .."
brew install \
automake \
audiofile \
bzip2 \
libgcrypt \
glib \
libxml2 \
${{ inputs.dependencies }}
autoreconf -i
- name: (4) Download libspectrum artefact
uses: actions/download-artifact@v3
with:
name: libspectrum-installed-macos-fuse-utils
path: libspectrum
- name: (5) Install libspectrum from artefact
run: |
# Extract (-x) files into /usr/local
sudo tar --directory / -xvf libspectrum/libspectrum-installed-macos.tar
echo "Done"
- name: (6) Autogen.sh
run: ./autogen.sh
- name: (7) Configure for MacOS
run: |
./configure ${{ inputs.configure_params }} \
|& tee ./configure.out
- name: (8) Verify output from configure
# Most of the tested strings are common for all MacOS builds
run: |
.github/scripts/in_config.sh "The Fuse utils are ready to be compiled"
.github/scripts/in_config.sh "zlib support: yes"
.github/scripts/in_config.sh "libjpeg support: yes"
.github/scripts/in_config.sh "libpng support: yes"
.github/scripts/in_config.sh "libgcrypt support: yes"
.github/scripts/in_config.sh "libaudiofile support: yes"
.github/scripts/in_config.sh "libspectrum's internal GLib replacement: no"
- name: (9) Make
run: make
- name: (10) Install
run: sudo make install
- name: (11) Finish
run: |
echo "🍏 Finishing with status ${{ job.status }}."

29
.github/workflows/build_windows.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: Fuse Utils For Windows
run-name: Build Fuse Utils for Windows / ${{ github.actor }} /
# Executed upon each commit pushed, merge commit in PR
on: [push, pull_request]
jobs:
libspectrum:
# Reuse libspectrum's build wokflow and artefact (all libs enabled, fake glib)
name: "Libspectrum lib (Windows)"
uses: arki55/fuse-libspectrum/.github/workflows/build_windows_sub.yml@arki55/github-workflows
with:
branch: arki55/github-workflows
key: fuse-utils
# repo name is taken from var.LIBSPECTRUM_REPO
########################################
### SUPPORTED Windows configurations ###
########################################
# Win32 / 1
utils-win32-default:
name: "Fuse Utils Default (Windows)"
needs: [libspectrum]
uses: ./.github/workflows/build_windows_sub.yml
with:
name: Default
dependencies: "mingw64-i686-libxml2"
configure_params: ""

144
.github/workflows/build_windows_sub.yml vendored Normal file
View File

@ -0,0 +1,144 @@
# Reusable workflow for all Windows builds
name: Fuse Utils For Windows
run-name: Build Fuse Utils for windows / ${{ github.actor }} /
on:
workflow_call:
inputs:
name:
type: string
required: true
dependencies:
type: string
required: false
default: ""
configure_params:
type: string
required: false
default: ""
jobs:
build:
name: Build Utils
runs-on: windows-latest
timeout-minutes: 15
env:
CYGWIN_NOWINPATH: 1
# Custom build libraries
CPPFLAGS: "-I/usr/local/i686-w64-mingw32/include"
LDFLAGS: "-L/usr/local/i686-w64-mingw32/lib"
PKG_CONFIG_LIBDIR: "/usr/local/i686-w64-mingw32/lib/pkgconfig:/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig"
steps:
- name: (1) Prepare environment
run: |
cd ${GITHUB_WORKSPACE}
echo "Adjust autocrlf in git.."
git config --global core.autocrlf input
echo -n "Current directory: "
pwd
ls -la
shell: bash
- name: (2) Check out repository code
uses: actions/checkout@v3
- name: (3) Install Cygwin (32 bit) with libs
uses: cygwin/cygwin-install-action@master
with:
platform: x86
packages: |
autoconf \
automake \
bison \
flex \
gcc-core \
gcc-g++ \
gettext-devel \
libtool \
make \
mingw64-i686-bzip2 \
mingw64-i686-gcc-core \
mingw64-i686-gcc-g++ \
mingw64-i686-libgcrypt \
mingw64-i686-libgpg-error \
mingw64-i686-libjpeg-turbo \
mingw64-i686-libpng \
mingw64-i686-win-iconv \
mingw64-i686-winpthread \
mingw64-i686-zlib \
mingw64-i686-audiofile \
pkg-config \
${{ inputs.dependencies }}
- name: (4) Download libspectrum artefact
uses: actions/download-artifact@v3
with:
name: libspectrum-installed-windows-fuse-utils
path: libspectrum
- name: (5) Install libspectrum from artefact
run: |
cd ${GITHUB_WORKSPACE}
# Extract (-x) files into /usr/local (cannot work with root /)
mkdir /usr/local/i686-w64-mingw32 || true
tar --directory /usr/local/i686-w64-mingw32 -xvf libspectrum/libspectrum-installed-windows.tar
echo "Done"
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: (6) Autogen.sh
run: |
cd ${GITHUB_WORKSPACE}
echo "Running autogen.sh .."
./autogen.sh
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: (7) Configure for Windows
run: |
cd ${GITHUB_WORKSPACE}
echo "Running configure .."
./configure \
--build=i686-pc-cygwin \
--host=i686-w64-mingw32 \
--prefix=/usr/local/i686-w64-mingw32 \
--disable-static \
${{ inputs.configure_params }} \
|& tee ./configure.out
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: (8) Verify output from configure
# Most of the tested strings are common for all Windows builds
run: |
cd ${GITHUB_WORKSPACE}
.github/scripts/in_config.sh "The Fuse utils are ready to be compiled"
.github/scripts/in_config.sh "zlib support: yes"
.github/scripts/in_config.sh "libjpeg support: yes"
.github/scripts/in_config.sh "libpng support: yes"
.github/scripts/in_config.sh "libgcrypt support: yes"
.github/scripts/in_config.sh "libaudiofile support: yes"
.github/scripts/in_config.sh "libspectrum's internal GLib replacement: yes"
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: (9) Make
run: |
cd ${GITHUB_WORKSPACE}
echo "Running make .."
make
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: (10) Install
run: |
cd ${GITHUB_WORKSPACE}
echo "Running make dist-win32-dir .."
make install dist-win32-dir
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: (11) Finish
run: |
echo "🍏 Finishing with status ${{ job.status }}."