Skip to content

Commit

Permalink
add new local composite actions to simplify workflow script
Browse files Browse the repository at this point in the history
composite action do all necessary steps transparent way
- composite action for cache/get/setup build MSVC compilers
- composite action for cache/get/setup Open Watcom
- composite action for cache/get/setup Open Zinc
- composite action for cache/get/setup build Tools (nasm+jom+info-zip+os2tk45)
- composite action for check existence of created distribution files

- fix bug in VCT2003 downloaded image, missing setargv.obj file for x86 target
- use Visual studio numbering instead of Visual C++ compiler Toolkit numbering
- fix for arm version build by VS2019 and VS2022, it is necessary select appropriate runner Windows image containing correct Visual Studio version
  • Loading branch information
jmalak committed Dec 12, 2024
1 parent c295c34 commit 796bd16
Show file tree
Hide file tree
Showing 9 changed files with 1,261 additions and 1,143 deletions.
6 changes: 3 additions & 3 deletions .github/actions/cache/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ inputs:
outputs:
cache-hit:
description: 'output cache-hit'
value: ${{ steps.cachecmd.outputs.cache-hit }}
value: ${{steps.cachecmd.outputs.cache-hit}}
runs:
using: composite
steps:
Expand All @@ -23,8 +23,8 @@ runs:
uses: actions/cache@v4
id: cachecmd
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
path: ${{inputs.path}}
key: ${{inputs.key}}
- name: output value
if: inputs.nocache == 'true'
run: |
Expand Down
29 changes: 29 additions & 0 deletions .github/actions/files-check/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: check-file-list
description: 'Checking files in the list'

inputs:
path:
description: 'path where to check'
default: ''
list:
description: 'list of files to check'
default: ''
runs:
using: composite
steps:
- name: Check file list
working-directory: ${{inputs.path}}
run: |
missing_files=
for fname in ${{inputs.list}}; do
if [[ ! -f "$fname" ]]; then
echo "Build result not found: $fname"
missing_files=$missing_files $fname
fi
done
if [[ ! -z "$missing_files" ]]; then
echo "Missing build outputs: $missing_files"
echo "One or more expected outputs are missing - failing build"
exit 1
fi
shell: bash
43 changes: 43 additions & 0 deletions .github/actions/load-openzinc/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: load-open-zinc
description: Load Open Zinc
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
ver:
description: 'version'
default: ''
required: false
type: string
id:
description: 'Identification'
default: ''
required: false
type: string
#
# expected filename: https://ftp.zx.net.nz/pub/dev/openzinc/oz1/OZ1.zip
#
# OpenZinc is available from http://openzinc.com/Downloads/OZ1.zip
# But we don't want to waste the resources of the generous OpenZinc developer,
# so we grab it from a mirror
#
runs:
using: composite
steps:
- name: Load Cache Open Zinc
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-openzinc
with:
path: ${{github.workspace}}/zinc
key: all-openzinc
- name: Get and unpack Open Zinc
if: steps.cache-openzinc.outputs.cache-hit != 'true'
run: |
mkdir -p zinc
curl -LsS -o oz1.zip ${{env.OPENZINC}}
7z x oz1.zip -ozinc
rm -f oz1.zip
shell: bash
99 changes: 99 additions & 0 deletions .github/actions/load-tools/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: load-build-tools
description: Load build tools
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
#
# JOM make, used instead of nmake for parallel builds
#
# expected filename: https://download.qt.io/official_releases/jom/jom.zip
#
# NASM assembler
#
# expected filename: https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win32/nasm-2.15.05-win32.zip
#
# Infozip
#
# expected filename: ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn.zip
# expected filename: ftp://ftp.info-zip.org/pub/infozip/os2/unz600.exe
#
# alternate site: https://ftp.zx.net.nz/pub/archive/ftp.info-zip.org/pub/infozip/
#
# OS2TK45 OS/2 header files
#
# expected filename: https://88watts.net/dlfile.php?F=Os2Tk45-
#
# OS/2 Developer's Toolkit v4.5 is available on David Azarewicz's 88watts.net
# *supposedly* with permission from IBM - or so Arca Noae (which David is
# involved with) claims on this page:
# https://www.arcanoae.com/wiki/information-for-developers/
# It is needed only for building the IBM TCP/IP 2.0 TCP/IP backend. The SDK
# for this is also available on the OS/2 Warp 4 CD.
#
runs:
using: composite
steps:
- name: Load Build Tools Cache
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-tools
with:
path: |
${{github.workspace}}/tools
${{github.workspace}}/info-zip/zip.exe
${{github.workspace}}/info-zip/unzip.exe
${{github.workspace}}/info-zip/os2
key: all-nasm+jom+info-zip+os2tk45
- run: mkdir -p tools
if: steps.cache-tools.outputs.cache-hit != 'true'
shell: bash
- name: Get and unpack nasm
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
curl -LsS -o nasm-2.15.05-win32.zip https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win32/nasm-2.15.05-win32.zip
7z x nasm-2.15.05-win32.zip -otools
rm -f nasm-2.15.05-win32.zip
mv tools/nasm-2.15.05 tools/nasm
echo "content of tools/nasm"
ls -l tools/nasm
shell: bash
- name: Get and unpack nasm
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
mkdir -p tools/jom
curl -LsS -o jom.zip https://download.qt.io/official_releases/jom/jom.zip
7z x jom.zip -otools/jom
rm -f jom.zip
echo "content of tools/jom"
ls -l tools/jom
shell: bash
- name: Get and unpack os2tk45
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
curl -LsS -o os2tk45.zip ${{env.OS2TK45}}
7z x os2tk45.zip
rm -f os2tk45.zip
mv toolkit/os2tk45 tools/os2tk45
mv tools/os2tk45/h tools/os2tk45/include
echo "content of tools/os2tk45"
ls -l tools/os2tk45
shell: bash
- name: Get and unpack Info-Zip
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
mkdir -p info-zip/os2
curl -LsS -o zip.zip ${{env.INFOZIP_FTP}}win32/zip300xn.zip
7z x zip.zip -oinfo-zip
rm -f zip.zip
curl -LsS -o unzip.zip ${{env.INFOZIP_FTP}}os2/unz600.exe
7z x unzip.zip -oinfo-zip/os2
rm -f unzip.zip
mv info-zip/os2/32-bit/* info-zip/os2/
echo "content of info-zip/os2"
ls -l info-zip/os2
echo "content of info-zip"
ls -l info-zip
shell: bash
51 changes: 51 additions & 0 deletions .github/actions/load-vs2003/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: load-vs2003-psdk2003-sp1
description: Load Visual Studio 2003/2005 Toolkit and PSDK 2003 SP1
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
arch:
description: 'Architecture'
default: ''
required: false
type: string
#
# expected filename: https://ftp.zx.net.nz/pub/dev/VC2003Toolkit/VCT2003+PSDK2003+cvtres.7z
#
runs:
using: composite
steps:
- name: Load Cache VS2003
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-vs2003
with:
path: |
${{github.workspace}}\vs2003
key: all-vs2003+psdk2003sp1
- name: Get and unpack Visual C++ 2003 Toolkit and PSDK 2003 SP1
if: steps.cache-vs2003.outputs.cache-hit != 'true'
run: |
curl -LsS -o vs2003.7z https://ftp.zx.net.nz/pub/dev/VC2003Toolkit/VCT2003+PSDK2003+cvtres.7z
7z x vs2003.7z
rm -f vs2003.7z
mv "Microsoft Platform SDK 2003SP1" vs2003
rm -f vs2003\Bin\Cvtres.exe
echo "content of vs2003"
ls -l vs2003
shell: bash
- name: Setup build MSVC compiler Environment
run: |
rem add build MSVC compiler on the beginning of PATH
rem we need cvtres.exe from current MSVC compiler only
if "${{inputs.arch}}" == "x86" echo ${{github.workspace}}\vs2003\bin>> "%GITHUB_PATH%"
if "${{inputs.arch}}" == "ia64" echo ${{github.workspace}}\vs2003\bin\win64;${{github.workspace}}\vs2003\bin>> "%GITHUB_PATH%"
rem Don't want to pick up headers or libraries from current MSVC compiler
rem we override INCLUDE and LIB environment variables to point to build MSVC compiler
echo INCLUDE=${{github.workspace}}\vs2003\include>> "%GITHUB_ENV%"
if "${{inputs.arch}}" == "x86" echo LIB=${{github.workspace}}\vs2003\lib;%LIB%>> "%GITHUB_ENV%"
if "${{inputs.arch}}" == "ia64" echo LIB=${{github.workspace}}\vs2003\lib\ia64>> "%GITHUB_ENV%"
shell: cmd

62 changes: 62 additions & 0 deletions .github/actions/load-vs2010/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: load-vs2010-psdk71
description: Load Visual Studio 2010 Toolkit and PSDK 7.1
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
arch:
description: 'Architecture'
default: ''
required: false
type: string
#
# expected filename: https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-vc.7z
# expected filename: https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-psdk.7z
# expected filename: http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe
#
runs:
using: composite
steps:
- name: Load Cache VS2010
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-vs2010
with:
path: |
${{github.workspace}}\Microsoft SDKs
${{github.workspace}}\Microsoft Visual Studio 10.0
${{github.workspace}}\vc10.cmd
${{github.workspace}}\vs2010
key: all-vs2010-psdk71-redist
- name: Get and unpack Visual C++ 2010 Toolkit
if: steps.cache-vs2010.outputs.cache-hit != 'true'
run: |
curl -LsS -o win7-7.1-sdk-vc.7z https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-vc.7z
7z x win7-7.1-sdk-vc.7z
rm -f win7-7.1-sdk-vc.7z
echo "content of Microsoft Visual Studio 10.0"
ls -l "Microsoft Visual Studio 10.0"
shell: bash
- name: Get and unpack Windows 7 Platform SDK 7.1
if: steps.cache-vs2010.outputs.cache-hit != 'true'
run: |
curl -LsS -o win7-7.1-sdk-psdk.7z https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-psdk.7z
7z x win7-7.1-sdk-psdk.7z
rm -f win7-7.1-sdk-psdk.7z
echo "content of Microsoft SDKs"
ls -l "Microsoft SDKs"
shell: bash
- name: Get Visual C++ 2010 runtime
if: steps.cache-vs2010.outputs.cache-hit != 'true'
run: |
mkdir -p vs2010
curl -LsS -o vs2010/vcredist_x86.exe http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe
echo "content of vs2010"
ls -l vs2010
shell: bash
- name: Install the VS2010 runtime
working-directory: ${{github.workspace}}
run: vs2010\vcredist_x86.exe /q /norestart
shell: cmd
73 changes: 73 additions & 0 deletions .github/actions/load-watcom/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: load-open-watcom
description: Load Open Watcom
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
ver:
description: 'version'
default: ''
required: false
type: string
id:
description: 'Identification'
default: ''
required: false
type: string
#
# Open Watcom 1.9
# expected filename: https://github.com/open-watcom/open-watcom-1.9/releases/download/ow1.9/open-watcom-c-linux-1.9
#
# Open Watcom 2.0
# expected filename: https://github.com/open-watcom/open-watcom-v2/releases/download/Current-build/ow-snapshot.tar.xz
#
runs:
using: composite
steps:
- name: Load Cache VS2003
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-ow
with:
path: |
${{github.workspace}}\watcom
key: all-open-watcom-${{inputs.ver}}
- name: Get and unpack Open Watcom
if: steps.cache-ow.outputs.cache-hit != 'true'
run: |
mkdir -p watcom
if [[ "${{inputs.ver}}" = "2.0" ]]; then
curl -LsS -o ow-snapshot.tar.xz https://github.com/open-watcom/open-watcom-v2/releases/download/Current-build/ow-snapshot.tar.xz
7z x ow-snapshot.tar.xz
7z x ow-snapshot.tar -owatcom
rm -f ow-snapshot.tar.xz ow-snapshot.tar
else
curl -LsS -o ow.zip https://github.com/open-watcom/open-watcom-1.9/releases/download/ow1.9/open-watcom-c-linux-1.9
7z x ow.zip -owatcom
rm -f ow.zip
fi
echo "content of watcom"
ls -l watcom
shell: bash
- name: Setup Open Watcom Environment
run: |
if [[ "${{runner.os}}" = "Windows" ]]; then
X=\\
else
X=/
fi
echo "WATCOM=${{github.workspace}}${X}watcom">> "$GITHUB_ENV"
echo "${{github.workspace}}${X}watcom${X}binw">> "$GITHUB_PATH"
if [[ "${{runner.os}}" = "Windows" ]]; then
echo "${{github.workspace}}${X}watcom${X}binnt">> "$GITHUB_PATH"
else
echo "${{github.workspace}}${X}watcom${X}binl">> "$GITHUB_PATH"
fi
if [[ "${{inputs.id}}" = "os2" ]]; then
echo "INCLUDE=${{github.workspace}}${X}watcom${X}h;${{github.workspace}}${X}watcom${X}h${X}os2">> "$GITHUB_ENV"
else
echo "INCLUDE=${{github.workspace}}${X}watcom${X}h;${{github.workspace}}${X}watcom${X}h${X}nt">> "$GITHUB_ENV"
fi
shell: bash
Loading

0 comments on commit 796bd16

Please sign in to comment.