slitaz-modular annotate mkiso.sh @ rev 34

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