Example #1
0
        #
        # Handle depend propigation.
        #
        # Propigation occurs when a layer A depends on layer B, and
        # layer C depends on layer D, but Layer A also depends on Layer
        # C, which means layer D must now also depend on layer B.
        #
        # Currently this creates a depend-all (LayerOnLayer) between
        # the propigated depends.
        #
        for depend in on_layer.get_depends():
            if depend.is_propigated():
                for my_depend in self.get_depends():
                    dependant = my_depend.get_depend_on_layer()
                    logger.info("propigating dependency %s -> %s" %
                                (dependant, depend.get_depend_on_layer()))
                    dependant.depend_all(depend.get_depend_on_layer(),
                                         propigate=False)

    def undepend(self, depend):
        """
        Remove the given dependency.  If the dependency does not exist
        no exception is thrown.
        """
        try:
            self.__depends.remove(depend)
        except Exception, e:
            logger.warn("failed to remove dependency %s, %s" % (depend, e))

    def get_depends(self):
        """Return a tuple of dependencies this layer depends on."""