diff --git a/.github/workflows/alpine_numpy2/Dockerfile.ci b/.github/workflows/alpine_numpy2/Dockerfile.ci new file mode 100644 index 000000000000..4f3633508d04 --- /dev/null +++ b/.github/workflows/alpine_numpy2/Dockerfile.ci @@ -0,0 +1,79 @@ +FROM alpine:edge + +RUN apk add \ + apache-arrow-dev \ + armadillo-dev \ + basisu-dev \ + blosc-dev \ + brunsli-dev \ + ccache \ + cfitsio-dev \ + cmake \ + curl-dev \ + expat-dev \ + freexl-dev \ + gcc \ + g++ \ + geos-dev \ + giflib-dev \ + gnu-libiconv-dev \ + hdf5-dev \ + json-c-dev \ + kealib-dev \ + libaec-dev \ + libarchive-dev \ + libdeflate-dev \ + libgeotiff-dev \ + libheif-dev \ + libjpeg-turbo-dev \ + libjxl-dev \ + libkml-dev \ + libpng-dev \ + libpq-dev \ + librasterlite2-dev \ + libspatialite-dev \ + libtirpc-dev \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + linux-headers \ + lz4-dev \ + make \ + mariadb-connector-c-dev \ + netcdf-dev \ + odbc-cpp-wrapper-dev \ + ogdi-dev \ + openexr-dev \ + openjpeg-dev \ + openssl-dev \ + pcre2-dev \ + podofo-dev \ + poppler-dev \ + proj-dev \ + proj-util \ + py3-pip \ + py3-setuptools \ + python3-dev \ + qhull-dev \ + sfcgal-dev \ + snappy-dev \ + sqlite-dev \ + swig \ + tiledb-dev \ + tiff-dev \ + unixodbc-dev \ + xerces-c-dev \ + xz-dev \ + zlib-dev \ + zstd-dev + +# Commenting out those packages to be sure to test numpy 2.0.0rc1 +# py3-numpy \ +# py3-numpy-dev \ +# py3-pyarrow \ +# py3-pyarrow-pyc \ + +COPY requirements.txt /tmp/ +RUN python3 -m pip install --break-system-packages numpy==2.0.0rc1 +RUN python3 -m pip install --break-system-packages -U -r /tmp/requirements.txt + diff --git a/.github/workflows/alpine_numpy2/build.sh b/.github/workflows/alpine_numpy2/build.sh new file mode 100755 index 000000000000..9cbdfc622841 --- /dev/null +++ b/.github/workflows/alpine_numpy2/build.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +set -e + +cat << EOF > /tmp/foo.cpp +#include +extern "C" void DeclareDeferredFOO(void); +void DeclareDeferredFOO() +{ + FILE* f = fopen("/tmp/DeclareDeferredFOO_has_been_run.bin", "wb"); + if (f) + fclose(f); +} +EOF + +cmake ${GDAL_SOURCE_DIR:=..} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_UNITY_BUILD=ON \ + -DUSE_CCACHE=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DIconv_INCLUDE_DIR=/usr/include/gnu-libiconv \ + -DIconv_LIBRARY=/usr/lib/libiconv.so \ + -DADD_EXTERNAL_DEFERRED_PLUGIN_FOO=/tmp/foo.cpp \ + -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS="-std=c++23 -Werror" -DWERROR_DEV_FLAG="-Werror=dev" +make -j$(nproc) +make -j$(nproc) install DESTDIR=/tmp/install-gdal + +# To check if DeclareDeferredFOO() is called by GDALAllRegister() +apps/gdalinfo --version + +if test -f /tmp/DeclareDeferredFOO_has_been_run.bin; then + echo "DeclareDeferredFOO() has been run" +else + echo "DeclareDeferredFOO() has NOT been run" + exit 1 +fi diff --git a/.github/workflows/linux_build.yml b/.github/workflows/linux_build.yml index 69f75d555f31..f9e150cd954a 100644 --- a/.github/workflows/linux_build.yml +++ b/.github/workflows/linux_build.yml @@ -65,6 +65,12 @@ jobs: build_script: build.sh os: ubuntu-22.04 + - name: Alpine, numpy 2 + id: alpine_numpy2 + container: alpine_numpy2 + build_script: build.sh + os: ubuntu-22.04 + - name: Alpine, gcc 32-bit id: alpine_32bit container: alpine_32bit