diff --git a/tooling/reproducible/repro_common.sh b/tooling/reproducible/repro_common.sh index 15763c2c2..8c14d8a92 100755 --- a/tooling/reproducible/repro_common.sh +++ b/tooling/reproducible/repro_common.sh @@ -154,6 +154,7 @@ function removeSystemModulesHashBuilderParams() { # reprohex - A hex UUID to identify the binary version, again generated from binary content function removeWindowsNonComparableData() { local JDK_DIR="$1" + local work_JAVA="$2" echo "Removing EXE/DLL timestamps, CRC and debug repro hex from ${JDK_DIR}" # We need to do this for all executables if patching VS_VERSION_INFO @@ -183,7 +184,7 @@ function removeWindowsNonComparableData() { rm -f "$dmpfile" # Neutralize reprohex string if [ -n "$reprohex" ]; then - if ! "${JDK_DIR}"/bin/java "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${reprohex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA"; then + if ! $work_JAVA "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${reprohex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA"; then echo " FAILED ==> java $TEMURIN_TOOLS_BINREPL --inFile \"$f\" --outFile \"$f\" --hex \"${reprohex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA\"" exit 1 fi @@ -193,12 +194,12 @@ function removeWindowsNonComparableData() { hexstr="00000000" timestamphex=${hexstr:0:-${#timestamp}}$timestamp timestamphexLE="${timestamphex:6:2}:${timestamphex:4:2}:${timestamphex:2:2}:${timestamphex:0:2}" - if ! "${JDK_DIR}"/bin/java "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${timestamphexLE}-AA:AA:AA:AA"; then + if ! $work_JAVA "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${timestamphexLE}-AA:AA:AA:AA"; then echo " FAILED ==> java $TEMURIN_TOOLS_BINREPL --inFile \"$f\" --outFile \"$f\" --hex \"${timestamphexLE}-AA:AA:AA:AA\"" exit 1 fi if [ -n "$reprohexhalf" ]; then - if ! "${JDK_DIR}"/bin/java "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${reprohexhalf}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA"; then + if ! $work_JAVA "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${reprohexhalf}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA"; then echo " FAILED ==> java $TEMURIN_TOOLS_BINREPL --inFile \"$f\" --outFile \"$f\" --hex \"${reprohexhalf}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA\"" exit 1 fi @@ -209,7 +210,7 @@ function removeWindowsNonComparableData() { hexstr="00000000" checksumhex=${hexstr:0:-${#checksum}}$checksum checksumhexLE="${checksumhex:6:2}:${checksumhex:4:2}:${checksumhex:2:2}:${checksumhex:0:2}" - if ! "${JDK_DIR}"/bin/java "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${checksumhexLE}-AA:AA:AA:AA" --firstOnly --32bitBoundaryOnly; then + if ! $work_JAVA "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${checksumhexLE}-AA:AA:AA:AA" --firstOnly --32bitBoundaryOnly; then echo " FAILED ==> java $TEMURIN_TOOLS_BINREPL --inFile \"$f\" --outFile \"$f\" --hex \"${checksumhexLE}-AA:AA:AA:AA\" --firstOnly --32bitBoundaryOnly" exit 1 fi @@ -225,6 +226,7 @@ function removeWindowsNonComparableData() { # See https://github.com/adoptium/temurin-build/issues/2899#issuecomment-1153757419 function removeMacOSNonComparableData() { local JDK_DIR="$1" + local work_JAVA="$2" echo "Removing MacOS dylib non-comparable UUID from ${JDK_DIR}" MAC_JDK_ROOT="${JDK_DIR}/../../Contents" FILES=$(find "${MAC_JDK_ROOT}" \( -type f -and -path '*.dylib' -or -path '*/bin/*' -or -path '*/lib/jspawnhelper' -not -path '*/modules_extracted/*' -or -path '*/jpackageapplauncher*' \)) @@ -237,8 +239,8 @@ function removeMacOSNonComparableData() { else # Format uuid for BINREPL uuidhex="${uuid:0:2}:${uuid:2:2}:${uuid:4:2}:${uuid:6:2}:${uuid:8:2}:${uuid:10:2}:${uuid:12:2}:${uuid:14:2}:${uuid:16:2}:${uuid:18:2}:${uuid:20:2}:${uuid:22:2}:${uuid:24:2}:${uuid:26:2}:${uuid:28:2}:${uuid:30:2}" - if ! java "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${uuidhex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA" --firstOnly; then - echo " FAILED ==> ${JDK_DIR}/bin/java \"$TEMURIN_TOOLS_BINREPL\" --inFile \"$f\" --outFile \"$f\" --hex \"${uuidhex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA\" --firstOnly" + if ! $work_JAVA "$TEMURIN_TOOLS_BINREPL" --inFile "$f" --outFile "$f" --hex "${uuidhex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA" --firstOnly; then + echo " FAILED ==> $work_JAVA \"$TEMURIN_TOOLS_BINREPL\" --inFile \"$f\" --outFile \"$f\" --hex \"${uuidhex}-AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA\" --firstOnly" exit 1 fi fi diff --git a/tooling/reproducible/repro_process.sh b/tooling/reproducible/repro_process.sh index 79667d8f8..3c67d9e44 100755 --- a/tooling/reproducible/repro_process.sh +++ b/tooling/reproducible/repro_process.sh @@ -18,6 +18,11 @@ source $(dirname "$0")/repro_common.sh JDK_DIR="$1" OS="$2" +mkdir "${JDK_DIR}_BK" +cp -R "${JDK_DIR}"/* "${JDK_DIR}"_BK +BK_JDK_DIR=$(realpath ${JDK_DIR}_BK/) +WORK_JAVA="${BK_JDK_DIR}/bin/java" + # This script unpacks the JDK_DIR and removes windows signing Signatures in a neutral way # ensuring identical output once Signature is removed. @@ -37,11 +42,11 @@ if [[ "$OS" =~ CYGWIN* ]] || [[ "$OS" =~ Darwin* ]]; then fi if [[ "$OS" =~ CYGWIN* ]]; then - removeWindowsNonComparableData "$JDK_DIR" + removeWindowsNonComparableData "$JDK_DIR" "$WORK_JAVA" fi if [[ "$OS" =~ Darwin* ]]; then - removeMacOSNonComparableData "$JDK_DIR" + removeMacOSNonComparableData "$JDK_DIR" "$$WORK_JAVA" fi patchManifests "${JDK_DIR}"