Skip to content

Automatic Checks for nfssext v2 #68

Automatic Checks for nfssext v2

Automatic Checks for nfssext v2 #68

# nfssext-autochecks-v2.yml
# standard l3build testing for packages in nfssext repo
# https://github.com/latex3/hyperref/blob/adc36adbc3650db73329469b43afb0ee86e3c807/.github/workflows/main.yaml
# https://github.com/josephwright/siunitx/blob/main/.github/workflows/main.yaml
name: Automatic Checks for nfssext v2
on:
# Triggers the workflow on push request events for all branches if changes are not confined to excluded paths
push:
branches:
# - "*"
# - "*workflow"
- '*'
paths:
- '**'
- '!**.md'
- '!**.txt'
- '!.github/workflows/*.yml'
- '!.github/actions/**'
- '.github/workflows/nfssext-autochecks-v2.yml'
- '.github/actions/nfssext-autocheck-action/**'
- '!licences/**'
- '!test/**'
# Triggers the workflow on pull request events for all branches
pull_request:
branches:
- "*"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# addaswyd o https://github.com/latex3/latex2e/blob/develop/.github/workflows/main.yaml
# update TL tree if needed
texlive-cache:
runs-on: ubuntu-latest
name: Update TeX Live cache
outputs:
cache_key: ${{ steps.texlive.outputs.cache_key }}
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install TeX Live
id: texlive
uses: zauguin/install-texlive@v4
with:
package_file: .github/tl_packages
clm:
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
name: "Test build: cfr-lm"
needs: texlive-cache
# nfssext-cfr uses cfr-lm (though it falls back if built first)
# cfr-lm uses nfssext-cfr but there's nothing to build
outputs:
# clm_cache_key: $(( steps.clm-cache.outputs.cache_key }}
clm_cache_key: clm-${{ github.sha }}-${{ needs.texlive-cache.outputs.cache_key }}
lookup_clm_output: ${{ steps.clm-lookup.outputs.cache-hit }}
fnttarg_clm_output: ${{ steps.build-clm.outputs.fnttarg_ret }}
ctan_clm_output: ${{ steps.build-clm.outputs.ctan_ret }}
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Restore clm from cache
id: clm-lookup
uses: actions/cache/restore@v5
with:
path: ~/work/nfssext/nfssext/cfr-lm/keep
lookup-only: true
fail-on-cache-miss: false
key: clm-${{ github.sha }}-${{ needs.texlive-cache.outputs.cache_key }}
- name: Build fnttarg and ctan
if: ${{ !cancelled() && steps.clm-lookup.outputs.cache-hit != 'true' }}
id: build-clm
uses: ./.github/actions/nfssext-autocheck-action
with:
module: clm
working_directory: cfr-lm
pre_target: fnttarg
texlive_cache_key: ${{ needs.texlive-cache.outputs.cache_key }}
- name: Cache build results
# run only if fnttarg build succeeded
if: ${{ !cancelled() && steps.build-clm.outputs.fnttarg_ret && steps.clm-lookup.outputs.cache-hit != 'true' }}
id: clm-cache
uses: actions/cache/save@v4
with:
path: ~/work/nfssext/nfssext/cfr-lm/keep
key: clm-${{ github.sha }}-${{ needs.texlive-cache.outputs.cache_key }}
- name: Generate exit code
if: ${{ !cancelled() }}
id: clm-exit
shell: bash
env:
clmlookup: ${{ steps.clm-lookup.outputs.cache-hit }}
clmbuildret: ${{ steps.build-clm.outputs.fnttarg_ret }}
clmcache: ${{ steps.clm-cache.outcome }}
run: |
allan=0
([[ $clmlookup != 'true' ]] && [[ $clmbuildret != 0 || $clmcache == 'failure' ]]) && allan=1
exit $allan
# addaswyd o https://github.com/latex3/latex2e/blob/develop/.github/workflows/main.yaml
# these do not depend on clm
nfssext:
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
needs: texlive-cache
outputs:
fnttarg_baskervaldadf_output: ${{ steps.save-outputs.outputs.fnttarg_ret_baskervaldadf }}
fnttarg_berenisadf_output: ${{ steps.save-outputs.outputs.fnttarg_ret_berenisadf }}
fnttarg_electrumadf_output: ${{ steps.save-outputs.outputs.fnttarg_ret_electrumadf }}
fnttarg_librisadf_output: ${{ steps.save-outputs.outputs.fnttarg_ret_librisadf }}
fnttarg_romandeadf_output: ${{ steps.save-outputs.outputs.fnttarg_ret_romandeadf }}
fnttarg_venturisadf_output: ${{ steps.save-outputs.outputs.fnttarg_ret_venturisadf }}
ctan_baskervaldadf_output: ${{ steps.save-outputs.outputs.ctan_ret_baskervaldadf }}
ctan_berenisadf_output: ${{ steps.save-outputs.outputs.ctan_ret_berenisadf }}
ctan_electrumadf_output: ${{ steps.save-outputs.outputs.ctan_ret_electrumadf }}
ctan_librisadf_output: ${{ steps.save-outputs.outputs.ctan_ret_librisadf }}
ctan_romandeadf_output: ${{ steps.save-outputs.outputs.ctan_ret_romandeadf }}
ctan_venturisadf_output: ${{ steps.save-outputs.outputs.ctan_ret_venturisadf }}
# don't abandon other builds if one module fails
# continue-on-error: true
strategy:
fail-fast: false
matrix:
# include indicates that we want to set explicitly these combinations
# and don't want full matrix testing.
include:
- module: baskervaldadf
working_directory: arkandis/baskervaldadf
pre_target: fnttarg
- module: berenisadf
working_directory: arkandis/berenisadf
# berenis needs make, ff
extra_packages: make fontforge
pre_target: fnttarg
- module: electrumadf
working_directory: arkandis/electrumadf
pre_target: fnttarg
- module: librisadf
working_directory: arkandis/librisadf
pre_target: fnttarg
- module: romandeadf
working_directory: arkandis/romandeadf
pre_target: fnttarg
- module: venturisadf
working_directory: arkandis/venturisadf
pre_target: fnttarg
name: "Test build: ${{ matrix.module }}"
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Build fnttarg and ctan
id: build
uses: ./.github/actions/nfssext-autocheck-action
with:
extra_packages: ${{ matrix.extra_packages }}
module: ${{ matrix.module }}
pre_target: ${{ matrix.pre_target }}
texlive_cache_key: ${{ needs.texlive-cache.outputs.cache_key }}
working_directory: ${{ matrix.working_directory }}
- name: Save fnttarg and ctan build results
if: ${{ !cancelled() }}
id: save-outputs
shell: bash
env:
BUILD_RET: ${{ steps.build.outputs.fnttarg_ret }}
CTAN_RET: ${{ steps.build.outputs.ctan_ret }}
run: |
module="${{ matrix.module }}"
echo -e "fnttarg_ret_${module}=${BUILD_RET}" >> "$GITHUB_OUTPUT"
echo -e "ctan_ret_${module}=${CTAN_RET}" >> "$GITHUB_OUTPUT"
cat "$GITHUB_OUTPUT"
allan=0
([[ ${BUILD_RET} != 0 || ${CTAN_RET} != 0 ]]) && allan=1
exit $allan
# addaswyd o https://github.com/latex3/latex2e/blob/develop/.github/workflows/main.yaml
# need cfr-lm
nfssext-needy:
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
needs: [ texlive-cache, clm ]
outputs:
fnttarg_adforn_output: ${{ steps.save-outputs.outputs.fnttarg_ret_adforn }}
fnttarg_adfsymbols_output: ${{ steps.save-outputs.outputs.fnttarg_ret_adfsymbols }}
ctan_adforn_output: ${{ steps.save-outputs.outputs.ctan_ret_adforn }}
ctan_adfsymbols_output: ${{ steps.save-outputs.outputs.ctan_ret_adfsymbols }}
ctan_fontscripts_output: ${{ steps.save-outputs.outputs.ctan_ret_fontscripts }}
ctan_nfssext_cfr_output: ${{ steps.save-outputs.outputs.ctan_ret_nfssext-cfr }}
# don't abandon other builds if one module fails
# continue-on-error: true
strategy:
fail-fast: false
matrix:
# include indicates that we want to set explicitly these combinations
# and don't want full matrix testing.
include:
- module: adforn
working_directory: arkandis/adforn
pre_target: fnttarg
extra_needs: clm
- module: adfsymbols
working_directory: arkandis/adfsymbols
pre_target: fnttarg
extra_needs: clm
- module: fontscripts
working_directory: fontscripts
extra_needs: clm
- module: nfssext-cfr
working_directory: nfssext-cfr
extra_needs: clm
name: "Test build: ${{ matrix.module }}"
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Build fnttarg and ctan
id: build
uses: ./.github/actions/nfssext-autocheck-action
with:
dep_cache_key: ${{ needs.clm.outputs.clm_cache_key }}
extra_needs: ${{ matrix.extra_needs }}
# extra_packages: ${{ matrix.extra_packages }}
module: ${{ matrix.module }}
pre_target: ${{ matrix.pre_target }}
texlive_cache_key: ${{ needs.texlive-cache.outputs.cache_key }}
working_directory: ${{ matrix.working_directory }}
- name: Save fnttarg and ctan build results
if: ${{ !cancelled() }}
id: save-outputs
shell: bash
env:
BUILD_RET: ${{ steps.build.outputs.fnttarg_ret }}
CTAN_RET: ${{ steps.build.outputs.ctan_ret }}
run: |
module="${{ matrix.module }}"
pretarget="${{ matrix.pre_target }}"
[[ "$pretarget" != "" ]] && echo -e "fnttarg_ret_${module}=${BUILD_RET}" >> "$GITHUB_OUTPUT"
echo -e "ctan_ret_${module}=${CTAN_RET}" >> "$GITHUB_OUTPUT"
cat "$GITHUB_OUTPUT"
allan=0
[[ ${CTAN_RET} != 0 ]] && allan=1
[[ ${BUILD_RET} != 0 && "$pretarget" != "" ]] && allan=1
exit $allan
summary:
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
needs: [ clm, nfssext, nfssext-needy ]
name: nfssext summary
steps:
- name: nfssext autochecks summary
shell: bash
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs
env:
fnttargclm: ${{ needs.clm.outputs.fnttarg_clm_output }}
ctanclm: ${{ needs.clm.outputs.ctan_clm_output }}
lookupclm: ${{ needs.clm.outputs.lookup_clm_output }}
fnttargbaskervaldadf: ${{ needs.nfssext.outputs.fnttarg_baskervaldadf_output }}
fnttargberenisadf: ${{ needs.nfssext.outputs.fnttarg_berenisadf_output }}
fnttargelectrumadf: ${{ needs.nfssext.outputs.fnttarg_electrumadf_output }}
fnttarglibrisadf: ${{ needs.nfssext.outputs.fnttarg_librisadf_output }}
fnttargromandeadf: ${{ needs.nfssext.outputs.fnttarg_romandeadf_output }}
fnttargventurisadf: ${{ needs.nfssext.outputs.fnttarg_venturisadf_output }}
ctanbaskervaldadf: ${{ needs.nfssext.outputs.ctan_baskervaldadf_output }}
ctanberenisadf: ${{ needs.nfssext.outputs.ctan_berenisadf_output }}
ctanelectrumadf: ${{ needs.nfssext.outputs.ctan_electrumadf_output }}
ctanlibrisadf: ${{ needs.nfssext.outputs.ctan_librisadf_output }}
ctanromandeadf: ${{ needs.nfssext.outputs.ctan_romandeadf_output }}
ctanventurisadf: ${{ needs.nfssext.outputs.ctan_venturisadf_output }}
fnttargadforn: ${{ needs.nfssext-needy.outputs.fnttarg_adforn_output }}
fnttargadfsymbols: ${{ needs.nfssext-needy.outputs.fnttarg_adfsymbols_output }}
ctanadforn: ${{ needs.nfssext-needy.outputs.ctan_adforn_output }}
ctanadfsymbols: ${{ needs.nfssext-needy.outputs.ctan_adfsymbols_output }}
ctanfontscripts: ${{ needs.nfssext-needy.outputs.ctan_fontscripts_output }}
ctannfssextcfr: ${{ needs.nfssext-needy.outputs.ctan_nfssext_cfr_output }}
run: |
allan=0
clmres=1
[[ $lookupclm == 'true' ]] && clmres=0
[[ $fnttargclm == 0 && $ctanclm == 0 ]] && clmres=0
# ([[ $clmres != 0 || $fnttargbaskervaldadf != 0 || $fnttargberenisadf != 0 || $fnttargelectrumadf != 0 || $fnttarglibrisadf != 0 || $fnttargromandeadf != 0 || $fnttargventurisadf != 0 || $ctanbaskervaldadf != 0 || $ctanberenisadf != 0 || $ctanelectrumadf != 0 || $ctanlibrisadf != 0 || $ctanromandeadf != 0 || $ctanventurisadf != 0 ]]) && allan=1
([[ $clmres != 0 || $fnttargbaskervaldadf != 0 || $fnttargberenisadf != 0 || $fnttargelectrumadf != 0 || $fnttarglibrisadf != 0 || $fnttargromandeadf != 0 || $fnttargventurisadf != 0 || $ctanbaskervaldadf != 0 || $ctanberenisadf != 0 || $ctanelectrumadf != 0 || $ctanlibrisadf != 0 || $ctanromandeadf != 0 || $ctanventurisadf != 0 || $fnttargadforn != 0 || $fnttargadfsymbols != 0 || $ctanadforn != 0 || $ctanadfsymbols != 0 || $ctanfontscripts != 0 || $ctannfssextcfr != 0 ]]) && allan=1
echo "Summary status: $allan"
echo -e "BUILD_RET=${allan}" >> "$GITHUB_OUTPUT"
exit "$allan"
# vim: sw=2:et:ts=2: