From 2e86d047464af2ed7d42542c6ef27f7038b36a2d Mon Sep 17 00:00:00 2001 From: Robert Gogolok Date: Fri, 30 Jan 2026 00:30:55 +0100 Subject: [PATCH] WIP freebsd [ci skip] Signed-off-by: Robert Gogolok --- Makefile | 25 ++++++++++++++++++++++++ base-images/build.sh | 4 ++-- base-images/freebsd150/base/Dockerfile | 15 ++++++++++++++ base-images/freebsd150/build/Dockerfile | 17 ++++++++++++++++ base-images/freebsd150/run/Dockerfile | 11 +++++++++++ builders/freebsd150/builder.toml | 26 +++++++++++++++++++++++++ buildpacks/hello-moon/buildpack.toml | 3 +++ buildpacks/hello-world/buildpack.toml | 3 +++ 8 files changed, 102 insertions(+), 2 deletions(-) create mode 100755 base-images/freebsd150/base/Dockerfile create mode 100755 base-images/freebsd150/build/Dockerfile create mode 100755 base-images/freebsd150/run/Dockerfile create mode 100644 builders/freebsd150/builder.toml diff --git a/Makefile b/Makefile index e8eb32e8..25b3c19d 100644 --- a/Makefile +++ b/Makefile @@ -153,6 +153,31 @@ set-experimental: @echo "> Setting experimental" $(PACK_CMD) config experimental true +#################### +## FreeBSD pack with podman +#################### + +build-freebsd: build-freebsd-bases build-freebsd-packages build-freebsd-builders + +build-freebsd-bases: build-base-freebsd150 + +build-freebsd150: build-base-freebsd150 build-builder-freebsd150 + +build-base-freebsd150: + @echo "> Building 'freebsd150' base images..." + ${PACK_CMD} config experimental true + bash base-images/build.sh -f docker.io/gogolok/freebsdcnbs-base -p freebsd/amd64 freebsd150 + +build-freebsd-builders: build-builder-freebsd150 + +build-builder-freebsd150: build-freebsd-packages build-sample-root + @echo "> Building 'freebsd150' builder..." + $(PACK_CMD) builder create docker.io/gogolok/freebsdcnbs-sample-builder:freebsd150 --config $(SAMPLES_ROOT)/builders/freebsd150/builder.toml $(PULL_POLICY_NEVER) + +build-freebsd-packages: build-sample-root + @echo "> Creating 'hello-world' buildpack package" + $(PACK_CMD) buildpack package docker.io/gogolok/freebsdcnbs-sample-package:hello-world --config $(SAMPLES_ROOT)/$(PACKAGES_DIR)/hello-world/package.toml $(PULL_POLICY_NEVER) --target "freebsd/amd64" + #################### ## Windows pack for any daemon OS #################### diff --git a/base-images/build.sh b/base-images/build.sh index 59147ab5..72b61642 100755 --- a/base-images/build.sh +++ b/base-images/build.sh @@ -65,9 +65,9 @@ FROM_IMAGE=$(head -n1 "${IMAGE_DIR}"/base/Dockerfile | cut -d' ' -f2) CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-docker} # Get target distro information -DISTRO_NAME=$(${CONTAINER_RUNTIME} run --rm "${FROM_IMAGE}" cat /etc/os-release | grep '^ID=' | cut -d'=' -f2) +DISTRO_NAME=freebsd #$(${CONTAINER_RUNTIME} run --rm "${FROM_IMAGE}" cat /etc/os-release | grep '^ID=' | cut -d'=' -f2) echo "DISTRO_NAME: ${DISTRO_NAME}" -DISTRO_VERSION=$(${CONTAINER_RUNTIME} run --rm "${FROM_IMAGE}" cat /etc/os-release | grep '^VERSION_ID=' | cut -d'=' -f2) +DISTRO_VERSION=15.0 #(${CONTAINER_RUNTIME} run --rm "${FROM_IMAGE}" cat /etc/os-release | grep '^VERSION_ID=' | cut -d'=' -f2) echo "DISTRO_VERSION: ${DISTRO_VERSION}" if [[ -d "${IMAGE_DIR}/base" ]]; then diff --git a/base-images/freebsd150/base/Dockerfile b/base-images/freebsd150/base/Dockerfile new file mode 100755 index 00000000..682a701d --- /dev/null +++ b/base-images/freebsd150/base/Dockerfile @@ -0,0 +1,15 @@ +FROM docker.io/freebsd/freebsd-runtime:15.0 + +RUN pkg install -y \ + ca_root_nss \ + bash \ + && pkg clean -y + +# HACK +RUN /etc/rc.d/os-release start + +# Set required CNB target information +ARG distro_name +LABEL io.buildpacks.base.distro.name=${distro_name} +ARG distro_version +LABEL io.buildpacks.base.distro.version=${distro_version} diff --git a/base-images/freebsd150/build/Dockerfile b/base-images/freebsd150/build/Dockerfile new file mode 100755 index 00000000..6e7152de --- /dev/null +++ b/base-images/freebsd150/build/Dockerfile @@ -0,0 +1,17 @@ +ARG base_image +FROM ${base_image} + +#COPY ./cnb/build-config/env/* /cnb/build-config/env/ + +# Create user and group +ARG cnb_uid=1001 +ARG cnb_gid=1001 +RUN pw groupadd cnb -g ${cnb_gid} && \ + pw useradd cnb -u ${cnb_uid} -g cnb -m -s /usr/local/bin/bash + +# Set user and group +USER ${cnb_uid}:${cnb_gid} + +# Set required CNB information +ENV CNB_USER_ID=${cnb_uid} +ENV CNB_GROUP_ID=${cnb_gid} diff --git a/base-images/freebsd150/run/Dockerfile b/base-images/freebsd150/run/Dockerfile new file mode 100755 index 00000000..b0020b35 --- /dev/null +++ b/base-images/freebsd150/run/Dockerfile @@ -0,0 +1,11 @@ +ARG base_image +FROM ${base_image} + +# Create user and group +ARG cnb_uid=1001 +ARG cnb_gid=1001 +RUN pw groupadd cnb -g ${cnb_gid} && \ + pw useradd cnb -u ${cnb_uid} -g cnb -m -s /usr/local/bin/bash + +# Set user and group +USER ${cnb_uid}:${cnb_gid} diff --git a/builders/freebsd150/builder.toml b/builders/freebsd150/builder.toml new file mode 100644 index 00000000..216f5848 --- /dev/null +++ b/builders/freebsd150/builder.toml @@ -0,0 +1,26 @@ +# Buildpacks to include in builder +[[buildpacks]] +uri = "docker.io/gogolok/freebsdcnbs-sample-package:hello-world" + +[[order]] +[[order.group]] +id = "samples/hello-world" + +# Base images used to create the builder +[build] +image = "docker.io/gogolok/freebsdcnbs-base-build:freebsd150" +[run] +[[run.images]] +image = "docker.io/gogolok/freebsdcnbs-base-run:freebsd150" + +# WIP +[lifecycle] +uri = "./lifecycle-freebsd.amd64.tgz" + +[[targets]] +arch = "amd64" +os = "freebsd" + +[[targets]] +arch = "arm64" +os = "freebsd" diff --git a/buildpacks/hello-moon/buildpack.toml b/buildpacks/hello-moon/buildpack.toml index 843ccdaf..4e59a37e 100644 --- a/buildpacks/hello-moon/buildpack.toml +++ b/buildpacks/hello-moon/buildpack.toml @@ -12,3 +12,6 @@ sbom-formats = ["application/vnd.cyclonedx+json"] # Targets the buildpack will work with [[targets]] os = "linux" + +[[targets]] +os = "freebsd" diff --git a/buildpacks/hello-world/buildpack.toml b/buildpacks/hello-world/buildpack.toml index 1f86da65..17d61119 100644 --- a/buildpacks/hello-world/buildpack.toml +++ b/buildpacks/hello-world/buildpack.toml @@ -11,3 +11,6 @@ homepage = "https://github.com/buildpacks/samples/tree/main/buildpacks/hello-wor # Targets the buildpack will work with [[targets]] os = "linux" + +[[targets]] +os = "freebsd"