Skip to content

Commit

Permalink
JBR-7656 migrate build platforms to OL7
Browse files Browse the repository at this point in the history
  • Loading branch information
vprovodin authored Sep 25, 2024
2 parents 324ce38 + 7f5cfd7 commit 6f18a71
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,28 @@
# NB: this also means there may be no security-related fixes there, need to
# move the version to the next manually.

# jetbrains/runtime:jbr17env_aarch64
FROM arm64v8/centos:7
FROM arm64v8/oraclelinux:7

COPY scl.repo /etc/yum.repos.d/

# Install the necessary build tools
RUN yum -y update; \
yum -y install centos-release-scl; \
yum -y install devtoolset-10-10.1-0.el7; \
yum -y install \
devtoolset-10-libstdc++-devel-10.2.1-11.2.0.2.el7.aarch64 \
devtoolset-10-runtime-10.1-0.el7.aarch64 \
devtoolset-10-binutils-2.35-5.el7.aarch64 \
devtoolset-10-gcc-10.2.1-11.2.0.2.el7.aarch64 \
devtoolset-10-gcc-c++-10.2.1-11.2.0.2.el7.aarch64; \
yum -y install \
alsa-lib-devel-1.1.8-1.el7.aarch64 \
autoconf-2.69-11.el7.noarch \
automake-1.13.4-3.el7.noarch \
bzip2-1.0.6-13.el7.aarch64 \
cups-devel-1.6.3-51.el7.aarch64 \
bzip2-libs-1.0.6-13.el7.aarch64 \
cups-devel-1.6.3-52.el7_9.aarch64 \
file-5.11-37.el7.aarch64 \
fontconfig-devel-2.13.0-4.3.el7.aarch64 \
freetype-devel-2.8-14.el7_9.1.aarch64 \
giflib-devel-4.1.6-9.el7.aarch64 \
git-1.8.3.1-24.el7_9.aarch64 \
git-1.8.3.1-25.el7_9.aarch64 \
libtool-2.4.2-22.el7_3.aarch64 \
libXi-devel-1.7.9-1.el7.aarch64 \
libXrandr-devel-1.5.1-2.el7.aarch64 \
Expand All @@ -32,15 +36,14 @@ RUN yum -y update; \
libXtst-devel-1.2.3-1.el7.aarch64 \
make-3.82-24.el7.aarch64 \
rsync-3.1.2-12.el7_9.aarch64 \
tar-1.26-35.el7.aarch64 \
unzip-6.0-24.el7_9.aarch64 \
wayland-devel-1.15.0-1.el7 \
zip-3.0-11.el7.aarch64; \
yum -y clean all
unzip-6.0-24.0.1.el7_9.aarch64 \
zip-3.0-11.el7.aarch64 \
wayland-devel-1.15.0-1.el7.aarch64; \
yum -y clean all

RUN git config --global user.email "[email protected]" && \
git config --global user.name "builduser"

ENV PATH="/opt/rh/devtoolset-10/root/usr/bin:${PATH}"
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"

RUN git config --global user.email "[email protected]" && \
git config --global user.name "builduser"
50 changes: 50 additions & 0 deletions jb/project/docker/Dockerfile.oraclelinux_x86_64
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# NOTE: This Dockerfile is meant to be used from the mkdocker_x86_64.sh script.

# Pull a concrete version of Linux that does NOT recieve updates after it's
# been created. This is so that the image is as stable as possible to make
# image creation reproducible.
# NB: this also means there may be no security-related fixes there, need to
# move the version to the next manually.

FROM amd64/oraclelinux:7

COPY scl.repo /etc/yum.repos.d/

# Install the necessary build tools
RUN yum -y update; \
yum -y install \
devtoolset-10-libstdc++-devel-10.2.1-11.1.0.1.el7.x86_64 \
devtoolset-10-runtime-10.1-0.el7.x86_64 \
devtoolset-10-binutils-2.35-5.el7.x86_64 \
devtoolset-10-gcc-10.2.1-11.2.0.1.el7.x86_64 \
devtoolset-10-gcc-c++-10.2.1-11.2.0.1.el7.x86_64; \
yum -y install \
alsa-lib-devel-1.1.8-1.el7.x86_64 \
autoconf-2.69-11.el7.noarch \
automake-1.13.4-3.el7.noarch \
bzip2-libs-1.0.6-13.el7.x86_64 \
cups-devel-1.6.3-52.el7_9.x86_64 \
file-5.11-37.el7.x86_64 \
fontconfig-devel-2.13.0-4.3.el7.x86_64 \
freetype-devel-2.8-14.el7_9.1.x86_64 \
git-1.8.3.1-25.el7_9.x86_64 \
libtool-2.4.2-22.el7_3.x86_64 \
libXi-devel-1.7.9-1.el7.x86_64 \
libXrandr-devel-1.5.1-2.el7.x86_64 \
libXrender-devel-0.9.10-1.el7.x86_64 \
libXt-devel-1.1.5-3.el7.x86_64 \
libXtst-devel-1.2.3-1.el7.x86_64 \
make-3.82-24.el7.x86_64 \
rsync-3.1.2-12.el7_9.x86_64 \
unzip-6.0-24.0.1.el7_9.x86_64 \
zip-3.0-11.el7.x86_64 \
wayland-devel-1.15.0-1.el7.x86_64; \
yum -y clean all

RUN git config --global user.email "[email protected]" && \
git config --global user.name "builduser" && \
git config --global --add safe.directory '*'

ENV PATH="/opt/rh/devtoolset-10/root/usr/bin:${PATH}"
ENV LD_LIBRARY_PATH="/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib"
ENV PKG_CONFIG_PATH="/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig"
73 changes: 0 additions & 73 deletions jb/project/docker/Dockerfile.x86_64

This file was deleted.

7 changes: 3 additions & 4 deletions jb/project/docker/mkdocker_aarch64.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@ set -euo pipefail
set -x

# This script creates a Docker image suitable for building AArch64 variant
# of the JetBrains Runtime "dev" version.

BOOT_JDK_REMOTE_FILE=zulu17.30.15-ca-jdk17.0.1-linux_aarch64.tar.gz
BOOT_JDK_SHA=4d9c9116eb0cdd2d7fb220d6d27059f4bf1b7e95cc93d5512bd8ce3791af86c7
BOOT_JDK_REMOTE_FILE=zulu21.36.17-ca-jdk21.0.4-linux_aarch64.tar.gz
BOOT_JDK_SHA=da3c2d7db33670bcf66532441aeb7f33dcf0d227c8dafe7ce35cee67f6829c4c
BOOT_JDK_LOCAL_FILE=boot_jdk.tar.gz

if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
Expand All @@ -22,7 +21,7 @@ sha256sum -c - <<EOF
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
EOF

docker build -t jbrdevenv_arm64v8 -f Dockerfile.aarch64 .
docker build --no-cache -t jetbrains/runtime:jbr21env_oraclelinux7_aarch64 -f Dockerfile.oraclelinux_aarch64 .

# NB: the resulting container can (and should) be used without the network
# connection (--network none) during build in order to reduce the chance
Expand Down
28 changes: 28 additions & 0 deletions jb/project/docker/mkdocker_x86_64.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

set -euo pipefail
set -x

# This script creates a Docker image suitable for building x86-64 variant

BOOT_JDK_REMOTE_FILE=zulu21.36.17-ca-jdk21.0.4-linux_x64.tar.gz
BOOT_JDK_SHA=318d0c2ed3c876fb7ea2c952945cdcf7decfb5264ca51aece159e635ac53d544
BOOT_JDK_LOCAL_FILE=boot_jdk.tar.gz

if [ ! -f $BOOT_JDK_LOCAL_FILE ]; then
# Obtain "boot JDK" from outside of the container.
wget -nc https://cdn.azul.com/zulu/bin/${BOOT_JDK_REMOTE_FILE} -O $BOOT_JDK_LOCAL_FILE
else
echo "boot JDK \"$BOOT_JDK_LOCAL_FILE\" present, skipping download"
fi

# Verify that what we've downloaded can be trusted.
sha256sum -c - <<EOF
$BOOT_JDK_SHA *$BOOT_JDK_LOCAL_FILE
EOF

docker build -t jetbrains/runtime:jbr21env_oraclelinux7_amd64 -f Dockerfile.oraclelinux_x86_64 .

# NB: the resulting container can (and should) be used without the network
# connection (--network none) during build in order to reduce the chance
# of build contamination.
6 changes: 6 additions & 0 deletions jb/project/docker/scl.repo
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[ol7_scl]
name=Oracle Linux $releasever Update 8 ($basearch) Software Collection
baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL7/SoftwareCollections/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
5 changes: 3 additions & 2 deletions test/jdk/jb/build/VerifyDependencies.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

public class VerifyDependencies {

static final public String EXPECTED_VERSION = "2.17";
public static void verifyLibrary(String libraryPath) throws IOException {
Process process;
BufferedReader reader;
Expand All @@ -51,12 +52,12 @@ public static void verifyLibrary(String libraryPath) throws IOException {
System.out.println(line);
if (line.contains("GLIBC_")) {
String version = extractVersion(line);
if (compareVersions(version, "2.17") > 0) {
if (compareVersions(version, EXPECTED_VERSION) > 0) {
throw new RuntimeException(libraryPath + " has a dependency on glibc version " + version);
}
}
}
System.out.println(libraryPath + " has no dependency on glibc version higher than 2.17");
System.out.println(libraryPath + " has no dependency on glibc version higher than " + EXPECTED_VERSION);
}

private static String extractVersion(String line) {
Expand Down

0 comments on commit 6f18a71

Please sign in to comment.