From 086831f10133f521d02e25dbe225b52cc920b92d Mon Sep 17 00:00:00 2001 From: Jakub Skoczen Date: Thu, 8 Jul 2010 15:57:15 +0200 Subject: [PATCH] Embed singatures BEFORE generating meta. Otherwise the checksums don't match. The script has been reformatted in the meantime. --- update-archive/update-yum-archve.sh | 160 ++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 76 deletions(-) diff --git a/update-archive/update-yum-archve.sh b/update-archive/update-yum-archve.sh index aa6b283..4c35250 100755 --- a/update-archive/update-yum-archve.sh +++ b/update-archive/update-yum-archve.sh @@ -6,94 +6,102 @@ 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 + 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 + dirs_to_upd="${dirs_to_upd} ${ftpdir}/${d}/${arch}" + done + fi + fi + done + done +done +echo "Signing pakages (default ID PPH is empty):" +rpm --addsign $pkgs_to_sign ${pkgs_to_sign} +echo "Updating repository meta:" +echo ${dirs_to_upd} +for rdir in ${dirs_to_upd}; do + 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 done # Local Variables: # mode:shell-script -- 1.7.10.4