Merge branch 'master' of ssh://git.indexdata.com:222/home/git/pub/git-tools
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 7 Jun 2012 13:45:13 +0000 (15:45 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 7 Jun 2012 13:45:13 +0000 (15:45 +0200)
aptcheck/aptcheck.pl
id-deb-build/id-mk-deb-src.sh
id-deb-build/id-pbuild.sh
id-release
id-rpm-build/upload-rpms.sh

index 7801291..3866de9 100755 (executable)
@@ -76,7 +76,7 @@ for my $pline ( split("\n",$restplines) ) {
             print "found $pname, first version $pver\n" if $debug>1;
         } else {
             my $bver = $restrpkgs{$pname};
-            `dpkg --compare-versions $bver lt $pver`;
+            `dpkg --compare-versions "$bver" lt "$pver" `;
             if ( ! $? ) {
                 print "found $pname, better version $pver (better than $bver)\n"
                     if $debug>1;
@@ -91,8 +91,8 @@ for my $pline ( split("\n",$restplines) ) {
     }
 }
 
+print "got " . scalar(keys(%restrpkgs)) . " restricted packages\n" if $debug;
 if ( $debug >1 ) {
-    print "got " . scalar(keys(%restrpkgs)) . " restricted packages\n";
     for $pname ( sort (keys(%restrpkgs)) ) {
         print "  $pname " . $restrpkgs{$pname} . "\n";
     }
@@ -111,6 +111,31 @@ my $sectot = 0;
 my $owntot = 0;
 my $mantot = 0;
 my $normtot = 0;
+my %updlinks;
+
+# Pending modification dates
+my %olddates;  # Read in from the file
+my %newdates;  # To be written in the new version of the file
+my $datefilename = "aptcheck.data";
+my $dateoldfilename = "aptcheck.old";
+my $thisdate = "*"; # indicates really old stuff
+if ( -f $datefilename ) {
+  print "Reading dates from $datefilename\n" if $debug;
+  open F, $datefilename or die "Could not open date file $datefilename: $!";
+  while (<F>) {
+    chop();
+    my ($pkg, $date) = split;
+    next unless $pkg;  # skip empty lines
+    $olddates{$pkg} = $date;
+    print "Date for '$pkg' is '$date' \n" if $debug;
+  }
+  close F;
+  $thisdate = `date +%F`;
+  chomp($thisdate);
+} else {
+  print "No datefile $datefilename found, starting from scratch\n";
+}
+
 
 my $table = "<table>\n";
 
@@ -124,6 +149,7 @@ for my $hline ( split("\n",$hostlist) ) {
     my $cmd1 = "apt-cache -q policy " . join(" ",sort(keys(%restrpkgs)));
     my $cmd2 = "apt-get upgrade -s -o 'Debug::NoLocking=true' ";
     # Note, do not append -qq, we want some output even when nothing to do
+    print "ssh -q $H \"$cmd1 ; $cmd2 \" 2>/dev/null" if ($debug>1);
     my $apt = `ssh -q $H "$cmd1 ; $cmd2 " 2>/dev/null`;
     if ( !$apt ) {
         $table .= "<tr><td colspan='3'>&nbsp;</td></tr>\n";
@@ -151,7 +177,7 @@ for my $hline ( split("\n",$hostlist) ) {
                  ( $restrinst ne $bver ) ) { 
                 # if different, it is a regular apt upgrade, and will be seen
                 # later. AND we want to have a different version in our repo
-                `dpkg --compare-versions $bver lt $restrinst`;
+                `dpkg --compare-versions "$bver" lt "$restrinst" `;
                 if ( $? ) { # It was not a downgrade 
                             # manual packages may be ahead of the repo!
                     $mantot++;
@@ -163,6 +189,13 @@ for my $hline ( split("\n",$hostlist) ) {
                     $det .= "<td>&nbsp;&nbsp;$restrname <b>(M)</b></td>";
                     $det .= "<td>". strdiff($bver,$restrinst)."</td>";
                     $det .= "<td>". strdiff($restrinst,$bver)."</td>";
+                    my $datekey = "$H:$restrname";
+                    if ( $olddates{$datekey} ) {
+                        $newdates{$datekey} = $olddates{$datekey};
+                    } else {
+                        $newdates{$datekey} = $thisdate;
+                    }
+                    $det .= "<td>" . $newdates{$datekey} . "</td>";
                     $det .= "</tr>\n";
                     my $key = "$restrname";
                     if ( !$summary{$key} ) {
@@ -209,7 +242,15 @@ for my $hline ( split("\n",$hostlist) ) {
         $det .= "</td> ";
         $det .= "<td>$cur</td> ";
         $det .= "<td>$new</td> ";
+        my $datekey = "$H:$pkg";
+        if ( $olddates{$datekey} ) {
+            $newdates{$datekey} = $olddates{$datekey};
+        } else {
+            $newdates{$datekey} = $thisdate;
+        }
+        $det .= "<td>" . $newdates{$datekey} . "</td>";
         $det .= "</tr>\n";
+
     }
     $table .= "<tr><td colspan='3'>&nbsp;</td></tr>\n";
     $table .= "<tr><td colspan='3'><a name='$H'><b><u>$H</u></b></a> &nbsp;\n";
@@ -227,6 +268,7 @@ for my $hline ( split("\n",$hostlist) ) {
     # Mostly because the host names would not make proper WikiWords
     $updlink =~ s/Bugzilla3Updates/BugzillaUpdates/; 
     $updlink =~ s/Opencontent-solrUpdates/OpenContentSolrUpdates/; 
+    $updlinks{$H} = $updlink;
     $table .= "&nbsp;<a href='$updlink' >Upd</a>";
     $table .= "</td></tr>\n";
     $table .= "<tr><td>$hostcomments{$H}</td></tr>\n"
@@ -237,6 +279,16 @@ for my $hline ( split("\n",$hostlist) ) {
 }
 $table .= "</table>\n";
 
+# Save the date file
+`mv -f $datefilename $dateoldfilename`;
+open F, ">$datefilename" or die "Could not open date file $datefilename for writing";
+for  my $k (keys(%newdates) ) {
+    print F "$k " . $newdates{$k}. "\n";
+    print "date for '$k' '" . $newdates{$k}. "'\n" if $debug;
+}
+close F
+  or die "Could not close date file $datefilename: $!";
+
 # Page header
 my $outfile = "/tmp/aptcheck.html";
 open F, ">$outfile"
@@ -264,7 +316,8 @@ if ( $sectot ) {
         "&nbsp;/&nbsp;" .  scalar(keys(%secpkgs)) . "&nbsp;/&nbsp;$sectot </td>\n" ;
     print F "<td>";
     for my $HH ( sort(keys(%sechosts)) ) {
-        print F "<a href='#$HH'><b>$HH</b></a> ";
+        my $upd = $updlinks{$HH} || "#" ;
+        print F "<a href='#$HH'><b>$HH</b></a><a href='$upd'>,</a> ";
     }
     print F "</td>";
     print F "<td>";
@@ -279,7 +332,9 @@ if ( $owntot ) {
         "&nbsp;/&nbsp;" .  scalar(keys(%ownpkgs)) . "&nbsp;/&nbsp;$owntot </td>\n" ;
     print F "<td>";
     for my $HH ( sort(keys(%ownhosts)) ) {
-        print F "<a href='#$HH'><b>$HH</b></a> ";
+        my $upd = $updlinks{$HH} || "#" ;
+        print F "<a href='#$HH'><b>$HH</b></a><a href='$upd'>,</a> ";
+        #print F "<a href='#$HH'><b>$HH</b></a> ";
     }
     print F "</td>";
     print F "<td>";
@@ -294,7 +349,9 @@ if ( $mantot ) {
         "&nbsp;/&nbsp;" .  scalar(keys(%manpkgs)) . "&nbsp;/&nbsp;$mantot </td>\n" ;
     print F "<td>";
     for my $HH ( sort(keys(%manhosts)) ) {
-        print F "<a href='#$HH'><b>$HH</b></a> ";
+        my $upd = $updlinks{$HH} || "#" ;
+        print F "<a href='#$HH'><b>$HH</b></a><a href='$upd'>,</a> ";
+        #print F "<a href='#$HH'><b>$HH</b></a> ";
     }
     print F "</td>";
     print F "<td>";
@@ -309,7 +366,9 @@ if ( $normtot ) {
         "&nbsp;/&nbsp;" .  scalar(keys(%normpkgs)) . "&nbsp;/&nbsp;$normtot </td>\n" ;
     print F "<td>";
     for my $HH ( sort(keys(%normhosts)) ) {
-        print F "<a href='#$HH'><b>$HH</b></a> ";
+        my $upd = $updlinks{$HH} || "#" ;
+        print F "<a href='#$HH'><b>$HH</b></a><a href='$upd'>,</a> ";
+        #print F "<a href='#$HH'><b>$HH</b></a> ";
     }
     print F "</td>";
     print F "<td>";
@@ -323,7 +382,10 @@ if ( %skiphosts ) {
     print F "<tr><td>Skipped " . scalar(keys(%skiphosts)) . "</td>\n";
     print F "<td colspan='2'>";
     for my $HH ( sort(keys(%skiphosts)) ) {
-        print F "<a href='#$HH'><b>$HH</b></a> ";
+        my $upd = $updlinks{$HH} ||
+                  $wikilink . ucfirst($HH) . "Updates" . $year;
+        print F "<a href='#$HH'><b>$HH</b></a><a href='$upd'>,</a> ";
+        #print F "<a href='#$HH'><b>$HH</b></a> ";
     }
     print F "</td></tr>\n";
 }
@@ -332,7 +394,9 @@ if ( 1 ) {
     print F "<tr><td>Ok " . scalar(keys(%okhosts)) . "</td>\n";
     print F "<td colspan='2'>";
     for my $HH ( sort(keys(%okhosts)) ) {
-        print F "<a href='#$HH'><b>$HH</b></a> ";
+        my $upd = $updlinks{$HH} || "#" ;
+        print F "<a href='#$HH'><b>$HH</b></a><a href='$upd'>,</a> ";
+        #print F "<a href='#$HH'><b>$HH</b></a> ";
     }
     if ( !%okhosts ) {
         print F "<b>None at all!</b>";
@@ -377,6 +441,8 @@ for my $P ( sort(keys(%summary)) ) {
 }
 print F "</table>\n";
 
+print F "<p/>Packages marked with * are from the time before started to " .
+        "track package dates \n";
 print F "<p/>Produced " . `date`.
         " on " . `hostname` . " by " . `whoami` .
         "<br/>\n";
index 4e351bb..c63e772 100755 (executable)
@@ -11,10 +11,6 @@ fi
 if test -f debian/.gitignore; then
        cd debian; for i in `cat .gitignore`; do rm -fr $i; done; cd ..
 fi
-if test -d deb-src; then
-       echo "deb-src exist. You might remove it"
-       exit 1
-fi
 l=`head -1 $DEBCHANGELOG`
 PROD=`echo $l|sed 's/ .*//g'`
 VERSION=`echo $l|sed 's/.*(//g'|sed 's/).*//g'`
@@ -29,7 +25,7 @@ if test ! -f ${TAR}; then
        exit 1
 fi
 set -e
-mkdir deb-src
+mkdir -p deb-src
 ORIG=${PROD}_${MAJOR}.orig.tar.gz
 echo "TAR=$TAR"
 echo "ORIG=$ORIG"
index c04e2d7..51cb8e0 100755 (executable)
@@ -10,6 +10,7 @@ Usage: id-pbuild.sh [OPTIONS]
 Options:
        [--debian=distros]
        [--ubuntu=distros]
+       [--centos=distros]
        [--upload]
        [--concurrency=N]
        [--product=X]
@@ -21,6 +22,7 @@ EOF
 upload=false
 do_help=false
 concurrency=4
+ARCHS="i386 amd64"
 
 if test -f IDMETA; then
     . ./IDMETA
@@ -38,6 +40,9 @@ while test $# -gt 0; do
        --ubuntu=*)
            UBUNTU_DIST=$optarg
            ;;
+       --centos=*)
+           CENTOS_DIST=$optarg
+           ;;
         --upload)
            upload=true
            ;;
@@ -73,7 +78,7 @@ if test ! -x $MKDEBSRC; then
 fi
 
 if $upload; then
-    cd deb-src
+    :
 else
     if test "${SUDO_USER}"; then
        if test ! -d deb-src; then
@@ -81,7 +86,7 @@ else
        fi
     else
        if test -d deb-src; then
-           rm -rf deb-src
+           rm -f deb-src/*.gz
            if test $? -ne 0; then
                echo "deb-src could not be removed. Remove deb-src manually"
                exit 1
@@ -89,8 +94,8 @@ else
        fi
        $MKDEBSRC
     fi
-    cd deb-src
 fi
+cd deb-src
 
 for f in *.dsc; do
     if test -f "$f"; then
@@ -108,7 +113,6 @@ fi
 if test -z "$PRODUCT"; then
     PRODUCT=`echo *.dsc|sed 's/_.*//g'`
 fi
-ARCHS="i386 amd64"
 if grep "Architecture: all" $PKG >/dev/null; then
     USE_ARCHS=i386
 else
@@ -117,6 +121,7 @@ fi
 echo "Dsc $PKG . Product $PRODUCT"
 echo "Ubuntu distros: $UBUNTU_DIST"
 echo "Debian distros: $DEBIAN_DIST"
+echo "Centos distros: $CENTOS_DIST"
 if test "${SUDO_USER}"; then
     echo "Running as sudo."
     echo "Tip: You can avoid it by adding the following in /etc/sudoers"
@@ -132,6 +137,16 @@ if test ! -f ${HOME_EXPORT}/.pbuilderrc; then
 fi
 
 if $upload; then
+    for dist in ${CENTOS_DIST}; do
+       arch=amd64
+       prodver=${PRODUCT}-${VERSION}
+       if ssh $dist "cd rpmbuild/SOURCES/${prodver} && ../../../proj/git-tools/id-rpm-build/upload-rpms.sh ${PRODUCT}.spec"; then
+           :
+           else
+           echo "Upload failed for $dist"
+           exit 1
+       fi
+    done
     for dist in ${UBUNTU_DIST}; do
        scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}
     done
@@ -140,17 +155,52 @@ if $upload; then
     done
     echo ""
     echo "===================================================="
-    echo "Remember to update APT on ftp.indexdata.dk !!!"
+    echo "Remember to update APT/YUM on ftp.indexdata.dk !!!"
     echo ""
     echo "ssh ftp.indexdata.dk"
     echo "cd ~/proj/git-tools/update-archive"
     echo "sudo su"
     echo "./update-archive.sh"
+    if test ${CENTOS_DIST}; then
+       echo "./update-yum-archive.sh"
+    fi
     echo "===================================================="
     exit 0
 fi
+
 rm -f *.log
 
+# copy tars to centos build hosts
+for dist in ${CENTOS_DIST}; do
+    arch=amd64
+    prodver=${PRODUCT}-${VERSION}
+    tarname=${prodver}.tar.gz
+    if test ! -f ../${tarname}; then
+       echo "$tarname: missing"
+       exit 1
+    fi
+
+    if ssh $dist "test -f .rpmmacros && test -d rpmbuild/SOURCES && test -d rpmbuild/RPMS && test -d rpmbuild/SRPMS && test -x proj/git-tools/id-rpm-build/upload-rpms.sh"; then
+       :
+    else
+       echo "Host $dist does not seem to be prepared with git-tools and rpmbuild directories"
+       exit 1
+    fi
+
+    if scp ../${tarname} $dist:rpmbuild/SOURCES/ ; then
+       :
+    else
+       echo "Could not copy $tarname to $dist"
+       exit 1
+    fi
+    if ssh $dist "cd rpmbuild/SOURCES && rm -fr $prodver && tar zxf $tarname && cd ${prodver} && rpmbuild -ba ${PRODUCT}.spec" >${dist}-${arch}.log 2>&1; then
+       :
+    else
+       echo "FAILED: See ${dist}-${arch}.log"
+       exit 1
+    fi
+done
+
 # call our privileged wrapper to clean the directories, no --dsc option
 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
     for arch in ${USE_ARCHS}; do
@@ -195,6 +245,7 @@ for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
        fi
     done
 done
+
 date
 echo "Done"
 # Local Variables:
index 5345e19..bf56550 100755 (executable)
@@ -95,7 +95,7 @@ echo "git pull"
 echo "\$HOME/proj/git-tools/id-deb-build/mkdist.sh"
 echo "sudo cp $package-$version.tar.gz /usr/src/redhat/SOURCES/"
 echo "sudo rpmbuild -ba $spec"
-echo "# if successfully, upload"
+echo "# if successfully, scp the package to ftp.indexdata.dk (kebab)"
 echo "\$HOME/proj/git-tools/id-rpm-build/upload-rpms.sh $spec"
 echo ""
 echo "# on kebab run: sudo su; cd $HOME/proj/git-tools/update-archive; ./update-yum-archive.sh"
@@ -109,7 +109,7 @@ echo "git pull"
 echo "\$HOME/proj/git-tools/id-deb-build/mkdist.sh"
 echo "\$HOME/proj/git-tools/id-deb-build/id-mk-deb-src.sh"
 echo "sudo \$HOME/proj/git-tools/id-deb-build/id-pbuild.sh"
-echo "# if successfully, upload"
+echo "# if successfully, scp the package to ftp.indexdata.dk (kebab)"
 echo "\$HOME/proj/git-tools/id-deb-build/id-pbuild.sh --upload"
 echo ""
 echo "# on kebab run: sudo su; cd $HOME/proj/git-tools/update-archive; ./update-archive.sh"
index 0439825..ee83ce9 100755 (executable)
@@ -1,6 +1,6 @@
 PWD=`pwd`
 UPLOAD_PATH=${UPLOAD_PATH:=/home/ftp/pub}
-UPLOAD_HOST=${UPLOAD_HOST:=kebab.indexdata.com}
+UPLOAD_HOST=${UPLOAD_HOST:=ftp.indexdata.dk}
 DISTRO=${DISTRO:="centos/5.5"}
 specfile=$1
 if test ! -f ${specfile}; then