diff --git a/Dockerfile b/Dockerfile index e82a5ec1e66..4eb5bbf3702 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 @@ -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" @@ -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 \ + 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,31 +314,15 @@ 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 \ && 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://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 \ - "wxpython==${WXPYTHON_VERSION}" \ + && 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 \ @@ -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/Dockerfile b/docker/ubuntu/Dockerfile index e82a5ec1e66..4eb5bbf3702 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 @@ -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" @@ -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 \ + 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,31 +314,15 @@ 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 \ && 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://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 \ - "wxpython==${WXPYTHON_VERSION}" \ + && 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 \ @@ -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 \