Beispiel #1
0
    def testLongName(self):

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

        dir3lib_builder = None
        for b in package.rootbuilder().find_entry_builder(
            ['dir1', 'dir2', 'dir3']).iter_builders():
            if isinstance(b, LibraryBuilder):
                self.failIf(dir3lib_builder is not None)
                dir3lib_builder = b
                pass
            pass

        self.failUnlessEqual(
            dir3lib_builder.basename(),
            '_'.join([package.name()] +
                     self.dir3_.relpath(self.fs_.rootdirectory())))
        pass
Beispiel #2
0
class AutomakeOutputTest(unittest.TestCase):
    def setUp(self):
        self.__fs = dirhier.packageroot()
        subdir1 = self.__fs.rootdirectory().add(name='subdir1',
                                                entry=Directory())
        subdir1.add(name=const.CONFIX2_DIR,
                    entry=File(lines=['PROVIDE_SYMBOL("subdir1")']))

        subdir2 = self.__fs.rootdirectory().add(name='subdir2',
                                                entry=Directory())
        subdir2.add(
            name=const.CONFIX2_DIR,
            entry=File(lines=[
                'PROVIDE_SYMBOL("subdir2")', 'REQUIRE_SYMBOL("subdir1")'
            ]))
        subdir3 = self.__fs.rootdirectory().add(name='subdir3',
                                                entry=Directory())
        subdir3.add(name=const.CONFIX2_DIR,
                    entry=File(lines=['REQUIRE_SYMBOL("subdir2")']))

        self.__package = LocalPackage(rootdirectory=self.__fs.rootdirectory(),
                                      setups=[
                                          ImplicitDirectorySetup(),
                                          AutomakeSetup(use_libtool=False)
                                      ])
        self.__package.boil(external_nodes=[])
        self.__package.output()

        self.__subdir1_builder = self.__package.rootbuilder(
        ).find_entry_builder(['subdir1'])
        self.__subdir2_builder = self.__package.rootbuilder(
        ).find_entry_builder(['subdir2'])
        self.__subdir3_builder = self.__package.rootbuilder(
        ).find_entry_builder(['subdir3'])
        assert self.__subdir1_builder
        assert self.__subdir2_builder
        assert self.__subdir3_builder

        pass

    def tearDown(self):
        self.__fs = None
        self.__package = None
        pass

    def test__subdirs(self):
        rootdir_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder())

        self.failIfEqual(self.__fs.rootdirectory().find(['Makefile.am']), None)
        self.failUnless(const.CONFIX2_DIR in
                        rootdir_automake_builder.makefile_am().extra_dist())
        self.failUnless(const.CONFIX2_PKG in
                        rootdir_automake_builder.makefile_am().extra_dist())

        # relative positions of subdir1, subdir2, subdir3 in toplevel
        # Makefile.am's SUBDIRS must be subdir1 < subdir2 <
        # subdir3. (we cannot count on absolute positions because the
        # topological range of '.' is random - '.' has no
        # dependencies. (same hold for aux.))

        aux = dot = subdir1 = subdir2 = subdir3 = None

        for i in xrange(len(rootdir_automake_builder.makefile_am().subdirs())):
            if rootdir_automake_builder.makefile_am().subdirs(
            )[i] == 'confix-admin/automake':
                self.failUnless(aux is None)
                aux = i
            elif rootdir_automake_builder.makefile_am().subdirs(
            )[i] == 'subdir1':
                self.failUnless(subdir1 is None)
                subdir1 = i
            elif rootdir_automake_builder.makefile_am().subdirs(
            )[i] == 'subdir2':
                self.failUnless(subdir2 is None)
                subdir2 = i
            elif rootdir_automake_builder.makefile_am().subdirs(
            )[i] == 'subdir3':
                self.failUnless(subdir3 is None)
                subdir3 = i
                pass
            elif rootdir_automake_builder.makefile_am().subdirs()[i] == '.':
                self.failUnless(dot is None)
                dot = i
                pass
            pass

        # see if there is anything in there at all
        self.failIfEqual(
            len(self.__fs.rootdirectory().find(['Makefile.am']).lines()), 0)

        self.failIf(aux is None)
        self.failIf(dot is None)
        self.failIf(subdir1 is None)
        self.failIf(subdir2 is None)
        self.failIf(subdir3 is None)

        self.failUnless(subdir1 < subdir2 < subdir3)

        # see if we have our subdir's Makefiles registered for output
        self.failUnless('Makefile' in rootdir_automake_builder.configure_ac().ac_config_files() or \
                        './Makefile' in rootdir_automake_builder.configure_ac().ac_config_files())
        self.failUnless('subdir1/Makefile' in rootdir_automake_builder.
                        configure_ac().ac_config_files())
        self.failUnless('subdir2/Makefile' in rootdir_automake_builder.
                        configure_ac().ac_config_files())
        self.failUnless('subdir3/Makefile' in rootdir_automake_builder.
                        configure_ac().ac_config_files())

        pass

    def test__configure_ac(self):
        rootdir_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder())

        self.failIfEqual(self.__fs.rootdirectory().find(['configure.ac']),
                         None)
        self.failUnless('config.h' in rootdir_automake_builder.configure_ac().
                        ac_config_headers())
        self.failIf(
            rootdir_automake_builder.configure_ac().packagename() is None)
        self.failIf(
            rootdir_automake_builder.configure_ac().packageversion() is None)
        pass

    def test__auxdir(self):
        rootdir_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder())

        auxdir = self.__package.rootbuilder().directory().find(
            ['confix-admin', 'automake'])
        self.failIf(auxdir is None)
        mf_am = auxdir.find(['Makefile.am'])
        self.failIf(mf_am is None)
        self.failUnlessEqual(
            rootdir_automake_builder.configure_ac().ac_config_aux_dir(),
            'confix-admin/automake')
        self.failUnless(
            'confix-admin/automake/Makefile' in
            rootdir_automake_builder.configure_ac().ac_config_files())
        pass

    def test__toplevel_makefile_am(self):
        rootdir_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder())

        self.failUnless(
            '1.9' in rootdir_automake_builder.makefile_am().automake_options())
        self.failUnless('dist-bzip2' in rootdir_automake_builder.makefile_am().
                        automake_options())
        self.failUnless('dist-shar' not in rootdir_automake_builder.
                        makefile_am().automake_options())
        self.failUnless('dist-zip' in rootdir_automake_builder.makefile_am().
                        automake_options())
        self.failUnless(const.CONFIX2_DIR in
                        rootdir_automake_builder.makefile_am().extra_dist())
        self.failUnless(const.CONFIX2_PKG in
                        rootdir_automake_builder.makefile_am().extra_dist())
        self.failUnless(
            self.__package.name() +
            '.repo' in rootdir_automake_builder.makefile_am().extra_dist())
        self.failUnless('Makefile.in' in rootdir_automake_builder.makefile_am(
        ).maintainercleanfiles())
        self.failUnless('Makefile.am' in rootdir_automake_builder.makefile_am(
        ).maintainercleanfiles())
        pass

    def test__subdir1_makefile_am(self):
        subdir1_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder().find_entry_builder(['subdir1']))

        self.failIfEqual(
            self.__fs.rootdirectory().find(['subdir1', 'Makefile.am']), None)
        self.failUnless(const.CONFIX2_DIR in
                        subdir1_automake_builder.makefile_am().extra_dist())
        self.failUnless('Makefile.in' in subdir1_automake_builder.makefile_am(
        ).maintainercleanfiles())
        self.failUnless('Makefile.am' in subdir1_automake_builder.makefile_am(
        ).maintainercleanfiles())
        pass

    def test__subdir2_makefile_am(self):
        subdir2_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder().find_entry_builder(['subdir2']))

        self.failIfEqual(
            self.__fs.rootdirectory().find(['subdir2', 'Makefile.am']), None)
        self.failUnless(const.CONFIX2_DIR in
                        subdir2_automake_builder.makefile_am().extra_dist())
        self.failUnless('Makefile.in' in subdir2_automake_builder.makefile_am(
        ).maintainercleanfiles())
        self.failUnless('Makefile.am' in subdir2_automake_builder.makefile_am(
        ).maintainercleanfiles())
        pass

    def test__subdir3_makefile_am(self):
        subdir3_automake_builder = find_automake_output_builder(
            self.__package.rootbuilder().find_entry_builder(['subdir3']))

        self.failIfEqual(
            self.__fs.rootdirectory().find(['subdir3', 'Makefile.am']), None)
        self.failUnless(const.CONFIX2_DIR in
                        subdir3_automake_builder.makefile_am().extra_dist())
        self.failUnless('Makefile.in' in subdir3_automake_builder.makefile_am(
        ).maintainercleanfiles())
        self.failUnless('Makefile.am' in subdir3_automake_builder.makefile_am(
        ).maintainercleanfiles())
        pass

    pass
Beispiel #3
0
parser = optparse.OptionParser(version='%prog ' + const.CONFIX_VERSION,
                               description='%prog [options] packages')

parser.add_option('--packagename',
                  action="store_true",
                  dest='packagename',
                  help='print the package name')
parser.add_option('--packageversion',
                  action="store_true",
                  help='print the package version')

options, rest = parser.parse_args(sys.argv[1:])

if len(rest) > 1:
    raise Error('Only one package at a time can be massaged')
if len(rest) == 1:
    os.chdir(rest[0])
    pass

packageroot = os.getcwd().split(os.sep)

fs = scan.scan_filesystem(packageroot)
package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[])

if options.packagename:
    print package.name()
    pass
if options.packageversion:
    print package.version()
    pass
Beispiel #4
0
if len(rest) == 1:
    os.chdir(rest[0])
    pass

packageroot = os.getcwd().split(os.sep)

fs = scan.scan_filesystem(packageroot)
package = LocalPackage(rootdirectory=fs.rootdirectory(), setups=[])

prefix = options.prefix

readonly_prefixes = []
if options.readonly_prefixes is not None:
    for p in options.readonly_prefixes.split(','):
        readonly_prefixes.append(p.split(os.sep))
        pass
    pass

external_nodes = []
for p in AutomakeCascadedPackageRepository(
        prefix=prefix.split(os.sep),
        readonly_prefixes=readonly_prefixes).iter_packages():
    if p.name() != package.name():
        external_nodes.extend(p.nodes())
        pass
    pass

package.boil(external_nodes=external_nodes)
package.output()
fs.sync()
class IntraPackageTest(unittest.TestCase):
    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

    def test__output(self):
        # library 'lo'
        self.failUnlessEqual(len(self.__lo_output_builder.local_cmakelists().get_library('lo')), 4)
        self.failUnless('lo1.h' in self.__lo_output_builder.local_cmakelists().get_library('lo'))
        self.failUnless('lo1.c' in self.__lo_output_builder.local_cmakelists().get_library('lo'))
        self.failUnless('lo2.h' in self.__lo_output_builder.local_cmakelists().get_library('lo'))
        self.failUnless('lo2.c' in self.__lo_output_builder.local_cmakelists().get_library('lo'))

        # library 'hi'
        self.failUnlessEqual(len(self.__hi_output_builder.local_cmakelists().get_library('hi')), 4)
        self.failUnless('hi1.h' in self.__hi_output_builder.local_cmakelists().get_library('hi'))
        self.failUnless('hi1.c' in self.__hi_output_builder.local_cmakelists().get_library('hi'))
        self.failUnless('hi2.h' in self.__hi_output_builder.local_cmakelists().get_library('hi'))
        self.failUnless('hi2.c' in self.__hi_output_builder.local_cmakelists().get_library('hi'))

        # executable 'exe'
        self.failUnlessEqual(len(self.__exe_output_builder.local_cmakelists().get_executable('exe')), 5)
        self.failUnless('main.c' in self.__exe_output_builder.local_cmakelists().get_executable('exe'))
        self.failUnless('require_lo.h' in self.__exe_output_builder.local_cmakelists().get_executable('exe'))
        self.failUnless('require_lo.c' in self.__exe_output_builder.local_cmakelists().get_executable('exe'))
        self.failUnless('require_hi.h' in self.__exe_output_builder.local_cmakelists().get_executable('exe'))
        self.failUnless('require_hi.c' in self.__exe_output_builder.local_cmakelists().get_executable('exe'))

        pass

    def test__linklines(self):
        # lo needs nothing.
        self.failUnless(self.__lo_output_builder.local_cmakelists().get_target_link_libraries('lo') is None)

        # hi needs lo.
        hi_link_libraries = self.__hi_output_builder.local_cmakelists().get_target_link_libraries('hi')
        self.failUnlessEqual(len(hi_link_libraries), 1)
        self.failUnlessEqual(hi_link_libraries[0], 'lo')

        # exe need hi and lo, in that particular order.
        exe_link_libraries = self.__exe_output_builder.local_cmakelists().get_target_link_libraries('exe')
        self.failUnlessEqual(len(exe_link_libraries), 2)
        self.failUnlessEqual(exe_link_libraries[0], 'hi')
        self.failUnlessEqual(exe_link_libraries[1], 'lo')

        pass

    def test__include_paths(self):
        self.failUnlessEqual(len(self.__lo_output_builder.local_cmakelists().get_include_directories()),
                             # the binary directory that is associated with 'lo'
                             1
                             )

        hi_include_directories = self.__hi_output_builder.local_cmakelists().get_include_directories()
        self.failUnlessEqual(len(hi_include_directories),
                             # the binary directory that is associated
                             # with 'hi', plus twice 'lo' (binary and
                             # source)
                             1 + 1*2)
        self.failUnless(hi_include_directories[0] == '${CMAKE_CURRENT_BINARY_DIR}' and 
                        hi_include_directories[1] == '${'+self.__package.name()+'_SOURCE_DIR}/lo' and
                        hi_include_directories[2] == '${'+self.__package.name()+'_BINARY_DIR}/lo' or
                        hi_include_directories[1] == '${'+self.__package.name()+'_BINARY_DIR}/lo' and
                        hi_include_directories[2] == '${'+self.__package.name()+'_SOURCE_DIR}/lo')
        
        exe_include_directories = self.__exe_output_builder.local_cmakelists().get_include_directories()
        self.failUnlessEqual(len(exe_include_directories),
                             # the binary directory that is
                             # associaated with 'exe', plus two each
                             # for 'hi' and 'lo'.
                             1 + 2*2)
        self.failUnless(exe_include_directories[0] == '${CMAKE_CURRENT_BINARY_DIR}')
        self.failUnless(exe_include_directories[1] == '${'+self.__package.name()+'_SOURCE_DIR}/hi' and
                        exe_include_directories[2] == '${'+self.__package.name()+'_BINARY_DIR}/hi' or
                        exe_include_directories[1] == '${'+self.__package.name()+'_BINARY_DIR}/hi' and
                        exe_include_directories[2] == '${'+self.__package.name()+'_SOURCE_DIR}/hi')
        self.failUnless(exe_include_directories[3] == '${'+self.__package.name()+'_SOURCE_DIR}/lo' and
                        exe_include_directories[4] == '${'+self.__package.name()+'_BINARY_DIR}/lo' or
                        exe_include_directories[3] == '${'+self.__package.name()+'_BINARY_DIR}/lo' and
                        exe_include_directories[4] == '${'+self.__package.name()+'_SOURCE_DIR}/lo')

        pass

    pass