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