tazlito rev 414
tazlito: fix setup_mirrors(), add install_list_to_rootfs(). Working in progress, please don't update tazlito receipt.
Bug: for multi-rootfs $DISTRO/rootfs/var/lib/tazpkg not cleaned and spammed with PKGDB files.
Bug: for multi-rootfs $DISTRO/rootfs/var/lib/tazpkg not cleaned and spammed with PKGDB files.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Mon Feb 22 11:24:41 2016 +0200 (2016-02-22) |
parents | bd4b1f42430b |
children | 6ac6d30d100b |
files | tazlito |
line diff
1.1 --- a/tazlito Sun Feb 21 04:51:59 2016 +0200 1.2 +++ b/tazlito Mon Feb 22 11:24:41 2016 +0200 1.3 @@ -140,7 +140,7 @@ 1.4 Y|y) answer="y";; 1.5 N|n) answer="n";; 1.6 *) 1.7 - read answer 1.8 + read -t 30 answer 1.9 [ -z "$answer" ] && answer="$2" 1.10 [ "$answer" != 'y' -a "$answer" != 'n' ] && answer="$2" 1.11 ;; 1.12 @@ -1350,7 +1350,7 @@ 1.13 # And, finally, main mirror with the lowest (failsafe) priority (nothing to do) 1.14 1.15 # Show list of mirrors 1.16 - awk -vdb="$root$LOCALSTATE" ' 1.17 + [ -f "$priority" ] && awk -vdb="$root$LOCALSTATE" ' 1.18 function show(num, name, url, pad, len) { 1.19 pad = "................................"; 1.20 len = (32 - length(name)); 1.21 @@ -1550,6 +1550,7 @@ 1.22 1.23 1.24 # Display list of unknown packages (informative) 1.25 + 1.26 display_unknown() { 1.27 [ -s "$1" ] || return 1.28 echo "Unknown packages:" >&2 1.29 @@ -1559,6 +1560,7 @@ 1.30 1.31 1.32 # Display warnings about critical packages absent (informative) 1.33 + 1.34 display_warn() { 1.35 [ -s "$1" ] || return 1.36 echo "Absent critical packages:" >&2 1.37 @@ -1568,6 +1570,62 @@ 1.38 } 1.39 1.40 1.41 +# Install packages to rootfs 1.42 + 1.43 +install_list_to_rootfs() { 1.44 + local list="$1" rootfs="$2" pkg i ii 1.45 + 1.46 + # initial tazpkg setup in empty rootfs 1.47 + export root="$rootfs" 1.48 + tazpkg --root=$rootfs >/dev/null 2>&1 1.49 + # link rootfs packages cache to the regular packages cache 1.50 + rm -r "$rootfs/var/cache/tazpkg" 1.51 + ln -s /var/cache/tazpkg "$rootfs/var/cache/tazpkg" 1.52 + 1.53 + setup_mirrors mirrors 1.54 + 1.55 + # Just in case if flavor not contains "tazlito" package 1.56 + mkdir -p "$rootfs/etc/tazlito" 1.57 + 1.58 + for pkg in $(cat $list); do 1.59 + action 'Installing package: %s' "$pkg" 1.60 + yes y | tazpkg -gi $pkg --root=$rootfs --quiet >> $log || exit 1 1.61 + status 1.62 + done 1.63 + newline 1.64 + 1.65 + restore_mirrors 1.66 + # Remove 'fresh' and 'repacked' undigest repos leaving all other 1.67 + for i in fresh repacked; do 1.68 + ii="$rootfs/var/lib/tazpkg/undigest/$i" 1.69 + [ -d "$ii" ] && rm -rf "$ii" 1.70 + ii="$rootfs/var/lib/tazpkg/priority" 1.71 + if [ -f "$ii" ]; then 1.72 + sed -i "/$i/d" "$ii" 1.73 + [ -s "$ii" ] || rm "$ii" 1.74 + fi 1.75 + done 1.76 + [ -d "$rootfs/var/lib/tazpkg/undigest" ] && \ 1.77 + for i in $(find "$rootfs/var/lib/tazpkg/undigest" -type f); do 1.78 + # Remove all undigest PKGDB files but 'mirror' 1.79 + [ "$(basename "$i")" != 'mirror' ] && rm "$i" 1.80 + done 1.81 + [ -d "$rootfs/var/lib/tazpkg/undigest" ] && \ 1.82 + rmdir --ignore-fail-on-non-empty "$rootfs/var/lib/tazpkg/undigest" 1.83 + 1.84 + # Un-link packages cache 1.85 + rm "$rootfs/var/cache/tazpkg" 1.86 + 1.87 + # Clean /var/lib/tazpkg 1.88 + rm $rootfs/var/lib/tazpkg/ID* \ 1.89 + $rootfs/var/lib/tazpkg/descriptions.txt \ 1.90 + $rootfs/var/lib/tazpkg/extra.list \ 1.91 + $rootfs/var/lib/tazpkg/files* \ 1.92 + $rootfs/var/lib/tazpkg/packages.* \ 1.93 + 2>/dev/null 1.94 +} 1.95 + 1.96 + 1.97 1.98 1.99 #################### 1.100 @@ -2289,18 +2347,6 @@ 1.101 rm -r "$tmp_dir" 1.102 fi 1.103 1.104 - # initial tazpkg setup in empty rootfs 1.105 - export root="$ROOTFS" 1.106 - tazpkg >/dev/null 2>&1 1.107 - # link rootfs packages cache to the regular packages cache 1.108 - rm -r "$ROOTFS/var/cache/tazpkg" 1.109 - ln -s /var/cache/tazpkg "$ROOTFS/var/cache/tazpkg" 1.110 - 1.111 - setup_mirrors mirrors 1.112 - 1.113 - # Just in case if flavor not contains "tazlito" package 1.114 - mkdir -p "$ROOTFS/etc/tazlito" 1.115 - 1.116 if [ -f non-free.list ]; then 1.117 # FIXME: working in the ROOTFS chroot? 1.118 newline 1.119 @@ -2322,28 +2368,7 @@ 1.120 cp $LIST_NAME $DISTRO/distro-packages.list 1.121 newline 1.122 1.123 - for pkg in $(cat $DISTRO/distro-packages.list); do 1.124 - action 'Installing package: %s' "$pkg" 1.125 - yes y | tazpkg -gi $pkg --root=$ROOTFS --quiet >> $log || exit 1 1.126 - status 1.127 - done 1.128 - newline 1.129 - 1.130 - restore_mirrors 1.131 - 1.132 - # Un-link packages cache 1.133 - rm $ROOTFS/var/cache/tazpkg 1.134 - # Clean /var/lib/tazpkg 1.135 - rm $ROOTFS/var/lib/tazpkg/ID* \ 1.136 - $ROOTFS/var/lib/tazpkg/descriptions.txt \ 1.137 - $ROOTFS/var/lib/tazpkg/extra.list \ 1.138 - $ROOTFS/var/lib/tazpkg/files* \ 1.139 - $ROOTFS/var/lib/tazpkg/packages* \ 1.140 - $ROOTFS/var/lib/tazpkg/priority \ 1.141 - -rf $ROOTFS/var/lib/tazpkg/undigest \ 1.142 - 2>/dev/null 1.143 - # Back to default mirror 1.144 - echo "$DEFAULT_MIRROR" > $ROOTFS/var/lib/tazpkg/mirror 1.145 + install_list_to_rootfs "$DISTRO/distro-packages.list" "$ROOTFS" 1.146 1.147 cd $DISTRO 1.148 cp distro-packages.list $ROOTFS/etc/tazlito 1.149 @@ -2441,46 +2466,10 @@ 1.150 # Install packages 1.151 cd $PACKAGES_REPOSITORY 1.152 1.153 - # initial tazpkg setup in empty rootfs 1.154 - export root="${ROOTFS}0$n" 1.155 - tazpkg >/dev/null 2>&1 1.156 - # link rootfs packages cache to the regular packages cache 1.157 - rm -r "${ROOTFS}0$n/var/cache/tazpkg" 1.158 - ln -s /var/cache/tazpkg "${ROOTFS}0$n/var/cache/tazpkg" 1.159 - 1.160 - setup_mirrors mirrors 1.161 - 1.162 - # Just in case if flavor not contains "tazlito" package 1.163 - mkdir -p "${ROOTFS}0$n/etc/tazlito" 1.164 - 1.165 - 1.166 - for pkg in $(cat $DISTRO/list-packages0$n); do 1.167 - action 'Installing package: %s' "$pkg" 1.168 - yes y | tazpkg -gi $pkg --root=${ROOTFS}0$n --quiet >> $log || exit 1 1.169 - status 1.170 - done 1.171 - 1.172 - restore_mirrors 1.173 + install_list_to_rootfs "$DISTRO/list-packages0$n" "${ROOTFS}0$n" 1.174 1.175 rm -rf ${ROOTFS}0$n/boot 1.176 1.177 - # Un-link packages cache 1.178 - rm ${ROOTFS}0$n/var/cache/tazpkg 1.179 - 1.180 - # Clean /var/lib/tazpkg 1.181 - rm ${ROOTFS}0$n/var/lib/tazpkg/ID* \ 1.182 - ${ROOTFS}0$n/var/lib/tazpkg/descriptions.txt \ 1.183 - ${ROOTFS}0$n/var/lib/tazpkg/extra.list \ 1.184 - ${ROOTFS}0$n/var/lib/tazpkg/files* \ 1.185 - ${ROOTFS}0$n/var/lib/tazpkg/packages.* \ 1.186 - ${ROOTFS}0$n/var/lib/tazpkg/priority \ 1.187 - -rf ${ROOTFS}0$n/var/lib/tazpkg/undigest \ 1.188 - 2>/dev/null 1.189 - 1.190 - # Back to default mirror 1.191 - echo "$DEFAULT_MIRROR" > ${ROOTFS}0$n/var/lib/tazpkg/mirror 1.192 - 1.193 - 1.194 cd $DISTRO 1.195 if [ -s $flavor.rootfs ]; then 1.196 echo -n "Adding $flavor rootfs extra files..."