Exemple #1
0
    def create_merge_module(self, output_dir, package_type, force, version,
                            keep_temp):
        self.package.set_mode(package_type)
        files_list = self.files_list(package_type, force)
        mergemodule = MergeModule(self.config, files_list, self.package)
        package_name = self._package_name(version)
        sources = os.path.join(output_dir, "%s.wsx" % package_name)
        mergemodule.write(sources)

        wixobj = os.path.join(output_dir, "%s.wixobj" % package_name)

        if self._with_wine:
            wixobj = to_winepath(wixobj)
            sources = to_winepath(sources)

        candle = Candle(self.wix_prefix, self._with_wine)
        candle.compile(sources, output_dir)
        light = Light(self.wix_prefix, self._with_wine)
        path = light.compile([wixobj], package_name, output_dir, True)

        # Clean up
        if not keep_temp:
            os.remove(sources)
            os.remove(wixobj)
            os.remove(wixobj.replace('.wixobj', '.wixpdb'))

        return path
Exemple #2
0
    def create_merge_module(self, output_dir, package_type, force, version,
                            keep_temp):
        self.package.set_mode(package_type)
        files_list = self.files_list(package_type, force)
        if isinstance(self.package, VSTemplatePackage):
            mergemodule = VSMergeModule(self.config, files_list, self.package)
        else:
            mergemodule = MergeModule(self.config, files_list, self.package)
        tmpdir = None
        # For application packages that requires stripping object files, we need
        # to copy all the files to a new tree and strip them there:
        if isinstance(self.package, App) and self.package.strip:
            tmpdir = tempfile.mkdtemp()
            for f in files_list:
                src = os.path.join(self.config.prefix, f)
                dst = os.path.join(tmpdir, f)
                if not os.path.exists(os.path.dirname(dst)):
                    os.makedirs(os.path.dirname(dst))
                shutil.copy(src, dst)
            s = strip.Strip(self.config, self.package.strip_excludes)
            for p in self.package.strip_dirs:
                s.strip_dir(os.path.join(tmpdir, p))

        mergemodule = MergeModule(self.config, files_list, self.package)
        if tmpdir:
            mergemodule.prefix = tmpdir
        package_name = self._package_name(version)
        sources = [os.path.join(output_dir, "%s.wxs" % package_name)]
        mergemodule.write(sources[0])
        wixobjs = [os.path.join(output_dir, "%s.wixobj" % package_name)]

        for x in ['utils']:
            wixobjs.append(os.path.join(output_dir, "%s.wixobj" % x))
            sources.append(
                os.path.join(os.path.abspath(self.config.data_dir),
                             'wix/%s.wxs' % x))

        if self._with_wine:
            wixobjs = [to_winepath(x) for x in wixobjs]
            sources = [to_winepath(x) for x in sources]

        candle = Candle(self.wix_prefix, self._with_wine)
        candle.compile(' '.join(sources), output_dir)
        light = Light(self.wix_prefix, self._with_wine)
        path = light.compile(wixobjs, package_name, output_dir, True)

        # Clean up
        if not keep_temp:
            os.remove(sources[0])
            for f in wixobjs:
                os.remove(f)
                try:
                    os.remove(f.replace('.wixobj', '.wixpdb'))
                except:
                    pass
        if tmpdir:
            shutil.rmtree(tmpdir)

        return path
Exemple #3
0
 def setUp(self):
     self.config = DummyConfig()
     cb = create_cookbook(self.config)
     store = create_store(self.config)
     cb.add_recipe(Recipe1(self.config))
     self.package = Package(self.config, store, cb)
     self.mergemodule = MergeModule(self.config, self.package.files_list(),
                                    self.package)
 def setUp(self):
     self.config = DummyConfig()
     cb =  create_cookbook(self.config)
     store =  create_store(self.config)
     cb.add_recipe(Recipe1(self.config))
     self.package = Package(self.config, store, cb)
     self.mergemodule = MergeModule(self.config,
             self.package.files_list(), self.package)
Exemple #5
0
class MergeModuleTest(unittest.TestCase):
    def setUp(self):
        self.config = DummyConfig()
        cb = create_cookbook(self.config)
        store = create_store(self.config)
        cb.add_recipe(Recipe1(self.config))
        self.package = Package(self.config, store, cb)
        self.mergemodule = MergeModule(self.config, self.package.files_list(),
                                       self.package)

    def test_add_root(self):
        self.mergemodule._add_root()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" />',
            etree.tostring(self.mergemodule.root))

    def test_add_module(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">'
            '<Module Id="_gstreamer_test" Language="1033" Version="1.0" />'
            '</Wix>', etree.tostring(self.mergemodule.root))

    def test_add_package(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">'
            '<Module Id="_gstreamer_test" Language="1033" Version="1.0">'
            '<Package Comments="test" Description="GStreamer Test" Id="1" '
            'Manufacturer="GStreamer Project" />'
            '</Module>'
            '</Wix>', etree.tostring(self.mergemodule.root))

    def test_add_root_dir(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.mergemodule._add_root_dir()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">'
            '<Module Id="_gstreamer_test" Language="1033" Version="1.0">'
            '<Package Comments="test" Description="GStreamer Test" Id="1" '
            'Manufacturer="GStreamer Project" />'
            '<Directory Id="TARGETDIR" Name="SourceDir" />'
            '</Module>'
            '</Wix>', etree.tostring(self.mergemodule.root))

    def test_add_directory(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.mergemodule._add_root_dir()
        self.assertEqual(len(self.mergemodule._dirnodes), 1)
        self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir)
        self.mergemodule._add_directory('lib/gstreamer-0.10')
        self.assertEqual(len(self.mergemodule._dirnodes), 3)
        self.assertTrue('lib' in self.mergemodule._dirnodes)
        self.assertTrue('lib/gstreamer-0.10' in self.mergemodule._dirnodes)
        self.mergemodule._add_directory('bin')
        self.assertEqual(len(self.mergemodule._dirnodes), 4)
        self.assertTrue('bin' in self.mergemodule._dirnodes)

    def test_add_file(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.mergemodule._add_root_dir()
        self.assertEqual(len(self.mergemodule._dirnodes), 1)
        self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir)
        self.mergemodule._add_file('bin/gst-inspect-0.10.exe')
        self.assertEqual(len(self.mergemodule._dirnodes), 2)
        self.assertTrue('bin' in self.mergemodule._dirnodes)
        self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes)
        self.mergemodule._add_file('bin/gst-launch-0.10.exe')
        self.assertEqual(len(self.mergemodule._dirnodes), 2)
        self.assertTrue('bin' in self.mergemodule._dirnodes)
        self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes)

    def test_render_xml(self):
        self.config.platform = Platform.WINDOWS
        self.mergemodule._get_uuid = lambda: '1'
        self.mergemodule.fill()
        tmp = io.StringIO()
        self.mergemodule.write(tmp)
        #self._compstr(tmp.getvalue(), MERGE_MODULE)
        self.assertEqual(MERGE_MODULE, tmp.getvalue())

    def _compstr(self, str1, str2):
        str1 = str1.split('\n')
        str2 = str2.split('\n')
        for i in range(len(str1)):
            if str1[i] != str2[i]:
                print(str1[i])
                print(str2[i])
                print("")
class MergeModuleTest(unittest.TestCase):

    def setUp(self):
        self.config = DummyConfig()
        cb =  create_cookbook(self.config)
        store =  create_store(self.config)
        cb.add_recipe(Recipe1(self.config))
        self.package = Package(self.config, store, cb)
        self.mergemodule = MergeModule(self.config,
                self.package.files_list(), self.package)

    def test_add_root(self):
        self.mergemodule._add_root()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" />',
                          etree.tostring(self.mergemodule.root))

    def test_add_module(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">'
                '<Module Id="_gstreamer_test" Language="1033" Version="1.0" />'
            '</Wix>', etree.tostring(self.mergemodule.root))

    def test_add_package(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">'
                '<Module Id="_gstreamer_test" Language="1033" Version="1.0">'
                    '<Package Comments="test" Description="GStreamer Test" Id="1" '
                    'Manufacturer="GStreamer Project" />'
                '</Module>'
            '</Wix>', etree.tostring(self.mergemodule.root))

    def test_add_root_dir(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.mergemodule._add_root_dir()
        self.assertEqual(
            '<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">'
                '<Module Id="_gstreamer_test" Language="1033" Version="1.0">'
                    '<Package Comments="test" Description="GStreamer Test" Id="1" '
                    'Manufacturer="GStreamer Project" />'
                    '<Directory Id="TARGETDIR" Name="SourceDir" />'
                '</Module>'
            '</Wix>', etree.tostring(self.mergemodule.root))

    def test_add_directory(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.mergemodule._add_root_dir()
        self.assertEqual(len(self.mergemodule._dirnodes), 1)
        self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir)
        self.mergemodule._add_directory('lib/gstreamer-0.10')
        self.assertEqual(len(self.mergemodule._dirnodes), 3)
        self.assertTrue('lib' in self.mergemodule._dirnodes)
        self.assertTrue('lib/gstreamer-0.10' in self.mergemodule._dirnodes)
        self.mergemodule._add_directory('bin')
        self.assertEqual(len(self.mergemodule._dirnodes), 4)
        self.assertTrue('bin' in self.mergemodule._dirnodes)

    def test_add_file(self):
        self.mergemodule._add_root()
        self.mergemodule._add_module()
        self.mergemodule._add_package()
        self.mergemodule._add_root_dir()
        self.assertEqual(len(self.mergemodule._dirnodes), 1)
        self.assertEqual(self.mergemodule._dirnodes[''], self.mergemodule.rdir)
        self.mergemodule._add_file('bin/gst-inspect-0.10.exe')
        self.assertEqual(len(self.mergemodule._dirnodes), 2)
        self.assertTrue('bin' in self.mergemodule._dirnodes)
        self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes)
        self.mergemodule._add_file('bin/gst-launch-0.10.exe')
        self.assertEqual(len(self.mergemodule._dirnodes), 2)
        self.assertTrue('bin' in self.mergemodule._dirnodes)
        self.assertTrue('gstreamer-0.10.exe' not in self.mergemodule._dirnodes)

    def test_render_xml(self):
        self.config.platform = Platform.WINDOWS
        self.mergemodule._get_uuid = lambda : '1'
        self.mergemodule.fill()
        tmp = io.StringIO()
        self.mergemodule.write(tmp)
        #self._compstr(tmp.getvalue(), MERGE_MODULE)
        self.assertEqual(MERGE_MODULE, tmp.getvalue())

    def _compstr(self, str1, str2):
        str1 = str1.split('\n')
        str2 = str2.split('\n')
        for i in range(len(str1)):
            if str1[i] != str2[i]:
                print(str1[i])
                print(str2[i])
                print("")