slitaz-dev-tools annotate slitaz-release/slitaz-release @ rev 298

slitaz-release: tiny edit
author Paul Issott <paul@slitaz.org>
date Sun Mar 19 23:23:31 2017 +0000 (2017-03-19)
parents af10ffa04919
children a6b28f1e53eb
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
paul@298 173 echo "Ready to 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