示例#1
0
    def test__long_mangled_name(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('LibraryInMemoryTest')",
                                   "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR,
                               entry=File(lines=["LIBRARY(members=[])"]))

        package = LocalPackage(
            rootdirectory=fs.rootdirectory(),
            setups=[ExplicitDirectorySetup(),
                    ExplicitCSetup()])
        package.boil(external_nodes=[])

        found_lib_builder = None
        for b in package.rootbuilder().iter_builders():
            if type(b) is LibraryBuilder:
                self.failUnless(found_lib_builder is None)
                found_lib_builder = b
                continue
            pass
        self.failIf(found_lib_builder is None)
        self.failUnless(found_lib_builder.basename() == 'LibraryInMemoryTest')
        pass
示例#2
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                "PACKAGE_NAME('ExplicitLibraryVersionTest')",
                "PACKAGE_VERSION('1.2.3')"
            ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR,
                               entry=File(lines=["LIBRARY_VERSION((6,6,6))"]))
        fs.rootdirectory().add(name='file.c', entry=File())
        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=True)])
        package.boil(external_nodes=[])

        for b in package.rootbuilder().iter_builders():
            if isinstance(b, LibraryBuilder):
                lib_builder = b
                break
            pass
        else:
            self.fail()
            pass

        self.failUnlessEqual(lib_builder.version(), (6, 6, 6))
        self.failUnlessEqual(lib_builder.default_version(), "1.2.3")
        pass
示例#3
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=["PACKAGE_NAME('"+self.__class__.__name__+"')",
                              "PACKAGE_VERSION('1.2.3')"]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=["from libconfix.core.machinery.builder import Builder",
                              "class MyBuilder(Builder):",
                              "    def locally_unique_id(self): return 'my_builder_id'",
                              "ADD_BUILDER(builder=MyBuilder())"]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ExplicitSetup(use_libtool=True)])
        package.boil(external_nodes=[])

        for b in package.rootbuilder().iter_builders():
            if b.locally_unique_id() == 'my_builder_id':
                break
            pass
        else:
            self.fail()
            pass
        pass
示例#4
0
    def test__implicit_name(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('ExecutableInMemoryTest')",
                                   "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(
                lines=["EXECUTABLE(center=C(filename='main.c'), members=[])"]))
        fs.rootdirectory().add(name='main.c', entry=File())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ExplicitSetup(use_libtool=False)])
        package.boil(external_nodes=[])

        found_exe_builder = None
        for b in package.rootbuilder().iter_builders():
            if isinstance(b, ExecutableBuilder):
                self.failUnless(found_exe_builder is None)
                found_exe_builder = b
                continue
            pass
        self.failIf(found_exe_builder is None)
        self.failUnless(
            found_exe_builder.exename() == 'ExecutableInMemoryTest_main')
        pass
示例#5
0
    def test(self):
        fs = dirhier.packageroot()
        fs.rootdirectory().add(name='file.h', entry=File(lines=[]))
        fs.rootdirectory().add(name='file.c', entry=File(lines=[]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])
        package.boil(external_nodes=[])

        file_h_builder = None
        file_c_builder = None
        library_builder = None
        for b in package.rootbuilder().iter_builders():
            if isinstance(b, FileBuilder):
                if b.file().name() == 'file.h' and isinstance(
                        b, HeaderBuilder):
                    file_h_builder = b
                    pass
                if b.file().name() == 'file.c' and isinstance(b, CBuilder):
                    file_c_builder = b
                    pass
                pass
            if isinstance(b, LibraryBuilder):
                library_builder = b
                pass
            pass
        self.failUnless(isinstance(file_h_builder, HeaderBuilder))
        self.failUnless(isinstance(file_c_builder, CBuilder))
        self.failUnless(isinstance(library_builder, LibraryBuilder))

        self.failUnless(file_h_builder in library_builder.members())
        self.failUnless(file_c_builder in library_builder.members())
        pass
示例#6
0
    def testExplicitName(self):
        fs = FileSystem(path=['don\'t', 'care'])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                "PACKAGE_NAME('LibraryNames.testExplicitName')",
                "PACKAGE_VERSION('1.2.3')"
            ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR,
                               entry=File(lines=["LIBNAME('myownname')"]))
        fs.rootdirectory().add(name='file.c', entry=File())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])
        package.boil(external_nodes=[])

        for b in package.rootbuilder().iter_builders():
            if isinstance(b, LibraryBuilder):
                self.failUnlessEqual(b.basename(), 'myownname')
                break
            pass
        else:
            self.fail()
            pass
        pass
示例#7
0
    def test(self):
        fs = FileSystem(path=['don\'t', 'care'])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                "PACKAGE_NAME('" + self.__class__.__name__ +
                "')", "PACKAGE_VERSION('1.2.3')",
                "from libconfix.setups.explicit_setup import ExplicitSetup",
                "SETUP([ExplicitSetup(use_libtool=True)])"
            ]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=["DIRECTORY(['dir1'])", "DIRECTORY(['dir2'])"]))
        dir1 = fs.rootdirectory().add(name='dir1', entry=Directory())
        dir2 = fs.rootdirectory().add(name='dir2', entry=Directory())
        dir1.add(name=const.CONFIX2_DIR,
                 entry=File(lines=["PROVIDE_SYMBOL('x')"]))
        dir2.add(name=const.CONFIX2_DIR,
                 entry=File(lines=["PROVIDE_SYMBOL('x')"]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=None)
        try:
            package.boil(external_nodes=[])
            self.fail()
        except Error:
            pass
        pass
示例#8
0
    def setUp(self):
        self.fs_ = dirhier.packageroot()
        liblo = self.fs_.rootdirectory().add(name='lo', entry=Directory())
        liblo.add(name=const.CONFIX2_DIR,
                  entry=File(lines=["LIBRARY_VERSION((1,2,3))"]))
        liblo.add(name='lo.h',
                  entry=File(lines=[
                      '#ifndef LO_H', '#  define LO_H', '#endif', 'void lo();'
                  ]))
        liblo.add(name='lo.c', entry=File(lines=['void lo() {}']))

        self.package_ = LocalPackage(
            rootdirectory=self.fs_.rootdirectory(),
            setups=[ConfixSetup(use_libtool=self.use_libtool())])
        self.package_.boil(external_nodes=[])
        self.package_.output()

        self.lodir_builder_ = self.package_.rootbuilder().find_entry_builder(
            ['lo'])
        self.failIf(self.lodir_builder_ is None)
        self.lodir_output_builder_ = find_automake_output_builder(
            self.lodir_builder_)
        self.failIf(self.lodir_output_builder_ is None)

        self.lolib_builder_ = None
        for b in self.lodir_builder_.iter_builders():
            if isinstance(b, LibraryBuilder):
                self.lolib_builder_ = b
                pass
            pass

        assert self.lolib_builder_ is not None

        pass
示例#9
0
    def setUp(self):
        fs = FileSystem(path=['', 'path', 'to', 'it'])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('ExternalLibraryTest')",
                                   "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR,
                               entry=File(lines=[
                                   'DIRECTORY(["lolo"])',
                                   'DIRECTORY(["lo"])',
                                   'DIRECTORY(["hi"])',
                               ]))
        lolo = fs.rootdirectory().add(name='lolo', entry=Directory())
        lolo.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                "PROVIDE_SYMBOL('lolo')", "EXTERNAL_LIBRARY(",
                "    incpath=['-I/the/include/path/of/lolo'],",
                "    libpath=['-L/the/first/library/path/of/lolo', '-L/the/second/library/path/of/lolo'],",
                "    cflags=['lolo_cflags'],",
                "    cxxflags=['lolo_cxxflags'],",
                "    cmdlinemacros={'cmdlinemacro_lolo': 'value_lolo'},",
                "    libs=['-llolo'])"
            ]))

        lo = fs.rootdirectory().add(name='lo', entry=Directory())
        lo.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                "REQUIRE_SYMBOL('lolo', URGENCY_ERROR)",
                "PROVIDE_SYMBOL('lo')", "EXTERNAL_LIBRARY(",
                "    incpath=['-I/the/include/path/of/lo'],",
                "    libpath=['-L/the/first/library/path/of/lo', '-L/the/second/library/path/of/lo'],",
                "    cflags=['lo_cflags'],", "    cxxflags=['lo_cxxflags'],",
                "    cmdlinemacros={'cmdlinemacro_lo': 'value_lo'},",
                "    libs=['-llo'])"
            ]))

        hi = fs.rootdirectory().add(name='hi', entry=Directory())
        hi.add(name=const.CONFIX2_DIR,
               entry=File(lines=[
                   'hi_c = C(filename="hi_c.c")',
                   'hi_cc = CXX(filename="hi_cc.cc")',
                   'LIBRARY(basename="hi", members=[hi_c, hi_cc])'
               ]))
        hi.add(name='hi_c.c',
               entry=File(
                   lines=["// CONFIX:REQUIRE_SYMBOL('lo', URGENCY_ERROR)"]))
        hi.add(name='hi_cc.cc',
               entry=File(
                   lines=["// CONFIX:REQUIRE_SYMBOL('lo', URGENCY_ERROR)"]))

        self.__package = LocalPackage(rootdirectory=fs.rootdirectory(),
                                      setups=[ExplicitSetup(use_libtool=True)])
        self.__package.boil(external_nodes=[])
        self.__package.output()

        pass
示例#10
0
 def testNoInstallPath(self):
     fs = dirhier.packageroot()
     fs.rootdirectory().add(name='file.h', entry=File(lines=[]))
     fs.rootdirectory().add(name='file.c',
                            entry=File(lines=['#include "file.h"']))
     package = LocalPackage(rootdirectory=fs.rootdirectory(),
                            setups=[ConfixSetup(use_libtool=False)])
     package.boil(external_nodes=[])
     self.failUnlessEqual(len(package.rootbuilder().requires()), 0)
     pass
示例#11
0
    def test__CMAKE_CMAKELISTS_ADD_INCLUDE_local_only(self):
        fs = FileSystem(path=[''])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("test_CMAKE_CMAKELISTS_ADD_INCLUDE_local_only")',
                'PACKAGE_VERSION("1.2.3")'
            ]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'CMAKE_CMAKELISTS_ADD_INCLUDE("include1", CMAKE_BUILDINFO_LOCAL)',
                'CMAKE_CMAKELISTS_ADD_INCLUDE("include2", CMAKE_BUILDINFO_LOCAL)'
            ]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ExplicitDirectorySetup(),
                                       CMakeSetup()])
        package.boil(external_nodes=[])
        package.output()

        self.failUnless('include1' in find_cmake_output_builder(
            package.rootbuilder()).top_cmakelists().get_includes())
        self.failUnless('include2' in find_cmake_output_builder(
            package.rootbuilder()).top_cmakelists().get_includes())

        for buildinfo in package.rootbuilder().iter_buildinfos():
            self.failIf(
                isinstance(buildinfo, BuildInfo_Toplevel_CMakeLists_Include))
            pass
        pass
示例#12
0
    def test__CMAKE_CMDLINE_MACROS_local_only(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("test_CMAKE_CMDLINE_MACROS_local_only")',
                'PACKAGE_VERSION("1.2.3")'
            ]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'CMAKE_CMDLINE_MACROS(macros={"macro1": "value1", "macro2": "value2"}, flags=CMAKE_BUILDINFO_LOCAL)'
            ]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ExplicitDirectorySetup(),
                                       CMakeSetup()])
        package.boil(external_nodes=[])
        package.output()

        self.failUnless("-Dmacro1=value1" in find_cmake_output_builder(
            package.rootbuilder()).local_cmakelists().get_definitions())
        self.failUnless("-Dmacro2=value2" in find_cmake_output_builder(
            package.rootbuilder()).local_cmakelists().get_definitions())

        for buildinfo in package.rootbuilder().iter_buildinfos():
            self.failIf(
                isinstance(buildinfo, BuildInfo_CommandlineMacros_CMake))
            pass
        pass
示例#13
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=['PACKAGE_NAME("'+self.__class__.__name__+'")',
                              'PACKAGE_VERSION("1.2.3")']))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File())

        lo = fs.rootdirectory().add(
            name='lo',
            entry=Directory())

        hi = fs.rootdirectory().add(
            name='hi',
            entry=Directory())

        package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[NullSetup()])

        lodir_builder = DirectoryBuilder(directory=lo)
        lodir_builder.add_builder(DeferredProvider(provide=Provide_Symbol(symbol='the_deferred_provided_symbol')))
        package.rootbuilder().add_builder(lodir_builder)

        hidir_builder = DirectoryBuilder(directory=hi)
        hidir_builder.add_require(Require_Symbol(symbol='the_deferred_provided_symbol',
                                                 found_in=[],
                                                 urgency=Require.URGENCY_ERROR))
        package.rootbuilder().add_builder(hidir_builder)

        package.boil(external_nodes=[])

        self.failUnless(lodir_builder in package.digraph().successors(hidir_builder))
        pass
示例#14
0
    def setUp(self):
        fs = FileSystem(path=[], rootdirectory=intra_package.make_source_tree())
        
        self.__package = LocalPackage(rootdirectory=fs.rootdirectory(),
                                      setups=[ExplicitDirectorySetup(), ExplicitCSetup(), CMakeSetup()])
        self.__package.boil(external_nodes=[])
        self.__package.output()

        self.__lo_output_builder = find_cmake_output_builder(self.__package.rootbuilder().find_entry_builder(['lo']))
        self.__hi_output_builder = find_cmake_output_builder(self.__package.rootbuilder().find_entry_builder(['hi']))
        self.__exe_output_builder = find_cmake_output_builder(self.__package.rootbuilder().find_entry_builder(['exe']))
        pass
示例#15
0
class CheckProgramBase(PersistentTestCase):
    def __init__(self, methodName):
        PersistentTestCase.__init__(self, methodName)
        self.fs_ = None
        pass

    def use_libtool(self):
        assert 0

    def setUp(self):
        PersistentTestCase.setUp(self)
        self.fs_ = FileSystem(path=self.rootpath())

        self.build_ = self.fs_.rootdirectory().add(name='build',
                                                   entry=Directory())

        self.source_ = self.fs_.rootdirectory().add(name='source',
                                                    entry=Directory())
        self.source_.add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("CheckProgramTest")', 'PACKAGE_VERSION("1.2.3")'
            ]))
        self.source_.add(name=const.CONFIX2_DIR,
                         entry=File(lines=[
                             "TESTS_ENVIRONMENT('name', 'value')",
                             "EXECUTABLE(center=C(filename='main.c'),",
                             "           exename='the-test-program',",
                             "           what=EXECUTABLE_CHECK)"
                         ]))
        self.source_.add(
            name='main.c',
            entry=File(lines=[
                '#include <sys/types.h>', '#include <sys/stat.h>',
                '#include <fcntl.h>', '#include <stdlib.h>',
                '#include <string.h>', 'int main(void) {',
                '    const char* name = getenv("name");', '    if (!name)',
                '        return 1;', '    if (strcmp(name, "value"))',
                '        return 1;', '    return open("' +
                os.sep.join(self.build_.abspath() + ['my-check-was-here']) +
                '",', '                O_CREAT|O_RDWR, 0644) >=0?0:1;', '}'
            ]))

        self.package_ = LocalPackage(
            rootdirectory=self.source_,
            setups=[ExplicitSetup(use_libtool=self.use_libtool())])
        self.package_.boil(external_nodes=[])
        self.package_.output()
        pass

    pass
示例#16
0
    def test__CMAKE_CMAKELISTS_ADD_FIND_CALL_propagate_and_local(self):
        fs = FileSystem(path=[''])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("test_CMAKE_CMAKELISTS_ADD_FIND_CALL_propagate_and_local")',
                'PACKAGE_VERSION("1.2.3")'
            ]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'CMAKE_CMAKELISTS_ADD_FIND_CALL("call", (CMAKE_BUILDINFO_PROPAGATE, CMAKE_BUILDINFO_LOCAL))'
            ]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ExplicitDirectorySetup(),
                                       CMakeSetup()])
        package.boil(external_nodes=[])
        package.output()

        self.failUnless('call' in find_cmake_output_builder(
            package.rootbuilder()).top_cmakelists().get_find_calls())

        for buildinfo in package.rootbuilder().iter_buildinfos():
            if isinstance(buildinfo, BuildInfo_Toplevel_CMakeLists_FindCall):
                break
            pass
        else:
            self.fail()
            pass
        pass
示例#17
0
    def test__library(self):
        rootdir = Directory()
        rootdir.add(
            name=const.CONFIX2_PKG,
            entry=File(lines=["PACKAGE_NAME('LibtoolInMemoryTest.testLibrary')",
                              "PACKAGE_VERSION('1.2.3')"]))
        rootdir.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=["LIBRARY(members=[C(filename='file.c')])"]))
        rootdir.add(
            name='file.c',
            entry=File())

        package = LocalPackage(rootdirectory=rootdir,
                               setups=[ExplicitSetup(use_libtool=True)])
        package.boil(external_nodes=[])
        package.output()

        library_builder = None
        for b in package.rootbuilder().iter_builders():
            if isinstance(b, LibraryBuilder):
                self.failUnless(library_builder is None)
                library_builder = b
                pass
            pass
        self.failIf(library_builder is None)

        automake_output_builder = find_automake_output_builder(package.rootbuilder())
        self.failUnless('lib'+library_builder.basename()+'.la' in automake_output_builder.makefile_am().ltlibraries())
        pass
示例#18
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=['PACKAGE_NAME("'+self.__class__.__name__+'")',
                              'PACKAGE_VERSION("1.2.3")']))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File())
        lo1 = fs.rootdirectory().add(
            name='lo1',
            entry=Directory())
        lo2 = fs.rootdirectory().add(
            name='lo2',
            entry=Directory())
        hi = fs.rootdirectory().add(
            name='hi',
            entry=Directory())
        package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[NullSetup()])

        lo1_builder = DirectoryBuilder(directory=lo1)
        lo1_builder.add_provide(Provide_Symbol(symbol='the_ambiguous_symbol'))
        package.rootbuilder().add_builder(lo1_builder)

        lo2_builder = DirectoryBuilder(directory=lo2)
        lo2_builder.add_provide(Provide_Symbol(symbol='the_ambiguous_symbol'))
        package.rootbuilder().add_builder(lo2_builder)

        hi_builder = DirectoryBuilder(directory=hi)
        hi_builder.add_require(Require_Symbol(symbol='the_ambiguous_symbol', found_in=[]))
        package.rootbuilder().add_builder(hi_builder)

        self.failUnlessRaises(Error, package.boil, external_nodes=[])
        pass
示例#19
0
 def testProvides(self):
     fs = FileSystem(path=[])
     fs.rootdirectory().add(
         name=const.CONFIX2_PKG,
         entry=File(['PACKAGE_NAME("argh")', 'PACKAGE_VERSION("1.2.3")']))
     fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File())
     file = fs.rootdirectory().add(
         name='file',
         entry=File(lines=[
             'from libconfix.core.machinery.provide import Provide_Symbol',
             "PROVIDE_SYMBOL(symbol='sym1')",
             "PROVIDE_SYMBOL(symbol='sym2', match=EXACT_MATCH)",
             "PROVIDE_SYMBOL(symbol='sym4', match=GLOB_MATCH)",
             "PROVIDE(Provide_Symbol(symbol='sym5'))"
         ]))
     package = LocalPackage(rootdirectory=fs.rootdirectory(),
                            setups=[NullSetup()])
     builder = FileInterfaceTestBuilder(file=file)
     package.rootbuilder().add_builder(builder)
     self.assertEqual(len(builder.dependency_info().provides()), 4)
     sym1 = None
     sym2 = None
     sym3 = None
     sym4 = None
     sym5 = None
     for p in builder.dependency_info().provides():
         self.assert_(isinstance(p, Provide_Symbol))
         if p.symbol() == 'sym1':
             sym1 = p
             continue
         if p.symbol() == 'sym2':
             sym2 = p
             continue
         if p.symbol() == 'sym4':
             sym4 = p
             continue
         if p.symbol() == 'sym5':
             sym5 = p
             continue
         pass
     self.assertNotEqual(sym1, None)
     self.assertNotEqual(sym2, None)
     self.assertNotEqual(sym4, None)
     self.assertNotEqual(sym5, None)
     self.assertEqual(sym1.match(), Provide.EXACT_MATCH)
     self.assertEqual(sym2.match(), Provide.EXACT_MATCH)
     self.assertEqual(sym4.match(), Provide.GLOB_MATCH)
     self.assertEqual(sym5.match(), Provide.EXACT_MATCH)
     pass
示例#20
0
    def test__relocated_header_requires_relocated_header(self):
        fs = FileSystem(path=['dont\'t', 'care'])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('" + self.__class__.__name__ +
                                   "')", "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File())

        include = fs.rootdirectory().add(name='include', entry=Directory())
        include.add(name=const.CONFIX2_DIR,
                    entry=File(lines=[
                        "RELOCATE_HEADER(filename='a.h',",
                        "                directory=['src'])",
                        "RELOCATE_HEADER(filename='b.h',",
                        "                directory=['src'])"
                    ]))
        include.add(name='a.h',
                    entry=File(lines=[
                        '#ifndef A_H', '#define A_H',
                        '// CONFIX:REQUIRE_H("b.h", REQUIRED)',
                        '#include "b.h"', 'void a(void);'
                        '#endif'
                    ]))
        include.add(
            name='b.h',
            entry=File(
                lines=['#ifndef B_H', '#define B_H', 'void b(void);'
                       '#endif']))

        src = fs.rootdirectory().add(name='src', entry=Directory())
        src.add(name=const.CONFIX2_DIR, entry=File())
        src.add(name='a.c',
                entry=File(lines=[
                    '#include <a.h>', '// CONFIX:REQUIRE_H("a.h", REQUIRED)',
                    'void a(void) {}'
                ]))
        src.add(name='b.c',
                entry=File(lines=[
                    '#include <b.h>', '// CONFIX:REQUIRE_H("b.h", REQUIRED)',
                    'void b(void) {}'
                ]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])

        package.boil(external_nodes=[])

        pass
示例#21
0
class IntraPackageBuildBase(PersistentTestCase):
    def __init__(self, methodName):
        PersistentTestCase.__init__(self, methodName)
        pass

    def use_libtool(self): assert 0

    def setUp(self):
        PersistentTestCase.setUp(self)
        
        self.sourcerootpath_ = self.rootpath() + ['source']
        self.buildrootpath_ = self.rootpath() + ['build']

        self.fs_ = FileSystem(path=self.sourcerootpath_,
                              rootdirectory=packages.lo_hi1_hi2_highest_exe(name='intrapackagebuildtest',
                                                                            version='1.2.3'))
        
        self.package_ = LocalPackage(rootdirectory=self.fs_.rootdirectory(),
                                     setups=[ConfixSetup(use_libtool=self.use_libtool())])
        self.package_.boil(external_nodes=[])
        self.package_.output()
        self.fs_.sync()
        pass

    def test(self):
        try:
            bootstrap.bootstrap(
                packageroot=self.sourcerootpath_,
                path=None,
                use_kde_hack=False,
                argv0=sys.argv[0])
            os.makedirs(os.sep.join(self.buildrootpath_))
            configure.configure(
                packageroot=self.sourcerootpath_,
                builddir=self.buildrootpath_,
                prefix='/dev/null'.split(os.sep),
                readonly_prefixes=[])
            make.make(builddir=self.buildrootpath_, args=[])
        except Error, e:
            sys.stderr.write(`e`+'\n')
            raise
        
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['lo', 'lo.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['hi1', 'hi1.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['hi2', 'hi2.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['highest', 'highest.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['exe', 'main.o'])))
        self.failUnless(os.path.isfile(os.sep.join(self.buildrootpath_+['exe', 'intrapackagebuildtest_exe_main'])))
        pass
示例#22
0
 def test(self):
     fs = FileSystem(path=['don\'t', 'care'])
     fs.rootdirectory().add(name=const.CONFIX2_PKG,
                            entry=File(lines=[
                                "PACKAGE_NAME('ProvideStringUpdateTest')",
                                "PACKAGE_VERSION('1.2.3')"
                            ]))
     fs.rootdirectory().add(
         name=const.CONFIX2_DIR,
         entry=File(
             lines=["PROVIDE_SYMBOL('aaa')", "PROVIDE_SYMBOL('aaa')"]))
     package = LocalPackage(rootdirectory=fs.rootdirectory(),
                            setups=[NullSetup()])
     package.boil(external_nodes=[])
     pass
示例#23
0
    def setUp(self):
        PersistentTestCase.setUp(self)
        
        self.sourcerootpath_ = self.rootpath() + ['source']
        self.buildrootpath_ = self.rootpath() + ['build']

        self.fs_ = FileSystem(path=self.sourcerootpath_,
                              rootdirectory=packages.lo_hi1_hi2_highest_exe(name='intrapackagebuildtest',
                                                                            version='1.2.3'))
        
        self.package_ = LocalPackage(rootdirectory=self.fs_.rootdirectory(),
                                     setups=[ConfixSetup(use_libtool=self.use_libtool())])
        self.package_.boil(external_nodes=[])
        self.package_.output()
        self.fs_.sync()
        pass
示例#24
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('" + self.__class__.__name__ +
                                   ".once')", "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[NullSetup()])
        package.rootbuilder().add_builder(EnlargeForceDummy())
        self.failUnlessRaises(LocalPackage.InfiniteLoopError,
                              package.boil,
                              external_nodes=[])
        pass
示例#25
0
def PACKAGE():
    global DONE_PACKAGE
    global package
    global filesystem

    if DONE_PACKAGE: return 0

    SETTINGS()

    debug.message("scanning package in %s ..." % CONFIG.packageroot())
    before = time.time()

    filesystem = scan_filesystem(path=CONFIG.packageroot().split(os.sep))

    if CONFIG.overlayroot() is not None:
        overlayed_filesystem = scan_filesystem(
            path=CONFIG.overlayroot().split(os.sep))
        filesystem = OverlayFileSystem(original=filesystem,
                                       overlay=overlayed_filesystem)
        pass

    package = LocalPackage(rootdirectory=filesystem.rootdirectory(),
                           setups=None)
    DONE_PACKAGE = 1

    debug.message('done scanning (' + str(time.time() - before) + ' seconds)')

    return 0
示例#26
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=["PACKAGE_NAME('"+self.__class__.__name__+"')",
                              "PACKAGE_VERSION('1.2.3')"]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=["DIRECTORY(['lo'])",
                              "DIRECTORY(['hi'])",
                              ]))

        lo = fs.rootdirectory().add(
            name='lo',
            entry=Directory())
        lo.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=["from libconfix.core.hierarchy.tests.common_iface_suite import BUILDINFORMATION_propagates_Test",
                              "BUILDINFORMATION(BUILDINFORMATION_propagates_Test.TestBuildInformation())",
                              "PROVIDE_SYMBOL('test')"]))

        hi = fs.rootdirectory().add(
            name='hi',
            entry=Directory())
        hi.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=["from libconfix.core.hierarchy.tests.common_iface_suite import BUILDINFORMATION_propagates_Test",
                              "REQUIRE_SYMBOL('test', URGENCY_ERROR)",
                              "ADD_BUILDER(BUILDINFORMATION_propagates_Test.TestBuildInformationReceiver())"
                              ]))

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[Boilerplate(), C()])
        package.boil(external_nodes=[])

        for receiver in package.rootbuilder().find_entry_builder(['hi']).iter_builders():
            try:
                getattr(receiver, 'seen_buildinfo')
                break
            except: pass
            pass
        else:
            self.fail()
            pass

        self.failUnless(receiver.seen_buildinfo)
        pass
示例#27
0
 def test(self):
     fs = dirhier.packageroot()
     file = fs.rootdirectory().add(name='x.iface',
                                   entry=File(lines=['REQUIRE_SYMBOL(symbol="unknown_symbol", urgency=URGENCY_ERROR)']))
     package = LocalPackage(rootdirectory=fs.rootdirectory(),
                            setups=[FileInterfaceTestSetup()])
     self.failUnlessRaises(NotResolved, package.boil, external_nodes=[])
     pass
示例#28
0
    def test(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(name=const.CONFIX2_PKG,
                               entry=File(lines=[
                                   "PACKAGE_NAME('NoInternalRequiresTest')",
                                   "PACKAGE_VERSION('1.2.3')"
                               ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR, entry=File())
        fs.rootdirectory().add(name='file1.h',
                               entry=File(lines=["#include <file2.h>"]))
        fs.rootdirectory().add(name='file2.h', entry=File())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])
        package.boil(external_nodes=[])
        self.failIf(len(package.rootbuilder().requires()) != 0)
        pass
示例#29
0
    def test__basic(self):
        fs = FileSystem(path=[])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                'PACKAGE_NAME("HierarchyInMemoryTest.basic")',
                'PACKAGE_VERSION("1.2.3")'
            ]))
        fs.rootdirectory().add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'DIRECTORY(["directory0"])', 'DIRECTORY(["directory1"])'
            ]))
        fs.rootdirectory().add(name='directory0', entry=Directory())
        fs.rootdirectory().add(name='directory1', entry=Directory())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ExplicitDirectorySetup(),
                                       CMakeSetup()])
        package.boil(external_nodes=[])
        package.output()

        cmake_output_builder = find_cmake_output_builder(package.rootbuilder())

        self.failUnlessEqual(
            len(cmake_output_builder.local_cmakelists().get_subdirectories()),
            2
            # plus the admin stuff, confix-admin/cmake/Modules
            + 4)
        self.failUnless('directory0' in cmake_output_builder.local_cmakelists(
        ).get_subdirectories())
        self.failUnless('directory1' in cmake_output_builder.local_cmakelists(
        ).get_subdirectories())

        pass
示例#30
0
    def test__creator(self):
        fs = FileSystem(path=['a'])
        fs.rootdirectory().add(
            name=const.CONFIX2_PKG,
            entry=File(lines=[
                "PACKAGE_NAME('ignore-entries-c')", "PACKAGE_VERSION('6.6.6')"
            ]))
        fs.rootdirectory().add(name=const.CONFIX2_DIR,
                               entry=File(lines=[
                                   'IGNORE_ENTRIES(["ignored1.idl"])',
                                   'IGNORE_FILE("ignored2.idl")'
                               ]))
        fs.rootdirectory().add(name='ignored1.idl', entry=File())
        fs.rootdirectory().add(name='ignored2.idl', entry=File())
        fs.rootdirectory().add(name='not-ignored.idl', entry=File())

        package = LocalPackage(rootdirectory=fs.rootdirectory(),
                               setups=[ConfixSetup(use_libtool=False)])
        package.boil(external_nodes=[])

        self.failIf(
            package.rootbuilder().find_entry_builder(path=['ignored1.idl']))
        self.failIf(
            package.rootbuilder().find_entry_builder(path=['ignored2.idl']))
        self.failUnless(
            package.rootbuilder().find_entry_builder(path=['not-ignored.idl']))
        pass