import gzip
import apt_pkg
from daklib import utils
+from daklib.binary import Binary
from daklib.config import Config
from daklib.dbconn import DBConn
################################################################################
WHERE id IN (SELECT cfn.id FROM content_file_names cfn
LEFT JOIN content_associations ca
ON ca.filename=cfn.id
- WHERE ca.id IS NULL)""" );
+ WHERE ca.id IS NULL)"""
# delete any paths we are storing which have no binary associated with them
remove_filepath_cruft_q = """DELETE FROM content_file_paths
h = open(os.path.join( Config()["Dir::Templates"],
Config()["Contents::Header"] ), "r")
self.header = h.read()
- print( "header: %s" % self.header )
h.close()
except:
log.error( "error opening header file: %d\n%s" % (Config()["Contents::Header"],
traceback.format_exc() ))
self.header = False
else:
- print( "no header" )
self.header = False
return self.header
Internal method for writing all the results to a given file.
The cursor should have a result set generated from a query already.
"""
- f = gzip.open(Config()["Dir::Root"] + filename, "w")
+ filepath = Config()["Contents::Root"] + filename
+ filedir = os.path.dirname(filepath)
+ if not os.path.isdir(filedir):
+ os.makedirs(filedir)
+ f = gzip.open(filepath, "w")
try:
header = self._getHeader()
return
num_tabs = max(1,
- int( math.ceil( (self._goal_column - len(contents[0])) / 8) ) )
+ int(math.ceil((self._goal_column - len(contents[0])) / 8)))
f.write(contents[0] + ( '\t' * num_tabs ) + contents[-1] + "\n")
finally:
for arch_id in arch_list:
cursor.execute( "EXECUTE debs_q(%d, %d)" % ( suite_id, arch_id[0] ) )
- debs = cursor.fetchall()
count = 0
- for deb in debs:
+ while True:
+ deb = cursor.fetchone()
+ if not deb:
+ break
count += 1
- cursor.execute( "EXECUTE olddeb_q(%d)" % (deb[0] ) )
- old = cursor.fetchone()
+ cursor1 = DBConn().cursor();
+ cursor1.execute( "EXECUTE olddeb_q(%d)" % (deb[0] ) )
+ old = cursor1.fetchone()
if old:
log.debug( "already imported: %s" % deb[1] )
else:
debfile = os.path.join( pooldir, deb[1] )
if os.path.exists( debfile ):
- contents = utils.generate_contents_information( debfile )
- DBConn().insert_content_paths(deb[0], contents)
- log.info( "imported (%d/%d): %s" % (count,len(debs),deb[1] ) )
+ Binary(debfile).scan_package( deb[0] )
else:
log.error( "missing .deb: %s" % deb[1] )
def generate(self):
"""
- Generate Contents-$arch.gz files for every aviailable arch in each given suite.
+ Generate Contents-$arch.gz files for every available arch in each given suite.
"""
cursor = DBConn().cursor();
# The MORE fun part. Ok, udebs need their own contents files, udeb, and udeb-nf (not-free)
# This is HORRIBLY debian specific :-/
for section_id, fn_pattern in [("debian-installer","dists/%s/Contents-udeb.gz"),
- ("non-free/debian-installer", "dists/%s/Contents-udeb-nf.gz")]
+ ("non-free/debian-installer", "dists/%s/Contents-udeb-nf.gz")]:
- section_id = DBConn().get_section_id(section_id) # all udebs should be here)
- if section_id != -1:
- cursor.execute("EXECUTE udeb_contents_q(%d,%d,%d)" % (section_id, suite_id, suite_id))
- self._write_content_file(cursor, fn_pattern % suite)
+ section_id = DBConn().get_section_id(section_id) # all udebs should be here)
+ if section_id != -1:
+ cursor.execute("EXECUTE udeb_contents_q(%d,%d,%d)" % (section_id, suite_id, suite_id))
+ self._write_content_file(cursor, fn_pattern % suite)
################################################################################