slitaz-dev-tools annotate mirror-tools/rootfs/usr/bin/mkpkgiso @ rev 308

mkpkgiso: fix broken hg repos
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri May 18 15:57:37 2018 +0200 (2018-05-18)
parents cbddfd886247
children a6b28f1e53eb
rev   line source
slaxemulator@6 1 #!/bin/sh
slaxemulator@6 2 # mkpkgiso, build packages ISO image.
slaxemulator@6 3 # (C) 2007-TODAY SliTaz - GNU General Public License v3.
slaxemulator@6 4 #
slaxemulator@6 5 # Authors : Eric Joseph-Alexandre <erjo@slitaz.org>
slaxemulator@6 6 # Pascal Bellard <pascal.bellard@slitaz.org>
slaxemulator@6 7
slaxemulator@6 8 VERSION=0.9
slaxemulator@6 9
slaxemulator@6 10 PKG_VER=$1
slaxemulator@6 11 ROOT=/home/slitaz/iso
slaxemulator@6 12 REPOS=/var/www/slitaz/mirror/packages/$PKG_VER
slaxemulator@6 13 SOURCES=/var/www/slitaz/mirror/sources/packages
slaxemulator@6 14 IFMEM_C32=/var/www/slitaz/mirror/pxe/ifmem.c32
slaxemulator@6 15 ISO_DIR=/var/www/slitaz/mirror/iso/$PKG_VER
slaxemulator@6 16
slaxemulator@6 17 [ -s /etc/slitaz/mkpkgiso.conf ] && . /etc/slitaz/mkpkgiso.conf
slaxemulator@6 18 [ -s ./mkpkgiso.conf ] && . ./mkpkgiso.conf
slaxemulator@6 19
slaxemulator@6 20 SORT_DIR=${ROOT}/_iso.$$
slaxemulator@6 21 TEMP_DIR=${ROOT}/_iso.$$
slaxemulator@6 22 SORT_FILE=${ROOT}/_sort.$$
slaxemulator@6 23 shift
slaxemulator@6 24 OPTIONS=$@
slaxemulator@6 25 PKG_DIR=$TEMP_DIR/packages/$PKG_VER
slaxemulator@6 26 SRC_DIR=$TEMP_DIR/src
slaxemulator@6 27 LOG=$PWD/$(basename $0).log
slaxemulator@6 28
slaxemulator@6 29 #
slaxemulator@6 30 VOLUME_ID="packages-${PKG_VER}"
slaxemulator@6 31 PUBLISHER="SliTaz http://www.slitaz.org/"
slaxemulator@6 32 IMAGE="packages-${PKG_VER}.iso"
slaxemulator@6 33 case " $@ " in
slaxemulator@6 34 *\ --sources\ *)
slaxemulator@6 35 IMAGE="sources-${PKG_VER}.iso" ;;
slaxemulator@6 36 esac
slaxemulator@6 37 OUTPUT="$ROOT/$IMAGE"
slaxemulator@6 38
slaxemulator@6 39 # Check command line option.
slaxemulator@6 40 if [ -z $PKG_VER ]; then
slaxemulator@6 41 cat <<EOT
slaxemulator@6 42 Usage: $(basename $0) <Version>
slaxemulator@6 43 [--boot [--auto-install] [--loram-detect]]|--webboot] [--filter]
slaxemulator@6 44 [--wok] [--wok-stable] [--website] [--sources] [--dry-run]
slaxemulator@6 45 $(basename $0) update-hg <dir>
slaxemulator@6 46 Example:
slaxemulator@6 47 $(basename $0) cooking --boot --auto-install --loram-detect --filter --wok --website --sources
slaxemulator@6 48 EOT
slaxemulator@6 49 exit 1
slaxemulator@6 50 fi
slaxemulator@6 51
slaxemulator@6 52 # Update hg repos
slaxemulator@6 53 if [ "$PKG_VER" == "update-hg" ]; then
pascal@220 54 for repos in $@ ; do
pascal@220 55 for i in $repos/* ; do
pascal@220 56 grep -qs '\[paths]' $i/.hg/hgrc || continue
pascal@220 57 cd $i
pascal@308 58 if hg pull -u 2>&1 | grep -q abort ; then
pascal@308 59 cd - > /dev/null
pascal@308 60 cd $repos
pascal@308 61 mv $(basename $i) $(basename $i)-DEAD
pascal@308 62 hg clone http://hg.slitaz.org/$(basename $i)
pascal@308 63 cp $(basename $i)-DEAD/.hg/hgrc \
pascal@308 64 $(basename $i)/.hg/hgrc
pascal@308 65 rm -rf $(basename $i)-DEAD
pascal@308 66 fi
pascal@220 67 cd - > /dev/null
pascal@220 68 case "$i" in
pascal@241 69 */get-scripts)
pascal@241 70 rsync -a $i/* /var/www/slitaz/mirror/packages/get
pascal@241 71 for j in /var/www/slitaz/mirror/packages/get/* ; do
pascal@241 72 {
pascal@241 73 basename $j
pascal@242 74 for k in SHORT_DESC WEB_SITE CATEGORY VERSION LICENSE ; do
pascal@242 75 echo "|$(head -n 6 $j | sed \
pascal@242 76 "/^$k=/!d;s/$k=//;s/\"\\([^\"]*\\).*/\\1/")"
pascal@242 77 done
pascal@308 78 } | sed "s/'/\\\\'/" | sed "s|\$PACKAGE|$(basename $j)|" | xargs echo
pascal@242 79 done | sed 's/ |/|/g' > /var/www/slitaz/mirror/packages/get.list
al@243 80 chmod a+r /var/www/slitaz/mirror/packages/get.list
pascal@220 81 esac
pascal@220 82 done
slaxemulator@6 83 done
slaxemulator@6 84 exit 1
slaxemulator@6 85 fi
slaxemulator@6 86
paul@151 87 # Check if we provide a valid version
slaxemulator@6 88 if [ ! -d $REPOS ]; then
slaxemulator@6 89 echo "Boooh! $PKG_VER is not a valid version."
slaxemulator@6 90 exit 1
slaxemulator@6 91 fi
slaxemulator@6 92
slaxemulator@6 93 # Status function.
slaxemulator@6 94 status()
slaxemulator@6 95 {
slaxemulator@6 96 local CHECK=$?
slaxemulator@6 97 echo -en "\\033[70G[ "
slaxemulator@6 98 if [ $CHECK = 0 ]; then
slaxemulator@6 99 echo -en "\\033[1;33mOK"
slaxemulator@6 100 else
slaxemulator@6 101 echo -en "\\033[1;31mFailed"
slaxemulator@6 102 fi
slaxemulator@6 103 echo -e "\\033[0;39m ]"
slaxemulator@6 104 }
slaxemulator@6 105
slaxemulator@6 106 need()
slaxemulator@6 107 {
slaxemulator@6 108 found=1
slaxemulator@6 109 for i in $@ ; do
slaxemulator@6 110 [ -s $i ] && continue
slaxemulator@6 111 echo "Missing: $i "
slaxemulator@6 112 found=0
slaxemulator@6 113 done
slaxemulator@6 114 [ $found -ne 0 ] && return
slaxemulator@6 115 status
slaxemulator@6 116 rm -rf $TEMP_DIR $SORT_FILE
slaxemulator@6 117 exit 1
slaxemulator@6 118 }
slaxemulator@6 119
slaxemulator@6 120 # Create temp directory
slaxemulator@6 121 mkdir -p $TEMP_DIR/packages/$PKG_VER
slaxemulator@6 122 which genisoimage > /dev/null || need /usr/bin/genisoimage
slaxemulator@6 123
slaxemulator@6 124 # Prepare evrything for ISO
slaxemulator@6 125
slaxemulator@6 126 echo ""
slaxemulator@6 127 echo "Building ISO for packages $PKG_VER"
slaxemulator@6 128 echo "==============================================================================="
slaxemulator@6 129 echo -n "Creating working dir $(basename $TEMP_DIR)"
slaxemulator@6 130 status
slaxemulator@6 131 echo -n "Creating symlink"
slaxemulator@6 132 status
slaxemulator@6 133
slaxemulator@6 134 # Link every packages to temp dir
slaxemulator@6 135 cd $PKG_DIR
slaxemulator@6 136 for i in $REPOS/*
slaxemulator@6 137 do
slaxemulator@6 138 ln -s $i >> $LOG 2>&1
slaxemulator@6 139 done
slaxemulator@6 140
slaxemulator@6 141 echo -n "Creating install script"
slaxemulator@6 142 # Create install script as suggested by Pascal.
slaxemulator@6 143 cat >$TEMP_DIR/install.sh<<EOF
slaxemulator@6 144 #!/bin/sh
slaxemulator@6 145 #
slaxemulator@6 146
slaxemulator@6 147 DIR=\$(cd \$(busybox dirname \$0); pwd)
slaxemulator@6 148
slaxemulator@6 149 # Handle --auto-install case
slaxemulator@6 150 if [ "\$DIR" == "/etc/init.d" ]; then
slaxemulator@6 151 DIR=/cdrom
slaxemulator@6 152 if [ ! -f /cdrom/install.sh ]; then
slaxemulator@6 153 mkdir /cdrom 2> /dev/null
slaxemulator@6 154 mount --bind /mnt /cdrom
slaxemulator@6 155 fi
slaxemulator@6 156 # Handle loram on hybrid hard disk / usb key case
slaxemulator@6 157 if [ ! -d /usr/bin ]; then
slaxemulator@6 158 echo ""
slaxemulator@6 159 if [ -d /.usr.rw ]; then
slaxemulator@6 160 echo -n "Mounting /usr read-write... "
slaxemulator@6 161 usr=.usr.ro
slaxemulator@6 162 else
slaxemulator@6 163 echo -n "Mounting /usr read-only... "
slaxemulator@6 164 usr=usr
slaxemulator@6 165 fi
slaxemulator@6 166 FS=\$DIR/usr.cromfs
slaxemulator@6 167 if [ -f \$FS ]; then
slaxemulator@6 168 /bin/cromfs-driver \$FS /\$usr -o ro,dev,suid,allow_other
slaxemulator@6 169 elif [ -f \$DIR/usr.sqfs ]; then
slaxemulator@6 170 FS=\$DIR/usr.sqfs
slaxemulator@6 171 mount -o loop,ro -t squashfs \$FS /\$usr
slaxemulator@6 172 elif [ -L /\$usr ]; then
slaxemulator@6 173 FS=\$DIR/usr
slaxemulator@6 174 fi
slaxemulator@6 175 status
slaxemulator@6 176 if [ -d /.usr.rw ]; then
slaxemulator@6 177 if [ -x /bin/funionfs ]; then
slaxemulator@6 178 /bin/funionfs -o dirs=/.usr.ro=RO:/.usr.rw -o allow_other -o suid,dev NONE /usr
slaxemulator@6 179 else
slaxemulator@6 180 /bin/mount -t aufs -o br:/.usr.rw:/.usr.ro none /usr
slaxemulator@6 181 fi
slaxemulator@6 182 fi
slaxemulator@6 183 fi
slaxemulator@6 184 fi
slaxemulator@6 185
slaxemulator@6 186 [ -d /var/cache/tazpkg ] || mkdir -p /var/cache/tazpkg
slaxemulator@6 187 ls -d \$DIR/packages/* > /var/lib/tazpkg/mirror
slaxemulator@6 188 ln -fs \$DIR/packages/*/*.tazpkg /var/cache/tazpkg/
slaxemulator@6 189 ln -fs \$DIR/packages/*/packages.* /var/lib/tazpkg
slaxemulator@6 190 echo ""
slaxemulator@6 191 echo "=> all $PKG_VER packages are available for tazpkg/tazpkgbox"
slaxemulator@6 192 EOF
slaxemulator@6 193 [ -e files.list.lzma ] && cat >>$TEMP_DIR/install.sh<<EOF
slaxemulator@6 194 ln -fs \$DIR/packages/*/files.list.lzma /var/lib/tazpkg
slaxemulator@6 195 EOF
slaxemulator@6 196
slaxemulator@6 197 status
slaxemulator@6 198 cat > $SORT_FILE <<EOT
slaxemulator@6 199 $SORT_DIR/install.sh -4000
slaxemulator@6 200 $SORT_DIR/README -4000
slaxemulator@6 201 $SORT_DIR/index.html -4000
slaxemulator@6 202 $SORT_DIR/md5sum -4000
slaxemulator@6 203 $SORT_DIR/style.css -4000
slaxemulator@6 204 $SORT_DIR/images/header.png -4000
slaxemulator@6 205 $SORT_DIR/boot/bzImage 2
slaxemulator@6 206 $SORT_DIR/boot/rootfs.gz 1
slaxemulator@6 207 $SORT_DIR/packages -9000
slaxemulator@6 208 EOT
slaxemulator@6 209 ( cd $ROOT; ls $SORT_DIR/packages/*/packages* $SORT_DIR/packages/*/files.list.lzma ) | \
slaxemulator@6 210 awk '{ printf "%s -7000\n",$0 }' >> $SORT_FILE
slaxemulator@6 211 chmod 755 $TEMP_DIR/install.sh
slaxemulator@6 212
slaxemulator@6 213 case " $OPTIONS " in
slaxemulator@6 214 *\ --filter\ *)
slaxemulator@6 215 SIZE=0
slaxemulator@6 216 for i in *.tazpkg; do
slaxemulator@6 217 while read f; do
slaxemulator@6 218 case "$i" in
slaxemulator@6 219 $f*) continue 2;;
slaxemulator@6 220 esac
slaxemulator@6 221 done < packages.list
paul@31 222 echo -n "Filtering out $i ($(du -hs $(readlink $i) | awk '{ print $1 }'))..."
slaxemulator@6 223 SIZE=$(( $SIZE + $(stat -c %s $(readlink $i)) ))
slaxemulator@6 224 rm $i
slaxemulator@6 225 status
slaxemulator@6 226 done
slaxemulator@6 227 UNIT=" bytes"
slaxemulator@6 228 if [ $SIZE -gt 10240 ]; then
slaxemulator@6 229 SIZE=$(( $SIZE / 1024 ))
slaxemulator@6 230 UNIT="K"
slaxemulator@6 231 fi
slaxemulator@6 232 if [ $SIZE -gt 10240 ]; then
slaxemulator@6 233 SIZE=$(( $SIZE / 1024 ))
slaxemulator@6 234 UNIT="M"
slaxemulator@6 235 fi
slaxemulator@6 236 echo "$SIZE$UNIT removed.";;
slaxemulator@6 237 esac
slaxemulator@6 238
slaxemulator@6 239 # Copy hg subtree
slaxemulator@6 240 get_from_hg()
slaxemulator@6 241 {
slaxemulator@6 242 echo -n "Adding $2"
slaxemulator@6 243 if [ -s /home/slitaz/$1/.hg/hgrc ]; then
slaxemulator@6 244 cp -a /home/slitaz/$1 $TEMP_DIR
slaxemulator@6 245 else
slaxemulator@6 246 wget -q -O - http://hg.slitaz.org/$1/archive/tip.tar.bz2 | tar xjf - -C $TEMP_DIR
slaxemulator@6 247 mv $TEMP_DIR/$1-* $TEMP_DIR/$1
slaxemulator@6 248 fi
slaxemulator@6 249 status
slaxemulator@6 250 echo "$(du -hs $TEMP_DIR/$1 | awk '{ print $1 }') used by $2."
slaxemulator@6 251 }
slaxemulator@6 252
slaxemulator@6 253 for i in $OPTIONS ; do
slaxemulator@6 254 case "$i" in
slaxemulator@6 255 --wok)
slaxemulator@6 256 cat >>$TEMP_DIR/install.sh<<EOF
slaxemulator@6 257 mkdir -p /home/slitaz
slaxemulator@6 258 ln -s \$DIR/wok /home/slitaz
slaxemulator@6 259 echo "=> Wok (cooking) is in /home/slitaz/wok"
slaxemulator@6 260 EOF
slaxemulator@6 261 if get_from_hg wok "wok (cooking)"; then
slaxemulator@6 262 echo "$SORT_DIR/wok -8000" >> $SORT_FILE
slaxemulator@6 263 fi;;
slaxemulator@6 264 --wok-stable)
slaxemulator@6 265 cat >>$TEMP_DIR/install.sh<<EOF
slaxemulator@6 266 mkdir -p /home/slitaz
slaxemulator@6 267 ln -s \$DIR/wok /home/slitaz
slaxemulator@6 268 echo "=> Wok (stable) is in /home/slitaz/wok"
slaxemulator@6 269 EOF
slaxemulator@6 270 if get_from_hg wok-stable "wok (stable)"; then
slaxemulator@6 271 mv $TEMP_DIR/wok-stable $TEMP_DIR/wok
slaxemulator@6 272 echo "$SORT_DIR/wok -8000" >> $SORT_FILE
slaxemulator@6 273 fi;;
slaxemulator@6 274 --website)
slaxemulator@6 275 if get_from_hg website "web site"; then
slaxemulator@6 276 echo "$SORT_DIR/website -6000" >> $SORT_FILE
slaxemulator@6 277 cat >>$TEMP_DIR/install.sh<<EOF
pascal@130 278 if [ -s \$DIR/website/index.html ]; then
pascal@130 279 echo "=> slitaz web site installed in file://\$DIR/website/index.html"
pascal@130 280 elif [ -s \$DIR/website/index.php ]; then
pascal@130 281 yes y | tazpkg get-install php
pascal@130 282 ln -s /\$DIR/website /var/www
pascal@130 283 echo "=> slitaz web site installed in http://127.0.0.1/website/index.php"
pascal@130 284 else
pascal@130 285 echo "=> slitaz web site is not installed. How can I do it ?"
pascal@130 286 fi
slaxemulator@6 287 EOF
slaxemulator@6 288 fi;;
slaxemulator@6 289 --sources)
slaxemulator@6 290 echo -n "Removing previous ISO..."
slaxemulator@6 291 rm -f $OUTPUT
slaxemulator@6 292 status
slaxemulator@6 293 cat >>$TEMP_DIR/install.sh<<EOF
slaxemulator@6 294 mkdir -p /home/slitaz
slaxemulator@6 295 ln -s \$DIR/src /home/slitaz
slaxemulator@6 296 echo "=> sources are in /home/slitaz/src"
slaxemulator@6 297 EOF
slaxemulator@6 298 mkdir -p $SRC_DIR
slaxemulator@6 299 cd $SRC_DIR
slaxemulator@6 300 for i in $SOURCES/*/*
slaxemulator@6 301 do
slaxemulator@6 302 case "$i" in
slaxemulator@6 303 */md5sum) continue;;
slaxemulator@6 304 esac
slaxemulator@6 305 ln -s $i >> $LOG 2>&1
slaxemulator@6 306 done
pascal@241 307 find * -not -type d -not -name md5sum -print0 | xargs -0 md5sum > md5sum
slaxemulator@6 308 echo "$(du -hs $SOURCES | awk '{ print $1 }') used by sources." ;;
slaxemulator@6 309 esac
slaxemulator@6 310 done
slaxemulator@6 311
slaxemulator@6 312 # Extract boot package function
slaxemulator@6 313 extract_boot()
slaxemulator@6 314 {
slaxemulator@6 315 f=$(ls $REPOS/$1-[0-9]*.tazpkg 2> /dev/null)
slaxemulator@6 316 [ -f "$f" ] || return 1
slaxemulator@6 317 [ -d $TEMP_DIR/boot ] || mkdir $TEMP_DIR/boot
pascal@131 318 ( cd $TEMP_DIR/boot ; cpio -i fs.cpio.gz fs.cpio.lzma < $f 2> /dev/null )
pascal@131 319 ( cd $TEMP_DIR/boot ; { zcat fs.cpio.gz || unlzma -c fs.cpio.lzma ; } | cpio -id 2> /dev/null )
slaxemulator@6 320 mv $TEMP_DIR/boot/fs/boot/* $TEMP_DIR/boot
pascal@131 321 rm -rf $TEMP_DIR/boot/fs.cpio.* $TEMP_DIR/boot/fs
slaxemulator@6 322 return 0
slaxemulator@6 323 }
slaxemulator@6 324
pascal@308 325 # Build hybdrid shell/mbr boot
pascal@308 326 shhybrid()
pascal@308 327 {
pascal@308 328 blkuuid="$(blkid $1 | sed 's/UUID=/!d;/.* UUID="\([^"]*\).*/\1/')"
pascal@308 329 [ "$blkuuid" ] || blkuuid="$(blkid $1 | sed 's/.* \(LABEL="[^"]*"\).*/\1/')"
pascal@308 330 echo -e "#\xE4\x73\x1C\nexec sed 1,/^#@/d/^#%/q \$0" | dd of=$1 conv=notrunc 2>/dev/null
pascal@308 331 dd bs=512 seek=1 conv=notrunc of=$1 2>/dev/null <<EOT
pascal@308 332
pascal@308 333 #@
pascal@308 334 #!/bin/sh
pascal@308 335
pascal@308 336 dev=\$({ blkid $(basename $1); blkid; } | sed '/$blkuuid/!d;s/:.*//;q')
pascal@308 337
pascal@308 338 if [ -n "\$dev" ]; then
pascal@308 339 mkdir -p /mnt/packages
pascal@308 340 mount -t iso9660 -o loop,ro \$dev /mnt/packages
pascal@308 341 /mnt/packages/install.sh
pascal@308 342 fi
pascal@308 343 #%
pascal@308 344 EOT
pascal@308 345 }
pascal@308 346
slaxemulator@6 347 # Gen boot part
slaxemulator@6 348 BOOT_OPT=""
slaxemulator@6 349 iso=$ISO_DIR/slitaz-$PKG_VER.iso
slaxemulator@6 350 for i in slitaz-loram-cdrom-sqfs slitaz-$PKG_VER-loram-cdrom ; do
slaxemulator@6 351 isoloram=$ISO_DIR/flavors/$i.iso
slaxemulator@6 352 [ -s $isoloram ] && break
slaxemulator@6 353 done
slaxemulator@6 354 case " $OPTIONS " in
slaxemulator@6 355 *\ --boot\ *)
slaxemulator@6 356 echo -n "Creating boot tree"
slaxemulator@6 357 need $iso
slaxemulator@6 358 which isoinfo > /dev/null || need /usr/bin/isoinfo
slaxemulator@6 359 isoinfo -R -l -i $iso | awk '/^Directory/ { path=$4 } /^-/ { print path$12 }' | while read file; do
slaxemulator@6 360 [ "$(basename $file)" == ".." ] && continue
slaxemulator@6 361 [ "$file" = "/boot/isolinux/boot.cat" ] && continue
slaxemulator@6 362 [ -d "$(dirname $TEMP_DIR/$file)" ] ||
slaxemulator@6 363 mkdir -p "$(dirname $TEMP_DIR/$file)"
slaxemulator@6 364 isoinfo -R -x "$file" -i $iso > "$TEMP_DIR/$file"
slaxemulator@6 365 done
slaxemulator@6 366 if [ -f "$(echo $TEMP_DIR/boot/vmlinuz*)" ]; then
slaxemulator@6 367 rm -f $TEMP_DIR/boot/bzImage
slaxemulator@6 368 ln $TEMP_DIR/boot/vmlinuz* $TEMP_DIR/boot/bzImage
slaxemulator@6 369 fi
slaxemulator@6 370 status
slaxemulator@6 371 BOOT_OPT="-sort $SORT_FILE -b boot/isolinux/isolinux.bin \
slaxemulator@6 372 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table"
slaxemulator@6 373 case " $OPTIONS " in
slaxemulator@6 374 *\ --auto-install\ *)
paul@31 375 echo -n "Enabling auto install"
slaxemulator@6 376 sed -i "s/rw root/rw config=LABEL=packages-$PKG_VER,install.sh root/" \
slaxemulator@6 377 $TEMP_DIR/boot/isolinux/*.cfg
slaxemulator@6 378 status
slaxemulator@6 379 ;;
slaxemulator@6 380 esac
slaxemulator@6 381 case " $OPTIONS " in
slaxemulator@6 382 *\ --loram-detect\ *)
paul@31 383 echo -n "Enabling loram autodetection"
slaxemulator@6 384 need $IFMEM_C32 $isoloram
slaxemulator@6 385 which isoinfo > /dev/null || need /usr/bin/isoinfo
slaxemulator@6 386 cp $IFMEM_C32 "$TEMP_DIR/boot/isolinux"
slaxemulator@6 387 isoinfo -R -x "/usr.sqfs" -i $isoloram \
slaxemulator@6 388 > "$TEMP_DIR/usr.sqfs" 2> /dev/null
slaxemulator@6 389 if [ -s "$TEMP_DIR/usr.sqfs" ]; then
slaxemulator@6 390 echo "$SORT_DIR/usr.sqfs -5000" >> $SORT_FILE
slaxemulator@6 391 else
slaxemulator@6 392 rm -f "$TEMP_DIR/usr.sqfs"
slaxemulator@6 393 isoinfo -R -x "/rootfs.gz" -i $isoloram \
slaxemulator@6 394 > "$TEMP_DIR/rootfs.gz" 2> /dev/null
slaxemulator@6 395 echo "$SORT_DIR/rootfs.gz -5000" >> $SORT_FILE
slaxemulator@6 396 fi
slaxemulator@6 397 isoinfo -R -x "/boot/rootfs.gz" -i $isoloram > \
slaxemulator@6 398 "$TEMP_DIR/boot/loram.gz"
slaxemulator@6 399 cat >> $TEMP_DIR/boot/isolinux/common.cfg <<EOT
slaxemulator@6 400 label noram
slaxemulator@6 401 config noram.cfg
slaxemulator@6 402 EOT
slaxemulator@6 403 cat >> $TEMP_DIR/boot/isolinux/noram.cfg <<EOT
slaxemulator@6 404 display isolinux.msg
slaxemulator@6 405 say Not enough RAM to boot slitaz.
slaxemulator@6 406 default reboot
slaxemulator@6 407 label reboot
slaxemulator@6 408 com32 reboot.c32
slaxemulator@6 409
slaxemulator@6 410 implicit 0
slaxemulator@6 411 prompt 1
slaxemulator@6 412 timeout 80
slaxemulator@6 413 F1 help.txt
slaxemulator@6 414 F2 options.txt
slaxemulator@6 415 F3 isolinux.msg
slaxemulator@6 416 F4 display.txt
slaxemulator@6 417 F5 enhelp.txt
slaxemulator@6 418 F6 enopts.txt
slaxemulator@6 419 EOT
slaxemulator@6 420 sed -i -e 's|kernel /boot/bzImage|kernel /boot/isolinux/ifmem.c32\n\tappend 160768 core 29696 loram noram\n|' \
slaxemulator@6 421 -e "s|\\(.*/\\)rootfs\\(.gz .*\\)\$|label core\\n\\tkernel /boot/bzImage\\n\\1rootfs\\2\\n\\nlabel loram\\n\\tkernel /boot/bzImage\\n\\1loram\\2 loram=LABEL=packages-$PKG_VER,|" \
slaxemulator@6 422 $TEMP_DIR/boot/isolinux/*.cfg
slaxemulator@6 423 status
slaxemulator@6 424 ;;
slaxemulator@6 425 esac
slaxemulator@6 426 echo "$SORT_DIR/boot 0" >> $SORT_FILE
slaxemulator@6 427 ;;
slaxemulator@6 428 *\ --webboot\ *)
slaxemulator@6 429 if extract_boot gpxe; then
slaxemulator@6 430 echo -n "Creating web boot tree"
slaxemulator@6 431 which isoinfo > /dev/null || need /usr/bin/isoinfo
slaxemulator@6 432 mkdir $TEMP_DIR/boot/isolinux/
slaxemulator@6 433 isoinfo -R -x "/boot/isolinux/isolinux.bin" -i $iso > \
slaxemulator@6 434 $TEMP_DIR/boot/isolinux/isolinux.bin
slaxemulator@6 435 mv $TEMP_DIR/boot/gpxe $TEMP_DIR/boot/isolinux
slaxemulator@6 436 echo "$SORT_DIR/boot 0" >> $SORT_FILE
slaxemulator@6 437 cat > $TEMP_DIR/boot/isolinux/isolinux.cfg <<EOT
slaxemulator@6 438 default gpxe
slaxemulator@6 439 append http://mirror.slitaz.org/pxe/pxelinux.0
slaxemulator@6 440 EOT
slaxemulator@6 441 status
slaxemulator@6 442 BOOT_OPT="-sort $SORT_FILE -b boot/isolinux/isolinux.bin \
slaxemulator@6 443 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table"
slaxemulator@6 444 fi
slaxemulator@6 445 ;;
slaxemulator@6 446 esac
slaxemulator@6 447
slaxemulator@6 448 if [ -n "$BOOT_OPT" ]; then
slaxemulator@6 449 echo "$(du -chs $TEMP_DIR/boot $TEMP_DIR/usr.sqfs 2> /dev/null | \
slaxemulator@6 450 awk 'END { print $1 }') used by boot."
slaxemulator@6 451 fi
slaxemulator@6 452
slaxemulator@6 453 case " $OPTIONS " in
slaxemulator@6 454 *\ --dry-run\ *)
slaxemulator@6 455 echo "Please check and remove $TEMP_DIR and $SORT_FILE"
slaxemulator@6 456 exit
slaxemulator@6 457 ;;
slaxemulator@6 458 esac
slaxemulator@6 459 # Gen ISO
slaxemulator@6 460 echo -n "Generating iso image"
slaxemulator@6 461 genisoimage -R -J -f -V $VOLUME_ID \
slaxemulator@6 462 -P "$PUBLISHER" -md5-list $REPOS/packages.md5 \
slaxemulator@6 463 -quiet -o $OUTPUT $BOOT_OPT $TEMP_DIR
slaxemulator@6 464 status
slaxemulator@6 465
slaxemulator@6 466 echo "$(du -hs $OUTPUT | awk '{ print $1 }') used by iso image."
slaxemulator@6 467
slaxemulator@6 468 cd ${ROOT}
paul@31 469 echo -n "Creating hybrid DVD/CDROM"
pascal@131 470 ISOHYBRID=isohybrid.sh
pascal@131 471 which isohybrid > /dev/null && ISOHYBRID=isohybrid
pascal@131 472 which $ISOHYBRID > /dev/null && $ISOHYBRID $IMAGE 2> /dev/null
slaxemulator@6 473 status
slaxemulator@6 474
pascal@308 475 echo -n "Creating hybrid shell/mbr"
pascal@308 476 shhybrid $IMAGE
pascal@308 477 status
pascal@308 478
paul@31 479 echo -n "Calculating md5sum"
slaxemulator@6 480 md5sum $IMAGE > $(basename $IMAGE .iso).md5
slaxemulator@6 481 status
slaxemulator@6 482
slaxemulator@6 483 echo -n "Moving file to mirror"
slaxemulator@6 484 mv $IMAGE $ISO_DIR
slaxemulator@6 485 mv $(basename $IMAGE .iso).md5 $ISO_DIR
slaxemulator@6 486 status
slaxemulator@6 487
slaxemulator@6 488 # Cleaning temp files
slaxemulator@6 489 rm -rf $TEMP_DIR $SORT_FILE
slaxemulator@6 490