From 506be0a41be58c07845f6097ccf4a6fcfaea43bf Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 15:14:13 +0200 Subject: [PATCH 1/7] docker: Update to Ubuntu 26.04 and related dependencies - update to Ubuntu 26.04 - update related dependencies - made the stage fully self-contained by shifting definitions (tested on podman) --- Dockerfile | 179 +++++++++++----------- docker/ubuntu_wxgui/Dockerfile | 266 +++++++++++++++++++++++++++++++++ 2 files changed, 355 insertions(+), 90 deletions(-) create mode 100644 docker/ubuntu_wxgui/Dockerfile diff --git a/Dockerfile b/Dockerfile index e82a5ec1e66..543e9bfb31c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,12 +4,12 @@ # Changes to this file must be copied over to the other file. ARG GUI=without -FROM ubuntu:24.04@sha256:4fbb8e6a8395de5a7550b33509421a2bafbc0aab6c06ba2cef9ebffbc7092d90 AS common_start +FROM ubuntu:26.04@sha256:e5a4d6262ab5dbc25a85e60550dd7c87fd41a74fe43881534ed8288b2a7a3f8d AS common_start -ARG BASE_NAME="ubuntu:24.04" -ARG PYTHON_VERSION=3.12 +ARG BASE_NAME="ubuntu:26.04" +ARG PYTHON_VERSION=3.14 # renovate: datasource=github-tags depName=libgeos/geos -ARG GEOS_VERSION=3.14.1 +ARG GEOS_VERSION=3.15.0 # renovate: datasource=github-tags depName=OSGeo/PROJ ARG PROJ_VERSION=9.8.1 # renovate: datasource=github-tags depName=OSGeo/gdal @@ -32,6 +32,12 @@ ENV DEBIAN_FRONTEND=noninteractive SHELL ["/bin/bash", "-c"] +# If you do not use any Gnome Accessibility features, to suppress warning +# WARNING **: Couldn't connect to accessibility bus: +# execute programs with +ENV NO_AT_BRIDGE=1 + +# Install runtime-packages # Todo: re-consider required dev packages for addons (~400MB in dev packages) ARG GRASS_RUN_PACKAGES="\ bison \ @@ -45,7 +51,7 @@ ARG GRASS_RUN_PACKAGES="\ gcc \ git \ language-pack-en-base \ - libarmadillo12 \ + libarmadillo15 \ libcairo2 \ libcurl4-gnutls-dev \ libfftw3-bin \ @@ -55,7 +61,7 @@ ARG GRASS_RUN_PACKAGES="\ libgeotiff5 \ libgif7 \ libgsl-dev \ - libgsl27 \ + libgsl28 \ libhdf5-dev \ libjpeg-turbo8 \ libjson-c5 \ @@ -68,7 +74,7 @@ ARG GRASS_RUN_PACKAGES="\ liblapacke-dev \ liblz4-1 \ libmagic-mgc \ - libmagic1 \ + libmagic1t64 \ libmuparser2v5 \ libncurses6 \ libomp-dev \ @@ -80,7 +86,7 @@ ARG GRASS_RUN_PACKAGES="\ libpq-dev \ libpq5 \ libpython3-all-dev \ - libreadline8 \ + libreadline8t64 \ libspatialite8t64 \ libsqlite3-0 \ libsqlite3-mod-spatialite \ @@ -108,24 +114,34 @@ ARG GRASS_RUN_PACKAGES="\ zlib1g \ " -ARG GRASS_GUI_RUN_PACKAGES=" \ - adwaita-icon-theme-full \ - gettext \ - libglu1-mesa \ - libglut3.12 \ - libgstreamer-plugins-base1.0 \ - libgtk-3-0 \ - libjpeg8 \ - libnotify4 \ - libpng16-16 \ - librsvg2-common \ - libsdl2-2.0-0 \ - libsm6 \ - libtiff6 \ - libwebkit2gtk-4.1 \ - libxtst6 \ - python3-wxgtk4.0 \ -" +# hadolint ignore=SC2086,DL3008 +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y --no-install-recommends --no-install-suggests \ + $GRASS_RUN_PACKAGES \ + && apt-get autoremove -y \ + && apt-get clean all \ + && rm -rf /var/lib/apt/lists/* + +## fetch vertical datums for PDAL and store into PROJ dir +# WORKDIR /src + +# Get datum grids +# Currently using https://proj.org/en/9.3/usage/network.html#how-to-enable-network-capabilities +# FROM ubuntu:26.04 AS datum_grids + +# # See: https://github.com/OSGeo/PROJ-data +# RUN apt-get update \ +# && apt-get install -y --no-install-recommends --no-install-suggests \ +# wget \ +# && apt-get clean all \ +# && rm -rf /var/lib/apt/lists/* + +# WORKDIR /tmp +# RUN wget -q --no-check-certificate -r -l inf -A tif https://cdn.proj.org/ + +# Start build stage +FROM common_start AS build_common # Define build packages ARG GRASS_BUILD_PACKAGES="\ @@ -134,10 +150,11 @@ ARG GRASS_BUILD_PACKAGES="\ libbz2-dev \ libarmadillo-dev \ libcairo2-dev \ - libfreetype6-dev \ + libfreetype-dev \ libfyba-dev \ libgeotiff-dev \ libgif-dev \ + libglu1-mesa-dev \ libjpeg-dev \ libjson-c-dev \ libkml-dev \ @@ -155,6 +172,7 @@ ARG GRASS_BUILD_PACKAGES="\ libtiff-dev \ libxerces-c-dev \ libzstd-dev \ + gettext \ mesa-common-dev \ ninja-build \ unixodbc-dev \ @@ -163,53 +181,17 @@ ARG GRASS_BUILD_PACKAGES="\ " ARG GRASS_PYTHON_PACKAGES="\ - matplotlib \ - numpy \ - packaging>=25.0 \ - Pillow>=10.3.0 \ - psycopg2 \ - python-dateutil \ - python-magic \ - setuptools==80.9.0 \ - cython \ - " - -# If you do not use any Gnome Accessibility features, to suppress warning -# WARNING **: Couldn't connect to accessibility bus: -# execute programs with -ENV NO_AT_BRIDGE=1 - -# Install runtime-packages -# hadolint ignore=SC2086,DL3008 -RUN apt-get update \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends --no-install-suggests \ - $GRASS_RUN_PACKAGES \ - && apt-get autoremove -y \ - && apt-get clean all \ - && rm -rf /var/lib/apt/lists/* - -## fetch vertical datums for PDAL and store into PROJ dir -# WORKDIR /src - -# # Get datum grids -# # Currently using https://proj.org/en/9.3/usage/network.html#how-to-enable-network-capabilities -# FROM ubuntu:24.04 AS datum_grids - -# # See: https://github.com/OSGeo/PROJ-data -# RUN apt-get update \ -# && apt-get install -y --no-install-recommends --no-install-suggests \ -# wget \ -# && apt-get clean all \ -# && rm -rf /var/lib/apt/lists/* - -# WORKDIR /tmp -# RUN wget -q --no-check-certificate -r -l inf -A tif https://cdn.proj.org/ - -# Start build stage -FROM common_start AS build_common + matplotlib \ + numpy \ + packaging>=25.0 \ + Pillow>=10.3.0 \ + psycopg2 \ + python-dateutil \ + python-magic \ + setuptools==80.9.0 \ + cython \ +" -# Add build packages # hadolint ignore=SC2086,DL3008,DL3013 RUN apt-get update \ && apt-get install -y --no-install-recommends --no-install-suggests \ @@ -297,11 +279,26 @@ ARG GRASS_GUI_CONFIG="\ --with-x \ " +COPY . /src/grass_build/ + +# copy grass source +WORKDIR /src/grass_build + +ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ + LDFLAGS="-s -Wl,--no-undefined -lblas" \ + CFLAGS="-O2 -std=gnu99" \ + CXXFLAGS="" \ + NUMTHREADS=$NUMTHREADS + +FROM build_grass_config AS build_grass_with_gui + +ARG GRASS_CONFIG="$GRASS_CONFIG $GRASS_GUI_CONFIG" + # librsvg2-common \ # (fix error (wxgui.py:7782): Gtk-WARNING **: 19:53:09.774: # Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg. # This may indicate that pixbuf loaders or the mime database could not be found.) -ARG GRASS_GUI_BUILD_PACKAGES=" \ +ARG GRASS_GUI_PACKAGES=" \ freeglut3-dev \ libgl1-mesa-dev \ libglu1-mesa-dev \ @@ -317,22 +314,6 @@ ARG GRASS_GUI_BUILD_PACKAGES=" \ libxtst-dev \ " -COPY . /src/grass_build/ - -# copy grass source -WORKDIR /src/grass_build - -ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ - LDFLAGS="-s -Wl,--no-undefined -lblas" \ - CFLAGS="-O2 -std=gnu99" \ - CXXFLAGS="" \ - NUMTHREADS=$NUMTHREADS - -FROM build_grass_config AS build_grass_with_gui - -ARG GRASS_CONFIG="$GRASS_CONFIG $GRASS_GUI_CONFIG" -ARG GRASS_GUI_PACKAGES="$GRASS_GUI_RUN_PACKAGES $GRASS_GUI_BUILD_PACKAGES" - # hadolint ignore=DL3008 RUN echo "Installing GRASS GUI packages: $GRASS_GUI_PACKAGES" \ && apt-get update \ @@ -416,6 +397,24 @@ RUN echo "No additional steps needed without GUI." FROM common_start AS grass_final_with_gui +ARG GRASS_GUI_RUN_PACKAGES=" \ + adwaita-icon-theme \ + gettext \ + libglu1-mesa \ + libglut3.12 \ + libgstreamer-plugins-base1.0-0 \ + libgtk-3-0t64 \ + libjpeg8 \ + libnotify4 \ + libpng16-16t64 \ + librsvg2-common \ + libsdl2-2.0-0 \ + libsm6 \ + libtiff6 \ + libwebkit2gtk-4.1-0 \ + libxtst6 \ + python3-wxgtk4.0 \ +" # hadolint ignore=SC2086,DL3008 RUN apt-get update \ && apt-get upgrade -y \ diff --git a/docker/ubuntu_wxgui/Dockerfile b/docker/ubuntu_wxgui/Dockerfile new file mode 100644 index 00000000000..e05084493ac --- /dev/null +++ b/docker/ubuntu_wxgui/Dockerfile @@ -0,0 +1,266 @@ +FROM ubuntu:22.04@sha256:a6d2b38300ce017add71440577d5b0a90460d0e57fd7aec21dd0d1b0761bbfb2 + +LABEL authors="Carmen Tawalika,Markus Neteler,Anika Weinmann,Tomas Zigo" +LABEL maintainer="tawalika@mundialis.de,neteler@mundialis.de,weinmann@mundialis.de" + +ENV DEBIAN_FRONTEND noninteractive + +# define versions to be used (PDAL is not available on Ubuntu/Debian, so we compile it here) +# https://github.com/PDAL/PDAL/releases +ARG PDAL_VERSION=2.4.3 + +SHELL ["/bin/bash", "-c"] + +WORKDIR /tmp + +# wxGUI require packages: +# adwaita-icon-theme-full +# libgl1-mesa-dev +# libglu1-mesa-dev +# libgtk-3-0 +# libnotify4 +# libsdl2-2.0-0 +# libxtst6 +# librsvg2-common (fix error (wxgui.py:7782): Gtk-WARNING **: 19:53:09.774: +# Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg. +# This may indicate that pixbuf loaders or the mime database could not be found.) +# gettext (require for configure option --with-nls) enable wxGUI localization +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y --no-install-recommends --no-install-suggests \ + adwaita-icon-theme-full \ + build-essential \ + bison \ + bzip2 \ + cmake \ + curl \ + flex \ + g++ \ + gcc \ + gdal-bin \ + gettext \ + git \ + language-pack-en-base \ + libbz2-dev \ + libcairo2 \ + libcairo2-dev \ + libcurl4-gnutls-dev \ + libfftw3-bin \ + libfftw3-dev \ + libfreetype6-dev \ + libgl1-mesa-dev \ + libgdal-dev \ + libgeos-dev \ + libglu1-mesa-dev \ + libgsl0-dev \ + libgtk-3-0 \ + libjpeg-dev \ + libjsoncpp-dev \ + libnetcdf-dev \ + libncurses5-dev \ + libnotify4 \ + libopenblas-base \ + libopenblas-dev \ + libopenjp2-7 \ + libopenjp2-7-dev \ + libpnglite-dev \ + libpq-dev \ + libproj-dev \ + libpython3-all-dev \ + librsvg2-common \ + libreadline-dev \ + libsdl2-2.0-0 \ + libsqlite3-dev \ + libtiff-dev \ + libxtst6 \ + libzstd-dev \ + locales \ + make \ + mesa-common-dev \ + moreutils \ + ncurses-bin \ + netcdf-bin \ + proj-bin \ + proj-data \ + python3 \ + python3-dateutil \ + python3-dev \ + python3-magic \ + python3-numpy \ + python3-pil \ + python3-pip \ + python3-ply \ + python3-setuptools \ + python3-venv \ + software-properties-common \ + sqlite3 \ + subversion \ + unzip \ + vim \ + wget \ + zip \ + zlib1g-dev \ + && apt-get clean all && rm -rf /var/lib/apt/lists/* + +# wxGUI +RUN pip install -U \ + -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04 \ + wxPython \ + && pip cache purge +# If you do not use any Gnome Accessibility features, to suppress warning +# WARNING **: Couldn't connect to accessibility bus: +# execute programs with +ENV NO_AT_BRIDGE=1 + +RUN echo LANG="en_US.UTF-8" > /etc/default/locale +RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen + +## fetch vertical datums for PDAL and store into PROJ dir +WORKDIR /src +RUN mkdir vdatum && \ + cd vdatum && \ + wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2012.zip && unzip -j -u usa_geoid2012.zip -d /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2009.zip && unzip -j -u usa_geoid2009.zip -d /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2003.zip && unzip -j -u usa_geoid2003.zip -d /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/usa_geoid1999.zip && unzip -j -u usa_geoid1999.zip -d /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertconc.gtx && mv vertconc.gtx /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertcone.gtx && mv vertcone.gtx /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertconw.gtx && mv vertconw.gtx /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/egm96_15/egm96_15.gtx && mv egm96_15.gtx /usr/share/proj; \ + wget -q http://download.osgeo.org/proj/vdatum/egm08_25/egm08_25.gtx && mv egm08_25.gtx /usr/share/proj; \ + cd .. && \ + rm -rf vdatum + +## compile and install PDAL (not available on Debian/Ubuntu) with laz-perf enabled +ENV NUMTHREADS=4 +WORKDIR /src +RUN wget -q \ + https://github.com/PDAL/PDAL/releases/download/${PDAL_VERSION}/PDAL-${PDAL_VERSION}-src.tar.gz && \ + tar xfz PDAL-${PDAL_VERSION}-src.tar.gz && \ + cd /src/PDAL-${PDAL_VERSION}-src && \ + mkdir build && \ + cd build && \ + cmake .. \ + -G "Unix Makefiles" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_C_COMPILER=gcc \ + -DCMAKE_CXX_COMPILER=g++ \ + -DCMAKE_MAKE_PROGRAM=make \ + -DBUILD_PLUGIN_PYTHON=ON \ + -DBUILD_PLUGIN_CPD=OFF \ + -DBUILD_PLUGIN_GREYHOUND=ON \ + -DBUILD_PLUGIN_HEXBIN=ON \ + -DHEXER_INCLUDE_DIR=/usr/include/ \ + -DBUILD_PLUGIN_NITF=OFF \ + -DBUILD_PLUGIN_ICEBRIDGE=ON \ + -DBUILD_PLUGIN_PGPOINTCLOUD=OFF \ + -DBUILD_PGPOINTCLOUD_TESTS=OFF \ + -DBUILD_PLUGIN_SQLITE=ON \ + -DWITH_LASZIP=OFF \ + -DWITH_LAZPERF=ON \ + -DWITH_TESTS=ON && \ + make -j $NUMTHREADS && \ + make install + +# copy grass gis source +WORKDIR /src +COPY . /src/grass_build/ +WORKDIR /src/grass_build + +# Cleanup potentially leftover GISRC file with wrong path to "demolocation" +RUN rm -f /src/grass_build/dist.*/demolocation/.grassrc* + +# Set environmental variables for GRASS GIS compilation, without debug symbols +# Set gcc/g++ environmental variables for GRASS GIS compilation, without debug symbols +ENV MYCFLAGS "-O2 -std=gnu99 -m64" +ENV MYLDFLAGS "-s" +# CXX stuff: +ENV LD_LIBRARY_PATH "/usr/local/lib" +ENV LDFLAGS "$MYLDFLAGS" +ENV CFLAGS "$MYCFLAGS" +ENV CXXFLAGS "$MYCXXFLAGS" + +# Configure compile and install GRASS GIS +# wxGUI require +# --with-x +# --with-nls +ENV GRASS_PYTHON=/usr/bin/python3 +ENV NUMTHREADS=4 +RUN make distclean || echo "nothing to clean" +RUN /src/grass_build/configure \ + --with-cxx \ + --enable-largefile \ + --with-proj-share=/usr/share/proj \ + --with-gdal=/usr/bin/gdal-config \ + --with-geos \ + --with-sqlite \ + --with-cairo --with-cairo-ldflags=-lfontconfig \ + --with-freetype --with-freetype-includes="/usr/include/freetype2/" \ + --with-fftw \ + --with-postgres --with-postgres-includes="/usr/include/postgresql" \ + --with-netcdf \ + --with-zstd \ + --with-bzlib \ + --with-pdal \ + --without-mysql \ + --without-odbc \ + --without-openmp \ + --with-x \ + --with-nls \ + --with-readline \ + && make -j $NUMTHREADS \ + && make install && ldconfig + +# Unset environmental variables to avoid later compilation issues +ENV INTEL "" +ENV MYCFLAGS "" +ENV MYLDFLAGS "" +ENV MYCXXFLAGS "" +ENV LD_LIBRARY_PATH "" +ENV LDFLAGS "" +ENV CFLAGS "" +ENV CXXFLAGS "" + +# set SHELL var to avoid /bin/sh fallback in interactive GRASS GIS sessions +ENV SHELL /bin/bash +ENV LC_ALL "en_US.UTF-8" +ENV GRASS_SKIP_MAPSET_OWNER_CHECK 1 + +# https://proj.org/usage/environmentvars.html#envvar-PROJ_NETWORK +ENV PROJ_NETWORK=ON + +# Create generic GRASS GIS lib name regardless of version number +RUN ln -sf /usr/local/grass85 /usr/local/grass + +# show GRASS GIS, PROJ, GDAL etc versions +RUN grass --tmp-project EPSG:4326 --exec g.version -rge && \ + pdal --version && \ + python3 --version + +# Reduce the image size +RUN apt-get autoremove -y +RUN apt-get clean -y +RUN rm -r /src/grass_build/.git + +WORKDIR /scripts + +# enable GRASS GIS Python session support +## grass --config python-path +ENV PYTHONPATH "/usr/local/grass/etc/python:${PYTHONPATH}" +# enable GRASS GIS ctypes imports +## grass --config path +ENV LD_LIBRARY_PATH "/usr/local/grass/lib:$LD_LIBRARY_PATH" + +WORKDIR /tmp +COPY docker/testdata/simple.laz . +WORKDIR /scripts +COPY docker/testdata/test_grass_session.py . +## run GRASS GIS python session and scan the test LAZ file +RUN python /scripts/test_grass_session.py +RUN rm -rf /tmp/grasstest_epsg_25832 +# test LAZ file +RUN grass --tmp-project EPSG:25832 --exec r.in.pdal input="/tmp/simple.laz" output="count_1" method="n" resolution=1 -g + +WORKDIR /grassdb +VOLUME /grassdb +CMD ["$GRASSBIN", "--version"] From 449f3ae9cfea280d665fa965f8b21fe90c23059d Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 15:24:41 +0200 Subject: [PATCH 2/7] re-sync --- docker/ubuntu/Dockerfile | 179 +++++++++++++++++++-------------------- 1 file changed, 89 insertions(+), 90 deletions(-) diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index e82a5ec1e66..543e9bfb31c 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -4,12 +4,12 @@ # Changes to this file must be copied over to the other file. ARG GUI=without -FROM ubuntu:24.04@sha256:4fbb8e6a8395de5a7550b33509421a2bafbc0aab6c06ba2cef9ebffbc7092d90 AS common_start +FROM ubuntu:26.04@sha256:e5a4d6262ab5dbc25a85e60550dd7c87fd41a74fe43881534ed8288b2a7a3f8d AS common_start -ARG BASE_NAME="ubuntu:24.04" -ARG PYTHON_VERSION=3.12 +ARG BASE_NAME="ubuntu:26.04" +ARG PYTHON_VERSION=3.14 # renovate: datasource=github-tags depName=libgeos/geos -ARG GEOS_VERSION=3.14.1 +ARG GEOS_VERSION=3.15.0 # renovate: datasource=github-tags depName=OSGeo/PROJ ARG PROJ_VERSION=9.8.1 # renovate: datasource=github-tags depName=OSGeo/gdal @@ -32,6 +32,12 @@ ENV DEBIAN_FRONTEND=noninteractive SHELL ["/bin/bash", "-c"] +# If you do not use any Gnome Accessibility features, to suppress warning +# WARNING **: Couldn't connect to accessibility bus: +# execute programs with +ENV NO_AT_BRIDGE=1 + +# Install runtime-packages # Todo: re-consider required dev packages for addons (~400MB in dev packages) ARG GRASS_RUN_PACKAGES="\ bison \ @@ -45,7 +51,7 @@ ARG GRASS_RUN_PACKAGES="\ gcc \ git \ language-pack-en-base \ - libarmadillo12 \ + libarmadillo15 \ libcairo2 \ libcurl4-gnutls-dev \ libfftw3-bin \ @@ -55,7 +61,7 @@ ARG GRASS_RUN_PACKAGES="\ libgeotiff5 \ libgif7 \ libgsl-dev \ - libgsl27 \ + libgsl28 \ libhdf5-dev \ libjpeg-turbo8 \ libjson-c5 \ @@ -68,7 +74,7 @@ ARG GRASS_RUN_PACKAGES="\ liblapacke-dev \ liblz4-1 \ libmagic-mgc \ - libmagic1 \ + libmagic1t64 \ libmuparser2v5 \ libncurses6 \ libomp-dev \ @@ -80,7 +86,7 @@ ARG GRASS_RUN_PACKAGES="\ libpq-dev \ libpq5 \ libpython3-all-dev \ - libreadline8 \ + libreadline8t64 \ libspatialite8t64 \ libsqlite3-0 \ libsqlite3-mod-spatialite \ @@ -108,24 +114,34 @@ ARG GRASS_RUN_PACKAGES="\ zlib1g \ " -ARG GRASS_GUI_RUN_PACKAGES=" \ - adwaita-icon-theme-full \ - gettext \ - libglu1-mesa \ - libglut3.12 \ - libgstreamer-plugins-base1.0 \ - libgtk-3-0 \ - libjpeg8 \ - libnotify4 \ - libpng16-16 \ - librsvg2-common \ - libsdl2-2.0-0 \ - libsm6 \ - libtiff6 \ - libwebkit2gtk-4.1 \ - libxtst6 \ - python3-wxgtk4.0 \ -" +# hadolint ignore=SC2086,DL3008 +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y --no-install-recommends --no-install-suggests \ + $GRASS_RUN_PACKAGES \ + && apt-get autoremove -y \ + && apt-get clean all \ + && rm -rf /var/lib/apt/lists/* + +## fetch vertical datums for PDAL and store into PROJ dir +# WORKDIR /src + +# Get datum grids +# Currently using https://proj.org/en/9.3/usage/network.html#how-to-enable-network-capabilities +# FROM ubuntu:26.04 AS datum_grids + +# # See: https://github.com/OSGeo/PROJ-data +# RUN apt-get update \ +# && apt-get install -y --no-install-recommends --no-install-suggests \ +# wget \ +# && apt-get clean all \ +# && rm -rf /var/lib/apt/lists/* + +# WORKDIR /tmp +# RUN wget -q --no-check-certificate -r -l inf -A tif https://cdn.proj.org/ + +# Start build stage +FROM common_start AS build_common # Define build packages ARG GRASS_BUILD_PACKAGES="\ @@ -134,10 +150,11 @@ ARG GRASS_BUILD_PACKAGES="\ libbz2-dev \ libarmadillo-dev \ libcairo2-dev \ - libfreetype6-dev \ + libfreetype-dev \ libfyba-dev \ libgeotiff-dev \ libgif-dev \ + libglu1-mesa-dev \ libjpeg-dev \ libjson-c-dev \ libkml-dev \ @@ -155,6 +172,7 @@ ARG GRASS_BUILD_PACKAGES="\ libtiff-dev \ libxerces-c-dev \ libzstd-dev \ + gettext \ mesa-common-dev \ ninja-build \ unixodbc-dev \ @@ -163,53 +181,17 @@ ARG GRASS_BUILD_PACKAGES="\ " ARG GRASS_PYTHON_PACKAGES="\ - matplotlib \ - numpy \ - packaging>=25.0 \ - Pillow>=10.3.0 \ - psycopg2 \ - python-dateutil \ - python-magic \ - setuptools==80.9.0 \ - cython \ - " - -# If you do not use any Gnome Accessibility features, to suppress warning -# WARNING **: Couldn't connect to accessibility bus: -# execute programs with -ENV NO_AT_BRIDGE=1 - -# Install runtime-packages -# hadolint ignore=SC2086,DL3008 -RUN apt-get update \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends --no-install-suggests \ - $GRASS_RUN_PACKAGES \ - && apt-get autoremove -y \ - && apt-get clean all \ - && rm -rf /var/lib/apt/lists/* - -## fetch vertical datums for PDAL and store into PROJ dir -# WORKDIR /src - -# # Get datum grids -# # Currently using https://proj.org/en/9.3/usage/network.html#how-to-enable-network-capabilities -# FROM ubuntu:24.04 AS datum_grids - -# # See: https://github.com/OSGeo/PROJ-data -# RUN apt-get update \ -# && apt-get install -y --no-install-recommends --no-install-suggests \ -# wget \ -# && apt-get clean all \ -# && rm -rf /var/lib/apt/lists/* - -# WORKDIR /tmp -# RUN wget -q --no-check-certificate -r -l inf -A tif https://cdn.proj.org/ - -# Start build stage -FROM common_start AS build_common + matplotlib \ + numpy \ + packaging>=25.0 \ + Pillow>=10.3.0 \ + psycopg2 \ + python-dateutil \ + python-magic \ + setuptools==80.9.0 \ + cython \ +" -# Add build packages # hadolint ignore=SC2086,DL3008,DL3013 RUN apt-get update \ && apt-get install -y --no-install-recommends --no-install-suggests \ @@ -297,11 +279,26 @@ ARG GRASS_GUI_CONFIG="\ --with-x \ " +COPY . /src/grass_build/ + +# copy grass source +WORKDIR /src/grass_build + +ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ + LDFLAGS="-s -Wl,--no-undefined -lblas" \ + CFLAGS="-O2 -std=gnu99" \ + CXXFLAGS="" \ + NUMTHREADS=$NUMTHREADS + +FROM build_grass_config AS build_grass_with_gui + +ARG GRASS_CONFIG="$GRASS_CONFIG $GRASS_GUI_CONFIG" + # librsvg2-common \ # (fix error (wxgui.py:7782): Gtk-WARNING **: 19:53:09.774: # Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg. # This may indicate that pixbuf loaders or the mime database could not be found.) -ARG GRASS_GUI_BUILD_PACKAGES=" \ +ARG GRASS_GUI_PACKAGES=" \ freeglut3-dev \ libgl1-mesa-dev \ libglu1-mesa-dev \ @@ -317,22 +314,6 @@ ARG GRASS_GUI_BUILD_PACKAGES=" \ libxtst-dev \ " -COPY . /src/grass_build/ - -# copy grass source -WORKDIR /src/grass_build - -ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/lib" \ - LDFLAGS="-s -Wl,--no-undefined -lblas" \ - CFLAGS="-O2 -std=gnu99" \ - CXXFLAGS="" \ - NUMTHREADS=$NUMTHREADS - -FROM build_grass_config AS build_grass_with_gui - -ARG GRASS_CONFIG="$GRASS_CONFIG $GRASS_GUI_CONFIG" -ARG GRASS_GUI_PACKAGES="$GRASS_GUI_RUN_PACKAGES $GRASS_GUI_BUILD_PACKAGES" - # hadolint ignore=DL3008 RUN echo "Installing GRASS GUI packages: $GRASS_GUI_PACKAGES" \ && apt-get update \ @@ -416,6 +397,24 @@ RUN echo "No additional steps needed without GUI." FROM common_start AS grass_final_with_gui +ARG GRASS_GUI_RUN_PACKAGES=" \ + adwaita-icon-theme \ + gettext \ + libglu1-mesa \ + libglut3.12 \ + libgstreamer-plugins-base1.0-0 \ + libgtk-3-0t64 \ + libjpeg8 \ + libnotify4 \ + libpng16-16t64 \ + librsvg2-common \ + libsdl2-2.0-0 \ + libsm6 \ + libtiff6 \ + libwebkit2gtk-4.1-0 \ + libxtst6 \ + python3-wxgtk4.0 \ +" # hadolint ignore=SC2086,DL3008 RUN apt-get update \ && apt-get upgrade -y \ From 978fd40892871d73609822a268e6ddf96ae1904e Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 15:49:47 +0200 Subject: [PATCH 3/7] drop docker/ubuntu_wxgui/Dockerfile --- docker/ubuntu_wxgui/Dockerfile | 266 --------------------------------- 1 file changed, 266 deletions(-) delete mode 100644 docker/ubuntu_wxgui/Dockerfile diff --git a/docker/ubuntu_wxgui/Dockerfile b/docker/ubuntu_wxgui/Dockerfile deleted file mode 100644 index e05084493ac..00000000000 --- a/docker/ubuntu_wxgui/Dockerfile +++ /dev/null @@ -1,266 +0,0 @@ -FROM ubuntu:22.04@sha256:a6d2b38300ce017add71440577d5b0a90460d0e57fd7aec21dd0d1b0761bbfb2 - -LABEL authors="Carmen Tawalika,Markus Neteler,Anika Weinmann,Tomas Zigo" -LABEL maintainer="tawalika@mundialis.de,neteler@mundialis.de,weinmann@mundialis.de" - -ENV DEBIAN_FRONTEND noninteractive - -# define versions to be used (PDAL is not available on Ubuntu/Debian, so we compile it here) -# https://github.com/PDAL/PDAL/releases -ARG PDAL_VERSION=2.4.3 - -SHELL ["/bin/bash", "-c"] - -WORKDIR /tmp - -# wxGUI require packages: -# adwaita-icon-theme-full -# libgl1-mesa-dev -# libglu1-mesa-dev -# libgtk-3-0 -# libnotify4 -# libsdl2-2.0-0 -# libxtst6 -# librsvg2-common (fix error (wxgui.py:7782): Gtk-WARNING **: 19:53:09.774: -# Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg. -# This may indicate that pixbuf loaders or the mime database could not be found.) -# gettext (require for configure option --with-nls) enable wxGUI localization -RUN apt-get update && apt-get upgrade -y && \ - apt-get install -y --no-install-recommends --no-install-suggests \ - adwaita-icon-theme-full \ - build-essential \ - bison \ - bzip2 \ - cmake \ - curl \ - flex \ - g++ \ - gcc \ - gdal-bin \ - gettext \ - git \ - language-pack-en-base \ - libbz2-dev \ - libcairo2 \ - libcairo2-dev \ - libcurl4-gnutls-dev \ - libfftw3-bin \ - libfftw3-dev \ - libfreetype6-dev \ - libgl1-mesa-dev \ - libgdal-dev \ - libgeos-dev \ - libglu1-mesa-dev \ - libgsl0-dev \ - libgtk-3-0 \ - libjpeg-dev \ - libjsoncpp-dev \ - libnetcdf-dev \ - libncurses5-dev \ - libnotify4 \ - libopenblas-base \ - libopenblas-dev \ - libopenjp2-7 \ - libopenjp2-7-dev \ - libpnglite-dev \ - libpq-dev \ - libproj-dev \ - libpython3-all-dev \ - librsvg2-common \ - libreadline-dev \ - libsdl2-2.0-0 \ - libsqlite3-dev \ - libtiff-dev \ - libxtst6 \ - libzstd-dev \ - locales \ - make \ - mesa-common-dev \ - moreutils \ - ncurses-bin \ - netcdf-bin \ - proj-bin \ - proj-data \ - python3 \ - python3-dateutil \ - python3-dev \ - python3-magic \ - python3-numpy \ - python3-pil \ - python3-pip \ - python3-ply \ - python3-setuptools \ - python3-venv \ - software-properties-common \ - sqlite3 \ - subversion \ - unzip \ - vim \ - wget \ - zip \ - zlib1g-dev \ - && apt-get clean all && rm -rf /var/lib/apt/lists/* - -# wxGUI -RUN pip install -U \ - -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04 \ - wxPython \ - && pip cache purge -# If you do not use any Gnome Accessibility features, to suppress warning -# WARNING **: Couldn't connect to accessibility bus: -# execute programs with -ENV NO_AT_BRIDGE=1 - -RUN echo LANG="en_US.UTF-8" > /etc/default/locale -RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen - -## fetch vertical datums for PDAL and store into PROJ dir -WORKDIR /src -RUN mkdir vdatum && \ - cd vdatum && \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2012.zip && unzip -j -u usa_geoid2012.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2009.zip && unzip -j -u usa_geoid2009.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2003.zip && unzip -j -u usa_geoid2003.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid1999.zip && unzip -j -u usa_geoid1999.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertconc.gtx && mv vertconc.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertcone.gtx && mv vertcone.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertconw.gtx && mv vertconw.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/egm96_15/egm96_15.gtx && mv egm96_15.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/egm08_25/egm08_25.gtx && mv egm08_25.gtx /usr/share/proj; \ - cd .. && \ - rm -rf vdatum - -## compile and install PDAL (not available on Debian/Ubuntu) with laz-perf enabled -ENV NUMTHREADS=4 -WORKDIR /src -RUN wget -q \ - https://github.com/PDAL/PDAL/releases/download/${PDAL_VERSION}/PDAL-${PDAL_VERSION}-src.tar.gz && \ - tar xfz PDAL-${PDAL_VERSION}-src.tar.gz && \ - cd /src/PDAL-${PDAL_VERSION}-src && \ - mkdir build && \ - cd build && \ - cmake .. \ - -G "Unix Makefiles" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_C_COMPILER=gcc \ - -DCMAKE_CXX_COMPILER=g++ \ - -DCMAKE_MAKE_PROGRAM=make \ - -DBUILD_PLUGIN_PYTHON=ON \ - -DBUILD_PLUGIN_CPD=OFF \ - -DBUILD_PLUGIN_GREYHOUND=ON \ - -DBUILD_PLUGIN_HEXBIN=ON \ - -DHEXER_INCLUDE_DIR=/usr/include/ \ - -DBUILD_PLUGIN_NITF=OFF \ - -DBUILD_PLUGIN_ICEBRIDGE=ON \ - -DBUILD_PLUGIN_PGPOINTCLOUD=OFF \ - -DBUILD_PGPOINTCLOUD_TESTS=OFF \ - -DBUILD_PLUGIN_SQLITE=ON \ - -DWITH_LASZIP=OFF \ - -DWITH_LAZPERF=ON \ - -DWITH_TESTS=ON && \ - make -j $NUMTHREADS && \ - make install - -# copy grass gis source -WORKDIR /src -COPY . /src/grass_build/ -WORKDIR /src/grass_build - -# Cleanup potentially leftover GISRC file with wrong path to "demolocation" -RUN rm -f /src/grass_build/dist.*/demolocation/.grassrc* - -# Set environmental variables for GRASS GIS compilation, without debug symbols -# Set gcc/g++ environmental variables for GRASS GIS compilation, without debug symbols -ENV MYCFLAGS "-O2 -std=gnu99 -m64" -ENV MYLDFLAGS "-s" -# CXX stuff: -ENV LD_LIBRARY_PATH "/usr/local/lib" -ENV LDFLAGS "$MYLDFLAGS" -ENV CFLAGS "$MYCFLAGS" -ENV CXXFLAGS "$MYCXXFLAGS" - -# Configure compile and install GRASS GIS -# wxGUI require -# --with-x -# --with-nls -ENV GRASS_PYTHON=/usr/bin/python3 -ENV NUMTHREADS=4 -RUN make distclean || echo "nothing to clean" -RUN /src/grass_build/configure \ - --with-cxx \ - --enable-largefile \ - --with-proj-share=/usr/share/proj \ - --with-gdal=/usr/bin/gdal-config \ - --with-geos \ - --with-sqlite \ - --with-cairo --with-cairo-ldflags=-lfontconfig \ - --with-freetype --with-freetype-includes="/usr/include/freetype2/" \ - --with-fftw \ - --with-postgres --with-postgres-includes="/usr/include/postgresql" \ - --with-netcdf \ - --with-zstd \ - --with-bzlib \ - --with-pdal \ - --without-mysql \ - --without-odbc \ - --without-openmp \ - --with-x \ - --with-nls \ - --with-readline \ - && make -j $NUMTHREADS \ - && make install && ldconfig - -# Unset environmental variables to avoid later compilation issues -ENV INTEL "" -ENV MYCFLAGS "" -ENV MYLDFLAGS "" -ENV MYCXXFLAGS "" -ENV LD_LIBRARY_PATH "" -ENV LDFLAGS "" -ENV CFLAGS "" -ENV CXXFLAGS "" - -# set SHELL var to avoid /bin/sh fallback in interactive GRASS GIS sessions -ENV SHELL /bin/bash -ENV LC_ALL "en_US.UTF-8" -ENV GRASS_SKIP_MAPSET_OWNER_CHECK 1 - -# https://proj.org/usage/environmentvars.html#envvar-PROJ_NETWORK -ENV PROJ_NETWORK=ON - -# Create generic GRASS GIS lib name regardless of version number -RUN ln -sf /usr/local/grass85 /usr/local/grass - -# show GRASS GIS, PROJ, GDAL etc versions -RUN grass --tmp-project EPSG:4326 --exec g.version -rge && \ - pdal --version && \ - python3 --version - -# Reduce the image size -RUN apt-get autoremove -y -RUN apt-get clean -y -RUN rm -r /src/grass_build/.git - -WORKDIR /scripts - -# enable GRASS GIS Python session support -## grass --config python-path -ENV PYTHONPATH "/usr/local/grass/etc/python:${PYTHONPATH}" -# enable GRASS GIS ctypes imports -## grass --config path -ENV LD_LIBRARY_PATH "/usr/local/grass/lib:$LD_LIBRARY_PATH" - -WORKDIR /tmp -COPY docker/testdata/simple.laz . -WORKDIR /scripts -COPY docker/testdata/test_grass_session.py . -## run GRASS GIS python session and scan the test LAZ file -RUN python /scripts/test_grass_session.py -RUN rm -rf /tmp/grasstest_epsg_25832 -# test LAZ file -RUN grass --tmp-project EPSG:25832 --exec r.in.pdal input="/tmp/simple.laz" output="count_1" method="n" resolution=1 -g - -WORKDIR /grassdb -VOLUME /grassdb -CMD ["$GRASSBIN", "--version"] From 6605d4b1f23899213ec217798f45a84afcc92d12 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 17:28:22 +0200 Subject: [PATCH 4/7] updated to WXPYTHON_VERSION=4.3.1 and ubuntu2604 --- Dockerfile | 8 ++++---- docker/ubuntu/Dockerfile | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 543e9bfb31c..e960d48c223 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ ARG PDAL_VERSION=2.10.2 # renovate: datasource=github-tags depName=OSGeo/gdal-grass ARG GDAL_GRASS_VERSION=2.0.0 # renovate: datasource=pypi depName=wxPython -ARG WXPYTHON_VERSION=4.2.5 +ARG WXPYTHON_VERSION=4.3.1 # Have build parameters as build arguments? # ARG LDFLAGS="-s -Wl,--no-undefined -lblas" @@ -188,7 +188,7 @@ ARG GRASS_PYTHON_PACKAGES="\ psycopg2 \ python-dateutil \ python-magic \ - setuptools==80.9.0 \ + setuptool \ cython \ " @@ -321,8 +321,8 @@ RUN echo "Installing GRASS GUI packages: $GRASS_GUI_PACKAGES" \ && apt-get install -y --no-install-recommends --no-install-suggests \ $GRASS_GUI_PACKAGES \ && python3 -m pip install -U --break-system-packages --no-cache-dir --upgrade \ - -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 \ - "wxpython==${WXPYTHON_VERSION}" \ + -f https://github.com/wxWidgets/Phoenix/releases/expanded_assets/wxPython-${WXPYTHON_VERSION} \ + "wxpython==${WXPYTHON_VERSION}+ubuntu2604" \ # Clean up && pip cache purge \ && apt-get autoremove -y \ diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index 543e9bfb31c..e960d48c223 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -19,7 +19,7 @@ ARG PDAL_VERSION=2.10.2 # renovate: datasource=github-tags depName=OSGeo/gdal-grass ARG GDAL_GRASS_VERSION=2.0.0 # renovate: datasource=pypi depName=wxPython -ARG WXPYTHON_VERSION=4.2.5 +ARG WXPYTHON_VERSION=4.3.1 # Have build parameters as build arguments? # ARG LDFLAGS="-s -Wl,--no-undefined -lblas" @@ -188,7 +188,7 @@ ARG GRASS_PYTHON_PACKAGES="\ psycopg2 \ python-dateutil \ python-magic \ - setuptools==80.9.0 \ + setuptool \ cython \ " @@ -321,8 +321,8 @@ RUN echo "Installing GRASS GUI packages: $GRASS_GUI_PACKAGES" \ && apt-get install -y --no-install-recommends --no-install-suggests \ $GRASS_GUI_PACKAGES \ && python3 -m pip install -U --break-system-packages --no-cache-dir --upgrade \ - -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 \ - "wxpython==${WXPYTHON_VERSION}" \ + -f https://github.com/wxWidgets/Phoenix/releases/expanded_assets/wxPython-${WXPYTHON_VERSION} \ + "wxpython==${WXPYTHON_VERSION}+ubuntu2604" \ # Clean up && pip cache purge \ && apt-get autoremove -y \ From a7f0e1939d53a6c08450380f2c526d620f5176e0 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 18:15:44 +0200 Subject: [PATCH 5/7] Apply suggestion from @echoix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e960d48c223..2bd70cb22c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -188,7 +188,7 @@ ARG GRASS_PYTHON_PACKAGES="\ psycopg2 \ python-dateutil \ python-magic \ - setuptool \ + setuptools \ cython \ " From 180661c2c8641627f859e1e570c14bdb4facbe8e Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 18:16:01 +0200 Subject: [PATCH 6/7] Apply suggestion from @echoix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- docker/ubuntu/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index e960d48c223..2bd70cb22c5 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -188,7 +188,7 @@ ARG GRASS_PYTHON_PACKAGES="\ psycopg2 \ python-dateutil \ python-magic \ - setuptool \ + setuptools \ cython \ " From 55cf0c9cfdcaa71e661b1ac2f5eedb10ab1283f5 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 16 Sep 2026 23:36:11 +0200 Subject: [PATCH 7/7] Fix wxpython ubuntu2604 asset. Co-authored-by: @echoix --- Dockerfile | 6 +++--- docker/ubuntu/Dockerfile | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2bd70cb22c5..4eb5bbf3702 100644 --- a/Dockerfile +++ b/Dockerfile @@ -320,9 +320,9 @@ RUN echo "Installing GRASS GUI packages: $GRASS_GUI_PACKAGES" \ && apt-get upgrade -y \ && apt-get install -y --no-install-recommends --no-install-suggests \ $GRASS_GUI_PACKAGES \ - && python3 -m pip install -U --break-system-packages --no-cache-dir --upgrade \ - -f https://github.com/wxWidgets/Phoenix/releases/expanded_assets/wxPython-${WXPYTHON_VERSION} \ - "wxpython==${WXPYTHON_VERSION}+ubuntu2604" \ + && PY_TAG=$(python3 -c "import sys; print(f'cp{sys.version_info.major}{sys.version_info.minor}')") \ + && python3 -m pip install -U --break-system-packages --no-cache-dir \ + "https://github.com/wxWidgets/Phoenix/releases/download/wxPython-${WXPYTHON_VERSION}/wxpython-${WXPYTHON_VERSION}%2Bubuntu2604-${PY_TAG}-${PY_TAG}-linux_x86_64.whl" \ # Clean up && pip cache purge \ && apt-get autoremove -y \ diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index 2bd70cb22c5..4eb5bbf3702 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -320,9 +320,9 @@ RUN echo "Installing GRASS GUI packages: $GRASS_GUI_PACKAGES" \ && apt-get upgrade -y \ && apt-get install -y --no-install-recommends --no-install-suggests \ $GRASS_GUI_PACKAGES \ - && python3 -m pip install -U --break-system-packages --no-cache-dir --upgrade \ - -f https://github.com/wxWidgets/Phoenix/releases/expanded_assets/wxPython-${WXPYTHON_VERSION} \ - "wxpython==${WXPYTHON_VERSION}+ubuntu2604" \ + && PY_TAG=$(python3 -c "import sys; print(f'cp{sys.version_info.major}{sys.version_info.minor}')") \ + && python3 -m pip install -U --break-system-packages --no-cache-dir \ + "https://github.com/wxWidgets/Phoenix/releases/download/wxPython-${WXPYTHON_VERSION}/wxpython-${WXPYTHON_VERSION}%2Bubuntu2604-${PY_TAG}-${PY_TAG}-linux_x86_64.whl" \ # Clean up && pip cache purge \ && apt-get autoremove -y \