You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Mark Phippard <ma...@gmail.com> on 2008/03/13 16:00:16 UTC

Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Building on Win32 seems worse than ever.

I defy someone to take just the source we provide in deps and do a
proper build.  If they succeed, then please document it.

My problems center around APR.

1) We used to build APR if it was in the subversion tree and included
in gen-make.py.  We stopped doing this, and now you need to build it
yourself.

2) Good luck building just APR and APR-Util correctly on any OS.  I
have had problems on OSX too.  The build process just is not clear at
all.

3) I typically just download httpd and build that so that it will
build APR and APR-Util for me.  That is what I had to do in this case.
 It did work.

4) I copy the APR and APR-Util folders into the SVN source tree.  Do
not think it is necessary, but it does not hurt.  SVN build seems to
fail because APR-Util, as built from Apache, does not include BDB.

My gen-make.py is using options like this:

--with-berkeley-db=db4-win32
--with-apr=apr
--with-apr-util=apr-util
--with-neon=neon
--with-serf=serf

etc...

We need some accurate build instructions.  INSTALL is outdated.  It
mentions APR_ICONV, as an example, which we do not even use.  It does
not mention things like Serf and SASL very much.  Also, why are they
not included in our deps?  And I wonder, why APR is included if we do
not build it anymore?

It is not our fault that APR (really APR-Util) does not provide a
clean standalone build process.  But we used to do this for you as
part of our build process, and I think that is where things are going
backwards.

I have good builds I have done in the past and I can get by this
problem by using those for my dependencies.  I wanted to test the
value of our deps tarball.  Right now, I am not seeing a lot of value
in providing it.

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare

Posted by Stefan Küng <to...@gmail.com>.
Mark Phippard wrote:
> On Thu, Mar 13, 2008 at 12:26 PM, Stefan Küng <to...@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 
'stick').

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)

Stefan

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


Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Mark Phippard <ma...@gmail.com>.
On Thu, Mar 13, 2008 at 12:26 PM, Stefan Küng <to...@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.

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?

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.

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org


Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Stefan Küng <to...@gmail.com>.
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.

Stefan

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


Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Branko Čibej <br...@xbc.nu>.
Jens Peters wrote:
>> When I build a standard Apache 2.2.8, the apr-util is not built with
>> BDB support and this seems to not allow the SVN build to proceed.
>> Perhaps it is something simpler I am missing?  Perhaps I can use 1.4.6
>> and let it build apr and apr-util correctly and then I can copy that?
>>
>
> Inside apr-util there is a perl script called 
> 'httpd-2.2.8\srclib\apr-util\build\w32locatedb.pl'.

Which I wrote ...

> You have to run that to add support of bdb to apr-util before 
> compiling apache/apr.

... and simultaneously caused our gen-make.py to do for you, with 
--enable-bdb-in-apr-util. Hence gen-make.py --help.

-- Brane

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Jens Peters <jp...@gmx.de>.
> When I build a standard Apache 2.2.8, the apr-util is not built with
> BDB support and this seems to not allow the SVN build to proceed.
> Perhaps it is something simpler I am missing?  Perhaps I can use 1.4.6
> and let it build apr and apr-util correctly and then I can copy that?
> 

Inside apr-util there is a perl script called 
'httpd-2.2.8\srclib\apr-util\build\w32locatedb.pl'. You have to run that 
to add support of bdb to apr-util before compiling apache/apr. Then you 
can use these builds for compiling subversion. At least that works for 
me with svn-1.4.6. We are using my VS2005 build (everything recompiled, 
including bdb44, apache2, libint) in production since 1.4.1 without any 
problems, so support of VS2005 isn't that bad.

Regards, Jens


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by "D.J. Heap" <dj...@gmail.com>.
On Thu, Mar 13, 2008 at 4:21 PM, D.J. Heap <dj...@gmail.com> wrote:
[snip]
> I will try to make time to play with them this weekend.  You're trying
> to build the 1.5 pre-releases with their deps files?


As followup, here's a summary of what I encountered while playing with
the beta zips:

Vista x86
VC2008 Express
svn 1.5 beta1 zip with deps zip

The default build (no server modules, no BDB -- just 'gen-make.py -t
vcproj --vsnet-version=2008') had 3 issues.

The first was a bug in apr when using the latest Windows SDK.  I
manually patched apr based on:

http://svn.apache.org/viewvc/apr/apr/trunk/network_io/unix/multicast.c?r1=584458&r2=608330

and apr built fine after that.

The second issue was a reference to winres.h from our svn.rc -- that
file doesn't exist in the latest SDK so I tweaked it to be winresrc.h
and the basic svn binaries built after that.  We can probably fix this
with some #if's or something if winresrc.h isn't in older SDK's.

The third issue was a build failure when VC2008 tried to build the ALL
target -- VC2008 apparently doesn't like our 'fake' projects.
Annoying, but not the end of the world.  I haven't looked at how to
fix this at all.

So, then I tried adding BDB support by extracting the BDB zip from
tigris.org into the tree and re-running gen-make.py.  That didn't work
at all.   As Mark indicated, there is some conflict that causes lots
of warnings and errors when apr isn't built with BDB support but you
try to build svn with BDB using our in-tree support.  I don't know why
it is different when you use --with-httpd to point to a full Apache
path, but it seems it is because I'm pretty sure that is how the
buildbot is setup (though it is on VC2005 Express).  I haven't look at
how to fix this either.

I'll try to look at these issues when I can, but I'm not sure when that will be.

DJ

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by "D.J. Heap" <dj...@gmail.com>.
On Thu, Mar 13, 2008 at 1:19 PM, Mark Phippard <ma...@gmail.com> wrote:
[snip]
>
> I don't know, maybe.  My point is that I pay attention to what it is
> going on and I do not have a clue what to do.  And I have been
> building on Windows for years.  Of course the problem with that is you
> figure it out once ever year or so and then just repeat it.  I thought
> I would try the deps files (since my normal build is using older
> dependencies).
>
> When I build a standard Apache 2.2.8, the apr-util is not built with
> BDB support and this seems to not allow the SVN build to proceed.
> Perhaps it is something simpler I am missing?  Perhaps I can use 1.4.6
> and let it build apr and apr-util correctly and then I can copy that?


I'm not sure -- I don't think I've ever built BDB support into
Apache/APR, but I've always built it into Subversion and I don't
recall having any issues.  I've never tried to build with the deps
files though.

I will try to make time to play with them this weekend.  You're trying
to build the 1.5 pre-releases with their deps files?

Also, I have no attachment to our current Windows build system.  If
TSVN's nant scripts or some version of them can be made to work well
then you'll get no hassles from me.  I think, as Stefan said, the
issue was that we'd have to maintain two build systems -- but we're at
least partially in that boat already, so I'm not sure we'd be any
worse off.  Unfortunately, I don't have much time to help with that,
though.

DJ

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Mark Phippard <ma...@gmail.com>.
On Thu, Mar 13, 2008 at 3:12 PM, D.J. Heap <dj...@gmail.com> wrote:
> I guess my first question would be what audience(s) we're trying to
>  support?  Subversion developers, end-user type developers that only
>  need client pieces, or end-user developers that need client + server
>  pieces?  I believe you need the full Apache distro to build the server
>  modules at all, don't you?
>
>  If we go with free tools, we are going to be incompatible with the
>  standard Apache distro because it is still built with VC6 as far as I
>  know -- so we'd need to point people to a Apache binary set that was
>  built with the same compiler we're using.  I'm not sure exactly why
>  this is an issue at all (it shouldn't be unless CRT structures are
>  being passed across module boundaries), but the last time I tried to
>  mix VC6 Apache with VS2005 modules it did not go well and did not fail
>  nicely either.  Some things worked, some didn't.
>
>  Personally, I build Apache (all of it) to get the APR pieces plus the
>  pieces needed for the server modules.  I don't understand the in's and
>  out's of Apache/APR building to know how to pick the pieces out and
>  I've never been very successful when trying to do that.
>
>  Do we need to build APR at all?  Can't we use the standard Apache
>  binaries at least for VC6 folks?

I don't know, maybe.  My point is that I pay attention to what it is
going on and I do not have a clue what to do.  And I have been
building on Windows for years.  Of course the problem with that is you
figure it out once ever year or so and then just repeat it.  I thought
I would try the deps files (since my normal build is using older
dependencies).

When I build a standard Apache 2.2.8, the apr-util is not built with
BDB support and this seems to not allow the SVN build to proceed.
Perhaps it is something simpler I am missing?  Perhaps I can use 1.4.6
and let it build apr and apr-util correctly and then I can copy that?

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by "D.J. Heap" <dj...@gmail.com>.
I guess my first question would be what audience(s) we're trying to
support?  Subversion developers, end-user type developers that only
need client pieces, or end-user developers that need client + server
pieces?  I believe you need the full Apache distro to build the server
modules at all, don't you?

If we go with free tools, we are going to be incompatible with the
standard Apache distro because it is still built with VC6 as far as I
know -- so we'd need to point people to a Apache binary set that was
built with the same compiler we're using.  I'm not sure exactly why
this is an issue at all (it shouldn't be unless CRT structures are
being passed across module boundaries), but the last time I tried to
mix VC6 Apache with VS2005 modules it did not go well and did not fail
nicely either.  Some things worked, some didn't.

Personally, I build Apache (all of it) to get the APR pieces plus the
pieces needed for the server modules.  I don't understand the in's and
out's of Apache/APR building to know how to pick the pieces out and
I've never been very successful when trying to do that.

Do we need to build APR at all?  Can't we use the standard Apache
binaries at least for VC6 folks?

DJ

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Mark Phippard <ma...@gmail.com>.
On Thu, Mar 13, 2008 at 12:39 PM, Mark Phippard <ma...@gmail.com> wrote:
> On Thu, Mar 13, 2008 at 12:26 PM, Paul Burba <pt...@gmail.com> wrote:
>  > On Thu, Mar 13, 2008 at 12:00 PM, Mark Phippard <ma...@gmail.com> wrote:
>  >  > Building on Win32 seems worse than ever.
>  >  >
>  >  >  I defy someone to take just the source we provide in deps and do a
>  >  >  proper build.  If they succeed, then please document it.
>  >  >
>  >  >  My problems center around APR.
>  >  >
>  >  >  1) We used to build APR if it was in the subversion tree and included
>  >  >  in gen-make.py.  We stopped doing this,
>  >
>  >  Do you recall when we stopped doing this?  I don't recall it ever
>  >  working for me.
>
>  Maybe it never did, but I sure thought so.  I cannot tell from the
>  history of gen-make.py.  Perhaps that would not be the file to look
>  at.

It looks like build.conf was the magic file to check.  See r24859 from
May 2007.  After 1.4.

I am not against the change, but I think we need to beef up our
documentation on how to build APR-Util properly so we can use it with
BDB.  We also never followed through on this thread that let to this
change:

http://svn.haxx.se/dev/archive-2007-04/0091.shtml

Specifically, the plan was to provide a complete set of pre-built
dependencies and the build system would be able to use them.  This
partial change appears to have made things worse.

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Mark Phippard <ma...@gmail.com>.
On Thu, Mar 13, 2008 at 12:26 PM, Paul Burba <pt...@gmail.com> wrote:
> On Thu, Mar 13, 2008 at 12:00 PM, Mark Phippard <ma...@gmail.com> wrote:
>  > Building on Win32 seems worse than ever.
>  >
>  >  I defy someone to take just the source we provide in deps and do a
>  >  proper build.  If they succeed, then please document it.
>  >
>  >  My problems center around APR.
>  >
>  >  1) We used to build APR if it was in the subversion tree and included
>  >  in gen-make.py.  We stopped doing this,
>
>  Do you recall when we stopped doing this?  I don't recall it ever
>  working for me.

Maybe it never did, but I sure thought so.  I cannot tell from the
history of gen-make.py.  Perhaps that would not be the file to look
at.

>  >  3) I typically just download httpd and build that so that it will
>  >  build APR and APR-Util for me.  That is what I had to do in this case.
>  >   It did work.
>
>  That's what I've been doing forever on Win32.

Me too (I thought).  It seems APR-Util needs to be built with BDB
support included though, and I cannot find any documentation about how
you do that with the Windows build.  The generic Windows build process
for these tools is pretty easy, it just seems like it does not do what
SVN needs.

>  >  4) I copy the APR and APR-Util folders into the SVN source tree.  Do
>  >  not think it is necessary, but it does not hurt.  SVN build seems to
>  >  fail because APR-Util, as built from Apache, does not include BDB.
>
>  What is the exact error you get?

You get errors when building libsvn_fs_base.  Things like redefinition
of macro APU_HAVE_DB and various syntax errors.

>  Are you building BDB yourself?

No, this is the pre-built download.

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Win32 Build nigthmare (was: 1.5.0-beta1 tarballs up for signing/testing)

Posted by Paul Burba <pt...@gmail.com>.
On Thu, Mar 13, 2008 at 12:00 PM, Mark Phippard <ma...@gmail.com> wrote:
> Building on Win32 seems worse than ever.
>
>  I defy someone to take just the source we provide in deps and do a
>  proper build.  If they succeed, then please document it.
>
>  My problems center around APR.
>
>  1) We used to build APR if it was in the subversion tree and included
>  in gen-make.py.  We stopped doing this,

Do you recall when we stopped doing this?  I don't recall it ever
working for me.

> and now you need to build it
>  yourself.
>
>  2) Good luck building just APR and APR-Util correctly on any OS.  I
>  have had problems on OSX too.  The build process just is not clear at
>  all.
>
>  3) I typically just download httpd and build that so that it will
>  build APR and APR-Util for me.  That is what I had to do in this case.
>   It did work.

That's what I've been doing forever on Win32.

>  4) I copy the APR and APR-Util folders into the SVN source tree.  Do
>  not think it is necessary, but it does not hurt.  SVN build seems to
>  fail because APR-Util, as built from Apache, does not include BDB.

What is the exact error you get?

Are you building BDB yourself?

>  My gen-make.py is using options like this:
>
>  --with-berkeley-db=db4-win32
>  --with-apr=apr
>  --with-apr-util=apr-util
>  --with-neon=neon
>  --with-serf=serf
>
>  etc...
>
>  We need some accurate build instructions.  INSTALL is outdated.  It
>  mentions APR_ICONV, as an example, which we do not even use.  It does
>  not mention things like Serf and SASL very much.  Also, why are they
>  not included in our deps?

This is probably a topic for another thread, but what exactly is
serf's status?  Do we claim it works as well as neon?

>  And I wonder, why APR is included if we do
>  not build it anymore?
>
>  It is not our fault that APR (really APR-Util) does not provide a
>  clean standalone build process.  But we used to do this for you as
>  part of our build process, and I think that is where things are going
>  backwards.
>
>  I have good builds I have done in the past and I can get by this
>  problem by using those for my dependencies.  I wanted to test the
>  value of our deps tarball.  Right now, I am not seeing a lot of value
>  in providing it.
>
>  --
>  Thanks
>
>  Mark Phippard
>  http://markphip.blogspot.com/
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
>  For additional commands, e-mail: dev-help@subversion.tigris.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org