X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;h=fab0870e9d1e1a9b8e10d271826fa3a9c77d48d5;hb=e92bd768962e2d6145907ccc01962c36934975b7;hp=b987a372fcd1b51c1388a99ae5f916ec5b567dac;hpb=c9398d303256dfedc13975b79b6b691048cfcc05;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index b987a372..fab0870e 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -442,8 +442,8 @@ MINIMAL_APT_CONF=""" Dir { ArchiveDir "%(archivepath)s"; - OverrideDir "/srv/ftp-master.debian.org/scripts/override/"; - CacheDir "/srv/ftp-master.debian.org/database/"; + OverrideDir "%(overridedir)s"; + CacheDir "%(cachedir)s"; }; Default @@ -505,11 +505,16 @@ class BuildQueue(object): os.write(fl_fd, '%s\n' % n.fullpath) os.close(fl_fd) + cnf = Config() + # Write minimal apt.conf # TODO: Remove hardcoding from template (ac_fd, ac_name) = mkstemp() os.write(ac_fd, MINIMAL_APT_CONF % {'archivepath': self.path, - 'filelist': fl_name}) + 'filelist': fl_name, + 'cachedir': cnf["Dir::Cache"], + 'overridedir': cnf["Dir::Override"], + }) os.close(ac_fd) # Run apt-ftparchive generate @@ -539,7 +544,6 @@ class BuildQueue(object): # Sign if necessary if self.signingkey: - cnf = Config() keyring = "--secret-keyring \"%s\"" % cnf["Dinstall::SigningKeyring"] if cnf.has_key("Dinstall::SigningPubKeyring"): keyring += " --keyring \"%s\"" % cnf["Dinstall::SigningPubKeyring"] @@ -1913,6 +1917,31 @@ def get_policy_queue(queuename, session=None): __all__.append('get_policy_queue') +@session_wrapper +def get_policy_queue_from_path(pathname, session=None): + """ + Returns PolicyQueue object for given C{path name} + + @type queuename: string + @param queuename: The path + + @type session: Session + @param session: Optional SQLA session object (a temporary one will be + generated if not supplied) + + @rtype: PolicyQueue + @return: PolicyQueue object for the given queue + """ + + q = session.query(PolicyQueue).filter_by(path=pathname) + + try: + return q.one() + except NoResultFound: + return None + +__all__.append('get_policy_queue_from_path') + ################################################################################ class Priority(object): @@ -2459,202 +2488,6 @@ SUITE_FIELDS = [ ('SuiteName', 'suite_name'), ('OverrideSuite', 'overridesuite'), ('ChangelogBase', 'changelogbase')] - -DAILY_APT_CONF=""" -Dir -{ - ArchiveDir "/srv/ftp-master.debian.org/ftp/"; - OverrideDir "/srv/ftp-master.debian.org/scripts/override/"; - CacheDir "/srv/ftp-master.debian.org/database/"; -}; - -Default -{ - Packages::Compress "bzip2 gzip"; - Sources::Compress "bzip2 gzip"; - Contents::Compress "gzip"; - DeLinkLimit 0; - MaxContentsChange 25000; - FileMode 0664; -} - -TreeDefault -{ - Contents::Header "/srv/ftp-master.debian.org/dak/config/debian/Contents.top"; -}; - -""" - -apt_trees={} -apt_trees["di"]={} -apt_trees["testing"]=""" -tree "dists/testing" -{ - FakeDI "dists/unstable"; - FileList "/srv/ftp-master.debian.org/database/dists/testing_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp-master.debian.org/database/dists/testing_$(SECTION)_source.list"; - Sections "main contrib non-free"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.$(SECTION)"; - ExtraOverride "override.squeeze.extra.$(SECTION)"; - SrcOverride "override.squeeze.$(SECTION).src"; -}; -""" -apt_trees["di"]["testing"]=""" -tree "dists/testing/main" -{ - FileList "/srv/ftp-master.debian.org/database/dists/testing_main_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; - -tree "dists/testing/non-free" -{ - FileList "/srv/ftp-master.debian.org/database/dists/testing_non-free_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; -""" - -apt_trees["unstable"]=""" -tree "dists/unstable" -{ - FileList "/srv/ftp-master.debian.org/database/dists/unstable_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp-master.debian.org/database/dists/unstable_$(SECTION)_source.list"; - Sections "main contrib non-free"; - Architectures "%(arch)s"; - BinOverride "override.sid.$(SECTION)"; - ExtraOverride "override.sid.extra.$(SECTION)"; - SrcOverride "override.sid.$(SECTION).src"; -}; -""" -apt_trees["di"]["unstable"]=""" -tree "dists/unstable/main" -{ - FileList "/srv/ftp-master.debian.org/database/dists/unstable_main_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.sid.main.$(SECTION)"; - SrcOverride "override.sid.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; - -tree "dists/unstable/non-free" -{ - FileList "/srv/ftp-master.debian.org/database/dists/unstable_non-free_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.sid.main.$(SECTION)"; - SrcOverride "override.sid.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; -""" - -apt_trees["experimental"]=""" -tree "dists/experimental" -{ - FileList "/srv/ftp-master.debian.org/database/dists/experimental_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp-master.debian.org/database/dists/experimental_$(SECTION)_source.list"; - Sections "main contrib non-free"; - Architectures "%(arch)s"; - BinOverride "override.sid.$(SECTION)"; - SrcOverride "override.sid.$(SECTION).src"; -}; -""" -apt_trees["di"]["experimental"]=""" -tree "dists/experimental/main" -{ - FileList "/srv/ftp-master.debian.org/database/dists/experimental_main_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.sid.main.$(SECTION)"; - SrcOverride "override.sid.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; - -tree "dists/experimental/non-free" -{ - FileList "/srv/ftp-master.debian.org/database/dists/experimental_non-free_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.sid.main.$(SECTION)"; - SrcOverride "override.sid.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; -""" - -apt_trees["testing-proposed-updates"]=""" -tree "dists/testing-proposed-updates" -{ - FileList "/srv/ftp-master.debian.org/database/dists/testing-proposed-updates_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp-master.debian.org/database/dists/testing-proposed-updates_$(SECTION)_source.list"; - Sections "main contrib non-free"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.$(SECTION)"; - ExtraOverride "override.squeeze.extra.$(SECTION)"; - SrcOverride "override.squeeze.$(SECTION).src"; - Contents " "; -}; -""" -apt_trees["di"]["testing-proposed-updates"]=""" -tree "dists/testing-proposed-updates/main" -{ - FileList "/srv/ftp-master.debian.org/database/dists/testing-proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - Contents " "; -}; -""" - -apt_trees["proposed-updates"]=""" -tree "dists/proposed-updates" -{ - FileList "/srv/ftp-master.debian.org/database/dists/proposed-updates_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp-master.debian.org/database/dists/proposed-updates_$(SECTION)_source.list"; - Sections "main contrib non-free"; - Architectures "%(arch)s"; - BinOverride "override.lenny.$(SECTION)"; - ExtraOverride "override.lenny.extra.$(SECTION)"; - SrcOverride "override.lenny.$(SECTION).src"; - Contents " "; -}; -""" -apt_trees["di"]["proposed-updates"]=""" -tree "dists/proposed-updates/main" -{ - FileList "/srv/ftp-master.debian.org/database/dists/proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.lenny.main.$(SECTION)"; - SrcOverride "override.lenny.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - Contents " "; -}; -""" - class Suite(object): def __init__(self, *args, **kwargs): pass @@ -2683,62 +2516,6 @@ class Suite(object): return "\n".join(ret) - def generate_packages_sources(self, arch): - """ - Generate Packages/Sources files with apt-ftparchive for the given suite/arch - - @type suite: string - @param suite: Suite name - - @type arch: string - @param arch: Architecture name - """ - - cnf = Config() - try: - # Write apt.conf - (ac_fd, ac_name) = mkstemp(dir=cnf["Dir::TempPath"]) - os.write(ac_fd, DAILY_APT_CONF) - # here we want to generate the tree entries - os.write(ac_fd, apt_trees[self.suite_name] % {'arch': arch}) - # this special casing needs to go away, but this whole thing may just want an - # aptconfig class anyways - if arch != 'source': - if arch == 'hurd-i386' and self.suite_name == 'experimental': - pass - else: - if arch == "amd64": - os.write(ac_fd, apt_trees["di"][self.suite_name] % - {'arch': arch, 'contentsline': 'Contents "$(DIST)/../Contents-udeb";'}) - else: - os.write(ac_fd, apt_trees["di"][self.suite_name] % {'arch': arch, 'contentsline': ''}) - os.close(ac_fd) - - # Run apt-ftparchive generate - # We might want to add a -q or -qq here - os.environ['GZIP'] = '--rsyncable' - os.chdir(cnf["Dir::TempPath"]) - (result, output) = commands.getstatusoutput('apt-ftparchive generate %s' % os.path.basename(ac_name)) - sn="a-f %s,%s: " % (self.suite_name, arch) - print sn + output.replace('\n', '\n%s' % (sn)) - - # Clean up any left behind files - finally: - if ac_fd: - try: - os.close(ac_fd) - except OSError: - pass - - if ac_name: - try: - os.unlink(ac_name) - except OSError: - pass - - - - __all__.append('Suite') @session_wrapper @@ -2907,28 +2684,6 @@ class Uid(object): __all__.append('Uid') -@session_wrapper -def add_database_user(uidname, session=None): - """ - Adds a database user - - @type uidname: string - @param uidname: The uid of the user to add - - @type session: SQLAlchemy - @param session: Optional SQL session object (a temporary one will be - generated if not supplied). If not passed, a commit will be performed at - the end of the function, otherwise the caller is responsible for commiting. - - @rtype: Uid - @return: the uid object for the given uidname - """ - - session.execute("CREATE USER :uid", {'uid': uidname}) - session.commit_or_flush() - -__all__.append('add_database_user') - @session_wrapper def get_or_set_uid(uidname, session=None): """