예제 #1
0
 def __init__(self, exename):
     Builder.__init__(self)
     self.__exename = exename
     self.__state = self.EXE_NOT_SEEN
     self.__exe = None
     self.__depfinder = None
     pass
예제 #2
0
    def relate(self, node, digraph, topolist):
        """
        Builder method. As a service (we do not do anthing meaningful
        with the information ourselves), we remember both the
        topologically sorted list of the libraries that we depend on,
        as well as the libraries that we directly depend on.
        """
        Builder.relate(self, node, digraph, topolist)

        self.__buildinfo_topo_dependent_native_libs = []
        self.__buildinfo_direct_dependent_native_libs = []

        nodes_with_library = algorithm.nearest_property(digraph=digraph, entrypoint=node, property=self.HaveLibraryProperty())
        for n in nodes_with_library:
            for bi in n.iter_buildinfos():
                if type(bi) in (BuildInfo_CLibrary_NativeLocal, BuildInfo_CLibrary_NativeInstalled):
                    self.__buildinfo_direct_dependent_native_libs.append(bi)
                    pass
                pass
            pass
        
        for n in topolist:
            for bi in n.iter_buildinfos():
                if type(bi) in (BuildInfo_CLibrary_NativeLocal, BuildInfo_CLibrary_NativeInstalled):
                    self.__buildinfo_topo_dependent_native_libs.insert(0, bi)
                    pass
                pass
            pass
        pass
예제 #3
0
 def __init__(self, namefinder, has_undefined_symbols=True):
     Builder.__init__(self)
     self.__namefinder = namefinder
     self.__libname = None
     self.__libtool_version_info = None
     self.__has_undefined_symbols = has_undefined_symbols
     pass
예제 #4
0
    def relate(self, node, digraph, topolist):
        Builder.relate(self, node, digraph, topolist)

        self.__have_external_libpath = set()
        self.__external_libpath = []

        self.__have_external_libraries = set()
        self.__external_libraries = []

        for n in topolist:
            for bi in n.iter_buildinfos_type(
                    BuildInfo_LibraryPath_External_CMake):
                for p in reversed(bi.libpath()):
                    if p in self.__have_external_libpath:
                        continue
                    self.__have_external_libpath.add(p)
                    self.__external_libpath.insert(0, p)
                    pass
                pass
            for bi in n.iter_buildinfos_type(BuildInfo_Library_External_CMake):
                for l in reversed(bi.libs()):
                    if l in self.__have_external_libraries:
                        continue
                    self.__have_external_libraries.add(l)
                    self.__external_libraries.insert(0, l)
                    pass
                pass
            pass

        pass
예제 #5
0
 def __init__(self):
     Builder.__init__(self)
     self.__members = set()
     # toplogically sorted list of build infos for all libraries
     # that we depend on.
     self.__buildinfo_topo_dependent_native_libs = []
     # build information for the libraries that we directly depend
     # on.
     self.__buildinfo_direct_dependent_native_libs = []
     pass
예제 #6
0
    def __init__(self, filename, directory):
        Builder.__init__(self)
        self.__filename = filename
        self.__directory = directory
        self.__header_builder = None
        self.__target_directory_builder = None
        self.__slave = None

        self.__num_retries = 0
        pass
예제 #7
0
    def __init__(self, public, shellmatch=None, regex=None):
        Builder.__init__(self)
        self.__shellmatch = shellmatch
        if regex is not None:
            self.__regex = re.compile(regex)
        else:
            self.__regex = None
            pass
        self.__public = public
        self.__seen_headers = set()

        self.__id = str(self.__class__) + '(' + str(shellmatch) + ',' + str(regex) + ',' + str(self.__public) + ')'
        pass
예제 #8
0
    def __init__(self):
        Builder.__init__(self)

        # we remember registered files in a dictionary to maintain
        # uniqueness. NOTE that this object is subject to
        # pickling/unpickling, and that we still do not implement
        # versioning. so be careful about changes.
        self.__registered_files = set()

        # the set of files that have been registered in a previous
        # instance. None means that nothing has been registered.
        self.__previous_registered_files = None

        pass
예제 #9
0
    def __init__(self, regex, prefixdir, datadir):
        assert (datadir is None or prefixdir is None and \
                datadir is not None or prefixdir is not None), \
                'prefixdir: '+str(prefixdir) + ', datadir: '+str(datadir)

        Builder.__init__(self)

        self.__regex = regex
        self.__datadir = datadir
        self.__prefixdir = prefixdir
        self.__handled_entries = set()

        try:
            self.__compiled_regex = re.compile(regex)
        except Exception, e:
            raise Error('Error compiling regex "' + regex + '"', [e])
예제 #10
0
    def __init__(self,
                 name=None,
                 incpath=[],
                 cflags=[],
                 cxxflags=[],
                 cmdlinemacros={},
                 libpath=[],
                 libs=[]):
        Builder.__init__(self)

        self.__name = name
        self.__incpath = incpath
        self.__cflags = cflags
        self.__cxxflags = cxxflags
        self.__cmdlinemacros = cmdlinemacros
        self.__libpath = libpath
        self.__libs = libs
        pass
예제 #11
0
    def __init__(self):
        Builder.__init__(self)

        # only the package root directory will have configure.ac and
        # acinclude.m4. we will allocate them once we know where we
        # are.
        self.__configure_ac = None
        self.__acinclude_m4 = None

        # any directory has a Makefile.am ...
        self.__makefile_am = Makefile_am()
        # ... and helper that we use to install files intelligently
        # (well, more or less so).
        self.__file_installer = FileInstaller()

        # a flag to generate other builders only once.
        self.__bursted = False

        pass
예제 #12
0
    def relate(self, node, digraph, topolist):
        """
        Builder method. Gather the automake specific build
        information, such as BuildInfo_CLibrary_External.
        """
        Builder.relate(self, node, digraph, topolist)

        self.__external_libpath = []
        self.__have_external_libpath = set()
        self.__external_libraries = []

        for n in topolist:
            for bi in n.iter_buildinfos_type(BuildInfo_Library_External_AM):
                key = '.'.join(bi.libpath())
                if not key in self.__have_external_libpath:
                    self.__have_external_libpath.add(key)
                    self.__external_libpath.insert(0, bi.libpath())
                    pass
                self.__external_libraries.insert(0, bi.libs())
                pass
            pass
        pass
예제 #13
0
    def __init__(self):
        Builder.__init__(self)

        self.__external_cflags = []
        self.__external_cmdlinemacros = {}

        # include path for external modules. this is a list of lists,
        # of the form

        # [['-I/dir1'],
        #  ['-I/this/dir/include', '-I/that/dir/include']]

        # each list has been distributed to us by one module, and we
        # must not change the order inside the individual lists - they
        # may be significant, and the distributing modules surely
        # don't expect us to mess with the order.

        # the complete list is accompanied with a set which serves us
        # to sort out duplicates from the beginning.

        self.__have_external_incpath = set()
        self.__external_incpath = []
        pass
예제 #14
0
 def __init__(self, packagename):
     Builder.__init__(self)
     self.__packagename = packagename
     self.__external_library_builder_created = False
     pass
예제 #15
0
 def __init__(self):
     Builder.__init__(self)
     self.__seen = False
     pass
예제 #16
0
 def __init__(self, provide):
     Builder.__init__(self)
     self.__provide = provide
     self.__num_rounds = 0
     pass
예제 #17
0
 def __init__(self):
     Builder.__init__(self)
     self.__round = 0
     pass
예제 #18
0
 def __init__(self):
     Builder.__init__(self)
     self.handled_entries_ = set()
     pass
예제 #19
0
 def __init__(self):
     Builder.__init__(self)
     self.__exploded = False
     pass
예제 #20
0
 def __init__(self):
     Builder.__init__(self)
     # remember directories that we already saw.
     self.__recognized_directories = set()
     pass
예제 #21
0
 def __init__(self):
     Builder.__init__(self)
     self.__seen_filenames = set()
     pass
예제 #22
0
 def __init__(self, exe_builder):
     Builder.__init__(self)
     self.__exe_builder = exe_builder
     pass
예제 #23
0
 def __init__(self):
     Builder.__init__(self)
     # { exebuilder: depfinder }
     self.__library_dependency_finder_by_exe = {}
     pass
예제 #24
0
 def __init__(self):
     Builder.__init__(self)
     self.__requested_calls = []
     pass
예제 #25
0
 def __init__(self):
     Builder.__init__(self)
     self.seen_buildinfo = False
     pass
예제 #26
0
 def __init__(self, header_builder):
     Builder.__init__(self)
     self.__header_builder = header_builder
     pass
예제 #27
0
 def __init__(self, use_libtool):
     Builder.__init__(self)
     self.__use_libtool = use_libtool
     pass
예제 #28
0
 def __init__(self, installdir):
     Builder.__init__(self)
     self.__installdir = installdir
     self.__seen_header_builders = set()
     pass
예제 #29
0
 def __init__(self, packagename):
     Builder.__init__(self)
     self.__packagename = packagename
     self.__bursted = False
     pass