slitaz-modular rev 26
Adding support for backing up packages and sources. Moved hg repos to /home/slitaz/repos to be inline with tank server.
author | Christopher Rogers <slaxemulator@gmail.com> |
---|---|
date | Tue Feb 22 10:53:22 2011 +0000 (2011-02-22) |
parents | dcecdf9faad5 |
children | 2cb69be2a51a |
files | mkiso.sh |
line diff
1.1 --- a/mkiso.sh Tue Feb 22 10:50:13 2011 +0000 1.2 +++ b/mkiso.sh Tue Feb 22 10:53:22 2011 +0000 1.3 @@ -1,13 +1,6 @@ 1.4 -#!/bin/sh 1.5 +#!/bin/bash 1.6 1.7 -if [ -f "./tazwok.conf" ]; then 1.8 - . ./tazwok.conf 1.9 -elif [ -f "/etc/tazwok.conf" ]; then 1.10 - . /etc/tazwok.conf 1.11 -else 1.12 - echo -e "\nUnable to find tazwok configuration file : /etc/tazwok.conf" 1.13 - exit 1 1.14 -fi 1.15 +. /etc/slitaz/slitaz.conf 1.16 1.17 QUIET="y" 1.18 FORCE="y" 1.19 @@ -36,14 +29,16 @@ 1.20 LASTBR="$INITRAMFS" 1.21 SGNFILE="$ISODIR/$CDNAME/livecd.sgn" 1.22 MODULES_DIR="$WORKING/modules" 1.23 -HG_DIR="/home/slitaz/hg" 1.24 +HG_DIR="$WORKING/hg" 1.25 +HG_URL="http://hg.slitaz.org" 1.26 +HG_PATH="home/slitaz/repos" 1.27 COPY_HG="no" 1.28 UPDATE_HG="no" 1.29 BACKUP_SOURCES="no" 1.30 BACKUP_PACKAGES="no" 1.31 CLEAN_MODULES_DIR="no" 1.32 CLEAN_INITRAMFS="no" 1.33 -HG_LIST="flavors flavors-stable slitaz-base-files slitaz-boot-scripts slitaz-configs slitaz-doc slitaz-pizza slitaz-tools tank tazlito tazpkg tazusb tazwok website wok" 1.34 +HG_LIST="flavors flavors-stable libtaz slitaz-base-files slitaz-boot-scripts slitaz-configs slitaz-doc slitaz-forge slitaz-pizza slitaz-tools tank tazchroot tazlito tazpkg tazusb tazwok tazwok-experimental website wok wok-stable wok-tiny wok-undigest" 1.35 1.36 error () { echo -e "\033[1;31;40m!!! \033[1;37;40m$@\033[1;0m"; } 1.37 warn () { echo -e "\033[1;33;40m*** \033[1;37;40m$@\033[1;0m"; } 1.38 @@ -102,6 +97,13 @@ 1.39 echo 1 > /tmp/rootfs 1.40 } 1.41 1.42 +download() 1.43 +{ 1.44 + for file in $@; do 1.45 + wget -q $file && break 1.46 + done 1.47 +} 1.48 + 1.49 initramfs () { 1.50 1.51 if [ ! -e "$BASEDIR/initramfs/initramfs.list" ]; then 1.52 @@ -144,13 +146,23 @@ 1.53 } 1.54 1.55 copy_hg() { 1.56 - if [ ! -d ${HG_DIR}/${1}/home/slitaz/hg/$1 ]; then 1.57 + if [ ! -d ${HG_DIR}/${1}/${HG_PATH}/${1} ]; then 1.58 info "Cloning $1 repo ..." 1.59 - hg clone http://hg.slitaz.org/$1 ${HG_DIR}/${1}/home/slitaz/hg/$1 1.60 - elif [ -d ${HG_DIR}/${1}/home/slitaz/hg/$1 -a ${UPDATE_HG} = "yes" ]; then 1.61 + hg clone $HG_URL/${1} ${HG_DIR}/${1}/${HG_PATH}/${1} 1.62 + if [ $(grep -l "^HG_URL=$HG_URL" $PROFILE/config) ]; then 1.63 + if [ ! $(grep -l "$HG_URL" ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc) ]; then 1.64 + echo "mirror = $HG_URL/$1" >> ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc 1.65 + fi 1.66 + fi 1.67 + elif [ -d ${HG_DIR}/${1}/${HG_PATH}/${1} -a ${UPDATE_HG} = "yes" ]; then 1.68 info "Updating $1 repo ..." 1.69 - cd ${HG_DIR}/${1}/home/slitaz/hg/$1 && 1.70 - hg pull -u 1.71 + cd ${HG_DIR}/${1}/${HG_PATH}/${1} 1.72 + hg pull $HG_URL/${1} -u 1.73 + if [ $(grep -l "^HG_URL=$HG_URL" $PROFILE/config) ]; then 1.74 + if [ ! $(grep -l "$HG_URL" ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc) ]; then 1.75 + echo "mirror = $HG_URL/$1" >> ${HG_DIR}/${1}/${HG_PATH}/${1}/.hg/hgrc 1.76 + fi 1.77 + fi 1.78 cd $PROFILE 1.79 fi 1.80 } 1.81 @@ -159,8 +171,8 @@ 1.82 if [ ! -d "$ISODIR/$CDNAME/modules/hg" ]; then 1.83 mkdir -p "$ISODIR/$CDNAME/modules/hg" 1.84 fi 1.85 - if [ -d ${HG_DIR}/${1}/home/slitaz/hg/$1 ]; then 1.86 - _mksquash ${HG_DIR}/${1} "$ISODIR/$CDNAME/modules/hg" /home/slitaz/hg/$1 1.87 + if [ -d ${HG_DIR}/${1}/ ]; then 1.88 + _mksquash ${HG_DIR}/${1} "$ISODIR/$CDNAME/modules/hg/" /${HG_PATH}/${1} 1.89 fi 1.90 } 1.91 1.92 @@ -242,6 +254,11 @@ 1.93 slitaz_union 1.94 done 1.95 1.96 + if [ -d ${UNION}/${INSTALLED} ]; then 1.97 + find ${UNION}/${INSTALLED} -type d | sort > $ISODIR/packages-installed.list 1.98 + sed -i "s|${UNION}/${INSTALLED}/||g" $ISODIR/packages-installed.list 1.99 + fi 1.100 + 1.101 info "Unmounting union" 1.102 umount -l "${UNION}" 1.103 1.104 @@ -250,6 +267,87 @@ 1.105 find ${MODULES_DIR} -type d -name ".wh.*" -exec rm -rf {} \; 1.106 } 1.107 1.108 +backup_pkg() { 1.109 + if [ "${BACKUP_PACKAGES}" = "yes" ]; then 1.110 + [ -d $ISODIR/packages ] && rm -r $ISODIR/packages 1.111 + mkdir -p $ISODIR/packages 1.112 + info "Making cooking list based installed packages in union" 1.113 + tazwok gen-cooklist $ISODIR/packages-installed.list > $ISODIR/cookorder.list 1.114 + #[ -f $INCOMING_REPOSITORY/wok-wanted.txt ] || tazwok gen-wok-db 1.115 + 1.116 + info "Linking all installed packages to $ISODIR/packages" 1.117 + cat $ISODIR/packages-installed.list | while read PACKAGE; do 1.118 + VERSION=$(grep ^VERSION= ${HG_DIR}/wok/${PACKAGE}/receipt | cut -d "=" -f2 | sed -e 's/"//g') 1.119 + CACHE_PACKAGE=$(find $CACHE_DIR/$(cat /etc/slitaz-release)/packages -type f -name "$PACKAGE-$VERSION.tazpkg") 1.120 + if [ -f $CACHE_PACKAGE ]; then 1.121 + info "Copying $CACHE_PACKAGE to $ISODIR/packages" 1.122 + ln -sf $CACHE_PACKAGE $ISODIR/packages 1.123 + #elif [ ! -f $CACHE_PACKAGE ]; then 1.124 + # info "$CACHE_PACKAGE doesn't exist. Downloading it." 1.125 + # cd $CACHE_DIR/$(cat /etc/slitaz-release)/packgages 1.126 + # tazpkg get $PACKAGE 1.127 + # cd $WORKING 1.128 + # if [ -f $CACHE_PACKAGE ]; then 1.129 + # ln -sf $CACHE_PACKAGE $ISODIR/packages 1.130 + # fi 1.131 + fi 1.132 + done 1.133 + 1.134 + cat $ISODIR/cookorder.list | while read PACKAGE; do 1.135 + rwanted=$(grep $'\t'$PACKAGE$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1) 1.136 + echo $rwanted | while read WANTED_PKG; do 1.137 + VERSION=$(grep ^VERSION= ${HG_DIR}/wok/${WANTED_PKG}/receipt | cut -d "=" -f2 | sed -e 's/"//g') 1.138 + CACHE_PACKAGE=$(find $CACHE_DIR/$(cat /etc/slitaz-release)/packages -type f -name "$WANTED_PKG-$VERSION.tazpkg") 1.139 + if [ -f $CACHE_PACKAGE ]; then 1.140 + info "Copying $CACHE_PACKAGE to $ISODIR/packages" 1.141 + ln -sf $CACHE_PACKAGE $ISODIR/packages 1.142 + #elif [ ! -f $CACHE_PACKAGE ]; then 1.143 + # info "$CACHE_PACKAGE doesn't exist. Downloading it." 1.144 + # cd $CACHE_DIR/$(cat /etc/slitaz-release)/packgages &>/dev/null 1.145 + # tazpkg get $PACKAGE 1.146 + # cd $WORKING 1.147 + # if [ -f $CACHE_PACKAGE ]; then 1.148 + # ln -sf $CACHE_PACKAGE $ISODIR/packages 1.149 + # fi 1.150 + fi 1.151 + done 1.152 + done 1.153 + 1.154 + [ -d $ISODIR/packages ] && tazwok gen-list $ISODIR/packages 1.155 + fi 1.156 + 1.157 +} 1.158 + 1.159 +backup_src() { 1.160 + 1.161 + if [ "${BACKUP_PACKAGES}" = "yes" -a "${BACKUP_SOURCES}" = "yes" ]; then 1.162 + [ -d $SOURCES_REPOSITORY ] || mkdir -p $SOURCES_REPOSITORY 1.163 + [ -d $ISODIR/sources ] || mkdir -p $ISODIR/sources 1.164 + 1.165 + cat $ISODIR/cookorder.list | while read PACKAGE; do 1.166 + WGET_URL=$(grep ^WGET_URL= ${HG_DIR}/wok/${PACKAGE}/receipt | cut -d "=" -f2 | sed -e 's/"//g' | head -n 1) 1.167 + VERSION=$(grep ^VERSION= ${HG_DIR}/wok/${PACKAGE}/receipt | cut -d "=" -f2 | sed -e 's/"//g' | head -n 1) 1.168 + TARBALL=$(grep ^TARBALL= ${HG_DIR}/wok/${PACKAGE}/receipt | cut -d "=" -f2 | sed -e 's/"//g' | head -n 1) 1.169 + 1.170 + if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \ 1.171 + [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ]; then 1.172 + tazwok get-src $PACKAGE --nounpack 1.173 + if [ -f "$SOURCES_REPOSITORY/$TARBALL" ]; then 1.174 + ln -sf $SOURCES_REPOSITORY/$TARBALL $ISODIR/sources/$TARBALL 1.175 + elif [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ]; then 1.176 + ln -sf $SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma $ISODIR/sources/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma 1.177 + fi 1.178 + else 1.179 + [ -f "$SOURCES_REPOSITORY/$TARBALL" ] && ln -sf $SOURCES_REPOSITORY/$TARBALL $ISODIR/sources/$TARBALL 1.180 + fi 1.181 + done 1.182 + cd $ISODIR/sources 1.183 + info "Make md5sum file for sources" 1.184 + find * -not -type d | grep -v md5sum | xargs md5sum > md5sum 1.185 + cd $WORKING 1.186 + fi 1.187 + 1.188 +} 1.189 1.190 # _mksquash dirname 1.191 _mksquash () { 1.192 @@ -318,6 +416,10 @@ 1.193 fi 1.194 done 1.195 fi 1.196 + if [ -d ${HG_DIR}/wok ]; then 1.197 + backup_pkg 1.198 + backup_src 1.199 + fi 1.200 1.201 info "====> Making bootable image" 1.202