From d2c688f9286501f868ffdc272cb8ce6bd0fb03d4 Mon Sep 17 00:00:00 2001 From: Nick Porter Date: Mon, 11 Aug 2025 16:35:38 +0100 Subject: [PATCH] Add Debian 13 to Docker / Crossbuild tests --- scripts/docker/build/debian13/Dockerfile | 97 +++++++++++++++ scripts/docker/build/debian13/Dockerfile.cb | 123 ++++++++++++++++++++ scripts/docker/m4/Dockerfile.m4 | 1 + scripts/docker/m4/crossbuild.deb.m4 | 1 - 4 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 scripts/docker/build/debian13/Dockerfile create mode 100644 scripts/docker/build/debian13/Dockerfile.cb diff --git a/scripts/docker/build/debian13/Dockerfile b/scripts/docker/build/debian13/Dockerfile new file mode 100644 index 0000000000..09e934bced --- /dev/null +++ b/scripts/docker/build/debian13/Dockerfile @@ -0,0 +1,97 @@ +# Auto generated for debian13 +# from scripts/docker/m4/docker.deb.m4 +# +# Rebuild this file with `make docker.debian13.regen` +# +ARG from=debian:trixie +FROM ${from} AS build + +ARG DEBIAN_FRONTEND=noninteractive + +# +# Install build tools +# +RUN apt-get update +RUN apt-get install -y devscripts equivs git quilt gcc curl + +# +# Set up NetworkRADIUS extras repository +# +RUN install -d -o root -g root -m 0755 /etc/apt/keyrings \ + && curl -o /etc/apt/keyrings/packages.networkradius.com.asc "https://packages.inkbridgenetworks.com/pgp/packages%40networkradius.com" \ + && echo "deb [signed-by=/etc/apt/keyrings/packages.networkradius.com.asc] http://packages.networkradius.com/extras/debian/trixie trixie main" > /etc/apt/sources.list.d/networkradius-extras.list \ + && apt-get update + +# +# Create build directory +# +RUN mkdir -p /usr/local/src/repositories/freeradius-server +WORKDIR /usr/local/src/repositories/freeradius-server/ + +# +# Copy the FreeRADIUS directory in +# +COPY . . + +# +# Clean up tree - we want to build from the latest commit, not from +# any cruft left around on the local system +# +RUN git clean -fdxx \ + && git reset --hard HEAD + +# +# Install build dependencies +# +RUN if [ -e ./debian/control.in ]; then \ + debian/rules debian/control; \ + fi; \ + echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control + +# +# Build the server +# +RUN make -j$(nproc) deb + +# +# Clean environment and run the server +# +FROM ${from} +ARG DEBIAN_FRONTEND=noninteractive + +COPY --from=build /usr/local/src/repositories/*.deb /tmp/ + +# +# We need curl to get the signing key +# +RUN apt-get update \ + && apt-get install -y curl \ + && apt-get clean \ + && rm -r /var/lib/apt/lists/* + +# +# Set up NetworkRADIUS extras repository +# +RUN install -d -o root -g root -m 0755 /etc/apt/keyrings \ + && curl -o /etc/apt/keyrings/packages.networkradius.com.asc "https://packages.inkbridgenetworks.com/pgp/packages%40networkradius.com" \ + && echo "deb [signed-by=/etc/apt/keyrings/packages.networkradius.com.asc] http://packages.networkradius.com/extras/debian/trixie trixie main" > /etc/apt/sources.list.d/networkradius-extras.list + +ARG freerad_uid=101 +ARG freerad_gid=101 + +RUN groupadd -g ${freerad_gid} -r freerad \ + && useradd -u ${freerad_uid} -g freerad -r -M -d /etc/freeradius -s /usr/sbin/nologin freerad \ + && apt-get update \ + && apt-get install -y /tmp/*.deb \ + && apt-get clean \ + && rm -r /var/lib/apt/lists/* /tmp/*.deb \ + \ + && ln -s /etc/freeradius /etc/raddb + +WORKDIR / +COPY scripts/docker/etc/docker-entrypoint.sh.deb docker-entrypoint.sh +RUN chmod +x docker-entrypoint.sh + +EXPOSE 1812/udp 1813/udp +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["freeradius"] diff --git a/scripts/docker/build/debian13/Dockerfile.cb b/scripts/docker/build/debian13/Dockerfile.cb new file mode 100644 index 0000000000..244ce7c41d --- /dev/null +++ b/scripts/docker/build/debian13/Dockerfile.cb @@ -0,0 +1,123 @@ +# Auto generated for debian13 +# from scripts/docker/m4/crossbuild.deb.m4 +# +# Rebuild this file with `make crossbuild.debian13.regen` +# +ARG from=debian:trixie +FROM ${from} AS build + +SHELL ["/usr/bin/nice", "-n", "5", "/usr/bin/ionice", "-c", "3", "/bin/sh", "-x", "-c"] + +ARG APT_OPTS="-y --option=Dpkg::options::=--force-unsafe-io --no-install-recommends" + +ARG DEBIAN_FRONTEND=noninteractive + + +# +# Install add-apt-repository (may be needed for clang) and +# package development utilities +# +RUN apt-get update && \ + apt-get install $APT_OPTS \ + devscripts \ + equivs \ + git \ + gnupg2 \ + lsb-release \ + procps \ + quilt \ + rsync \ + wget && \ + apt-get clean && \ + rm -r /var/lib/apt/lists/* + + +# +# Set up NetworkRADIUS extras repository +# +RUN install -d -o root -g root -m 0755 /etc/apt/keyrings && \ + wget -O /etc/apt/keyrings/packages.networkradius.com.asc "https://packages.networkradius.com/pgp/packages%40networkradius.com" && \ + echo "deb [signed-by=/etc/apt/keyrings/packages.networkradius.com.asc] http://packages.networkradius.com/extras/debian/trixie trixie main" > /etc/apt/sources.list.d/networkradius-extras.list && \ + apt-get update + + +# +# Install compilers +# +RUN apt-get install $APT_OPTS \ + g++ \ + llvm clang lldb + + + + + +# +# Install some extra packages +# +RUN apt-get install $APT_OPTS \ + libnl-3-dev \ + libnl-genl-3-dev \ + gdb \ + less \ + lldb \ + vim \ + oathtool + + +# +# Documentation build dependencies +# + +WORKDIR /tmp + +# - doxygen & JSON.pm +RUN apt-get install $APT_OPTS \ + doxygen \ + graphviz \ + libjson-perl + +# - antora (needs npm) +RUN bash -c "$(wget -O - https://deb.nodesource.com/setup_20.x)" && \ + apt-get install $APT_OPTS nodejs && \ + npm i -g @antora/cli@3.1.7 @antora/site-generator-default@3.1.7 + +# - pandoc +RUN wget $(wget -qO - https://api.github.com/repos/jgm/pandoc/releases/latest | sed -ne 's/.*"browser_download_url".*"\(.*amd64\.deb\)"/\1/ p') && \ + find . -mindepth 1 -maxdepth 1 -type f -name 'pandoc-*.deb' -print0 | \ + xargs -0 -r apt-get install $APT_OPTS && \ + find . -mindepth 1 -maxdepth 1 -type f -name 'pandoc-*.deb' -delete + +# - asciidoctor +RUN apt-get install $APT_OPTS \ + ruby ruby-dev && \ + gem install asciidoctor + + +# +# Setup a src dir in /usr/local +# +RUN mkdir -p /usr/local/src/repositories +WORKDIR /usr/local/src/repositories + + +# +# Shallow clone the FreeRADIUS source +# +WORKDIR /usr/local/src/repositories +ARG source=https://github.com/FreeRADIUS/freeradius-server.git +RUN git clone --depth 1 --no-single-branch ${source} + +# +# Install build dependencies for all branches from v4 onwards +# +WORKDIR freeradius-server +RUN for i in $(git for-each-ref --format='%(refname:short)' refs/remotes/origin 2>/dev/null | sed -e 's#origin/##' | egrep "^(v[4-9]*\.[0-9x]*\.x|master|${branch})$" | sort -u); \ + do \ + git checkout $i; \ + if [ -e ./debian/control.in ] ; then \ + debian/rules debian/control ; \ + fi ; \ + mk-build-deps -irt"apt-get -o Debug::pkgProblemResolver=yes $APT_OPTS" debian/control ; \ + apt-get -y remove libiodbc2-dev ; \ + done diff --git a/scripts/docker/m4/Dockerfile.m4 b/scripts/docker/m4/Dockerfile.m4 index d8eba06fde..ed629521ad 100644 --- a/scripts/docker/m4/Dockerfile.m4 +++ b/scripts/docker/m4/Dockerfile.m4 @@ -22,6 +22,7 @@ define([p_SET], [ dnl D_NAME PKG_TYPE OS_NAME OS_VER OS_CODENAME DOCKER_IMAGE ifelse( D_NAME, [debian12], [p_SET([deb], [debian], [12], [bookworm], [debian:bookworm])], + D_NAME, [debian13], [p_SET([deb], [debian], [13], [trixie], [debian:trixie])], D_NAME, [debiansid], [p_SET([deb], [debian], [99], [sid], [debian:sid])], D_NAME, [ubuntu22], [p_SET([deb], [ubuntu], [22], [jammy], [ubuntu:22.04])], D_NAME, [ubuntu24], [p_SET([deb], [ubuntu], [24], [noble], [ubuntu:24.04])], diff --git a/scripts/docker/m4/crossbuild.deb.m4 b/scripts/docker/m4/crossbuild.deb.m4 index 2ad3ea5bdd..4650dc7748 100644 --- a/scripts/docker/m4/crossbuild.deb.m4 +++ b/scripts/docker/m4/crossbuild.deb.m4 @@ -14,7 +14,6 @@ ARG DEBIAN_FRONTEND=noninteractive # RUN apt-get update && \ apt-get install $APT_OPTS \ - software-properties-common \ devscripts \ equivs \ git \ -- 2.47.2