From 500f767f5deb8315f264ca011dd6247a1a1a6c4a Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Sun, 2 Feb 2025 17:10:17 -0500 Subject: [PATCH] Add Docker image to build natives with older dependencies Prerequisite of https://github.com/eclipse-equinox/equinox/issues/830 --- .../Builds/DockerImagesBuild.jenkinsfile | 1 + .../debian/swtgtk3nativebuild/Dockerfile | 37 +++++++++++++++++++ .../swtgtk3nativebuild/scripts/uid_entrypoint | 7 ++++ 3 files changed, 45 insertions(+) create mode 100644 cje-production/dockerfiles/debian/swtgtk3nativebuild/Dockerfile create mode 100644 cje-production/dockerfiles/debian/swtgtk3nativebuild/scripts/uid_entrypoint diff --git a/JenkinsJobs/Builds/DockerImagesBuild.jenkinsfile b/JenkinsJobs/Builds/DockerImagesBuild.jenkinsfile index b496d0e5f30..e6816c4d926 100644 --- a/JenkinsJobs/Builds/DockerImagesBuild.jenkinsfile +++ b/JenkinsJobs/Builds/DockerImagesBuild.jenkinsfile @@ -25,6 +25,7 @@ pipeline { dir('eclipse.platform.releng.aggregator/cje-production/dockerfiles') { parallel( 'debian-swtnative': { buildAndPushImage('debian/swtnativebuild', 'eclipse/platformreleng-debian-swtnativebuild:12') }, + 'debian-swtgtk3native': { buildAndPushImage('debian/swtgtk3nativebuild', 'eclipse/platformreleng-debian-swtgtk3nativebuild:10') }, 'centos9-gtk4': { buildAndPushImage('centos-gtk4-mutter/9-gtk4', 'eclipse/platformreleng-centos-gtk4-mutter:9') }, 'opensuse-gtk3': { buildAndPushImage('opensuse-gtk3-metacity/15-gtk3', 'eclipse/platformreleng-opensuse-gtk3-metacity:15') }, failFast: false) diff --git a/cje-production/dockerfiles/debian/swtgtk3nativebuild/Dockerfile b/cje-production/dockerfiles/debian/swtgtk3nativebuild/Dockerfile new file mode 100644 index 00000000000..e4274a07425 --- /dev/null +++ b/cje-production/dockerfiles/debian/swtgtk3nativebuild/Dockerfile @@ -0,0 +1,37 @@ +FROM debian:10 + +### user name recognition at runtime w/ an arbitrary uid - for OpenShift deployments +COPY scripts/uid_entrypoint /usr/local/bin/uid_entrypoint +RUN chmod u+x /usr/local/bin/uid_entrypoint && \ + chgrp 0 /usr/local/bin/uid_entrypoint && \ + chmod g=u /usr/local/bin/uid_entrypoint /etc/passwd +### end + +ENV LANG=en_US.UTF-8 +RUN apt-get update -qq && apt-get install -qq -y \ + locales \ + build-essential \ + procps \ + git \ + libgtk-3-dev \ + freeglut3-dev \ + webkit2gtk-driver + +# There is purposefully no JDK in this image. If a particular build needs JDK it installs +# it in the Jenkinsfile. + +ENV HOME=/home/swtbuild +ENV DISPLAY :0 +RUN useradd -u 10001 -d ${HOME} testuser + +RUN mkdir -p /var/lib/dbus && dbus-uuidgen > /var/lib/dbus/machine-id \ + && mkdir -p /var/run/dbus + +# Make $HOME open to the 'root' group (so Jenkins/OpenShift user can write there) +WORKDIR $HOME +RUN chgrp -R 0 ${HOME} && chmod -R g=u ${HOME} + +RUN localedef -i en_US -f UTF-8 en_US.UTF-8 +ENV LANG=en_US.UTF-8 + +USER 10001 diff --git a/cje-production/dockerfiles/debian/swtgtk3nativebuild/scripts/uid_entrypoint b/cje-production/dockerfiles/debian/swtgtk3nativebuild/scripts/uid_entrypoint new file mode 100644 index 00000000000..e96c4e5c7d9 --- /dev/null +++ b/cje-production/dockerfiles/debian/swtgtk3nativebuild/scripts/uid_entrypoint @@ -0,0 +1,7 @@ +#!/usr/bin/env sh +if ! whoami > /dev/null 2>&1; then + if [ -w /etc/passwd ]; then + echo "${USER_NAME:-default}:x:$(id -u):0:${USER_NAME:-default} user:${HOME}:/sbin/nologin" >> /etc/passwd + fi +fi +exec "$@"