diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56175a4cb..850fc412f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: strategy: matrix: variant: ['android', 'ios', 'ios_metal'] - runs-on: macos-latest + runs-on: ${{ matrix.variant == 'android' && 'ubuntu-latest' || 'macos-latest' }} needs: [create-release] name: CartoMobileSDK ${{ matrix.variant }} steps: @@ -83,24 +83,52 @@ jobs: id: setup-ndk with: ndk-version: r25c - - - name: Install CMake - run: | - brew install cmake - cmake --version + local-cache: false - - name: Install gradle + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + + - name: Setup JDK + uses: actions/setup-java@v4 if: matrix.variant == 'android' + with: + cache: gradle + java-version: 17 + distribution: 'temurin' + + - name: Cache Gradle packages + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: 3.12 + + - name: ensure dist run: | - brew install gradle@8 - brew info gradle@8 - brew link gradle@8 - which gradle + mkdir dist - name: fetch externals run: | git submodule update --init --remote --recursive + - name: Install build tools + if: matrix.variant == 'android' + run: | + sudo apt-get install autoconf automake libtool build-essential + + - name: Install build tools + if: matrix.variant != 'android' + run: | + brew install autoconf automake libtool + - name: prepare boost run: | wget https://boostorg.jfrog.io/artifactory/main/release/1.85.0/source/boost_1_85_0.zip @@ -110,9 +138,30 @@ jobs: ./bootstrap.sh ./b2 headers + - name: Build CSS2XML + if: matrix.variant != 'ios_metal' + run: | + cd libs-carto/cartocss/util + cmake -B build -DCMAKE_BUILD_TYPE=Release + cd build + make css2xml + mv css2xml css2xml_${{ matrix.variant }} + zip ../../../../dist/css2xml_${{ matrix.variant }}.zip css2xml_${{ matrix.variant }} + - name: Build swig + if: matrix.variant == 'android' + run: | + git clone https://github.com/farfromrefug/mobile-swig.git + cd mobile-swig + wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.gz + ./Tools/pcre-build.sh + ./autogen.sh + ./configure + make + + - name: Build swig + if: matrix.variant != 'android' run: | - brew install autoconf automake libtool git clone https://github.com/farfromrefug/mobile-swig.git cd mobile-swig wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.gz @@ -137,7 +186,7 @@ jobs: if: matrix.variant == 'android' run: | cd scripts - python build-android.py --profile standard+valhalla --build-aar --build-version ${{ needs.create-release.outputs.VERSION }}--configuration=Release --gradle /opt/homebrew/bin/gradle + python build-android.py --profile standard+valhalla --build-aar --build-version ${{ needs.create-release.outputs.VERSION }}--configuration=Release env: ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} @@ -153,11 +202,13 @@ jobs: cd scripts python build-ios.py --profile standard+valhalla --build-cocoapod --build-version ${{ needs.create-release.outputs.VERSION }} --configuration=Release --build-xcframework --use-metalangle + - uses: actions/upload-artifact@v4 if: matrix.variant == 'android' with: name: CartoMobileSDK-${{matrix.variant}}-${{ needs.create-release.outputs.VERSION }}.zip path: | + dist/css2xml_*.zip dist/android/*.aar dist/android/*.jar dist/android/*.pom @@ -166,78 +217,29 @@ jobs: if: matrix.variant != 'android' with: name: CartoMobileSDK-${{matrix.variant}}-${{ needs.create-release.outputs.VERSION }}.zip - path: dist/${{matrix.variant}}/*.zip + path: | + dist/css2xml_*.zip + dist/${{matrix.variant}}/*.zip - name: Upload Release Asset if: matrix.variant == 'android' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: + run: | + gh release upload ${{ needs.create-release.outputs.VERSION_TAG }} dist/css2xml_*.zip gh release upload ${{ needs.create-release.outputs.VERSION_TAG }} dist/android/*.aar + - name: Upload Release Asset if: matrix.variant != 'android' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: - gh release upload ${{ needs.create-release.outputs.VERSION_TAG }} dist/${{matrix.variant}}/*.zip - - build-css2xml: - needs: [create-release] - strategy: - matrix: - variant: ['linux', 'darmin'] - runs-on: ${{ matrix.variant == 'linux' && 'ubuntu-latest' || 'macos-latest' }} - name: CartoMobileSDK CSS2XML ${{ matrix.variant }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v2 - - - name: Install gradle - if: matrix.variant == 'android' run: | - brew install gradle@8 - brew info gradle@8 - brew link gradle@8 - which gradle - - - name: fetch externals - run: | - git submodule update --init --remote --recursive - - - name: prepare boost - run: | - wget https://boostorg.jfrog.io/artifactory/main/release/1.85.0/source/boost_1_85_0.zip - unzip boost_1_85_0.zip - ln -s ../boost_1_85_0 libs-external/boost - cd boost_1_85_0 - ./bootstrap.sh - ./b2 headers - - - name: build css2xml - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - cd libs-carto/cartocss/util - cmake -B build -DCMAKE_BUILD_TYPE=Release - cd build - make css2xml - mv css2xml css2xml_${{ matrix.variant }} - gh release upload ${{ needs.create-release.outputs.VERSION_TAG }} css2xml_${{ matrix.variant }} - - - name: Upload Release Asset - if: matrix.variant != 'android' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: + gh release upload ${{ needs.create-release.outputs.VERSION_TAG }} dist/css2xml_*.zip gh release upload ${{ needs.create-release.outputs.VERSION_TAG }} dist/${{matrix.variant}}/*.zip update-release: runs-on: ubuntu-latest - needs: [create-release, build, build-css2xml] + needs: [create-release, build] permissions: contents: write # release changes require contents write steps: