This is an automated email from the git hooks/post-receive-user script. allura pushed a commit to branch master in repository fuse. View the commit online: https://sourceforge.net/p/fuse-emulator/fuse/ci/ef43aa1c64bcd2fb11c71ca4b3a7c208ba29d001/ commit ef43aa1c64bcd2fb11c71ca4b3a7c208ba29d001 Author: Miroslav Ďurčík / Arki55 <mir...@gm...> AuthorDate: Sun Feb 5 20:11:23 2023 +0100 arki55 / T9-github-build-checks build: Implemented full workflow for building Fuse APP on Linux. - It reuses build_linux.yml workflow from fuse libspectrum repository. - Split into 2 files : _build_linux_sub.yml with logic and steps for building main Fuse APP - checkout, configure, make, make install, etc. And build_linux with actually triggered workflow upon push and pull_request . - First step is to build libspectrum with its reusable workflow. FOr that purpose repo needs to define variable LIBSPECTRUM_REPO - address of libspectrum repo in github. - Libspectrum is built, all files zipped into artifact file, which is then loaded by build subprocess and its content installed (make install) - Libspectrum is built once, then all the dependant various LInux based configurations are built. - Each build variant provides its specific .configure params, what to verify in .configure output, etc. Supporting configurations: - Default built (no params for ./configure) - NULL UI - GTK 3 UI - SDL 1 UI - SDL 2 UI (only checks that it shows not supported yet) Deprecated UIs (as per official site): - GTK 2 UI - Frame Buffer UI - X UI --- .github/workflows/_build_linux_sub.yml | 98 ++++++++++++++++++++++++++++ .github/workflows/build_linux.yml | 116 +++++++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/.github/workflows/_build_linux_sub.yml b/.github/workflows/_build_linux_sub.yml new file mode 100644 index 00000000..d2b1f805 --- /dev/null +++ b/.github/workflows/_build_linux_sub.yml @@ -0,0 +1,98 @@ +# Reusable workflow for all Linux builds +name: Fuse App For Linux +run-name: Build Fuse App 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: "" + verify_ui: + type: string + required: true + verify_audio: + type: string + required: false + default: "oss" + verify_other: + type: string + required: false + default: "" + +jobs: + build: + name: Build App + 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-compiled-linux + path: libspectrum + + - name: (4) Install libspectrum from artefact + run: | + cd libspectrum + tar -xvf libspectrum-compiled-linux.tar + sudo make install-strip + cd .. + 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 + # Only the strings related to UI selection differ + run: | + .github/scripts/in_config.sh "Fuse options" + .github/scripts/in_config.sh "zlib support: yes" + .github/scripts/in_config.sh "libxml2 support: yes" + .github/scripts/in_config.sh "libpng support: yes" + .github/scripts/in_config.sh "Spectranet support: yes" + .github/scripts/in_config.sh "SpeccyBoot support: yes" + .github/scripts/in_config.sh "TTX2000 S support: yes" + .github/scripts/in_config.sh "Desktop integration: no" + + .github/scripts/in_config.sh "User interface: ${{ inputs.verify_ui }}" + .github/scripts/in_config.sh "Selected audio driver: ${{ inputs.verify_audio }}" + - if: ${{ inputs.verify_other }} + run: | + .github/scripts/in_config.sh "${{ inputs.verify_other }}" + + - name: (7) Make + run: make + + - name: (8) Install + run: sudo make install + + - name: (9) Finish + run: | + echo "🍏 Finishing with status ${{ job.status }}." diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml new file mode 100644 index 00000000..56f1f307 --- /dev/null +++ b/.github/workflows/build_linux.yml @@ -0,0 +1,116 @@ +name: Fuse App For Linux +run-name: Build Fuse App 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 + name: "Libspectrum lib (Linux)" + uses: arki55/fuse-libspectrum/.github/workflows/build_linux.yml@arki55/github-workflows + with: + branch: master + # repo name is taken from var.LIBSPECTRUM_REPO + + # Default build without any configure params (xlib) + default-ui: + name: "Fuse Default UI (Linux)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: Default + dependencies: "libaudiofile-dev" + configure_params: "" + verify_ui: "xlib" + +######################################### +### SUPPORTED Linux UI configurations ### +######################################### + + # NULL UI + null-ui: + name: "Fuse NULL UI (Linux)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: "NULL UI" + dependencies: "libaudiofile-dev" + configure_params: "--with-null-ui" + verify_ui: "null" + + # GTK 3 UI + gtk3-ui: + name: "Fuse GTK 3 UI (Linux)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: GTK3 UI + dependencies: "libaudiofile-dev gtk3.0 libgtk-3-dev" + configure_params: "--with-gtk" + verify_ui: "gtk" + verify_other: "Using GTK 3: yes" + + # SDL 1 UI + Sound + sdl1-ui: + name: "Fuse SDL 1 UI + sound (Linux)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: SDL1 UI + dependencies: "libaudiofile-dev libsdl1.2-dev" + configure_params: "--with-sdl --disable-sdl2" + verify_ui: "sdl" + verify_audio: "sdl" + verify_other: "Using SDL 2: no" + + # SDL 2 UI + Sound (not supported for UI yet) + sdl2-ui: + name: "Fuse SDL 2 UI + sound (Linux) (not supported yet)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: SDL2 UI (not supported yet) + dependencies: "libaudiofile-dev libsdl2-dev libsdl1.2-dev" + configure_params: "--with-sdl" + verify_ui: "sdl" + verify_audio: "sdl" + verify_other: "SDL 2 not supported for the UI, using SDL 1 instead" + +########################################## +### DEPRECATED Linux UI configurations ### +########################################## + + # FB UI (deprecated) + fb-ui: + name: "Fuse FB UI (Linux) (deprecated)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: "FB UI (deprecated)" + dependencies: "libaudiofile-dev libgpm-dev" + configure_params: "--with-fb" + verify_ui: "fb" + + # XLIB UI (deprecated) + xlib-ui: + name: "Fuse X-lib UI (Linux) (deprecated)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: X-lib UI (deprecated) + dependencies: "libaudiofile-dev" + configure_params: "--with-x" + verify_ui: "xlib" + + # GTK 2 UI (deprecated) + gtk2-ui: + name: "Fuse GTK 2 UI (Linux) (deprecated)" + needs: [libspectrum] + uses: ./.github/workflows/_build_linux_sub.yml + with: + name: GTK2 UI (deprecated) + dependencies: "libaudiofile-dev gtk2.0 libgtk2.0-dev" + configure_params: "--with-gtk --disable-gtk3" + verify_ui: "gtk" + verify_other: "Using GTK 3: no" |