| 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 |