tazlito annotate tazlito-wiz @ rev 532

tazlito: typo for $FLAVOR.nonfree
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Nov 09 14:40:46 2021 +0000 (2021-11-09)
parents 7c8e4ca19511
children
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;;
pankso@254 83 esac
al@399 84
pankso@254 85 # Deal with $main values
al@399 86
al@399 87 (
al@399 88 export output='raw'
al@399 89 # Numbers are moved the progressbar
al@399 90 echo '30'
al@399 91 # Lines started with '#' are displayed in the log
al@399 92 tazpkg recharge | sed 's|^.*|#&|'
al@399 93 name="$(echo $main | cut -d'|' -f1)"; name="${name:-custom}"
al@399 94 skel="$(echo $main | cut -d'|' -f2)"
psychomaniak@411 95 flvf="$(echo $main | cut -d'|' -f5)"
pascal@514 96 if [ ${flvf/*./} = flavor ]; then
psychomaniak@411 97 cp -a $flvf $live ; skel=$(basename $flvf)
psychomaniak@411 98 fi
al@399 99 echo "$skel" > $live/skel
al@399 100 echo '60'
al@399 101 tazlito get-flavor $skel | sed 's|^.*|#&|'
al@399 102 echo '90'
al@399 103 sed -i "s|^ISO_NAME=.*|ISO_NAME=\"$name\"|" tazlito.conf
al@399 104 sed -i "s|^VOLUM_NAME=.*|VOLUM_NAME=\"SliTaz $name\"|" tazlito.conf
al@399 105 ) | \
al@399 106 yad --progress $opts --image='system-software-update' \
al@399 107 --text="<b>$(_ 'Getting flavor file and packages list...')</b>" \
al@399 108 --enable-log="$(_ 'Log')" --log-expanded --button='gtk-go-forward:0'
al@399 109
pankso@254 110 }
pankso@254 111
al@399 112
pankso@254 113 # Packages page GUI
al@399 114
pankso@254 115 pkgs_main() {
pankso@254 116 pkgs=$(cat $list | wc -l)
pankso@254 117 skel=$(cat $live/skel)
al@442 118 text=$(_p 'Packages - The "%s" has %d package' 'Packages - The "%s" has %d packages' "$pkgs" "$skel" "$pkgs")
al@399 119 yad --form $opts --image='application-x-tazpkg' \
al@399 120 --text="<b>$text</b>" --separator=' ' \
al@399 121 --field="$(_ 'Additional packages separated by space or by line:')\\n$(_ '(will be auto added to "Edit packages list")')":TXT \
al@399 122 --button="$(_ 'Edit packages list')!document-properties:2" \
al@399 123 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 124 }
pankso@254 125
al@399 126
pankso@254 127 # Packages page handler
al@399 128
pankso@254 129 pkgs() {
pankso@254 130 # Store box results
pankso@254 131 main=$(pkgs_main)
pankso@254 132 # Deal with --button values
pankso@254 133 case $? in
pankso@254 134 1) exit 0 ;;
psychomaniak@388 135 2) add_to_list ; edit_list ;;
psychomaniak@388 136 *) add_to_list ;;
pankso@254 137 esac
psychomaniak@388 138 }
psychomaniak@388 139
al@399 140
al@399 141 add_to_list() {
al@399 142 for pkg in $(echo $main | sed s'/\\n/ /'g); do
psychomaniak@388 143 vers=$(grep -E "^$pkg \|" $db/packages.desc | awk '{print $3}')
psychomaniak@388 144 [ -z $vers ] || \
psychomaniak@388 145 (grep -v -q "^$pkg-$vers" $list && \
pankso@254 146 echo "$pkg-$vers" >> $list
psychomaniak@388 147 )
psychomaniak@388 148 unset vers
pankso@254 149 done
pankso@254 150 }
pankso@254 151
al@399 152
pankso@254 153 # Wallpaper page GUI
al@399 154
pankso@254 155 wallpaper_main() {
al@399 156 yad --form $opts --image='preferences-desktop-wallpaper' \
al@399 157 --text="<b>$(_ 'SliTaz desktop wallpaper')</b>" --separator='' \
al@399 158 --field="$(_ 'Wallpaper JPG image:')":FL \
al@399 159 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 160 }
pankso@254 161
al@399 162
pankso@254 163 # Wallpaper page handler
al@399 164
pankso@254 165 wallpaper() {
pankso@254 166 # Store box results
pankso@254 167 main=$(wallpaper_main)
pankso@254 168 # Deal with --button values
pankso@254 169 case $? in
pankso@254 170 1) exit 0 ;;
pankso@254 171 *) continue ;;
pankso@254 172 esac
pankso@254 173 if echo "$main" | fgrep -q .jpg; then
pankso@254 174 mkdir -p $addfiles/rootfs/usr/share/images
pankso@254 175 cp -f $main $addfiles/rootfs/usr/share/images
pankso@254 176 fi
pankso@254 177 }
pankso@254 178
al@399 179
pankso@254 180 # Last page GUI
al@399 181
pankso@254 182 gen_distro_main() {
al@399 183 (
al@399 184 _ "
pankso@254 185 Now it's time to generate the distro. Last chance to start over or stop. \
paul@261 186 Creating a Live system uses quite a lot of resources and takes some time.
al@399 187 Note you can still add some files to the SliTaz root filesystem or on the CD-ROM."
al@399 188 echo
al@399 189 echo $addfiles
al@399 190 ) | yad --text-info $opts $default_icon \
al@399 191 --text="<b>$(_ 'Generate the distribution')</b>" --wrap --margins=20 \
al@399 192 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 193 }
pankso@254 194
al@399 195
pankso@254 196 # Last page handler
al@399 197
pankso@254 198 gen_distro() {
pankso@254 199 # Store box results
pankso@254 200 main=$(gen_distro_main)
al@399 201
pankso@254 202 # Deal with --button values
pankso@254 203 case $? in
pankso@254 204 1) exit 0 ;;
pankso@332 205 *)
al@399 206 export output='raw'
pankso@332 207 echo -e "\n" | tazlito gen-distro 2>&1 | yad \
al@399 208 --text-info $opts $default_icon --tail \
al@399 209 --text="<b>$(_ 'Building the Live system...')</b>" \
al@399 210 --button='gtk-go-forward:0'
al@399 211 ;;
pankso@254 212 esac
pankso@254 213 }
pankso@254 214
al@399 215
pankso@254 216 # Summary
al@399 217
pankso@254 218 summary() {
pascal@454 219 . ./tazlito.conf
pankso@254 220 iso_size=$(du -sh $distro/$ISO_NAME.iso | awk '{print $1}')
pankso@254 221 distro_size=$(du -sh $distro/rootfs | awk '{print $1}')
al@399 222 text="$(_ 'Live system summary')"
pankso@254 223 echo -e "\
al@399 224 $(_ 'Generated ISO') \n$distro/$ISO_NAME.iso
al@399 225 $(_ 'Image size') \n$iso_size
al@399 226 $(_ 'Uncompressed size') \n$distro_size" | \
al@399 227 yad --list $opts $default_icon --text="<b>$text</b>" \
al@399 228 --column="$(_ 'Information')":0 --column="$(_ 'Value')":1 \
pankso@254 229 --button="gtk-close":0
pankso@254 230 }
pankso@254 231
al@399 232
pankso@254 233 #
pankso@254 234 # Script commands
pankso@254 235 #
pankso@254 236
pankso@254 237 case "$1" in
pankso@254 238 usage)
pankso@254 239 echo "Usage: $(basename $0) [command]" ;;
al@399 240 *)
pankso@254 241 start
pankso@254 242 pkgs
al@399 243 wallpaper
pankso@254 244 gen_distro
pankso@254 245 summary ;;
pankso@254 246 esac
pankso@254 247
pankso@254 248 exit 0