|
15 | 15 | gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav |
16 | 16 | - name: Install GStreamer (macOS) |
17 | 17 | if: runner.os == 'macOS' |
| 18 | + env: |
| 19 | + GSTREAMER_MACOS_VERSION: "1.28.5" |
| 20 | + GSTREAMER_MACOS_RUNTIME_SHA256: "0a8fc7a1cf8d7bac833ca0ebe2fd196a199c2465e810cd5b1e4b4f720c258f43" |
| 21 | + GSTREAMER_MACOS_DEVEL_SHA256: "6f7b55e8fb86dcc615c9cae46b79b7785851e5c77f79a938648a81dfa2603729" |
18 | 22 | shell: bash |
19 | | - run: brew install gstreamer |
| 23 | + run: | |
| 24 | + set -euo pipefail |
| 25 | + # Official universal packages cover both x86_64 and arm64. Homebrew |
| 26 | + # no longer produces Intel bottles and may compile its dependency tree. |
| 27 | + base_url="https://gstreamer.freedesktop.org/data/pkg/osx/$GSTREAMER_MACOS_VERSION" |
| 28 | + installer_dir="$RUNNER_TEMP/gstreamer-installers" |
| 29 | + runtime_pkg="gstreamer-1.0-$GSTREAMER_MACOS_VERSION-universal.pkg" |
| 30 | + devel_pkg="gstreamer-1.0-devel-$GSTREAMER_MACOS_VERSION-universal.pkg" |
| 31 | + mkdir -p "$installer_dir" |
| 32 | +
|
| 33 | + for package in "$runtime_pkg" "$devel_pkg"; do |
| 34 | + expected_hash="$GSTREAMER_MACOS_RUNTIME_SHA256" |
| 35 | + if [[ "$package" == "$devel_pkg" ]]; then |
| 36 | + expected_hash="$GSTREAMER_MACOS_DEVEL_SHA256" |
| 37 | + fi |
| 38 | + curl --fail --location --retry 3 --connect-timeout 30 --max-time 600 \ |
| 39 | + "$base_url/$package" --output "$installer_dir/$package" |
| 40 | + printf '%s %s\n' "$expected_hash" "$installer_dir/$package" | shasum -a 256 -c - |
| 41 | + done |
| 42 | +
|
| 43 | + # Verify both downloads before installing either package. |
| 44 | + sudo installer -pkg "$installer_dir/$runtime_pkg" -target / |
| 45 | + sudo installer -pkg "$installer_dir/$devel_pkg" -target / |
| 46 | +
|
| 47 | + framework="/Library/Frameworks/GStreamer.framework/Versions/1.0" |
| 48 | + echo "$framework/bin" >> "$GITHUB_PATH" |
| 49 | + export PATH="$framework/bin:$PATH" |
| 50 | + export PKG_CONFIG_PATH="$framework/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" |
| 51 | + echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> "$GITHUB_ENV" |
| 52 | + # The framework dylibs use @rpath. Rust sys-crate linker arguments do |
| 53 | + # not propagate to the final FFI dylib, so set its runtime search path. |
| 54 | + echo "RUSTFLAGS=${RUSTFLAGS:+$RUSTFLAGS }-C link-arg=-Wl,-rpath,$framework/lib" >> "$GITHUB_ENV" |
| 55 | + pkg-config --modversion gstreamer-1.0 gstreamer-app-1.0 |
| 56 | + gst-inspect-1.0 --version |
20 | 57 | - name: Install GStreamer (Windows) |
21 | 58 | if: runner.os == 'Windows' |
22 | 59 | env: |
|
0 commit comments