From 12d2ae00ea92a44acb8a563ffa89fa6840388239 Mon Sep 17 00:00:00 2001 From: Yo Chiang Date: Wed, 26 Feb 2020 15:33:27 +0800 Subject: [PATCH 1/4] Add script for gsi_pubsign build chaining target Bug: 149803895 Test: ./gsi-pubsign-release.sh aosp_arm64 aosp_arm64_pubsign \ aosp_arm64-artifact_path aosp_arm64_pubsign-artifact_path Merged-In: I05e82f0605eec33c0da9b5a5d5cbf3506af3706c Change-Id: I05e82f0605eec33c0da9b5a5d5cbf3506af3706c (cherry picked from commit 45c81a65e7511299fae1d3a8c53852b7d769f80c) --- gsi/gsi-pubsign-release.sh | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 gsi/gsi-pubsign-release.sh diff --git a/gsi/gsi-pubsign-release.sh b/gsi/gsi-pubsign-release.sh new file mode 100755 index 000000000..72ef05042 --- /dev/null +++ b/gsi/gsi-pubsign-release.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -e + +function usage { + cat <&2 '$DIST_DIR is not specified' + exit 1 +fi + +# Create output directory if not already present +if [[ ! -d "${DIST_DIR}" ]]; then + mkdir -p "${DIST_DIR}" +fi + +# Don't copy logs/ and files whose name starts with $SRC_PRODUCT +rsync --verbose --archive --copy-links --exclude='logs' \ + --exclude="${SRC_PRODUCT}-*" "${SRC_DIR}" "${DIST_DIR}" + +# Rename ${SRC_PRODUCT}-xxx.yyy to ${TARGET_PRODUCT}-xxx.yyy +for src_path in $(find "${SRC_DIR}" -type f -name "${SRC_PRODUCT}-*") ; do + src_file="$(basename ${src_path})" + target_file="${src_file/${SRC_PRODUCT}/${TARGET_PRODUCT}}" + cp -v "${src_path}" "${DIST_DIR}/${target_file}" +done From 7d0189a6ecf999b789150bf86a993cc562a75086 Mon Sep 17 00:00:00 2001 From: Yo Chiang Date: Wed, 26 Feb 2020 20:50:46 +0800 Subject: [PATCH 2/4] Fix gsi-pubsign-release.sh rsync command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add trailing / to rsync source directory, this prevents rsync from creating an additional level of directory under the destination. For example, if `tree src` outputs: src └── file then: $ rsync src dest # creates dest/src/file $ rsync src/ dest # creates dest/file Bug: 149803895 Test: ./gsi-pubsign-release.sh aosp_arm64 aosp_arm64_pubsign \ aosp_arm64-artifact_path aosp_arm64_pubsign-artifact_path Merged-In: I90a80a7afdf6f71db592599c6a645554cf830309 Change-Id: I90a80a7afdf6f71db592599c6a645554cf830309 (cherry picked from commit 8b15a8ba3cbca336a41ec2418553a9e1a5f4b61f) --- gsi/gsi-pubsign-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gsi/gsi-pubsign-release.sh b/gsi/gsi-pubsign-release.sh index 72ef05042..653f0f6c4 100755 --- a/gsi/gsi-pubsign-release.sh +++ b/gsi/gsi-pubsign-release.sh @@ -53,7 +53,7 @@ fi # Don't copy logs/ and files whose name starts with $SRC_PRODUCT rsync --verbose --archive --copy-links --exclude='logs' \ - --exclude="${SRC_PRODUCT}-*" "${SRC_DIR}" "${DIST_DIR}" + --exclude="${SRC_PRODUCT}-*" "${SRC_DIR}/" "${DIST_DIR}" # Rename ${SRC_PRODUCT}-xxx.yyy to ${TARGET_PRODUCT}-xxx.yyy for src_path in $(find "${SRC_DIR}" -type f -name "${SRC_PRODUCT}-*") ; do From f2c04ff675719b863b443f0a2d5b9d320f767a01 Mon Sep 17 00:00:00 2001 From: Yo Chiang Date: Thu, 27 Feb 2020 16:38:39 +0800 Subject: [PATCH 3/4] gsi-pubsign-release.sh print verbose log Bug: 149803895 Test: ./gsi-pubsign-release.sh aosp_arm64 aosp_arm64_pubsign \ aosp_arm64-artifact_path aosp_arm64_pubsign-artifact_path Merged-In: I71ca710e3d2d7305112e118e8d19c3b07d6f028c Change-Id: I71ca710e3d2d7305112e118e8d19c3b07d6f028c (cherry picked from commit fe9bb151c0144f2c988032814a913912fdc3d551) --- gsi/gsi-pubsign-release.sh | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/gsi/gsi-pubsign-release.sh b/gsi/gsi-pubsign-release.sh index 653f0f6c4..9cd4232a7 100755 --- a/gsi/gsi-pubsign-release.sh +++ b/gsi/gsi-pubsign-release.sh @@ -1,6 +1,6 @@ #!/bin/bash -set -e +set -ex function usage { cat <&2 'Cannot create $DIST_DIR or $DIST_DIR is non-existence' + exit 1 fi +# Show the artifacts to be copied in the log +echo "Artifacts to copy:" +find "${SRC_DIR}" || true +echo + # Don't copy logs/ and files whose name starts with $SRC_PRODUCT rsync --verbose --archive --copy-links --exclude='logs' \ - --exclude="${SRC_PRODUCT}-*" "${SRC_DIR}/" "${DIST_DIR}" + --exclude='*.zip' "${SRC_DIR}/" "${DIST_DIR}" -# Rename ${SRC_PRODUCT}-xxx.yyy to ${TARGET_PRODUCT}-xxx.yyy -for src_path in $(find "${SRC_DIR}" -type f -name "${SRC_PRODUCT}-*") ; do - src_file="$(basename ${src_path})" - target_file="${src_file/${SRC_PRODUCT}/${TARGET_PRODUCT}}" - cp -v "${src_path}" "${DIST_DIR}/${target_file}" +# Rename ${SRC_PRODUCT}-xxx.zip to ${TARGET_PRODUCT}-xxx.zip +ZIP_PATHNAMES="$(find "${SRC_DIR}" -type f -name '*.zip')" + +echo "ZIP files to be copied and renamed:" +echo "${ZIP_PATHNAMES}" +echo + +for SRC_PATHNAME in ${ZIP_PATHNAMES} ; do + SRC_FILENAME="$(basename ${SRC_PATHNAME})" + TARGET_FILENAME="${SRC_FILENAME/${SRC_PRODUCT}/${TARGET_PRODUCT}}" + cp -v "${SRC_PATHNAME}" "${DIST_DIR}/${TARGET_FILENAME}" done From 5b8373d7b9d4e79ea5f800ef8fa7286d13081f52 Mon Sep 17 00:00:00 2001 From: Yo Chiang Date: Fri, 28 Feb 2020 15:43:53 +0800 Subject: [PATCH 4/4] gsi-pubsign-release.sh follows symbolic link Use `find -L` and `cp --dereference` to follow symlinks. Bug: 149803895 Test: manual Merged-In: Ide2ae854dd61e595ca2676634f660241343e6dba Change-Id: Ide2ae854dd61e595ca2676634f660241343e6dba (cherry picked from commit abdcbb3f8381b5bc5c198ea23778ce4a409932b8) --- gsi/gsi-pubsign-release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gsi/gsi-pubsign-release.sh b/gsi/gsi-pubsign-release.sh index 9cd4232a7..8d4874ad6 100755 --- a/gsi/gsi-pubsign-release.sh +++ b/gsi/gsi-pubsign-release.sh @@ -64,7 +64,7 @@ rsync --verbose --archive --copy-links --exclude='logs' \ --exclude='*.zip' "${SRC_DIR}/" "${DIST_DIR}" # Rename ${SRC_PRODUCT}-xxx.zip to ${TARGET_PRODUCT}-xxx.zip -ZIP_PATHNAMES="$(find "${SRC_DIR}" -type f -name '*.zip')" +ZIP_PATHNAMES="$(find -L "${SRC_DIR}" -type f -name '*.zip')" echo "ZIP files to be copied and renamed:" echo "${ZIP_PATHNAMES}" @@ -73,5 +73,5 @@ echo for SRC_PATHNAME in ${ZIP_PATHNAMES} ; do SRC_FILENAME="$(basename ${SRC_PATHNAME})" TARGET_FILENAME="${SRC_FILENAME/${SRC_PRODUCT}/${TARGET_PRODUCT}}" - cp -v "${SRC_PATHNAME}" "${DIST_DIR}/${TARGET_FILENAME}" + cp --verbose --archive --dereference "${SRC_PATHNAME}" "${DIST_DIR}/${TARGET_FILENAME}" done