From 41325bca41138cc533897a1d18bbfd4ea2345e88 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Mon, 20 Oct 2025 15:57:49 +0100 Subject: [PATCH 1/5] prepare_release.sh: Added psed helper function Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 3b63ed9e6c..9d3784750e 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -16,6 +16,18 @@ EOF set -eu +# Portable inline sed. Helper function that will automatically pre-pend +# an empty string as the backup suffix (required by macOS sed). +psed() { + # macOS sed does not offer a version + if sed --version >/dev/null 2>&1; then + sed -i "$@" + # macOS/BSD sed + else + sed -i '' "$@" + fi +} + if [ $# -ne 0 ] && [ "$1" = "--help" ]; then print_usage exit @@ -32,25 +44,21 @@ while getopts u OPTLET; do esac done - - #### .gitignore processing #### GITIGNORES=$(find . -name ".gitignore") for GITIGNORE in $GITIGNORES; do if [ -n "$unrelease" ]; then - sed -i '/###START_COMMENTED_GENERATED_FILES###/,/###END_COMMENTED_GENERATED_FILES###/s/^#//' $GITIGNORE - sed -i 's/###START_COMMENTED_GENERATED_FILES###/###START_GENERATED_FILES###/' $GITIGNORE - sed -i 's/###END_COMMENTED_GENERATED_FILES###/###END_GENERATED_FILES###/' $GITIGNORE + psed '/###START_COMMENTED_GENERATED_FILES###/,/###END_COMMENTED_GENERATED_FILES###/s/^#//' $GITIGNORE + psed 's/###START_COMMENTED_GENERATED_FILES###/###START_GENERATED_FILES###/' $GITIGNORE + psed 's/###END_COMMENTED_GENERATED_FILES###/###END_GENERATED_FILES###/' $GITIGNORE else - sed -i '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/#/' $GITIGNORE - sed -i 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' $GITIGNORE - sed -i 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' $GITIGNORE + psed '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/#/' $GITIGNORE + psed 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' $GITIGNORE + psed 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' $GITIGNORE fi done - - #### Build scripts #### # GEN_FILES defaults on (non-empty) in development, off (empty) in releases @@ -59,7 +67,7 @@ if [ -n "$unrelease" ]; then else r='' fi -sed -i 's/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1'"$r/" Makefile */Makefile +psed "s/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1$r/" Makefile */Makefile # GEN_FILES defaults on in development, off in releases if [ -n "$unrelease" ]; then @@ -67,4 +75,4 @@ if [ -n "$unrelease" ]; then else r='OFF' fi -sed -i '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1'"$r/" CMakeLists.txt +psed "/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *\"[^\"]*\" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1$r/" CMakeLists.txt From 9e7f0335466fe0cac9311f91632209e1b0d2f586 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Thu, 30 Oct 2025 09:35:17 +0000 Subject: [PATCH 2/5] prepare_release.sh: Removed -r/-u modes Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 44 ++------------------------------------ 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 9d3784750e..817ea7ca0c 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -1,16 +1,4 @@ #!/bin/bash - -print_usage() -{ - cat <&2 "$0: unknown option: -$OPTLET" - echo 1>&2 "Try '$0 --help' for more information." - exit 3;; - esac -done - #### .gitignore processing #### GITIGNORES=$(find . -name ".gitignore") for GITIGNORE in $GITIGNORES; do - if [ -n "$unrelease" ]; then - psed '/###START_COMMENTED_GENERATED_FILES###/,/###END_COMMENTED_GENERATED_FILES###/s/^#//' $GITIGNORE - psed 's/###START_COMMENTED_GENERATED_FILES###/###START_GENERATED_FILES###/' $GITIGNORE - psed 's/###END_COMMENTED_GENERATED_FILES###/###END_GENERATED_FILES###/' $GITIGNORE - else psed '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/#/' $GITIGNORE psed 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' $GITIGNORE psed 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' $GITIGNORE - fi done #### Build scripts #### # GEN_FILES defaults on (non-empty) in development, off (empty) in releases -if [ -n "$unrelease" ]; then - r=' yes' -else r='' -fi + psed "s/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1$r/" Makefile */Makefile # GEN_FILES defaults on in development, off in releases -if [ -n "$unrelease" ]; then - r='ON' -else r='OFF' -fi + psed "/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *\"[^\"]*\" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1$r/" CMakeLists.txt From fea16efc1c2554f642c4ef2b9c74c446926d9e84 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Thu, 30 Oct 2025 09:44:35 +0000 Subject: [PATCH 3/5] prepare_release.sh: Adjusted build system matching patterns Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 817ea7ca0c..7de4dfe8fb 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -17,22 +17,12 @@ psed() { } #### .gitignore processing #### - -GITIGNORES=$(find . -name ".gitignore") -for GITIGNORE in $GITIGNORES; do - psed '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/#/' $GITIGNORE - psed 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' $GITIGNORE - psed 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' $GITIGNORE +for GITIGNORE in $(git ls-files --recurse-submodules -- '*.gitignore'); do + psed '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/#/' "$GITIGNORE" + psed 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' "$GITIGNORE" + psed 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' "$GITIGNORE" done #### Build scripts #### - -# GEN_FILES defaults on (non-empty) in development, off (empty) in releases - r='' - -psed "s/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1$r/" Makefile */Makefile - -# GEN_FILES defaults on in development, off in releases - r='OFF' - -psed "/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *\"[^\"]*\" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1$r/" CMakeLists.txt +psed '/[Oo][Ff][Ff] in development/! s/^\( *GEN_FILES[ ?:]*= *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1OFF/' Makefile library/Makefile +psed '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1OFF/' CMakeLists.txt tf-psa-crypto/CMakeLists.txt From ae80683fe2907fa3402b752cb2aa3c355e6b496a Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Thu, 30 Oct 2025 09:45:27 +0000 Subject: [PATCH 4/5] Added documentation Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 7de4dfe8fb..8c135ea9c7 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -2,6 +2,16 @@ # Copyright The Mbed TLS Contributors # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# prepare_release.sh — Prepare the source tree for a release. +# +# This script switches the repo into “release” mode: +# - Updates all tracked `.gitignore` files to stop +# ignoring the automatically-generated files. +# - Sets the CMake option `GEN_FILES` to OFF to explicitely disable +# recreating the automatically-generated files. +#. - The script will recursively update the tf-psa-crypto files too. + + set -eu # Portable inline sed. Helper function that will automatically pre-pend From 1c03c3e19776b8ecaeb18648da19c76b2ee67cbf Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Mon, 3 Nov 2025 15:52:29 +0000 Subject: [PATCH 5/5] prepare_release.sh: Updated regex syntax Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 8c135ea9c7..229413e872 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -34,5 +34,6 @@ for GITIGNORE in $(git ls-files --recurse-submodules -- '*.gitignore'); do done #### Build scripts #### -psed '/[Oo][Ff][Ff] in development/! s/^\( *GEN_FILES[ ?:]*= *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1OFF/' Makefile library/Makefile -psed '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1OFF/' CMakeLists.txt tf-psa-crypto/CMakeLists.txt +psed 's/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1/' Makefile */Makefile +psed '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1OFF/' CMakeLists.txt +