From fa5a84d2252321d46a8b1fad38a62032ceaee470 Mon Sep 17 00:00:00 2001 From: Fabrice de Gans Date: Wed, 28 Aug 2024 15:22:27 -0700 Subject: [PATCH] [Mac build] Build libxml2 on Mac * Turn the libxml2 version into an input so it only needs to be set once. --- .github/workflows/build-toolchain.yml | 4 ++ .github/workflows/swift-toolchain.yml | 92 +++++++-------------------- 2 files changed, 26 insertions(+), 70 deletions(-) diff --git a/.github/workflows/build-toolchain.yml b/.github/workflows/build-toolchain.yml index 7dab6c423..232bb457b 100644 --- a/.github/workflows/build-toolchain.yml +++ b/.github/workflows/build-toolchain.yml @@ -101,6 +101,7 @@ jobs: ds2_revision: ${{ steps.context.outputs.ds2_revision }} indexstore_db_revision: ${{ steps.context.outputs.indexstore_db_revision }} libxml2_revision: ${{ steps.context.outputs.libxml2_revision }} + libxml2_version: ${{ steps.context.outputs.libxml2_version }} llvm_project_revision: ${{ steps.context.outputs.llvm_project_revision }} sourcekit_lsp_revision: ${{ steps.context.outputs.sourcekit_lsp_revision }} swift_argument_parser_revision: ${{ steps.context.outputs.swift_argument_parser_revision }} @@ -226,6 +227,7 @@ jobs: repo manifest -r --suppress-upstream-revision --suppress-dest-branch -o - | sed -E 's,[[:space:]]+$,,' > stable.xml fi + echo libxml2_version=2.11.5 >> ${GITHUB_OUTPUT} echo curl_version=8.9.1 >> ${GITHUB_OUTPUT} echo swift_toolchain_sqlite_version=3.46.0 >> ${GITHUB_OUTPUT} echo swift_cmark_version=0.29.0.gfm.13 >> ${GITHUB_OUTPUT} @@ -476,6 +478,7 @@ jobs: ds2_revision: ${{ needs.context.outputs.ds2_revision }} indexstore_db_revision: ${{ needs.context.outputs.indexstore_db_revision }} libxml2_revision: ${{ needs.context.outputs.libxml2_revision }} + libxml2_version: ${{ needs.context.outputs.libxml2_version }} llvm_project_revision: ${{ needs.context.outputs.llvm_project_revision }} sourcekit_lsp_revision: ${{ needs.context.outputs.sourcekit_lsp_revision }} swift_argument_parser_revision: ${{ needs.context.outputs.swift_argument_parser_revision }} @@ -547,6 +550,7 @@ jobs: ds2_revision: ${{ needs.context.outputs.ds2_revision }} indexstore_db_revision: ${{ needs.context.outputs.indexstore_db_revision }} libxml2_revision: ${{ needs.context.outputs.libxml2_revision }} + libxml2_version: ${{ needs.context.outputs.libxml2_version }} llvm_project_revision: ${{ needs.context.outputs.llvm_project_revision }} sourcekit_lsp_revision: ${{ needs.context.outputs.sourcekit_lsp_revision }} swift_argument_parser_revision: ${{ needs.context.outputs.swift_argument_parser_revision }} diff --git a/.github/workflows/swift-toolchain.yml b/.github/workflows/swift-toolchain.yml index df89a2b17..ce4d3cd25 100644 --- a/.github/workflows/swift-toolchain.yml +++ b/.github/workflows/swift-toolchain.yml @@ -43,6 +43,10 @@ on: required: true type: string + libxml2_version: + required: true + type: string + llvm_project_revision: required: true type: string @@ -1215,69 +1219,11 @@ jobs: path: ${{ github.workspace }}/BuildRoot/Library/curl-${{ inputs.curl_version }}/usr libxml2: - # TODO: Build this on macOS or make an equivalent Mac-only job - if: inputs.build_os == 'Windows' runs-on: ${{ inputs.default_build_runner }} strategy: fail-fast: false - matrix: - include: - - arch: amd64 - cc: cl - cflags: ${{ inputs.WINDOWS_CMAKE_C_FLAGS }} - cxx: cl - cxxflags: ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }} - os: Windows - extra_flags: - - - arch: arm64 - cc: cl - cflags: ${{ inputs.WINDOWS_CMAKE_C_FLAGS }} - cxx: cl - cxxflags: ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }} - os: Windows - extra_flags: - - - arch: x86 - cc: cl - cflags: ${{ inputs.WINDOWS_CMAKE_C_FLAGS }} - cxx: cl - cxxflags: ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }} - os: Windows - extra_flags: - - - arch: arm64 - cc: clang - cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }} - cxx: clang++ - cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }} - os: Android - extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a - - - arch: armv7 - cc: clang - cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }} - cxx: clang++ - cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }} - os: Android - extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a - - - arch: i686 - cc: clang - cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }} - cxx: clang++ - cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }} - os: Android - extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=x86 - - - arch: x86_64 - cc: clang - cflags: ${{ inputs.ANDROID_CMAKE_C_FLAGS }} - cxx: clang++ - cxxflags: ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }} - os: Android - extra_flags: -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=x86_64 + matrix: ${{ fromJSON(inputs.target_matrix) }} name: ${{ matrix.os }} ${{ matrix.arch }} libxml2 @@ -1295,6 +1241,9 @@ jobs: components: 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64' arch: ${{ matrix.arch }} + - uses: seanmiddleditch/gha-setup-ninja@master + if: inputs.build_os == 'Darwin' + - name: Compute workspace hash id: workspace_hash shell: pwsh @@ -1321,8 +1270,11 @@ jobs: - name: Configure libxml2 run: | - $NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }} - cmake -B ${{ github.workspace }}/BinaryCache/libxml2-2.11.5 ` + $NDKPATH = "${{ steps.setup-ndk.outputs.ndk-path }}" + if ( "${{ inputs.build_os }}" -eq "Windows" ) { + $NDKPATH = cygpath -m $NDKPATH + } + cmake -B ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }} ` -D BUILD_SHARED_LIBS=NO ` -D CMAKE_BUILD_TYPE=Release ` -D CMAKE_C_COMPILER=${{ matrix.cc }} ` @@ -1332,7 +1284,7 @@ jobs: -D CMAKE_CXX_COMPILER_LAUNCHER=sccache ` -D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" ` -D CMAKE_MT=mt ` - -D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr ` + -D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr ` -D CMAKE_SYSTEM_NAME=${{ matrix.os }} ` ${{ matrix.extra_flags }} ` -G Ninja ` @@ -1347,14 +1299,14 @@ jobs: -D CMAKE_POSITION_INDEPENDENT_CODE=YES ` -D CMAKE_ANDROID_NDK=$NDKPATH - name: Build libxml2 - run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-2.11.5 + run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }} - name: Install libxml2 - run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-2.11.5 --target install + run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }} --target install - uses: actions/upload-artifact@v4 with: - name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-2.11.5 - path: ${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr + name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-${{ inputs.libxml2_version }} + path: ${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr stdlib: # TODO: Build this on macOS or make an equivalent Mac-only job @@ -1906,8 +1858,8 @@ jobs: steps: - uses: actions/download-artifact@v4 with: - name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-2.11.5 - path: ${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr + name: libxml2-${{ matrix.os }}-${{ matrix.arch }}-${{ inputs.libxml2_version }} + path: ${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr - uses: actions/download-artifact@v4 with: name: curl-${{ matrix.os }}-${{ matrix.arch }}-${{ inputs.curl_version }} @@ -2135,8 +2087,8 @@ jobs: -D _SwiftFoundationICU_SourceDIR=$SWIFT_FOUNDATION_ICU_SOURCE_DIR ` -D _SwiftCollections_SourceDIR=$SWIFT_COLLECTIONS_SOURCE_DIR ` -D LIBXML2_DEFINITIONS="${DEFINITION_FLAG}LIBXML_STATIC" ` - -D LIBXML2_INCLUDE_DIR=${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr/include/libxml2 ` - -D LIBXML2_LIBRARY=${{ github.workspace }}/BuildRoot/Library/libxml2-2.11.5/usr/lib/$LIBXML ` + -D LIBXML2_INCLUDE_DIR=${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr/include/libxml2 ` + -D LIBXML2_LIBRARY=${{ github.workspace }}/BuildRoot/Library/libxml2-${{ inputs.libxml2_version }}/usr/lib/$LIBXML ` -D ZLIB_ROOT=${{ github.workspace }}/BuildRoot/Library/zlib-${{ inputs.zlib_version }}/usr ` -D ZLIB_LIBRARY=${{ github.workspace }}/BuildRoot/Library/zlib-${{ inputs.zlib_version }}/usr/lib/$LIBZ ` -D SwiftFoundation_MACRO=${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin