summaryrefslogtreecommitdiff
path: root/rpm/build/refresh-repo
diff options
context:
space:
mode:
Diffstat (limited to 'rpm/build/refresh-repo')
-rwxr-xr-xrpm/build/refresh-repo164
1 files changed, 164 insertions, 0 deletions
diff --git a/rpm/build/refresh-repo b/rpm/build/refresh-repo
new file mode 100755
index 0000000..32d07ad
--- /dev/null
+++ b/rpm/build/refresh-repo
@@ -0,0 +1,164 @@
+#!/bin/sh
+#
+# Copyright 2008, Elirion, Inc. All rights reserved.
+# This software is licensed under the same terms as Freeside itself.
+#
+# This script iterates through all the specified Freeside repositories, running
+# both yum-arch and createrepo to update the yum repository meta-data.
+# The script should be run after the repository contents are changed.
+#
+# TBD: Run yum-arch, createrepo, or both, as appropriate for the distro and version
+# the repository is targetted for.
+#
+DISTROS='centos sles'
+CENTOSVERS='4 5'
+SLESVERS=10
+WHICHVERS=
+VERSIONS='1.7 1.9'
+ARCHS='i386 x86_64'
+REPOS='testing stable prerelease'
+RPMS=
+KEYID=rsiddall
+SAVEDIR=$HOME
+
+REPOBASEFOLDER=/var/www/html
+
+QUIET_FLAG=
+
+BUILDSYSDIR=`dirname $0`
+
+if [ -f $BUILDSYSDIR/buildsysrc ]; then
+ #chmod a+x $BUILDSYSDIR/buildsysrc
+ #echo $BUILDSYSDIR/buildsysrc
+ . $BUILDSYSDIR/buildsysrc
+fi
+if [ -f $HOME/buildsysrc ]; then
+ #chmod a+x $HOME/buildsysrc
+ #echo $HOME/buildsysrc
+ . $HOME/buildsysrc
+fi
+
+
+usage() {
+ echo "refresh-repo: refresh yum metadata for all yum repositories"
+ echo "where:"
+ echo " -a <archs>: change architectures (currently: $ARCHS)"
+ echo " -d <distros>: change distributions (currently: $DISTROS)"
+ echo " -r <repos>: change repositories (currently: $REPOS)"
+ echo " -v <versions>: change versions (currently: $VERSIONS)"
+ echo " -w <distvers>: change distro version (currently: $WHICHVERS)"
+ exit 0
+}
+
+while getopts "a:d:hqr:v:w:" flag
+do
+ case $flag in
+ a)
+ echo "Changing architectures from $ARCHS to $OPTARG"
+ ARCHS=$OPTARG;;
+ d)
+ echo "Changing distros from $DISTROS to $OPTARG"
+ DISTROS=$OPTARG;;
+ q)
+ echo "Quiet mode"
+ QUIET_FLAG=-q;;
+ r)
+ echo "Changing repository from $REPOS to $OPTARG"
+ REPOS=$OPTARG;;
+ v)
+ echo "Changing versions from $VERSIONS to $OPTARG"
+ VERSIONS=$OPTARG;;
+ w)
+ echo "Changing which distro versions from $WHICHVERS to $OPTARG"
+ WHICHVERS=$OPTARG;;
+ *)
+ usage;;
+ esac
+done
+
+#for DISTRO in ${DISTROS}; do
+# for VERSION in ${VERSIONS}; do
+# for REPO in ${REPOS}; do
+# for ARCH in ${ARCHS}; do
+# # Determine which RPMs need to be signed
+# NEWRPMS=`rpm --checksig $REPOBASEFOLDER/repo/$DISTROS/$DISTVERS/freeside-${VERSION}/${REPO}/${ARCH}/*.rpm | grep -v ' gpg ' | cut -d ':' -f 1 | tr '\n' ' '`
+# RPMS=`echo "$RPMS $NEWRPMS"`
+# done
+# done
+# done
+#done
+##rpm --addsign $RPMS
+#for RPM in $RPMS; do
+# ./expect-addsign $RPM
+#done
+for DISTRO in ${DISTROS}; do
+ for VERSION in ${VERSIONS}; do
+ for REPO in ${REPOS}; do
+ for ARCH in ${ARCHS}; do
+ if [ "${WHICHVERS}x" = "x" ]; then
+ if [ "$DISTRO" = "centos" ]; then
+ DISTVERS=$CENTOSVERS
+ fi
+ if [ "$DISTRO" = "sles" ]; then
+ DISTVERS=$SLESVERS
+ fi
+ else
+ DISTVERS=$WHICHVERS
+ fi
+ for distver in $DISTVERS
+ do
+ # Update the repo information
+ echo "${DISTRO}-${distver}: $VERSION - $REPO - $ARCH"
+ DIR=$REPOBASEFOLDER/repo/$DISTRO/$distver/freeside-${VERSION}/${REPO}/${ARCH}
+ if [ -d $DIR ]
+ then
+ # SLES requires signed repodata. Save any existing files so we don't regenerate
+ for ext in asc key
+ do
+ if [ -e $DIR/repodata/repomd.xml.${ext} ]
+ then
+ mv $DIR/repodata/repomd.xml.${ext} $SAVEDIR
+ fi
+ done
+ if [ "$DISTRO" = "sles" ]
+ then
+ for file in $DIR/freeside-mysql-*.rpm
+ do
+ mv $file $file.old
+ done
+ for file in $DIR/freeside-selfservice-*.rpm
+ do
+ mv $file $DIR/../self-service/$ARCH
+ done
+ fi
+ if [ "$DISTRO-$distver" = "centos-4" ]
+ then
+ yum-arch $QUIET_FLAG $DIR/
+ fi
+# createrepo $QUIET_FLAG --checkts $DIR/
+ createrepo $QUIET_FLAG $DIR/
+ if [ "$DISTRO" = "sles" ]
+ then
+ # SLES requires signed repodata...
+ if [ -e $SAVEDIR/repomd.xml.asc ]
+ then
+ mv $SAVEDIR/repomd.xml.asc $DIR/repodata
+ fi
+
+# gpg -sab --yes -u "$KEYID" -o $DIR/repodata/repomd.xml.asc $DIR/repodata/repomd.xml
+ ./expect-signrepo $KEYID $DIR/repodata/repomd.xml.asc $DIR/repodata/repomd.xml
+ if [ -e $SAVEDIR/repomd.xml.key ]
+ then
+ mv $SAVEDIR/repomd.xml.key $DIR/repodata
+ else
+ gpg -a --yes -u "$KEYID" --export -o $DIR/repodata/repomd.xml.key
+ fi
+ fi
+ else
+ echo "No such folder $DIR - skipping"
+ fi
+ done
+ done
+ done
+ done
+done