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

Re: [PATCH] Update build instructions for the 1.0.x branch on the Win32 platform.

From: Martin Tomes <lists_at_tomes.org>
Date: 2004-04-28 14:32:16 CEST

> Log entry:
> Update the instructions for building Subversion on the Win32 platform.
>
> The new instructions are split into sections which describe what is
> needed, how to prepare the files (unpacking, environment etc.) and how
> to actually build the binaries with all available options turned on.
>
> * INSTALL
> Update Win32 build instructions.

Sorry, this really is the last version of this file. Windoze is such a pain. I just ran through it
using VMWare and found a couple of things which weren't quite right. Oh for a way to withdraw posts
to a mailing list:-)

-- 
Martin Tomes
echo 'Martin x Tomes at controls x eurotherm x co x uk'\
  | sed -e 's/ x /\./g' -e 's/ at /@/'

Index: INSTALL
===================================================================
--- INSTALL (revision 9468)
+++ INSTALL (working copy)
@@ -578,134 +578,287 @@
   E. Building the Latest Source under Windows
       ----------------------------------------

- (These instructions assume you have already installed Subversion
- and checked out a Subversion working copy. See the section
- "Bootstrapping from a Zip or Installer File under Windows" above
- for more.)
+ E.1 Prerequisites

- There is some support for building Subversion on Win32
- platforms. The project files generated by gen-make.py are for
- Microsoft Visual C++ 6.x; earlier versions of the compiler are
- not supported. You'll also need a fairly recent version of the
- Microsoft Platform SDK; the header files that come with MSVC 6.x
- are too old.
+ * Visual Studio 6 and service pack. It can be built with Visual Studio
+ 7 but these instructions assumes VS6.
+ * A recent Windows SDK, the one provided with Visual Studio 6 is
+ too old. You only need the 'Core SDK'. You can get it from MSDN
+ if you have it or from
+ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ if you
+ don't.
+ * Python 2.2 or higher, downloaded from http://www.python.org/ which is
+ used to generate the project files.
+ * Perl 5.8 or higher from http://www.activestate.com/
+ * Neon 0.24.5 or higher, downloaded from
+ http://www.webdav.org/neon/neon-0.24.5.tar.gz which is required
+ for building the client components.
+ * Berkeley DB is required for support for local server components,
+ version 4.2.52 is available from
+ http://subversion.tigris.org/servlets/ProjectDocumentList as
+ db-4.2.52-win32.zip. For more information see Section I.5.
+ * Apache 2 source, downloaded from
+ http://httpd.apache.org/download.cgi, these instructions assume
+ version 2.0.49.
+ * Apache 2 msi install file, also from
+ http://httpd.apache.org/download.cgi (required for running the
+ tests)
+ * ZLib 1.1.4 or higher (version 1.1.x) binaries
+ http://www.winimage.com/zLibDll/zlib114dll.zip and sources
+ http://www.gzip.org/zlib/zlib114.zip
+ * Openssl 0.9.7d or higher obtained from
+ http://www.openssl.org/source/openssl-0.9.7d.tar.gz
+ * An assembler, e.g., nasm which is avaliable from
+ http://www.kernel.org/pub/software/devel/nasm/binaries/win32/
+ * The latest version of apr-util (see Section I.1) must be told
+ where to find the Berkeley DB include files and libraries. You
+ can do this with the w32locatedb.pl script (located in the
+ "build" directory in the apr-util sources), which modifies
+ apr-util's header and DSP files. The instructions at the top of
+ the script file explain how to use the script.

- To generate the project files, you will need Python 2.2 for Windows
- installed. Installing Python will also allow you to run the test
- suite after you build the source.
+ If your copy of apr-util does not contain build\w32locatedb.pl,
+ you can download a recent version from here:

- To build the client components, you'll need a copy of neon
- 0.24.4. See section I.4 for details on where to get one and
- what to do with it when you get it.
+ http://subversion.tigris.org/files/documents/15/8705/w32locatedb.pl

- [NOTE: The neon library supports secure connections with OpenSSL
- and on-the-wire compression with zlib. If you want to use
- those features, you should pass the options "--with-zlib" and
- "--with-openssl" to the gen-make.py script. See Section I.10
- for more details.]
+ You will need Perl 5.8 to run this script.
+ * A Subversion client binary from http://subversion.tigris.org/ to
+ do the initial checkout of the Subversion source. See the section
+ "Bootstrapping from a Zip or Installer File under Windows" above
+ for more.
+ * A means of unpacking the files. Native Win32 versions of gunzip,
+ tar and unzip can be found at http://unxutils.sourceforge.net/ or
+ http://gnuwin32.sourceforge.net/.
+ If you have WinZip that will also unpack the files.

+ E.2 Notes
+
+ The neon library supports secure connections with OpenSSL and
+ on-the-wire compression with zlib. If you want to use those
+ features, you should pass the options "--with-zlib" and
+ "--with-openssl" to the gen-make.py script. See Section I.10 for
+ more details.
+
       If you are installing under Win9x, NT4, or WinME, and svn.exe
       doesn't run, try installing shfolder.dll from here:

           http://download.microsoft.com/download/platformsdk/Redist/5.50.4027.300/W9XNT4/EN-US/shfinst.EXE

- If you want to build the (local) server components, you'll also
- need a copy of Berkeley DB, version 4.0.14 or newer (version 4.2.52
- is preferred). Details are in Section I.5. For your convenience,
- there is also a binary distribution on the Subversion downloads
- page
+ E.3 Preparation

- http://subversion.tigris.org/servlets/ProjectDocumentList
+ This section descibes how to unpack the files to make a build tree.

- The file there is named
+ * Make a directory SVN and cd into it.
+ * Checkout the version of Subversion you require:

- db-4.2.52-win32.zip
+ For the 1.0.x development branch:
+ svn co http://svn.collab.net/repos/svn/branches/1.0.x src-1.0.x

- Unpack the distribution into the root directory of the Subversion
- source tree as <SVN>\db4-win32. It's a good idea to add
- <SVN>\db4-win32\bin to your PATH, so that Subversion can find the
- Berkeley DB DLLs.
+ For version 1.0.2:
+ svn co http://svn.collab.net/repos/svn/tags/1.0.2/ src-1.0.2

- [NOTE: This binary package of Berkeley DB is provided for
- convenience only. Please don't address questions about
- Berkeley DB that aren't directly related to using Subversion
- to the project mailing list.]
+ The rest of these instructions assume the 1.0.x development branch.

- If you build Berkeley DB from the source, you will have to copy
- the file db-4.2.52\build_win32\db.h to <SVN>\db4-win32\include,
- and all the import libraries to <SVN>\db4-win32\lib. Again, the
- DLLs should be somewhere in your path.
+ * Install Visual Studio 6. You either have to tell the installer to
+ register environment variables or run VCVARS32.BAT before building
+ anything.
+ * Install a recent Windows Core SDK
+ * Register the SDK with Visual Studio 6. This is a quote from the
+ Microsoft February 2003 SDK documentation:

- The latest version of apr-util (see Section I.1) must be told
- where to find the Berkeley DB include files and libraries. You
- can do this with the w32locatedb.pl script (located in the "build"
- directory in the apr-util sources), which modifies apr-util's
- header and DSP files. The instructions at the top of the script
- file explain how to use the script.
+ "To register the SDK bin, include, and library directories with
+ Microsoft Visual StudioŽ version 6.0 and Visual Studio .NET,
+ click Start, point to All Programs, point to Microsoft Platform
+ SDK February 2003, point to Visual Studio Registration, and then
+ click Register PSDK Directories with Visual Studio. This
+ registration process places the SDK bin, include, and library
+ directories at the beginning of the search paths, which ensures
+ that the latest headers and libraries are used when building
+ applications in the IDE. Note that for Visual Studio 6.0
+ integration to succeed, Visual Studio 6.0 must run at least once
+ before you select Register PSDK Directories with Visual
+ Studio. Also note that when this option is run, the IDEs should
+ not be running."

- If your copy of apr-util does not contain build\w32locatedb.pl,
- you can download a recent version from here:
+ * Install Python and add it to your path
+ * Install Perl
+ * Install Apache 2 using the msi file
+ * Extract neon into SVN\src-1.0.x\neon
+ * Extract the Berkeley DB files into SVN\src-1.0.x\db4-win32. It's a
+ good idea to add SVN\src-1.0.x\db4-win32\bin to your PATH, so that
+ Subversion can find the Berkeley DB DLLs.

- http://subversion.tigris.org/files/documents/15/8705/w32locatedb.pl
+ [NOTE: This binary package of Berkeley DB is provided for
+ convenience only. Please don't address questions about
+ Berkeley DB that aren't directly related to using Subversion
+ to the project mailing list.]

- You will need Perl 5.8 to run this script.
+ If you build Berkeley DB from the source, you will have to copy
+ the file db-4.2.52\build_win32\db.h to
+ SVN\src-1.0.x\db4-win32\include, and all the import libraries to
+ SVN\src-1.0.x\db4-win32\lib. Again, the DLLs should be somewhere in
+ your path.

- To build the Apache module, you will also need the Apache 2.0.49
- or later Win32 source. You can download it from here:
+ * Extract Apache source into SVN\http-2.0.49
+ * Extract the pre-built zlib into SVN\zlib and copy
+ SVN\zlib\static32\zlibstat.lib into SVN\zlib
+ * Extract openssl into SVN\openssl-0.9.7d
+ * Extract nasm into SVN\nasm and put it in your path
+ * Put the w32locatedb.pl script in
+ httpd-2.0.49\srclib\apr-util\build\w32locatedb.pl if it isn't already
+ there.

- http://httpd.apache.org/download.cgi
+ E.4 Building the Binaries

- Finally, you will need to copy the Apache apr libraries into the
- root of the Subversion source tree.
+ Start in the SVN directory you created.

- Walkthrough:
+ Set up the environment.

- Unzip the Apache source, copy the w32locatedb.pl script to the
- srclib\apr-util\build directory, and run it to prepare the
- apr-util sources.
+ C:>set VER=1.0.x
+ C:>set DIR=1.0.x
+ C:>set DRIVE=C
+ C:>set PYTHONDIR=C:\Python22
+ C:>set SDKINC=C:\Program Files\Microsoft SDK\include
+ C:>set SDKLIB=C:\Program Files\Microsoft SDK\lib
+ C:>set APACHEMODDIR=C:\Program Files\Apache Group\Apache2\modules
+ C:>PATH=%PATH%;%DRIVE%:\SVN\src-%DIR%\db4-win32;%DRIVE%:\SVN\nasm;%PYTHONDIR%
+ C:>set INCLUDE=%SDKINC%;%INCLUDE%
+ C:>set LIB=%SDKLIB%;%LIB%

- Open the Apache.dsw file and build the Apache source. If you
- don't compile Apache, mod_dav_svn will not build.
+ OpenSSL

- Run "python gen-make.py -t dsp --with-httpd=<path-to-httpd>"
- to generate the Visual C++ 6.x project files. If you don't
- want to build mod_dav_svn, omit the --with-httpd option. In
- this case, you will have to tell the generator where to find
- the APR libraries; the options are --with-apr, --with-apr-util
- and --with-apr-iconv.
- Run "python gen-make.py -help" to see other options.
+ C:>cd openssl-0.9.7d
+ C:>perl Configure VC-WIN32
+ C:>call ms\do_nasm
+ C:>nmake -f ms\ntdll.mak
+ C:>cd out32dll
+ C:>call ..\ms\test
+ C:>cd ..\..

- Open the subversion_msvc.dsw file gen-make creates in the
- top-level directory. Compile the __ALL__ target to compile
- everything, __ALL_TESTS__ to also build the test programs.
+ Apache 2

- The following is a sample script.
- gunzip, tar, and unzip are native win32 apps taken from
+ C:>perl httpd-2.0.49\srclib\apr-util\build\w32locatedb.pl dll src-%DIR%\db4-win32\include src-%DIR%\db4-win32\lib
+ C:>msdev httpd-2.0.49\apache.dsw /MAKE "BuildBin - Win32 Release"

- http://unxutils.sourceforge.net/
+ Subversion

- C:\SVN> svn co http://svn.collab.net/repos/svn/trunk src
- C:\SVN> gunzip neon-0.24.4.tar.gz
- C:\SVN> cd src
- C:\SVN\src> tar -xvf ..\neon-0.24.4.tar
- C:\SVN\src> ren neon-0.24.4 neon
- C:\SVN\src> unzip ..\db-4.2.52-win32.zip
- C:\SVN\src> cd ..
- C:\SVN> unzip httpd_2.0.49-win32-src.zip
- C:\SVN> copy w32locatedb.pl httpd-2.0.49\srclib\apr-util\build
- C:\SVN> perl httpd-2.0.49\srclib\apr-util\build\w32locatedb.pl dll src\db4-win32\include src\db4-win32\lib
- C:\SVN> msdev httpd-2.0.49\apache.dsw /MAKE "BuildBin - Win32 Debug"
- C:\SVN> cd src
- C:\SVN\src> python gen-make.py -t dsp --with-httpd=..\httpd-2.0.49
- C:\SVN\src> msdev subversion_msvc.dsw /MAKE "__ALL__ - Win32 Debug"
+ Things to note:

- [NOTE: Substitute "Release" for "Debug" in the "msdev" command lines
- above if you want binaries optimized for release.]
+ * gen-make.py is supposed to configure the build to use apr* from
+ the Apache build, it doesn't work so the built apr* files have to
+ be copied from the Apache build to the src-1.0.x directory.
+ * The generated dsw file doesn't build all of the tests so there
+ are explicit msdev commands to build test_utf and test_ra_local.
+ * If you don't want to build mod_dav_svn, omit the --with-httpd
+ option. In this case, you will have to tell the generator where
+ to find the APR libraries; the options are --with-apr,
+ --with-apr-util and --with-apr-iconv.
+ * If you would like a debug build substitute Debug for Release in
+ the msdev commands.
+ * There have been rumors that Subversion on Win32 can be built
+ using the latest cygwin. ymmv.
+ * The /USEENV switch to msdev makes it take notice of the INCLUDE and
+ LIB environment variables, it also makes it ignore it's own lib and
+ include settings so you need to have the Windows SDK lib and include
+ directories in the LIB and INCLUDE environment variables. Do *not*
+ use this switch when starting up the msdev Visual environment. If you
+ wish to build in the Visual environment the SDK lib and include
+ directories must be in the Tools/Options/Directories settings (if you
+ followed the 'Register the SDK with Visual Studio 6' instructions
+ above this has been done for you).
+ * If you are using Visual Studio .NET add -t vcproj to the gen-make.py
+ command, you will also have to distribute the C runtime dll with the
+ binaries.
+ * Apache must not be running or the copy of the modules will fail.

- [ALSO NOTE: There have been rumors that Subversion on Win32 can be built
- using the latest cygwin. ymmv.]
+ C:>mkdir src-%DIR%\apr
+ C:>mkdir src-%DIR%\apr-iconv
+ C:>mkdir src-%DIR%\apr-util
+ C:>xcopy /S /Y httpd-2.0.49\srclib\apr src-%DIR%\apr
+ C:>xcopy /S /Y httpd-2.0.49\srclib\apr-iconv src-%DIR%\apr-iconv
+ C:>xcopy /S /Y httpd-2.0.49\srclib\apr-util src-%DIR%\apr-util
+ C:>cd src-%DIR%
+ C:>python gen-make.py -t dsp --with-httpd=..\httpd-2.0.49 --with-berkeley-db=db4-win32 --with-openssl=..\openssl-0.9.7d --with-zlib=..\zlib
+ C:>msdev subversion_msvc.dsw /USEENV /MAKE "__ALL_TESTS__ - Win32 Release"
+ C:>msdev subversion_msvc.dsw /USEENV /MAKE "test_utf - Win32 Release"
+ C:>msdev subversion_msvc.dsw /USEENV /MAKE "test_ra_local - Win32 Release"
+ C:>cd ..

+ The binaries have now been built.

+ E.5 Packaging the binaries
+
+ You now need to copy the binaries ready to make the release zip
+ file. You also need to do this to run the tests as the new binaries
+ need to be in your path.
+
+ From within the SVN directory copy these files:
+
+ C:>mkdir svn-win32-%VER%
+ C:>mkdir svn-win32-%VER%\bin
+ C:>mkdir svn-win32-%VER%\httpd
+ C:>mkdir svn-win32-%VER%\iconv
+ C:>copy src-%DIR%\db4-win32\bin\libdb42.dll svn-win32-%VER%\bin
+ C:>copy openssl-0.9.7d\out32dll\libeay32.dll svn-win32-%VER%\bin
+ C:>copy openssl-0.9.7d\out32dll\ssleay32.dll svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\clients\cmdline\svn.exe svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\svnadmin\svnadmin.exe svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\svndumpfilter\svndumpfilter.exe svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\svnlook\svnlook.exe svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\svnserve\svnserve.exe svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\svnversion\svnversion.exe svn-win32-%VER%\bin
+ C:>copy src-%DIR%\Release\subversion\mod_authz_svn\mod_authz_svn.so svn-win32-%VER%\httpd
+ C:>copy src-%DIR%\Release\subversion\mod_dav_svn\mod_dav_svn.so svn-win32-%VER%\httpd
+ C:>copy src-%DIR%\apr-iconv\Release\iconv\*.so svn-win32-%VER%\iconv
+
+ E.6 Testing the Binaries
+
+ The build process creates the binary test programs but it does not
+ copy the client tests into the release test area.
+
+ C:>cd src-%DIR%
+ C:>mkdir Release\subversion\tests\clients
+ C:>xcopy /S /Y subversion\tests\clients Release\subversion\tests\clients
+
+ Copy the dso files into the Apache modules directory.
+
+ C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so "%APACHEMODDIR%"
+ C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so "%APACHEMODDIR%"
+ C:>cd ..
+
+ Put the svn-win32-trunk\bin directory at the start of your path so
+ you run the newly built binaries and not another version you might
+ have installed.
+
+ Configure Apache to use the mod_dav_svn and mod_authz_svn modules by
+ making sure these lines appear uncommented in httpd.conf:
+
+ LoadModule dav_module modules/mod_dav.so
+ LoadModule dav_fs_module modules/mod_dav_fs.so
+ LoadModule dav_svn_module modules/mod_dav_svn.so
+ LoadModule authz_svn_module modules/mod_authz_svn.so
+
+ And further down the file add location directives to point to the
+ test repositories. Change the paths to the SVN directory you created:
+
+ <Location /repositories>
+ DAV svn
+ SVNParentPath C:/SVN/src-1.0.x/Release/subversion/tests/clients/cmdline/repositories
+ </Location>
+
+ <Location /local_tmp/repos>
+ DAV svn
+ SVNPath c:/SVN/src-1.0.x/Release/subversion/tests/clients/cmdline/local_tmp/repos
+ </Location>
+
+ Then restart Apache and run the tests:
+
+ C:>PATH=%DRIVE%:\SVN\svn-win32-%VER%\bin;%PATH%
+ C:>cd src-%DIR%
+ C:>python win-tests.py -c -r -v
+ C:>python win-tests.py -c -r -v -u http://localhost
+ C:>cd ..
 
 III. BUILDING A SUBVERSION SERVER
       ============================

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Apr 28 14:33:18 2004

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.