Skip to content

Commit

Permalink
JBR-7511 migrate build platforms to OL8
Browse files Browse the repository at this point in the history
- remove Vulcan part that causing builds to fail
- modify scripts for building images from Oracle Linux 8
- update jb/build/VerifyDependencies.java to check libraries have no dependency on symbols from glibc version higher than 2.28
- rename Ubuntu2004 docker files
- upgrade wayland up to wayland-devel-1.21.0-1
  • Loading branch information
vprovodin committed Sep 27, 2024
1 parent 5157205 commit aeac766
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 126 deletions.
46 changes: 0 additions & 46 deletions jb/project/docker/Dockerfile.aarch64

This file was deleted.

44 changes: 44 additions & 0 deletions jb/project/docker/Dockerfile.oraclelinux_aarch64
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# NOTE: This Dockerfile is meant to be used from the mkdocker_aarch64.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 arm64v8/oraclelinux:8

# Install the necessary build tools
RUN yum -y update; \
yum -y install gcc-toolset-10-10.1-0.el8.aarch64; \
yum -y install \
alsa-lib-devel-1.1.9-4.el8.aarch64 \
autoconf-2.69-29.el8_10.1.noarch \
automake-1.16.1-6.el8.noarch \
bzip2-libs-1.0.6-26.el8.aarch64 \
cups-devel-2.2.6-60.el8_10.aarch64 \
file-5.33-26.el8.aarch64 \
fontconfig-devel-2.13.1-4.el8.aarch64 \
freetype-devel-2.9.1-9.el8.aarch64 \
gcc-c++-8.5.0-22.0.1.el8_10.aarch64 \
git-2.43.5-1.el8_10.aarch64 \
git-core-2.43.5-1.el8_10.aarch64 \
libtool-2.4.6-25.el8.aarch64 \
libXi-devel-1.7.10-1.el8.aarch64 \
libXrandr-devel-1.5.2-1.el8.aarch64 \
libXrender-devel-0.9.10-7.el8.aarch64 \
libXt-devel-1.1.5-12.el8.aarch64 \
libXtst-devel-1.2.3-7.el8.aarch64 \
make-devel-4.2.1-11.el8.aarch64 \
rsync-3.1.3-19.el8_7.1.aarch64 \
unzip-6.0-46.el8.aarch64 \
wayland-devel-1.21.0-1.el8.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"

This comment has been minimized.

Copy link
@BerniPL

BerniPL Oct 7, 2024

`Ll```

45 changes: 45 additions & 0 deletions jb/project/docker/Dockerfile.oraclelinux_x86_64
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 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:8

# Install the necessary build tools
RUN yum -y update; \
yum -y install gcc-toolset-10-10.1-0.el8.x86_64; \
yum -y install \
alsa-lib-devel-1.1.9-4.el8.x86_64 \
autoconf-2.69-29.el8_10.1.noarch \
automake-1.16.1-6.el8.noarch \
bzip2-libs-1.0.6-26.el8.x86_64 \
cups-devel-2.2.6-60.el8_10.x86_64 \
file-5.33-26.el8.x86_64 \
fontconfig-devel-2.13.1-4.el8.x86_64 \
freetype-devel-2.9.1-9.el8.x86_64 \
gcc-c++-8.5.0-22.0.1.el8_10.x86_64 \
git-2.43.5-1.el8_10.x86_64 \
git-core-2.43.5-1.el8_10.x86_64 \
libtool-2.4.6-25.el8.x86_64 \
libXi-devel-1.7.10-1.el8.x86_64 \
libXrandr-devel-1.5.2-1.el8.x86_64 \
libXrender-devel-0.9.10-7.el8.x86_64 \
libXt-devel-1.1.5-12.el8.x86_64 \
libXtst-devel-1.2.3-7.el8.x86_64 \
make-devel-4.2.1-11.el8.x86_64 \
rsync-3.1.3-19.el8_7.1.x86_64 \
unzip-6.0-46.el8.x86_64 \
wayland-devel-1.21.0-1.el8.x86_64 \
python36-3.6.8-39.module+el8.10.0+90274+07ba55de; \
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=https://cdn.azul.com/zulu/bin/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 -t jetbrains/runtime:jbr21env_oraclelinux8_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_oraclelinux8_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.
7 changes: 4 additions & 3 deletions test/jdk/jb/build/VerifyDependencies.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,14 @@
/**
* @test
* @summary VerifyDependencies checks readability verifies that a Linux shared
* library has no dependency on symbols from glibc version higher than 2.17
* library has no dependency on symbols from glibc version higher than 2.28
* @run main VerifyDependencies
* @requires (os.family == "linux")
*/

public class VerifyDependencies {

static final public String EXPECTED_VERSION = "2.28";
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 aeac766

Please sign in to comment.