#!/bin/bash #Copyright 2004, William Stearns #Released under the GPL #Version 1.8 #If a given module doesn't have x86_64 rpms, do we grab the i386 versions instead? #OpteronFallback='' #No OpteronFallback='yes' #Yes Usage () { echo "Usage:" echo "$0 /full/path/to/top/level/yum/ arch [arch]... [module]... [urltop]..." echo echo '/full/path/to/top/level/yum/ is the top level, writable, directory' echo 'where all files will live.' echo echo 'arch is one of fc_1_i386, fc_2_i386, fc_1_x86_64, fc_2_x86_64, ' echo 'rh_7.3_i386, rh_9_i386, or allarch.' echo echo 'module is one of atrpms, ccrma, core, dag, dries, freshrpms, jpackage,' echo 'livna, newrpms, openpkg, updates, wstearns, ximian, or allmodules.' echo echo 'urltop is the start of the URL clients would need to type in to get to' echo 'these files, such as ftp://ftp.server/pub/ , http://web.server/mirror/ ,' echo 'or file:///mnt/nfsmirror/yum/ . Whatever you specify should have the' echo 'fedora directory immediately inside it. Multiple entries are fine; ' echo 'the most preferred url should come first and continue to less preferred' echo 'urls.' } randomof () { #Returns one of the parameters on the command line, picked at random #Sample call: echo `randomof Alan Bob Charlie Dave` declare -a ParamArray ParamCount=0 while [ -n "$1" ]; do ParamCount=$[ $ParamCount + 1 ] ParamArray[$ParamCount]="$1" shift done if [ "$ParamCount" -eq 0 ]; then #echo "No params to choose from" >&2 return fi RandChoice=$[ $RANDOM % $ParamCount + 1 ] #echo Returning $RandChoice out of $ParamCount >&2 echo "${ParamArray[$RandChoice]}" } requireutil () { while [ -n "$1" ]; do if ! type -path "$1" >/dev/null 2>/dev/null ; then echo Missing utility "$1". Please install it. >&2 return 1 #False, app is not available. fi shift done return 0 #True, app is there. } #End of requireutil if ! type -path repomanage.py >/dev/null 2>/dev/null ; then echo 'repomanage.py script strongly recommended; please pull from:' >&2 echo 'http://linux.duke.edu/projects/yum/download/misc/repomanage.py' >&2 fi if ! type -path createrepo >/dev/null 2>/dev/null ; then echo 'createrepo script (part of createrepo package) strongly recommended,' >&2 echo 'please install.' >&2 fi if ! type -path genbasedir >/dev/null 2>/dev/null ; then echo 'genbasedir script (part of apt package) strongly recommended,' >&2 echo 'please install.' >&2 fi requireutil cat mkdir rm rsync yum-arch || exit 1 if [ -z "$1" ]; then Usage exit 1 fi while [ -n "$1" ]; do case "$1" in allarch) fc_1_i386='fc_1_i386' fc_2_i386='fc_2_i386' fc_1_x86_64='fc_1_x86_64' fc_2_x86_64='fc_2_x86_64' rh_73_i386='rh_73_i386' rh_9_i386='rh_9_i386' ;; allmodules) ModList="atrpms ccrma core dag dries freshrpms jpackage livna newrpms openpkg updates wstearns ximian" ;; fc_1_i386) fc_1_i386='fc_1_i386' ;; fc_2_i386) fc_2_i386='fc_2_i386' ;; fc_1_x86_64) fc_1_x86_64='fc_1_x86_64' ;; fc_2_x86_64) fc_2_x86_64='fc_2_x86_64' ;; rh_7.3_i386) rh_73_i386='rh_73_i386' ;; rh_9_i386) rh_9_i386='rh_9_i386' ;; atrpms|ccrma|core|dag|dries|freshrpms|jpackage|livna|newrpms|openpkg|updates|wstearns|ximian) ModList="$ModList $1" ;; fedora) ModList="$ModList core updates" fc_1_i386='fc_1_i386' fc_2_i386='fc_2_i386' fc_1_x86_64='fc_1_x86_64' fc_2_x86_64='fc_2_x86_64' ;; redhat) ModList="$ModList core updates" rh_73_i386='rh_73_i386' rh_9_i386='rh_9_i386' ;; file://*|http://*|ftp://*) URLTop="$URLTop $1" ;; /*) if [ -z "$TopDir" ]; then TopDir="$1" else echo "One of \"$TopDir\" or \"$1\" is unknown, or top level directory" echo "is being defined twice. Exiting." exit 1 fi ;; *) echo "Unknown param $1. Exiting" exit 1 ;; esac shift done if [ -z "$fc_1_i386$fc_2_i386$fc_1_x86_64$fc_2_x86_64$rh_73_i386$rh_9_i386" ]; then echo "No architecture specified. To get all, specify \"allarch\" on the command line. Exiting." exit 1 fi if [ -z "$URLTop" ]; then URLTop="file://$TopDir" fi if [ -z "$ModList" ]; then ModList="atrpms ccrma core dag dries freshrpms jpackage livna newrpms openpkg updates wstearns ximian" fi echo "Requested modules: $ModList" echo "Requested architectures:" "$fc_1_i386" "$fc_2_i386" "$fc_1_x86_64" "$fc_2_x86_64" "$rh_73_i386" "$rh_9_i386" echo "Top Level directory: $TopDir (also accessible as $URLTop)" if [ ! -d $TopDir ]; then mkdir --parents "$TopDir" fi if ! cd "$TopDir" ; then echo "Failed to changed to Top Level directory $TopDir. Exiting." exit 1 fi LOCKFILE=$TopDir/yum-pull.lock [ -f "$LOCKFILE" ] && exit 0 trap "rm -f $LOCKFILE" EXIT touch $LOCKFILE renice +15 -p $$ >/dev/null 2>&1 #Rsync command and parameters RS=' rsync -a -q -L -H --timeout=240 --exclude .src.rpm --exclude debug/ --exclude headers/ --exclude repodata/ --exclude SRPMS ' #Rsync Delete #RD=" --delete --delete-after " #now that we have oldrpms to yank old files, strongly suggest not using $RsyncDelete for ModuleName in $ModList ; do Changed='' cd "$TopDir" if [ -n "$rh_73_i386" ]; then Changed="$Changed $TopDir/redhat/linux/7.3/i386/$ModuleName/" mkdir -p "$TopDir"/redhat/linux/7.3/i386/$ModuleName/packages/ touch "$TopDir"/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files ( cd "$TopDir"/redhat/linux/7.3/i386/ && rm -f RPMS.$ModuleName && ln -sf $ModuleName/packages RPMS.$ModuleName ) fi if [ -n "$rh_9_i386" ]; then Changed="$Changed $TopDir/redhat/linux/9/i386/$ModuleName/" mkdir -p "$TopDir"/redhat/linux/9/i386/$ModuleName/packages/ touch "$TopDir"/redhat/linux/9/i386/$ModuleName/packages/excluded-files ( cd "$TopDir"/redhat/linux/9/i386/ && rm -f RPMS.$ModuleName && ln -sf $ModuleName/packages RPMS.$ModuleName ) fi if [ -n "$fc_1_i386" ]; then Changed="$Changed $TopDir/fedora/linux/1/i386/$ModuleName/" mkdir -p "$TopDir"/fedora/linux/1/i386/$ModuleName/packages/ touch "$TopDir"/fedora/linux/1/i386/$ModuleName/packages/excluded-files ( cd "$TopDir"/fedora/linux/1/i386/ && rm -f RPMS.$ModuleName && ln -sf $ModuleName/packages RPMS.$ModuleName ) fi if [ -n "$fc_2_i386" ]; then Changed="$Changed $TopDir/fedora/linux/2/i386/$ModuleName/" mkdir -p "$TopDir"/fedora/linux/2/i386/$ModuleName/packages/ touch "$TopDir"/fedora/linux/2/i386/$ModuleName/packages/excluded-files ( cd "$TopDir"/fedora/linux/2/i386/ && rm -f RPMS.$ModuleName && ln -sf $ModuleName/packages RPMS.$ModuleName ) fi if [ -n "$fc_1_x86_64" ]; then Changed="$Changed $TopDir/fedora/linux/1/x86_64/$ModuleName/" mkdir -p "$TopDir"/fedora/linux/1/x86_64/$ModuleName/packages/ touch "$TopDir"/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files ( cd "$TopDir"/fedora/linux/1/x86_64/ && rm -f RPMS.$ModuleName && ln -sf $ModuleName/packages RPMS.$ModuleName ) fi if [ -n "$fc_2_x86_64" ]; then Changed="$Changed $TopDir/fedora/linux/2/x86_64/$ModuleName/" mkdir -p "$TopDir"/fedora/linux/2/x86_64/$ModuleName/packages/ touch "$TopDir"/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files ( cd "$TopDir"/fedora/linux/2/x86_64/ && rm -f RPMS.$ModuleName && ln -sf $ModuleName/packages RPMS.$ModuleName ) fi echo "Downloading files for $ModuleName" case "$ModuleName" in atrpms) Name='Fedora Linux $releasever - $basearch - atrpms' Source=`randomof 'rsync.hrz.tu-chemnitz.de::ftp/pub/linux/ATrpms/'` echo "Pulling from $Source" #It appears x86_64 is only available on fc2. Note, don't add $RD since we have two rsync pulls down into the same directory. Each wipes out the other if you use delete. #I'm not pulling the "at-bleeding" or "at-testing" directories. [ -n "$rh_73_i386" ] && $RS $Source/redhat/7.3/en/i386/at-good/* "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_73_i386" ] && $RS $Source/redhat/7.3/en/i386/at-stable/* "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $Source/redhat/9/en/i386/at-good/* "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $Source/redhat/9/en/i386/at-stable/* "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $Source/fedora/1/en/i386/RPMS.at-good/* "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $Source/fedora/1/en/i386/RPMS.at-stable/* "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $Source/fedora/2/en/i386/RPMS.at-good/* "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $Source/fedora/2/en/i386/RPMS.at-stable/* "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS $Source/fedora/1/en/i386/RPMS.at-good/* "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_1_x86_64" ] && $RS $Source/fedora/1/en/i386/RPMS.at-stable/* "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" fi [ -n "$fc_2_x86_64" ] && $RS $Source/fedora/2/en/x86_64/RPMS.at-good/* "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" [ -n "$fc_2_x86_64" ] && $RS $Source/fedora/2/en/x86_64/RPMS.at-stable/* "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; ccrma) Name='Fedora Linux $releasever - $basearch - ccrma' #No apparent x86_64 at the moment, no rh Source=`randomof 'ftp.upjs.sk::ftp/pub/mirrors/planet.ccrma/'` echo "Pulling from $Source" [ -n "$fc_1_i386" ] && $RS $RD "$Source/1/i386/*" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/2/i386/*" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/1/i386/*" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/2/i386/*" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" fi ;; core) Name='Fedora Linux $releasever - $basearch - core' Source=`randomof 'rsync://rsync.planetmirror.com/fedoralegacy/' 'rsync://mirror.pacific.net.au/fedoralegacy/' 'rsync://mirror.cpsc.ucalgary.ca/fedoralegacy/' 'rsync://ftp.tecnoera.com/ftp/pub/fedora/legacy/' 'rsync://ftp.fi.muni.cz/pub/linux/fedora/legacy/' 'rsync://rsync.mirror.ac.uk/download.fedoralegacy.org/legacy/' 'rsync://rsync.uni-bayreuth.de/fedoralegacy/' 'rsync://ftp-stud.fht-esslingen.de/fedoralegacy/' 'rsync://ftp.heanet.ie/mirrors/download.fedoralegacy.org/' 'rsync://rm.mirror.garr.it/fedoralegacy/' 'rsync://ftp.kddilabs.jp/fedora.leagacy/' 'rsync://ftp.riken.go.jp/fedoralegacy/' 'rsync://gnu.kookel.org/mirrors/fedoralegacy/' 'rsync://ftp.uninett.no/linux/RedHat/fedora-legacy/' 'rsync://ftp.iasi.roedu.net/fedoralegacy/' 'rsync://sunsite.rediris.es/fedora.legacy/' 'rsync://mirror3.cs.wisc.edu/pub/mirrors/linux/download.fedoralegacy.org/' 'rsync://rsync.gtlib.cc.gatech.edu/fedoralegacy/' 'rsync://mirror.physics.ncsu.edu/fedoralegacy/' 'rsync://limestone.uoregon.edu/ftp/fedoralegacy/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS $RD "$Source/redhat/7.3/os/i386/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/9/os/i386/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" Source=`randomof 'mirror.linux.duke.edu::fedora-linux-core/' 'distro.ibiblio.org::fedora-linux-core/' 'mirror.hiwaay.net::fedora-linux-core/' 'rpmfind.net::linux/fedora/core/' 'rsync.gtlib.cc.gatech.edu::fedora-linux-core/'` echo "Pulling from $Source" [ -n "$fc_1_i386" ] && $RS $RD "$Source/1/i386/os/Fedora/RPMS/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/2/i386/os/Fedora/RPMS/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/1/x86_64/os/Fedora/RPMS/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/2/x86_64/os/Fedora/RPMS/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; dag) Name='Fedora Linux $releasever - $basearch - dag' Source=`randomof 'apt.sw.be::pub/freshrpms/pub/dag/' 'ftp.heanet.ie::mirrors/ftp.freshrpms.net/pub/dag/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS $RD "$Source/redhat/7.3/en/i386/RPMS.dag/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/9/en/i386/RPMS.dag/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/fedora/1/en/i386/RPMS.dag/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/fedora/2/en/i386/RPMS.dag/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/fedora/1/en/i386/RPMS.dag/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" fi [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/fedora/2/en/x86_64/RPMS.dag/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; dries) Name='Fedora Linux $releasever - $basearch - dries' Source=`randomof 'rsync://apt.sw.be/pub/freshrpms/pub/dag/dries/' 'ftp.heanet.ie::mirrors/ftp.freshrpms.net/pub/dag/dries/'` echo "Pulling from $Source" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/9/en/i386/RPMS.dries/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/fedora/fc1/i386/RPMS.dries/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/fedora/fc2/i386/RPMS.dries/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/fedora/fc1/i386/RPMS.dries/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/fedora/fc2/i386/RPMS.dries/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" fi ;; freshrpms) Name='Fedora Linux $releasever - $basearch - freshrpms' Source=`randomof 'rsync.freshrpms.net::freshrpms/' 'apt.sw.be::pub/freshrpms/pub/freshrpms/' 'ftp.heanet.ie::mirrors/ftp.freshrpms.net/pub/freshrpms/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS $RD "$Source/redhat/7.3/*/*.rpm" "$TopDir/fedora/linux/7.3/i386/$ModuleName/packages/" --exclude='*.x86_64.*' --exclude-from="$TopDir/fedora/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/9/*/*.rpm" "$TopDir/fedora/linux/9/i386/$ModuleName/packages/" --exclude='*.x86_64.*' --exclude-from="$TopDir/fedora/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/fedora/linux/1/*/*.rpm" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude='*.x86_64.*' --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/fedora/linux/2/*/*.rpm" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude='*.x86_64.*' --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/fedora/linux/1/*/*.rpm" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude='*.i386.*' --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/fedora/linux/2/*/*.rpm" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude='*.i386.*' --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; jpackage) Name='Fedora Linux $releasever - $basearch - jpackage' Source=`randomof 'rsync://sunsite.dk/jpackage/' 'rsync://rsync.planetmirror.com/jpackage/' 'rsync://rpm.pbone.net/pbone/pub/jpackage/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS "$Source/1.0/generic/RPMS.free/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_73_i386" ] && $RS "$Source/1.5/redhat-7.3/RPMS.free/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_73_i386" ] && $RS "$Source/1.5/generic/RPMS.devel/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS "$Source/1.0/generic/RPMS.free/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS "$Source/1.5/redhat-9/RPMS.free/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS "$Source/1.5/generic/RPMS.devel/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS "$Source/1.0/generic/RPMS.free/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS "$Source/1.5/fedora-1/RPMS.free/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS "$Source/1.5/generic/RPMS.devel/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS "$Source/1.0/generic/RPMS.free/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS "$Source/1.5/fedora-2/RPMS.free/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS "$Source/1.5/generic/RPMS.devel/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS "$Source/1.0/generic/RPMS.free/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_1_x86_64" ] && $RS "$Source/1.5/fedora-1/RPMS.free/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_1_x86_64" ] && $RS "$Source/1.5/generic/RPMS.devel/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS "$Source/1.0/generic/RPMS.free/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS "$Source/1.5/fedora-2/RPMS.free/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS "$Source/1.5/generic/RPMS.devel/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" fi ;; livna) Name='Fedora Linux $releasever - $basearch - livna' Source=`randomof 'rsync://rpm.livna.org/rlo/'` echo "Pulling from $Source" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/9/i386/RPMS.stable/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/fedora/1/i386/RPMS.stable/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/fedora/2/i386/RPMS.stable/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/fedora/1/i386/RPMS.stable/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" fi [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/fedora/2/x86_64/RPMS.stable/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; newrpms) Name='Fedora Linux $releasever - $basearch - newrpms' Source=`randomof 'rsync://newrpms.sunsite.dk/projects/newrpms/www/htdocs/apt/'` echo "Pulling from $Source" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/en/i386/9.0/RPMS.newrpms/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/redhat/en/i386/fc1/RPMS.newrpms//" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/redhat/en/i386/fc2/RPMS.newrpms//" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/redhat/en/i386/fc1/RPMS.newrpms//" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/redhat/en/i386/fc2/RPMS.newrpms//" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" fi ;; openpkg) Name='Fedora Linux $releasever - $basearch - openpkg' Source=`randomof 'rsync://rsync.openpkg.org/openpkg-ftp/release/'` echo "Pulling from $Source" [ -n "$fc_2_i386" ] && $RS "$Source/2.2/BIN/ix86-fedora2/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" #Hmmm. Are updates to openpkg source only? [ -n "$fc_2_i386" ] && $RS "$Source/2.2/UPD/ix86-fedora2/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_2_x86_64" ] && $RS "$Source/2.2/BIN/ix86-fedora2/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS "$Source/2.2/UPD/ix86-fedora2/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" fi ;; updates) Name='Fedora Linux $releasever - $basearch - updates' Source=`randomof 'rsync://rsync.planetmirror.com/fedoralegacy/' 'rsync://mirror.pacific.net.au/fedoralegacy/' 'rsync://mirror.cpsc.ucalgary.ca/fedoralegacy/' 'rsync://ftp.tecnoera.com/ftp/pub/fedora/legacy/' 'rsync://ftp.fi.muni.cz/pub/linux/fedora/legacy/' 'rsync://rsync.mirror.ac.uk/download.fedoralegacy.org/legacy/' 'rsync://rsync.uni-bayreuth.de/fedoralegacy/' 'rsync://ftp-stud.fht-esslingen.de/fedoralegacy/' 'rsync://ftp.heanet.ie/mirrors/download.fedoralegacy.org/' 'rsync://rm.mirror.garr.it/fedoralegacy/' 'rsync://ftp.kddilabs.jp/fedora.leagacy/' 'rsync://ftp.riken.go.jp/fedoralegacy/' 'rsync://gnu.kookel.org/mirrors/fedoralegacy/' 'rsync://ftp.uninett.no/linux/RedHat/fedora-legacy/' 'rsync://ftp.iasi.roedu.net/fedoralegacy/' 'rsync://sunsite.rediris.es/fedora.legacy/' 'rsync://mirror3.cs.wisc.edu/pub/mirrors/linux/download.fedoralegacy.org/' 'rsync://rsync.gtlib.cc.gatech.edu/fedoralegacy/' 'rsync://mirror.physics.ncsu.edu/fedoralegacy/' 'rsync://limestone.uoregon.edu/ftp/fedoralegacy/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS $RD "$Source/redhat/7.3/updates/i386/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/9/updates/i386/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/fedora/1/updates/i386/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/fedora/1/updates/x86_64/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" Source=`randomof 'mirror.linux.duke.edu::fedora-linux-core/' 'distro.ibiblio.org::fedora-linux-core/' 'mirror.hiwaay.net::fedora-linux-core/' 'rpmfind.net::linux/fedora/core/' 'rsync.gtlib.cc.gatech.edu::fedora-linux-core/'` echo "Pulling from $Source" [ -n "$fc_2_i386" ] && $RS $RD "$Source/updates/2/i386/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/updates/2/x86_64/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; wstearns) Name='Fedora Linux $releasever - $basearch - wstearns' Source=`randomof 'zaphod.stearns.org::wstearns/yum/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS $RD "$Source/redhat/linux/7.3/i386/wstearns/packages/*.rpm" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS $RD "$Source/redhat/linux/9/i386/wstearns/packages/*.rpm" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS $RD "$Source/fedora/linux/1/i386/wstearns/packages/*.rpm" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS $RD "$Source/fedora/linux/2/i386/wstearns/packages/*.rpm" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_x86_64" ] && $RS $RD "$Source/fedora/linux/1/x86_64/wstearns/packages/*.rpm" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" [ -n "$fc_2_x86_64" ] && $RS $RD "$Source/fedora/linux/2/x86_64/wstearns/packages/*.rpm" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" ;; ximian) Name='Fedora Linux $releasever - $basearch - ximian' Source=`randomof 'rsync://rsync.secsup.org/ximian/'` echo "Pulling from $Source" [ -n "$rh_73_i386" ] && $RS "$Source/xd2/redhat-73-i386/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_73_i386" ] && $RS "$Source/redcarpet22/redhat-73-i386/" "$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/7.3/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS "$Source/xd2/redhat-9-i386/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$rh_9_i386" ] && $RS "$Source/redcarpet2/redhat-9-i386/" "$TopDir/redhat/linux/9/i386/$ModuleName/packages/" --exclude-from="$TopDir/redhat/linux/9/i386/$ModuleName/packages/excluded-files" [ -n "$fc_1_i386" ] && $RS "$Source/redcarpet2/fedora-1-i386/" "$TopDir/fedora/linux/1/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/i386/$ModuleName/packages/excluded-files" [ -n "$fc_2_i386" ] && $RS "$Source/redcarpet2/fedora-2-i386/" "$TopDir/fedora/linux/2/i386/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/i386/$ModuleName/packages/excluded-files" if [ -n "$OpteronFallback" ]; then [ -n "$fc_1_x86_64" ] && $RS "$Source/redcarpet2/fedora-1-i386/" "$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/1/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/1/i386/$ModuleName/packages/" [ -n "$fc_2_x86_64" ] && $RS "$Source/redcarpet2/fedora-2-i386/" "$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/" --exclude-from="$TopDir/fedora/linux/2/x86_64/$ModuleName/packages/excluded-files" --compare-dest="$TopDir/fedora/linux/2/i386/$ModuleName/packages/" fi ;; *) echo "Unknown module $ModuleName" ;; esac if type -path repomanage.py >/dev/null 2>/dev/null ; then #Remove old RPMS cd "$TopDir" for OneDir in */linux/*/*/$ModuleName/packages/ ; do cd "$OneDir" TFile=`mktemp -q /tmp/yum-pull.XXXXXX` || exit 1 ( cat excluded-files 2>/dev/null ; nice repomanage.py --old . | sed -e 's@.*/@@' | grep -v '^kernel' ) | sort | uniq >>"$TFile" mv -f "$TFile" excluded-files for OneFile in `cat excluded-files` ; do rm -f "$TopDir/$OneDir/$OneFile" done cd ../../../../../.. done fi cd "$TopDir" echo "Module $ModuleName pulled, creating repository information." for OneDir in $Changed ; do #echo "checking headers for $OneDir" if [ -d "$OneDir" ]; then rm -rf "$OneDir/.oldheaders" "$OneDir/.olddata" "$OneDir/.repodata" "$OneDir/.newheaders" #"$OneDir/headers" "$OneDir/newheaders" nice yum-arch -q "$OneDir" & nice createrepo -q "$OneDir" & fi done echo "Repository headers created for $ModuleName, creating yum.conf.addme." URLBottom='fedora/linux/$releasever/$basearch/'"$ModuleName" echo >"$TopDir/yum.conf.addme.$ModuleName" #FIXME echo "#Please change fedora to redhat if upgrading redhat." >>"$TopDir/yum.conf.addme.$ModuleName" echo "[$ModuleName]" >>"$TopDir/yum.conf.addme.$ModuleName" echo "name=$Name" >>"$TopDir/yum.conf.addme.$ModuleName" echo -n "baseurl=" >>"$TopDir/yum.conf.addme.$ModuleName" for OneTop in $URLTop ; do echo "$OneTop/$URLBottom" >>"$TopDir/yum.conf.addme.$ModuleName" done echo >>"$TopDir/yum.conf.addme.$ModuleName" echo "Yum.conf.addme created for $ModuleName" done if type -path htmlfilelist >/dev/null 2>/dev/null ; then cd "$TopDir" for OneDir in */linux/*/*/ ; do cd "$OneDir" nice htmlfilelist --fullpage --coalesce archives --coalesce icons --coalesce headers --coalesce repodata --coalesce .oldheaders --coalesce .olddata --coalesce .repodata --coalesce .newheaders >filelist.html & cd ../../../.. done fi for RepDir in \ `[ -n "$rh_73_i386" ] && echo "$TopDir/redhat/linux/7.3/i386/"` \ `[ -n "$rh_9_i386" ] && echo "$TopDir/redhat/linux/9/i386/"` \ `[ -n "$fc_1_i386" ] && echo "$TopDir/fedora/linux/1/i386/"` \ `[ -n "$fc_2_i386" ] && echo "$TopDir/fedora/linux/2/i386/"` \ `[ -n "$fc_1_x86_64" ] && echo "$TopDir/fedora/linux/1/x86_64/"` \ `[ -n "$fc_2_x86_64" ] && echo "$TopDir/fedora/linux/2/x86_64/"` \ ; do if [ -d "$RepDir" ]; then #echo "apt-ing $RepDir" cd "$RepDir" nice genbasedir --flat --bloat --bz2only --partial "$RepDir" `ls -a1d [a-z]* | egrep -v '(^base$|^RPMS.)'` >/dev/null & fi done echo Waiting for last directory indexes to finish. wait cat "$TopDir"/yum.conf.addme.* >"$TopDir"/yum.conf.addme if [ -x /usr/bin/freedups ]; then echo Hardlinking duplicate files to save space. #This saves 2.7G on a fc 1/2 i386/x86_64 full mirror of all modules freedups -a -d "$TopDir" else echo No freedups found, install freedups rpm to save disk space. fi