slitaz-modular annotate mkiso.sh @ rev 80
Add support for my-wok repo. Fixed local.sh script up.
author | Christopher Rogers <slaxemulator@gmail.com> |
---|---|
date | Wed Apr 20 03:21:03 2011 +0000 (2011-04-20) |
parents | 4f2f1fed0f9b |
children | b56c0ab05e6e |
rev | line source |
---|---|
slaxemulator@26 | 1 #!/bin/bash |
slaxemulator@0 | 2 |
slaxemulator@26 | 3 . /etc/slitaz/slitaz.conf |
slaxemulator@41 | 4 . /etc/slitaz/tazwok.conf |
slaxemulator@0 | 5 |
slaxemulator@0 | 6 QUIET="y" |
slaxemulator@0 | 7 FORCE="y" |
slaxemulator@0 | 8 export LABEL="slitaz_$(date +%Y%m)" |
slaxemulator@0 | 9 PUBLISHER="Slitaz" |
slaxemulator@0 | 10 APPLICATION="Slitaz" |
slaxemulator@0 | 11 CREATE_DEFAULT="n" |
slaxemulator@17 | 12 BASEDIR="$(pwd)" |
slaxemulator@17 | 13 PROFILE="$BASEDIR/$1" |
slaxemulator@0 | 14 ver="" |
slaxemulator@0 | 15 CDNAME="slitaz" |
slaxemulator@0 | 16 RMSTUFF=n |
slaxemulator@0 | 17 MVSTUFF=n |
slaxemulator@0 | 18 UNGZIP=n |
slaxemulator@15 | 19 EXT="xz" |
slaxemulator@15 | 20 COMPRESSION="xz -Xbcj x86" |
slaxemulator@0 | 21 MKOPTION="-b 256k" |
slaxemulator@34 | 22 BASE_MODULES="" |
slaxemulator@0 | 23 MODULES="" |
slaxemulator@34 | 24 UNION_MODULES="" |
slaxemulator@0 | 25 WORKING="$PROFILE/working" |
slaxemulator@0 | 26 INITRAMFS="$WORKING/initramfs" |
slaxemulator@0 | 27 UNION="$WORKING/union" |
slaxemulator@0 | 28 LOG="$WORKING/log" |
slaxemulator@0 | 29 ISODIR="$WORKING/iso" |
slaxemulator@21 | 30 IMGNAME="$PROFILE/$CDNAME-$1-$(date +%F).iso" |
slaxemulator@0 | 31 IMGMD5NAME="$IMGNAME.md5" |
slaxemulator@15 | 32 LASTBR="$INITRAMFS" |
slaxemulator@0 | 33 SGNFILE="$ISODIR/$CDNAME/livecd.sgn" |
slaxemulator@0 | 34 MODULES_DIR="$WORKING/modules" |
slaxemulator@26 | 35 HG_DIR="$WORKING/hg" |
slaxemulator@26 | 36 HG_URL="http://hg.slitaz.org" |
slaxemulator@26 | 37 HG_PATH="home/slitaz/repos" |
slaxemulator@0 | 38 COPY_HG="no" |
slaxemulator@0 | 39 UPDATE_HG="no" |
slaxemulator@0 | 40 BACKUP_SOURCES="no" |
slaxemulator@0 | 41 BACKUP_PACKAGES="no" |
slaxemulator@34 | 42 MIRROR_DIR="mirror" |
slaxemulator@35 | 43 PKGISO_DIR="$ISODIR/$MIRROR_DIR/packages" |
slaxemulator@35 | 44 SRCISO_DIR="$ISODIR/$MIRROR_DIR/src" |
slaxemulator@28 | 45 BACKUP_ALL="no" |
slaxemulator@41 | 46 KEY_FILES="init liblinuxlive linuxrc" |
slaxemulator@0 | 47 CLEAN_MODULES_DIR="no" |
slaxemulator@2 | 48 CLEAN_INITRAMFS="no" |
slaxemulator@28 | 49 PACKAGES_REPOSITORY="$LOCAL_REPOSITORY/packages" |
slaxemulator@29 | 50 INCOMING_REPOSITORY="$LOCAL_REPOSITORY/packages-incoming" |
slaxemulator@28 | 51 SOURCES_REPOSITORY="$LOCAL_REPOSITORY/src" |
slaxemulator@80 | 52 HG_LIST="flavors flavors-stable slitaz-base-files slitaz-boot-scripts slitaz-configs slitaz-dev-tools slitaz-doc slitaz-doc-wiki-data slitaz-forge slitaz-modular slitaz-pizza slitaz-tools tazlito tazpanel tazpkg tazusb tazweb tazwok website wok wok-stable wok-tiny wok-undigest" |
slaxemulator@80 | 53 MY_HG_LIST="my-wok" |
slaxemulator@80 | 54 MY_HG_URL="https://bitbucket.org/godane" |
slaxemulator@0 | 55 |
slaxemulator@0 | 56 error () { echo -e "\033[1;31;40m!!! \033[1;37;40m$@\033[1;0m"; } |
slaxemulator@0 | 57 warn () { echo -e "\033[1;33;40m*** \033[1;37;40m$@\033[1;0m"; } |
slaxemulator@0 | 58 info () { echo -e "\033[1;32;40m>>> \033[1;37;40m$@\033[1;0m"; } |
slaxemulator@0 | 59 |
slaxemulator@0 | 60 # do UID checking here so someone can at least get usage instructions |
slaxemulator@0 | 61 #if [ "$EUID" != "0" ]; then |
slaxemulator@0 | 62 # error "error: This script must be run as root." |
slaxemulator@0 | 63 # exit 1 |
slaxemulator@0 | 64 #fi |
slaxemulator@19 | 65 if [ ! -d $PROFILE -o "$1" = "" ]; then |
slaxemulator@17 | 66 echo "$0 profile-name" |
slaxemulator@17 | 67 echo "ex $0 core" |
slaxemulator@17 | 68 exit 1 |
slaxemulator@17 | 69 fi |
slaxemulator@0 | 70 |
slaxemulator@19 | 71 ROOT_MOD="$(ls -1 ${PROFILE}/list | head -1)" |
slaxemulator@19 | 72 INST_ROOT="${MODULES_DIR}/$(basename ${ROOT_MOD} .list)" |
slaxemulator@19 | 73 |
slaxemulator@0 | 74 if [ -f ${PROFILE}/config ]; then |
slaxemulator@0 | 75 source ${PROFILE}/config |
slaxemulator@0 | 76 fi |
slaxemulator@0 | 77 |
slaxemulator@0 | 78 _overlay() |
slaxemulator@0 | 79 { |
slaxemulator@0 | 80 if [ -d ${MODULES_DIR}/overlay ]; then |
slaxemulator@0 | 81 rm -rf ${MODULES_DIR}/overlay |
slaxemulator@0 | 82 cp -rf ${PROFILE}/overlay ${MODULES_DIR} |
slaxemulator@41 | 83 cp -af ${BASEDIR}/initramfs/* ${MODULES_DIR}/overlay |
slaxemulator@0 | 84 else |
slaxemulator@0 | 85 cp -rf ${PROFILE}/overlay ${MODULES_DIR} |
slaxemulator@41 | 86 cp -af ${BASEDIR}/initramfs/* ${MODULES_DIR}/overlay |
slaxemulator@41 | 87 fi |
slaxemulator@41 | 88 |
slaxemulator@41 | 89 if [ -f ${MODULES_DIR}/overlay/etc/local-mirror.conf ]; then |
slaxemulator@41 | 90 sed -i "s|^#PKGDIR|PKGDIR=/packages|g" ${MODULES_DIR}/overlay/etc/local-mirror.conf |
slaxemulator@41 | 91 sed -i "s|^#SRCDIR|SRCDIR=/src|g" ${MODULES_DIR}/overlay/etc/local-mirror.conf |
slaxemulator@0 | 92 fi |
slaxemulator@0 | 93 |
slaxemulator@0 | 94 if [ "${QUIET}" = "y" ]; then |
slaxemulator@0 | 95 mksquashfs "${MODULES_DIR}/overlay" "${ISODIR}/${CDNAME}/modules/zzz.overlay.${EXT}" -comp ${COMPRESSION} -noappend ${MKOPTION} >/dev/null |
slaxemulator@0 | 96 else |
slaxemulator@0 | 97 mksquashfs "${MODULES_DIR}/overlay" "${ISODIR}/${CDNAME}/modules/zzz.overlay.${EXT}" -comp ${COMPRESSION} -noappend ${MKOPTION} |
slaxemulator@0 | 98 fi |
slaxemulator@0 | 99 } |
slaxemulator@0 | 100 |
slaxemulator@0 | 101 lzma_switches() |
slaxemulator@0 | 102 { |
slaxemulator@0 | 103 echo "-d$(echo 24) -mt$(grep ^processor < /proc/cpuinfo | wc -l)" |
slaxemulator@0 | 104 } |
slaxemulator@0 | 105 |
slaxemulator@0 | 106 # Pack rootfs |
slaxemulator@0 | 107 pack_rootfs() |
slaxemulator@0 | 108 { |
slaxemulator@0 | 109 ( cd $1 ; find . -print | cpio -o -H newc ) | \ |
slaxemulator@0 | 110 if [ -x /usr/bin/lzma ]; then |
slaxemulator@0 | 111 info "Generating lzma'ed initramfs... " |
slaxemulator@0 | 112 lzma e -si -so $(lzma_switches $1) > $2 |
slaxemulator@0 | 113 else |
slaxemulator@0 | 114 info "Generating gziped initramfs... " |
slaxemulator@0 | 115 gzip -9 > $2 |
slaxemulator@0 | 116 fi |
slaxemulator@0 | 117 echo 1 > /tmp/rootfs |
slaxemulator@0 | 118 } |
slaxemulator@0 | 119 |
slaxemulator@26 | 120 download() |
slaxemulator@26 | 121 { |
slaxemulator@26 | 122 for file in $@; do |
slaxemulator@26 | 123 wget -q $file && break |
slaxemulator@26 | 124 done |
slaxemulator@26 | 125 } |
slaxemulator@26 | 126 |
slaxemulator@0 | 127 initramfs () { |
slaxemulator@0 | 128 |
slaxemulator@17 | 129 if [ ! -e "$BASEDIR/initramfs/initramfs.list" ]; then |
slaxemulator@19 | 130 error "error: $BASEDIR/initramfs/initramfs.list doesn't exist, aborting." |
slaxemulator@0 | 131 exit 1 |
slaxemulator@0 | 132 fi |
slaxemulator@0 | 133 |
slaxemulator@2 | 134 if [ "$CLEAN_INITRAMFS" = "yes" ]; then |
slaxemulator@2 | 135 if [ -d ${INITRAMFS} ]; then |
slaxemulator@2 | 136 rm -Rf ${INITRAMFS} |
slaxemulator@2 | 137 fi |
slaxemulator@2 | 138 fi |
slaxemulator@4 | 139 |
slaxemulator@4 | 140 if [ ! -d ${INITRAMFS} ]; then |
slaxemulator@4 | 141 mkdir -p $INITRAMFS |
slaxemulator@4 | 142 fi |
slaxemulator@4 | 143 |
slaxemulator@0 | 144 info "Making bootable image" |
slaxemulator@17 | 145 cat "$BASEDIR/initramfs/initramfs.list" | grep -v "^#" | while read pkgname; do |
slaxemulator@5 | 146 if [ ! -f ${INITRAMFS}/var/lib/tazpkg/installed/${pkgname}/files.list ]; then |
slaxemulator@0 | 147 tazpkg get-install $pkgname --root=$INITRAMFS | tee -a $LOG/initramfs.log |
slaxemulator@0 | 148 sleep 1 |
slaxemulator@0 | 149 else |
slaxemulator@0 | 150 info "${pkgname} installed" |
slaxemulator@0 | 151 fi |
slaxemulator@0 | 152 done |
slaxemulator@0 | 153 |
slaxemulator@0 | 154 if [ ! -d $ISODIR/boot ]; then |
slaxemulator@0 | 155 mkdir -p $ISODIR/boot |
slaxemulator@0 | 156 fi |
slaxemulator@0 | 157 |
slaxemulator@15 | 158 #if [ ! -f $ISODIR/boot/bzImage ]; then |
slaxemulator@34 | 159 cp -a $INITRAMFS/boot/vmlinuz* $ISODIR/boot/bzImage |
slaxemulator@0 | 160 rm -f $INITRAMFS/boot/vmlinuz* |
slaxemulator@34 | 161 if [ -f $INITRAMFS/boot/gpxe ]; then |
slaxemulator@34 | 162 cp -a $INITRAMFS/boot/gpxe $ISODIR/boot/gpxe |
slaxemulator@41 | 163 rm -f $INITRAMFS/boot/gpxe |
slaxemulator@34 | 164 fi |
slaxemulator@15 | 165 #fi |
slaxemulator@17 | 166 if [ -d $BASEDIR/initramfs ]; then |
slaxemulator@41 | 167 for i in $KEY_FILES; do |
slaxemulator@41 | 168 if [ -f $BASEDIR/initramfs/$i ]; then |
slaxemulator@41 | 169 cp -af $BASEDIR/initramfs/$i $INITRAMFS |
slaxemulator@41 | 170 fi |
slaxemulator@41 | 171 done |
slaxemulator@0 | 172 fi |
slaxemulator@34 | 173 |
slaxemulator@41 | 174 if [ -f $INITRAMFS/liblinuxlive ]; then |
slaxemulator@41 | 175 sed -i "s|^#MIRROR|MIRROR=$MIRROR_DIR|g" $INITRAMFS/liblinuxlive |
slaxemulator@34 | 176 fi |
slaxemulator@41 | 177 |
slaxemulator@0 | 178 } |
slaxemulator@0 | 179 |
slaxemulator@0 | 180 copy_hg() { |
slaxemulator@26 | 181 if [ ! -d ${HG_DIR}/${1}/${HG_PATH}/${1} ]; then |
slaxemulator@0 | 182 info "Cloning $1 repo ..." |
slaxemulator@26 | 183 hg clone $HG_URL/${1} ${HG_DIR}/${1}/${HG_PATH}/${1} |
slaxemulator@26 | 184 if [ $(grep -l "^HG_URL=$HG_URL" $PROFILE/config) ]; then |
slaxemulator@26 | 185 if [ ! $(grep -l "$HG_URL" ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc) ]; then |
slaxemulator@26 | 186 echo "mirror = $HG_URL/$1" >> ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc |
slaxemulator@26 | 187 fi |
slaxemulator@26 | 188 fi |
slaxemulator@26 | 189 elif [ -d ${HG_DIR}/${1}/${HG_PATH}/${1} -a ${UPDATE_HG} = "yes" ]; then |
slaxemulator@0 | 190 info "Updating $1 repo ..." |
slaxemulator@26 | 191 cd ${HG_DIR}/${1}/${HG_PATH}/${1} |
slaxemulator@26 | 192 hg pull $HG_URL/${1} -u |
slaxemulator@26 | 193 if [ $(grep -l "^HG_URL=$HG_URL" $PROFILE/config) ]; then |
slaxemulator@26 | 194 if [ ! $(grep -l "$HG_URL" ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc) ]; then |
slaxemulator@26 | 195 echo "mirror = $HG_URL/$1" >> ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc |
slaxemulator@26 | 196 fi |
slaxemulator@26 | 197 fi |
slaxemulator@0 | 198 cd $PROFILE |
slaxemulator@0 | 199 fi |
slaxemulator@0 | 200 } |
slaxemulator@0 | 201 |
slaxemulator@0 | 202 squashfs_hg() { |
slaxemulator@0 | 203 if [ ! -d "$ISODIR/$CDNAME/modules/hg" ]; then |
slaxemulator@0 | 204 mkdir -p "$ISODIR/$CDNAME/modules/hg" |
slaxemulator@0 | 205 fi |
slaxemulator@26 | 206 if [ -d ${HG_DIR}/${1}/ ]; then |
slaxemulator@26 | 207 _mksquash ${HG_DIR}/${1} "$ISODIR/$CDNAME/modules/hg/" /${HG_PATH}/${1} |
slaxemulator@0 | 208 fi |
slaxemulator@0 | 209 } |
slaxemulator@0 | 210 |
slaxemulator@0 | 211 slitaz_union () { |
slaxemulator@0 | 212 |
slaxemulator@0 | 213 if [ -d ${MODULES_DIR}/${mod}/var/lib/tazpkg/installed ]; then |
slaxemulator@0 | 214 echo "${mod} module exist. Moving on." |
slaxemulator@0 | 215 elif [ ! -d ${MODULES_DIR}/${mod}/var/lib/tazpkg/installed ]; then |
slaxemulator@0 | 216 if [ -f "$PROFILE/list/${mod}.list" ]; then |
slaxemulator@0 | 217 cat "$PROFILE/list/${mod}.list" | grep -v "^#" | while read pkgname; do |
slaxemulator@5 | 218 if [ ! -f ${UNION}/var/lib/tazpkg/installed/${pkgname}/files.list ]; then |
slaxemulator@0 | 219 tazpkg get-install $pkgname --root=${UNION} | tee -a ${LOG}/${mod}-current.log |
slaxemulator@0 | 220 sleep 1 |
slaxemulator@0 | 221 else |
slaxemulator@0 | 222 info "${pkgname} installed" |
slaxemulator@0 | 223 fi |
slaxemulator@0 | 224 done |
slaxemulator@0 | 225 fi |
slaxemulator@0 | 226 |
slaxemulator@0 | 227 if [ -f $PROFILE/list/${mod}.removelist ]; then |
slaxemulator@0 | 228 cat "$PROFILE/list/${mod}.removelist" | grep -v "^#" | while read pkgname; do |
slaxemulator@5 | 229 if [ -f ${UNION}/var/lib/tazpkg/installed/${pkgname}/files.list ]; then |
slaxemulator@0 | 230 echo "y" | tazpkg remove ${pkgname} --root=${UNION} | tee -a ${LOG}/${mod}-current.log |
slaxemulator@0 | 231 sleep 1 |
slaxemulator@0 | 232 else |
slaxemulator@0 | 233 info "${pkgname} removed" |
slaxemulator@0 | 234 fi |
slaxemulator@0 | 235 done |
slaxemulator@0 | 236 fi |
slaxemulator@0 | 237 fi |
slaxemulator@0 | 238 } |
slaxemulator@0 | 239 |
slaxemulator@0 | 240 union () { |
slaxemulator@41 | 241 if [ "$BASE_MODULES" != "" ]; then |
slaxemulator@41 | 242 UNION_MODULES="$BASE_MODULES $MODULES" |
slaxemulator@41 | 243 elif [ "$MODULES" != "" ]; then |
slaxemulator@41 | 244 UNION_MODULES="$MODULES" |
slaxemulator@41 | 245 else |
slaxemulator@41 | 246 error "Error: no modules assigned in config for profile." |
slaxemulator@41 | 247 exit 1 |
slaxemulator@41 | 248 fi |
slaxemulator@41 | 249 |
slaxemulator@0 | 250 mkdir -p $WORKING |
slaxemulator@0 | 251 mkdir -p $UNION |
slaxemulator@0 | 252 mkdir -p $LOG |
slaxemulator@0 | 253 mkdir -p $ISODIR/${CDNAME}/base |
slaxemulator@0 | 254 mkdir -p $ISODIR/${CDNAME}/modules |
slaxemulator@0 | 255 mkdir -p $ISODIR/${CDNAME}/optional |
slaxemulator@0 | 256 mkdir -p $ISODIR/${CDNAME}/rootcopy |
slaxemulator@0 | 257 mkdir -p $ISODIR/${CDNAME}/tmp |
slaxemulator@0 | 258 mkdir -p $LASTBR |
slaxemulator@34 | 259 |
slaxemulator@0 | 260 touch $SGNFILE |
slaxemulator@0 | 261 |
slaxemulator@0 | 262 modprobe aufs |
slaxemulator@0 | 263 if [ $? -ne 0 ]; then |
slaxemulator@0 | 264 error "Error loading Union filesystem module. (aufs)" |
slaxemulator@0 | 265 exit 1 |
slaxemulator@0 | 266 fi |
slaxemulator@15 | 267 |
slaxemulator@15 | 268 # $INITRAMFS is now $LASTBR |
slaxemulator@15 | 269 # This will be copyed to /mnt/memory/changes on boot |
slaxemulator@15 | 270 initramfs |
slaxemulator@0 | 271 |
slaxemulator@0 | 272 mount -t aufs -o br:${LASTBR}=rw aufs ${UNION} |
slaxemulator@0 | 273 if [ $? -ne 0 ]; then |
slaxemulator@0 | 274 error "Error mounting $union." |
slaxemulator@0 | 275 exit 1 |
slaxemulator@0 | 276 fi |
slaxemulator@15 | 277 |
slaxemulator@0 | 278 info "====> Installing packages to '$UNION'" |
slaxemulator@34 | 279 for mod in $UNION_MODULES; do |
slaxemulator@0 | 280 |
slaxemulator@0 | 281 if [ "$CLEAN_MODULES_DIR" = "yes" ]; then |
slaxemulator@0 | 282 if [ -d $MODULES_DIR/$mod ]; then |
slaxemulator@0 | 283 rm -Rf $MODULES_DIR/$mod |
slaxemulator@0 | 284 fi |
slaxemulator@0 | 285 fi |
slaxemulator@0 | 286 |
slaxemulator@0 | 287 if [ ! -d $MODULES_DIR/$mod ]; then |
slaxemulator@0 | 288 mkdir -p $MODULES_DIR/$mod |
slaxemulator@0 | 289 fi |
slaxemulator@0 | 290 info "Adding $MODULES_DIR/$mod as top branch of union." |
slaxemulator@0 | 291 mount -t aufs -o remount,add:0:${MODULES_DIR}/${mod}=rw aufs $UNION |
slaxemulator@0 | 292 info "Adding $LASTBR as lower branch of union." |
slaxemulator@0 | 293 mount -t aufs -o remount,mod:${LASTBR}=rr+wh aufs $UNION |
slaxemulator@0 | 294 LASTBR="$MODULES_DIR/${mod}" |
slaxemulator@0 | 295 |
slaxemulator@0 | 296 slitaz_union |
slaxemulator@0 | 297 done |
slaxemulator@41 | 298 |
slaxemulator@26 | 299 if [ -d ${UNION}/${INSTALLED} ]; then |
slaxemulator@41 | 300 ls ${UNION}/${INSTALLED} | sort > $ISODIR/packages-installed.list |
slaxemulator@26 | 301 fi |
slaxemulator@26 | 302 |
slaxemulator@0 | 303 info "Unmounting union" |
slaxemulator@0 | 304 umount -l "${UNION}" |
slaxemulator@0 | 305 |
slaxemulator@0 | 306 info "Removing unionfs .wh. files." |
slaxemulator@0 | 307 find ${MODULES_DIR} -type f -name ".wh.*" -exec rm {} \; |
slaxemulator@0 | 308 find ${MODULES_DIR} -type d -name ".wh.*" -exec rm -rf {} \; |
slaxemulator@0 | 309 } |
slaxemulator@0 | 310 |
slaxemulator@26 | 311 backup_pkg() { |
slaxemulator@26 | 312 if [ "${BACKUP_PACKAGES}" = "yes" ]; then |
slaxemulator@34 | 313 [ -d $PKGISO_DIR ] && rm -r $PKGISO_DIR |
slaxemulator@34 | 314 mkdir -p $PKGISO_DIR |
slaxemulator@26 | 315 info "Making cooking list based installed packages in union" |
slaxemulator@29 | 316 # this is to filter out packages build by get- |
slaxemulator@29 | 317 # packages that don't exist in repo or wok |
slaxemulator@29 | 318 cat $ISODIR/packages-installed.list | while read pkg; do |
slaxemulator@29 | 319 if [ ! -f $WOK/$pkg/receipt ]; then |
slaxemulator@29 | 320 sed -i "s|$pkg||g" $ISODIR/packages-installed.list |
slaxemulator@26 | 321 fi |
slaxemulator@26 | 322 done |
slaxemulator@29 | 323 tazwok gen-cooklist $ISODIR/packages-installed.list > $ISODIR/cookorder.list |
slaxemulator@29 | 324 [ -f $INCOMING_REPOSITORY/wok-wanted.txt ] || tazwok gen-wok-db |
slaxemulator@26 | 325 |
slaxemulator@41 | 326 CACHE_REPOSITORY="$CACHE_DIR/$(cat /etc/slitaz-release)/packages" |
slaxemulator@41 | 327 |
slaxemulator@29 | 328 cat $ISODIR/cookorder.list | grep -v "^#" | while read pkg; do |
slaxemulator@29 | 329 rwanted=$(grep $'\t'$pkg$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1) |
slaxemulator@29 | 330 pkg_VERSION="$(grep -m1 -A1 ^$pkg$ $PACKAGES_REPOSITORY/packages.txt | \ |
slaxemulator@29 | 331 tail -1 | sed 's/ *//')" |
slaxemulator@41 | 332 incoming_pkg_VERSION="$(grep -m1 -A1 ^$pkg$ $INCOMING_REPOSITORY/packages.txt | \ |
slaxemulator@41 | 333 tail -1 | sed 's/ *//')" |
slaxemulator@29 | 334 for wanted in $rwanted; do |
slaxemulator@41 | 335 if [ -f $INCOMING_REPOSITORY/$wanted-$incoming_pkg_VERSION.tazpkg ]; then |
slaxemulator@41 | 336 ln -sf $INCOMING_REPOSITORY/$wanted-$incoming_pkg_VERSION.tazpkg $PKGISO_DIR/$wanted-$incoming_pkg_VERSION.tazpkg |
slaxemulator@41 | 337 elif [ -f $PACKAGES_REPOSITORY/$wanted-$pkg_VERSION.tazpkg ]; then |
slaxemulator@34 | 338 ln -sf $PACKAGES_REPOSITORY/$wanted-$pkg_VERSION.tazpkg $PKGISO_DIR/$wanted-$pkg_VERSION.tazpkg |
slaxemulator@41 | 339 elif [ -f $CACHE_REPOSITORY/$Wanted-$pkg_VERSION.tazpkg ]; then |
slaxemulator@41 | 340 ln -sf $CACHE_REPOSITORY/$wanted-$pkg_VERSION.tazpkg $PKGISO_DIR/$wanted-$pkg_VERSION.tazpkg |
slaxemulator@29 | 341 fi |
slaxemulator@29 | 342 done |
slaxemulator@41 | 343 |
slaxemulator@29 | 344 for i in $(ls $WOK/$pkg/receipt); do |
slaxemulator@80 | 345 unset SOURCE TARBALL WANTED PACKAGE VERSION pkg_VERSION COOK_OPT WGET_URL |
slaxemulator@29 | 346 source $i |
slaxemulator@29 | 347 pkg_VERSION="$(grep -m1 -A1 ^$PACKAGE$ $PACKAGES_REPOSITORY/packages.txt | \ |
slaxemulator@29 | 348 tail -1 | sed 's/ *//')" |
slaxemulator@41 | 349 incoming_pkg_VERSION="$(grep -m1 -A1 ^$pkg$ $INCOMING_REPOSITORY/packages.txt | \ |
slaxemulator@41 | 350 tail -1 | sed 's/ *//')" |
slaxemulator@29 | 351 [ "$WGET_URL" ] || continue |
slaxemulator@41 | 352 if [ -f $INCOMING_REPOSITORY/$PACKAGE-$incoming_pkg_VERSION.tazpkg ]; then |
slaxemulator@41 | 353 ln -sf $INCOMING_REPOSITORY/$PACKAGE-$incoming_pkg_VERSION.tazpkg $PKGISO_DIR/$PACKAGE-$incoming_pkg_VERSION.tazpkg |
slaxemulator@41 | 354 elif [ -f $PACKAGES_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg ]; then |
slaxemulator@34 | 355 ln -sf $PACKAGES_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg $PKGISO_DIR/$PACKAGE-$pkg_VERSION.tazpkg |
slaxemulator@41 | 356 elif [ -f $CACHE_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg ]; then |
slaxemulator@41 | 357 ln -sf $CACHE_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg $PKGISO_DIR/$PACKAGE-$pkg_VERSION.tazpkg |
slaxemulator@26 | 358 fi |
slaxemulator@26 | 359 done |
slaxemulator@26 | 360 done |
slaxemulator@26 | 361 |
slaxemulator@34 | 362 [ -d $PKGISO_DIR ] && tazwok gen-list $PKGISO_DIR |
slaxemulator@26 | 363 fi |
slaxemulator@26 | 364 |
slaxemulator@26 | 365 } |
slaxemulator@26 | 366 |
slaxemulator@26 | 367 backup_src() { |
slaxemulator@26 | 368 |
slaxemulator@26 | 369 if [ "${BACKUP_PACKAGES}" = "yes" -a "${BACKUP_SOURCES}" = "yes" ]; then |
slaxemulator@80 | 370 [ -d $SOURCES_REPOSITORY ] || mkdir -p $SOURCES_REPOSITORY |
slaxemulator@80 | 371 [ -d $SRCISO_DIR ] && rm -r $SRCISO_DIR |
slaxemulator@80 | 372 mkdir -p $SRCISO_DIR |
slaxemulator@80 | 373 cat $ISODIR/cookorder.list | grep -v "^#"| while read pkg; do |
slaxemulator@80 | 374 #rwanted=$(grep $'\t'$pkg$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1) |
slaxemulator@80 | 375 for i in $(ls $WOK/$pkg/receipt); do |
slaxemulator@80 | 376 unset SOURCE TARBALL WANTED PACKAGE VERSION COOK_OPT WGET_URL |
slaxemulator@80 | 377 source $i |
slaxemulator@80 | 378 #{ [ ! "$TARBALL" ] || [ ! "$WGET_URL" ] ; } && continue |
slaxemulator@80 | 379 [ "$WGET_URL" ] || continue |
slaxemulator@80 | 380 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \ |
slaxemulator@80 | 381 [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ]; then |
slaxemulator@80 | 382 tazwok get-src $PACKAGE --nounpack |
slaxemulator@80 | 383 if [ -f "$SOURCES_REPOSITORY/$TARBALL" ]; then |
slaxemulator@80 | 384 ln -sf $SOURCES_REPOSITORY/$TARBALL $SRCISO_DIR/$TARBALL |
slaxemulator@80 | 385 elif [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ]; then |
slaxemulator@80 | 386 ln -sf $SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma $SRCISO_DIR/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma |
slaxemulator@26 | 387 fi |
slaxemulator@80 | 388 else |
slaxemulator@80 | 389 [ -f "$SOURCES_REPOSITORY/$TARBALL" ] && ln -sf $SOURCES_REPOSITORY/$TARBALL $SRCISO_DIR/$TARBALL |
slaxemulator@80 | 390 [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && ln -sf $SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma $SRCISO_DIR/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma |
slaxemulator@80 | 391 fi |
slaxemulator@26 | 392 done |
slaxemulator@80 | 393 done |
slaxemulator@80 | 394 cd $SRCISO_DIR |
slaxemulator@80 | 395 info "Make md5sum file for sources" |
slaxemulator@80 | 396 find * -not -type d | grep -v md5sum | xargs md5sum > md5sum |
slaxemulator@80 | 397 cd $WORKING |
slaxemulator@26 | 398 fi |
slaxemulator@26 | 399 |
slaxemulator@26 | 400 } |
slaxemulator@0 | 401 |
slaxemulator@28 | 402 backup_all() |
slaxemulator@28 | 403 { |
slaxemulator@28 | 404 if [ "${BACKUP_ALL}" = "yes" ]; then |
slaxemulator@34 | 405 [ -d $SRCISO_DIR ] || ln -sf $SOURCES_REPOSITORY $SRCISO_DIR |
slaxemulator@34 | 406 [ -d $PKGISO_DIR ] || ln -sf $PACKAGES_REPOSITORY $PKGISO_DIR |
slaxemulator@28 | 407 fi |
slaxemulator@28 | 408 } |
slaxemulator@28 | 409 |
slaxemulator@0 | 410 # _mksquash dirname |
slaxemulator@0 | 411 _mksquash () { |
slaxemulator@0 | 412 if [ ! -d "$1" ]; then |
slaxemulator@0 | 413 error "Error: '$1' is not a directory" |
slaxemulator@0 | 414 return 1 |
slaxemulator@0 | 415 fi |
slaxemulator@0 | 416 |
slaxemulator@0 | 417 if [ ! -d "$2" ]; then |
slaxemulator@0 | 418 error "Error: '$2' is not a directory" |
slaxemulator@0 | 419 return 1 |
slaxemulator@0 | 420 fi |
slaxemulator@0 | 421 |
slaxemulator@0 | 422 if [ ! -d "${1}${3}" ]; then |
slaxemulator@0 | 423 error "Error: '${1}${3}' is not a directory" |
slaxemulator@0 | 424 return 1 |
slaxemulator@0 | 425 fi |
slaxemulator@0 | 426 |
slaxemulator@0 | 427 time_dir="${3}" |
slaxemulator@0 | 428 sqimg="${2}/$(basename ${1}).${EXT}" |
slaxemulator@0 | 429 info "====> Generating SquashFS image for '${1}'" |
slaxemulator@0 | 430 if [ -e "${sqimg}" ]; then |
slaxemulator@0 | 431 dirhaschanged=$(find ${1}${time_dir} -newer ${sqimg}) |
slaxemulator@0 | 432 if [ "${dirhaschanged}" != "" ]; then |
slaxemulator@0 | 433 info "SquashFS image '${sqimg}' is not up to date, rebuilding..." |
slaxemulator@0 | 434 rm "${sqimg}" |
slaxemulator@0 | 435 else |
slaxemulator@0 | 436 info "SquashFS image '${sqimg}' is up to date, skipping." |
slaxemulator@0 | 437 return |
slaxemulator@0 | 438 fi |
slaxemulator@0 | 439 fi |
slaxemulator@0 | 440 |
slaxemulator@0 | 441 info "Creating SquashFS image. This may take some time..." |
slaxemulator@0 | 442 start=$(date +%s) |
slaxemulator@0 | 443 if [ "${QUIET}" = "y" ]; then |
slaxemulator@0 | 444 mksquashfs "${1}" "${sqimg}" -noappend ${MKOPTION} -comp ${COMPRESSION} >/dev/null |
slaxemulator@0 | 445 else |
slaxemulator@0 | 446 mksquashfs "${1}" "${sqimg}" -noappend ${MKOPTION} -comp ${COMPRESSION} |
slaxemulator@0 | 447 fi |
slaxemulator@0 | 448 minutes=$(echo $start $(date +%s) | awk '{ printf "%0.2f",($2-$1)/60 }') |
slaxemulator@0 | 449 info "Image creation done in $minutes minutes." |
slaxemulator@0 | 450 } |
slaxemulator@0 | 451 |
slaxemulator@0 | 452 imgcommon () { |
slaxemulator@41 | 453 for MOD in ${BASE_MODULES}; do |
slaxemulator@41 | 454 if [ -d "${MODULES_DIR}/${MOD}" ]; then |
slaxemulator@41 | 455 _mksquash "${MODULES_DIR}/${MOD}" "$ISODIR/$CDNAME/base" /var/lib/tazpkg/installed |
slaxemulator@41 | 456 fi |
slaxemulator@41 | 457 done |
slaxemulator@41 | 458 |
slaxemulator@0 | 459 if [ "${MODULES}" != "" ]; then |
slaxemulator@0 | 460 for MOD in ${MODULES}; do |
slaxemulator@0 | 461 if [ -d "${MODULES_DIR}/${MOD}" ]; then |
slaxemulator@41 | 462 _mksquash "${MODULES_DIR}/${MOD}" "$ISODIR/$CDNAME/modules" /var/lib/tazpkg/installed |
slaxemulator@0 | 463 fi |
slaxemulator@0 | 464 done |
slaxemulator@0 | 465 fi |
slaxemulator@80 | 466 |
slaxemulator@0 | 467 if [ "$HG_LIST" != "" ]; then |
slaxemulator@0 | 468 if [ "$COPY_HG" = "yes" ]; then |
slaxemulator@0 | 469 for hg in $HG_LIST; do |
slaxemulator@0 | 470 copy_hg $hg |
slaxemulator@0 | 471 squashfs_hg $hg |
slaxemulator@0 | 472 done |
slaxemulator@0 | 473 fi |
slaxemulator@0 | 474 fi |
slaxemulator@80 | 475 |
slaxemulator@80 | 476 if [ "$MY_HG_LIST" != "" ]; then |
slaxemulator@80 | 477 for my_hg in $MY_HG_LIST; do |
slaxemulator@80 | 478 HG_URL="$MY_HG_URL" |
slaxemulator@80 | 479 copy_hg $my_hg |
slaxemulator@80 | 480 WOK=${HG_DIR}/my-wok/home/slitaz/repos/my-wok |
slaxemulator@80 | 481 if [ -d $WOK/.hg ]; then |
slaxemulator@80 | 482 cd $WOK |
slaxemulator@80 | 483 hg update cooking |
slaxemulator@80 | 484 cd $PROFILE |
slaxemulator@0 | 485 fi |
slaxemulator@80 | 486 squashfs_hg $my_hg |
slaxemulator@0 | 487 done |
slaxemulator@0 | 488 fi |
slaxemulator@80 | 489 |
slaxemulator@34 | 490 [ -d $SRCISO_DIR ] && rm -r $SRCISO_DIR |
slaxemulator@34 | 491 [ -d $PKGISO_DIR ] && rm -r $PKGISO_DIR |
slaxemulator@31 | 492 |
slaxemulator@80 | 493 if [ -d ${HG_DIR}/my-wok/home/slitaz/repos/my-wok/.hg ]; then |
slaxemulator@80 | 494 WOK=${HG_DIR}/my-wok/home/slitaz/repos/my-wok |
slaxemulator@80 | 495 backup_pkg |
slaxemulator@80 | 496 backup_src |
slaxemulator@80 | 497 elif [ -d ${HG_DIR}/wok/home/slitaz/repos/wok/.hg ]; then |
slaxemulator@80 | 498 WOK=${HG_DIR}/wok/home/slitaz/repos/wok |
slaxemulator@26 | 499 backup_pkg |
slaxemulator@26 | 500 backup_src |
slaxemulator@26 | 501 fi |
slaxemulator@0 | 502 |
slaxemulator@28 | 503 backup_all |
slaxemulator@28 | 504 |
slaxemulator@0 | 505 info "====> Making bootable image" |
slaxemulator@0 | 506 |
slaxemulator@0 | 507 # Sanity checks |
slaxemulator@0 | 508 if [ ! -d "${ISODIR}" ]; then |
slaxemulator@0 | 509 error "Error: '${ISODIR}' doesn't exist. What did you do?!" |
slaxemulator@0 | 510 exit 1 |
slaxemulator@0 | 511 fi |
slaxemulator@0 | 512 |
slaxemulator@0 | 513 if [ ! -f "${SGNFILE}" ]; then |
slaxemulator@0 | 514 error "Error: the ${SGNFILE} file doesn't exist. This image won't do anything" |
slaxemulator@0 | 515 error " Protecting you from yourself and erroring out here..." |
slaxemulator@0 | 516 exit 1 |
slaxemulator@0 | 517 fi |
slaxemulator@0 | 518 |
slaxemulator@0 | 519 |
slaxemulator@0 | 520 if [ -e "${IMGNAME}" ]; then |
slaxemulator@0 | 521 if [ "${FORCE}" = "y" ]; then |
slaxemulator@0 | 522 info "Removing existing bootable image..." |
slaxemulator@0 | 523 rm -rf "${IMGNAME}" |
slaxemulator@0 | 524 else |
slaxemulator@0 | 525 error "Error: Image '${IMGNAME}' already exists, aborting." |
slaxemulator@0 | 526 exit 1 |
slaxemulator@0 | 527 fi |
slaxemulator@0 | 528 fi |
slaxemulator@0 | 529 |
slaxemulator@0 | 530 } |
slaxemulator@0 | 531 |
slaxemulator@0 | 532 make_iso () { |
slaxemulator@0 | 533 imgcommon |
slaxemulator@15 | 534 |
slaxemulator@15 | 535 info "Creating rootfs.gz" |
slaxemulator@15 | 536 pack_rootfs $INITRAMFS $ISODIR/boot/rootfs.gz |
slaxemulator@0 | 537 |
slaxemulator@19 | 538 if [ -d $PROFILE/rootcd ]; then |
slaxemulator@19 | 539 cp -af $PROFILE/rootcd/* $ISODIR/ |
slaxemulator@19 | 540 fi |
slaxemulator@19 | 541 |
slaxemulator@19 | 542 info "Copying isolinux files..." |
slaxemulator@19 | 543 if [ -d $INITRAMFS/boot/isolinux ]; then |
slaxemulator@19 | 544 cp -a $INITRAMFS/boot/isolinux $ISODIR/boot |
slaxemulator@19 | 545 fi |
slaxemulator@19 | 546 |
slaxemulator@0 | 547 if [ -d ${PROFILE}/overlay ]; then |
slaxemulator@0 | 548 _overlay |
slaxemulator@0 | 549 fi |
slaxemulator@0 | 550 |
slaxemulator@0 | 551 info "Creating ISO image..." |
slaxemulator@41 | 552 genisoimage -R -l -f -o $IMGNAME -b boot/isolinux/isolinux.bin \ |
slaxemulator@17 | 553 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ |
slaxemulator@41 | 554 -uid 0 -gid 0 \ |
slaxemulator@41 | 555 -udf -allow-limited-size -iso-level 3 \ |
slaxemulator@41 | 556 -V "SliTaz" -input-charset utf-8 -boot-info-table $ISODIR |
slaxemulator@0 | 557 if [ -x /usr/bin/isohybrid ]; then |
slaxemulator@0 | 558 info "Creating hybrid ISO..." |
slaxemulator@0 | 559 isohybrid "${IMGNAME}" |
slaxemulator@0 | 560 fi |
slaxemulator@28 | 561 md5sum "$IMGNAME" > $IMGMD5NAME |
slaxemulator@28 | 562 sed -i "s|$PROFILE/||g" $IMGMD5NAME |
slaxemulator@0 | 563 } |
slaxemulator@0 | 564 |
slaxemulator@2 | 565 if [ "$MODULES" != "" ]; then |
slaxemulator@2 | 566 union |
slaxemulator@2 | 567 else |
slaxemulator@2 | 568 error "MODULES was empty. exiting." |
slaxemulator@2 | 569 exit 1 |
slaxemulator@2 | 570 fi |
slaxemulator@0 | 571 |
slaxemulator@0 | 572 make_iso |