# HG changeset patch # User Pascal Bellard # Date 1448366185 -3600 # Node ID b24f0f72ecf8de1203a137870802268da91cb659 # Parent 639fcd94f19bb0c8bcd5c420940f9c0e3e222671 iso2flavor: use iso flavor infos diff -r 639fcd94f19b -r b24f0f72ecf8 tazlito --- a/tazlito Mon Nov 23 12:22:17 2015 +0100 +++ b/tazlito Tue Nov 24 12:56:25 2015 +0100 @@ -1185,6 +1185,20 @@ cd - > /dev/null } +# get byte(s) form a binary file +get() +{ + od -v -j $1 -N ${3:-2} -t u${3:-2} -w${3:-2} -An $2 2>/dev/null +} + +# get cpio flavor info from the ISO image +flavordata() +{ + [ $(get 1024 $1) -eq 35615 ] && n=2 || n=$((1+$(get 417 $1 1))) + dd if=$1 bs=512 skip=$n count=20 2>/dev/null | zcat 2>/dev/null +} + + #################### # Tazlito commands # #################### @@ -1793,6 +1807,7 @@ status fi infos="$FLAVOR.desc" + [ -s $TMP_DIR/$FLAVOR.receipt ] && infos="$infos\n$FLAVOR.receipt" for i in rootcd rootfs; do if [ -f $TMP_DIR/$FLAVOR.$i ]; then echo -n "Adding $i files... " @@ -1843,18 +1858,22 @@ exit 1 fi FLAVOR=${3%.flavor} - mkdir -p $TMP_DIR/iso $TMP_DIR/rootfs + mkdir -p $TMP_DIR/iso $TMP_DIR/rootfs $TMP_DIR/flavor mount -o loop,ro $2 $TMP_DIR/iso - if [ -s $TMP_DIR/iso/boot/rootfs1.gz ]; then + flavordata $2 | (cd $TMP_DIR/flavor ; cpio -i 2> /dev/null) + if [ -s $TMP_DIR/iso/boot/rootfs1.gz -a \ + ! -s $TMP_DIR/flavor/*.desc ]; then echo "META flavors are not supported." umount -d $TMP_DIR/iso - elif [ ! -s $TMP_DIR/iso/boot/rootfs.gz ]; then + elif [ ! -s $TMP_DIR/iso/boot/rootfs.gz -a \ + ! -s $TMP_DIR/iso/boot/rootfs1.gz ]; then echo "No /boot/rootfs.gz in iso image. Needs a SliTaz iso." umount -d $TMP_DIR/iso else - ( zcat < $TMP_DIR/iso/boot/rootfs.gz || \ - unlzma < $TMP_DIR/iso/boot/rootfs.gz ) | \ + for i in $(ls -r $TMP_DIR/iso/boot/rootfs*gz); do + ( zcat < $i || unlzma < $i ) | \ ( cd $TMP_DIR/rootfs ; cpio -idmu > /dev/null 2>&1 ) + done if [ ! -s $TMP_DIR/rootfs/etc/slitaz-release ]; then echo "No file /etc/slitaz-release in /boot/rootfs.gz of iso image. Needs a non loram SliTaz iso." umount -d $TMP_DIR/iso @@ -1865,29 +1884,37 @@ ISO_SIZE=$(df -h $TMP_DIR/iso | awk 'END { print $2 }') BUILD_DATE=$(date +%Y%m%d\ \at\ \%H:%M:%S -r $TMP_DIR/iso/md5sum) umount -d $TMP_DIR/iso - INITRAMFS_SIZE=$(du -chs $TMP_DIR/rootcd/boot/rootfs.gz | awk '{ s=$1 } END { print $1 }') + INITRAMFS_SIZE=$(du -chs $TMP_DIR/rootcd/boot/rootfs*.gz | awk 'END { print $1 }') rm -f $TMP_DIR/rootcd/boot/rootfs.gz $TMP_DIR/rootcd/md5sum mv $TMP_DIR/rootcd/boot $TMP_DIR/rootfs sed 's/.* \(.*\).tazpkg*/\1/' > $TMP_DIR/$FLAVOR.pkglist \ < $TMP_DIR/rootfs$INSTALLED.md5 - #[ -s $TMP_DIR/rootfs/etc/tazlito/distro-packages.list ] && - # mv $TMP_DIR/rootfs/etc/tazlito/distro-packages.list $TMP_DIR/$FLAVOR.pkglist PKGCNT=$(grep -v ^# $TMP_DIR/$FLAVOR.pkglist | wc -l | awk '{ print $1 }') - find_flavor_rootfs $TMP_DIR/rootfs - [ -d $TMP_DIR/rootfs/boot ] && mv $TMP_DIR/rootfs/boot $TMP_DIR/rootcd - [ -n "$(ls $TMP_DIR/rootfs)" ] && ( cd $TMP_DIR/rootfs ; find * | cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.rootfs - [ -n "$(ls $TMP_DIR/rootcd)" ] && ( cd $TMP_DIR/rootcd ; find * | cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.rootcd - rm -rf $TMP_DIR/rootcd $TMP_DIR/rootfs - VERSION=""; MAINTAINER="" - echo -en "Flavor short description \007: "; read -t 30 DESCRIPTION - if [ -n "$DESCRIPTION" ]; then - echo -en "Flavor version : "; read -t 30 VERSION - echo -en "Flavor maintainer (your email) : "; read -t 30 MAINTAINER - fi - [ -n "$DESCRIPTION" ] || DESCRIPTION="Slitaz $FLAVOR flavor" - [ -n "$VERSION" ] || VERSION="1.0" - [ -n "$MAINTAINER" ] || MAINTAINER="nobody@slitaz.org" - cat > $TMP_DIR/$FLAVOR.desc < $TMP_DIR/$FLAVOR.$i + done + else + find_flavor_rootfs $TMP_DIR/rootfs + [ -d $TMP_DIR/rootfs/boot ] && mv $TMP_DIR/rootfs/boot $TMP_DIR/rootcd + for i in rootfs rootcd ; do + [ "$(ls $TMP_DIR/$i)" ] && + ( cd $TMP_DIR/$i ; find * | cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.$i + done + VERSION=""; MAINTAINER="" + echo -en "Flavor short description \007: "; read -t 30 DESCRIPTION + if [ -n "$DESCRIPTION" ]; then + echo -en "Flavor version : "; read -t 30 VERSION + echo -en "Flavor maintainer (your email) : "; read -t 30 MAINTAINER + fi + [ -n "$DESCRIPTION" ] || DESCRIPTION="Slitaz $FLAVOR flavor" + [ -n "$VERSION" ] || VERSION="1.0" + [ -n "$MAINTAINER" ] || MAINTAINER="nobody@slitaz.org" + cat > $TMP_DIR/$FLAVOR.desc < $FLAVOR.flavor - cat < $FLAVOR.flavor fi fi rm -rf $TMP_DIR ;;