|
| 1 | +name: Build Config |
| 2 | +description: Read build toolchain versions from .github/build-config.json |
| 3 | + |
| 4 | +outputs: |
| 5 | + qt_version: |
| 6 | + description: Qt version |
| 7 | + value: ${{ steps.read.outputs.qt_version }} |
| 8 | + qt_minimum_version: |
| 9 | + description: Qt minimum supported version |
| 10 | + value: ${{ steps.read.outputs.qt_minimum_version }} |
| 11 | + qt_modules: |
| 12 | + description: Qt modules (desktop) |
| 13 | + value: ${{ steps.read.outputs.qt_modules }} |
| 14 | + qt_modules_ios: |
| 15 | + description: Qt modules (iOS, excludes qtserialport/qtscxml) |
| 16 | + value: ${{ steps.read.outputs.qt_modules_ios }} |
| 17 | + gstreamer_version: |
| 18 | + description: GStreamer version (macOS/Linux) |
| 19 | + value: ${{ steps.read.outputs.gstreamer_version }} |
| 20 | + gstreamer_android_version: |
| 21 | + description: GStreamer version (Android) |
| 22 | + value: ${{ steps.read.outputs.gstreamer_android_version }} |
| 23 | + gstreamer_windows_version: |
| 24 | + description: GStreamer version (Windows) |
| 25 | + value: ${{ steps.read.outputs.gstreamer_windows_version }} |
| 26 | + ndk_version: |
| 27 | + description: Android NDK version (short form) |
| 28 | + value: ${{ steps.read.outputs.ndk_version }} |
| 29 | + ndk_full_version: |
| 30 | + description: Android NDK version (full form for sdkmanager) |
| 31 | + value: ${{ steps.read.outputs.ndk_full_version }} |
| 32 | + java_version: |
| 33 | + description: Java version |
| 34 | + value: ${{ steps.read.outputs.java_version }} |
| 35 | + android_platform: |
| 36 | + description: Android platform/API level |
| 37 | + value: ${{ steps.read.outputs.android_platform }} |
| 38 | + android_min_sdk: |
| 39 | + description: Android minimum SDK version |
| 40 | + value: ${{ steps.read.outputs.android_min_sdk }} |
| 41 | + android_build_tools: |
| 42 | + description: Android build tools version |
| 43 | + value: ${{ steps.read.outputs.android_build_tools }} |
| 44 | + android_cmdline_tools: |
| 45 | + description: Android command line tools version |
| 46 | + value: ${{ steps.read.outputs.android_cmdline_tools }} |
| 47 | + xcode_version: |
| 48 | + description: Xcode version (macOS) |
| 49 | + value: ${{ steps.read.outputs.xcode_version }} |
| 50 | + xcode_ios_version: |
| 51 | + description: Xcode version (iOS) |
| 52 | + value: ${{ steps.read.outputs.xcode_ios_version }} |
| 53 | + cmake_minimum_version: |
| 54 | + description: CMake minimum version |
| 55 | + value: ${{ steps.read.outputs.cmake_minimum_version }} |
| 56 | + ccache_version: |
| 57 | + description: ccache version |
| 58 | + value: ${{ steps.read.outputs.ccache_version }} |
| 59 | + ccache_max_size: |
| 60 | + description: ccache max cache size |
| 61 | + value: ${{ steps.read.outputs.ccache_max_size }} |
| 62 | + clang_format_version: |
| 63 | + description: clang-format version |
| 64 | + value: ${{ steps.read.outputs.clang_format_version }} |
| 65 | + node_version: |
| 66 | + description: Node.js version |
| 67 | + value: ${{ steps.read.outputs.node_version }} |
| 68 | + flatpak_gnome_version: |
| 69 | + description: GNOME version for Flatpak |
| 70 | + value: ${{ steps.read.outputs.flatpak_gnome_version }} |
| 71 | + |
| 72 | +runs: |
| 73 | + using: composite |
| 74 | + steps: |
| 75 | + - name: Validate and read build config |
| 76 | + id: read |
| 77 | + shell: bash |
| 78 | + run: | |
| 79 | + CONFIG_FILE="${GITHUB_WORKSPACE}/.github/build-config.json" |
| 80 | + if [[ ! -f "$CONFIG_FILE" ]]; then |
| 81 | + echo "::error::Build config not found: $CONFIG_FILE" |
| 82 | + exit 1 |
| 83 | + fi |
| 84 | + if ! jq empty "$CONFIG_FILE" 2>/dev/null; then |
| 85 | + echo "::error::Invalid JSON in $CONFIG_FILE" |
| 86 | + exit 1 |
| 87 | + fi |
| 88 | +
|
| 89 | + # Read all values (no fallbacks - config is authoritative) |
| 90 | + QT_VERSION=$(jq -r '.qt_version' "$CONFIG_FILE") |
| 91 | + QT_MIN_VERSION=$(jq -r '.qt_minimum_version' "$CONFIG_FILE") |
| 92 | + QT_MODULES=$(jq -r '.qt_modules' "$CONFIG_FILE") |
| 93 | + QT_MODULES_IOS=$(echo "$QT_MODULES" | sed 's/qtserialport//g; s/qtscxml//g; s/ */ /g; s/^ *//; s/ *$//') |
| 94 | + GST_VERSION=$(jq -r '.gstreamer_version' "$CONFIG_FILE") |
| 95 | + GST_ANDROID_VERSION=$(jq -r '.gstreamer_android_version' "$CONFIG_FILE") |
| 96 | + GST_WIN_VERSION=$(jq -r '.gstreamer_windows_version' "$CONFIG_FILE") |
| 97 | + NDK_VERSION=$(jq -r '.ndk_version' "$CONFIG_FILE") |
| 98 | + NDK_FULL_VERSION=$(jq -r '.ndk_full_version' "$CONFIG_FILE") |
| 99 | + JAVA_VERSION=$(jq -r '.java_version' "$CONFIG_FILE") |
| 100 | + ANDROID_PLATFORM=$(jq -r '.android_platform' "$CONFIG_FILE") |
| 101 | + ANDROID_MIN_SDK=$(jq -r '.android_min_sdk' "$CONFIG_FILE") |
| 102 | + ANDROID_BUILD_TOOLS=$(jq -r '.android_build_tools' "$CONFIG_FILE") |
| 103 | + ANDROID_CMDLINE_TOOLS=$(jq -r '.android_cmdline_tools' "$CONFIG_FILE") |
| 104 | + XCODE_VERSION=$(jq -r '.xcode_version' "$CONFIG_FILE") |
| 105 | + XCODE_IOS_VERSION=$(jq -r '.xcode_ios_version' "$CONFIG_FILE") |
| 106 | + CMAKE_MIN_VERSION=$(jq -r '.cmake_minimum_version' "$CONFIG_FILE") |
| 107 | + CCACHE_VERSION=$(jq -r '.ccache_version' "$CONFIG_FILE") |
| 108 | + CCACHE_MAX_SIZE=$(jq -r '.ccache_max_size' "$CONFIG_FILE") |
| 109 | + CLANG_FORMAT_VERSION=$(jq -r '.clang_format_version' "$CONFIG_FILE") |
| 110 | + NODE_VERSION=$(jq -r '.node_version' "$CONFIG_FILE") |
| 111 | + FLATPAK_GNOME_VERSION=$(jq -r '.flatpak_gnome_version' "$CONFIG_FILE") |
| 112 | +
|
| 113 | + { |
| 114 | + echo "qt_version=$QT_VERSION" |
| 115 | + echo "qt_minimum_version=$QT_MIN_VERSION" |
| 116 | + echo "qt_modules=$QT_MODULES" |
| 117 | + echo "qt_modules_ios=$QT_MODULES_IOS" |
| 118 | + echo "gstreamer_version=$GST_VERSION" |
| 119 | + echo "gstreamer_android_version=$GST_ANDROID_VERSION" |
| 120 | + echo "gstreamer_windows_version=$GST_WIN_VERSION" |
| 121 | + echo "ndk_version=$NDK_VERSION" |
| 122 | + echo "ndk_full_version=$NDK_FULL_VERSION" |
| 123 | + echo "java_version=$JAVA_VERSION" |
| 124 | + echo "android_platform=$ANDROID_PLATFORM" |
| 125 | + echo "android_min_sdk=$ANDROID_MIN_SDK" |
| 126 | + echo "android_build_tools=$ANDROID_BUILD_TOOLS" |
| 127 | + echo "android_cmdline_tools=$ANDROID_CMDLINE_TOOLS" |
| 128 | + echo "xcode_version=$XCODE_VERSION" |
| 129 | + echo "xcode_ios_version=$XCODE_IOS_VERSION" |
| 130 | + echo "cmake_minimum_version=$CMAKE_MIN_VERSION" |
| 131 | + echo "ccache_version=$CCACHE_VERSION" |
| 132 | + echo "ccache_max_size=$CCACHE_MAX_SIZE" |
| 133 | + echo "clang_format_version=$CLANG_FORMAT_VERSION" |
| 134 | + echo "node_version=$NODE_VERSION" |
| 135 | + echo "flatpak_gnome_version=$FLATPAK_GNOME_VERSION" |
| 136 | + } >> "$GITHUB_OUTPUT" |
| 137 | +
|
| 138 | + # Only set commonly-used variables as environment variables to avoid polluting the env. |
| 139 | + # All values are available as step outputs (e.g., steps.config.outputs.ndk_version). |
| 140 | + - name: Set environment variables |
| 141 | + shell: bash |
| 142 | + run: | |
| 143 | + echo "QT_VERSION=${{ steps.read.outputs.qt_version }}" >> "$GITHUB_ENV" |
| 144 | + echo "GSTREAMER_VERSION=${{ steps.read.outputs.gstreamer_version }}" >> "$GITHUB_ENV" |
0 commit comments