|
| 1 | +#!/bin/bash |
| 2 | +# shellcheck disable=SC2155,SC2153,SC2038,SC1091,SC2116,SC2086 |
| 3 | +# ******************************************************************************** |
| 4 | +# Copyright (c) 2017, 2024 Contributors to the Eclipse Foundation |
| 5 | +# |
| 6 | +# See the NOTICE file(s) with this work for additional |
| 7 | +# information regarding copyright ownership. |
| 8 | +# |
| 9 | +# This program and the accompanying materials are made |
| 10 | +# available under the terms of the Apache Software License 2.0 |
| 11 | +# which is available at https://www.apache.org/licenses/LICENSE-2.0. |
| 12 | +# |
| 13 | +# SPDX-License-Identifier: Apache-2.0 |
| 14 | +# ******************************************************************************** |
| 15 | + |
| 16 | +# Note that this script expects SCM_REF and TARGET_ARCH variables to be provided |
| 17 | +# by the calling jenkins job |
| 18 | + |
| 19 | +createMetadataFile() { |
| 20 | + metadata_file="$1" |
| 21 | + arch="$2" |
| 22 | + scm_ref="$3" |
| 23 | + build_src_file="$4" |
| 24 | + version_txt_file="$5" |
| 25 | + sha256="$6" |
| 26 | + |
| 27 | + echo "Creating metadata file: $metadata_file $arch $scm_ref $build_src_file $version_txt_file $sha256" |
| 28 | + |
| 29 | + ver_txt=$(cat $version_txt_file | sed 's/$/\\n/' | tr -d '\r\n' | sed 's/"/\\"/g') |
| 30 | + ver_pattern=".*Runtime Environment.*\(build ([0-9a-z_+-\\.]+).*OpenJDK.*" |
| 31 | + if [[ "$ver_txt" =~ .*$ver_pattern.* ]]; then |
| 32 | + ver=${BASH_REMATCH[1]} |
| 33 | + else |
| 34 | + echo "ERROR: Unable to find java version output build string" |
| 35 | + exit 1 |
| 36 | + fi |
| 37 | + |
| 38 | + bin_type=$(echo $metadata_file | cut -d'-' -f2 | cut -d'_' -f1) |
| 39 | + |
| 40 | + release_pattern="1\.8\.0_([0-9]+)-b([0-9]+)" |
| 41 | + beta_pattern="1\.8\.0_([0-9]+)-([a-zA-Z]+)-([0-9]+)-b([0-9]+)" |
| 42 | + |
| 43 | + if [[ "$ver" =~ $release_pattern ]]; then |
| 44 | + update=${BASH_REMATCH[1]} |
| 45 | + build=${BASH_REMATCH[2]} |
| 46 | + pre="null" |
| 47 | + opt="null" |
| 48 | + adopt_build_num="null" |
| 49 | + ver_pre="" |
| 50 | + ver_opt="" |
| 51 | + semver_adopt_build_num="" |
| 52 | + semver_opt="" |
| 53 | + build_trim=$(echo $build | sed 's/^0*//') |
| 54 | + elif [[ "$ver" =~ $beta_pattern ]]; then |
| 55 | + update=${BASH_REMATCH[1]} |
| 56 | + pre='"'${BASH_REMATCH[2]}'"' |
| 57 | + opt='"'${BASH_REMATCH[3]}'"' |
| 58 | + build=${BASH_REMATCH[4]} |
| 59 | + adopt_build_num="0" |
| 60 | + ver_pre="-${BASH_REMATCH[2]}" |
| 61 | + ver_opt="-${BASH_REMATCH[3]}" |
| 62 | + semver_adopt_build_num=".$adopt_build_num" |
| 63 | + semver_opt=".${BASH_REMATCH[3]}" |
| 64 | + build_trim=$(echo $build | sed 's/^0*//') |
| 65 | + else |
| 66 | + echo "ERROR: Unable to determine metadata parameters" |
| 67 | + exit 1 |
| 68 | + fi |
| 69 | + |
| 70 | + echo '{' > $metadata_file |
| 71 | + echo '"vendor": "Eclipse Adoptium",' >> $metadata_file |
| 72 | + echo '"os": "solaris",' >> $metadata_file |
| 73 | + echo '"arch": "'$arch'",' >> $metadata_file |
| 74 | + echo '"variant": "temurin",' >> $metadata_file |
| 75 | + echo '"version": {' >> $metadata_file |
| 76 | + echo ' "minor": 0,' >> $metadata_file |
| 77 | + echo ' "patch": null,' >> $metadata_file |
| 78 | + echo ' "msi_product_version": "8.0.'$update'.'$build_trim'",' >> $metadata_file |
| 79 | + echo ' "security": '$update',' >> $metadata_file |
| 80 | + echo ' "pre": '$pre',' >> $metadata_file |
| 81 | + echo ' "adopt_build_number": '$adopt_build_num',' >> $metadata_file |
| 82 | + echo ' "major": 8,' >> $metadata_file |
| 83 | + echo ' "version": "1.8.0_'$update$ver_pre$ver_opt'-b'$build'",' >> $metadata_file |
| 84 | + echo ' "semver": "8.0.'$update$ver_pre'+'$build_trim$semver_adopt_build_num$semver_opt'",' >> $metadata_file |
| 85 | + echo ' "build": '$build_trim',' >> $metadata_file |
| 86 | + echo ' "opt": '$opt >> $metadata_file |
| 87 | + echo '},' >> $metadata_file |
| 88 | + echo '"scmRef": "'$scm_ref'",' >> $metadata_file |
| 89 | + cat $build_src_file | sed 's/^/"buildRef": "/' >> $metadata_file |
| 90 | + echo '",'>> $metadata_file |
| 91 | + echo '"version_data": "jdk8u",' >> $metadata_file |
| 92 | + echo '"binary_type": "'$bin_type'",' >> $metadata_file |
| 93 | + echo '"sha256": "'$sha256'",' >> $metadata_file |
| 94 | + echo '"full_version_output": "'$ver_txt'",' >> $metadata_file |
| 95 | + echo '"makejdk_any_platform_args": "",' >> $metadata_file |
| 96 | + echo '"configure_arguments": "",' >> $metadata_file |
| 97 | + echo '"make_command_args": "",' >> $metadata_file |
| 98 | + echo '"BUILD_CONFIGURATION_param": "",' >> $metadata_file |
| 99 | + echo '"openjdk_built_config": "",' >> $metadata_file |
| 100 | + echo '"openjdk_source": "",' >> $metadata_file |
| 101 | + echo '"build_env_docker_image_digest": "",' >> $metadata_file |
| 102 | + echo '"dependency_version_alsa": "",' >> $metadata_file |
| 103 | + echo '"dependency_version_freetype": "",' >> $metadata_file |
| 104 | + echo '"dependency_version_freemarker": ""' >> $metadata_file |
| 105 | + echo '}' >> $metadata_file |
| 106 | +} |
| 107 | + |
| 108 | +# Clear out proxy workspace to avoid archiving old artifacts if job is aborted |
| 109 | +echo RELEASE=$RELEASE |
| 110 | +rm -rf workspace |
| 111 | +# This comes from a variable definition on the agent |
| 112 | +SSH_OPTS="$SSH_PROXY_OPTS" |
| 113 | +# "-o LogLevel=FATAL -o StrictHostKeyChecking=no -o PubkeyAcceptedKeyTypes=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa -i /home/solaris/test-azure-solaris10-x64-1/.vagrant/machines/adoptopenjdkSol10/virtualbox/private_key" |
| 114 | +PUBLISH_NAME=$(echo $SCM_REF | sed 's/_adopt/-ea/') |
| 115 | + |
| 116 | +if [ -n "$PUBLISH_NAME" ]; then |
| 117 | + # Use correct published filename format |
| 118 | + FILENAME="OpenJDK8U-jdk_${TARGET_ARCH}_solaris_hotspot_$(echo $PUBLISH_NAME | sed 's/jdk//' | sed 's/-b/b/').tar.gz" |
| 119 | +else |
| 120 | + # Use Timestamp |
| 121 | + FILE_DATE=$(date -u +'%Y-%m-%d-%H-%M') |
| 122 | + FILENAME="OpenJDK8U-jdk_${TARGET_ARCH}_solaris_hotspot_$FILE_DATE" |
| 123 | +fi |
| 124 | +# git clone changed from github.com/sxa/openjdk-build -b solarisfixes on April 8th |
| 125 | +ssh -p ${SSH_PORT} ${SSH_TARGET} $SSH_OPTS \ |
| 126 | + JDK7_BOOT_DIR="$JDK7_BOOT_DIR" VARIANT=temurin SCM_REF="$SCM_REF" \ |
| 127 | + BUILD_ARGS="$BUILD_ARGS" CONFIGURE_ARGS="$CONFIGURE_ARGS" JDK7_BOOT_DIR=$JDK7_BOOT_DIR \ |
| 128 | + PUBLISH_NAME="$PUBLISH_NAME" RELEASE="$RELEASE" \ |
| 129 | + "rm -rf temurin-build && \ |
| 130 | + git clone https://github.com/adoptium/temurin-build && \ |
| 131 | + cd temurin-build/build-farm && \ |
| 132 | + export FILENAME="$FILENAME" && \ |
| 133 | + export BUILD_ARGS="$BUILD_ARGS" && \ |
| 134 | + export CONFIGURE_ARGS="$CONFIGURE_ARGS" && \ |
| 135 | + export JDK7_BOOT_DIR="$JDK7_BOOT_DIR" && \ |
| 136 | + export SCM_REF="$SCM_REF" && \ |
| 137 | + export VARIANT="$VARIANT" && \ |
| 138 | + export PUBLISH_NAME="$PUBLISH_NAME" && \ |
| 139 | + export WORKSPACE=$HOME/temurin-build && \ |
| 140 | + export JAVA_HOME=/usr/lib/jvm/jdk8 && \ |
| 141 | + export RELEASE="$RELEASE" && \ |
| 142 | + export PATH="/usr/local/bin:$PATH" && java -version && \ |
| 143 | + ./make-adopt-build-farm.sh jdk8u" |
| 144 | +# /usr/local/bin needed at start of path to avoid picking up /usr/sfw/bin/ant |
| 145 | +# JAVA_HOME needed to avoid ant giving org/apache/tools/ant/launch/Launcher : Unsupported major.minor version 52.0 |
| 146 | + |
| 147 | +mkdir -p workspace/target |
| 148 | +scp -prP "${SSH_PORT}" $SSH_OPTS "${SSH_TARGET}:temurin-build/build-farm/workspace/target/*" workspace/target |
| 149 | + |
| 150 | +cd workspace/target || exit 1 |
| 151 | +for FILE in OpenJDK*; do |
| 152 | + echo Creating metadata for ${FILE} |
| 153 | + sha256sum $FILE > $FILE.sha256.txt |
| 154 | + sha256=$(cat $FILE.sha256.txt | cut -d' ' -f1) |
| 155 | + if [[ "$FILE" =~ .*sbom.*\.json ]]; then |
| 156 | + metadata_file=${FILE%.*}-metadata.json |
| 157 | + else |
| 158 | + metadata_file=$FILE.json |
| 159 | + fi |
| 160 | + createMetadataFile "$metadata_file" "${TARGET_ARCH}" "$SCM_REF" metadata/buildSource.txt metadata/version.txt "$sha256" |
| 161 | +done |
| 162 | +# Simple test job uses filenames.txt to determine the correct filenames to pull down |
| 163 | +ls -1 > filenames.txt |
| 164 | +cd ../../.. |
| 165 | +pwd |
| 166 | +ls -lR |
| 167 | +# Memo to self for tests: |
| 168 | +# Set PATH=/usr/local/bin:/opt/csw/bin:$PATH so that git and Perl 5.10 with Digest::SHA.pm can be located |
0 commit comments