mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-07 14:58:22 +00:00
This requires the use of WinHTTP (for Windows) or libcurl (for all others except Emscripten). Emscripten does not support http(s) calls currently. On Linux it requires ca-certificates to be installed, so the HTTPS certificate can be validated. It is really likely this is installed on any modern machine, as most connections these days are HTTPS. (On MacOS and Windows the certificate store is filled by default) Reminder: in case the http(s):// connection cannot be established, OpenTTD falls back to a custom TCP-based connection to fetch the content from the content-service. Emscripten will always do this.
198 lines
5.6 KiB
YAML
198 lines
5.6 KiB
YAML
name: Release (MacOS)
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
macos:
|
|
name: MacOS
|
|
|
|
runs-on: macos-11
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: 10.13
|
|
|
|
steps:
|
|
- name: Download source
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: internal-source
|
|
|
|
- name: Unpack source
|
|
run: |
|
|
tar -xf source.tar.gz --strip-components=1
|
|
|
|
- name: Install dependencies
|
|
env:
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
|
run: |
|
|
brew install pandoc
|
|
|
|
- name: Prepare cache key
|
|
id: key
|
|
run: |
|
|
echo "image=$ImageOS-$ImageVersion" >> $GITHUB_OUTPUT
|
|
|
|
- name: Enable vcpkg cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: /usr/local/share/vcpkg/installed
|
|
key: ${{ steps.key.outputs.image }}-vcpkg-release-0 # Increase the number whenever dependencies are modified
|
|
restore-keys: |
|
|
${{ steps.key.outputs.image }}-vcpkg-release
|
|
${{ steps.key.outputs.image }}-vcpkg-x64
|
|
|
|
- name: Prepare vcpkg
|
|
run: |
|
|
vcpkg install \
|
|
curl:x64-osx \
|
|
curl:arm64-osx \
|
|
liblzma:x64-osx \
|
|
liblzma:arm64-osx \
|
|
libpng:x64-osx \
|
|
libpng:arm64-osx \
|
|
lzo:x64-osx \
|
|
lzo:arm64-osx \
|
|
zlib:x64-osx \
|
|
zlib:arm64-osx \
|
|
# EOF
|
|
|
|
- name: Install GCC problem matcher
|
|
uses: ammaraskar/gcc-problem-matcher@master
|
|
|
|
- name: Build tools
|
|
run: |
|
|
mkdir build-host
|
|
cd build-host
|
|
|
|
echo "::group::CMake"
|
|
cmake ${GITHUB_WORKSPACE} \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DOPTION_TOOLS_ONLY=ON \
|
|
# EOF
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Build tools"
|
|
echo "Running on $(sysctl -n hw.logicalcpu) cores"
|
|
cmake --build . -j $(sysctl -n hw.logicalcpu) --target tools
|
|
echo "::endgroup::"
|
|
|
|
- name: Import code signing certificates
|
|
uses: Apple-Actions/import-codesign-certs@v1
|
|
with:
|
|
# The certificates in a PKCS12 file encoded as a base64 string
|
|
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
|
|
# The password used to import the PKCS12 file.
|
|
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
|
|
# If this is run on a fork, there may not be a certificate set up - continue in this case
|
|
continue-on-error: true
|
|
|
|
- name: Build arm64
|
|
run: |
|
|
mkdir build-arm64
|
|
cd build-arm64
|
|
|
|
echo "::group::CMake"
|
|
cmake ${GITHUB_WORKSPACE} \
|
|
-DCMAKE_OSX_ARCHITECTURES=arm64 \
|
|
-DVCPKG_TARGET_TRIPLET=arm64-osx \
|
|
-DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
|
|
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
# EOF
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Build"
|
|
echo "Running on $(sysctl -n hw.logicalcpu) cores"
|
|
cmake --build . -j $(sysctl -n hw.logicalcpu)
|
|
echo "::endgroup::"
|
|
|
|
- name: Build x64
|
|
run: |
|
|
mkdir build-x64
|
|
cd build-x64
|
|
|
|
echo "::group::CMake"
|
|
cmake ${GITHUB_WORKSPACE} \
|
|
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
|
|
-DVCPKG_TARGET_TRIPLET=x64-osx \
|
|
-DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
|
|
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DCPACK_BUNDLE_APPLE_CERT_APP=${{ secrets.APPLE_DEVELOPER_CERTIFICATE_ID }} \
|
|
"-DCPACK_BUNDLE_APPLE_CODESIGN_PARAMETER=--deep -f --options runtime" \
|
|
-DAPPLE_UNIVERSAL_PACKAGE=1 \
|
|
# EOF
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Build"
|
|
echo "Running on $(sysctl -n hw.logicalcpu) cores"
|
|
cmake --build . -j $(sysctl -n hw.logicalcpu)
|
|
echo "::endgroup::"
|
|
|
|
- name: Create bundles
|
|
run: |
|
|
cd build-x64
|
|
|
|
echo "::group::Create universal binary"
|
|
# Combine the `openttd` binaries from each build into a single file
|
|
lipo -create -output openttd-universal ../build-*/openttd
|
|
mv openttd-universal openttd
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Run CPack"
|
|
cpack
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Cleanup"
|
|
# Remove the sha256 files CPack generates; we will do this ourself at
|
|
# the end of this workflow.
|
|
rm -f bundles/*.sha256
|
|
echo "::endgroup::"
|
|
|
|
- name: Install gon
|
|
env:
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
|
run: |
|
|
brew tap mitchellh/gon
|
|
brew install mitchellh/gon/gon
|
|
|
|
- name: Notarize
|
|
env:
|
|
AC_USERNAME: ${{ secrets.APPLE_DEVELOPER_APP_USERNAME }}
|
|
AC_PASSWORD: ${{ secrets.APPLE_DEVELOPER_APP_PASSWORD }}
|
|
run: |
|
|
cd build-x64
|
|
../os/macosx/notarize.sh
|
|
|
|
- name: Build zip
|
|
run: |
|
|
cd build-x64
|
|
|
|
pushd _CPack_Packages/*/Bundle/openttd-*/
|
|
|
|
# Remove the Applications symlink from the staging folder
|
|
rm -f Applications
|
|
|
|
# Remove the original dmg built by CPack to avoid a conflict when resolving
|
|
# the zip_filename variable below
|
|
rm -f ../*.dmg
|
|
|
|
zip_filename=(../openttd-*)
|
|
|
|
# Package up the existing, notarised .app into a zip file
|
|
zip -r -9 ${zip_filename}.zip OpenTTD.app
|
|
|
|
popd
|
|
|
|
# Now move it into place to be uploaded
|
|
mv _CPack_Packages/*/Bundle/openttd-*.zip bundles/
|
|
|
|
- name: Store bundles
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: openttd-macos-universal
|
|
path: build-x64/bundles
|
|
retention-days: 5
|