[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Win32 Build nigthmare

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Thu, 13 Mar 2008 17:54:58 +0100

Mark Phippard wrote:
> On Thu, Mar 13, 2008 at 12:26 PM, Stefan Küng <tortoisesvn_at_gmail.com> wrote:
>> Mark Phippard wrote:
>> > Building on Win32 seems worse than ever.
>> [snip]
>> You could try the NAnt scripts we use in TSVN to build all the deps,
>> including Subversion. With those, we successfully avoid having to tweak
>> the build process too often. And they're much easier to maintain than
>> the python script svn uses.
> I've considered that. I have also been hoping these scripts would
> find there way into Subversion. I am using MSVC 6.0 currently and I
> assume that does not work with your scripts.

I've offered to port those to Subversion some time ago. The idea was
rejected because then two separate build systems had to be maintained.

> A general concern I have about us moving to newer version of Visual
> Studio is the things that we maybe do not know about. Such as what it
> the deal with these manifest files and when do you need them? I see
> the Apache build process doing stuff with them, but not ours. Will
> this make our builds non-distributable to other systems?

manifest resources tell Windows how to handle executables. There are
several different manifest resource types. For example:

Microsoft.Windows.Common-Controls manifest tells windows that the
application wants to use the version6 common controls (using the
XP/themed UI controls). If the manifest is missing, Windows will run the
application in 'old' mode where the controls are not themed.

Then there are manifests required so the application can use the new
C-Runtime dlls (the C-Runtime dlls for VS200X are installed in the WxS
folder, not the System32 folder anymore and therefore *require* the
manifest - otherwise the application can't load those dll's anymore).

And for Vista, there's also the 'UAC' manifest, which tells Vista that
the application is aware that it can't write to HKLM, the 'program
files', 'windows' or 'system32' folder. With that manifest, Vista will
reject any attempt to write to those. If the manifest is missing, Vista
will redirect those write accesses to the Vista virtual store so the
application can still 'run' (but read accesses still would go to the
original folder since only write access is redirected. which means an
application which stores its settings there, those settings will never

So yes, manifests are important and you have to properly include them.
Otherwise you'll run into big and hard to diagnose problems (especially
with if the uac manifest is missing).

> I think the ideal would be a new build system that focused on the free
> compilers and tools from Microsoft so that there were not any real
> barriers to a developer building SVN on Windows.

The free VC-Express editions work just fine to compile Subversion (not
for TSVN though: we use MFC which is not included in the Express
edition). I've also had our NAnt script check for the VS version used
(VS2005 or VS2008) and do some version-specific stuff for each of those
versions - it's not that hard to implement something like that in NAnt.
(I've removed that again since we now require VS2008 due to the fact
that Vista icons (256x256 PNG) can't be used with VS2005)


   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net

Received on 2008-03-13 17:55:24 CET

This is an archived mail posted to the Subversion Dev mailing list.