diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index a7db75e..0000000 --- a/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!/piped.sh diff --git a/.forgejo/workflows/build_and_release.yml b/.forgejo/workflows/build_and_release.yml index 66787f4..695cf86 100644 --- a/.forgejo/workflows/build_and_release.yml +++ b/.forgejo/workflows/build_and_release.yml @@ -2,10 +2,11 @@ name: Docker Image CI on: push: + pull_request: env: - REGISTRY: git.dc09.ru + REGISTRY: git.dc09.ru # Change to your registry (e.g., forgejo.example.com) GITHUB_TOKEN: ${{ secrets.FORGEJO_PASSWORD }} GITHUB_API_URL: https://git.dc09.ru GITHUB_BASE_REF: git.dc09.ru @@ -23,7 +24,7 @@ jobs: - dockerfile: 'Dockerfile.openj9' image_name: 'openj9' context: './' - build-args: [] + build-args: ["WITH_JDK=false"] - dockerfile: 'Dockerfile.piped' image_name: 'piped' context: './' @@ -59,6 +60,7 @@ jobs: github-token: ${{ secrets.FORGEJO_PASSWORD }} github-server: https://git.dc09.ru + - name: Build and push Docker image uses: docker/build-push-action@v5 with: @@ -67,4 +69,4 @@ jobs: push: ${{ github.event_name == 'push' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - build-args: ${{ matrix.images.build-args }} + build-args: ${{ matrix.images.build-args }} \ No newline at end of file diff --git a/Dockerfile.openj9 b/Dockerfile.openj9 index 3070f9c..66ebf66 100644 --- a/Dockerfile.openj9 +++ b/Dockerfile.openj9 @@ -1,45 +1,51 @@ FROM ubuntu:25.04 AS build -# partially copied from mkdocker.sh +# partly copied from mkdocker.sh # Copyright IBM Corp (Eclipse Public License 2.0) -ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get -qq update \ - && apt-get -qq upgrade -y \ - && apt-get -qq install -y --no-install-recommends \ - ant ant-contrib autoconf ca-certificates cmake cpio file gcc g++ git \ - libasound2-dev libcups2-dev libdwarf-dev libelf-dev libexpat1-dev libffi-dev \ - libfontconfig libfontconfig1-dev libfreetype6-dev libnuma-dev libssl-dev \ - libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev libxtst-dev \ - make nasm openjdk-21-jdk-headless pkg-config python3 python3-dev rsync \ - systemtap-sdt-dev unzip xvfb zip zlib1g-dev \ - && rm -rf /var/lib/apt/lists/* +RUN apt -qq update \ + && apt -qq upgrade -y \ + && apt -qq install -y --no-install-recommends \ + ant ant-contrib autoconf build-essential ca-certificates cmake cpio curl file gcc-14 g++-14 gdb git \ + libasound2-dev libcups2-dev libdwarf-dev libelf-dev libexpat1-dev libffi-dev libfontconfig libfontconfig1-dev \ + libfreetype6-dev libnuma-dev libssl-dev libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev libxtst-dev \ + make nasm pkg-config python3 python3-dev rsync systemtap-sdt-dev unzip wget xvfb zip zlib1g-dev execstack unzip \ + && rm -rf /var/lib/apt/lists/* WORKDIR /build +RUN mkdir /build/bootjdk /build/dist \ + && wget --progress=dot:mega -O jdk21.tar.gz \ + https://api.adoptopenjdk.net/v3/binary/latest/21/ga/linux/x64/jdk/openj9/normal/adoptopenjdk \ + && tar -xzf jdk21.tar.gz --directory=/build/bootjdk --strip-components=1 \ + && rm -f jdk21.tar.gz + +RUN wget --progress=dot:mega -O jtreg.zip https://builds.shipilev.net/jtreg/jtreg-7.5.1%2B1.zip \ + && unzip jtreg.zip -d /build \ + && rm -rf jtreg.zip + +ENV JT_HOME=/build/jtreg + +RUN find /build/bootjdk -name '*.so' | xargs execstack -c RUN git clone --single-branch --depth 1 \ - https://github.com/ibmruntimes/openj9-openjdk-jdk21.git \ - /build/src + https://github.com/ibmruntimes/openj9-openjdk-jdk21.git \ + /build/src WORKDIR /build/src RUN bash get_source.sh -ENV CC=/usr/bin/gcc CXX=/usr/bin/g++ RUN bash configure \ - --with-boot-jdk=/usr/lib/jvm/java-21-openjdk-amd64 \ - --with-openssl=system \ - --with-extra-cflags="-O3 -flto=auto -fuse-linker-plugin" \ - --with-extra-cxxflags="-O3 -flto=auto -fuse-linker-plugin" \ - --with-extra-ldflags="-Wl,-O1" \ - --with-native-debug-symbols=none \ - --enable-jvm-feature-link-time-opt -RUN make all JOBS=$(nproc) + --enable-libffi-bundling --enable-ddr --enable-jitserver \ + --enable-fallback-linker --with-jtreg=/build/jtreg --with-boot-jdk=/build/bootjdk \ + --with-openssl=system --with-extra-ldflags="-Wl,-z,noexecstack" -WORKDIR /build/src/build/linux-x86_64-server-release/images +RUN make all JOBS=$(nproc) +RUN make install # jlink by advice from https://adoptium.net/blog/2021/10/jlink-to-produce-own-runtime/ +WORKDIR /build/src/build/linux-x86_64-server-release/images RUN jdk/bin/jlink --strip-debug --no-man-pages --no-header-files --compress=2 \ - --output jre \ - --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,\ + --output jre \ + --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,\ java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.se,\ java.security.jgss,java.security.sasl,java.smartcardio,java.sql,java.sql.rowset,java.transaction.xa,\ java.xml,java.xml.crypto,jdk.accessibility,jdk.charsets,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.dynalink,\ @@ -48,7 +54,36 @@ jdk.nio.mapmode,jdk.random,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsu jdk.xml.dom,jdk.zipfs,openj9.criu,openj9.cuda,openj9.dataaccess,openj9.gpu,openj9.jvm,\ openj9.sharedclasses,openj9.zosconditionhandling -RUN mkdir -p /build/dist && mv ./* /build/dist/ + + +ENV JAVA_HOME=/build/src/build/linux-x86_64-server-release/images/jre +ENV PATH="$JAVA_HOME/bin:$JAVA_HOME/lib:$PATH" +ENV TEST_JDK_HOME=/build/src/build/linux-x86_64-server-release/images/jdk +ENV TEST_ROOT=/build/src/openj9/test +ENV DIAGNOSTICLEVEL=nodetails +ENV NATIVE_TEST_LIBS=/build/src/build/linux-x86_64-server-release/images/test + +RUN cd /build/src/openj9/test \ + && git clone https://github.com/adoptium/TKG.git + +WORKDIR /build/src/openj9/test/TKG + +ENV BUILD_LIST=functional + +RUN find ../ -type f -name "playlist.xml" | xargs sed -i 's#jit_jar#jit_jarhttps://github.com/#g' +RUN find ../ -type f -name "playlist.xml" | xargs sed -i 's#testJITServer#testJITServerhttps://github.com/#g' + +RUN make compile -j$(nproc) + +RUN make genParallelList PARALLEL_OPTIONS=TEST=_sanity.functional.regular TEST_TIME= NUM_MACHINES=$(nproc) + +RUN cat parallelList.mk + +RUN make -f parallelList.mk JOBS=$(nproc) + +WORKDIR /build/src/build/linux-x86_64-server-release/images +RUN mv ./* /build/dist/ + # ------