From ac0d6f6d42f636783409b6a68af94585744b46a4 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Wed, 1 Dec 2021 12:43:11 +0100 Subject: [PATCH] Reuse version normalizer (#44) * Reuse get_openssl_version() from external script * Improve variables usage in workflow * Fix release notes generation * Rename main job --- .github/workflows/release.yml | 56 ++++++++++++++++------------------ create-openssl-framework.sh | 13 +++----- scripts/get-openssl-version.sh | 12 ++++++++ 3 files changed, 44 insertions(+), 37 deletions(-) create mode 100755 scripts/get-openssl-version.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d18ffab..1645f60 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: - '.version' jobs: - build_openssl: + publish_binary_release: runs-on: macos-11 env: OPENSSL_TARGETS: "ios-sim-cross-x86_64 ios-sim-cross-arm64 ios64-cross-arm64 ios64-cross-arm64e macos64-x86_64 macos64-arm64 mac-catalyst-x86_64 mac-catalyst-arm64" @@ -18,18 +18,13 @@ jobs: id: lib timeout-minutes: 60 run: | - TAG_NAME=`cat .version` + source scripts/get-openssl-version.sh - SCRIPT_NUM="${TAG_NAME#1.1.}" # 11200 - PATCH_COMPOUND=$((SCRIPT_NUM / 100)) # 112 - PATCH=$((PATCH_COMPOUND / 100)) # 1 - SUBPATCH_NUM=$((PATCH_COMPOUND - PATCH * 100)) # 12 - SUBPATCH_ASCII=$((SUBPATCH_NUM + 96)) # 108 - SUBPATCH_HEX=`printf '%x' $SUBPATCH_ASCII` # 6c - SUBPATCH=`printf "\\x$SUBPATCH_HEX"` # 'l' + COMPOUND_VERSION=`cat .version` + OPENSSL_VERSION=${COMPOUND_VERSION%-*} + SCRIPT_VERSION=${COMPOUND_VERSION#*-} + TAG_NAME=$(get_openssl_version $OPENSSL_VERSION $SCRIPT_VERSION) - OPENSSL_VERSION="1.1.$PATCH$SUBPATCH" - SCRIPT_VERSION=$((SCRIPT_NUM - PATCH_COMPOUND * 100)) echo "Compiling OpenSSL $OPENSSL_VERSION" ./build-libssl.sh --version="$OPENSSL_VERSION" --targets="$OPENSSL_TARGETS" --disable-bitcode @@ -58,41 +53,44 @@ jobs: - name: Update Package.swift id: package env: - PACKAGE_FILE: "Package.swift" + TAG_NAME: ${{ steps.lib.outputs.tag }} + OPENSSL_VERSION: ${{ steps.lib.outputs.openssl_version }} + SCRIPT_VERSION: ${{ steps.lib.outputs.script_version }} + PACKAGE_METADATA: "Package.swift" + PACKAGE_ARTIFACT: ${{ steps.framework.outputs.artifact }} + PACKAGE_CHECKSUM: ${{ steps.framework.outputs.artifact }}.checksum run: | - TAG="${{ steps.lib.outputs.tag }}" - CHECKSUM=`swift package compute-checksum ${{ steps.framework.outputs.artifact }}` - echo $CHECKSUM >${{ steps.framework.outputs.artifact }}.checksum + CHECKSUM=`swift package compute-checksum "$PACKAGE_ARTIFACT"` + echo $CHECKSUM >$PACKAGE_CHECKSUM - sed -E "s@/[0-9\.]+/(openssl.xcframework.zip)@/$TAG/\\1@" $PACKAGE_FILE | - sed -E "s/checksum: \"[0-9a-f]+\"/checksum: \"$CHECKSUM\"/" >$PACKAGE_FILE.tmp - mv $PACKAGE_FILE.tmp $PACKAGE_FILE + sed -E "s@/[0-9\.]+/(openssl.xcframework.zip)@/$TAG_NAME/\\1@" $PACKAGE_METADATA | + sed -E "s/checksum: \"[0-9a-f]+\"/checksum: \"$CHECKSUM\"/" >$PACKAGE_METADATA.tmp + mv $PACKAGE_METADATA.tmp $PACKAGE_METADATA - OPENSSL_VERSION=${{ steps.lib.outputs.openssl_version }} - SCRIPT_VERSION=${{ steps.lib.outputs.script_version }} RELEASE_NAME="OpenSSL $OPENSSL_VERSION" if [ $SCRIPT_VERSION -gt 0 ]; then RELEASE_NAME="$RELEASE_NAME ($SCRIPT_VERSION)" fi - git add $PACKAGE_FILE + git add $PACKAGE_METADATA git commit -m "$RELEASE_NAME" - git tag ${{ steps.lib.outputs.tag }} -m "$RELEASE_NAME" + git tag "$TAG_NAME" -m "$RELEASE_NAME" git push && git push --tags - BODY_PATH="release-notes.txt" - echo "Compiled for iOS and macOS (plus Catalyst)." >>$BODY_PATH - echo >>$BODY_PATH - echo "SwiftPM checksum: $CHECKSUM" >$BODY_PATH + RELEASE_NOTES="release-notes.txt" + echo "Compiled for iOS and macOS (plus Catalyst)." >$RELEASE_NOTES + echo >>$RELEASE_NOTES + echo "SwiftPM checksum: $CHECKSUM" >>$RELEASE_NOTES echo "::set-output name=release_name::$RELEASE_NAME" - echo "::set-output name=checksum::$CHECKSUM" + echo "::set-output name=release_notes::$RELEASE_NOTES" + echo "::set-output name=checksum::$PACKAGE_CHECKSUM" - name: Publish release uses: softprops/action-gh-release@v1 with: name: ${{ steps.package.outputs.release_name }} + body_path: ${{ steps.package.outputs.release_notes }} tag_name: ${{ steps.lib.outputs.tag }} - body_path: release-notes.txt files: | ${{ steps.framework.outputs.artifact }} - ${{ steps.framework.outputs.artifact }}.checksum + ${{ steps.package.outputs.checksum }} diff --git a/create-openssl-framework.sh b/create-openssl-framework.sh index 1db57df..8cd54f4 100755 --- a/create-openssl-framework.sh +++ b/create-openssl-framework.sh @@ -1,4 +1,5 @@ #!/bin/bash +source scripts/get-openssl-version.sh set -euo pipefail @@ -111,14 +112,10 @@ function get_min_sdk() { # 'g' = 103 -> 6 + 1 = 07 (zero-padded) # 1.1.107 # -function get_openssl_version() { +function get_openssl_version_from_file() { local opensslv=$1 local std_version=$(awk '/define OPENSSL_VERSION_TEXT/ && !/-fips/ {print $5}' "$opensslv") - local generic_version=${std_version%?} - local subpatch=${std_version: -1} - local subpatch_number=$(($(printf '%d' \'$subpatch) - 97 + 1)) - local normalized_version="${generic_version}$(printf '%02d' $subpatch_number)" - echo $normalized_version + echo $(get_openssl_version $std_version) } if [ $FWTYPE == "dynamic" ]; then @@ -210,7 +207,7 @@ if [ $FWTYPE == "dynamic" ]; then cp -r include/$FWNAME/* $FWDIR/Headers/ cp -L assets/$SYS/Info.plist $FWDIR/Info.plist MIN_SDK_VERSION=$(get_min_sdk "$FWDIR/$FWNAME") - OPENSSL_VERSION=$(get_openssl_version "$FWDIR/Headers/opensslv.h") + OPENSSL_VERSION=$(get_openssl_version_from_file "$FWDIR/Headers/opensslv.h") sed -e "s/\\\$(MIN_SDK_VERSION)/$MIN_SDK_VERSION/g" \ -e "s/\\\$(OPENSSL_VERSION)/$OPENSSL_VERSION/g" \ -i '' "$FWDIR/Info.plist" @@ -240,7 +237,7 @@ else cp -r include/$FWNAME/* $FWDIR/Headers/ cp -L assets/$SYS/Info.plist $FWDIR/Info.plist MIN_SDK_VERSION=$(get_min_sdk "$FWDIR/$FWNAME") - OPENSSL_VERSION=$(get_openssl_version "$FWDIR/Headers/opensslv.h") + OPENSSL_VERSION=$(get_openssl_version_from_file "$FWDIR/Headers/opensslv.h") sed -e "s/\\\$(MIN_SDK_VERSION)/$MIN_SDK_VERSION/g" \ -e "s/\\\$(OPENSSL_VERSION)/$OPENSSL_VERSION/g" \ -i '' "$FWDIR/Info.plist" diff --git a/scripts/get-openssl-version.sh b/scripts/get-openssl-version.sh new file mode 100755 index 0000000..ab940de --- /dev/null +++ b/scripts/get-openssl-version.sh @@ -0,0 +1,12 @@ +#!/bin/bash +function get_openssl_version() { + local std_version=$1 + local script_version=${2:-} + local generic_version=${std_version%?} + local subpatch=${std_version: -1} + local subpatch_number=$(($(printf '%d' \'$subpatch) - 97 + 1)) + subpatch_number="$(printf '%02d' $subpatch_number)" + script_version="$(printf '%02d' $script_version)" + local normalized_version="${generic_version}${subpatch_number}${script_version}" + echo $normalized_version +}