# Copyright (C) 2012,2013 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import cliapp import morphlib class BuildPlugin(cliapp.Plugin): def enable(self): self.app.add_subcommand('build-morphology', self.build_morphology, arg_synopsis='(REPO REF FILENAME)...') def disable(self): pass def build_morphology(self, args): '''Build a system, outside of a system branch. Command line arguments: * `REPO` is a git repository URL. * `REF` is a branch or other commit reference in that repository. * `FILENAME` is a morphology filename at that ref. You probably want `morph build` instead. However, in some cases it is more convenient to not have to create a Morph workspace and check out the relevant system branch, and only just run the build. For those times, this command exists. This subcommand does not automatically commit changes to a temporary branch, so you can only build from properly committed sources that have been pushed to the git server. Example: morph build-morphology baserock:baserock/morphs \ master devel-system-x86_64-generic ''' # Raise an exception if there is not enough space morphlib.util.check_disk_available( self.app.settings['tempdir'], self.app.settings['tempdir-min-space'], self.app.settings['cachedir'], self.app.settings['cachedir-min-space']) build_command = morphlib.buildcommand.BuildCommand(self.app) build_command = self.app.hookmgr.call('new-build-command', build_command) build_command.build(args)