From 8d0563e0529237e167ace0fada1309d591b65842 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Thu, 18 Apr 2024 23:20:17 +0100 Subject: [PATCH] upgrade to newer apple platform runners --- .github/workflows/ios-build-scripts.yml | 98 ++++++++++----------- .github/workflows/macos-build-scripts.yml | 98 ++++++++++----------- .github/workflows/periodic-builds-apple.yml | 30 +++---- .github/workflows/tvos-build-scripts.yml | 98 ++++++++++----------- scripts/apple/libvorbis.sh | 9 +- scripts/function-apple.sh | 11 ++- scripts/function-ios.sh | 6 +- scripts/function-macos.sh | 6 +- scripts/function-tvos.sh | 4 +- 9 files changed, 183 insertions(+), 177 deletions(-) diff --git a/.github/workflows/ios-build-scripts.yml b/.github/workflows/ios-build-scripts.yml index 8dd934d..de252d6 100644 --- a/.github/workflows/ios-build-scripts.yml +++ b/.github/workflows/ios-build-scripts.yml @@ -27,58 +27,58 @@ on: - 'ios.sh' jobs: - build-main-on-macos-monterey: - name: ios main on monterey + build-main-on-macos-sonoma: + name: ios main on sonoma + runs-on: macos-14 + strategy: + matrix: + xcode: [ '14.3.1', '15.3' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + - name: prerequisites + run: brew install autoconf automake libtool pkg-config curl git cmake nasm + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./ios.sh --xcframework --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-macos-ventura: + name: ios main on ventura + runs-on: macos-13 + strategy: + matrix: + xcode: [ '14.3.1', '15.2' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + - name: prerequisites + run: brew install autoconf automake libtool pkg-config curl git cmake nasm + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./ios.sh --xcframework --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-lts-on-macos-monterey: + name: ios lts on monterey runs-on: macos-12 strategy: matrix: - xcode: [ '13.4.1', '14.0.1' ] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git cmake nasm - - name: set up xcode - run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - - name: run the build script - run: ./ios.sh --xcframework --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib - - name: print build logs - if: ${{ always() }} - run: cat build.log - - name: print ffbuild logs - if: ${{ failure() }} - run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-main-on-macos-bigsur: - name: ios main on big sur - runs-on: macos-11 - strategy: - matrix: - xcode: [ '12.5.1', '13.2.1' ] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git cmake nasm - - name: set up xcode - run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - - name: run the build script - run: ./ios.sh --xcframework --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib - - name: print build logs - if: ${{ always() }} - run: cat build.log - - name: print ffbuild logs - if: ${{ failure() }} - run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-lts-on-macos-bigsur: - name: ios lts on big sur - runs-on: macos-11 - strategy: - matrix: - xcode: [ '11.7', '12.4' ] + xcode: [ '13.4.1', '14.2' ] defaults: run: shell: bash diff --git a/.github/workflows/macos-build-scripts.yml b/.github/workflows/macos-build-scripts.yml index ef46f73..f4f2228 100644 --- a/.github/workflows/macos-build-scripts.yml +++ b/.github/workflows/macos-build-scripts.yml @@ -27,58 +27,58 @@ on: - 'macos.sh' jobs: - build-main-on-macos-monterey: - name: macos main on monterey + build-main-on-macos-sonoma: + name: macos main on sonoma + runs-on: macos-14 + strategy: + matrix: + xcode: [ '14.3.1', '15.3' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + - name: prerequisites + run: brew install autoconf automake libtool pkg-config curl git cmake nasm + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./macos.sh --xcframework --enable-macos-audiotoolbox --enable-macos-avfoundation --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-macos-ventura: + name: macos main on ventura + runs-on: macos-13 + strategy: + matrix: + xcode: [ '14.3.1', '15.2' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + - name: prerequisites + run: brew install autoconf automake libtool pkg-config curl git cmake nasm + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./macos.sh --xcframework --enable-macos-audiotoolbox --enable-macos-avfoundation --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-lts-on-macos-monterey: + name: macos lts on monterey runs-on: macos-12 strategy: matrix: - xcode: [ '13.4.1', '14.0.1' ] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git cmake nasm - - name: set up xcode - run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - - name: run the build script - run: ./macos.sh --xcframework --enable-macos-audiotoolbox --enable-macos-avfoundation --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib - - name: print build logs - if: ${{ always() }} - run: cat build.log - - name: print ffbuild logs - if: ${{ failure() }} - run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-main-on-macos-bigsur: - name: macos main on big sur - runs-on: macos-11 - strategy: - matrix: - xcode: [ '12.5.1', '13.2.1' ] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git cmake nasm - - name: set up xcode - run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - - name: run the build script - run: ./macos.sh --xcframework --enable-macos-audiotoolbox --enable-macos-avfoundation --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib - - name: print build logs - if: ${{ always() }} - run: cat build.log - - name: print ffbuild logs - if: ${{ failure() }} - run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-lts-on-macos-bigsur: - name: macos lts on big sur - runs-on: macos-11 - strategy: - matrix: - xcode: [ '11.7', '12.4' ] + xcode: [ '13.4.1', '14.2' ] defaults: run: shell: bash diff --git a/.github/workflows/periodic-builds-apple.yml b/.github/workflows/periodic-builds-apple.yml index c6dfa85..24ab696 100644 --- a/.github/workflows/periodic-builds-apple.yml +++ b/.github/workflows/periodic-builds-apple.yml @@ -5,12 +5,12 @@ on: - cron: '0 1 * * 0' jobs: - build-ios-main-on-macos-ventura: - name: ios main on ventura - runs-on: macos-13 + build-ios-main-on-macos-sonoma: + name: ios main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '14.3.1' ] + xcode: [ '14.3.1', '15.3' ] branches: [ 'main', 'development' ] defaults: run: @@ -36,7 +36,7 @@ jobs: runs-on: macos-12 strategy: matrix: - xcode: [ '14.2' ] + xcode: [ '13.4.1' ] branches: [ 'main', 'development' ] defaults: run: @@ -57,12 +57,12 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-macos-main-on-macos-ventura: - name: macos main on ventura - runs-on: macos-13 + build-macos-main-on-macos-sonoma: + name: macos main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '14.3.1' ] + xcode: [ '14.3.1', '15.3' ] branches: [ 'main', 'development' ] defaults: run: @@ -88,7 +88,7 @@ jobs: runs-on: macos-12 strategy: matrix: - xcode: [ '14.2' ] + xcode: [ '13.4.1' ] branches: [ 'main', 'development' ] defaults: run: @@ -109,12 +109,12 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-tvos-main-on-macos-ventura: - name: tvos main on ventura - runs-on: macos-13 + build-tvos-main-on-macos-sonoma: + name: tvos main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '14.3.1' ] + xcode: [ '14.3.1', '15.3' ] branches: [ 'main', 'development' ] defaults: run: @@ -140,7 +140,7 @@ jobs: runs-on: macos-12 strategy: matrix: - xcode: [ '14.2' ] + xcode: [ '13.4.1' ] branches: [ 'main', 'development' ] defaults: run: diff --git a/.github/workflows/tvos-build-scripts.yml b/.github/workflows/tvos-build-scripts.yml index 0a88232..356a414 100644 --- a/.github/workflows/tvos-build-scripts.yml +++ b/.github/workflows/tvos-build-scripts.yml @@ -27,58 +27,58 @@ on: - 'tvos.sh' jobs: - build-main-on-macos-monterey: - name: tvos main on monterey + build-main-on-macos-sonoma: + name: tvos main on sonoma + runs-on: macos-14 + strategy: + matrix: + xcode: [ '14.3.1', '15.3' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + - name: prerequisites + run: brew install autoconf automake libtool pkg-config curl git cmake nasm + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./tvos.sh --xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-macos-ventura: + name: tvos main on ventura + runs-on: macos-13 + strategy: + matrix: + xcode: [ '14.3.1', '15.2' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + - name: prerequisites + run: brew install autoconf automake libtool pkg-config curl git cmake nasm + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./tvos.sh --xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-lts-on-macos-monterey: + name: tvos lts on monterey runs-on: macos-12 strategy: matrix: - xcode: [ '13.4.1', '14.0.1' ] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git cmake nasm - - name: set up xcode - run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - - name: run the build script - run: ./tvos.sh --xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib - - name: print build logs - if: ${{ always() }} - run: cat build.log - - name: print ffbuild logs - if: ${{ failure() }} - run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-main-on-macos-bigsur: - name: tvos main on big sur - runs-on: macos-11 - strategy: - matrix: - xcode: [ '12.5.1', '13.2.1' ] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git cmake nasm - - name: set up xcode - run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - - name: run the build script - run: ./tvos.sh --xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib - - name: print build logs - if: ${{ always() }} - run: cat build.log - - name: print ffbuild logs - if: ${{ failure() }} - run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-lts-on-macos-bigsur: - name: tvos lts on big sur - runs-on: macos-11 - strategy: - matrix: - xcode: [ '11.7', '12.4' ] + xcode: [ '13.4.1', '14.2' ] defaults: run: shell: bash diff --git a/scripts/apple/libvorbis.sh b/scripts/apple/libvorbis.sh index 00dbee7..56a9950 100755 --- a/scripts/apple/libvorbis.sh +++ b/scripts/apple/libvorbis.sh @@ -10,12 +10,9 @@ ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac | # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 -if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then - - # WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR - # ld: -force_cpusubtype_ALL and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together - ${SED_INLINE} 's/-force_cpusubtype_ALL//g' ${BASEDIR}/src/${LIB_NAME}/configure -fi +# WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR +# ld: -force_cpusubtype_ALL and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together +${SED_INLINE} 's/-force_cpusubtype_ALL//g' ${BASEDIR}/src/${LIB_NAME}/configure PKG_CONFIG= ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index a45b8b9..28238d9 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -1287,6 +1287,15 @@ EOF create_libiconv_system_package_config() { local LIB_ICONV_VERSION=$(grep '_LIBICONV_VERSION' "${SDK_PATH}"/usr/include/iconv.h | grep -Eo '0x.*' | grep -Eo '.* ') + # AFTER XCODE 15.0, libcharset DOES NOT CONTAIN ALL ARCHITECTURES WE SUPPORT + if [[ -n "$DETECTED_IOS_SDK_VERSION" && $(compare_versions "$DETECTED_IOS_SDK_VERSION" "17.0") -ge 0 ]] || + [[ -n "$DETECTED_MACOS_SDK_VERSION" && $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "14.0") -ge 0 ]] || + [[ -n "$DETECTED_TVOS_SDK_VERSION" && $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "17.0") -ge 0 ]]; then + local _REQUIRES_LIBS="-liconv" + else + local _REQUIRES_LIBS="-liconv -lcharset" + fi + cat >"${INSTALL_PKG_CONFIG_DIR}/libiconv.pc" <