Loads jamfile at the given location. After loading, project global
        file and jamfile needed by the loaded one will be loaded recursively.
        If the jamfile at that location is loaded already, does nothing.
        Returns the project module for the Jamfile.

def load (self, jamfile_location):
        """Loads jamfile at the given location. After loading, project global
        file and jamfile needed by the loaded one will be loaded recursively.
        If the jamfile at that location is loaded already, does nothing.
        Returns the project module for the Jamfile."""
        assert isinstance(jamfile_location, basestring)

        absolute = os.path.join(os.getcwd(), jamfile_location)
        absolute = os.path.normpath(absolute)
        jamfile_location = b2.util.path.relpath(os.getcwd(), absolute)

        mname = self.module_name(jamfile_location)
        # If Jamfile is already loaded, do not try again.
        if not mname in self.jamfile_modules:

            if "--debug-loading" in self.manager.argv():
                print "Loading Jamfile at '%s'" % jamfile_location

            self.load_jamfile(jamfile_location, mname)

            # We want to make sure that child project are loaded only
            # after parent projects. In particular, because parent projects
            # define attributes which are inherited by children, and we do not
            # want children to be loaded before parents has defined everything.
            #
            # While "build-project" and "use-project" can potentially refer
            # to child projects from parent projects, we do not immediately
            # load child projects when seing those attributes. Instead,
            # we record the minimal information that will be used only later.

            self.load_used_projects(mname)

        return mname