Skip to content

Commit 5f3caa6

Browse files
authored
build: update benv to trixie (#401)
- update clang/llvm versions - update linter versions - fix usage of depreceated apt-key - increase Java version - update ares for new version of c-ares headers - fix cstdint includes, now required - update cmake for stricter checks in newer version - add fuse-overlayfs to build environment to allow podman inside benv - use host networking in to build podman via makefile
1 parent 5ccb104 commit 5f3caa6

File tree

13 files changed

+61
-18
lines changed

13 files changed

+61
-18
lines changed

build-tools/base/Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
ARG BENV_BASE_IMAGE_DISTRO=debian
5-
ARG BENV_BASE_IMAGE_VERSION=bookworm@sha256:731dd1380d6a8d170a695dbeb17fe0eade0e1c29f654cf0a3a07f372191c3f4b
5+
ARG BENV_BASE_IMAGE_VERSION=trixie@sha256:72547dd722cd005a8c2aa2079af9ca0ee93aad8e589689135feaed60b0a8c08d
66
FROM ${BENV_BASE_IMAGE_DISTRO}:${BENV_BASE_IMAGE_VERSION} AS build-main
77

88
################ DEPENDENCIES ################
@@ -19,14 +19,14 @@ ARG PKG_CORE="wget curl git gnupg bc aptitude netcat-openbsd sudo"
1919
ARG PKG_TEXT="xxd sed ripgrep less jq"
2020
ARG PKG_COMPILERS="g++"
2121
ARG PKG_BUILD="ninja-build"
22-
ARG PKG_LINTERS="clang-format-16 clang-tidy-16 shellcheck"
22+
ARG PKG_LINTERS="clang-format-19 clang-tidy-19 shellcheck"
2323
ARG PKG_MANAGERS="pkg-config rpm"
2424
ARG PKG_KERNEL="dkms build-essential"
2525
ARG PKG_DEV="gdb cgdb tmux strace"
2626
ARG PKG_LIBS="libc-ares-dev libelf-dev libssl-dev libzstd-dev libgrpc-dev libcurl4-openssl-dev libabsl-dev protobuf-compiler-grpc libcurlpp-dev libgrpc++-dev libprotobuf-dev"
2727
ARG PKG_PY_TEST="python3-pytest python3-dev python3-pip python3-setuptools python3-wheel pylint"
2828
ARG PKG_JAVA="default-jdk-headless"
29-
ARG PKG_LLVM="llvm-16-dev libclang-16-dev clang-16 libpolly-16-dev"
29+
ARG PKG_LLVM="llvm-19-dev libclang-19-dev clang-19 libpolly-19-dev"
3030
ARG PKG_MAKE="cmake ccache autoconf autoconf-archive automake libtool make"
3131
ARG PKG_BCC="bison flex zip"
3232
ARG PKG_LIBBPF="zip pkg-config libelf-dev zlib1g-dev libbfd-dev libcap-dev"

build-tools/final/Dockerfile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,18 @@ FROM $libbpf_IMAGE_TAG as build-libbpf
2929
FROM build-main AS build-result
3030

3131
# Package definitions
32-
ARG PKG_DOCKER="podman uidmap slirp4netns"
32+
# Include fuse-overlayfs so rootless podman can run on overlayfs (e.g., in containers)
33+
ARG PKG_DOCKER="podman uidmap fuse-overlayfs"
3334
ARG PKG_KERNEL_TOOLS="kmod selinux-utils"
3435
ARG PKG_CORE_TOOLS="pass"
3536
ARG PKG_DEV_TOOLS="vim-nox lsof silversearcher-ag ssh"
3637
ARG PKG_AWS_TOOLS="awscli"
37-
ARG BENV_JAVA_VERSION=17
38+
ARG BENV_JAVA_VERSION=21
3839
ARG PKG_EXTRA_PACKAGES="openjdk-${BENV_JAVA_VERSION}-jdk-headless google-cloud-sdk google-cloud-sdk-skaffold"
3940
ARG PKG_PYTHON_LIBS="python3-ijson python3-docker"
4041

4142
RUN sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list' && \
42-
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - && \
43+
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo tee /usr/share/keyrings/cloud.google.gpg && \
4344
sudo apt-get -y update && \
4445
sudo apt-get install --no-install-recommends -y \
4546
$PKG_DOCKER \
@@ -59,6 +60,13 @@ RUN sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http:
5960
sudo apt-get clean && \
6061
sudo rm -rf /var/lib/apt/lists/*
6162

63+
# Ensure podman uses fuse-overlayfs in rootless environments where kernel overlay is unavailable
64+
RUN mkdir -p $HOME/.config/containers && \
65+
printf "[storage]\n" > $HOME/.config/containers/storage.conf && \
66+
printf "driver = \"overlay\"\n" >> $HOME/.config/containers/storage.conf && \
67+
printf "[storage.options]\n" >> $HOME/.config/containers/storage.conf && \
68+
printf "mount_program = \"/usr/bin/fuse-overlayfs\"\n" >> $HOME/.config/containers/storage.conf
69+
6270
# For info on the fix to podman in container, see https://samuel.forestier.app/blog/security/podman-rootless-in-podman-rootless-the-debian-way
6371
# Replace setuid bits by proper file capabilities for uidmap binaries.
6472
# See <https://github.com/containers/podman/discussions/19931>.

cmake/docker-utils.cmake

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ function(build_custom_docker_image IMAGE_NAME)
9595
add_custom_command(
9696
TARGET
9797
"${IMAGE_NAME}-docker"
98+
POST_BUILD
9899
COMMAND
99100
${CMAKE_COMMAND} -E make_directory "${out_path}"
100101
COMMAND
@@ -104,6 +105,7 @@ function(build_custom_docker_image IMAGE_NAME)
104105
add_custom_command(
105106
TARGET
106107
"${IMAGE_NAME}-docker"
108+
POST_BUILD
107109
WORKING_DIRECTORY
108110
"${out_path}"
109111
COMMAND
@@ -114,6 +116,7 @@ function(build_custom_docker_image IMAGE_NAME)
114116
add_custom_command(
115117
TARGET
116118
"${IMAGE_NAME}-docker"
119+
POST_BUILD
117120
WORKING_DIRECTORY
118121
"${out_path}"
119122
COMMAND
@@ -125,6 +128,7 @@ function(build_custom_docker_image IMAGE_NAME)
125128
add_custom_command(
126129
TARGET
127130
"${IMAGE_NAME}-docker"
131+
POST_BUILD
128132
WORKING_DIRECTORY
129133
"${out_path}"
130134
COMMAND
@@ -138,6 +142,7 @@ function(build_custom_docker_image IMAGE_NAME)
138142
add_custom_command(
139143
TARGET
140144
"${IMAGE_NAME}-docker"
145+
POST_BUILD
141146
WORKING_DIRECTORY
142147
"${out_path}"
143148
COMMAND
@@ -151,10 +156,15 @@ function(build_custom_docker_image IMAGE_NAME)
151156
add_custom_command(
152157
TARGET
153158
"${IMAGE_NAME}-docker"
159+
POST_BUILD
154160
WORKING_DIRECTORY
155161
"${out_path}"
162+
# Intentionally build with host networking to avoid relying on
163+
# rootless networking helpers (pasta/slirp4netns) inside nested CI
164+
# containers. This improves reliability of podman builds in GitHub
165+
# Actions and similar environments.
156166
COMMAND
157-
podman build -t "${IMAGE_NAME}" ${DOCKER_ARGS} .
167+
podman build --network host -t "${IMAGE_NAME}" ${DOCKER_ARGS} .
158168
)
159169
endif()
160170

@@ -188,6 +198,7 @@ function(build_custom_docker_image IMAGE_NAME)
188198
add_custom_command(
189199
TARGET
190200
"${IMAGE_NAME}-docker-registry"
201+
POST_BUILD
191202
COMMAND
192203
podman tag "${IMAGE_NAME}" "${IMAGE_NAME}:${IMAGE_TAG}"
193204
COMMAND

cmake/golang.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ function(setup_go_module NAME DOMAIN)
2626
add_custom_command(
2727
TARGET
2828
"${TARGET}"
29+
POST_BUILD
2930
COMMAND
3031
${CMAKE_COMMAND} -E make_directory
3132
"${MOD_BUILD_DIR}"
@@ -39,6 +40,7 @@ function(setup_go_module NAME DOMAIN)
3940
add_custom_command(
4041
TARGET
4142
"${TARGET}"
43+
POST_BUILD
4244
WORKING_DIRECTORY
4345
"${MOD_BUILD_DIR}"
4446
COMMAND
@@ -50,6 +52,7 @@ function(setup_go_module NAME DOMAIN)
5052
add_custom_command(
5153
TARGET
5254
"${TARGET}"
55+
POST_BUILD
5356
WORKING_DIRECTORY
5457
"${MOD_BUILD_DIR}"
5558
COMMAND
@@ -101,6 +104,7 @@ function(build_go_package NAME MODULE)
101104
add_custom_command(
102105
TARGET
103106
"${TARGET}"
107+
POST_BUILD
104108
COMMAND
105109
${CMAKE_COMMAND} -E copy_directory
106110
"${CMAKE_CURRENT_SOURCE_DIR}"
@@ -121,6 +125,7 @@ function(build_go_package NAME MODULE)
121125
add_custom_command(
122126
TARGET
123127
"${TARGET}"
128+
POST_BUILD
124129
WORKING_DIRECTORY
125130
"${BUILD_DIR}"
126131
BYPRODUCTS

cmake/protobuf.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ function (build_protobuf NAME)
4747
add_custom_command(
4848
TARGET
4949
"${TARGET_PREPARE}"
50+
POST_BUILD
5051
COMMAND
5152
${CMAKE_COMMAND} -E make_directory
5253
"${CMAKE_CURRENT_BINARY_DIR}/generated"

cmake/render.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ function(render_compile INPUT_DIR)
2121
if(DEFINED ARG_COMPILER)
2222
set(RENDER_COMPILER ${ARG_COMPILER})
2323
else()
24-
get_target_property(RENDER_COMPILER render_compiler LOCATION)
24+
get_property(
25+
RENDER_COMPILER
26+
TARGET
27+
render_compiler
28+
PROPERTY
29+
RENDER_COMPILER_PATH
30+
)
2531
endif()
2632

2733
set(RENDER_${PACKAGE}_OUTPUTS "")

cmake/shell.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ function(lint_shell_script_bundle TARGET)
4646
add_custom_command(
4747
TARGET
4848
${TARGET}
49+
POST_BUILD
4950
WORKING_DIRECTORY
5051
"${CMAKE_CURRENT_SOURCE_DIR}"
5152
COMMAND

collector/kernel/dns/ares.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#define ARES__H
2020

2121
#include "ares_build.h" /* c-ares build definitions */
22-
#include "ares_rules.h" /* c-ares rules enforcement */
2322
#include "ares_version.h" /* c-ares version defines */
2423

2524
/*
@@ -69,6 +68,9 @@
6968
#include <jni.h>
7069
#endif
7170

71+
typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
72+
typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t;
73+
7274
#ifdef __cplusplus
7375
extern "C" {
7476
#endif

render/CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44

5-
get_target_property(
5+
get_property(
66
RENDER_COMPILER
7-
render_compiler LOCATION
7+
TARGET
8+
render_compiler
9+
PROPERTY
10+
RENDER_COMPILER_PATH
811
)
912
render_compile(
1013
${CMAKE_CURRENT_SOURCE_DIR}

renderc/CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,12 @@ add_custom_target(
117117
DEPENDS
118118
${RENDER_COMPILER}
119119
)
120-
set_target_properties(
121-
render_compiler
122-
PROPERTIES
123-
LOCATION ${RENDER_COMPILER}
120+
set_property(
121+
TARGET
122+
render_compiler
123+
PROPERTY
124+
RENDER_COMPILER_PATH
125+
"${RENDER_COMPILER}"
124126
)
125127

126128
add_subdirectory(test)

0 commit comments

Comments
 (0)