[pacman-dev] CVS update of pacman-lib (6 files)

Dan McGee dan at archlinux.org
Sun Mar 11 23:02:58 EDT 2007


    Date: Sunday, March 11, 2007 @ 23:02:58
  Author: dan
    Path: /home/cvs-pacman/pacman-lib

Modified: lib/libalpm/Makefile.am (1.19 -> 1.20)
          lib/libalpm/be_files.c (1.36 -> 1.37)
          lib/libalpm/db.h (1.30 -> 1.31) scripts/rankmirrors (1.7 -> 1.8)
          src/pacman/Makefile.am (1.16 -> 1.17)
          src/util/Makefile.am (1.11 -> 1.12)

* Removed ${CFLAGS} from Makefile.am(s) as it was causing all CFLAGS to be
  duplicated.
* Updated the util Makefile.am to link with the proper libalpm.la.
* Fixed bitmasking issues in be_files.c and db.h.
* Rankmirrors updates from James Rosten (with some cleaning up of my own).
  KeyboardInterrupts are now handled gracefully.


-------------------------+
 lib/libalpm/Makefile.am |    2 
 lib/libalpm/be_files.c  |    7 ++-
 lib/libalpm/db.h        |    3 -
 scripts/rankmirrors     |   98 +++++++++++++++++++++++++++-------------------
 src/pacman/Makefile.am  |    2 
 src/util/Makefile.am    |    4 -
 6 files changed, 70 insertions(+), 46 deletions(-)


Index: pacman-lib/lib/libalpm/Makefile.am
diff -u pacman-lib/lib/libalpm/Makefile.am:1.19 pacman-lib/lib/libalpm/Makefile.am:1.20
--- pacman-lib/lib/libalpm/Makefile.am:1.19	Sun Mar 11 17:10:02 2007
+++ pacman-lib/lib/libalpm/Makefile.am	Sun Mar 11 23:02:57 2007
@@ -8,7 +8,7 @@
 localedir = $(datadir)/locale
 DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
 
-AM_CFLAGS = -fvisibility=hidden -pedantic -D_GNU_SOURCE $(CFLAGS)
+AM_CFLAGS = -fvisibility=hidden -pedantic -D_GNU_SOURCE
 
 EXTRA_DIST = Doxyfile
 
Index: pacman-lib/lib/libalpm/be_files.c
diff -u pacman-lib/lib/libalpm/be_files.c:1.36 pacman-lib/lib/libalpm/be_files.c:1.37
--- pacman-lib/lib/libalpm/be_files.c:1.36	Mon Mar  5 17:13:33 2007
+++ pacman-lib/lib/libalpm/be_files.c	Sun Mar 11 23:02:57 2007
@@ -227,7 +227,12 @@
 		return(-1);
 	}
 
-	if(info->infolevel & inforeq) {
+	/* bitmask logic here:
+	 * infolevel: 00001111
+	 * inforeq:   00010100
+	 * & result:  00000100
+	 * == to inforeq? nope, we need to load more info. */
+	if((info->infolevel & inforeq) == inforeq) {
 		/* already loaded this info, do nothing */
 		return(0);
 	}
Index: pacman-lib/lib/libalpm/db.h
diff -u pacman-lib/lib/libalpm/db.h:1.30 pacman-lib/lib/libalpm/db.h:1.31
--- pacman-lib/lib/libalpm/db.h:1.30	Sat Mar  3 03:13:59 2007
+++ pacman-lib/lib/libalpm/db.h	Sun Mar 11 23:02:57 2007
@@ -33,7 +33,8 @@
 	INFRQ_DEPENDS = 0x04,
 	INFRQ_FILES = 0x08,
 	INFRQ_SCRIPTLET = 0x10,
-	INFRQ_ALL = 0xFF
+	/* ALL should be sum of all above */
+	INFRQ_ALL = 0x1F
 } pmdbinfrq_t;
 
 /* Database */
Index: pacman-lib/scripts/rankmirrors
diff -u pacman-lib/scripts/rankmirrors:1.7 pacman-lib/scripts/rankmirrors:1.8
--- pacman-lib/scripts/rankmirrors:1.7	Sun Mar  4 21:32:14 2007
+++ pacman-lib/scripts/rankmirrors	Sun Mar 11 23:02:58 2007
@@ -23,9 +23,6 @@
 import os, sys, datetime, time, socket, urllib2
 from optparse import OptionParser
 
-# TODO: handle KeyboardInterrupt better, print list of already timed
-#       servers and then exit. Easier if program is function-ized.
-
 def createOptParser():
     usage = "usage: %prog [options] MIRRORFILE | URL"
     description = "Ranks pacman mirrors by their connection and opening " \
@@ -33,27 +30,28 @@
             "can also rank one mirror if the URL is provided."
     parser = OptionParser(usage = usage, description = description)
     parser.add_option("-n", type = "int", dest = "num", default = 0,
-            help = "number of servers to output, 0 for all")
+                      help = "number of servers to output, 0 for all")
     parser.add_option("-t", "--times", action = "store_true",
-            dest = "times", default = False,
-            help = "only output mirrors and their response times")
+                      dest = "times", default = False,
+                      help = "only output mirrors and their response times")
     parser.add_option("-u", "--url", action = "store_true", dest = "url",
-             default=False, help="test a specific url")
+                      default = False, help = "test a specific url")
     parser.add_option("-v", "--verbose", action = "store_true",
-            dest = "verbose", default = False, help ="be verbose in output")
+                      dest = "verbose", default = False,
+                      help = "be verbose in ouptut")
     return parser
 
 def timeCmd(cmd):
-    before = time.time();
+    before = time.time()
     try:
-        cmd();
+        cmd()
     except KeyboardInterrupt, ki:
         raise ki
     except socket.timeout, ioe:
         return 'timeout'
     except Exception, e:
         return 'unreachable'
-    return time.time() - before;
+    return time.time() - before
 
 def talkToServer(serverUrl):
     opener = urllib2.build_opener()
@@ -63,10 +61,32 @@
     return lambda : talkToServer(serverUrl)
 
 def cmpPairBySecond(p1, p2):
-    if p1[1] == p2[1]: return 0
-    if p1[1] < p2[1]: return -1
+    if p1[1] == p2[1]:
+        return 0
+    if p1[1] < p2[1]:
+        return -1
     return 1
 
+def printResults(servers, time, verbose, num):
+    items = servers.items()
+    items.sort(cmpPairBySecond)
+    itemsLen = len(items)
+    numToShow = num
+    if numToShow > itemsLen or numToShow == 0:
+        numToShow = itemsLen
+    if itemsLen > 0:
+        if time:
+            print
+            print ' Servers sorted by time (seconds):'
+            for i in items[0:numToShow]:
+                if i[1] == 'timeout' or i[1] == 'unreachable':
+                    print i[0], ':', i[1]
+                else:
+                    print i[0], ':', "%.2f" % i[1]
+        else:
+            for i in items[0:numToShow]:
+                print 'Server =', i[0]
+
 if __name__ == "__main__":
     parser = createOptParser()
     (options, args) = parser.parse_args()
@@ -81,12 +101,18 @@
     if options.url:
         if options.verbose:
             print 'Testing', args[0] + '...'
-        serverToTime = timeCmd(getFuncToTime(args[0]))
-        print args[0], ':', serverToTime
+        try:
+            serverToTime = timeCmd(getFuncToTime(args[0]))
+        except KeyboardInterrupt, ki:
+            sys.exit(1)
+        if serverToTime == 'timeout' or serverToTime == 'unreachable':
+            print args[0], ':', serverToTime
+        else:
+            print args[0], ':', "%.2f" % serverToTime
         sys.exit(0)
 
     if not os.path.isfile(args[0]):
-        print 'file', args[0], 'does not exist.'
+        print >>sys.stderr, 'rankmirrors: file', args[0], 'does not exist.'
         sys.exit(1)
 
     fl = open(args[0], 'r')
@@ -104,36 +130,28 @@
             continue
 
         serverUrl = splitted[1].strip()
-        if serverUrl[-1] == '\n': serverUrl = serverUrl[0:-1]
+        if serverUrl[-1] == '\n':
+            serverUrl = serverUrl[0:-1]
         if options.verbose and options.times:
-            print serverUrl,'...',
+            print serverUrl, '...',
         elif options.verbose:
-            print '#',serverUrl,'...',
+            print '#', serverUrl, '...',
         elif options.times:
             print ' * ',
         sys.stdout.flush()
-        serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl))
-        if options.verbose:
-            try:
-                print "%.2f" % serverToTime[serverUrl]
-            except:
-                print serverToTime[serverUrl]
-
-    items = serverToTime.items()
-    items.sort(cmpPairBySecond)
-    numToShow = int(options.num)
-    if numToShow == 0: numToShow = len(items)
-    if len(items) > 0:
-        if options.times:
-            print
-            print ' Servers sorted by time (seconds):'
-            for i in items[0:numToShow]:
+        try:
+            serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl))
+            if options.verbose:
                 try:
-                    print "%.2f" % i[1], ':', i[0]
+                    print "%.2f" % serverToTime[serverUrl]
                 except:
-                    print i[1], ':', i[0]
-        else:
-            for i in items[0:numToShow]:
-                print 'Server =', i[0]
+                    print serverToTime[serverUrl]
+        except:
+            print
+            printResults(serverToTime, options.times, options.verbose,
+                         options.num)
+            sys.exit(0)
+
+    printResults(serverToTime, options.times, options.verbose, options.num)
 
 # vim: set ts=4 sw=4 et:
Index: pacman-lib/src/pacman/Makefile.am
diff -u pacman-lib/src/pacman/Makefile.am:1.16 pacman-lib/src/pacman/Makefile.am:1.17
--- pacman-lib/src/pacman/Makefile.am:1.16	Wed Feb 21 23:36:03 2007
+++ pacman-lib/src/pacman/Makefile.am	Sun Mar 11 23:02:58 2007
@@ -10,7 +10,7 @@
 DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
 INCLUDES = -I$(top_srcdir)/lib/libalpm
 
-AM_CFLAGS = -D_GNU_SOURCE $(CFLAGS) 
+AM_CFLAGS = -D_GNU_SOURCE
 
 pacman_SOURCES = \
 	add.h add.c \
Index: pacman-lib/src/util/Makefile.am
diff -u pacman-lib/src/util/Makefile.am:1.11 pacman-lib/src/util/Makefile.am:1.12
--- pacman-lib/src/util/Makefile.am:1.11	Sun Mar  4 01:28:49 2007
+++ pacman-lib/src/util/Makefile.am	Sun Mar 11 23:02:58 2007
@@ -3,7 +3,7 @@
 INCLUDES = -I$(top_srcdir)/lib/libalpm
 
 vercmp_SOURCES = vercmp.c
-vercmp_LDADD = $(top_builddir)/lib/libalpm/libalpm.la
+vercmp_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
 
 testpkg_SOURCES = testpkg.c
-testpkg_LDADD = $(top_builddir)/lib/libalpm/libalpm.la
+testpkg_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la




More information about the pacman-dev mailing list