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 |