X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dak%2Finit_dirs.py;h=0e0d33a94ea85f8d3b573ada62a57145887c726a;hb=fa727dcf0058058565278421d16ea75c156e7fa3;hp=71a3831115f55540131e8bbe1682a9b1ea7c2cdb;hpb=533e072fffab799e6491487cd4f03173f526e5df;p=dak.git diff --git a/dak/init_dirs.py b/dak/init_dirs.py index 71a38311..0e0d33a9 100755 --- a/dak/init_dirs.py +++ b/dak/init_dirs.py @@ -63,7 +63,7 @@ def process_file(config, config_name): def process_tree(config, tree): """Create directories for a config tree.""" - for entry in config.SubTree(tree).List(): + for entry in config.subtree(tree).list(): entry = entry.lower() config_name = "%s::%s" % (tree, entry) target = config[config_name] @@ -77,10 +77,33 @@ def process_morguesubdir(subdir): target = os.path.join(Cnf["Dir::Morgue"], Cnf[config_name]) do_dir(target, config_name) +def process_keyring(fullpath, secret=False): + """Create empty keyring if necessary.""" + + if os.path.exists(fullpath): + return + + keydir = os.path.dirname(fullpath) + + if not os.path.isdir(keydir): + print "Creating %s ..." % (keydir) + os.makedirs(keydir) + if secret: + # Make sure secret keyring directories are 0700 + os.chmod(keydir, 0o700) + + # Touch the file + print "Creating %s ..." % (fullpath) + file(fullpath, 'w') + if secret: + os.chmod(fullpath, 0o600) + else: + os.chmod(fullpath, 0o644) + ###################################################################### def create_directories(): - """Create directories referenced in dak.conf and apt.conf.""" + """Create directories referenced in dak.conf.""" session = DBConn().session() @@ -98,19 +121,23 @@ def create_directories(): for subdir in [ "Clean-Queues", "Clean-Suites" ]: process_morguesubdir(subdir) - suite_suffix = "%s" % (Cnf.Find("Dinstall::SuiteSuffix")) + suite_suffix = "%s" % (Cnf.find("Dinstall::SuiteSuffix")) - # Process pool directories - for component in session.query(Component): - directory = os.path.join( Cnf['Dir::Pool'], component.component_name ) + # Process secret keyrings + if Cnf.has_key('Dinstall::SigningKeyring'): + process_keyring(Cnf['Dinstall::SigningKeyring'], secret=True) - do_dir(directory, '%s pool' % component.component_name) + if Cnf.has_key('Dinstall::SigningPubKeyring'): + process_keyring(Cnf['Dinstall::SigningPubKeyring'], secret=True) + # Process public keyrings + for keyring in session.query(Keyring).filter_by(active=True): + process_keyring(keyring.keyring_name) # Process dists directories # TODO: Store location of each suite in database for suite in session.query(Suite): - suite_dir = os.path.join( Cnf['Dir::Root'], 'dists', "%s/%s" % (suite.suite_name, suite_suffix) ) + suite_dir = os.path.join(suite.archive.path, 'dists', suite.suite_name, suite_suffix) # TODO: Store valid suite/component mappings in database for component in session.query(Component): @@ -145,9 +172,9 @@ def main (): d = DBConn() - arguments = apt_pkg.ParseCommandLine(Cnf, arguments, sys.argv) + arguments = apt_pkg.parse_commandline(Cnf, arguments, sys.argv) - options = Cnf.SubTree("Init-Dirs::Options") + options = Cnf.subtree("Init-Dirs::Options") if options["Help"]: usage() elif arguments: