slitaz-dev-tools annotate slitaz-release/slitaz-release @ rev 297
slitaz-release: finish pangolin checks and tasks
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sun Mar 19 18:38:05 2017 +0100 (2017-03-19) |
parents | 0f84a16feb0f |
children | 478e3c929081 |
rev | line source |
---|---|
pankso@291 | 1 #!/bin/sh |
pankso@291 | 2 # |
pankso@291 | 3 # slitaz-release - SliTaz stable and cooking release helper. The script |
paul@294 | 4 # will check hostname to handle host specific release tasks (tank, pangolin, |
pankso@291 | 5 # mirror, local) |
pankso@291 | 6 # |
pankso@291 | 7 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License |
pankso@291 | 8 # |
pankso@291 | 9 #. /lib/libtaz.sh # Is not installed on pangolin & mirror (slitaz 4.0) |
pankso@291 | 10 |
pankso@291 | 11 version="$1" |
pankso@291 | 12 |
pankso@297 | 13 # Parse cmdline options and store values in a variable. |
pankso@297 | 14 for opt in "$@"; do |
pankso@297 | 15 opt_name="${opt%%=*}" |
pankso@297 | 16 opt_name="$(echo -n "${opt_name#--}" | tr -c 'a-zA-Z0-9' '_')" |
pankso@297 | 17 case "$opt" in |
pankso@297 | 18 --*=*) export $opt_name="${opt#*=}" ;; |
pankso@297 | 19 --*) export $opt_name="yes" ;; |
pankso@297 | 20 esac |
pankso@297 | 21 done |
pankso@297 | 22 |
pankso@297 | 23 # --repos=/path/to/local/repos |
pankso@297 | 24 if [ "$repos" ]; then |
pankso@297 | 25 local_repos="$repos" |
pankso@291 | 26 else |
pankso@291 | 27 local_repos="$HOME/Projects" |
pankso@291 | 28 fi |
pankso@291 | 29 |
pankso@291 | 30 help() { |
pankso@291 | 31 cat << EOT |
pankso@291 | 32 |
pankso@297 | 33 $(colorize 38 "Usage:") slitaz-release [version] [--options] |
pankso@297 | 34 |
pankso@297 | 35 $(colorize 38 "Options:") |
pankso@297 | 36 --repos= |
pankso@297 | 37 --now |
pankso@291 | 38 |
pankso@291 | 39 $(colorize 033 "Local repos :") $local_repos |
pankso@291 | 40 $(colorize 033 "Documentation :") http://www.slitaz.org/en/devel/release.php |
pankso@291 | 41 |
pankso@291 | 42 EOT |
pankso@291 | 43 } |
pankso@291 | 44 |
pankso@291 | 45 # Colorize message |
pankso@291 | 46 colorize() { |
pankso@291 | 47 : ${color=$1} |
pankso@291 | 48 shift |
pankso@291 | 49 case "$color" in |
pankso@291 | 50 0*) echo -e "\\033[${color:-38}m$@\\033[39m" ;; |
pankso@291 | 51 *) echo -e "\\033[1;${color:-38}m$@\\033[0;39m" ;; |
pankso@291 | 52 esac; unset color |
pankso@291 | 53 } |
pankso@291 | 54 |
pankso@291 | 55 title() { |
pankso@291 | 56 echo ""; colorize 033 "$@" |
pankso@291 | 57 } |
pankso@291 | 58 |
pankso@291 | 59 check_string() { |
pankso@291 | 60 if [ "$slitaz_release" != "$version" ]; then |
pankso@297 | 61 read=1 |
pankso@291 | 62 colorize 031 "Wrong string: $slitaz_release" |
pankso@291 | 63 echo " * $1" |
pankso@291 | 64 else |
pankso@297 | 65 ready=0 |
pankso@291 | 66 colorize 031 "SliTaz release: $version" |
pankso@291 | 67 fi |
pankso@291 | 68 } |
pankso@291 | 69 |
pankso@291 | 70 # |
pankso@291 | 71 # Handle commands |
pankso@291 | 72 # |
pankso@291 | 73 case "$1" in |
pankso@295 | 74 |
pankso@295 | 75 info) |
pankso@295 | 76 echo -n "Hostname:"; hostname ;; |
pankso@295 | 77 |
pankso@291 | 78 "") help; exit 0 ;; |
pankso@297 | 79 |
pankso@291 | 80 esac |
pankso@291 | 81 |
pankso@291 | 82 # |
paul@294 | 83 # Handle host specific tasks |
pankso@291 | 84 # |
pankso@291 | 85 case "$(hostname)" in |
pankso@291 | 86 |
pankso@291 | 87 tank) |
paul@294 | 88 # Build host with chroots and built ISOs |
pankso@291 | 89 slitaz="/home/slitaz" |
pankso@291 | 90 ;; |
pankso@291 | 91 |
pankso@291 | 92 mirror) |
paul@294 | 93 # Host packages and official ISOs |
pankso@291 | 94 packages="" |
pankso@291 | 95 ;; |
pankso@291 | 96 |
pankso@291 | 97 pangolin) |
pankso@291 | 98 # Host all Hg repositories |
pankso@291 | 99 repos="/home/slitaz/repos" |
pankso@297 | 100 backups="/home/slitaz/backups" |
pankso@291 | 101 |
pankso@291 | 102 # Stable wok |
pankso@291 | 103 title "Checking repo: wok-stable" |
pankso@297 | 104 cd ${repos}/wok-stable; hg up |
pankso@291 | 105 slitaz_release=$(hg parents --template '{latesttag}') |
pankso@291 | 106 check_string "stable wok is not yet tagged to $version" |
pankso@291 | 107 |
pankso@291 | 108 # Cooking wok |
pankso@291 | 109 title "Checking repo: wok" |
pankso@297 | 110 cd ${repos}/wok; hg up |
pankso@291 | 111 slitaz_release=$(hg parents --template '{latesttag}') |
pankso@297 | 112 check_string "cooking wok is not yet ready to be copied" |
pankso@295 | 113 |
pankso@297 | 114 # Ready for --now ? |
pankso@297 | 115 if [ "$now" ] && [ "$ready" == 0 ]; then |
pankso@297 | 116 echo "Releasing SliTaz: $version" |
pankso@297 | 117 cd ${repos}/wok-stable; hg up |
pankso@297 | 118 previous_release=$(hg parents --template '{latesttag}') |
pankso@297 | 119 echo "Previous release string: $previous_release" |
pankso@297 | 120 |
pankso@297 | 121 echo "Archiving current wok-stable..." |
pankso@297 | 122 cd ${repos} |
pankso@297 | 123 tar czf wok-stable-${previous_release}.tar.gz wok-stable |
pankso@297 | 124 mv wok-stable-${previous_release}.tar.gz ${backups} |
pankso@297 | 125 |
pankso@297 | 126 echo "Copying current wok to wok-stable" |
pankso@297 | 127 rm -rf wok-stable && cp -a wok wok-stable |
pankso@297 | 128 |
pankso@297 | 129 else |
pankso@297 | 130 echo "Not yet ready to release SliTaz $version on $(hostname)" |
pankso@297 | 131 fi |
pankso@297 | 132 |
pankso@297 | 133 echo "" ;; |
pankso@291 | 134 |
pankso@291 | 135 *) |
pankso@291 | 136 # Local Hg repos: set stable string and Hg tags |
pankso@291 | 137 for repo in slitaz-base-files slitaz-doc wok; do |
pankso@291 | 138 if [ ! -d "$local_repos/$repo" ]; then |
pankso@297 | 139 echo "" |
pankso@297 | 140 colorize 031 "Missing repos: $local_repos/$repo" |
pankso@297 | 141 help; exit 1 |
pankso@291 | 142 fi |
pankso@291 | 143 done |
pankso@291 | 144 |
pankso@291 | 145 # /etc/slitaz-release |
pankso@291 | 146 title "Checking file: /etc/slitaz-release" |
pankso@291 | 147 base_files="$local_repos/slitaz-base-files/rootfs" |
pankso@291 | 148 slitaz_release=$(cat $base_files/etc/slitaz-release) |
pankso@291 | 149 check_string "slitaz-base-files must be modified and wok updated" |
pankso@291 | 150 |
pankso@291 | 151 # isolinux.cfg |
pankso@291 | 152 title "Checking file: isolinux.cfg" |
pankso@291 | 153 isolinux_cfg="$local_repos/wok/syslinux/stuff/isolinux.cfg" |
pankso@291 | 154 slitaz_release=$(grep "MENU TITLE" $isolinux_cfg | cut -d " " -f 6) |
pankso@291 | 155 check_string "syslinux package must be modified and wok updated" |
pankso@291 | 156 |
pankso@291 | 157 # slitaz-doc |
pankso@291 | 158 title "Checking repo: slitaz-doc" |
pankso@297 | 159 cd ${local_repos}/slitaz-doc |
pankso@291 | 160 slitaz_release=$(hg parents --template '{latesttag}') |
pankso@291 | 161 check_string "slitaz-doc should provide relnotes and be tagged" |
pankso@291 | 162 |
pankso@291 | 163 # wok: the current cooking wok will be copied to wok-stable on |
paul@294 | 164 # Hg server and then it will continue its own life with security updates. |
paul@294 | 165 # Tagging the wok lets us have the initial state of the new release. |
pankso@291 | 166 title "Checking repo: wok" |
pankso@297 | 167 cd ${local_repos}/wok |
pankso@291 | 168 slitaz_release=$(hg parents --template '{latesttag}') |
pankso@291 | 169 check_string "the wok should be tagged to $version" |
pankso@297 | 170 echo "" |
pankso@297 | 171 |
pankso@297 | 172 if [ "$ready" == 0 ]; then |
pankso@297 | 173 echo "Ready for release SliTaz $version :-)" |
pankso@297 | 174 else |
pankso@297 | 175 echo "Not yet ready to release SliTaz $version" |
pankso@297 | 176 fi |
pankso@291 | 177 |
pankso@291 | 178 echo "" ;; |
pankso@291 | 179 esac |
pankso@291 | 180 |
pankso@291 | 181 exit 0 |