tazlito annotate tazlito-wiz @ rev 495
fix extract-distro
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Mon May 07 20:56:30 2018 +0200 (2018-05-07) |
parents | d7d87b67adeb |
children | 7c8e4ca19511 |
rev | line source |
---|---|
pankso@254 | 1 #!/bin/sh |
pankso@254 | 2 # |
pankso@254 | 3 # Live system creation wizard in GTK using Yad. |
pankso@254 | 4 # |
al@399 | 5 # Copyright (C) 2012-2015 SliTaz GNU/Linux - GNU gpl v2 |
pankso@254 | 6 # Authors : Christophe Lincoln <pankso@slitaz.org> |
pankso@254 | 7 # |
pankso@254 | 8 |
al@399 | 9 default_icon="--image=slitaz-icon" |
al@399 | 10 opts="--height=320 --width=600 --center --image-on-top --window-icon=slitaz-icon --title=LiveWizard" |
pankso@254 | 11 rel=$(cat /etc/slitaz-release) |
erjo@376 | 12 #[ "$rel" != "cooking" ] && rel=stable |
al@399 | 13 live="/home/slitaz/$rel/live" |
al@399 | 14 db='/var/lib/tazpkg' |
psychomaniak@388 | 15 list="$live/distro-packages.list" |
pankso@254 | 16 distro="/home/slitaz/$rel/distro" |
pankso@254 | 17 addfiles="$distro/addfiles" |
pankso@254 | 18 |
al@399 | 19 |
pankso@254 | 20 # TazLito wizard is only for root. |
al@399 | 21 |
al@399 | 22 if [ $(id -u) -ne 0 ]; then |
pankso@254 | 23 exec tazbox su $0 |
pankso@254 | 24 exit 0 |
pankso@254 | 25 fi |
pankso@254 | 26 |
al@399 | 27 |
pankso@254 | 28 # I18n |
al@399 | 29 |
al@399 | 30 . /lib/libtaz.sh |
al@399 | 31 export TEXTDOMAIN='tazlito' |
al@399 | 32 |
pankso@254 | 33 |
pankso@254 | 34 # Sanity check. |
al@399 | 35 |
pankso@254 | 36 mkdir -p $live && cd $live |
pankso@254 | 37 #rm -rf * |
pankso@254 | 38 |
al@399 | 39 |
pankso@254 | 40 # |
pankso@254 | 41 # Functions |
pankso@254 | 42 # |
pankso@254 | 43 |
al@399 | 44 edit_list() { |
al@399 | 45 cat $list | yad --list $opts --image='system-software-update' \ |
al@399 | 46 --text="<b>$(_ 'Edit the distro packages list')</b>" \ |
al@399 | 47 --no-headers --print-all --separator='' \ |
al@399 | 48 --editable --column=0:TEXT > "$live/list" |
al@399 | 49 mv -f "$live/list" "$list" |
pankso@254 | 50 } |
pankso@254 | 51 |
al@399 | 52 |
al@399 | 53 # Start page GUI |
al@399 | 54 |
al@399 | 55 start_main() { |
al@399 | 56 yad --form $opts $default_icon \ |
al@399 | 57 --text="<b>$(_ 'SliTaz Live system creator wizard')</b>" \ |
al@399 | 58 --field="$(_ "Distro name:")" \ |
al@399 | 59 --field="$(_ "Based on:")":CB \ |
psychomaniak@411 | 60 --field="":LBL --field=" ":LBL \ |
psychomaniak@411 | 61 --field="$(_ "*.flavor file (optional):")":SFL \ |
al@399 | 62 --button='gtk-help:4' \ |
al@399 | 63 --button="$(_ 'Write ISO')!iso-image-burn:3" \ |
al@399 | 64 --button="$(_ 'TazPanel Live'):2" \ |
al@399 | 65 --button='gtk-cancel:1' \ |
al@399 | 66 --button='gtk-go-forward:0' \ |
al@399 | 67 'custom' 'core!core64!gtkonly!justx!base' |
pankso@254 | 68 } |
pankso@254 | 69 |
pankso@254 | 70 |
pankso@254 | 71 # Start page handler |
al@399 | 72 |
pankso@254 | 73 start() { |
pankso@254 | 74 # Store box results |
pankso@254 | 75 main=$(start_main) |
al@399 | 76 |
pankso@254 | 77 # Deal with --button values |
pankso@254 | 78 case $? in |
al@399 | 79 1) exit 0;; |
al@399 | 80 2) tazpanel live; exit 0;; |
al@399 | 81 3) terminal -T 'write-iso' -e 'tazlito writeiso lzma'; exit 0;; |
al@399 | 82 4) tazweb 'file:///usr/share/doc/tazlito/tazlito.html'; exit 0;; |
al@399 | 83 *) continue;; |
pankso@254 | 84 esac |
al@399 | 85 |
pankso@254 | 86 # Deal with $main values |
al@399 | 87 |
al@399 | 88 ( |
al@399 | 89 export output='raw' |
al@399 | 90 # Numbers are moved the progressbar |
al@399 | 91 echo '30' |
al@399 | 92 # Lines started with '#' are displayed in the log |
al@399 | 93 tazpkg recharge | sed 's|^.*|#&|' |
al@399 | 94 name="$(echo $main | cut -d'|' -f1)"; name="${name:-custom}" |
al@399 | 95 skel="$(echo $main | cut -d'|' -f2)" |
psychomaniak@411 | 96 flvf="$(echo $main | cut -d'|' -f5)" |
psychomaniak@411 | 97 if [ ${flvf/*./} == flavor ]; then |
psychomaniak@411 | 98 cp -a $flvf $live ; skel=$(basename $flvf) |
psychomaniak@411 | 99 fi |
al@399 | 100 echo "$skel" > $live/skel |
al@399 | 101 echo '60' |
al@399 | 102 tazlito get-flavor $skel | sed 's|^.*|#&|' |
al@399 | 103 echo '90' |
al@399 | 104 sed -i "s|^ISO_NAME=.*|ISO_NAME=\"$name\"|" tazlito.conf |
al@399 | 105 sed -i "s|^VOLUM_NAME=.*|VOLUM_NAME=\"SliTaz $name\"|" tazlito.conf |
al@399 | 106 ) | \ |
al@399 | 107 yad --progress $opts --image='system-software-update' \ |
al@399 | 108 --text="<b>$(_ 'Getting flavor file and packages list...')</b>" \ |
al@399 | 109 --enable-log="$(_ 'Log')" --log-expanded --button='gtk-go-forward:0' |
al@399 | 110 |
pankso@254 | 111 } |
pankso@254 | 112 |
al@399 | 113 |
pankso@254 | 114 # Packages page GUI |
al@399 | 115 |
pankso@254 | 116 pkgs_main() { |
pankso@254 | 117 pkgs=$(cat $list | wc -l) |
pankso@254 | 118 skel=$(cat $live/skel) |
al@442 | 119 text=$(_p 'Packages - The "%s" has %d package' 'Packages - The "%s" has %d packages' "$pkgs" "$skel" "$pkgs") |
al@399 | 120 yad --form $opts --image='application-x-tazpkg' \ |
al@399 | 121 --text="<b>$text</b>" --separator=' ' \ |
al@399 | 122 --field="$(_ 'Additional packages separated by space or by line:')\\n$(_ '(will be auto added to "Edit packages list")')":TXT \ |
al@399 | 123 --button="$(_ 'Edit packages list')!document-properties:2" \ |
al@399 | 124 --button='gtk-cancel:1' --button='gtk-go-forward:0' |
pankso@254 | 125 } |
pankso@254 | 126 |
al@399 | 127 |
pankso@254 | 128 # Packages page handler |
al@399 | 129 |
pankso@254 | 130 pkgs() { |
pankso@254 | 131 # Store box results |
pankso@254 | 132 main=$(pkgs_main) |
pankso@254 | 133 # Deal with --button values |
pankso@254 | 134 case $? in |
pankso@254 | 135 1) exit 0 ;; |
psychomaniak@388 | 136 2) add_to_list ; edit_list ;; |
psychomaniak@388 | 137 *) add_to_list ;; |
pankso@254 | 138 esac |
psychomaniak@388 | 139 } |
psychomaniak@388 | 140 |
al@399 | 141 |
al@399 | 142 add_to_list() { |
al@399 | 143 for pkg in $(echo $main | sed s'/\\n/ /'g); do |
psychomaniak@388 | 144 vers=$(grep -E "^$pkg \|" $db/packages.desc | awk '{print $3}') |
psychomaniak@388 | 145 [ -z $vers ] || \ |
psychomaniak@388 | 146 (grep -v -q "^$pkg-$vers" $list && \ |
pankso@254 | 147 echo "$pkg-$vers" >> $list |
psychomaniak@388 | 148 ) |
psychomaniak@388 | 149 unset vers |
pankso@254 | 150 done |
pankso@254 | 151 } |
pankso@254 | 152 |
al@399 | 153 |
pankso@254 | 154 # Wallpaper page GUI |
al@399 | 155 |
pankso@254 | 156 wallpaper_main() { |
al@399 | 157 yad --form $opts --image='preferences-desktop-wallpaper' \ |
al@399 | 158 --text="<b>$(_ 'SliTaz desktop wallpaper')</b>" --separator='' \ |
al@399 | 159 --field="$(_ 'Wallpaper JPG image:')":FL \ |
al@399 | 160 --button='gtk-cancel:1' --button='gtk-go-forward:0' |
pankso@254 | 161 } |
pankso@254 | 162 |
al@399 | 163 |
pankso@254 | 164 # Wallpaper page handler |
al@399 | 165 |
pankso@254 | 166 wallpaper() { |
pankso@254 | 167 # Store box results |
pankso@254 | 168 main=$(wallpaper_main) |
pankso@254 | 169 # Deal with --button values |
pankso@254 | 170 case $? in |
pankso@254 | 171 1) exit 0 ;; |
pankso@254 | 172 *) continue ;; |
pankso@254 | 173 esac |
pankso@254 | 174 if echo "$main" | fgrep -q .jpg; then |
pankso@254 | 175 mkdir -p $addfiles/rootfs/usr/share/images |
pankso@254 | 176 cp -f $main $addfiles/rootfs/usr/share/images |
pankso@254 | 177 fi |
pankso@254 | 178 } |
pankso@254 | 179 |
al@399 | 180 |
pankso@254 | 181 # Last page GUI |
al@399 | 182 |
pankso@254 | 183 gen_distro_main() { |
al@399 | 184 ( |
al@399 | 185 _ " |
pankso@254 | 186 Now it's time to generate the distro. Last chance to start over or stop. \ |
paul@261 | 187 Creating a Live system uses quite a lot of resources and takes some time. |
al@399 | 188 Note you can still add some files to the SliTaz root filesystem or on the CD-ROM." |
al@399 | 189 echo |
al@399 | 190 echo $addfiles |
al@399 | 191 ) | yad --text-info $opts $default_icon \ |
al@399 | 192 --text="<b>$(_ 'Generate the distribution')</b>" --wrap --margins=20 \ |
al@399 | 193 --button='gtk-cancel:1' --button='gtk-go-forward:0' |
pankso@254 | 194 } |
pankso@254 | 195 |
al@399 | 196 |
pankso@254 | 197 # Last page handler |
al@399 | 198 |
pankso@254 | 199 gen_distro() { |
pankso@254 | 200 # Store box results |
pankso@254 | 201 main=$(gen_distro_main) |
al@399 | 202 |
pankso@254 | 203 # Deal with --button values |
pankso@254 | 204 case $? in |
pankso@254 | 205 1) exit 0 ;; |
pankso@332 | 206 *) |
al@399 | 207 export output='raw' |
pankso@332 | 208 echo -e "\n" | tazlito gen-distro 2>&1 | yad \ |
al@399 | 209 --text-info $opts $default_icon --tail \ |
al@399 | 210 --text="<b>$(_ 'Building the Live system...')</b>" \ |
al@399 | 211 --button='gtk-go-forward:0' |
al@399 | 212 ;; |
pankso@254 | 213 esac |
pankso@254 | 214 } |
pankso@254 | 215 |
al@399 | 216 |
pankso@254 | 217 # Summary |
al@399 | 218 |
pankso@254 | 219 summary() { |
pascal@454 | 220 . ./tazlito.conf |
pankso@254 | 221 iso_size=$(du -sh $distro/$ISO_NAME.iso | awk '{print $1}') |
pankso@254 | 222 distro_size=$(du -sh $distro/rootfs | awk '{print $1}') |
al@399 | 223 text="$(_ 'Live system summary')" |
pankso@254 | 224 echo -e "\ |
al@399 | 225 $(_ 'Generated ISO') \n$distro/$ISO_NAME.iso |
al@399 | 226 $(_ 'Image size') \n$iso_size |
al@399 | 227 $(_ 'Uncompressed size') \n$distro_size" | \ |
al@399 | 228 yad --list $opts $default_icon --text="<b>$text</b>" \ |
al@399 | 229 --column="$(_ 'Information')":0 --column="$(_ 'Value')":1 \ |
pankso@254 | 230 --button="gtk-close":0 |
pankso@254 | 231 } |
pankso@254 | 232 |
al@399 | 233 |
pankso@254 | 234 # |
pankso@254 | 235 # Script commands |
pankso@254 | 236 # |
pankso@254 | 237 |
pankso@254 | 238 case "$1" in |
pankso@254 | 239 usage) |
pankso@254 | 240 echo "Usage: $(basename $0) [command]" ;; |
al@399 | 241 *) |
pankso@254 | 242 start |
pankso@254 | 243 pkgs |
al@399 | 244 wallpaper |
pankso@254 | 245 gen_distro |
pankso@254 | 246 summary ;; |
pankso@254 | 247 esac |
pankso@254 | 248 |
pankso@254 | 249 exit 0 |