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