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
|