Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 1 | #!/bin/bash |
Gilles Peskine | dea4c7e | 2023-09-08 16:34:01 +0200 | [diff] [blame] | 2 | |
Gilles Peskine | 473f636 | 2023-09-08 16:49:14 +0200 | [diff] [blame] | 3 | print_usage() |
| 4 | { |
| 5 | cat <<EOF |
| 6 | Usage: $0 [OPTION]... |
| 7 | Prepare the source tree for a release. |
| 8 | |
| 9 | Options: |
| 10 | -u Prepare for development (undo the release preparation) |
| 11 | EOF |
| 12 | } |
Gilles Peskine | dea4c7e | 2023-09-08 16:34:01 +0200 | [diff] [blame] | 13 | |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 14 | # Copyright The Mbed TLS Contributors |
Dave Rodgman | 16799db | 2023-11-02 19:47:20 +0000 | [diff] [blame] | 15 | # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 16 | |
| 17 | set -eu |
| 18 | |
Gilles Peskine | 473f636 | 2023-09-08 16:49:14 +0200 | [diff] [blame] | 19 | if [ $# -ne 0 ] && [ "$1" = "--help" ]; then |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 20 | print_usage |
Gilles Peskine | 473f636 | 2023-09-08 16:49:14 +0200 | [diff] [blame] | 21 | exit |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 22 | fi |
| 23 | |
Gilles Peskine | 473f636 | 2023-09-08 16:49:14 +0200 | [diff] [blame] | 24 | unrelease= # if non-empty, we're in undo-release mode |
| 25 | while getopts u OPTLET; do |
| 26 | case $OPTLET in |
| 27 | u) unrelease=1;; |
| 28 | \?) |
| 29 | echo 1>&2 "$0: unknown option: -$OPTLET" |
| 30 | echo 1>&2 "Try '$0 --help' for more information." |
| 31 | exit 3;; |
| 32 | esac |
| 33 | done |
| 34 | |
| 35 | |
| 36 | |
| 37 | #### .gitignore processing #### |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 38 | |
| 39 | GITIGNORES=$(find . -name ".gitignore") |
| 40 | for GITIGNORE in $GITIGNORES; do |
Gilles Peskine | 473f636 | 2023-09-08 16:49:14 +0200 | [diff] [blame] | 41 | if [ -n "$unrelease" ]; then |
Minos Galanakis | 31dbc36 | 2023-11-10 16:01:43 +0000 | [diff] [blame^] | 42 | sed -i '/###START_COMMENTED_GENERATED_FILES###/,/###END_COMMENTED_GENERATED_FILES###/s/^#//' $GITIGNORE |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 43 | sed -i 's/###START_COMMENTED_GENERATED_FILES###/###START_GENERATED_FILES###/' $GITIGNORE |
| 44 | sed -i 's/###END_COMMENTED_GENERATED_FILES###/###END_GENERATED_FILES###/' $GITIGNORE |
| 45 | else |
Minos Galanakis | 31dbc36 | 2023-11-10 16:01:43 +0000 | [diff] [blame^] | 46 | sed -i '/###START_GENERATED_FILES###/,/###END_GENERATED_FILES###/s/^/#/' $GITIGNORE |
Agathiyan Bragadeesh | 3bcff54 | 2023-08-04 14:05:28 +0100 | [diff] [blame] | 47 | sed -i 's/###START_GENERATED_FILES###/###START_COMMENTED_GENERATED_FILES###/' $GITIGNORE |
| 48 | sed -i 's/###END_GENERATED_FILES###/###END_COMMENTED_GENERATED_FILES###/' $GITIGNORE |
| 49 | fi |
| 50 | done |
Gilles Peskine | 473f636 | 2023-09-08 16:49:14 +0200 | [diff] [blame] | 51 | |
| 52 | |
| 53 | |
| 54 | #### Build scripts #### |
| 55 | |
| 56 | # GEN_FILES defaults on (non-empty) in development, off (empty) in releases |
| 57 | if [ -n "$unrelease" ]; then |
| 58 | r=' yes' |
| 59 | else |
| 60 | r='' |
| 61 | fi |
| 62 | sed -i 's/^\(GEN_FILES[ ?:]*=\)\([^#]*\)/\1'"$r/" Makefile */Makefile |
| 63 | |
| 64 | # GEN_FILES defaults on in development, off in releases |
| 65 | if [ -n "$unrelease" ]; then |
| 66 | r='ON' |
| 67 | else |
| 68 | r='OFF' |
| 69 | fi |
Gilles Peskine | eeed74e | 2023-09-09 21:00:30 +0200 | [diff] [blame] | 70 | sed -i '/[Oo][Ff][Ff] in development/! s/^\( *option *( *GEN_FILES *"[^"]*" *\)\([A-Za-z0-9][A-Za-z0-9]*\)/\1'"$r/" CMakeLists.txt |