slitaz-modular annotate mkiso.sh @ rev 28

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