From 1fc2bf300a251648e71f85979e20f3d649c3caad Mon Sep 17 00:00:00 2001 From: Mike O'Connor Date: Fri, 27 Feb 2009 09:46:45 -0500 Subject: [PATCH] get contents branch working with etch era pacakges * old tarfile doens't know that ./contents is the same as contents * add parameter types to PREPARE statements (needed for pg 8.1) Signed-off-by: Mike O'Connor --- dak/contents.py | 10 +++++----- dak/process_unchecked.py | 2 +- daklib/binary.py | 26 ++++++++++++++++++++------ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/dak/contents.py b/dak/contents.py index 3444071c..eaa1fb6b 100644 --- a/dak/contents.py +++ b/dak/contents.py @@ -91,14 +91,14 @@ log = logging.getLogger() # get all the arches delivered for a given suite # this should probably exist somehere common -arches_q = """PREPARE arches_q as +arches_q = """PREPARE arches_q(int) as SELECT s.architecture, a.arch_string FROM suite_architectures s JOIN architecture a ON (s.architecture=a.id) WHERE suite = $1""" # find me the .deb for a given binary id -debs_q = """PREPARE debs_q as +debs_q = """PREPARE debs_q(int, int) as SELECT b.id, f.filename FROM bin_assoc_by_arch baa JOIN binaries b ON baa.bin=b.id JOIN files f ON b.file=f.id @@ -106,13 +106,13 @@ debs_q = """PREPARE debs_q as AND arch = $2""" # ask if we already have contents associated with this binary -olddeb_q = """PREPARE olddeb_q as +olddeb_q = """PREPARE olddeb_q(int) as SELECT 1 FROM content_associations WHERE binary_pkg = $1 LIMIT 1""" # find me all of the contents for a given .deb -contents_q = """PREPARE contents_q as +contents_q = """PREPARE contents_q(int,int,int,int) as SELECT (p.path||'/'||n.file) AS fn, comma_separated_list(s.section||'/'||b.package) FROM content_associations c @@ -131,7 +131,7 @@ contents_q = """PREPARE contents_q as ORDER BY fn""" # find me all of the contents for a given .udeb -udeb_contents_q = """PREPARE udeb_contents_q as +udeb_contents_q = """PREPARE udeb_contents_q(int,int,int) as SELECT (p.path||'/'||n.file) as fn, comma_separated_list(s.section||'/'||b.package) FROM content_associations c diff --git a/dak/process_unchecked.py b/dak/process_unchecked.py index 491c5560..4b731a17 100755 --- a/dak/process_unchecked.py +++ b/dak/process_unchecked.py @@ -400,7 +400,7 @@ def check_files(): cursor = DBConn().cursor() # Check for packages that have moved from one component to another # STU: this should probably be changed to not join on architecture, suite tables but instead to used their cached name->id mappings from DBConn - cursor.execute("""PREPARE moved_pkg_q AS + cursor.execute("""PREPARE moved_pkg_q(text,text,text) AS SELECT c.name FROM binaries b, bin_associations ba, suite s, location l, component c, architecture a, files f WHERE b.package = $1 AND s.suite_name = $2 diff --git a/daklib/binary.py b/daklib/binary.py index a2601a72..3137e229 100755 --- a/daklib/binary.py +++ b/daklib/binary.py @@ -24,6 +24,21 @@ Functions related debian binary packages ################################################################################ +# are we going the xorg way? +# a dak without a dak.conf? +# automatically detect the wrong settings at runtime? +# yes! +# well, we'll probably always need dak.conf (how do you get the database setting +# but removing most of the config into the database seems sane +# mhy: dont spoil the fun +# mhy: and i know how. we nmap localhost and check all open ports +# maybe one answers to sql +# we will discover projectb via avahi +# you're both sick +# really fucking sick + +################################################################################ + import os import shutil import tempfile @@ -141,24 +156,23 @@ class Binary(object): os.chdir(self.tmpdir) if self.chunks[1] == "control.tar.gz": control = tarfile.open(os.path.join(self.tmpdir, "control.tar.gz" ), "r:gz") - - + control.extract('control', self.tmpdir ) if self.chunks[2] == "data.tar.gz": data = tarfile.open(os.path.join(self.tmpdir, "data.tar.gz"), "r:gz") elif self.chunks[2] == "data.tar.bz2": data = tarfile.open(os.path.join(self.tmpdir, "data.tar.bz2" ), "r:bz2") if bootstrap_id: - result = DBConn().insert_content_paths(bootstrap_id, [ tarinfo.name for tarinfo in data if not tarinfo.isdir()]) + result = DBConn().insert_content_paths(bootstrap_id, [tarinfo.name for tarinfo in data if not tarinfo.isdir()]) else: - pkg = deb822.Packages.iter_paragraphs( control.extractfile('./control') ).next() - result = DBConn().insert_pending_content_paths(pkg, [ tarinfo.name for tarinfo in data if not tarinfo.isdir()]) + pkg = deb822.Packages.iter_paragraphs(file(os.path.join(self.tmpdir,'control'))).next() + result = DBConn().insert_pending_content_paths(pkg, [tarinfo.name for tarinfo in data if not tarinfo.isdir()]) except: traceback.print_exc() result = False - os.chdir( cwd ) + os.chdir(cwd) return result if __name__ == "__main__": -- 2.39.2