2013-05-02 19:13:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
class BootstrapInformation(object):
|
2013-06-09 15:50:00 +02:00
|
|
|
def __init__(self, manifest=None, debug=False):
|
2013-05-02 19:13:35 +02:00
|
|
|
self.manifest = manifest
|
2013-07-13 15:01:56 +02:00
|
|
|
self.debug = debug
|
2013-12-29 16:09:47 +01:00
|
|
|
|
2013-07-13 15:01:56 +02:00
|
|
|
import random
|
2013-12-28 13:56:48 +01:00
|
|
|
self.run_id = '{id:08x}'.format(id=random.randrange(16 ** 8))
|
2013-12-29 16:09:47 +01:00
|
|
|
|
2013-09-15 16:59:56 +02:00
|
|
|
import os.path
|
2013-12-28 13:56:48 +01:00
|
|
|
self.workspace = os.path.join(manifest.bootstrapper['workspace'], self.run_id)
|
2013-12-01 14:34:38 +01:00
|
|
|
|
2013-12-29 16:09:47 +01:00
|
|
|
from fs import load_volume
|
|
|
|
self.volume = load_volume(self.manifest.volume)
|
|
|
|
|
2013-12-29 22:50:35 +01:00
|
|
|
self.apt_mirror = self.manifest.packages.get('mirror', 'http://http.debian.net/debian')
|
|
|
|
|
2013-12-29 16:48:55 +01:00
|
|
|
class DictClass(dict):
|
|
|
|
def __getattr__(self, name):
|
|
|
|
return self[name]
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
self[name] = value
|
|
|
|
|
|
|
|
def set_manifest_vars(obj, data):
|
|
|
|
for key, value in data.iteritems():
|
|
|
|
if isinstance(value, dict):
|
|
|
|
obj[key] = DictClass()
|
|
|
|
set_manifest_vars(obj[key], value)
|
|
|
|
continue
|
|
|
|
if not isinstance(value, list):
|
|
|
|
obj[key] = value
|
|
|
|
|
|
|
|
self.manifest_vars = {}
|
2013-12-29 22:50:35 +01:00
|
|
|
self.manifest_vars['apt_mirror'] = self.apt_mirror
|
2013-12-29 16:48:55 +01:00
|
|
|
set_manifest_vars(self.manifest_vars, self.manifest.data)
|
|
|
|
|
|
|
|
from datetime import datetime
|
|
|
|
now = datetime.now()
|
|
|
|
time_vars = ['%a', '%A', '%b', '%B', '%c', '%d', '%f', '%H',
|
|
|
|
'%I', '%j', '%m', '%M', '%p', '%S', '%U', '%w',
|
|
|
|
'%W', '%x', '%X', '%y', '%Y', '%z', '%Z']
|
|
|
|
for key in time_vars:
|
|
|
|
self.manifest_vars[key] = now.strftime(key)
|
|
|
|
|
|
|
|
from pkg.sourceslist import SourceLists
|
2014-01-09 17:21:29 +01:00
|
|
|
self.source_lists = SourceLists(self.manifest_vars)
|
2013-12-29 16:48:55 +01:00
|
|
|
from pkg.packagelist import PackageList
|
2014-01-09 17:21:29 +01:00
|
|
|
self.packages = PackageList(self.manifest_vars, self.source_lists)
|
2013-12-29 16:09:47 +01:00
|
|
|
self.include_packages = set()
|
|
|
|
self.exclude_packages = set()
|
|
|
|
|
|
|
|
self.host_dependencies = set()
|
|
|
|
|
2013-12-01 14:34:38 +01:00
|
|
|
self.initd = {'install': {}, 'disable': []}
|