Skip to content

Commit 7ccea84

Browse files
committed
HADOOP-19709. [JDK17] Add debian:12 and debian:13 as a build platform with JDK-17 as default
This commit introduces support for Debian 12 (Bookworm) and Debian 13 (Trixie) as build platforms, following the approach established for Ubuntu 24. Key changes include: - Creation of `Dockerfile_debian_12` and `Dockerfile_debian_13` based on `Dockerfile_ubuntu_24`, with appropriate base images and package resolver arguments. - Updates to `dev-support/docker/pkg-resolver/packages.json` to include package definitions for `debian:12` and `debian:13`. - Addition of `debian:12` and `debian:13` to `dev-support/docker/pkg-resolver/platforms.json`. - Modification of `BUILDING.txt` to list `debian_12` and `debian_13` as supported OS platforms.
1 parent e292750 commit 7ccea84

File tree

5 files changed

+347
-3
lines changed

5 files changed

+347
-3
lines changed

BUILDING.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ On Linux / Mac:
3131

3232
$ ./start-build-env.sh [OS platform]
3333

34-
- [OS Platform] One of [rockylinux_8, debian_11, ubuntu_20, ubuntu_24, windows_10].
34+
- [OS Platform] One of [rockylinux_8, debian_11, debian_12, debian_13, ubuntu_20, ubuntu_24, windows_10].
3535
Default is 'ubuntu_20'.
3636
Note: Currently only default ('ubuntu_20') is supported on arm machine
3737

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Dockerfile for installing the necessary dependencies for building Hadoop.
18+
# See BUILDING.txt.
19+
20+
FROM debian:12
21+
22+
WORKDIR /root
23+
24+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
25+
26+
#####
27+
# Disable suggests/recommends
28+
#####
29+
RUN echo 'APT::Install-Recommends "0";' > /etc/apt/apt.conf.d/10disableextras
30+
RUN echo 'APT::Install-Suggests "0";' >> /etc/apt/apt.conf.d/10disableextras
31+
32+
ENV DEBIAN_FRONTEND noninteractive
33+
ENV DEBCONF_TERSE true
34+
35+
######
36+
# Platform package dependency resolver
37+
######
38+
COPY pkg-resolver pkg-resolver
39+
RUN chmod a+x pkg-resolver/*.sh pkg-resolver/*.py \
40+
&& chmod a+r pkg-resolver/*.json
41+
42+
######
43+
# Install packages from apt
44+
######
45+
# hadolint ignore=DL3008,SC2046
46+
RUN apt-get -q update
47+
RUN apt-get -q install -y --no-install-recommends wget apt-transport-https gpg gpg-agent gawk ca-certificates
48+
RUN apt-get -q install -y --no-install-recommends python3
49+
RUN echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" > /etc/apt/sources.list.d/adoptium.list
50+
RUN wget -q -O - https://packages.adoptium.net/artifactory/api/gpg/key/public > /etc/apt/trusted.gpg.d/adoptium.asc
51+
RUN apt-get -q update
52+
RUN apt-get -q install -y --no-install-recommends $(pkg-resolver/resolve.py debian:12)
53+
RUN apt-get clean
54+
RUN update-java-alternatives -s temurin-17-jdk-amd64
55+
RUN rm -rf /var/lib/apt/lists/*
56+
57+
RUN locale-gen en_US.UTF-8
58+
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
59+
ENV PYTHONIOENCODING=utf-8
60+
61+
######
62+
# Set env vars required to build Hadoop
63+
######
64+
ENV MAVEN_HOME=/opt/maven
65+
ENV PATH="${PATH}:${MAVEN_HOME}/bin"
66+
# JAVA_HOME must be set in Maven >= 3.5.0 (MNG-6003)
67+
ENV JAVA_HOME /usr/lib/jvm/temurin-17-jdk-amd64
68+
69+
#######
70+
# Set env vars for SpotBugs 4.2.2
71+
#######
72+
ENV SPOTBUGS_HOME /opt/spotbugs
73+
74+
#######
75+
# Set env vars for Google Protobuf 3.21.12
76+
#######
77+
ENV PROTOBUF_HOME /opt/protobuf
78+
ENV PATH="${PATH}:/opt/protobuf/bin"
79+
80+
###
81+
# Avoid out of memory errors in builds
82+
###
83+
ENV MAVEN_OPTS -Xms256m -Xmx3072m
84+
85+
# Skip gpg verification when downloading Yetus via yetus-wrapper
86+
ENV HADOOP_SKIP_YETUS_VERIFICATION true
87+
88+
####
89+
# Install packages
90+
####
91+
RUN pkg-resolver/install-maven.sh debian:12
92+
RUN pkg-resolver/install-spotbugs.sh debian:12
93+
RUN pkg-resolver/install-boost.sh debian:12
94+
RUN pkg-resolver/install-protobuf.sh debian:12
95+
RUN pkg-resolver/install-hadolint.sh debian:12
96+
RUN pkg-resolver/install-intel-isa-l.sh debian:12
97+
98+
###
99+
# Everything past this point is either not needed for testing or breaks Yetus.
100+
# So tell Yetus not to read the rest of the file:
101+
# YETUS CUT HERE
102+
###
103+
104+
# Add a welcome message and environment checks.
105+
COPY hadoop_env_checks.sh /root/hadoop_env_checks.sh
106+
RUN chmod 755 /root/hadoop_env_checks.sh
107+
# hadolint ignore=SC2016
108+
RUN echo '${HOME}/hadoop_env_checks.sh' >> /root/.bashrc
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Dockerfile for installing the necessary dependencies for building Hadoop.
18+
# See BUILDING.txt.
19+
20+
FROM debian:13
21+
22+
WORKDIR /root
23+
24+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
25+
26+
#####
27+
# Disable suggests/recommends
28+
#####
29+
RUN echo 'APT::Install-Recommends "0";' > /etc/apt/apt.conf.d/10disableextras
30+
31+
ENV DEBIAN_FRONTEND noninteractive
32+
ENV DEBCONF_TERSE true
33+
34+
######
35+
# Platform package dependency resolver
36+
######
37+
COPY pkg-resolver pkg-resolver
38+
RUN chmod a+x pkg-resolver/*.sh pkg-resolver/*.py \
39+
&& chmod a+r pkg-resolver/*.json
40+
41+
######
42+
# Install packages from apt
43+
######
44+
# hadolint ignore=DL3008,SC2046
45+
RUN apt-get -q update
46+
RUN apt-get -q install -y --no-install-recommends wget apt-transport-https gpg gpg-agent gawk ca-certificates
47+
RUN apt-get -q install -y --no-install-recommends python3
48+
RUN echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" > /etc/apt/sources.list.d/adoptium.list
49+
RUN wget -q -O - https://packages.adoptium.net/artifactory/api/gpg/key/public > /etc/apt/trusted.gpg.d/adoptium.asc
50+
RUN apt-get -q update
51+
RUN apt-get -q install -y --no-install-recommends $(pkg-resolver/resolve.py debian:13)
52+
RUN apt-get clean
53+
RUN update-java-alternatives -s temurin-17-jdk-amd64
54+
RUN rm -rf /var/lib/apt/lists/*
55+
56+
RUN locale-gen en_US.UTF-8
57+
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
58+
ENV PYTHONIOENCODING=utf-8
59+
60+
######
61+
# Set env vars required to build Hadoop
62+
######
63+
ENV MAVEN_HOME=/opt/maven
64+
ENV PATH="${PATH}:${MAVEN_HOME}/bin"
65+
# JAVA_HOME must be set in Maven >= 3.5.0 (MNG-6003)
66+
ENV JAVA_HOME /usr/lib/jvm/temurin-17-jdk-amd64
67+
68+
#######
69+
# Set env vars for SpotBugs 4.2.2
70+
#######
71+
ENV SPOTBUGS_HOME /opt/spotbugs
72+
73+
#######
74+
# Set env vars for Google Protobuf 3.21.12
75+
#######
76+
ENV PROTOBUF_HOME /opt/protobuf
77+
ENV PATH="${PATH}:/opt/protobuf/bin"
78+
79+
###
80+
# Avoid out of memory errors in builds
81+
###
82+
ENV MAVEN_OPTS -Xms256m -Xmx3072m
83+
84+
# Skip gpg verification when downloading Yetus via yetus-wrapper
85+
ENV HADOOP_SKIP_YETUS_VERIFICATION true
86+
87+
####
88+
# Install packages
89+
####
90+
RUN pkg-resolver/install-maven.sh debian:13
91+
RUN pkg-resolver/install-spotbugs.sh debian:13
92+
RUN pkg-resolver/install-boost.sh debian:13
93+
RUN pkg-resolver/install-protobuf.sh debian:13
94+
RUN pkg-resolver/install-hadolint.sh debian:13
95+
RUN pkg-resolver/install-intel-isa-l.sh debian:13
96+
97+
###
98+
# Everything past this point is either not needed for testing or breaks Yetus.
99+
# So tell Yetus not to read the rest of the file:
100+
# YETUS CUT HERE
101+
###
102+
103+
# Add a welcome message and environment checks.
104+
COPY hadoop_env_checks.sh /root/hadoop_env_checks.sh
105+
RUN chmod 755 /root/hadoop_env_checks.sh
106+
# hadolint ignore=SC2016
107+
RUN echo '${HOME}/hadoop_env_checks.sh' >> /root/.bashrc

0 commit comments

Comments
 (0)