slitaz-modular annotate mkiso.sh @ rev 150

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