X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=update-archive%2Fupdate-yum-archve.sh;h=9d49d260c4c62f65ddbf515bc027fbf0fbef4ab4;hb=fe107795d8c5c5dd4df63dee5c7aa9ba81d13a45;hp=aa6b2837dc7dcaaf27d9c8ca8bc719308adc731f;hpb=ac599d0f96496eea71143dec6b5e844de13deac0;p=git-tools-moved-to-github.git diff --git a/update-archive/update-yum-archve.sh b/update-archive/update-yum-archve.sh index aa6b283..9d49d26 100755 --- a/update-archive/update-yum-archve.sh +++ b/update-archive/update-yum-archve.sh @@ -6,98 +6,111 @@ fi if test ! -f ~/.rpmmacros; then echo "$0: Make sure ~/.rpmmacros file exsits and contains macros from git-tools/update-archive/root-rpmmacros" - exit 1 + exit 1 fi if test ! -x /usr/bin/createrepo; then - echo "$0: /usr/bin/createrepo missing. Install createrepo" - exit 1 + echo "$0: /usr/bin/createrepo missing. Install createrepo" + exit 1 fi if test ! -x /usr/bin/gpg; then - echo "$0: /usr/bin/gpg missing. Install gpg" - exit 1 + echo "$0: /usr/bin/gpg missing. Install gpg" + exit 1 fi #check if root has rpm macros - confdir=`pwd` +pkgs_to_sign="" architectures="i386 x86_64" +dirs_to_upd="" for vdist in centos/5.5 rhel/5.5; do - dist=`basename $vdist` - vendor=`dirname $vdist` - ftpdir=/home/ftp/pub/yum/$vendor/$dist - if test ! -d $ftpdir; then - echo "$ftpdir does not exist" - exit 1 - fi - cd $ftpdir - sections="" - for section in main restricted; do - # Prepare pool - d=$section - if test ! -d $d; then mkdir -p $d; fi - if test ! -d $d/SRPMS; then mkdir -p $d/SRPMS; fi - # Remove invalid symlinks (SRPMS, i386, x86_64,..) - for l in $d/SRPMS/*; do - if test -L "$l"; then - if test ! -f "$l"; then - rm $l - fi - fi - done - for arch in $architectures; do - for l in $d/$arch/Packages/*; do - if test -L "$l"; then - if test ! -f "$l"; then - rm $l - fi - fi - done - done - # Make symlinks from the regular FTP archive - has_packages=false - for pdir in /home/ftp/pub/*; do - use=false - if test -f $pdir/.htaccess -a $section != "main"; then - use=true - fi - if test ! -f $pdir/.htaccess -a $section = "main"; then - use=true - fi - if $use; then - distdir=$pdir/redhat/$vendor/$dist - if test -d $distdir; then - if test -d $distdir/SRPMS; then - for f in $distdir/SRPMS/*.src.rpm; do - if test -f $f; then - ln -sf $f $d/SRPMS/ - fi - done - fi - for arch in $architectures; do - mkdir -p $d/${arch}/Packages - for f in $distdir/RPMS/${arch}/*.rpm $distdir/RPMS/noarch/*.rpm; do - if test -f $f; then - #rpm --addsign $f - ln -sf $f $d/${arch}/Packages/ - has_packages=true - fi - done - createrepo --update $d/${arch} - if test -f $d/${arch}/repodata/repomd.xml.asc; then - rm $d/${arch}/repodata/repomd.xml.asc - fi - gpg --detach-sign -u "Index Data" --armor $d/${arch}/repodata/repomd.xml - done - fi - fi - done - done + dist=`basename $vdist` + vendor=`dirname $vdist` + ftpdir=/home/ftp/pub/yum/$vendor/$dist + if test ! -d $ftpdir; then + echo "$ftpdir does not exist" + exit 1 + fi + cd $ftpdir + sections="" + for section in main restricted; do + # Prepare pool + d=$section + if test ! -d $d; then mkdir -p $d; fi + if test ! -d $d/SRPMS; then mkdir -p $d/SRPMS; fi + # Remove invalid symlinks (SRPMS, i386, x86_64,..) + for l in $d/SRPMS/*; do + if test -L "$l"; then + if test ! -f "$l"; then + rm $l + fi + fi + done + for arch in $architectures; do + dirs_to_upd="${dirs_to_upd} ${ftpdir}/${d}/${arch}" + for l in $d/$arch/Packages/*; do + if test -L "$l"; then + if test ! -f "$l"; then + rm $l + fi + fi + done + done + # Make symlinks from the regular FTP archive + has_packages=false + for pdir in /home/ftp/pub/*; do + use=false + if test -f $pdir/.htaccess -a $section != "main"; then + use=true + fi + if test ! -f $pdir/.htaccess -a $section = "main"; then + use=true + fi + if $use; then + distdir=$pdir/redhat/$vendor/$dist + if test -d $distdir; then + if test -d $distdir/SRPMS; then + for f in $distdir/SRPMS/*.src.rpm; do + if test -f $f; then + ln -sf $f $d/SRPMS/ + fi + done + fi + for arch in $architectures; do + mkdir -p $d/${arch}/Packages + for f in $distdir/RPMS/${arch}/*.rpm $distdir/RPMS/noarch/*.rpm; do + if test -f $f; then + pkgs_to_sign="${pkgs_to_sign} $f" + ln -sf $f $d/${arch}/Packages/ + has_packages=true + fi + done + done + fi + fi + done + done +done +echo "Signing pakages (default ID PPH is empty):" +rpm --addsign ${pkgs_to_sign} +chgrp staff ${pkgs_to_sign} +chmod g+w ${pkgs_to_sign} +echo "Updating repository meta:" +for rdir in ${dirs_to_upd}; do + echo "Section ${rdir}" + if test -d $rdir && ls -A $rdir; then + createrepo --update ${rdir} + if test -f ${rdir}/repodata/repomd.xml.asc; then + rm ${rdir}/repodata/repomd.xml.asc + fi + gpg --detach-sign -u "Index Data" --armor ${rdir}/repodata/repomd.xml + else + echo "Empty." + fi done # Local Variables: # mode:shell-script # sh-indentation: 2 # sh-basic-offset: 8 # End: -