diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml index d30ffe28..4d6a28d4 100644 --- a/.github/actions/cache/action.yml +++ b/.github/actions/cache/action.yml @@ -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: @@ -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: | diff --git a/.github/actions/files-check/action.yml b/.github/actions/files-check/action.yml new file mode 100644 index 00000000..eaa3855a --- /dev/null +++ b/.github/actions/files-check/action.yml @@ -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 diff --git a/.github/actions/load-openzinc/action.yml b/.github/actions/load-openzinc/action.yml new file mode 100644 index 00000000..0aa5dc1c --- /dev/null +++ b/.github/actions/load-openzinc/action.yml @@ -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 diff --git a/.github/actions/load-tools/action.yml b/.github/actions/load-tools/action.yml new file mode 100644 index 00000000..cd61c843 --- /dev/null +++ b/.github/actions/load-tools/action.yml @@ -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 diff --git a/.github/actions/load-vs2003/action.yml b/.github/actions/load-vs2003/action.yml new file mode 100644 index 00000000..6dc5804f --- /dev/null +++ b/.github/actions/load-vs2003/action.yml @@ -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 + \ No newline at end of file diff --git a/.github/actions/load-vs2010/action.yml b/.github/actions/load-vs2010/action.yml new file mode 100644 index 00000000..b923d083 --- /dev/null +++ b/.github/actions/load-vs2010/action.yml @@ -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 diff --git a/.github/actions/load-watcom/action.yml b/.github/actions/load-watcom/action.yml new file mode 100644 index 00000000..83b4a191 --- /dev/null +++ b/.github/actions/load-watcom/action.yml @@ -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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 46f93371..13b42706 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -99,7 +99,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: HTMLise Markdown Docs - working-directory: ${{ github.workspace }} + working-directory: ${{github.workspace}} run: | pip3 install markdown ( @@ -112,8 +112,8 @@ jobs: echo ^
^