From d0881eda4eed7742546af2324aea0520fc230b41 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Mon, 20 Oct 2025 15:57:49 +0100 Subject: [PATCH 1/9] prepare_release.sh: Added psed helper function Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 3b63ed9e6..7488f10dd 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -16,6 +16,20 @@ 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 + local file="${@: -1}" + local args=("${@:1:$#-1}") + sed -i '' "${args[@]}" "$file" + fi +} + if [ $# -ne 0 ] && [ "$1" = "--help" ]; then print_usage exit @@ -32,25 +46,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 +69,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 +77,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 1f95b78310ad735988668ea7d1c97ab28f5c6f28 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Mon, 20 Oct 2025 16:13:35 +0100 Subject: [PATCH 2/9] prepare_release.sh: Limited .gitignore to current project Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 7488f10dd..9a61568de 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -47,17 +47,15 @@ while getopts u OPTLET; do done #### .gitignore processing #### - -GITIGNORES=$(find . -name ".gitignore") -for GITIGNORE in $GITIGNORES; do +for GITIGNORE in $(git ls-files -- '*.gitignore'); 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 + 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 + 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 From d995a21b6a0637975a24bec2bf29b293ce5ff072 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Mon, 20 Oct 2025 17:11:28 +0100 Subject: [PATCH 3/9] prepare_release.sh: Adjusted logic - Introduced a new -r to explicitely request project modification for release - Changed the default behaviour to print_help when invoked without arguments Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 9a61568de..40a5f721b 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -7,6 +7,7 @@ Usage: $0 [OPTION]... Prepare the source tree for a release. Options: + -r Prepare for release -u Prepare for development (undo the release preparation) EOF } @@ -30,15 +31,17 @@ psed() { fi } -if [ $# -ne 0 ] && [ "$1" = "--help" ]; then +if [ $# -eq 0 ] || [ "$1" = "--help" ]; then print_usage exit fi -unrelease= # if non-empty, we're in undo-release mode -while getopts u OPTLET; do +unrelease=0 # if 1 then we are in development mode, + # if 0 then we are in release mode +while getopts ru OPTLET; do case $OPTLET in u) unrelease=1;; + r) unrelease=0;; \?) echo 1>&2 "$0: unknown option: -$OPTLET" echo 1>&2 "Try '$0 --help' for more information." @@ -48,7 +51,7 @@ done #### .gitignore processing #### for GITIGNORE in $(git ls-files -- '*.gitignore'); do - if [ -n "$unrelease" ]; then + if [ "$unrelease" -eq 1 ]; 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" @@ -62,7 +65,7 @@ done #### Build scripts #### # GEN_FILES defaults on (non-empty) in development, off (empty) in releases -if [ -n "$unrelease" ]; then +if [ "$unrelease" -eq 1 ]; then r=' yes' else r='' @@ -70,7 +73,7 @@ fi psed "s/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1$r/" Makefile */Makefile # GEN_FILES defaults on in development, off in releases -if [ -n "$unrelease" ]; then +if [ "$unrelease" -eq 1 ]; then r='ON' else r='OFF' From 0b7966649fd8a03dff67880a06dcdc2200c672fa Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Tue, 21 Oct 2025 10:55:27 +0100 Subject: [PATCH 4/9] prepare_release.sh:Removed Makefiles modification Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 40a5f721b..800dfe019 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -63,15 +63,6 @@ for GITIGNORE in $(git ls-files -- '*.gitignore'); do done #### Build scripts #### - -# GEN_FILES defaults on (non-empty) in development, off (empty) in releases -if [ "$unrelease" -eq 1 ]; then - r=' yes' -else - r='' -fi -psed "s/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1$r/" Makefile */Makefile - # GEN_FILES defaults on in development, off in releases if [ "$unrelease" -eq 1 ]; then r='ON' From 61fdef52a35a08fd10a774c9add07a1acb7dea2b Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Wed, 22 Oct 2025 11:17:32 +0100 Subject: [PATCH 5/9] prepare_release.sh: Adjusted psed logic. Fixed double quoting in sed. Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 800dfe019..cc5ceb402 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -25,9 +25,7 @@ psed() { sed -i "$@" # macOS/BSD sed else - local file="${@: -1}" - local args=("${@:1:$#-1}") - sed -i '' "${args[@]}" "$file" + sed -i '' "$@" fi } @@ -69,4 +67,4 @@ if [ "$unrelease" -eq 1 ]; then 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 +psed '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1'"$r/" CMakeLists.txt \ No newline at end of file From c4d4f6b4a12fe758c777f6d3443dbc118a7d3f02 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Wed, 22 Oct 2025 11:48:09 +0100 Subject: [PATCH 6/9] prepare_release.sh: Removed -r/-u modes Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 47 ++------------------------------------ 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index cc5ceb402..ac7c4b717 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -1,17 +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 #### for GITIGNORE in $(git ls-files -- '*.gitignore'); do - if [ "$unrelease" -eq 1 ]; 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 in development, off in releases -if [ "$unrelease" -eq 1 ]; 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 \ No newline at end of file +#### Build system #### +psed '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1'"OFF/" CMakeLists.txt From 958d9d97a47ec5ff4f45ce9f8f8d22b7a10aa978 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Wed, 29 Oct 2025 11:20:25 +0000 Subject: [PATCH 7/9] prepare_release.sh: Added documentation Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index ac7c4b717..6685899d5 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -2,6 +2,14 @@ # 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. + set -eu # Portable inline sed. Helper function that will automatically pre-pend From bdb1dcbdb6153d6c2e4f5d90d4bc384425d5413e Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Wed, 29 Oct 2025 11:21:23 +0000 Subject: [PATCH 8/9] prepare_release.sh: simplified regex Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 6685899d5..16b035198 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -32,4 +32,4 @@ for GITIGNORE in $(git ls-files -- '*.gitignore'); do done #### Build system #### -psed '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1'"OFF/" CMakeLists.txt +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 a2cba40df64847f68fe9276734dba3220df7d7bc Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Thu, 30 Oct 2025 10:00:07 +0000 Subject: [PATCH 9/9] prepare_release.sh: modify submodule files recursively Signed-off-by: Minos Galanakis --- scripts/prepare_release.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_release.sh b/scripts/prepare_release.sh index 16b035198..657d1380d 100755 --- a/scripts/prepare_release.sh +++ b/scripts/prepare_release.sh @@ -9,6 +9,8 @@ # 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 @@ -25,7 +27,7 @@ psed() { } #### .gitignore processing #### -for GITIGNORE in $(git ls-files -- '*.gitignore'); do +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"