mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-20 02:08:11 +00:00
only for Win + non-ARM Linux - doesn't seem to be officially supported in neither ARM nor macOS configure.ac - require just SVT-JPEG-XS 0.9 as is in msys Win package (proxy mode commented out - isn't needed to set to "proxy_mode_full" explicitly, anyways)
191 lines
5.7 KiB
Bash
191 lines
5.7 KiB
Bash
# shellcheck shell=sh
|
|
#
|
|
## Exports common environment variables to next steps via $GITHU_ENV variable.
|
|
## Note that exporting the variable is not necessarily needed but it ensures that
|
|
## the vars are visible also later in current step (the script needs to be sourced,
|
|
## not run).
|
|
##
|
|
## Environment variables:
|
|
## - **apple_key_p12_b64** - [mac only] base64-encoded $KEY_FILE (using
|
|
## password $KEY_FILE_PASS)
|
|
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
if expr "$GITHUB_REF" : 'refs/tags/' >/dev/null; then
|
|
TAG=${GITHUB_REF#refs/tags/}
|
|
VERSION=${TAG#v}
|
|
CHANNEL=release
|
|
else
|
|
VERSION=continuous
|
|
TAG=$VERSION
|
|
fi
|
|
|
|
# include platform on mac in version string
|
|
if [ "$(uname -s)" = Darwin ]; then
|
|
VERSION="$VERSION-$(uname -m)"
|
|
fi
|
|
|
|
if [ -z "${CHANNEL-}" ]; then
|
|
CHANNEL=$VERSION
|
|
fi
|
|
|
|
export CHANNEL TAG VERSION
|
|
|
|
printf '%b' "CHANNEL=$CHANNEL\nTAG=$TAG\nVERSION=$VERSION\n" >> "$GITHUB_ENV"
|
|
|
|
## @note `uname -m` is x86_64 for Linux ARM builds, because this script is
|
|
## not called from the build chroot, so utilize GITHUB_WORKFLOW
|
|
is_arm() {
|
|
[ "$(uname -m)" = arm64 ] || [ "$GITHUB_WORKFLOW" = 'ARM builds' ]
|
|
}
|
|
|
|
export FEATURES="\
|
|
--enable-option-checking=fatal\
|
|
--with-live555=/usr/local\
|
|
--enable-aja\
|
|
--enable-blank\
|
|
--enable-caca\
|
|
--enable-decklink\
|
|
--enable-file\
|
|
--enable-fluidsynth\
|
|
--enable-gl\
|
|
--enable-gl-display\
|
|
--enable-holepunch\
|
|
--enable-jack\
|
|
--enable-jack-transport\
|
|
--enable-libavcodec\
|
|
--enable-natpmp\
|
|
--enable-ndi\
|
|
--enable-openssl\
|
|
--enable-pcp\
|
|
--enable-portaudio\
|
|
--enable-qt\
|
|
--enable-resize\
|
|
--enable-rtdxt\
|
|
--enable-rtsp\
|
|
--enable-rtsp-server\
|
|
--enable-scale\
|
|
--enable-screen\
|
|
--enable-sdl=3\
|
|
--enable-sdp-http\
|
|
--enable-soxr\
|
|
--enable-speexdsp\
|
|
--enable-swmix\
|
|
--enable-libswscale\
|
|
--enable-testcard2=ttf\
|
|
--enable-text\
|
|
--enable-video-mixer\
|
|
--enable-vulkan\
|
|
--enable-ximea\
|
|
--enable-zfec\
|
|
--disable-drm_disp\
|
|
"
|
|
CUDA_FEATURES="--enable-cuda_dxt --enable-gpujpeg --enable-ldgm-gpu --enable-uyvy"
|
|
case "$RUNNER_OS" in
|
|
Linux)
|
|
FEATURES="$FEATURES --enable-plugins \
|
|
--enable-alsa \
|
|
--enable-lavc-hw-accel-vaapi \
|
|
--enable-libbacktrace \
|
|
--enable-pipewire-audio \
|
|
--enable-v4l2 \
|
|
"
|
|
if is_arm; then
|
|
FEATURES="$FEATURES --disable-qt"
|
|
else
|
|
FEATURES="$FEATURES $CUDA_FEATURES \
|
|
--enable-lavc-hw-accel-vdpau \
|
|
--enable-jpegxs"
|
|
fi
|
|
;;
|
|
macOS)
|
|
FEATURES="$FEATURES \
|
|
--enable-avfoundation \
|
|
--enable-coreaudio \
|
|
--enable-libbacktrace \
|
|
--enable-syphon \
|
|
"
|
|
;;
|
|
Windows)
|
|
FEATURES="$FEATURES $CUDA_FEATURES \
|
|
--enable-dshow \
|
|
--enable-jpegxs \
|
|
--enable-spout \
|
|
--enable-wasapi"
|
|
;;
|
|
*)
|
|
echo "Unexpected runner OS: ${RUNNER_OS:-(undefined)}" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
if ! is_arm; then
|
|
FEATURES="$FEATURES --enable-cineform"
|
|
fi
|
|
|
|
printf '%b' "FEATURES=$FEATURES\n" >> "$GITHUB_ENV"
|
|
# populate /etc/environment-defined var to global env
|
|
# shellcheck disable=SC2154 # defined by runner in /etc/environment
|
|
printf '%b' "ImageOS=$ImageOS\n" >> "$GITHUB_ENV"
|
|
|
|
if [ "$(uname -s)" = Darwin ] && [ "$(uname -m)" != arm64 ]; then
|
|
export UG_ARCH=-msse4.2
|
|
printf "UG_ARCH=%s\n" $UG_ARCH >> "$GITHUB_ENV"
|
|
fi
|
|
|
|
|
|
set_ximea_url() {
|
|
if [ "$(uname -s)" = Darwin ]; then
|
|
if [ "$(uname -m)" = arm64 ]; then
|
|
ximea_pattern=XIMEA_macOS_ARM_SP.dmg
|
|
else
|
|
ximea_pattern=XIMEA_macOX_SP.dmg
|
|
fi
|
|
elif [ "$(uname -s)" = Linux ]; then
|
|
if expr "$GITHUB_WORKFLOW" : ARM >/dev/null; then
|
|
ximea_pattern=Linux_ARM_SP.tgz
|
|
else
|
|
ximea_pattern=Linux_SP.tgz
|
|
fi
|
|
else
|
|
ximea_pattern=XIMEA_Windows_SP_Stable.exe
|
|
fi
|
|
# ignore GUID 35adfeed-8e15-4b4d-8364-bd5a65cba5c4 because it is
|
|
# ARM (LTS) with pattern Linux_SP.tgz and since it listed first,
|
|
# it will be downloaded for x86, ARM beta is OK
|
|
ximea_path=$(curl -f https://www.ximea.com/software-downloads |
|
|
grep -v 35adfeed-8e15-4b4d-8364-bd5a65cba5c4 |
|
|
sed -n "/$ximea_pattern/"\
|
|
' { s-^.*\(/getattachment[^"]*\).*$-\1-; p; }' | head -n 1)
|
|
XIMEA_DOWNLOAD_URL=https://www.ximea.com$ximea_path
|
|
export XIMEA_DOWNLOAD_URL
|
|
printf "XIMEA_DOWNLOAD_URL=%s\n" "$XIMEA_DOWNLOAD_URL" >> "$GITHUB_ENV"
|
|
}
|
|
set_ximea_url
|
|
|
|
import_signing_key() {
|
|
if [ "$(uname -s)" != Darwin ] || [ -z "$apple_key_p12_b64" ]; then
|
|
return 0
|
|
fi
|
|
# Inspired by https://www.update.rocks/blog/osx-signing-with-travis/
|
|
KEY_CHAIN=build.keychain
|
|
KEY_CHAIN_PASS=build
|
|
KEY_FILE=/tmp/signing_key.p12
|
|
KEY_FILE_PASS=dummy
|
|
echo "$apple_key_p12_b64" | base64 -d > $KEY_FILE
|
|
security create-keychain -p $KEY_CHAIN_PASS $KEY_CHAIN || true
|
|
security default-keychain -s $KEY_CHAIN
|
|
security unlock-keychain -p $KEY_CHAIN_PASS $KEY_CHAIN
|
|
security import "$KEY_FILE" -A -P "$KEY_FILE_PASS"
|
|
security set-key-partition-list -S apple-tool:,apple: -s -k $KEY_CHAIN_PASS $KEY_CHAIN
|
|
printf '%b' "KEY_CHAIN_PASS=$KEY_CHAIN_PASS\nKEY_CHAIN=$KEY_CHAIN\n" \
|
|
>> "$GITHUB_ENV"
|
|
}
|
|
import_signing_key
|
|
|
|
printf '%b' 'DELTA_MAC_ARCHIVE=videomaster-macos-dev.tar.gz\n' >> "$GITHUB_ENV"
|
|
|
|
git config --global user.name "UltraGrid Builder"
|
|
git config --global user.email "ultragrid@example.org"
|