From 3217d36ff281a8ff2dc6e461d119e4679b9d93eb Mon Sep 17 00:00:00 2001 From: Sindre Stephansen Date: Fri, 7 Feb 2025 10:51:17 +0100 Subject: [PATCH] Move Gradle handing to separate script --- sync/.dockerignore | 1 + sync/Dockerfile | 35 +++++----------------------------- sync/download-gradle.sh | 42 +++++++++++++++++++++++++++++++++++++++++ sync/resolve-deps.sh | 6 ------ 4 files changed, 48 insertions(+), 36 deletions(-) create mode 100755 sync/download-gradle.sh diff --git a/sync/.dockerignore b/sync/.dockerignore index d9a7dec..447797e 100644 --- a/sync/.dockerignore +++ b/sync/.dockerignore @@ -1,4 +1,5 @@ ** +!download-gradle.sh !resolve-deps.sh !src !requirements.txt diff --git a/sync/Dockerfile b/sync/Dockerfile index 82186bc..aaf2619 100644 --- a/sync/Dockerfile +++ b/sync/Dockerfile @@ -1,53 +1,28 @@ FROM rockylinux:9 # Base image - -ENV GRADLE_VER=8.11 -ENV GRADLE_HOME=/opt/gradle - # Local change to disable mirrorlists RUN find /etc/yum.repos.d/ -type f -exec sed -i 's/^mirrorlist/#mirrorlist/;s/^#baseurl/baseurl/' {} \; RUN dnf makecache --refresh && \ dnf -y update -RUN dnf -y install wget unzip && \ - dnf -y clean all && rm -rf /var/cache - -RUN wget --output-document=/gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VER}-bin.zip" && \ - unzip -d /tmp /gradle.zip && \ - mv /tmp/gradle-${GRADLE_VER} /opt/gradle && \ - ln -s ${GRADLE_HOME}/bin/gradle /usr/local/bin/gradle && \ - rm -rf /gradle.zip - ENV JRE_VER=17 RUN dnf -y install vim yum-utils createrepo_c bzip2 tar vim cargo nodejs \ jq java-${JRE_VER}-openjdk java-${JRE_VER}-openjdk-devel.x86_64 nmap-ncat \ - python3.12-pip python3.12-lxml python3.12-requests && \ + python3.12-pip python3.12-lxml python3.12-requests wget unzip && \ dnf -y update && \ ln -sf /usr/bin/python3.12 /usr/bin/python3 && \ dnf -y clean all && rm -rf /var/cache # Local image - -WORKDIR /tmp/gradle-wrapper-setup/default -RUN touch settings.gradle.kts -RUN gradle wrapper -RUN ./gradlew build - -WORKDIR /tmp/gradle-wrapper-setup/v8.8 -RUN touch settings.gradle.kts -RUN gradle wrapper --gradle-version 8.8 -RUN ./gradlew build - -WORKDIR /tmp/gradle-wrapper-setup/v8.10 -RUN touch settings.gradle.kts -RUN gradle wrapper --gradle-version 8.10 -RUN ./gradlew build - WORKDIR /workdir +ENV GRADLE_HOME=/opt/gradle +COPY download-gradle.sh . +RUN sh ./download-gradle.sh 8.12 8.11 8.10 8.8 + COPY requirements.txt . RUN python3 -m pip install -r requirements.txt diff --git a/sync/download-gradle.sh b/sync/download-gradle.sh new file mode 100755 index 0000000..ea8b3fb --- /dev/null +++ b/sync/download-gradle.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +USAGE="Usage: $0 MAIN_GRADLE_VERSION OTHER_GRADLE_VERSIONS..." + +if ["$#" == "0" ]; then + echo $USAGE + exit 1 +fi + +MAIN_VERSION=$1 +shift + +# Download the main version manually +GRADLE_URL="https://services.gradle.org/distributions/gradle-${MAIN_VERSION}-bin.zip" +DOWNLOAD_PATH=/tmp/gradle.zip + +echo "Downloading gradle $MAIN_VERSION" +wget --output-document=$DOWNLOAD_PATH $GRADLE_URL +unzip -d /tmp $DOWNLOAD_PATH +mv /tmp/gradle-${MAIN_VERSION} $GRADLE_HOME +ln -s ${GRADLE_HOME}/bin/gradle /usr/local/bin/gradle +rm -rf $DOWNLOAD_PATH + +# Use the main version to download the others +# This is done by creating a fake project for each version, +# and setting up the gradle wrapper. This causes gradle to +# download the required Gradle version to GRADLE_HOME or GRADLE_USER_HOME, +# where it can be reused later. +MAIN_PROJECT_DIR="/tmp/gradle-wrapper-setup" +while (( "$#" )); do + OTHER_VERSION=$1 + shift + + echo "Downloading gradle $OTHER_VERSION" + PROJECT_DIR="$MAIN_PROJECT_DIR/gradle-$OTHER_VERSION" + mkdir -p "$PROJECT_DIR" + cd "$PROJECT_DIR" + touch "./settings.gradle.kts" + gradle wrapper --gradle-version "$OTHER_VERSION" + ./gradlew build + cd - +done diff --git a/sync/resolve-deps.sh b/sync/resolve-deps.sh index 3de561e..d3f207d 100755 --- a/sync/resolve-deps.sh +++ b/sync/resolve-deps.sh @@ -35,12 +35,6 @@ fi export PROJECTS_DIR=/gradle-projects mkdir -p "${PROJECTS_DIR}" -export GRADLE_DOWNLOAD_DIR=/gradle-download -mkdir -p "${GRADLE_DOWNLOAD_DIR}" - -export GRADLE_VERSIONS_DIR=/gradle-versions -mkdir -p "${GRADLE_VERSIONS_DIR}" - echo "Resolving packages and generating gradle config" $CUSTOMPYTHON --version if ! $CUSTOMPYTHON src/main.py -vv --repo="http://repo:80/releases" --output-dir "$PROJECTS_DIR" /package-list.yaml; then