X-Git-Url: https://git.ralfj.de/mass-build.git/blobdiff_plain/546c80d1c559cb94223f9c459db719d143df7291..5cdbb55f29cd1dea6c5b7f4d67f70dc3822d4843:/kdebuildpy.py diff --git a/kdebuildpy.py b/kdebuildpy.py index d7e8158..b56eb86 100755 --- a/kdebuildpy.py +++ b/kdebuildpy.py @@ -22,13 +22,14 @@ parser.add_argument("modules", metavar='MODULE', nargs='*', args = parser.parse_args() # load config -config = imp.load_source('config', args.config) +config = imp.load_source('config', args.config).__dict__ +os.remove(args.config+'c') # remove compiled python file projects = OrderedDict() # all projects workProjects = [] # projects we work on # an entire Project class Project: - def __init__(self, folder, module): + def __init__(self, config, folder, module): self.folder = folder self.name = module['name'] # VCS @@ -40,17 +41,20 @@ class Project: else: raise Exception("Unknown VCS type "+vcsName) # build system - buildSystemName = module.get('build-system', 'cmake') - if buildSystemName == 'cmake': - self.buildSystem = build_system.CMake(self.sourceFolder(), self.buildFolder(), config) + if config.get('buildDeb', False): + self.buildSystem = build_system.AutoDebuild(self.sourceFolder(), self.buildFolder(), module, self.vcs, config) else: - raise Exception("Unknown build system type "+buildSystemName) + buildSystemName = module.get('build-system', 'cmake') + if buildSystemName == 'cmake': + self.buildSystem = build_system.CMake(self.sourceFolder(), self.buildFolder(), module, config) + else: + raise Exception("Unknown build system type "+buildSystemName) def sourceFolder(self): return os.path.join(self.folder, self.name) def buildFolder(self): - return os.path.join(config.buildDir, self.sourceFolder()) + return os.path.join(config['buildDir'], self.sourceFolder()) # return the position of the given item in the list def findInList(list, item): @@ -60,17 +64,17 @@ def findInList(list, item): raise Exception("%s not found in list" % str(item)) # populate list of projects -def loadProjects(modules, folder=''): +def loadProjects(config, modules, folder=''): for module in modules: if 'folder' in module: # a subpath - loadProjects(module['modules'], os.path.join(folder, module['folder'])) + loadProjects(config, module['modules'], os.path.join(folder, module['folder'])) else: # a proper project if module['name'] in projects: raise Exception("Duplicate module name "+module['name']) - projects[module['name']] = Project(folder, module) + projects[module['name']] = Project(config, folder, module) # now check what we have to do -loadProjects(config.modules) +loadProjects(config, config['modules']) if args.modules: if args.resume_from is not None: raise Exception("Can not use --resume-from and manually specify modules") @@ -92,11 +96,15 @@ for project in workProjects: try: for phase in args.phases: if phase == 'update': + print "Updating",project.sourceFolder() project.vcs.update() elif phase == 'configure': + print "Configuring",project.sourceFolder() project.buildSystem.configure(force=args.reconfigure) elif phase == 'compile': + print "Compiling",project.sourceFolder() project.buildSystem.build() + print "Installing",project.sourceFolder() project.buildSystem.install() else: raise Exception("Invalid phase "+phase)