#!/bin/bash # # This script prepares the update packages to include them into # pacman repository. # # $Id$ # #exec 2>/tmp/prepare_updates_trace$$.log #set -x # ---------------------------------------------------------------------------- # Download base updates and include them into the list of packages # ---------------------------------------------------------------------------- downloadBaseUpdates () { echo "==============================================================================" echo "Checking for base updates..." countOfUpdates=0 downloadedUpdates=0 for searchresult in `find . -name "update.*.info" -o -name "base.*.info"` do echo "Found $searchresult" updateFolderName=${searchresult%/*} updateFolderName=${updateFolderName##*/} cd $updateFolderName while read subpackage rest do if [ "${subpackage%%>*}" == '} subpackage=${subpackage%<*} # Setup new package name newPackageName=${subpackage/update-/base} # Remove extension subpackageName=${subpackage%%.tar.*} # Extract version subpackageVersion=${subpackageName##*-} # Change from "update-x.y.z" to "basex.y.z" subpackageName=${subpackageName/update-/base} echo "Found subpackage $subpackage" cd .. if [ ! -d $subpackageName ] then mkdir ${subpackageName} cd ${subpackageName} if ! wget --no-check-certificate $username $password ${downloadURLRoot}/${updateFolderName}/${subpackage} -O ${newPackageName} then # Handle if package could not be downloaded cd .. rm -rf ${subpackageName} cd $updateFolderName echo "Unable to download ${subpackage}, skipping this package" continue fi if ! wget --no-check-certificate $username $password ${downloadURLRoot}/${updateFolderName}/${subpackage%%.info} -O ${newPackageName%%.info} then # Handle if package info file could not be downloaded cd .. rm -rf ${subpackageName} cd $updateFolderName echo "Unable to download ${subpackage%%.info}, skipping this package" continue fi # Increase counter of downloaded packages downloadedUpdates=$((downloadedUpdates+1)) downloadedCurrentPackage=true else cd ${subpackageName} if $doDebug then echo "Package ${subpackage%%.info} already downloaded." fi downloadedCurrentPackage=false fi # Increase counter of all packages countOfUpdates=$((countOfUpdates+1)) realPackageVersion=`grep "" ${newPackageName} | sed -e 's#^.*##' -e 's#.*\$##'` realPackageVersion=${realPackageVersion/cvs/svn} # Update package name and version on pkg info file sed -e "s#.*\$#${subpackageName}#" ${newPackageName} \ -e "#.*\$#${realPackageVersion}#" > ${newPackageName}.bak mv ${newPackageName}.bak ${newPackageName} cd .. echo "$subpackageName $subpackageName $realPackageVersion 7" >> activePackageFolders.txt if $downloadedCurrentPackage then # Store package data to be able to migrate only new packages echo "$subpackageName $subpackageName $realPackageVersion 7" >> downloadedPackageFolders.txt fi cd $updateFolderName fi done < ${searchresult##*/} cd .. done echo "Downloaded $downloadedUpdates new base updates, all in all $countOfUpdates base updates available." confirmContinue } # ---------------------------------------------------------------------------- # # ---------------------------------------------------------------------------- prepareUpdatePackages () { idx=1 previousVersion='base' for currentUpdatePackage in `ls base*/base*.info | LANG=C sort -t. -k1,1 -k2,2 -k3,3 -n` do echo "Preparing update $currentUpdatePackage" cd ${currentUpdatePackage//\/*} # --------------------------------------------------------- # Setup require tag on package info file to previous update sed -e "//d" -e "/.*/a\\" -e "${previousVersion}" ${currentUpdatePackage//*\/} > ${currentUpdatePackage//*\/}-$$ mv ${currentUpdatePackage//*\/}-$$ ${currentUpdatePackage//*\/} previousVersion='base '`grep "" ${currentUpdatePackage//*\/} | sed -e "s###g" -e "s###g"` cd - > /dev/null idx=$((idx+1)) done }