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