diff --git a/.github/actions/cmake/package/action.yml b/.github/actions/cmake/package/action.yml index 3ad6288f..e46cd8a6 100644 --- a/.github/actions/cmake/package/action.yml +++ b/.github/actions/cmake/package/action.yml @@ -4,7 +4,7 @@ runs: steps: - name: Set `CPACK_PACKAGE_FILE_NAME` run: | - echo "CPACK_PACKAGE_FILE_NAME=mod_tile-${GITHUB_SHA}-$(echo ${{ matrix.image || matrix.os || matrix.box_generic || github.job }}-${{ matrix.build_system }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> ${GITHUB_ENV} + echo "CPACK_PACKAGE_FILE_NAME=mod_tile-${GITHUB_SHA}-$(echo ${{ matrix.image || matrix.os || matrix.box_freebsd || github.job }}-${{ matrix.build_system }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> ${GITHUB_ENV} shell: bash --noprofile --norc -euxo pipefail {0} - name: Set `CPACK_OPTIONS` diff --git a/.github/actions/cmake/test/action.yml b/.github/actions/cmake/test/action.yml index 2d2be7c6..c3cfbd1d 100644 --- a/.github/actions/cmake/test/action.yml +++ b/.github/actions/cmake/test/action.yml @@ -15,7 +15,7 @@ runs: - name: Set `TEST_ARTIFACT_NAME` run: | - echo "TEST_ARTIFACT_NAME=$(echo ${{ matrix.image || matrix.os || matrix.box_generic || github.job }}-${{ matrix.build_system }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> ${GITHUB_ENV} + echo "TEST_ARTIFACT_NAME=$(echo ${{ matrix.image || matrix.os || matrix.box_freebsd || github.job }}-${{ matrix.build_system }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> ${GITHUB_ENV} shell: bash --noprofile --norc -euxo pipefail {0} if: failure() diff --git a/.github/actions/coverage/action.yml b/.github/actions/coverage/action.yml index dce1e399..ce353fd2 100644 --- a/.github/actions/coverage/action.yml +++ b/.github/actions/coverage/action.yml @@ -4,6 +4,8 @@ inputs: default: "" lcov-extra-options: default: "" + codecov-token: + default: "" runs: using: composite @@ -33,9 +35,12 @@ runs: shell: bash --noprofile --norc -euxo pipefail {0} - name: Report `mod_tile` coverage results to `codecov.io` - uses: codecov/codecov-action@v3.1.5 + uses: codecov/codecov-action@v4 + env: + CODECOV_TOKEN: ${{ inputs.codecov-token }} with: - files: coverage.info + disable_search: true + file: coverage.info - name: Write `mod_tile` coverage summary to `$GITHUB_STEP_SUMMARY` run: | @@ -53,7 +58,7 @@ runs: - name: Set `COVERAGE_ARTIFACT_NAME` run: | - echo "COVERAGE_ARTIFACT_NAME=$(echo ${{ matrix.image || matrix.os || matrix.box_generic || github.job }}-${{ matrix.build_system }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> ${GITHUB_ENV} + echo "COVERAGE_ARTIFACT_NAME=$(echo ${{ matrix.image || matrix.os || matrix.box_freebsd || github.job }}-${{ matrix.build_system }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> ${GITHUB_ENV} shell: bash --noprofile --norc -euxo pipefail {0} - name: Upload `mod_tile` coverage artifacts diff --git a/.github/actions/dependencies/build-and-install/mapnik/action.yml b/.github/actions/dependencies/build-and-install/mapnik/action.yml index ee40294a..9d3c9018 100644 --- a/.github/actions/dependencies/build-and-install/mapnik/action.yml +++ b/.github/actions/dependencies/build-and-install/mapnik/action.yml @@ -15,7 +15,7 @@ runs: path: | mapnik-build mapnik-src - key: ${{ matrix.image || matrix.os || matrix.box_generic || github.job }}-${{ matrix.compiler }}-mapnik-${{ inputs.version }} + key: ${{ matrix.image || matrix.os || matrix.box_freebsd || github.job }}-${{ matrix.compiler }}-mapnik-${{ inputs.version }} - name: Checkout `Mapnik` uses: actions/checkout@v4 diff --git a/.github/actions/dependencies/install/action.yml b/.github/actions/dependencies/install/action.yml index 06b4805f..fbf3395f 100644 --- a/.github/actions/dependencies/install/action.yml +++ b/.github/actions/dependencies/install/action.yml @@ -1,5 +1,39 @@ --- inputs: + centos-stream-build-dependencies: + default: >- + cairo-devel + glib2-devel + httpd-devel + iniparser-devel + libcurl-devel + libmemcached-devel + librados2-devel + centos-stream-test-dependencies: + default: >- + httpd + jq + lcov + memcached + procps + centos-stream-mapnik-build-dependencies: + default: >- + boost-devel + cmake + freetype-devel + gdal-devel + git + harfbuzz-devel + libicu-devel + libjpeg-devel + libpng-devel + libtiff-devel + libwebp-devel + libxml2-devel + postgresql-devel + proj-devel + sqlite-devel + zlib-devel debian-build-dependencies: default: >- apache2-dev @@ -30,6 +64,7 @@ inputs: debian-test-dependencies: default: >- apache2 + git jq lcov memcached @@ -47,6 +82,7 @@ inputs: sqlite-devel fedora-test-dependencies: default: >- + git httpd jq lcov @@ -75,6 +111,7 @@ inputs: curl glib httpd + icu4c iniparser libmemcached mapnik @@ -103,6 +140,7 @@ inputs: jq lcov memcached + procps opensuse-mapnik-build-dependencies: default: >- cmake @@ -121,40 +159,6 @@ inputs: proj-devel sqlite3-devel zlib-devel - rhel-build-dependencies: - default: >- - cairo-devel - glib2-devel - httpd-devel - iniparser-devel - libcurl-devel - libmemcached-devel - librados2-devel - rhel-test-dependencies: - default: >- - httpd - jq - lcov - memcached - procps - rhel-mapnik-build-dependencies: - default: >- - boost-devel - cmake - freetype-devel - gdal-devel - git - harfbuzz-devel - libicu-devel - libjpeg-devel - libpng-devel - libtiff-devel - libwebp-devel - libxml2-devel - postgresql-devel - proj-devel - sqlite-devel - zlib-devel ubuntu-build-dependencies: default: >- apache2-dev @@ -185,13 +189,14 @@ inputs: ubuntu-test-dependencies: default: >- apache2 + git jq lcov memcached mapnik-build-version-centos-stream: - default: 4.0.0 + default: 4.0.3 mapnik-build-version-opensuse: - default: 4.0.0 + default: 4.0.3 runs: using: composite @@ -201,9 +206,9 @@ runs: with: dependencies: epel-release packages: >- - ${{ inputs.rhel-build-dependencies }} - ${{ inputs.rhel-mapnik-build-dependencies }} - ${{ inputs.rhel-test-dependencies }} + ${{ inputs.centos-stream-build-dependencies }} + ${{ inputs.centos-stream-mapnik-build-dependencies }} + ${{ inputs.centos-stream-test-dependencies }} ${{ matrix.build_system == 'CMake' && 'cmake' || 'autoconf automake redhat-rpm-config' }} ${{ matrix.compiler == 'LLVM' && 'clang' || 'gcc gcc-c++' }} rpm-build diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index d3c93c86..793a8ff2 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -22,8 +22,8 @@ jobs: image: - "debian:11" - "debian:12" - - "fedora:39" - "fedora:40" + - "fedora:41" - "opensuse/leap:15" - "quay.io/centos/centos:stream9" - "ubuntu:22.04" @@ -83,6 +83,8 @@ jobs: - name: Process & Report `mod_tile` coverage results uses: ./.github/actions/coverage + with: + codecov-token: ${{ secrets.CODECOV_TOKEN }} if: | matrix.compiler != 'LLVM' && !startsWith(matrix.image, 'opensuse/') && @@ -137,6 +139,8 @@ jobs: - name: Process & Report `mod_tile` coverage results uses: ./.github/actions/coverage + with: + codecov-token: ${{ secrets.CODECOV_TOKEN }} - name: Package `mod_tile` uses: ./.github/actions/cmake/package @@ -161,8 +165,8 @@ jobs: fail-fast: false matrix: os: - - macos-12 - macos-13 + - macos-14 build_system: - CMake compiler: @@ -170,7 +174,7 @@ jobs: on_default_branch: - ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }} include: - - os: macos-14 + - os: macos-15 build_system: CMake compiler: LLVM exclude: @@ -197,6 +201,7 @@ jobs: - name: Process & Report `mod_tile` coverage results uses: ./.github/actions/coverage with: + codecov-token: ${{ secrets.CODECOV_TOKEN }} genhtml-extra-options: --keep-going --ignore-errors count,inconsistent,range lcov-extra-options: --keep-going --ignore-errors count,inconsistent,range if: matrix.os != 'macos-12' @@ -218,14 +223,14 @@ jobs: LIBRARY_PATH: /usr/local/lib TMPDIR: /tmp name: >- - ${{ matrix.box_generic }} + ${{ matrix.box_freebsd }} (${{ matrix.build_system }}) (${{ matrix.compiler }}) runs-on: ubuntu-latest strategy: matrix: - box_generic: - - freebsd13 + box_freebsd: + - FreeBSD-13.4-STABLE build_system: - CMake compiler: @@ -233,7 +238,7 @@ jobs: on_default_branch: - ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }} include: - - box_generic: freebsd14 + - box_freebsd: FreeBSD-14.1-STABLE build_system: CMake compiler: LLVM exclude: @@ -249,9 +254,9 @@ jobs: echo "TEST_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV} - name: Provision VM - uses: hummeltech/freebsd-vagrant-action@v2 + uses: hummeltech/freebsd-vagrant-action@v3 with: - box: generic/${{ matrix.box_generic }} + box: freebsd/${{ matrix.box_freebsd }} cpus: ${{ env.BUILD_PARALLEL_LEVEL }} memory: 4096 @@ -273,6 +278,8 @@ jobs: - name: Process & Report `mod_tile` coverage results uses: ./.github/actions/coverage + with: + codecov-token: ${{ secrets.CODECOV_TOKEN }} - name: Package `mod_tile` uses: ./.github/actions/cmake/package diff --git a/.github/workflows/docker-image-build.yml b/.github/workflows/docker-image-build.yml index 006aef43..aa08a453 100644 --- a/.github/workflows/docker-image-build.yml +++ b/.github/workflows/docker-image-build.yml @@ -35,8 +35,8 @@ jobs: - centos-stream-9 - debian-11 - debian-12 - - fedora-39 - fedora-40 + - fedora-41 - opensuse-leap-15 - ubuntu-22.04 - ubuntu-24.04 diff --git a/docker/centos/stream/Dockerfile b/docker/centos/stream/Dockerfile index d08a996a..d5727989 100644 --- a/docker/centos/stream/Dockerfile +++ b/docker/centos/stream/Dockerfile @@ -2,7 +2,7 @@ # Arguments ARG centos_stream_version=9 ARG extra_repository=crb -ARG mapnik_version=4.0.0 +ARG mapnik_version=4.0.3 # Mapnik Builder FROM quay.io/centos/centos:stream${centos_stream_version} AS mapnik-builder diff --git a/docker/centos/stream/Dockerfile.autotools b/docker/centos/stream/Dockerfile.autotools index 08960d22..867f975d 100644 --- a/docker/centos/stream/Dockerfile.autotools +++ b/docker/centos/stream/Dockerfile.autotools @@ -2,7 +2,7 @@ # Arguments ARG centos_stream_version=9 ARG extra_repository=crb -ARG mapnik_version=4.0.0 +ARG mapnik_version=4.0.3 # Mapnik Builder FROM quay.io/centos/centos:stream${centos_stream_version} AS mapnik-builder diff --git a/docker/debian/Dockerfile b/docker/debian/Dockerfile index e0cd40a3..3231af0c 100644 --- a/docker/debian/Dockerfile +++ b/docker/debian/Dockerfile @@ -1,6 +1,7 @@ # hadolint global ignore=DL3008,DL3025,DL3059 # Arguments ARG debian_version=12 +ARG libiniparser_version=1 ARG libmapnik_version=3.1 ARG runner_additional_packages=libcurl4 libglib2.0 @@ -54,6 +55,7 @@ FROM debian:${debian_version} AS runner ## Arguments ARG debian_version +ARG libiniparser_version ARG libmapnik_version ARG runner_additional_packages @@ -66,7 +68,7 @@ RUN --mount=type=cache,sharing=locked,id=debian:${debian_version}-/var/cache/apt apt-get --no-install-recommends --yes install ${runner_additional_packages} \ apache2 \ libcairo2 \ - libiniparser1 \ + libiniparser${libiniparser_version} \ libmapnik${libmapnik_version} \ libmemcached11 \ libmemcachedutil2 \ diff --git a/docker/debian/Dockerfile.autotools b/docker/debian/Dockerfile.autotools index 3ba53eed..24daa57e 100644 --- a/docker/debian/Dockerfile.autotools +++ b/docker/debian/Dockerfile.autotools @@ -1,6 +1,7 @@ # hadolint global ignore=DL3008,DL3025,DL3059 # Arguments ARG debian_version=12 +ARG libiniparser_version=1 ARG libmapnik_version=3.1 ARG runner_additional_packages=libcurl4 libglib2.0 @@ -45,6 +46,7 @@ FROM debian:${debian_version} AS runner ## Arguments ARG debian_version +ARG libiniparser_version ARG libmapnik_version ARG runner_additional_packages @@ -57,7 +59,7 @@ RUN --mount=type=cache,sharing=locked,id=debian:${debian_version}-/var/cache/apt apt-get --no-install-recommends --yes install ${runner_additional_packages} \ apache2 \ libcairo2 \ - libiniparser1 \ + libiniparser${libiniparser_version} \ libmapnik${libmapnik_version} \ libmemcached11 \ librados2 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 239bb234..541937b4 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -134,6 +134,7 @@ services: build: <<: *build_defaults_debian args: + libiniparser_version: 4 libmapnik_version: "4.0" debian_version: unstable runner_additional_packages: >- @@ -144,6 +145,7 @@ services: build: <<: *build_defaults_debian args: + libiniparser_version: 4 libmapnik_version: "4.0" debian_version: unstable runner_additional_packages: >- @@ -192,6 +194,12 @@ services: <<: *build_defaults_fedora args: fedora_version: "40" + fedora-41: + <<: *service_defaults + build: + <<: *build_defaults_fedora + args: + fedora_version: "41" fedora-rawhide: <<: *service_defaults build: diff --git a/docker/opensuse/Dockerfile b/docker/opensuse/Dockerfile index 2148b8c4..38aeb60c 100644 --- a/docker/opensuse/Dockerfile +++ b/docker/opensuse/Dockerfile @@ -2,7 +2,7 @@ # Arguments ARG boost_version ARG gcc_version -ARG mapnik_version=4.0.0 +ARG mapnik_version=4.0.3 ARG opensuse_release=leap ARG opensuse_version=15 @@ -107,6 +107,7 @@ RUN --mount=type=cache,sharing=locked,id=opensuse/${opensuse_release}:${opensuse libtiff-devel \ libwebp-devel \ libxml2-devel \ + procps \ proj-devel \ tar diff --git a/docs/build/building_on_fedora.md b/docs/build/building_on_fedora.md index e59fa0fe..83c0bfc8 100644 --- a/docs/build/building_on_fedora.md +++ b/docs/build/building_on_fedora.md @@ -6,7 +6,7 @@ Please see our [Continuous Integration script](/.github/workflows/build-and-test A Docker-based building & testing setup pipeline is also available [here](/docker) for your convenience. -## Fedora 34/35/36/37/38/39/40 +## Fedora 34/35/36/37/38/39/40/41 ```shell #!/usr/bin/env bash @@ -29,7 +29,8 @@ sudo dnf --assumeyes --setopt=install_weak_deps=False install \ libmemcached-devel \ librados-devel \ mapnik-devel \ - mapnik-static + mapnik-static \ + procps # Download, Build, Test & Install `mod_tile` export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) diff --git a/docs/build/building_on_macos.md b/docs/build/building_on_macos.md index 2bea92b8..6ec3a9dd 100644 --- a/docs/build/building_on_macos.md +++ b/docs/build/building_on_macos.md @@ -4,7 +4,7 @@ This document provides users with step-by-step instructions on how to compile an Please see our [Continuous Integration script](/.github/workflows/build-and-test.yml) for more details. -## macOS 11/12/13/14 +## macOS 11/12/13/14/15 ```shell #!/usr/bin/env bash @@ -22,6 +22,7 @@ brew install \ curl \ glib \ httpd \ + icu4c \ iniparser \ libmemcached \ mapnik \ diff --git a/docs/build/building_on_opensuse.md b/docs/build/building_on_opensuse.md index 0e498ffa..da451f68 100644 --- a/docs/build/building_on_opensuse.md +++ b/docs/build/building_on_opensuse.md @@ -38,6 +38,7 @@ sudo zypper --non-interactive install \ libtiff-devel \ libwebp-devel \ libxml2-devel \ + procps \ proj-devel \ tar