slitaz-modular annotate mkiso.sh @ rev 82

Fixed mkiso.sh to remove log files if then exist. This is so the new logs are not added to the older ones.
author Christopher Rogers <slaxemulator@gmail.com>
date Wed Apr 27 05:29:02 2011 +0000 (2011-04-27)
parents 51467048ef4f
children 7bc8e3987a83
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@82 145 [ -f $LOG/initramfs.log ] && rm -f $LOG/initramfs.log
slaxemulator@17 146 cat "$BASEDIR/initramfs/initramfs.list" | grep -v "^#" | while read pkgname; do
slaxemulator@5 147 if [ ! -f ${INITRAMFS}/var/lib/tazpkg/installed/${pkgname}/files.list ]; then
slaxemulator@0 148 tazpkg get-install $pkgname --root=$INITRAMFS | tee -a $LOG/initramfs.log
slaxemulator@0 149 sleep 1
slaxemulator@0 150 else
slaxemulator@0 151 info "${pkgname} installed"
slaxemulator@0 152 fi
slaxemulator@0 153 done
slaxemulator@0 154
slaxemulator@0 155 if [ ! -d $ISODIR/boot ]; then
slaxemulator@0 156 mkdir -p $ISODIR/boot
slaxemulator@0 157 fi
slaxemulator@0 158
slaxemulator@15 159 #if [ ! -f $ISODIR/boot/bzImage ]; then
slaxemulator@34 160 cp -a $INITRAMFS/boot/vmlinuz* $ISODIR/boot/bzImage
slaxemulator@0 161 rm -f $INITRAMFS/boot/vmlinuz*
slaxemulator@34 162 if [ -f $INITRAMFS/boot/gpxe ]; then
slaxemulator@34 163 cp -a $INITRAMFS/boot/gpxe $ISODIR/boot/gpxe
slaxemulator@41 164 rm -f $INITRAMFS/boot/gpxe
slaxemulator@34 165 fi
slaxemulator@15 166 #fi
slaxemulator@17 167 if [ -d $BASEDIR/initramfs ]; then
slaxemulator@41 168 for i in $KEY_FILES; do
slaxemulator@41 169 if [ -f $BASEDIR/initramfs/$i ]; then
slaxemulator@41 170 cp -af $BASEDIR/initramfs/$i $INITRAMFS
slaxemulator@41 171 fi
slaxemulator@41 172 done
slaxemulator@0 173 fi
slaxemulator@34 174
slaxemulator@41 175 if [ -f $INITRAMFS/liblinuxlive ]; then
slaxemulator@41 176 sed -i "s|^#MIRROR|MIRROR=$MIRROR_DIR|g" $INITRAMFS/liblinuxlive
slaxemulator@34 177 fi
slaxemulator@41 178
slaxemulator@0 179 }
slaxemulator@0 180
slaxemulator@0 181 copy_hg() {
slaxemulator@26 182 if [ ! -d ${HG_DIR}/${1}/${HG_PATH}/${1} ]; then
slaxemulator@0 183 info "Cloning $1 repo ..."
slaxemulator@26 184 hg clone $HG_URL/${1} ${HG_DIR}/${1}/${HG_PATH}/${1}
slaxemulator@26 185 if [ $(grep -l "^HG_URL=$HG_URL" $PROFILE/config) ]; then
slaxemulator@26 186 if [ ! $(grep -l "$HG_URL" ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc) ]; then
slaxemulator@26 187 echo "mirror = $HG_URL/$1" >> ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc
slaxemulator@26 188 fi
slaxemulator@26 189 fi
slaxemulator@26 190 elif [ -d ${HG_DIR}/${1}/${HG_PATH}/${1} -a ${UPDATE_HG} = "yes" ]; then
slaxemulator@0 191 info "Updating $1 repo ..."
slaxemulator@26 192 cd ${HG_DIR}/${1}/${HG_PATH}/${1}
slaxemulator@26 193 hg pull $HG_URL/${1} -u
slaxemulator@26 194 if [ $(grep -l "^HG_URL=$HG_URL" $PROFILE/config) ]; then
slaxemulator@26 195 if [ ! $(grep -l "$HG_URL" ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc) ]; then
slaxemulator@26 196 echo "mirror = $HG_URL/$1" >> ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc
slaxemulator@26 197 fi
slaxemulator@26 198 fi
slaxemulator@0 199 cd $PROFILE
slaxemulator@0 200 fi
slaxemulator@0 201 }
slaxemulator@0 202
slaxemulator@0 203 squashfs_hg() {
slaxemulator@0 204 if [ ! -d "$ISODIR/$CDNAME/modules/hg" ]; then
slaxemulator@0 205 mkdir -p "$ISODIR/$CDNAME/modules/hg"
slaxemulator@0 206 fi
slaxemulator@26 207 if [ -d ${HG_DIR}/${1}/ ]; then
slaxemulator@26 208 _mksquash ${HG_DIR}/${1} "$ISODIR/$CDNAME/modules/hg/" /${HG_PATH}/${1}
slaxemulator@0 209 fi
slaxemulator@0 210 }
slaxemulator@0 211
slaxemulator@0 212 slitaz_union () {
slaxemulator@0 213
slaxemulator@0 214 if [ -d ${MODULES_DIR}/${mod}/var/lib/tazpkg/installed ]; then
slaxemulator@0 215 echo "${mod} module exist. Moving on."
slaxemulator@0 216 elif [ ! -d ${MODULES_DIR}/${mod}/var/lib/tazpkg/installed ]; then
slaxemulator@0 217 if [ -f "$PROFILE/list/${mod}.list" ]; then
slaxemulator@82 218 [ -f ${LOG}/${mod}-current.log ] && rm -f ${LOG}/${mod}-current.log
slaxemulator@0 219 cat "$PROFILE/list/${mod}.list" | grep -v "^#" | while read pkgname; do
slaxemulator@5 220 if [ ! -f ${UNION}/var/lib/tazpkg/installed/${pkgname}/files.list ]; then
slaxemulator@0 221 tazpkg get-install $pkgname --root=${UNION} | tee -a ${LOG}/${mod}-current.log
slaxemulator@0 222 sleep 1
slaxemulator@0 223 else
slaxemulator@0 224 info "${pkgname} installed"
slaxemulator@0 225 fi
slaxemulator@0 226 done
slaxemulator@0 227 fi
slaxemulator@0 228
slaxemulator@0 229 if [ -f $PROFILE/list/${mod}.removelist ]; then
slaxemulator@82 230 [ -f ${LOG}/${mod}-current-removelist.log ] && rm -f ${LOG}/${mod}-current-removelist.log
slaxemulator@0 231 cat "$PROFILE/list/${mod}.removelist" | grep -v "^#" | while read pkgname; do
slaxemulator@5 232 if [ -f ${UNION}/var/lib/tazpkg/installed/${pkgname}/files.list ]; then
slaxemulator@82 233 echo "y" | tazpkg remove ${pkgname} --root=${UNION} | tee -a ${LOG}/${mod}-current-removelist.log
slaxemulator@0 234 sleep 1
slaxemulator@0 235 else
slaxemulator@0 236 info "${pkgname} removed"
slaxemulator@0 237 fi
slaxemulator@0 238 done
slaxemulator@0 239 fi
slaxemulator@0 240 fi
slaxemulator@0 241 }
slaxemulator@0 242
slaxemulator@0 243 union () {
slaxemulator@41 244 if [ "$BASE_MODULES" != "" ]; then
slaxemulator@41 245 UNION_MODULES="$BASE_MODULES $MODULES"
slaxemulator@41 246 elif [ "$MODULES" != "" ]; then
slaxemulator@41 247 UNION_MODULES="$MODULES"
slaxemulator@41 248 else
slaxemulator@41 249 error "Error: no modules assigned in config for profile."
slaxemulator@41 250 exit 1
slaxemulator@41 251 fi
slaxemulator@41 252
slaxemulator@0 253 mkdir -p $WORKING
slaxemulator@0 254 mkdir -p $UNION
slaxemulator@0 255 mkdir -p $LOG
slaxemulator@0 256 mkdir -p $ISODIR/${CDNAME}/base
slaxemulator@0 257 mkdir -p $ISODIR/${CDNAME}/modules
slaxemulator@0 258 mkdir -p $ISODIR/${CDNAME}/optional
slaxemulator@0 259 mkdir -p $ISODIR/${CDNAME}/rootcopy
slaxemulator@0 260 mkdir -p $ISODIR/${CDNAME}/tmp
slaxemulator@0 261 mkdir -p $LASTBR
slaxemulator@34 262
slaxemulator@0 263 touch $SGNFILE
slaxemulator@0 264
slaxemulator@0 265 modprobe aufs
slaxemulator@0 266 if [ $? -ne 0 ]; then
slaxemulator@0 267 error "Error loading Union filesystem module. (aufs)"
slaxemulator@0 268 exit 1
slaxemulator@0 269 fi
slaxemulator@15 270
slaxemulator@15 271 # $INITRAMFS is now $LASTBR
slaxemulator@15 272 # This will be copyed to /mnt/memory/changes on boot
slaxemulator@15 273 initramfs
slaxemulator@0 274
slaxemulator@0 275 mount -t aufs -o br:${LASTBR}=rw aufs ${UNION}
slaxemulator@0 276 if [ $? -ne 0 ]; then
slaxemulator@0 277 error "Error mounting $union."
slaxemulator@0 278 exit 1
slaxemulator@0 279 fi
slaxemulator@15 280
slaxemulator@0 281 info "====> Installing packages to '$UNION'"
slaxemulator@34 282 for mod in $UNION_MODULES; do
slaxemulator@0 283
slaxemulator@0 284 if [ "$CLEAN_MODULES_DIR" = "yes" ]; then
slaxemulator@0 285 if [ -d $MODULES_DIR/$mod ]; then
slaxemulator@0 286 rm -Rf $MODULES_DIR/$mod
slaxemulator@0 287 fi
slaxemulator@0 288 fi
slaxemulator@0 289
slaxemulator@0 290 if [ ! -d $MODULES_DIR/$mod ]; then
slaxemulator@0 291 mkdir -p $MODULES_DIR/$mod
slaxemulator@0 292 fi
slaxemulator@0 293 info "Adding $MODULES_DIR/$mod as top branch of union."
slaxemulator@0 294 mount -t aufs -o remount,add:0:${MODULES_DIR}/${mod}=rw aufs $UNION
slaxemulator@0 295 info "Adding $LASTBR as lower branch of union."
slaxemulator@0 296 mount -t aufs -o remount,mod:${LASTBR}=rr+wh aufs $UNION
slaxemulator@0 297 LASTBR="$MODULES_DIR/${mod}"
slaxemulator@0 298
slaxemulator@0 299 slitaz_union
slaxemulator@0 300 done
slaxemulator@41 301
slaxemulator@26 302 if [ -d ${UNION}/${INSTALLED} ]; then
slaxemulator@41 303 ls ${UNION}/${INSTALLED} | sort > $ISODIR/packages-installed.list
slaxemulator@26 304 fi
slaxemulator@26 305
slaxemulator@0 306 info "Unmounting union"
slaxemulator@0 307 umount -l "${UNION}"
slaxemulator@0 308
slaxemulator@0 309 info "Removing unionfs .wh. files."
slaxemulator@0 310 find ${MODULES_DIR} -type f -name ".wh.*" -exec rm {} \;
slaxemulator@0 311 find ${MODULES_DIR} -type d -name ".wh.*" -exec rm -rf {} \;
slaxemulator@0 312 }
slaxemulator@0 313
slaxemulator@26 314 backup_pkg() {
slaxemulator@26 315 if [ "${BACKUP_PACKAGES}" = "yes" ]; then
slaxemulator@34 316 [ -d $PKGISO_DIR ] && rm -r $PKGISO_DIR
slaxemulator@34 317 mkdir -p $PKGISO_DIR
slaxemulator@26 318 info "Making cooking list based installed packages in union"
slaxemulator@29 319 # this is to filter out packages build by get-
slaxemulator@29 320 # packages that don't exist in repo or wok
slaxemulator@29 321 cat $ISODIR/packages-installed.list | while read pkg; do
slaxemulator@29 322 if [ ! -f $WOK/$pkg/receipt ]; then
slaxemulator@29 323 sed -i "s|$pkg||g" $ISODIR/packages-installed.list
slaxemulator@26 324 fi
slaxemulator@26 325 done
slaxemulator@29 326 tazwok gen-cooklist $ISODIR/packages-installed.list > $ISODIR/cookorder.list
slaxemulator@29 327 [ -f $INCOMING_REPOSITORY/wok-wanted.txt ] || tazwok gen-wok-db
slaxemulator@26 328
slaxemulator@41 329 CACHE_REPOSITORY="$CACHE_DIR/$(cat /etc/slitaz-release)/packages"
slaxemulator@41 330
slaxemulator@29 331 cat $ISODIR/cookorder.list | grep -v "^#" | while read pkg; do
slaxemulator@29 332 rwanted=$(grep $'\t'$pkg$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1)
slaxemulator@29 333 pkg_VERSION="$(grep -m1 -A1 ^$pkg$ $PACKAGES_REPOSITORY/packages.txt | \
slaxemulator@29 334 tail -1 | sed 's/ *//')"
slaxemulator@41 335 incoming_pkg_VERSION="$(grep -m1 -A1 ^$pkg$ $INCOMING_REPOSITORY/packages.txt | \
slaxemulator@41 336 tail -1 | sed 's/ *//')"
slaxemulator@29 337 for wanted in $rwanted; do
slaxemulator@41 338 if [ -f $INCOMING_REPOSITORY/$wanted-$incoming_pkg_VERSION.tazpkg ]; then
slaxemulator@41 339 ln -sf $INCOMING_REPOSITORY/$wanted-$incoming_pkg_VERSION.tazpkg $PKGISO_DIR/$wanted-$incoming_pkg_VERSION.tazpkg
slaxemulator@41 340 elif [ -f $PACKAGES_REPOSITORY/$wanted-$pkg_VERSION.tazpkg ]; then
slaxemulator@34 341 ln -sf $PACKAGES_REPOSITORY/$wanted-$pkg_VERSION.tazpkg $PKGISO_DIR/$wanted-$pkg_VERSION.tazpkg
slaxemulator@41 342 elif [ -f $CACHE_REPOSITORY/$Wanted-$pkg_VERSION.tazpkg ]; then
slaxemulator@41 343 ln -sf $CACHE_REPOSITORY/$wanted-$pkg_VERSION.tazpkg $PKGISO_DIR/$wanted-$pkg_VERSION.tazpkg
slaxemulator@29 344 fi
slaxemulator@29 345 done
slaxemulator@41 346
slaxemulator@29 347 for i in $(ls $WOK/$pkg/receipt); do
slaxemulator@80 348 unset SOURCE TARBALL WANTED PACKAGE VERSION pkg_VERSION COOK_OPT WGET_URL
slaxemulator@29 349 source $i
slaxemulator@29 350 pkg_VERSION="$(grep -m1 -A1 ^$PACKAGE$ $PACKAGES_REPOSITORY/packages.txt | \
slaxemulator@29 351 tail -1 | sed 's/ *//')"
slaxemulator@41 352 incoming_pkg_VERSION="$(grep -m1 -A1 ^$pkg$ $INCOMING_REPOSITORY/packages.txt | \
slaxemulator@41 353 tail -1 | sed 's/ *//')"
slaxemulator@29 354 [ "$WGET_URL" ] || continue
slaxemulator@41 355 if [ -f $INCOMING_REPOSITORY/$PACKAGE-$incoming_pkg_VERSION.tazpkg ]; then
slaxemulator@41 356 ln -sf $INCOMING_REPOSITORY/$PACKAGE-$incoming_pkg_VERSION.tazpkg $PKGISO_DIR/$PACKAGE-$incoming_pkg_VERSION.tazpkg
slaxemulator@41 357 elif [ -f $PACKAGES_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg ]; then
slaxemulator@34 358 ln -sf $PACKAGES_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg $PKGISO_DIR/$PACKAGE-$pkg_VERSION.tazpkg
slaxemulator@41 359 elif [ -f $CACHE_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg ]; then
slaxemulator@41 360 ln -sf $CACHE_REPOSITORY/$PACKAGE-$pkg_VERSION.tazpkg $PKGISO_DIR/$PACKAGE-$pkg_VERSION.tazpkg
slaxemulator@26 361 fi
slaxemulator@26 362 done
slaxemulator@26 363 done
slaxemulator@26 364
slaxemulator@82 365 [ -f $LOG/packages-gen-list.log ] && rm -f $LOG/packages-gen-list.log
slaxemulator@82 366 [ -d $PKGISO_DIR ] && tazwok gen-list $PKGISO_DIR | tee -a $LOG/packages-gen-list.log
slaxemulator@26 367 fi
slaxemulator@26 368
slaxemulator@26 369 }
slaxemulator@26 370
slaxemulator@26 371 backup_src() {
slaxemulator@26 372
slaxemulator@26 373 if [ "${BACKUP_PACKAGES}" = "yes" -a "${BACKUP_SOURCES}" = "yes" ]; then
slaxemulator@80 374 [ -d $SOURCES_REPOSITORY ] || mkdir -p $SOURCES_REPOSITORY
slaxemulator@80 375 [ -d $SRCISO_DIR ] && rm -r $SRCISO_DIR
slaxemulator@80 376 mkdir -p $SRCISO_DIR
slaxemulator@80 377 cat $ISODIR/cookorder.list | grep -v "^#"| while read pkg; do
slaxemulator@80 378 #rwanted=$(grep $'\t'$pkg$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1)
slaxemulator@80 379 for i in $(ls $WOK/$pkg/receipt); do
slaxemulator@80 380 unset SOURCE TARBALL WANTED PACKAGE VERSION COOK_OPT WGET_URL
slaxemulator@80 381 source $i
slaxemulator@80 382 #{ [ ! "$TARBALL" ] || [ ! "$WGET_URL" ] ; } && continue
slaxemulator@80 383 [ "$WGET_URL" ] || continue
slaxemulator@80 384 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \
slaxemulator@80 385 [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ]; then
slaxemulator@80 386 tazwok get-src $PACKAGE --nounpack
slaxemulator@80 387 if [ -f "$SOURCES_REPOSITORY/$TARBALL" ]; then
slaxemulator@80 388 ln -sf $SOURCES_REPOSITORY/$TARBALL $SRCISO_DIR/$TARBALL
slaxemulator@80 389 elif [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ]; then
slaxemulator@80 390 ln -sf $SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma $SRCISO_DIR/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma
slaxemulator@26 391 fi
slaxemulator@80 392 else
slaxemulator@80 393 [ -f "$SOURCES_REPOSITORY/$TARBALL" ] && ln -sf $SOURCES_REPOSITORY/$TARBALL $SRCISO_DIR/$TARBALL
slaxemulator@80 394 [ -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 395 fi
slaxemulator@26 396 done
slaxemulator@80 397 done
slaxemulator@80 398 cd $SRCISO_DIR
slaxemulator@80 399 info "Make md5sum file for sources"
slaxemulator@80 400 find * -not -type d | grep -v md5sum | xargs md5sum > md5sum
slaxemulator@80 401 cd $WORKING
slaxemulator@26 402 fi
slaxemulator@26 403
slaxemulator@26 404 }
slaxemulator@0 405
slaxemulator@28 406 backup_all()
slaxemulator@28 407 {
slaxemulator@28 408 if [ "${BACKUP_ALL}" = "yes" ]; then
slaxemulator@34 409 [ -d $SRCISO_DIR ] || ln -sf $SOURCES_REPOSITORY $SRCISO_DIR
slaxemulator@34 410 [ -d $PKGISO_DIR ] || ln -sf $PACKAGES_REPOSITORY $PKGISO_DIR
slaxemulator@28 411 fi
slaxemulator@28 412 }
slaxemulator@28 413
slaxemulator@0 414 # _mksquash dirname
slaxemulator@0 415 _mksquash () {
slaxemulator@0 416 if [ ! -d "$1" ]; then
slaxemulator@0 417 error "Error: '$1' is not a directory"
slaxemulator@0 418 return 1
slaxemulator@0 419 fi
slaxemulator@0 420
slaxemulator@0 421 if [ ! -d "$2" ]; then
slaxemulator@0 422 error "Error: '$2' is not a directory"
slaxemulator@0 423 return 1
slaxemulator@0 424 fi
slaxemulator@0 425
slaxemulator@0 426 if [ ! -d "${1}${3}" ]; then
slaxemulator@0 427 error "Error: '${1}${3}' is not a directory"
slaxemulator@0 428 return 1
slaxemulator@0 429 fi
slaxemulator@0 430
slaxemulator@0 431 time_dir="${3}"
slaxemulator@0 432 sqimg="${2}/$(basename ${1}).${EXT}"
slaxemulator@0 433 info "====> Generating SquashFS image for '${1}'"
slaxemulator@0 434 if [ -e "${sqimg}" ]; then
slaxemulator@0 435 dirhaschanged=$(find ${1}${time_dir} -newer ${sqimg})
slaxemulator@0 436 if [ "${dirhaschanged}" != "" ]; then
slaxemulator@0 437 info "SquashFS image '${sqimg}' is not up to date, rebuilding..."
slaxemulator@0 438 rm "${sqimg}"
slaxemulator@0 439 else
slaxemulator@0 440 info "SquashFS image '${sqimg}' is up to date, skipping."
slaxemulator@0 441 return
slaxemulator@0 442 fi
slaxemulator@0 443 fi
slaxemulator@0 444
slaxemulator@0 445 info "Creating SquashFS image. This may take some time..."
slaxemulator@0 446 start=$(date +%s)
slaxemulator@0 447 if [ "${QUIET}" = "y" ]; then
slaxemulator@0 448 mksquashfs "${1}" "${sqimg}" -noappend ${MKOPTION} -comp ${COMPRESSION} >/dev/null
slaxemulator@0 449 else
slaxemulator@0 450 mksquashfs "${1}" "${sqimg}" -noappend ${MKOPTION} -comp ${COMPRESSION}
slaxemulator@0 451 fi
slaxemulator@0 452 minutes=$(echo $start $(date +%s) | awk '{ printf "%0.2f",($2-$1)/60 }')
slaxemulator@0 453 info "Image creation done in $minutes minutes."
slaxemulator@0 454 }
slaxemulator@0 455
slaxemulator@0 456 imgcommon () {
slaxemulator@41 457 for MOD in ${BASE_MODULES}; do
slaxemulator@41 458 if [ -d "${MODULES_DIR}/${MOD}" ]; then
slaxemulator@41 459 _mksquash "${MODULES_DIR}/${MOD}" "$ISODIR/$CDNAME/base" /var/lib/tazpkg/installed
slaxemulator@41 460 fi
slaxemulator@41 461 done
slaxemulator@41 462
slaxemulator@0 463 if [ "${MODULES}" != "" ]; then
slaxemulator@0 464 for MOD in ${MODULES}; do
slaxemulator@0 465 if [ -d "${MODULES_DIR}/${MOD}" ]; then
slaxemulator@41 466 _mksquash "${MODULES_DIR}/${MOD}" "$ISODIR/$CDNAME/modules" /var/lib/tazpkg/installed
slaxemulator@0 467 fi
slaxemulator@0 468 done
slaxemulator@0 469 fi
slaxemulator@80 470
slaxemulator@0 471 if [ "$HG_LIST" != "" ]; then
slaxemulator@0 472 if [ "$COPY_HG" = "yes" ]; then
slaxemulator@0 473 for hg in $HG_LIST; do
slaxemulator@0 474 copy_hg $hg
slaxemulator@0 475 squashfs_hg $hg
slaxemulator@0 476 done
slaxemulator@0 477 fi
slaxemulator@0 478 fi
slaxemulator@80 479
slaxemulator@80 480 if [ "$MY_HG_LIST" != "" ]; then
slaxemulator@80 481 for my_hg in $MY_HG_LIST; do
slaxemulator@80 482 HG_URL="$MY_HG_URL"
slaxemulator@80 483 copy_hg $my_hg
slaxemulator@80 484 WOK=${HG_DIR}/my-wok/home/slitaz/repos/my-wok
slaxemulator@80 485 if [ -d $WOK/.hg ]; then
slaxemulator@80 486 cd $WOK
slaxemulator@80 487 hg update cooking
slaxemulator@80 488 cd $PROFILE
slaxemulator@0 489 fi
slaxemulator@80 490 squashfs_hg $my_hg
slaxemulator@0 491 done
slaxemulator@0 492 fi
slaxemulator@80 493
slaxemulator@34 494 [ -d $SRCISO_DIR ] && rm -r $SRCISO_DIR
slaxemulator@34 495 [ -d $PKGISO_DIR ] && rm -r $PKGISO_DIR
slaxemulator@31 496
slaxemulator@80 497 if [ -d ${HG_DIR}/my-wok/home/slitaz/repos/my-wok/.hg ]; then
slaxemulator@80 498 WOK=${HG_DIR}/my-wok/home/slitaz/repos/my-wok
slaxemulator@80 499 backup_pkg
slaxemulator@80 500 backup_src
slaxemulator@80 501 elif [ -d ${HG_DIR}/wok/home/slitaz/repos/wok/.hg ]; then
slaxemulator@80 502 WOK=${HG_DIR}/wok/home/slitaz/repos/wok
slaxemulator@26 503 backup_pkg
slaxemulator@26 504 backup_src
slaxemulator@26 505 fi
slaxemulator@0 506
slaxemulator@28 507 backup_all
slaxemulator@28 508
slaxemulator@0 509 info "====> Making bootable image"
slaxemulator@0 510
slaxemulator@0 511 # Sanity checks
slaxemulator@0 512 if [ ! -d "${ISODIR}" ]; then
slaxemulator@0 513 error "Error: '${ISODIR}' doesn't exist. What did you do?!"
slaxemulator@0 514 exit 1
slaxemulator@0 515 fi
slaxemulator@0 516
slaxemulator@0 517 if [ ! -f "${SGNFILE}" ]; then
slaxemulator@0 518 error "Error: the ${SGNFILE} file doesn't exist. This image won't do anything"
slaxemulator@0 519 error " Protecting you from yourself and erroring out here..."
slaxemulator@0 520 exit 1
slaxemulator@0 521 fi
slaxemulator@0 522
slaxemulator@0 523
slaxemulator@0 524 if [ -e "${IMGNAME}" ]; then
slaxemulator@0 525 if [ "${FORCE}" = "y" ]; then
slaxemulator@0 526 info "Removing existing bootable image..."
slaxemulator@0 527 rm -rf "${IMGNAME}"
slaxemulator@0 528 else
slaxemulator@0 529 error "Error: Image '${IMGNAME}' already exists, aborting."
slaxemulator@0 530 exit 1
slaxemulator@0 531 fi
slaxemulator@0 532 fi
slaxemulator@0 533
slaxemulator@0 534 }
slaxemulator@0 535
slaxemulator@0 536 make_iso () {
slaxemulator@0 537 imgcommon
slaxemulator@15 538
slaxemulator@15 539 info "Creating rootfs.gz"
slaxemulator@15 540 pack_rootfs $INITRAMFS $ISODIR/boot/rootfs.gz
slaxemulator@0 541
slaxemulator@19 542 if [ -d $PROFILE/rootcd ]; then
slaxemulator@19 543 cp -af $PROFILE/rootcd/* $ISODIR/
slaxemulator@19 544 fi
slaxemulator@19 545
slaxemulator@19 546 info "Copying isolinux files..."
slaxemulator@19 547 if [ -d $INITRAMFS/boot/isolinux ]; then
slaxemulator@19 548 cp -a $INITRAMFS/boot/isolinux $ISODIR/boot
slaxemulator@19 549 fi
slaxemulator@19 550
slaxemulator@0 551 if [ -d ${PROFILE}/overlay ]; then
slaxemulator@0 552 _overlay
slaxemulator@0 553 fi
slaxemulator@0 554
slaxemulator@0 555 info "Creating ISO image..."
slaxemulator@41 556 genisoimage -R -l -f -o $IMGNAME -b boot/isolinux/isolinux.bin \
slaxemulator@17 557 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
slaxemulator@41 558 -uid 0 -gid 0 \
slaxemulator@41 559 -udf -allow-limited-size -iso-level 3 \
slaxemulator@41 560 -V "SliTaz" -input-charset utf-8 -boot-info-table $ISODIR
slaxemulator@0 561 if [ -x /usr/bin/isohybrid ]; then
slaxemulator@0 562 info "Creating hybrid ISO..."
slaxemulator@0 563 isohybrid "${IMGNAME}"
slaxemulator@0 564 fi
slaxemulator@28 565 md5sum "$IMGNAME" > $IMGMD5NAME
slaxemulator@28 566 sed -i "s|$PROFILE/||g" $IMGMD5NAME
slaxemulator@0 567 }
slaxemulator@0 568
slaxemulator@2 569 if [ "$MODULES" != "" ]; then
slaxemulator@2 570 union
slaxemulator@2 571 else
slaxemulator@2 572 error "MODULES was empty. exiting."
slaxemulator@2 573 exit 1
slaxemulator@2 574 fi
slaxemulator@0 575
slaxemulator@0 576 make_iso