diff options
Diffstat (limited to 'morphlib/source.py')
-rw-r--r-- | morphlib/source.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/morphlib/source.py b/morphlib/source.py new file mode 100644 index 00000000..399d9e0c --- /dev/null +++ b/morphlib/source.py @@ -0,0 +1,54 @@ +# Copyright (C) 2012 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 morphlib + + +class Source(object): + + '''Represent the source to be built. + + Has the following properties: + + * ``repo`` -- the git repository which contains the source + * ``sha1`` -- the absolute git commit id for the revision we use + * ``morphology`` -- the in-memory representation of the morphology we use + * ``dependencies`` -- list of Sources for build dependencies for us + * ``dependents`` -- list of Source for whom we are a build dependency + + The ``dependencies`` and ``dependents`` lists MUST be modified by + the ``add_dependencies`` and ``add_dependent`` methods only. + + ''' + + def __init__(self, repo, sha1, morphology): + assert type(morphology) == morphlib.morph2.Morphology + self.repo = repo + self.sha1 = sha1 + self.morphology = morphology + self.dependencies = [] + self.dependents = [] + + def add_dependency(self, source): + '''Add ``source`` to the dependency list.''' + if source not in self.dependencies: + self.dependencies.append(source) + source.dependents.append(self) + + def depends_on(self, source): + '''Do we depend on ``source``?''' + return source in self.dependencies + |