[MERGE] Support for tbzr c++ implemented shell extension

John Arbash Meinel john at arbash-meinel.com
Mon Dec 15 14:21:12 GMT 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mark Hammond wrote:
> Tortoise has recently pushed a C++ implementation of the Shell Extension
> which is able to fully replace the current Python implemented one.
> Advantages include 64bit support and reduction in overhead for processes
> which drag in shell extensions.
> 
> The attached patch modifies setup.py and bzr.iss.cog accordingly.
> 
> Cheers,
> 
> Mark
> 

As a friendly reminder, we really should get the tbzr stuff split out.
(Not at this time, though.)

+    # The C++ implemented shell extensions.
+    dist_dir = os.path.join(tbzr_root, "shellext", "cpp", "tbzrshellext",
+                            "build", "dist")
+    data_files.append(('', [os.path.join(dist_dir,
'tbzrshellext_x86.dll')]))
+    data_files.append(('', [os.path.join(dist_dir,
'tbzrshellext_x64.dll')]))
+


^- It seems pretty strange to hard-code the path to the file in this
way, but I'm guessing that is what it takes right now.

         if root == 'bzrlib/plugins':
             plugins = set(dirs)
+            # py2exe may find references to part of the plugin (eg, the
tests)
+            # so we tell py2exe to leave the plugins out of the .zip file
+            excludes.extend(["bzrlib.plugins." + d for d in dirs])


^- I don't understand this change. Isn't the whole point that we want to
bring in plugins? Is it just that we bring them all in manually, rather
than having py2exe do it for us?

How does that work with automatically bringing in the various dependency
libraries that plugins need? Is it again that we just list them all
manually?


+        # Ditto for TORTOISE_OVERLAYS_MSI_X64, pointing at *-x64.msi.
+        for needed in ('TORTOISE_OVERLAYS_MSI_WIN32',
+                       'TORTOISE_OVERLAYS_MSI_X64'):

^- Do I understand correctly that now the installer bundles 32-bit *and*
64-bit versions of everything?

Would it be reasonable to split out a 32-bit installer versus a 64-bit
installer?

How does it work with the python version we are building. It seems like
we would always be using 32-bit python, rather than both 32 and 64 bit.
But perhaps the standard "python*.msi" file includes both, and py2exe
knows how to package both at the same time.

...

+        DeleteFileNowOrLater(ExpandConstant('{app}\tbzr.dll'));
+        DeleteFileNowOrLater(ExpandConstant('{app}\tbzrtest.exe'));
+        DeleteFileNowOrLater(ExpandConstant('{app}\tbzr_tracer.exe'));

^- This is nice to have. Does this properly handle "you really do need
to reboot" (a file was in use) versus "you may need to reboot" (no files
were in use, and everything went fine, but I don't have any idea whether
that was true or not, so I always prompt you to reboot)?

John
=:->



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAklGZ9gACgkQJdeBCYSNAAMlKQCfYetA2bQB1mt3PJEZdEytQOt3
bjQAoI+UyoWOtK3s/xL9+p72hS7z6qhi
=5SGr
-----END PGP SIGNATURE-----



More information about the bazaar mailing list