mirror of
https://github.com/openstreetmap/mod_tile.git
synced 2025-08-12 02:41:14 +00:00
Add Fedora 40 to build pipeline (#430)
_And_: * Remove Fedora 38 * Fix `openSUSE Leap 15` Docker build's default GCC no longer compiles `Mapnik` latest * C++17 is now required, so a newer GCC will be installed * Fix for coverage capturing with LCOV 2.1 * Seems to currently only exist on macOS
This commit is contained in:
4
.github/actions/autotools/build/action.yml
vendored
4
.github/actions/autotools/build/action.yml
vendored
@ -6,10 +6,6 @@ runs:
|
|||||||
run: ./autogen.sh
|
run: ./autogen.sh
|
||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
|
|
||||||
- name: Create `build` directory link
|
|
||||||
run: ln -s . build
|
|
||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
|
||||||
|
|
||||||
- name: Run `./configure`
|
- name: Run `./configure`
|
||||||
run: ./configure
|
run: ./configure
|
||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
|
23
.github/actions/coverage/action.yml
vendored
23
.github/actions/coverage/action.yml
vendored
@ -8,13 +8,21 @@ inputs:
|
|||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- name: Process `mod_tile` coverage results
|
- name: Process `mod_tile` coverage results with CTest
|
||||||
run: |
|
run: |
|
||||||
ctest -T coverage || true
|
ctest -T coverage || true
|
||||||
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
|
working-directory: build
|
||||||
|
if: matrix.build_system == 'CMake'
|
||||||
|
|
||||||
|
- name: Process `mod_tile` coverage results
|
||||||
|
run: |
|
||||||
lcov ${{ inputs.lcov-extra-options }} \
|
lcov ${{ inputs.lcov-extra-options }} \
|
||||||
|
--base-directory . \
|
||||||
--capture \
|
--capture \
|
||||||
--directory . \
|
--directory ${{ matrix.build_system == 'CMake' && 'build' || '.' }} \
|
||||||
--output-file coverage.info
|
--output-file coverage.info \
|
||||||
|
--rc geninfo_unexecuted_blocks=1
|
||||||
lcov ${{ inputs.lcov-extra-options }} \
|
lcov ${{ inputs.lcov-extra-options }} \
|
||||||
--output-file coverage.info \
|
--output-file coverage.info \
|
||||||
--remove coverage.info \
|
--remove coverage.info \
|
||||||
@ -22,12 +30,11 @@ runs:
|
|||||||
"${GITHUB_WORKSPACE}/tests/*" \
|
"${GITHUB_WORKSPACE}/tests/*" \
|
||||||
"/usr/*"
|
"/usr/*"
|
||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
working-directory: build
|
|
||||||
|
|
||||||
- name: Report `mod_tile` coverage results to `codecov.io`
|
- name: Report `mod_tile` coverage results to `codecov.io`
|
||||||
uses: codecov/codecov-action@v3.1.5
|
uses: codecov/codecov-action@v3.1.5
|
||||||
with:
|
with:
|
||||||
files: build/coverage.info
|
files: coverage.info
|
||||||
|
|
||||||
- name: Write `mod_tile` coverage summary to `$GITHUB_STEP_SUMMARY`
|
- name: Write `mod_tile` coverage summary to `$GITHUB_STEP_SUMMARY`
|
||||||
run: |
|
run: |
|
||||||
@ -35,7 +42,6 @@ runs:
|
|||||||
--summary \
|
--summary \
|
||||||
coverage.info | sed 's/^ /* /g' >> ${GITHUB_STEP_SUMMARY}
|
coverage.info | sed 's/^ /* /g' >> ${GITHUB_STEP_SUMMARY}
|
||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
working-directory: build
|
|
||||||
|
|
||||||
- name: Generate `mod_tile` coverage artifacts
|
- name: Generate `mod_tile` coverage artifacts
|
||||||
run: |
|
run: |
|
||||||
@ -43,7 +49,6 @@ runs:
|
|||||||
--output-directory coverage \
|
--output-directory coverage \
|
||||||
coverage.info
|
coverage.info
|
||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
working-directory: build
|
|
||||||
|
|
||||||
- name: Set `COVERAGE_ARTIFACT_NAME`
|
- name: Set `COVERAGE_ARTIFACT_NAME`
|
||||||
run: |
|
run: |
|
||||||
@ -55,5 +60,5 @@ runs:
|
|||||||
with:
|
with:
|
||||||
name: Coverage Artifacts - ${{ env.COVERAGE_ARTIFACT_NAME }}${{ matrix.mapnik_latest && ' (Latest Mapnik)' || '' }}
|
name: Coverage Artifacts - ${{ env.COVERAGE_ARTIFACT_NAME }}${{ matrix.mapnik_latest && ' (Latest Mapnik)' || '' }}
|
||||||
path: |
|
path: |
|
||||||
build/coverage
|
coverage
|
||||||
build/coverage.info
|
coverage.info
|
||||||
|
6
.github/workflows/build-and-test.yml
vendored
6
.github/workflows/build-and-test.yml
vendored
@ -22,8 +22,8 @@ jobs:
|
|||||||
image:
|
image:
|
||||||
- "debian:11"
|
- "debian:11"
|
||||||
- "debian:12"
|
- "debian:12"
|
||||||
- "fedora:38"
|
|
||||||
- "fedora:39"
|
- "fedora:39"
|
||||||
|
- "fedora:40"
|
||||||
- "opensuse/leap:15"
|
- "opensuse/leap:15"
|
||||||
- "quay.io/centos/centos:stream8"
|
- "quay.io/centos/centos:stream8"
|
||||||
- "quay.io/centos/centos:stream9"
|
- "quay.io/centos/centos:stream9"
|
||||||
@ -202,8 +202,8 @@ jobs:
|
|||||||
- name: Process & Report `mod_tile` coverage results
|
- name: Process & Report `mod_tile` coverage results
|
||||||
uses: ./.github/actions/coverage
|
uses: ./.github/actions/coverage
|
||||||
with:
|
with:
|
||||||
genhtml-extra-options: --ignore-errors inconsistent --ignore-errors unmapped
|
genhtml-extra-options: --keep-going --ignore-errors count,inconsistent,range
|
||||||
lcov-extra-options: --ignore-errors gcov --ignore-errors inconsistent
|
lcov-extra-options: --keep-going --ignore-errors count,inconsistent,range
|
||||||
|
|
||||||
- name: Package `mod_tile`
|
- name: Package `mod_tile`
|
||||||
uses: ./.github/actions/cmake/package
|
uses: ./.github/actions/cmake/package
|
||||||
|
2
.github/workflows/docker-image-build.yml
vendored
2
.github/workflows/docker-image-build.yml
vendored
@ -22,8 +22,8 @@ jobs:
|
|||||||
- centos-stream-9
|
- centos-stream-9
|
||||||
- debian-11
|
- debian-11
|
||||||
- debian-12
|
- debian-12
|
||||||
- fedora-38
|
|
||||||
- fedora-39
|
- fedora-39
|
||||||
|
- fedora-40
|
||||||
- opensuse-leap-15
|
- opensuse-leap-15
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
- ubuntu-22.04
|
- ubuntu-22.04
|
||||||
|
@ -18,6 +18,7 @@ For your convenience, we have provided a Docker-based building and testing metho
|
|||||||
- fedora-37 _(Fedora 37)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
- fedora-37 _(Fedora 37)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
||||||
- fedora-38 _(Fedora 38)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
- fedora-38 _(Fedora 38)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
||||||
- fedora-39 _(Fedora 39)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
- fedora-39 _(Fedora 39)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
||||||
|
- fedora-40 _(Fedora 40)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
||||||
- fedora-rawhide _(Fedora Rawhide)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
- fedora-rawhide _(Fedora Rawhide)_ [[Dockerfile](/docker/fedora/Dockerfile)]
|
||||||
- opensuse-leap-15 _(openSUSE Leap 15)_ [[Dockerfile](/docker/opensuse/Dockerfile)]
|
- opensuse-leap-15 _(openSUSE Leap 15)_ [[Dockerfile](/docker/opensuse/Dockerfile)]
|
||||||
- opensuse-tumbleweed _(openSUSE Tumbleweed)_ [[Dockerfile](/docker/opensuse/Dockerfile)]
|
- opensuse-tumbleweed _(openSUSE Tumbleweed)_ [[Dockerfile](/docker/opensuse/Dockerfile)]
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
---
|
---
|
||||||
version: "3.8"
|
|
||||||
|
|
||||||
x-mod_tile:
|
x-mod_tile:
|
||||||
build_defaults: &build_defaults
|
build_defaults: &build_defaults
|
||||||
context: ..
|
context: ..
|
||||||
@ -197,6 +195,12 @@ services:
|
|||||||
<<: *build_defaults_fedora
|
<<: *build_defaults_fedora
|
||||||
args:
|
args:
|
||||||
fedora_version: "39"
|
fedora_version: "39"
|
||||||
|
fedora-40:
|
||||||
|
<<: *service_defaults
|
||||||
|
build:
|
||||||
|
<<: *build_defaults_fedora
|
||||||
|
args:
|
||||||
|
fedora_version: "40"
|
||||||
fedora-rawhide:
|
fedora-rawhide:
|
||||||
<<: *service_defaults
|
<<: *service_defaults
|
||||||
build:
|
build:
|
||||||
@ -209,6 +213,7 @@ services:
|
|||||||
<<: *build_defaults_opensuse
|
<<: *build_defaults_opensuse
|
||||||
args:
|
args:
|
||||||
boost_version: "1_75_0"
|
boost_version: "1_75_0"
|
||||||
|
gcc_version: "13"
|
||||||
opensuse_version: "leap:15"
|
opensuse_version: "leap:15"
|
||||||
opensuse-tumbleweed:
|
opensuse-tumbleweed:
|
||||||
<<: *service_defaults
|
<<: *service_defaults
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Arguments
|
# Arguments
|
||||||
ARG boost_version
|
ARG boost_version
|
||||||
|
ARG gcc_version
|
||||||
ARG opensuse_version=leap:15
|
ARG opensuse_version=leap:15
|
||||||
|
|
||||||
# Mapnik Builder
|
# Mapnik Builder
|
||||||
@ -7,6 +8,7 @@ FROM opensuse/${opensuse_version} as mapnik-builder
|
|||||||
|
|
||||||
## Arguments
|
## Arguments
|
||||||
ARG boost_version
|
ARG boost_version
|
||||||
|
ARG gcc_version
|
||||||
ARG opensuse_version
|
ARG opensuse_version
|
||||||
|
|
||||||
## Install mapnik-builder dependencies
|
## Install mapnik-builder dependencies
|
||||||
@ -17,8 +19,8 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
|
|||||||
cairo-devel \
|
cairo-devel \
|
||||||
cmake \
|
cmake \
|
||||||
freetype-devel \
|
freetype-devel \
|
||||||
gcc \
|
gcc${gcc_version} \
|
||||||
gcc-c++ \
|
gcc${gcc_version}-c++ \
|
||||||
gdal-devel \
|
gdal-devel \
|
||||||
git \
|
git \
|
||||||
harfbuzz-devel \
|
harfbuzz-devel \
|
||||||
@ -39,7 +41,13 @@ RUN --mount=id=opensuse:${opensuse_version}-/var/cache/zypp,target=/var/cache/zy
|
|||||||
python3 \
|
python3 \
|
||||||
sqlite3-devel \
|
sqlite3-devel \
|
||||||
tar \
|
tar \
|
||||||
zlib-devel
|
zlib-devel && \
|
||||||
|
if [ -n "${gcc_version}" ]; then \
|
||||||
|
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc_version} 10; \
|
||||||
|
update-alternatives --install /usr/bin/cc gcc /usr/bin/gcc-${gcc_version} 10; \
|
||||||
|
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc_version} 10; \
|
||||||
|
update-alternatives --install /usr/bin/c++ g++ /usr/bin/g++-${gcc_version} 10; \
|
||||||
|
fi
|
||||||
|
|
||||||
## Download, Build & Install `Mapnik`
|
## Download, Build & Install `Mapnik`
|
||||||
WORKDIR /tmp/mapnik_src
|
WORKDIR /tmp/mapnik_src
|
||||||
@ -53,9 +61,12 @@ RUN --mount=id=opensuse:${opensuse_version}-mapnik-src:latest,target=/tmp/mapnik
|
|||||||
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
|
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
|
||||||
export DESTDIR=/tmp/mapnik && \
|
export DESTDIR=/tmp/mapnik && \
|
||||||
cmake -B . -S /tmp/mapnik_src \
|
cmake -B . -S /tmp/mapnik_src \
|
||||||
|
-DBUILD_BENCHMARK:BOOL=OFF \
|
||||||
|
-DBUILD_DEMO_CPP:BOOL=OFF \
|
||||||
-DBUILD_DEMO_VIEWER:BOOL=OFF \
|
-DBUILD_DEMO_VIEWER:BOOL=OFF \
|
||||||
-DBUILD_TESTING:BOOL=OFF \
|
-DBUILD_TESTING:BOOL=OFF \
|
||||||
-DCMAKE_BUILD_TYPE:STRING=Release \
|
-DCMAKE_BUILD_TYPE:STRING=Release \
|
||||||
|
-DCMAKE_CXX_STANDARD:STRING=17 \
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
|
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
|
||||||
-DMAPNIK_PKGCONF_DIR:PATH=/usr/share/pkgconfig && \
|
-DMAPNIK_PKGCONF_DIR:PATH=/usr/share/pkgconfig && \
|
||||||
cmake --build . && \
|
cmake --build . && \
|
||||||
|
2
docs/build/building_on_fedora.md
vendored
2
docs/build/building_on_fedora.md
vendored
@ -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.
|
A Docker-based building & testing setup pipeline is also available [here](/docker) for your convenience.
|
||||||
|
|
||||||
## Fedora 34/35/36/37/38/39
|
## Fedora 34/35/36/37/38/39/40
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
Reference in New Issue
Block a user