4 imagetype=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE imagetype)
5 imagename=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE filename)
6 imageversion=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE version)
7 # prepare rpms as source and createrepo on the repositories
8 ln -sf $TOPDIR/SOURCES/repos $BUILD_ROOT/repos
9 cd $BUILD_ROOT/$TOPDIR/SOURCES/repos
11 test -L $r && continue
12 test -d $r || continue
13 repo="$TOPDIR/SOURCES/repos/$r/"
14 # create compatibility link for old kiwi versions
16 if test "$rc" != "$r" ; then
20 ln -s $rl$r "${rc%/*}/${rc##*/}"
21 repo="$TOPDIR/SOURCES/repos/${rc%/*}/${rc##*/}/"
23 if test "$imagetype" != product -a "$DO_INIT" != "false" ; then
24 echo "creating repodata for $repo"
25 if chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames --help >/dev/null 2>&1 ; then
26 chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames "$repo"
28 chroot $BUILD_ROOT createrepo "$repo"
33 for t in $BUILD_ROOT/$TOPDIR/SOURCES/root.tar* ; do
34 test -f $t || continue
35 mkdir -p $BUILD_ROOT/$TOPDIR/SOURCES/root
36 chroot $BUILD_ROOT tar -C $TOPDIR/SOURCES/root -xf "$TOPDIR/SOURCES/${t##*/}"
38 # fix script permissions
39 chmod a+x $BUILD_ROOT/$TOPDIR/SOURCES/*.sh 2>/dev/null
40 # unpack tar files in image directories
41 if test -d $BUILD_ROOT/$TOPDIR/SOURCES/images ; then
43 cd $BUILD_ROOT/$TOPDIR/SOURCES/images
45 test -L $r && continue
46 test -d $r || continue
47 for t in $r/root.tar* ; do
48 test -f $t || continue
50 chroot $BUILD_ROOT tar -C $TOPDIR/SOURCES/images/$r/root -xf "$TOPDIR/SOURCES/images/$r/${t##*/}"
52 # fix script permissions
53 chmod a+x $BUILD_ROOT/$TOPDIR/SOURCES/images/$r/*.sh 2>/dev/null
54 # create compatibility link for old kiwi versions
56 if test "$rc" != "$r" ; then
60 ln -s $rl$r "${rc%/*}/${rc##*/}"
65 rm -f $BUILD_ROOT/$TOPDIR/SOURCES/config.xml
66 ln -s $SPECFILE $BUILD_ROOT/$TOPDIR/SOURCES/config.xml
67 if test "$imagetype" = product ; then
68 echo "running kiwi --create-instsource..."
69 # runs always as abuild user
70 mkdir -p "$BUILD_ROOT/$TOPDIR/KIWIROOT"
71 chroot "$BUILD_ROOT" chown -R abuild.abuild "$TOPDIR"
72 ver=`chroot "$BUILD_ROOT" su -c "/usr/sbin/kiwi --version | sed -n 's,.*kiwi version v\(.*\),\1,p'"`
73 if [ ${ver:0:1} == "3" ]; then
74 # old style kiwi 3 builds
75 chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v --logfile terminal -p $TOPDIR/SOURCES --instsource-local --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
76 if [ ${ver:2:2} == "01" ]; then
77 ## This block is obsolete with current kiwi versions, only needed for kiwi 3.01 version
78 for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
79 test -d "$i" || continue
81 test "$n" = scripts && continue
82 test "$n" != "${n%0}" && continue
83 chroot $BUILD_ROOT su -c "suse-isolinux $TOPDIR/KIWIROOT/main/$n $TOPDIR/KIWI/$n.iso" - $BUILD_USER
87 if [ ${ver:0:1} == "4" -a ${ver:2:2} -lt 90 ]; then
88 # broken kiwi version, not accepting verbose level
89 chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v -v --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
92 chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v 2 --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
96 # move created product to correct destination
97 for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
98 test -e "$i" || continue
101 *.iso) mv $i $BUILD_ROOT/$TOPDIR/KIWI/. ;;
102 *.packages) mv $i $BUILD_ROOT/$TOPDIR/OTHER/. ;;
105 *) test -d $i && mv $i $BUILD_ROOT/$TOPDIR/KIWI/. ;;
110 if [ -z "$RUNNING_IN_VM" ]; then
111 # NOTE: this must be done with the outer system, because it loads the dm-mod kernel modules, which needs to fit to the kernel.
112 echo "starting device mapper for kiwi..."
113 [ -x /etc/init.d/boot.device-mapper ] && /etc/init.d/boot.device-mapper start
115 for imgtype in $imagetype ; do
116 echo "running kiwi --prepare for $imgtype..."
117 # Do not use $BUILD_USER here, since we always need root permissions
118 if chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && kiwi --prepare $TOPDIR/SOURCES --logfile terminal --root $TOPDIR/KIWIROOT-$imgtype $KIWI_PARAMETERS" - root < /dev/null ; then
119 echo "running kiwi --create for $imgtype..."
120 mkdir -p $BUILD_ROOT/$TOPDIR/KIWI-$imgtype
121 chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && kiwi --create $TOPDIR/KIWIROOT-$imgtype --logfile terminal --type $imgtype -d $TOPDIR/KIWI-$imgtype $KIWI_PARAMETERS" - root < /dev/null || cleanup_and_exit 1
127 # create tar.gz of images, in case it makes sense
130 if test -n "$RELEASE"; then
131 buildnum="-Build$RELEASE"
133 imageout="$imagename.$imagearch-$imageversion"
134 for imgtype in $imagetype ; do
137 cat > $BUILD_ROOT/kiwi_post.sh << EOF
138 echo "compressing oem images... "
140 # do not store compressed file _and_ uncompressed one
141 [ -e "$imageout.gz" ] && rm -f "$imageout"
142 if [ -e "$imageout.iso" ]; then
143 echo "take iso file and create sha256..."
144 mv "$imageout.iso" "/$TOPDIR/KIWI/$imageout$buildnum.iso"
146 if [ -x /usr/bin/sha256sum ]; then
147 /usr/bin/sha256sum "$imageout$buildnum.iso" > "$imageout$buildnum.iso.sha256"
151 if [ -e "$imageout.install.iso" ]; then
152 echo "take install.iso file and create sha256..."
153 mv "$imageout.install.iso" "/$TOPDIR/KIWI/$imageout$buildnum.install.iso"
155 if [ -x /usr/bin/sha256sum ]; then
156 /usr/bin/sha256sum "$imageout$buildnum.install.iso" > "$imageout$buildnum.install.iso.sha256"
160 if [ -e "$imageout.qcow2" ]; then
161 mv "$imageout.qcow2" "/$TOPDIR/KIWI/$imageout$buildnum.qcow2"
163 if [ -x /usr/bin/sha256sum ]; then
164 echo "Create sha256 file..."
165 /usr/bin/sha256sum "$imageout$buildnum.qcow2" > "$imageout$buildnum.qcow2.sha256"
169 if [ -e "$imageout.raw.install.raw" ]; then
170 compress_tool="bzip2"
171 compress_suffix="bz2"
172 if [ -x /usr/bin/xz ]; then
173 # take xz to get support for sparse files
174 compress_tool="xz -2"
177 mv "$imageout.raw.install.raw" "/$TOPDIR/KIWI/$imageout$buildnum.raw.install.raw"
179 echo "\$compress_tool raw.install.raw file..."
180 \$compress_tool "$imageout$buildnum.raw.install.raw"
181 if [ -x /usr/bin/sha256sum ]; then
182 echo "Create sha256 file..."
183 /usr/bin/sha256sum "$imageout$buildnum.raw.install.raw.\${compress_suffix}" > "$imageout$buildnum.raw.install.raw.\${compress_suffix}.sha256"
187 if [ -e "$imageout.raw" ]; then
188 compress_tool="bzip2"
189 compress_suffix="bz2"
190 if [ -x /usr/bin/xz ]; then
191 # take xz to get support for sparse files
192 compress_tool="xz -2"
195 mv "$imageout.raw" "/$TOPDIR/KIWI/$imageout$buildnum.raw"
197 echo "\$compress_tool raw file..."
198 \$compress_tool "$imageout$buildnum.raw"
199 if [ -x /usr/bin/sha256sum ]; then
200 echo "Create sha256 file..."
201 /usr/bin/sha256sum "$imageout$buildnum.raw.\${compress_suffix}" > "$imageout$buildnum.raw.\${compress_suffix}.sha256"
206 tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-raw.tar.bz2" \
207 --exclude="$imageout.iso" --exclude="$imageout.raw" --exclude="$imageout.qcow2" *
209 if [ -x /usr/bin/sha256sum ]; then
210 /usr/bin/sha256sum "$imageout$buildnum-raw.tar.bz2" > "$imageout$buildnum-raw.tar.bz2.sha256"
215 cat > $BUILD_ROOT/kiwi_post.sh << EOF
216 echo "compressing vmx images... "
218 for suffix in "ovf" "qcow2" "ova"; do
219 if [ -e "$imageout.\$suffix" ]; then
220 mv "$imageout.\$suffix" "/$TOPDIR/KIWI/$imageout$buildnum.\$suffix"
222 if [ -x /usr/bin/sha256sum ]; then
223 echo "Create sha256 \$suffix file..."
224 /usr/bin/sha256sum "$imageout$buildnum.\$suffix" > "$imageout$buildnum.\$suffix.sha256"
229 # This option has a number of format parameters
232 for i in "$imageout.vmx" "$imageout.vmdk" "$imageout-disk*.vmdk"; do
233 test -e \$i && VMXFILES="\$VMXFILES \$i"
235 # take raw files as fallback
236 if [ -n "\$VMXFILES" ]; then
237 tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" \$VMXFILES
238 SHAFILES="\$SHAFILES $imageout$buildnum-vmx.tar.bz2"
239 elif [ -e "$imageout.raw" ]; then
240 compress_tool="bzip2"
241 compress_suffix="bz2"
242 if [ -x /usr/bin/xz ]; then
243 # take xz to get support for sparse files
244 compress_tool="xz -2"
247 mv "$imageout.raw" "/$TOPDIR/KIWI/$imageout$buildnum-vmx.raw"
249 echo "\$compress_tool raw file..."
250 \$compress_tool "$imageout$buildnum-vmx.raw"
251 SHAFILES="\$SHAFILES $imageout$buildnum-vmx.raw.\${compress_suffix}"
254 if [ -e "$imageout.xenconfig" ]; then
255 tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" $imageout.xenconfig $imageout.raw initrd-*
256 SHAFILES="\$SHAFILES $imageout$buildnum-vmx.tar.bz2"
258 # FIXME: do we need a single .raw file in any case ?
261 if [ -n "\$SHAFILES" -a -x /usr/bin/sha256sum ]; then
262 for i in \$SHAFILES; do
263 echo "Create sha256 file..."
264 /usr/bin/sha256sum "\$i" > "\$i.sha256"
270 cat > $BUILD_ROOT/kiwi_post.sh << EOF
271 echo "compressing xen images... "
273 # do not store compressed file _and_ uncompressed one
274 [ -e "$imageout.gz" ] && rm -f "$imageout"
275 tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-xen.tar.bz2" \
276 `grep ^kernel $imageout.xenconfig | cut -d'"' -f2` \
277 `grep ^ramdisk $imageout.xenconfig | cut -d'"' -f2` \
279 "$imageout.xenconfig" \
281 if [ -x /usr/bin/sha256sum ]; then
282 echo "Create sha256 file..."
284 /usr/bin/sha256sum "$imageout$buildnum-xen.tar.bz2" > "$imageout$buildnum-xen.tar.bz2.sha256"
289 cat > $BUILD_ROOT/kiwi_post.sh << EOF
290 echo "compressing pxe images... "
292 # do not store compressed file _and_ uncompressed one
293 [ -e "$imageout.gz" ] && rm -f "$imageout"
294 tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-pxe.tar.bz2" ${imageout}* initrd-*
295 if [ -x /usr/bin/sha256sum ]; then
296 echo "Create sha256 file..."
298 /usr/bin/sha256sum "$imageout$buildnum-pxe.tar.bz2" > "$imageout$buildnum-pxe.tar.bz2.sha256"
303 cat > $BUILD_ROOT/kiwi_post.sh << EOF
306 mv "\$i" "/$TOPDIR/KIWI/\${i%.iso}$buildnum.iso"
308 if [ -x /usr/bin/sha256sum ]; then
309 echo "creating sha256 sum for iso images... "
312 /usr/bin/sha256sum "\$i" > "\$i.sha256"
318 cat > $BUILD_ROOT/kiwi_post.sh << EOF
321 file=\$(readlink -f "\$i")
322 [ -z "\$file" ] && echo readlink failed for $i
323 mv "\$file" "/$TOPDIR/KIWI/\${i%.tbz}$buildnum.tbz"
325 if [ -x /usr/bin/sha256sum ]; then
326 echo "creating sha256 sum for tar balls... "
329 /usr/bin/sha256sum "\$i" > "\$i.sha256"
335 cat > $BUILD_ROOT/kiwi_post.sh << EOF
336 echo "compressing unkown images... "
337 cd /$TOPDIR/KIWI-$imgtype
338 # do not store compressed file _and_ uncompressed one
339 [ -e "$imageout.gz" ] && rm -f "$imageout"
340 tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-$imgtype.tar.bz2" *
341 if [ -x /usr/bin/sha256sum ]; then
342 echo "Create sha256 file..."
344 /usr/bin/sha256sum "$imageout$buildnum-$imgtype.tar.bz2" > "$imageout$buildnum-$imgtype.tar.bz2.sha256"
349 cat >> $BUILD_ROOT/kiwi_post.sh << EOF
350 cd /$TOPDIR/KIWI-$imgtype
351 if [ -e "$imageout.packages" ]; then
352 echo "Found kiwi package list file, exporting as well..."
353 cp "$imageout.packages" "/$TOPDIR/OTHER/$imageout$buildnum-$imgtype.packages"
355 if [ -e "$imageout.verified" ]; then
356 echo "Found rpm verification report, exporting as well..."
357 cp "$imageout.verified" "/$TOPDIR/OTHER/$imageout$buildnum-$imgtype.verified"
360 chroot $BUILD_ROOT su -c "sh -e /kiwi_post.sh" || cleanup_and_exit 1
361 rm -f $BUILD_ROOT/kiwi_post.sh
364 # Hook for running post kiwi build scripts like QA scripts if installed
365 if [ -x $BUILD_ROOT/usr/lib/build/kiwi_post_run ]; then
366 chroot $BUILD_ROOT su -c /usr/lib/build/kiwi_post_run || cleanup_and_exit 1