tazlito annotate tazlito-wiz @ rev 388

tazlito-wiz(yad): correctly get versions in 'Additional packages' dialog.

writeiso: restore align for lzma, exclude ~/.cache (boot failed after using palemoon), misc fixes
author Xander Ziiryanoff <psychomaniak@xakep.ru>
date Thu Nov 05 21:48:22 2015 +0100 (2015-11-05)
parents 0c21c98caecb
children 6e2c8b742f47
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 #
pankso@324 5 # Copyright (C) 2012-2014 SliTaz GNU/Linux - GNU gpl v2
pankso@254 6 # Authors : Christophe Lincoln <pankso@slitaz.org>
pankso@254 7 #
pankso@254 8
pankso@254 9 width="560"
pankso@254 10 icon="/usr/share/pixmaps/slitaz-icon.png"
pankso@332 11 opts="--height=300 --width=$width --image=$icon --center
pankso@254 12 --image-on-top --window-icon=$icon --title=LiveWizard"
pankso@254 13 rel=$(cat /etc/slitaz-release)
erjo@376 14 #[ "$rel" != "cooking" ] && rel=stable
pankso@254 15 live=/home/slitaz/$rel/live
pankso@254 16 db="/var/lib/tazpkg"
psychomaniak@388 17 list="$live/distro-packages.list"
pankso@254 18 distro="/home/slitaz/$rel/distro"
pankso@254 19 addfiles="$distro/addfiles"
pankso@254 20
pankso@254 21 # TazLito wizard is only for root.
pankso@254 22 if test $(id -u) != 0 ; then
pankso@254 23 exec tazbox su $0
pankso@254 24 exit 0
pankso@254 25 fi
pankso@254 26
pankso@254 27 # I18n
pankso@254 28 . /usr/bin/gettext.sh
pankso@254 29 TEXTDOMAIN='tazlito-wiz'
pankso@254 30 export TEXTDOMAIN
pankso@254 31
pankso@254 32 # Sanity check.
pankso@254 33 mkdir -p $live && cd $live
pankso@254 34 #rm -rf *
pankso@254 35
pankso@254 36 #
pankso@254 37 # Functions
pankso@254 38 #
pankso@254 39
pankso@254 40 progress() {
pankso@332 41 yad --progress --height="140" --width="$width" --center \
pankso@254 42 --image=$icon --image-on-top --window-icon=$icon \
pankso@254 43 --text="<b>$text</b>" --title="SliTaz Live progress" --auto-close
pankso@254 44 }
pankso@254 45
pankso@254 46 edit_list() {
pankso@254 47 text=$(gettext "Edit the distro packages list")
psychomaniak@388 48 cat $list | yad --list $opts --text="$text" \
pankso@254 49 --no-headers --print-all --separator="" \
pankso@254 50 --editable --column=0:TEXT > $live/list
psychomaniak@388 51 mv -f $live/list $list
pankso@254 52 }
pankso@254 53
pankso@254 54 # Start page GUI
pankso@254 55 start_main() {
pankso@254 56 text=$(gettext "SliTaz Live system creator wizard")
pankso@254 57 yad --form $opts --text="<b>$text</b>" \
pankso@254 58 --field="$(gettext "Distro name:")" \
pankso@254 59 --field="$(gettext "Based on:")":CB \
pankso@272 60 --button="Write ISO:3" \
pankso@254 61 --button="TazPanel Live:2" \
pankso@254 62 --button="gtk-cancel:1" \
pankso@254 63 --button="gtk-ok:0" \
psychomaniak@388 64 " " "core!core64!gtkonly!justx!base"
pankso@254 65 }
pankso@254 66
pankso@254 67 # Start page handler
pankso@254 68 start() {
pankso@254 69 # Store box results
pankso@254 70 main=$(start_main)
pankso@254 71 # Deal with --button values
pankso@254 72 case $? in
pankso@254 73 1) exit 0 ;;
pankso@254 74 2) tazweb http://tazpanel:82/live.cgi && exit 0 ;;
pankso@272 75 3) terminal -T "write-iso" -e "tazlito writeiso lzma" && exit 0 ;;
pankso@254 76 *) continue ;;
pankso@254 77 esac
pankso@254 78 # Deal with $main values
pankso@254 79 text=$(gettext "Getting flavor file and packages list...")
psychomaniak@388 80 (echo "30" && xterm='xterm -fa fixed-8 '
psychomaniak@388 81 [ -z $(which xterm) ] && xterm='terminal'
psychomaniak@388 82 $xterm -geometry 80x10-0-0 -e tazpkg recharge
pankso@254 83 name=$(echo $main | cut -d "|" -f 1)
pankso@254 84 skel=$(echo $main | cut -d "|" -f 2)
pankso@254 85 echo "$skel" > $live/skel
pankso@254 86 echo "60"
pankso@254 87 [ "$name" ] || name="custom"
pankso@254 88 tazlito get-flavor $skel
pankso@254 89 echo "90" && sleep 1
pankso@254 90 sed -i s"/^ISO_NAME=.*/ISO_NAME=\"$name\"/" tazlito.conf
pankso@254 91 sed -i s"/^VOLUM_NAME=.*/VOLUM_NAME=\"SliTaz $name\"/" \
pankso@254 92 tazlito.conf) | progress
pankso@254 93 }
pankso@254 94
pankso@254 95 # Packages page GUI
pankso@254 96 pkgs_main() {
pankso@254 97 pkgs=$(cat $list | wc -l)
pankso@254 98 skel=$(cat $live/skel)
paul@261 99 text=$(eval_gettext "Packages - The \$skel has \$pkgs packages")
pankso@254 100 yad --form $opts --text="<b>$text</b>" --separator=" " \
psychomaniak@388 101 --field="$(gettext "Additional packages separated by space or by line:")\\n\(will be auto added to \'Edit packages list\'\)":TXT \
pankso@254 102 --button="$(gettext "Edit packages list"):2" \
psychomaniak@388 103 --button="gtk-cancel:1" --button="gtk-ok:0" --image=tazpkg
pankso@254 104 }
pankso@254 105
pankso@254 106 # Packages page handler
pankso@254 107 pkgs() {
pankso@254 108 # Store box results
pankso@254 109 main=$(pkgs_main)
pankso@254 110 # Deal with --button values
pankso@254 111 case $? in
pankso@254 112 1) exit 0 ;;
psychomaniak@388 113 2) add_to_list ; edit_list ;;
psychomaniak@388 114 *) add_to_list ;;
pankso@254 115 esac
psychomaniak@388 116 }
psychomaniak@388 117
psychomaniak@388 118 add_to_list()
psychomaniak@388 119 {
psychomaniak@388 120 for pkg in $(echo $main | sed s'/\\n/ /'g)
pankso@254 121 do
psychomaniak@388 122 vers=$(grep -E "^$pkg \|" $db/packages.desc | awk '{print $3}')
psychomaniak@388 123 [ -z $vers ] || \
psychomaniak@388 124 (grep -v -q "^$pkg-$vers" $list && \
pankso@254 125 echo "$pkg-$vers" >> $list
psychomaniak@388 126 )
psychomaniak@388 127 unset vers
pankso@254 128 done
pankso@254 129 }
pankso@254 130
pankso@254 131 # Wallpaper page GUI
pankso@254 132 wallpaper_main() {
pankso@254 133 text=$(gettext "SliTaz desktop wallpaper")
pankso@254 134 yad --form $opts --text="<b>$text</b>" --separator="" \
pankso@254 135 --field="$(gettext "Wallpaper JPG image:")":FL
pankso@254 136 }
pankso@254 137
pankso@254 138 # Wallpaper page handler
pankso@254 139 wallpaper() {
pankso@254 140 # Store box results
pankso@254 141 main=$(wallpaper_main)
pankso@254 142 # Deal with --button values
pankso@254 143 case $? in
pankso@254 144 1) exit 0 ;;
pankso@254 145 *) continue ;;
pankso@254 146 esac
pankso@254 147 if echo "$main" | fgrep -q .jpg; then
pankso@254 148 mkdir -p $addfiles/rootfs/usr/share/images
pankso@254 149 cp -f $main $addfiles/rootfs/usr/share/images
pankso@254 150 fi
pankso@254 151 }
pankso@254 152
pankso@254 153 # Last page GUI
pankso@254 154 gen_distro_main() {
pankso@254 155 info=$(gettext "
pankso@254 156 Now it's time to generate the distro. Last chance to start over or stop. \
paul@261 157 Creating a Live system uses quite a lot of resources and takes some time.
paul@261 158 Note you can still add some files to the SliTaz root filesystem or on the \
psychomaniak@388 159 cdrom.";echo
psychomaniak@388 160 echo $addfiles )
pankso@254 161 text=$(gettext "<b>Generate the distribution</b>")
pankso@254 162 echo "$info" | yad --text-info $opts --text="$text" \
pankso@254 163 --wrap --margins=20
pankso@254 164 }
pankso@254 165
pankso@254 166 # Last page handler
pankso@254 167 gen_distro() {
pankso@254 168 # Store box results
pankso@254 169 main=$(gen_distro_main)
pankso@254 170 # Deal with --button values
pankso@254 171 case $? in
pankso@254 172 1) exit 0 ;;
pankso@332 173 *)
pankso@332 174 export output=gtk
pankso@332 175 echo -e "\n" | tazlito gen-distro 2>&1 | yad \
pankso@254 176 --text-info $opts --tail \
pankso@254 177 --text="<b>$(gettext "Building the Live system...")</b>" ;;
pankso@254 178 esac
pankso@254 179 }
pankso@254 180
pankso@254 181 # Summary
pankso@254 182 summary() {
pankso@254 183 . tazlito.conf
pankso@254 184 iso_size=$(du -sh $distro/$ISO_NAME.iso | awk '{print $1}')
pankso@254 185 distro_size=$(du -sh $distro/rootfs | awk '{print $1}')
pankso@254 186 text="$(gettext "Live system summary")"
pankso@254 187 echo -e "\
pankso@254 188 $(gettext "Generated ISO ") \n$distro/$ISO_NAME.iso
pankso@254 189 $(gettext "Image size") \n$iso_size
pankso@254 190 $(gettext "Uncompressed size") \n$distro_size" | \
pankso@254 191 yad --list $opts --text="<b>$text</b>" \
pankso@254 192 --column="Information":0 --column="Value":1 \
pankso@254 193 --button="gtk-close":0
pankso@254 194 }
pankso@254 195
pankso@254 196 #
pankso@254 197 # Script commands
pankso@254 198 #
pankso@254 199
pankso@254 200 case "$1" in
pankso@254 201 usage)
pankso@254 202 echo "Usage: $(basename $0) [command]" ;;
pankso@254 203 *)
pankso@254 204 start
pankso@254 205 pkgs
pankso@254 206 wallpaper
pankso@254 207 gen_distro
pankso@254 208 summary ;;
pankso@254 209 esac
pankso@254 210
pankso@254 211 exit 0
pankso@254 212