X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=daklib%2Flists.py;h=5766371ce8382715937caffadb0a6b7682b679ce;hb=fa727dcf0058058565278421d16ea75c156e7fa3;hp=a8d3cedbe03853ee5a061e200a64d25856c48935;hpb=3fc20f7b955dac60069640cdd0e25b9e69b8756f;p=dak.git diff --git a/daklib/lists.py b/daklib/lists.py old mode 100755 new mode 100644 index a8d3cedb..5766371c --- a/daklib/lists.py +++ b/daklib/lists.py @@ -42,20 +42,42 @@ def getSources(suite, component, session, timestamp = None): if timestamp: extra_cond = "AND extract(epoch from sa.created) > %d" % timestamp query = """ - SELECT s.id, l.path, f.filename + SELECT s.id, archive.path || 'pool/', c.name || '/' || f.filename FROM source s JOIN src_associations sa ON s.id = sa.source AND sa.suite = :suite %s + JOIN suite + ON sa.suite = suite.id + JOIN archive + ON suite.archive_id = archive.id JOIN files f ON s.file = f.id - JOIN location l - ON f.location = l.id AND l.component = :component + JOIN files_archive_map fam + ON fam.file_id = f.id AND fam.component_id = :component + JOIN component c + ON fam.component_id = c.id ORDER BY filename """ % extra_cond args = { 'suite': suite.suite_id, 'component': component.component_id } return fetch(query, args, session) +def getArchAll(suite, component, architecture, type, session, timestamp = None): + ''' + Calculates all binaries in suite and component of architecture 'all' (and + only 'all') and type 'deb' or 'udeb' optionally limited to binaries newer + than timestamp. Returns a generator that yields a tuple of binary id and + full pathname to the u(deb) file. See function writeAllList() in + dak/generate_filelist.py for an example that uses this function. + ''' + query = suite.clone(session).binaries. \ + filter_by(architecture = architecture, binarytype = type) + if timestamp is not None: + extra_cond = 'extract(epoch from bin_associations.created) > %d' % timestamp + query = query.filter(extra_cond) + for binary in query: + yield (binary.binary_id, binary.poolfile.fullpath) + def getBinaries(suite, component, architecture, type, session, timestamp = None): ''' Calculates the binaries in suite and component of architecture and @@ -90,12 +112,16 @@ CREATE TEMP TABLE gf_candidates ( source text); INSERT INTO gf_candidates (id, filename, path, architecture, src, source) - SELECT bc.id, f.filename, l.path, bc.architecture, bc.source as src, s.source + SELECT bc.id, c.name || '/' || f.filename, archive.path || 'pool/' , bc.architecture, bc.source as src, s.source FROM b_candidates bc JOIN source s ON bc.source = s.id JOIN files f ON bc.file = f.id - JOIN location l ON f.location = l.id - WHERE l.component = :component; + JOIN files_archive_map fam ON f.id = fam.file_id + JOIN component c ON fam.component_id = c.id + JOIN archive ON fam.archive_id = archive.id + JOIN suite ON suite.archive_id = archive.id + + WHERE c.id = :component AND suite.id = :suite; WITH arch_any AS