diff --git a/britney.py b/britney.py index 038624e..c7f8f22 100755 --- a/britney.py +++ b/britney.py @@ -245,6 +245,8 @@ class Britney: self.systems = {} # if requested, build the non-installable status and save it + # if this or the population of self.binaries below takes a very + # long time, try increasing SIZEOFHASHMAP in lib/dpkg.c and rebuilding if not self.options.nuninst_cache: self.__log("Building the list of not installable packages for the full archive", type="I") self.sources = {'testing': self.read_sources(self.options.testing)} @@ -270,6 +272,8 @@ class Britney: return # read the source and binary packages for the involved distributions + # if this takes a very long time, try increasing SIZEOFHASHMAP in + # lib/dpkg.c and rebuilding self.sources = {'testing': self.read_sources(self.options.testing), 'unstable': self.read_sources(self.options.unstable), 'tpu': self.read_sources(self.options.tpu),} diff --git a/lib/dpkg.c b/lib/dpkg.c index 0a2a0ac..da274bd 100644 --- a/lib/dpkg.c +++ b/lib/dpkg.c @@ -7,6 +7,10 @@ #include "dpkg.h" #include "memory.h" +// enlarge this if britney has issues parsing packages +// (e.g. very slow installability checks) +#define SIZEOFHASHMAP 16 + /* #define DIAGNOSE 1 */ #define insert_packagenamelist(x,y) insert_l_packagenamelist(x,y,__LINE__) @@ -562,9 +566,9 @@ void free_packages(dpkg_packages *pkgs) { } -HASH_IMPL(packagetbl, char *, dpkg_collected_package *, 15, strhash, strcmp, +HASH_IMPL(packagetbl, char *, dpkg_collected_package *, SIZEOFHASHMAP, strhash, strcmp, KEEP(char*),free_collected_package); -HASH_IMPL(virtualpkgtbl, char *, virtualpkg *, 15, strhash, strcmp, +HASH_IMPL(virtualpkgtbl, char *, virtualpkg *, SIZEOFHASHMAP, strhash, strcmp, KEEP(char*), free_virtualpkg); /* dpkg_provision refers to memory allocated elsewhere */