tpv-gha-nunja | fs-7.1.7-htxhop @ 7.1.7_1st_preview #695
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CompileWindows | |
on: | |
workflow_dispatch: | |
inputs: | |
fstuple: | |
type: string | |
required: true | |
run-name: ${{ github.ref_name }} | ${{ fromJSON(inputs.fstuple).base }} @ ${{ fromJSON(inputs.fstuple).ref }} | |
defaults: | |
run: | |
shell: c:/PROGRA~1/Git/usr/bin/bash.exe --noprofile --norc -e -o pipefail {0} | |
# shell: c:\Program Files\Git\usr\bin\bash.exe --noprofile --norc -e -o pipefail {0} | |
# shell: C:\msys64\usr\bin\bash.exe --noprofile --norc -e -o pipefail {0} | |
env: | |
BASH_ENV: ${{ github.workspace }}\SHELL.env | |
jobs: | |
generate-bin: | |
runs-on: windows-2022 | |
steps: | |
- uses: humbletim/firestorm-gha/actions-node-script@tpv-gha-nunja | |
if: false | |
- uses: actions/cache@v4 | |
if: false | |
- name: link action | |
run: | | |
set -Euo pipefail | |
export gha_fsvr_dir=/d/a/_actions/humbletim/firestorm-gha/tpv-gha-nunja | |
export fsvr_dir=$PWD/fsvr | |
source $gha_fsvr_dir/util/gha.ht-ln.bash | |
ht-ln $gha_fsvr_dir $fsvr_dir | |
ht-ln $fsvr_dir/actions-node-script ./fsvr-action | |
export PATH="$PATH:/c/ProgramData/Chocolatey/bin" | |
echo '${{ inputs.fstuple }}' | jq -r 'to_entries[]|[.key,.value]|join("=")' | tee -a $GITHUB_ENV | |
- name: Generate SHELL.env | |
run: | | |
set -Euo pipefail | |
mkdir -pv env.d bin bin/pystuff cache repo build | |
export fsvr_dir=${fsvr_dir:-$PWD/fsvr} | |
export workspace=${GITHUB_WORKSPACE:-${workspace:-$PWD}} | |
$fsvr_dir/gha-generate-shell-env.sh | tee -a SHELL.env | |
function to-id() { cat | sed 's@[^-a-zA-Z0-9_.]@-@g' ; } | |
echo cache_id=$(echo "$base-$repo" | to-id) | tee -a env.d/gha-bootstrap.env | |
- name: postflight tests | |
run: | | |
set -Euo pipefail | |
echo cache_id=$cache_id | |
echo "PATH='$PATH'" | |
jq --version | |
python3 --version | |
- name: Populate local bin | |
uses: ./fsvr-action | |
with: | |
run: | | |
set -Euo pipefail | |
echo cache_id=$cache_id | |
test -d "$fsvr_dir" || exit 50 | |
test -n "$cache_id" || exit 51 | |
source $fsvr_dir/util/gha.cachette.bash | |
function generate_BASH_FUNC_invoke() { | |
source $fsvr_dir/bashland/gha.alias-exe.bash | |
BASH=$(cygpath -was $BASH) make-stub bin/BASH_FUNC_invoke.exe || return 90 | |
} | |
test -v GITHUB_ACTIONS && gha-cache-restore-fast $cache_id-BASH_FUNC_invoke bin/BASH_FUNC_invoke.exe || ( | |
generate_BASH_FUNC_invoke | |
test ! -v GITHUB_ACTIONS || gha-cache-save-fast $cache_id-BASH_FUNC_invoke bin/BASH_FUNC_invoke.exe || exit 89 | |
) | |
{ | |
$fsvr_dir/util/_utils.sh ht-ln bin/BASH_FUNC_invoke.exe bin/ht-ln.exe | |
ht-ln bin/BASH_FUNC_invoke.exe bin/hostname.exe | |
ht-ln bin/BASH_FUNC_invoke.exe bin/jq.exe | |
ht-ln bin/BASH_FUNC_invoke.exe bin/envsubst.exe | |
} || exit 86 | |
function xxtest_bin() { | |
test -f bin/parallel-home/will-cite || return 196 | |
parallel --version | head -1 || return 197 | |
ninja --version | head -1 || return 198 | |
[[ `hostname` =~ windows[-]?2022 ]] || return 199 | |
jq --version | head -1 || return 200 | |
which parallel.exe | |
which colout | |
which jq | |
} | |
function xxprovision_tools() {( | |
set -Euo pipefail | |
source $fsvr_dir/gha-bootstrap.sh | |
source $fsvr_dir/util/gha.literally-exists.bash | |
pysite="$(cygpath -m "$(python3 -msite --user-site)")" | |
literally-exists bin/ninja.exe || get_ninja || exit `_err $? "failed to provision ninja $?"` | |
literally-exists $pysite/colout || get_colout || exit `_err $? "failed to provision colout $?"` | |
literally-exists bin/parallel || get_parallel || exit `_err $? "failed to provision parallel $?"` | |
literally-exists bin/colout.exe || ht-ln bin/BASH_FUNC_invoke.exe bin/colout.exe | |
literally-exists bin/parallel.exe || ht-ln bin/BASH_FUNC_invoke.exe bin/parallel.exe | |
# note: autobuild is not necessary here, but viewer_manifest still depends on python-llsd | |
python -m pip install --no-warn-script-location --user llsd | |
)} | |
test -v GITHUB_ACTIONS && gha-cache-restore-fast $cache_id-bin-b bin || ( | |
xxprovision_tools || exit `_err $? "!xxprovision_tools"` | |
xxtest_bin || exit `_err $? "!xxtest_bin"` | |
test ! -v GITHUB_ACTIONS || gha-cache-save-fast $cache_id-bin-b bin || exit 85 | |
) | |
xxtest_bin || exit `_err $? "!xxtest_bin"` | |
python3 --version || exit 105 | |
- name: ~000 Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: failure() && fromJSON(inputs.fstuple).pause != 'never' | |
with: | |
limit-access-to-actor: true | |
windows-build: | |
needs: generate-bin | |
runs-on: windows-2022 | |
steps: | |
# no-ops that pre-populate upload-artifact, restore-only and save-only in /d/a/_actions/actions | |
- uses: actions/upload-artifact@v4 | |
if: false | |
- uses: actions/cache@v4 | |
if: false | |
- name: Output Inputs | |
run: | | |
echo '${{ github.event.inputs.fstuple }}' | |
echo '${{ fromJSON(github.event.inputs.fstuple) }}' | |
echo '${{ inputs.fstuple }}' | jq -r 'to_entries[]|[.key,.value]|join("=")' | tee -a $GITHUB_ENV | |
. $GITHUB_ENV | |
test -v base || exit 44 | |
test -v repo || exit 45 | |
test -v ref || exit 46 | |
- name: ~Clone | |
run: | | |
git clone --quiet --filter=tree:0 --single-branch --branch ${GITHUB_REF_NAME} https://github.com/${GITHUB_REPOSITORY} fsvr | |
echo "https://github.com/${GITHUB_REPOSITORY}/tree/$(git -C fsvr rev-parse --short HEAD)" > fsvr/.gha_source | |
source fsvr/util/gha.ht-ln.bash | |
ht-ln fsvr/actions-node-script ./fsvr-action | |
- name: Generate SHELL.env | |
run: | | |
set -Euo pipefail | |
mkdir -pv env.d bin bin/pystuff cache repo build | |
export fsvr_dir=${fsvr_dir:-$PWD/fsvr} | |
export workspace=${GITHUB_WORKSPACE:-${workspace:-$PWD}} | |
$fsvr_dir/gha-generate-shell-env.sh | tee -a SHELL.env | |
- name: ~000 Setup tmate session | |
if: fromJSON(inputs.fstuple).pause == '000' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
- name: Generate gha-bootstrap.env | |
run: | | |
source $fsvr_dir/gha-bootstrap.sh | |
get_bootstrap_vars | tee env.d/gha-bootstrap.env || exit 127 | |
- name: ~001 Setup tmate session | |
if: fromJSON(inputs.fstuple).pause == '001' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
- name: Populate local bin | |
uses: ./fsvr-action | |
with: | |
run: | | |
set -Euo pipefail | |
test -d "$fsvr_dir" || exit 63 | |
source $fsvr_dir/util/gha.cachette.bash | |
function generate_BASH_FUNC_invoke() { | |
source $fsvr_dir/bashland/gha.alias-exe.bash | |
BASH=$(cygpath -was $BASH) make-stub bin/BASH_FUNC_invoke.exe || return 90 | |
} | |
test -v GITHUB_ACTIONS && gha-cache-restore-fast $cache_id-BASH_FUNC_invoke bin/BASH_FUNC_invoke.exe || ( | |
generate_BASH_FUNC_invoke | |
test ! -v GITHUB_ACTIONS || gha-cache-save-fast $cache_id-BASH_FUNC_invoke bin/BASH_FUNC_invoke.exe || exit 89 | |
) | |
{ | |
$fsvr_dir/util/_utils.sh ht-ln bin/BASH_FUNC_invoke.exe bin/ht-ln.exe | |
ht-ln bin/BASH_FUNC_invoke.exe bin/hostname.exe | |
ht-ln bin/BASH_FUNC_invoke.exe bin/jq.exe | |
ht-ln bin/BASH_FUNC_invoke.exe bin/envsubst.exe | |
} || exit 86 | |
function xxtest_bin() { | |
test -f bin/parallel-home/will-cite || return 196 | |
parallel --version | head -1 || return 197 | |
ninja --version | head -1 || return 198 | |
[[ `hostname` =~ windows[-]?2022 ]] || return 199 | |
jq --version | head -1 || return 200 | |
which parallel.exe | |
which colout | |
which jq | |
} | |
function xxprovision_tools() {( | |
set -Euo pipefail | |
source $fsvr_dir/gha-bootstrap.sh | |
source $fsvr_dir/util/gha.literally-exists.bash | |
pysite="$(cygpath -m "$(python3 -msite --user-site)")" | |
literally-exists bin/ninja.exe || get_ninja || exit `_err $? "failed to provision ninja $?"` | |
literally-exists $pysite/colout || get_colout || exit `_err $? "failed to provision colout $?"` | |
literally-exists bin/parallel || get_parallel || exit `_err $? "failed to provision parallel $?"` | |
literally-exists bin/colout.exe || ht-ln bin/BASH_FUNC_invoke.exe bin/colout.exe | |
literally-exists bin/parallel.exe || ht-ln bin/BASH_FUNC_invoke.exe bin/parallel.exe | |
# note: autobuild is not necessary here, but viewer_manifest still depends on python-llsd | |
python -m pip install --no-warn-script-location --user llsd | |
)} | |
test -v GITHUB_ACTIONS && gha-cache-restore-fast $cache_id-bin-b bin || ( | |
xxprovision_tools || exit `_err $? "!xxprovision_tools"` | |
xxtest_bin || exit `_err $? "!xxtest_bin"` | |
test ! -v GITHUB_ACTIONS || gha-cache-save-fast $cache_id-bin-b bin || exit 85 | |
) | |
- name: ~002 Setup tmate session | |
if: fromJSON(inputs.fstuple).pause == '002' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
- name: Expand Source Repositories | |
uses: ./fsvr-action | |
with: | |
run: | | |
source $fsvr_dir/util/gha.cachette.bash | |
source $fsvr_dir/util/gha.quiet-clone.bash | |
if [[ -x $nunja_dir/000.bash ]] ; then | |
echo "[sourcing] $nunja_dir/000.bash" >&2 | |
. $nunja_dir/000.bash $hub $repo "$ref" | |
else | |
maybe-clone viewer ${hub:-github.com} $repo "$ref" | |
maybe-clone p373r github.com ${GITHUB_REPOSITORY} P373R_6.6.8 | |
fi | |
- name: ~003 Setup tmate session | |
if: fromJSON(inputs.fstuple).pause == '003' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
# - name: fsvr-action args test | |
# uses: ./fsvr-action | |
# with: | |
# environment: foo=bar | |
# args: An argument string ${{ inputs.fstuple }} | |
# run: | | |
# echo ok 1=$1 2=$2 args="$(echo "$@")" | |
- name: PATH/ENV preflight tests | |
run: | | |
jq --version | |
test `hostname` == "windows-2022" || exit 2022 | |
test -v nunja_dir || exit 122 | |
test -d "$nunja_dir" || exit 123 | |
test $(echo 'test-$a' | eval "a=b envsubst") == test-b || exit 124 | |
- name: Generate Build Vars | |
run: | | |
set -euo pipefail | |
echo fsvr_dir=$fsvr_dir | |
export root_dir=${root_dir:-repo/viewer} | |
export workspace=${GITHUB_WORKSPACE:-${workspace:-$PWD}} | |
# some legacy viewer packaging logic blindly reaches from build* to ../indra | |
test -d $root_dir/indra && ht-ln $root_dir/indra indra | |
viewer_version=`cat $nunja_dir/viewer_version.txt | tr -d '\r'` | |
$fsvr_dir/util/generate_build_vars.sh ${viewer_name}-VR-GHA ${viewer_version} build/ \ | |
| tee env.d/build_vars.env | |
- name: Generate Report | |
uses: ./fsvr-action | |
with: | |
run: | | |
repos="$(for id in `ls -1d repo/* fsvr` ; do | |
url="$(test -s $id/.gha_source && echo "[$id]($(cat $id/.gha_source))" || git -C $id rev-parse --short HEAD)" | |
echo "| ./$id | $(git -C $id describe --all --always) *$(git -C $id rev-parse --short HEAD)* $url |" | |
done)" | |
tools="$(for id in jq ninja parallel bash ; do | |
echo "| $id | $($id --version | head -n 1 || true) |" | |
done)" | |
test -v GITHUB_STEP_SUMMARY || GITHUB_STEP_SUMMARY=/dev/stdout | |
cat <<EOF | tee $GITHUB_STEP_SUMMARY | |
| name | value | | |
| --------- | ----------- | | |
| viewer_id | $viewer_id | | |
| viewer_name | $viewer_name | | |
| viewer_channel | $viewer_channel | | |
| base | $base | | |
| hub | $hub | | |
| repo | $repo | | |
| ref | $ref | | |
| build_id | $build_id | | |
| cache_id | $cache_id | | |
| hostname | `hostname` | | |
$repos | |
$tools | |
EOF | |
- name: Detect MSVC | |
uses: ./fsvr-action | |
with: | |
run: | | |
set -Euo pipefail | |
declare -a msvcs=(build/msvc.env build/msvc.nunja.env build/msvc_path.env) | |
export INPUT_key=$cache_id-msvc-a INPUT_path="$(echo "${msvcs[@]}" | tr ' ' '\n')" | |
function xxgenerate_msvc() { | |
$fsvr_dir/util/generate_msvc_env.sh | |
ls -l ${msvcs[@]} | |
} | |
if [[ -v GITHUB_ACTIONS ]] ; then | |
/c/Program\ Files/nodejs/node /d/a/_actions/actions/cache/v4/dist/restore-only/index.js \ | |
| grep -i 'cache restored' && { echo 'yup' ; ls -l "${msvcs[@]}" ; } || { | |
echo 'nope' | |
xxgenerate_msvc | |
/c/Program\ Files/nodejs/node /d/a/_actions/actions/cache/v4/dist/save-only/index.js | |
} | |
else | |
xxgenerate_msvc | |
fi | |
- name: 010_ensure_build_directories && 020_perform_replacements | |
run: fsvr_step 010 && fsvr_step 020 | |
- name: 038_provision_openvr | |
uses: ./fsvr-action | |
with: | |
run: | | |
set -Euo pipefail | |
if [[ ! -v GITHUB_ACTIONS ]]; then | |
fsvr_step 038_provision_openvr || exit 242 | |
exit 0 | |
fi | |
# tarball=$fsvr_cache_dir/openvr-v1.6.10.8eaf723.tar.bz2 | |
export INPUT_key=$cache_id-openvr-d INPUT_path=cache/openvr-** | |
/c/Program\ Files/nodejs/node /d/a/_actions/actions/cache/v4/dist/restore-only/index.js \ | |
| grep -i 'cache restored' && { echo 'yup' ; ls -l $fsvr_cache_dir ; } || { | |
echo 'nope' | |
fsvr_step 038_provision_openvr || exit 38 | |
/c/Program\ Files/nodejs/node /d/a/_actions/actions/cache/v4/dist/save-only/index.js | |
} | |
- name: 039_provision_p373r | |
run: fsvr_step 039 | |
- name: 040_generate_package_infos && 050_generate_packages_info_text | |
run: fsvr_step 040 && fsvr_step 050 | |
- name: 080_untar_packages | |
uses: ./fsvr-action | |
with: | |
run: | | |
set -Euo pipefail | |
function xxpopulate_packages() { | |
fsvr_step 060_download_packages || exit 60 | |
fsvr_step 070_verify_downloads || exit 70 | |
fsvr_step 080_untar_packages || exit 80 | |
} | |
if [[ -v GITHUB_ACTIONS ]]; then | |
export INPUT_key=$cache_id-build-packages-c INPUT_path=build/packages | |
/c/Program\ Files/nodejs/node /d/a/_actions/actions/cache/v4/dist/restore-only/index.js \ | |
| grep -i 'cache restored' && echo 'yup' || { | |
echo 'nope' | |
xxpopulate_packages || exit $? | |
/c/Program\ Files/nodejs/node /d/a/_actions/actions/cache/v4/dist/save-only/index.js | |
} | |
else | |
xxpopulate_packages || exit $? | |
fi | |
- name: 085_prepare_msys_msvc | |
run: fsvr_step 085 | |
- name: 090_ninja_preflight | |
run: fsvr_step 090 | |
- name: ~004 Setup tmate session | |
if: fromJSON(inputs.fstuple).pause == '004' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
- name: 0a0_ninja_build SLPlugin.exe | |
run: fsvr_step 0a0 SLPlugin.exe | |
- name: 0a0_ninja_build application-bin.exe | |
run: fsvr_step 0a0 ${viewer_exe}-bin.exe | |
- name: 0a0_ninja_build llpackage | |
run: fsvr_step 0a0 llpackage | |
- name: 0a1 postbuild | |
run: fsvr_step 0a1 | |
- name: 0b0 installer | |
run: fsvr_step 0b0 | |
- name: 0b1 upload installer | |
uses: ./fsvr-action | |
with: | |
run: fsvr_step 0b1 | |
- name: 0b2 7z | |
run: fsvr_step 0b2 | |
- name: 0b3 upload 7z | |
uses: ./fsvr-action | |
with: | |
run: fsvr_step 0b3 | |
- name: ~005 Setup tmate session | |
if: fromJSON(inputs.fstuple).pause == '005' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
# - name: log env on error | |
# if: failure() | |
# uses: ./fsvr-action | |
# with: | |
# run: | | |
# ./fsvr/util/_utils.sh upload_artifact debug "$(cat <<EOF | |
# SHELL.env | |
# env.d/gha-bootstrap.env | |
# env.d/build_vars.env | |
# build/msvc.env | |
# build/msvc_path.env | |
# build/msvc.nunja.env | |
# EOF | |
# )" | |
# - name: 006 Setup tmate session | |
# if: fromJSON(inputs.fstuple).pause == '006' | |
# uses: mxschmitt/action-tmate@v3 | |
# with: | |
# limit-access-to-actor: true | |
- name: ~Setup tmate session | |
if: failure() && fromJSON(inputs.fstuple).pause != 'never' | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
# | |
# | |
# - name: Setup tmate session | |
# if: failure() | |
# uses: mxschmitt/action-tmate@v3 | |
# env: | |
# PATH: /c/msys64/usr/bin:${{ env.PATH}} | |
# with: | |
# limit-access-to-actor: true |