Skip to content

Build and Release Executables #49

Build and Release Executables

Build and Release Executables #49

Workflow file for this run

name: Build and Release Executables
on:
push:
tags:
- 'v*'
workflow_dispatch:
jobs:
build-linux-macos:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Get XPlane SDK
shell: bash
run: |
SDK_VERSION=411
curl -L "https://developer.x-plane.com/wp-content/plugins/code-sample-generation/sdk_zip_files/XPSDK${SDK_VERSION}.zip" -o "XPSDK${SDK_VERSION}.zip"
unzip XPSDK${SDK_VERSION}.zip
mv SDK ../
- uses: melusina-org/setup-macports@v1
if: startsWith(matrix.os, 'macos')
with:
macports-version: 2.7.1
- name: Build Executable
shell: bash
env:
OS: ${{ matrix.os }}
run: |
if [ $OS == "ubuntu-latest" ]; then
sudo apt-get -y install libopenal1 libopenal-dev
make -f Makefile.lin64
else
port selfupdate
port install expat +universal
make -f Makefile.mac64
fi
tar cvf binary.tar openSAM-pkg*/openSAM/*_x64
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.os }}
path: |
binary.tar
build-windows:
runs-on: windows-latest
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
mingw-w64-x86_64-gcc
mingw-w64-x86_64-expat
make
- uses: actions/checkout@v3
- name: Get XPlane SDK
shell: bash
run: |
SDK_VERSION=411
curl -L "https://developer.x-plane.com/wp-content/plugins/code-sample-generation/sdk_zip_files/XPSDK${SDK_VERSION}.zip" -o "XPSDK${SDK_VERSION}.zip"
unzip XPSDK${SDK_VERSION}.zip
mv SDK ../
- name: Get libOpenal32
shell: bash
run: |
curl -L https://github.com/hotbso/libOpenAL32/archive/refs/heads/main.zip -o libOpenal32.zip
unzip libOpenal32.zip
- name: Build Windows binaries
shell: msys2 {0}
run: |
pwd
make -f Makefile.mgw64 OPENAL=./libOpenAL32-main
tar cvf binary.tar openSAM-pkg*/openSAM/*_win64
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: build-windows
path: |
binary.tar
release:
runs-on: ubuntu-latest
needs: [build-linux-macos, build-windows]
steps:
- uses: actions/checkout@v3
- name: setup crc32 tool
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y libarchive-zip-perl
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
path: ./build
- name: List artifacts
shell: bash
run: |
pwd
ls -lR ./build
- name: Consolidate platform builds
shell: bash
run: |
pwd
for t in ./build/*/binary.tar
do
tar xvf $t
done
bash ./mk_zip.sh
ls -l
for z in openSAM*.zip; do unzip -t $z; done
- name: Prepare Skunkcrafts Updater
shell: bash
run: |
set -x
# at this point version.mak should have the version number
source version.mak
for XP_VERSION in XP11 XP12; do
OPENSAM_ARTIFACT=openSAM_${XP_VERSION}-${VERSION}
OPENSAM_FOLDER=release/${XP_VERSION}/openSAM
OPENSAM_LIBRARY_FOLDER=release/${XP_VERSION}/openSAM_Library
mkdir -p ${OPENSAM_FOLDER}
mkdir -p ${OPENSAM_FOLDER}/lua
mkdir -p ${OPENSAM_LIBRARY_FOLDER}
if [ $XP_VERSION == "XP11" ]; then
unzip openSAM_XP11-${VERSION}.zip -d ${OPENSAM_ARTIFACT}
else
# normalize folder name
unzip openSAM-${VERSION}.zip -d ${OPENSAM_ARTIFACT}
fi
cp -r ${OPENSAM_ARTIFACT}/openSAM/* ${OPENSAM_FOLDER}
cp -r openSAM-pkg/lua/* ${OPENSAM_FOLDER}/lua
cp -r ${OPENSAM_ARTIFACT}/openSAM_Library/* ${OPENSAM_LIBRARY_FOLDER}
cp -r ${OPENSAM_ARTIFACT}/LICENSE ${OPENSAM_FOLDER}/LICENSE
cp -r ${OPENSAM_ARTIFACT}/LICENSE ${OPENSAM_LIBRARY_FOLDER}/LICENSE
cp -r ${OPENSAM_ARTIFACT}/Credits_and_Licensing.txt ${OPENSAM_FOLDER}/Credits_and_Licensing.txt
cp -r ${OPENSAM_ARTIFACT}/Credits_and_Licensing.txt ${OPENSAM_LIBRARY_FOLDER}/Credits_and_Licensing.txt
cp -r ${OPENSAM_ARTIFACT}/00_README.txt ${OPENSAM_FOLDER}/00_README.txt
cp -r ${OPENSAM_ARTIFACT}/00_README.txt ${OPENSAM_LIBRARY_FOLDER}/00_README.txt
## skunkcrafts for openSAM_Library
sed -e "s|@FOLDER_NAME@|${OPENSAM_LIBRARY_FOLDER}|g" \
-e "s|@XP_VERSION@|${XP_VERSION}|g" \
-e "s|@VERSION@|${VERSION}|g" \
-e "s|@NAME@|Library|g" \
skunkcrafts_updater.cfg.template > "${OPENSAM_LIBRARY_FOLDER}/skunkcrafts_updater.cfg"
## skunkcrafts for openSAM
sed -e "s|@FOLDER_NAME@|${OPENSAM_FOLDER}|g" \
-e "s|@XP_VERSION@|${XP_VERSION}|g" \
-e "s|@VERSION@|${VERSION}|g" \
-e "s|@NAME@||g" \
skunkcrafts_updater.cfg.template > "${OPENSAM_FOLDER}/skunkcrafts_updater.cfg"
find ${OPENSAM_FOLDER}/ -type f ! \( -name '*skunkcrafts_updater*' -o -path '*skunkcrafts_updater*' \) -print0 | while IFS= read -r -d '' file; do
checksum_hex=$(crc32 "$file")
# Convert hex checksum to uint32 decimal
checksum_decimal=$((16#$checksum_hex))
# Remove "release/" prefix from $file
modified_file="${file#${OPENSAM_FOLDER}/}"
echo "$modified_file|$checksum_decimal" >> ${OPENSAM_FOLDER}/skunkcrafts_updater_whitelist.txt
done
find ${OPENSAM_LIBRARY_FOLDER}/ -type f ! \( -name '*skunkcrafts_updater*' -o -path '*skunkcrafts_updater*' \) -print0 | while IFS= read -r -d '' file; do
checksum_hex=$(crc32 "$file")
# Convert hex checksum to uint32 decimal
checksum_decimal=$((16#$checksum_hex))
# Remove "release/" prefix from $file
modified_file="${file#${OPENSAM_LIBRARY_FOLDER}/}"
echo "$modified_file|$checksum_decimal" >> ${OPENSAM_LIBRARY_FOLDER}/skunkcrafts_updater_whitelist.txt
done
touch ${OPENSAM_FOLDER}/skunkcrafts_updater_blacklist.txt
touch ${OPENSAM_LIBRARY_FOLDER}/skunkcrafts_updater_blacklist.txt
done
# push to release branch
git checkout -b release
git config --global user.email "[email protected]"
git config --global user.name "GH Release"
git add release/*
git commit -m "Release ${VERSION}"
git push -f -u origin release
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref }}
files: |
${{ github.workspace }}/openSAM*.zip
prerelease: ${{ contains(github.ref_name, '-') }}