tazlito diff tazlito @ rev 404
iso2flavor: use iso flavor infos
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue Nov 24 12:56:25 2015 +0100 (2015-11-24) |
parents | 6c738e349722 |
children | 66f7dad7972b |
line diff
1.1 --- a/tazlito Sun Nov 22 19:00:05 2015 +0100 1.2 +++ b/tazlito Tue Nov 24 12:56:25 2015 +0100 1.3 @@ -1185,6 +1185,20 @@ 1.4 cd - > /dev/null 1.5 } 1.6 1.7 +# get byte(s) form a binary file 1.8 +get() 1.9 +{ 1.10 + od -v -j $1 -N ${3:-2} -t u${3:-2} -w${3:-2} -An $2 2>/dev/null 1.11 +} 1.12 + 1.13 +# get cpio flavor info from the ISO image 1.14 +flavordata() 1.15 +{ 1.16 + [ $(get 1024 $1) -eq 35615 ] && n=2 || n=$((1+$(get 417 $1 1))) 1.17 + dd if=$1 bs=512 skip=$n count=20 2>/dev/null | zcat 2>/dev/null 1.18 +} 1.19 + 1.20 + 1.21 #################### 1.22 # Tazlito commands # 1.23 #################### 1.24 @@ -1793,6 +1807,7 @@ 1.25 status 1.26 fi 1.27 infos="$FLAVOR.desc" 1.28 + [ -s $TMP_DIR/$FLAVOR.receipt ] && infos="$infos\n$FLAVOR.receipt" 1.29 for i in rootcd rootfs; do 1.30 if [ -f $TMP_DIR/$FLAVOR.$i ]; then 1.31 echo -n "Adding $i files... " 1.32 @@ -1843,18 +1858,22 @@ 1.33 exit 1 1.34 fi 1.35 FLAVOR=${3%.flavor} 1.36 - mkdir -p $TMP_DIR/iso $TMP_DIR/rootfs 1.37 + mkdir -p $TMP_DIR/iso $TMP_DIR/rootfs $TMP_DIR/flavor 1.38 mount -o loop,ro $2 $TMP_DIR/iso 1.39 - if [ -s $TMP_DIR/iso/boot/rootfs1.gz ]; then 1.40 + flavordata $2 | (cd $TMP_DIR/flavor ; cpio -i 2> /dev/null) 1.41 + if [ -s $TMP_DIR/iso/boot/rootfs1.gz -a \ 1.42 + ! -s $TMP_DIR/flavor/*.desc ]; then 1.43 echo "META flavors are not supported." 1.44 umount -d $TMP_DIR/iso 1.45 - elif [ ! -s $TMP_DIR/iso/boot/rootfs.gz ]; then 1.46 + elif [ ! -s $TMP_DIR/iso/boot/rootfs.gz -a \ 1.47 + ! -s $TMP_DIR/iso/boot/rootfs1.gz ]; then 1.48 echo "No /boot/rootfs.gz in iso image. Needs a SliTaz iso." 1.49 umount -d $TMP_DIR/iso 1.50 else 1.51 - ( zcat < $TMP_DIR/iso/boot/rootfs.gz || \ 1.52 - unlzma < $TMP_DIR/iso/boot/rootfs.gz ) | \ 1.53 + for i in $(ls -r $TMP_DIR/iso/boot/rootfs*gz); do 1.54 + ( zcat < $i || unlzma < $i ) | \ 1.55 ( cd $TMP_DIR/rootfs ; cpio -idmu > /dev/null 2>&1 ) 1.56 + done 1.57 if [ ! -s $TMP_DIR/rootfs/etc/slitaz-release ]; then 1.58 echo "No file /etc/slitaz-release in /boot/rootfs.gz of iso image. Needs a non loram SliTaz iso." 1.59 umount -d $TMP_DIR/iso 1.60 @@ -1865,29 +1884,37 @@ 1.61 ISO_SIZE=$(df -h $TMP_DIR/iso | awk 'END { print $2 }') 1.62 BUILD_DATE=$(date +%Y%m%d\ \at\ \%H:%M:%S -r $TMP_DIR/iso/md5sum) 1.63 umount -d $TMP_DIR/iso 1.64 - INITRAMFS_SIZE=$(du -chs $TMP_DIR/rootcd/boot/rootfs.gz | awk '{ s=$1 } END { print $1 }') 1.65 + INITRAMFS_SIZE=$(du -chs $TMP_DIR/rootcd/boot/rootfs*.gz | awk 'END { print $1 }') 1.66 rm -f $TMP_DIR/rootcd/boot/rootfs.gz $TMP_DIR/rootcd/md5sum 1.67 mv $TMP_DIR/rootcd/boot $TMP_DIR/rootfs 1.68 sed 's/.* \(.*\).tazpkg*/\1/' > $TMP_DIR/$FLAVOR.pkglist \ 1.69 < $TMP_DIR/rootfs$INSTALLED.md5 1.70 - #[ -s $TMP_DIR/rootfs/etc/tazlito/distro-packages.list ] && 1.71 - # mv $TMP_DIR/rootfs/etc/tazlito/distro-packages.list $TMP_DIR/$FLAVOR.pkglist 1.72 PKGCNT=$(grep -v ^# $TMP_DIR/$FLAVOR.pkglist | wc -l | awk '{ print $1 }') 1.73 - find_flavor_rootfs $TMP_DIR/rootfs 1.74 - [ -d $TMP_DIR/rootfs/boot ] && mv $TMP_DIR/rootfs/boot $TMP_DIR/rootcd 1.75 - [ -n "$(ls $TMP_DIR/rootfs)" ] && ( cd $TMP_DIR/rootfs ; find * | cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.rootfs 1.76 - [ -n "$(ls $TMP_DIR/rootcd)" ] && ( cd $TMP_DIR/rootcd ; find * | cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.rootcd 1.77 - rm -rf $TMP_DIR/rootcd $TMP_DIR/rootfs 1.78 - VERSION=""; MAINTAINER="" 1.79 - echo -en "Flavor short description \007: "; read -t 30 DESCRIPTION 1.80 - if [ -n "$DESCRIPTION" ]; then 1.81 - echo -en "Flavor version : "; read -t 30 VERSION 1.82 - echo -en "Flavor maintainer (your email) : "; read -t 30 MAINTAINER 1.83 - fi 1.84 - [ -n "$DESCRIPTION" ] || DESCRIPTION="Slitaz $FLAVOR flavor" 1.85 - [ -n "$VERSION" ] || VERSION="1.0" 1.86 - [ -n "$MAINTAINER" ] || MAINTAINER="nobody@slitaz.org" 1.87 - cat > $TMP_DIR/$FLAVOR.desc <<EOT 1.88 + if [ -s $TMP_DIR/flavor/*desc ]; then 1.89 + cp $TMP_DIR/flavor/*.desc $TMP_DIR/$FLAVOR.desc 1.90 + [ -s $TMP_DIR/$FLAVOR.receipt ] && 1.91 + cp $TMP_DIR/flavor/*.receipt $TMP_DIR/$FLAVOR.receipt 1.92 + for i in rootfs rootcd ; do 1.93 + [ -s $TMP_DIR/flavor/*.list$i ] && 1.94 + sed 's/.\{1,45\}//;/^\.$/d' $TMP_DIR/flavor/*.list$i | ( cd $TMP_DIR/$i ; cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.$i 1.95 + done 1.96 + else 1.97 + find_flavor_rootfs $TMP_DIR/rootfs 1.98 + [ -d $TMP_DIR/rootfs/boot ] && mv $TMP_DIR/rootfs/boot $TMP_DIR/rootcd 1.99 + for i in rootfs rootcd ; do 1.100 + [ "$(ls $TMP_DIR/$i)" ] && 1.101 + ( cd $TMP_DIR/$i ; find * | cpio -o -H newc ) | gzip -9 > $TMP_DIR/$FLAVOR.$i 1.102 + done 1.103 + VERSION=""; MAINTAINER="" 1.104 + echo -en "Flavor short description \007: "; read -t 30 DESCRIPTION 1.105 + if [ -n "$DESCRIPTION" ]; then 1.106 + echo -en "Flavor version : "; read -t 30 VERSION 1.107 + echo -en "Flavor maintainer (your email) : "; read -t 30 MAINTAINER 1.108 + fi 1.109 + [ -n "$DESCRIPTION" ] || DESCRIPTION="Slitaz $FLAVOR flavor" 1.110 + [ -n "$VERSION" ] || VERSION="1.0" 1.111 + [ -n "$MAINTAINER" ] || MAINTAINER="nobody@slitaz.org" 1.112 + cat > $TMP_DIR/$FLAVOR.desc <<EOT 1.113 Flavor : $FLAVOR 1.114 Description : $DESCRIPTION 1.115 Version : $VERSION 1.116 @@ -1901,8 +1928,7 @@ 1.117 ================================================================================ 1.118 1.119 EOT 1.120 - ( cd $TMP_DIR ; ls $FLAVOR.* | cpio -o -H newc ) | gzip -9 > $FLAVOR.flavor 1.121 - cat <<EOT 1.122 + cat <<EOT 1.123 Tazlito can't detect each file installed during a package post_install. 1.124 You should extract this flavor (tazlito extract-flavor $FLAVOR), 1.125 check the files in /home/slitaz/flavors/$(cat /etc/slitaz-release)/$FLAVOR/rootfs tree and remove 1.126 @@ -1910,6 +1936,8 @@ 1.127 Check /home/slitaz/flavors/$(cat /etc/slitaz-release)/$FLAVOR/receipt too and repack the flavor 1.128 (tazlito pack-flavor $FLAVOR) 1.129 EOT 1.130 + fi 1.131 + ( cd $TMP_DIR ; ls $FLAVOR.* | cpio -o -H newc ) | gzip -9 > $FLAVOR.flavor 1.132 fi 1.133 fi 1.134 rm -rf $TMP_DIR ;;