1251881Speter               ======================================
2251881Speter                      INSTALLING SUBVERSION
3251881Speter                          A Quick Guide
4251881Speter               ======================================
5251881Speter
6262253Speter$LastChangedDate: 2013-09-27 06:57:44 +0000 (Fri, 27 Sep 2013) $
7251881Speter
8251881Speter
9251881SpeterContents:
10251881Speter
11251881Speter     I. INTRODUCTION
12251881Speter       A. Audience
13251881Speter       B. Dependency Overview
14251881Speter       C. Dependencies in Detail
15251881Speter       D. Documentation
16251881Speter
17251881Speter    II. INSTALLATION
18251881Speter       A. Building from a Tarball or RPM
19251881Speter       B. Building the Latest Source under Unix
20251881Speter       C. Building under Unix in Different Directories
21251881Speter       D. Installing from a Zip or Installer File under Windows
22251881Speter       E. Building the Latest Source under Windows
23251881Speter
24251881Speter   III. BUILDING A SUBVERSION SERVER
25251881Speter       A. Setting Up Apache
26251881Speter       B. Making and Installing the Subversion Server
27251881Speter       C. Configuring Apache for Subversion
28251881Speter       D. Running and Testing
29251881Speter       E. Alternative:  'svnserve' and ra_svn
30251881Speter
31251881Speter    IV. PLATFORM-SPECIFIC ISSUES
32251881Speter       A. Windows XP
33251881Speter       B. Mac OS X
34251881Speter
35251881Speter     V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA)
36251881Speter
37251881Speter
38251881Speter
39251881SpeterI.    INTRODUCTION
40251881Speter      ============
41251881Speter
42251881Speter  A. Audience
43251881Speter
44251881Speter      This document is written for people who intend to build
45251881Speter      Subversion from source code.  Normally, the only people who do
46251881Speter      this are Subversion developers and package maintainers.
47251881Speter
48251881Speter      If neither of these labels fits you, we recommend you find an
49251881Speter      appropriate binary package of Subversion and install that.
50251881Speter      While the Subversion project doesn't officially release binary
51251881Speter      packages, a number of volunteers have made such packages
52251881Speter      available for different operating systems.  Most Linux and BSD
53251881Speter      distributions already have Subversion packages ready to go via
54251881Speter      standard packaging channels, and other volunteers have built
55251881Speter      'installers' for both Windows and OS X.  Visit this page for
56251881Speter      package links:
57251881Speter
58251881Speter         http://subversion.apache.org/packages.html
59251881Speter
60251881Speter      For those of you who still wish to build from source, Subversion
61251881Speter      follows the Unix convention of "./configure && make", but it has
62251881Speter      a number of dependencies.
63251881Speter
64251881Speter
65251881Speter  B. Dependency Overview
66251881Speter
67251881Speter      You'll need the following build tools to compile Subversion:
68251881Speter
69251881Speter      * autoconf 2.59 or later (Unix only)
70251881Speter      * libtool 1.4 or later (Unix only)
71251881Speter      * a reasonable C compiler (gcc, Visual Studio, etc.)
72251881Speter
73251881Speter
74251881Speter      Subversion also depends on the following third-party libraries:
75251881Speter
76251881Speter      * libapr and libapr-util (REQUIRED for client and server)
77251881Speter
78251881Speter         The Apache Portable Runtime (APR) library provides an
79251881Speter         abstraction of operating-system level services such as file
80251881Speter         and network I/O, memory management, and so on.  It also
81251881Speter         provides convenience routines for things like hashtables,
82251881Speter         checksums, and argument processing.  While it was originally
83251881Speter         developed for the Apache HTTP server, APR is a standalone
84251881Speter         library used by Subversion and other products.  It is a
85251881Speter         critical dependency for all of Subversion; it's the layer
86251881Speter         that allows Subversion clients and servers to run on
87251881Speter         different operating systems.
88251881Speter
89251881Speter      * SQLite  (REQUIRED for client and server)
90251881Speter
91251881Speter         Subversion uses SQLite to manage some internal databases.
92251881Speter
93251881Speter      * libz  (REQUIRED for client and server)
94251881Speter
95251881Speter         Subversion uses zlib for compressing binary differences.
96251881Speter         These diff streams are used everywhere -- over the network,
97251881Speter         in the repository, and in the client's working copy.
98251881Speter
99251881Speter      * libserf  (OPTIONAL for client)
100251881Speter
101251881Speter         The Serf library allows the Subversion client to send HTTP
102251881Speter         requests.  This is necessary if you want your client to access
103251881Speter         a repository served by the Apache HTTP server.  There is an
104251881Speter         alternate 'svnserve' server as well, though, and clients
105251881Speter         automatically know how to speak the svnserve protocol.
106251881Speter         Thus it's not strictly necessary for your client to be able
107251881Speter         to speak HTTP... though we still recommend that your client
108251881Speter         be built to speak both HTTP and svnserve protocols.
109251881Speter
110251881Speter      * OpenSSL (OPTIONAL for client and server)
111251881Speter
112251881Speter         OpenSSL enables your client to access SSL-encrypted https://
113251881Speter         URLs (using libserf) in addition to unencrypted http:// URLs.
114251881Speter         To use SSL with Subversion's WebDAV server, Apache needs to be
115251881Speter         compiled with OpenSSL as well.
116251881Speter
117251881Speter      * Berkeley DB (OPTIONAL for client and server)
118251881Speter
119251881Speter         There are two different repository 'back-end'
120251881Speter         implementations.  One implementation stores data in a flat
121251881Speter         filesystem (known as FSFS); the other implementation stores
122251881Speter         data in a Berkeley DB database (known as BDB).  When you
123251881Speter         create a repository, you have the option of specifying a
124251881Speter         storage back-end.  The Berkeley DB back-end will only be
125251881Speter         available if the BDB libraries are discovered at compile
126251881Speter         time.
127251881Speter
128251881Speter      * libsasl (OPTIONAL for client and server)
129251881Speter
130251881Speter         If the Cyrus SASL library is detected at compile time, then
131251881Speter         the svn client (and svnserve server) will be able to utilize
132251881Speter         SASL to do various forms of authentication when speaking the
133251881Speter         svnserve protocol.
134251881Speter
135251881Speter      * Python, Perl, Java, Ruby  (OPTIONAL)
136251881Speter
137251881Speter         Subversion is mostly a collection of C libraries with
138251881Speter         well-defined APIs, with a small collection of programs that
139251881Speter         use the APIs.  If you want to build Subversion API bindings
140251881Speter         for other languages, you need to have those languages
141251881Speter         available at build time.
142251881Speter
143251881Speter      * KDELibs, GNOME Keyring  (OPTIONAL for client)
144251881Speter
145251881Speter         Subversion contains optional support for storing passwords in
146251881Speter         KWallet (KDE 4) or GNOME Keyring.
147251881Speter
148251881Speter      * libmagic
149251881Speter
150251881Speter         If the libmagic library is detected at compile time,
151251881Speter         it will be used to determine mime-types of binary files
152251881Speter         which are added to version control. Note that mime-types
153251881Speter         configured via auto-props or the mime-types-file option
154251881Speter         take precedence.
155251881Speter
156251881Speter  C. Dependencies in Detail
157251881Speter
158251881Speter      Subversion depends on a number of third party tools and libraries.
159251881Speter      Some of them are only required to run a Subversion server; others
160251881Speter      are necessary just for a Subversion client.  This section explains
161251881Speter      what other tools and libraries will be required so that Subversion
162251881Speter      can be built with the set of features you want.
163251881Speter
164251881Speter      On Unix systems, the './configure' script will tell you if you are
165251881Speter      missing the correct version of any of the required libraries or
166251881Speter      tools, so if you are in a real hurry to get building, you can skip
167251881Speter      straight to section II.  If you want to gather the pieces you will
168251881Speter      need before starting out, however, you should read the following.
169251881Speter
170251881Speter      If you're just installing a Subversion client, the Subversion
171251881Speter      team has created a script that downloads the minimal prerequisite
172251881Speter      libraries (Apache Portable Runtime, Sqlite, and Zlib).  The script,
173251881Speter      'get-deps.sh', is available in the same directory as this file.
174251881Speter      When run, it will place 'apr', 'apr-util', 'serf', 'zlib', and
175251881Speter      'sqlite-amalgamation' directories directly into your unpacked Subversion
176251881Speter      distribution.  With the exception of sqlite-amalgamation, they will
177251881Speter      still need to be configured, built and installed explicitly, and
178251881Speter      Subversion's own configure script may need to be told where to find
179251881Speter      them, if they were not installed in standard system locations.
180251881Speter
181251881Speter      Note: there are optional dependencies (such as openssl, swig, and httpd)
182251881Speter      which get-deps.sh does not download.
183251881Speter
184251881Speter      Note: Because previous builds of Subversion may have installed older
185251881Speter      versions of these libraries, you may want to run some of the cleanup
186251881Speter      commands described in section II.B before installing the following.
187251881Speter
188251881Speter
189251881Speter      1.  Apache Portable Runtime 0.9.7 or 1.X.X  (REQUIRED)
190251881Speter
191251881Speter      Whenever you want to build any part of Subversion, you need the
192251881Speter      Apache Portable Runtime (APR) and the APR Utility (APR-util)
193251881Speter      libraries.
194251881Speter
195251881Speter
196251881Speter        ****************************************************************
197251881Speter        **       IMPORTANT ISSUE ABOUT APR VERSIONS:  READ THIS.      **
198251881Speter        **                                                            **
199251881Speter        ****************************************************************
200251881Speter        |                                                              |
201251881Speter        | APR 0.9.X and 1.X are binary-incompatible.                   |
202251881Speter        |                                                              |
203251881Speter        | This means:                                                  |
204251881Speter        |                                                              |
205251881Speter        |   - if you are already using Subversion with APR 0.9.X, and  |
206251881Speter        |     then upgrade your libapr to 1.X without rebuilding       |
207251881Speter        |     Subversion, things will break and segfault.              |
208251881Speter        |                                                              |
209251881Speter        |   - if your Subversion server libraries are linked to one    |
210251881Speter        |     version of APR, but your Apache server is linked to a    |
211251881Speter        |     different version, things will break and segfault.       |
212251881Speter        |                                                              |
213251881Speter        | Subversion distribution dependencies:                        |
214251881Speter        | -------------------------------------                        |
215251881Speter        |                                                              |
216251881Speter        | For a long time, Subversion's main distribution contained    |
217251881Speter        | APR and APR-UTIL (both 0.9.x), plus a few other things that  |
218251881Speter        | we couldn't count on the installation system having.  But    |
219251881Speter        | nowadays, Subversion's requirements are no longer exotic,    |
220251881Speter        | and so our main distribution contains just the Subversion    |
221251881Speter        | source code itself -- people compiling Subversion are        |
222251881Speter        | expected to either have the APR libraries already installed  |
223251881Speter        | on their system, or to be capable of fetching them easily.   |
224251881Speter        |                                                              |
225251881Speter        | Note that it's *perfectly* safe to use APR 1.X from the      |
226251881Speter        | beginning.  In fact, we recommend it.  If you're building    |
227251881Speter        | Subversion for the first time, there's no compatibility      |
228251881Speter        | issue to worry about, so grab the latest version of APR.     |
229251881Speter        |                                                              |
230251881Speter        | If you already have a Subversion installation using APR      |
231251881Speter        | 0.9.x, it's still possible to move to APR 1.X safely.  Just  |
232251881Speter        | be sure to recompile Subversion (and Apache httpd if         |
233251881Speter        | necessary) after upgrading APR!                              |
234251881Speter        |______________________________________________________________|
235251881Speter
236251881Speter
237251881Speter      If you do not have a pre-installed APR and APR-util, you will need
238251881Speter      to get these yourself:
239251881Speter
240251881Speter          http://apr.apache.org/download.cgi
241251881Speter
242251881Speter      On Unix systems, if you already have the APR libraries compiled and do
243251881Speter      not wish to regenerate them from source code, then Subversion needs to
244251881Speter      be able to find them.
245251881Speter
246251881Speter      There are a couple of options to "./configure" that tell it where
247251881Speter      to look for the APR and APR-util libraries. By default it will try
248251881Speter      to locate the libraries using apr-config and apu-config scripts.
249251881Speter      These scripts provide all the relevant information for the APR and
250251881Speter      APR-util installations.
251251881Speter
252251881Speter      If you want to specify the location of the APR library, you can use
253251881Speter      the "--with-apr=" option of "./configure". It should be able to find
254251881Speter      the apr-config script in the standard location under that directory
255251881Speter      (e.g. ${prefix}/bin).
256251881Speter
257251881Speter      Similarly, you can specify the location of APR-util using the
258251881Speter      "--with-apr-util=" option to "./configure". It will look for the
259251881Speter      apu-config script relative to that directory.
260251881Speter
261251881Speter      For example, if you want to use the APR libraries you built
262251881Speter      with the Apache httpd server, you could run:
263251881Speter
264251881Speter          $ ./configure --with-apr=/usr/local/apache2 \
265251881Speter            --with-apr-util=/usr/local/apache2  ...
266251881Speter
267251881Speter      Be sure to use a native Windows SVN client (as opposed to
268251881Speter      Cygwin's version) so that the .dsp files get carriage-returns at
269251881Speter      the ends of their lines.  Otherwise Visual Studio will complain
270251881Speter      that it doesn't recognize the .dsp files.
271251881Speter
272251881Speter      If you use APR libraries checked out from svn in an Unix
273251881Speter      environment, you need to run the 'buildconf' script in each
274251881Speter      library's directory, to regenerate the configure scripts and
275251881Speter      other files required for compiling the libraries:
276251881Speter
277251881Speter      $ cd apr; ./buildconf; ./configure ...; make; make install; cd ..
278251881Speter
279251881Speter      $ cd apr-util; ./buildconf; ./configure ...; make; make install; cd ..
280251881Speter
281251881Speter      Configure build and install both libraries before running Subversion's
282251881Speter      configure script.
283251881Speter
284251881Speter
285251881Speter      2. Zlib  (REQUIRED)
286251881Speter
287251881Speter         Subversion's binary-differencing engine depends on zlib for
288251881Speter         compression.   Most Unix systems have libz pre-installed, but
289251881Speter         if you need it, you can get it from
290251881Speter
291251881Speter            http://www.zlib.net
292251881Speter
293251881Speter
294251881Speter      3.  autoconf 2.59 or newer (Unix only)
295251881Speter
296251881Speter      This is required only if you plan to build from the latest source
297251881Speter      (see section II.B). Generally only developers would be doing this.
298251881Speter
299251881Speter
300251881Speter      4.  libtool 1.4 or newer (Unix only)
301251881Speter
302251881Speter      This is required only if you plan to build from the latest source
303251881Speter      (see section II.B).
304251881Speter
305251881Speter      Note: Some systems (Solaris, for example) require libtool 1.4.3 or
306251881Speter      newer. The autogen.sh script knows about that.
307251881Speter
308251881Speter
309251881Speter      5.  Serf library 1.2.1 or newer (OPTIONAL)
310251881Speter
311251881Speter      If you want your client to be able to speak to an Apache
312251881Speter      server (via a http:// or https:// URL), you must link against
313251881Speter      serf.  Though optional, we strongly recommend this.
314251881Speter
315251881Speter      In order to use ra_serf, you must install serf, and run Subversion's
316251881Speter      ./configure with the argument --with-serf.  If serf is installed in a
317251881Speter      non-standard place, you should use
318251881Speter
319251881Speter               --with-serf=/path/to/serf/install
320251881Speter
321251881Speter      instead.
322251881Speter
323251881Speter      Serf can be obtained via your system's package distribution
324251881Speter      system or directly from http://code.google.com/p/serf/.
325251881Speter
326251881Speter      For more information on serf and Subversion's ra_serf, see the file
327251881Speter      subversion/libsvn_ra_serf/README.
328251881Speter
329251881Speter      6. OpenSSL  (OPTIONAL)
330251881Speter
331251881Speter      ### needs some updates. I think serf automagically handles
332251881Speter      ### finding OpenSSL, but we may need more docco here. and w.r.t
333251881Speter      ### zlib.
334251881Speter
335251881Speter      The Serf library has support for SSL encryption by relying on the
336251881Speter      OpenSSL library.
337251881Speter
338251881Speter        a. Using OpenSSL on the client through Serf
339251881Speter
340251881Speter          On Unix systems, to build Serf with OpenSSL, you need OpenSSL
341251881Speter          installed on your system, and you must add "--with-ssl" as a
342251881Speter          "./configure" parameter.  If your OpenSSL installation is hard
343251881Speter          for Serf to find, you may need to use "--with-libs=/path/to/lib"
344251881Speter          in addition.  In particular, on Red Hat (but not Fedora Core) it
345251881Speter          is necessary to specify "--with-libs=/usr/kerberos" for OpenSSL
346251881Speter          to be found.  You can also specify a path to the zlib library
347251881Speter          using "--with-libs".
348251881Speter
349251881Speter          Under Windows, you can specify the paths to these libraries by
350251881Speter          passing the options --with-zlib and --with-openssl to gen-make.py.
351251881Speter
352251881Speter            ### Is that right? In-tree build of Neon was disabled in r875974.
353251881Speter                This may now apply to Serf, or else gen-make.py should be
354251881Speter                updated to remove such options.
355251881Speter
356251881Speter        c. Using OpenSSL on the Apache server
357251881Speter
358251881Speter          You can also add support for these features to an Apache httpd
359251881Speter          server to be used for Subversion using the same support libraries.
360251881Speter          The Subversion build system will not provide them, however.  You
361251881Speter          add them by specifying parameters to the "./configure" script of
362251881Speter          the Apache Server instead.
363251881Speter
364251881Speter          For getting SSL on your server, you would add the "--enable-ssl"
365251881Speter          or "--with-ssl=/path/to/lib" option to Apache's "./configure"
366251881Speter          script.  Apache enables zlib support by default, but you can
367251881Speter          specify a nonstandard location for the library with the
368251881Speter          "--with-z=/path/to/dir" option.  Consult the Apache documentation
369251881Speter          for more details, and for other modules you may wish to install
370251881Speter          to enhance your Subversion server.
371251881Speter
372251881Speter      If you don't already have it, you can get a copy of OpenSSL,
373251881Speter      including instructions for building and packaging on both Unix
374251881Speter      systems and Windows, at:
375251881Speter
376251881Speter          http://www.openssl.org/
377251881Speter
378251881Speter
379251881Speter      7.  Berkeley DB 4.X  (OPTIONAL)
380251881Speter
381251881Speter      Berkeley DB is needed to build a Subversion server that supports
382251881Speter      the BDB repository filesystem, or to access a BDB repository on
383251881Speter      local disk.  If you will only use the FSFS repository filesystem,
384251881Speter      or if you are building a Subversion client that will only speak
385251881Speter      to remote (networked) repositories, you don't need it.
386251881Speter
387251881Speter      The current recommended version is 4.4.20 or newer, which brings
388251881Speter      auto-recovery functionality to the Berkeley DB database
389251881Speter      environment.
390251881Speter
391251881Speter      If you must use an older version of Berkeley DB, we *strongly*
392251881Speter      recommend using 4.3 or 4.2 over the 4.1 or 4.0 versions.  Not
393251881Speter      only are these significantly faster and more stable, but they
394251881Speter      also enable Subversion repositories to automatically clean up
395251881Speter      database journal files to save disk space.
396251881Speter
397251881Speter      You'll need Berkeley DB installed on your system.  You can
398251881Speter      get it from:
399251881Speter
400251881Speter      http://www.oracle.com/technology/software/products/berkeley-db/index.html
401251881Speter
402251881Speter      If you have Berkeley DB installed in a place not searched by default
403251881Speter      for includes and libraries, add something like this:
404251881Speter
405251881Speter          --with-berkeley-db=db.h:/usr/local/include/db4.7:/usr/local/lib/db4.7:db-4.7
406251881Speter
407251881Speter      to your `configure' switches, and the build process will use the
408251881Speter      Berkeley DB header and library in the named directories.  You may
409251881Speter      need to use a different path, of course.  Note that in order for
410251881Speter      the detection to succeed, the dynamic linker must be able to find
411251881Speter      the libraries at configure time.
412251881Speter
413251881Speter      If you are on the Windows platform and want to build Subversion,
414251881Speter      a precompiled version of the Berkeley DB library is available for
415251881Speter      download at the Subversion web site "Documents & files" area:
416251881Speter
417251881Speter          http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688
418251881Speter
419251881Speter      Look in the "Releases > Windows > Windows BDB" section.
420251881Speter
421251881Speter
422251881Speter      8.  Cyrus SASL library (OPTIONAL)
423251881Speter
424251881Speter      If the Simple Authentication and Security Layer (SASL) library
425251881Speter      is detected on your system, then the Subversion client and
426251881Speter      svnserve server can utilize its abilities for various forms of
427251881Speter      authentication.  To learn more about SASL or to get the source
428251881Speter      code, visit:
429251881Speter
430251881Speter         http://freshmeat.net/projects/cyrussasl/
431251881Speter
432251881Speter
433251881Speter      9.  Apache Web Server 2.X  (OPTIONAL)
434251881Speter
435251881Speter          (http://httpd.apache.org/download.cgi)
436251881Speter
437251881Speter      The Apache httpd server is one of two methods to make your Subversion
438251881Speter      repository available over a network - the other is a custom server
439251881Speter      program called svnserve, which requires no extra software packages.
440251881Speter      Building Subversion, the Apache server, and the modules that Apache
441251881Speter      needs to communicate with Subversion are complicated enough that there
442251881Speter      is a whole section at the end of this document that describes how it
443251881Speter      is done: See section III for details.
444251881Speter
445251881Speter
446251881Speter      10.  Python 2.5 or newer (http://www.python.org/)  (OPTIONAL)
447251881Speter
448251881Speter      If you want to run "make check" or build from the latest source
449251881Speter      under Unix as described in section II.B and III.D, install
450251881Speter      Python 2.5 or higher on your system. The majority of the test
451251881Speter      suite is written in Python, as is part of Subversion's build
452251881Speter      system.
453251881Speter
454251881Speter
455251881Speter      11. Perl 5.8 or newer (Windows only)  (OPTIONAL)
456251881Speter
457251881Speter      To build Subversion under any of the MS Windows platforms, you
458251881Speter      will also need Perl 5.8 or newer to run apr-util's w32locatedb.pl
459251881Speter      script.
460251881Speter
461251881Speter
462251881Speter      12. MASM 6 or newer (Windows only, OPTIONAL)
463251881Speter
464251881Speter      The Windows build scripts for Subversion can use the Microsoft
465251881Speter      Macro Assembler (MASM) to build an optimized version of the ZLib
466251881Speter      library. Make sure that the version of MASM you use is compatible
467251881Speter      with the C compiler. If you're using MSVC 6, and don't have MASM 6,
468251881Speter      a free MASM-compatible assembler is available here:
469251881Speter
470251881Speter          http://www.masm32.com/
471251881Speter
472251881Speter      You only need ML.EXE and ML.ERR from this distribution.
473251881Speter
474251881Speter      The VS.NET installation already contains MASM (but note, that
475251881Speter      version if MASM is not compatible with MSVC 6).
476251881Speter
477251881Speter
478251881Speter      13. SQLite  (REQUIRED)
479251881Speter
480262253Speter      Subversion 1.8 requires SQLite version 3.7.12 or above.  You can meet
481251881Speter      this dependency several ways:
482251881Speter        * Use an SQLite amalgamation file.
483251881Speter        * Specify an SQLite installation to use.
484251881Speter        * Let Subversion find an installed SQLite.
485251881Speter
486251881Speter      To use an SQLite-provided amalgamation, just drop sqlite3.c into
487251881Speter      Subversion's sqlite-amalgamation/ directory, or point to it with the
488251881Speter      --with-sqlite configure option.  This file also ships with the Subversion
489251881Speter      dependencies distribution, or you can download it from SQLite:
490251881Speter
491251881Speter          http://www.sqlite.org/download.html
492251881Speter
493251881Speter
494251881Speter      14. pkg-config  (Unix only, OPTIONAL)
495251881Speter
496251881Speter      Subversion uses pkg-config to find appropriate options used
497251881Speter      at build time.
498251881Speter
499251881Speter
500251881Speter      15. D-Bus  (Unix only, OPTIONAL)
501251881Speter
502251881Speter      D-Bus is a message bus system. D-Bus is required for support for KWallet
503251881Speter      and GNOME Keyring. pkg-config is needed to find D-Bus headers and library.
504251881Speter
505251881Speter
506251881Speter      16. Qt 4  (Unix only, OPTIONAL)
507251881Speter
508251881Speter      Qt is a cross-platform application framework. QtCore, QtDBus and QtGui
509251881Speter      modules are required for support for KWallet. pkg-config is needed
510251881Speter      to find Qt headers and libraries.
511251881Speter
512251881Speter
513251881Speter      17. KDELibs 4  (Unix only, OPTIONAL)
514251881Speter
515251881Speter      Subversion contains optional support for storing passwords in KWallet.
516251881Speter      KDELibs contains core KDE libraries. Subversion uses libkdecore and libkdeui
517251881Speter      libraries when support for KWallet is enabled. kde4-config is used to get
518251881Speter      some necessary options. pkg-config, D-Bus and Qt 4 are also required.
519251881Speter      If you want to build support for KWallet, then pass the '--with-kwallet'
520251881Speter      option to `configure`. If KDE is installed in a non-standard prefix, then
521251881Speter      use:
522251881Speter
523251881Speter          --with-kwallet=/path/to/KDE/prefix
524251881Speter
525251881Speter      18. GLib 2  (Unix only, OPTIONAL)
526251881Speter
527251881Speter      GLib is a general-purpose utility library. GLib is required for support
528251881Speter      for GNOME Keyring. pkg-config is needed to find GLib headers and library.
529251881Speter
530251881Speter
531251881Speter      19. GNOME Keyring  (Unix only, OPTIONAL)
532251881Speter
533251881Speter      Subversion contains optional support for storing passwords in GNOME Keyring.
534251881Speter      pkg-config is needed to find GNOME Keyring headers and library. D-Bus and
535251881Speter      GLib are also required. If you want to build support for GNOME Keyring,
536251881Speter      then pass the '--with-gnome-keyring' option to `configure`.
537251881Speter
538251881Speter
539251881Speter      20. Ctypesgen  (OPTIONAL)
540251881Speter
541251881Speter      Ctypesgen is Python wrapper generator for ctypes. It is used to generate
542251881Speter      a part of Subversion Ctypes Python bindings (CSVN). If you want to build
543251881Speter      CSVN, then pass the '--with-ctypesgen' option to `configure`. If ctypesgen.py
544251881Speter      is installed in a non-standard place, then use:
545251881Speter
546251881Speter          --with-ctypesgen=/path/to/ctypesgen.py
547251881Speter
548251881Speter      For more information on CSVN, see subversion/bindings/ctypes-python/README.
549251881Speter
550251881Speter      21. libmagic (OPTIONAL)
551251881Speter
552251881Speter      Subversion's configure script attempts to find libmagic automatically.
553251881Speter      If it is installed in a non-standard location, then use:
554251881Speter
555251881Speter        --with-libmagic=/path/to/libmagic/prefix
556251881Speter
557251881Speter      The files include/magic.h and lib/libmagic.so.1.0 (or similar)
558251881Speter      are expected beneath this prefix directory. If they cannot be
559251881Speter      found Subversion will be compiled without support for libmagic.
560251881Speter
561251881Speter      If libmagic is installed but support for it should not be compiled
562251881Speter      in, then use:
563251881Speter      
564251881Speter        --with-libmagic=no
565251881Speter
566251881Speter      If configure should fail when libmagic is not present, but only
567251881Speter      the default locations should be searched, then use:
568251881Speter
569251881Speter        --with-libmagic
570251881Speter
571251881Speter  D. Documentation
572251881Speter
573251881Speter      The primary documentation for Subversion is the free book
574251881Speter      "Version Control with Subversion", a.k.a. "The Subversion Book",
575251881Speter      obtainable from http://svnbook.red-bean.com/.
576251881Speter
577251881Speter      Various additional documentation exists in the doc/ subdirectory of
578251881Speter      the Subversion source.  See the file doc/README for more information.
579251881Speter
580251881Speter
581251881Speter
582251881SpeterII.   INSTALLATION
583251881Speter      ============
584251881Speter
585251881Speter  A.  Building from a Tarball or RPM
586251881Speter      ------------------------------
587251881Speter
588251881Speter      1.  Building from a Tarball
589251881Speter
590251881Speter      Download the most recent distribution tarball from:
591251881Speter
592251881Speter          http://subversion.apache.org/download/
593251881Speter
594251881Speter      Unpack it, and use the standard GNU procedure to compile:
595251881Speter
596251881Speter          $ ./configure
597251881Speter          $ make
598251881Speter          # make install
599251881Speter
600251881Speter      You can also run the full test suite by running 'make check'.
601251881Speter
602251881Speter
603251881Speter      2.  Building from an RPM
604251881Speter
605251881Speter      If you are using Linux (or any OS that can use RPM) then another
606251881Speter      possibility is to download the binary RPM from the
607251881Speter      http://summersoft.fay.ar.us/pub/subversion directory.
608251881Speter
609251881Speter      Currently only Linux on the i386 platform is supported
610251881Speter      using this method.  You might also require additional RPMS
611251881Speter      (which can be found in the above mentioned directory) to use the
612251881Speter      subversion RPM depending on what packages you already have installed:
613251881Speter
614251881Speter          subversion*.i386.rpm
615251881Speter          apache*.i386.rpm (Version 2.0.49 or greater)
616251881Speter          db*.i386.rpm     (Version 4.0.14 or greater; version 4.3.27 or
617251881Speter                            4.2.52 is preferred however)
618251881Speter          expat            (Comes with RedHat)
619251881Speter
620251881Speter      After downloading, install it (as root user):
621251881Speter
622251881Speter          # rpm -ivh subversion*.386.rpm (add other packages as necessary)
623251881Speter
624251881Speter      Note: For an easy way to generate a new version of the RPM
625251881Speter      source and binary package from the latest source code you
626251881Speter      just checked out, see the packages/rpm/README file for a
627251881Speter      one-line build procedure.
628251881Speter
629251881Speter
630251881Speter  B.  Building the Latest Source under Unix
631251881Speter      -------------------------------------
632251881Speter
633251881Speter      These instructions assume you have already installed Subversion
634251881Speter      and checked out a working copy of Subversion's own code --
635251881Speter      either the latest /trunk code, or some branch or tag.  You also
636251881Speter      need to have already installed whatever prerequisites that
637251881Speter      version of Subversion requires (if you haven't, the ./configure
638251881Speter      step should complain).
639251881Speter
640251881Speter      You can discard the directory created by the tarball; you're
641251881Speter      about to build the latest, greatest Subversion client.  This is
642251881Speter      the procedure Subversion developers use.
643251881Speter
644251881Speter      First off, if you have any Subversion libraries lying around
645251881Speter      from previous 'make installs', clean them up first!
646251881Speter
647251881Speter          # rm -f /usr/local/lib/libsvn*
648251881Speter          # rm -f /usr/local/lib/libapr*
649251881Speter          # rm -f /usr/local/lib/libexpat*
650251881Speter          # rm -f /usr/local/lib/libserf*
651251881Speter
652251881Speter      Start the process by running "autogen.sh":
653251881Speter
654251881Speter          $ sh ./autogen.sh
655251881Speter
656251881Speter      This script will make sure you have all the necessary components
657251881Speter      available to build Subversion.  If any are missing, you will be
658251881Speter      told where to get them from.  (See the 'Build Requirements' in
659251881Speter      section I.)
660251881Speter
661251881Speter      Note: if the command "autoconf" on your machine does not run
662251881Speter      autoconf 2.59 or later, but you do have a new enough autoconf
663251881Speter      available, then you can specify the correct one with the
664251881Speter      AUTOCONF variable.  (The AUTOHEADER variable is similar.)  This
665251881Speter      may be required on Debian GNU/Linux, where "autoconf" is
666251881Speter      actually a Perl script that attempts to guess which version is
667251881Speter      required -- because of the interaction between Subversion's and
668251881Speter      APR's configuration systems, the Perl script may get it wrong.
669251881Speter      So for example, you might need to do:
670251881Speter
671251881Speter          $ AUTOCONF=autoconf2.59 sh ./autogen.sh
672251881Speter
673251881Speter      Once you've prepared the working copy by running autogen.sh,
674251881Speter      just follow the usual configuration and build procedure:
675251881Speter
676251881Speter          $ ./configure
677251881Speter          $ make
678251881Speter          # make install
679251881Speter
680251881Speter      (Optionally, you might want to pass --enable-maintainer-mode to
681251881Speter      the ./configure script.  This enables debugging symbols in your
682251881Speter      binaries (among other things) and most Subversion developers use it.)
683251881Speter
684251881Speter      Since the resulting binary depends on shared libraries, the
685251881Speter      destination library directory must be identified in your
686251881Speter      operating system's library search path. That is in either
687251881Speter      /etc/ld.so.conf or $LD_LIBRARY_PATH for Linux systems and in
688251881Speter      /etc/rc.conf for FreeBSD, followed by a run of the 'ldconfig'
689251881Speter      program. Check your system documentation for details. By
690251881Speter      identifying the destination directory, Subversion will be able
691251881Speter      to dynamically load repository access plugins.  If you try to do
692251881Speter      a checkout and see an error like:
693251881Speter
694251881Speter      subversion/libsvn_ra/ra_loader.c:209: (apr_err=170000)
695251881Speter      svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/subversion/trunk'
696251881Speter
697251881Speter      It probably means that the dynamic loader/linker can't find all
698251881Speter      of the libsvn_* libraries.
699251881Speter
700251881Speter
701251881Speter  C.  Building under Unix in Different Directories
702251881Speter      --------------------------------------------
703251881Speter
704251881Speter      It is possible to configure and build Subversion on Unix in a
705251881Speter      directory other than the working copy. For example
706251881Speter
707251881Speter          $ svn co https://svn.apache.org/repos/asf/subversion/trunk svn
708251881Speter          $ cd svn
709251881Speter          $ # get SQLite amalgamation if required
710251881Speter          $ chmod +x autogen.sh
711251881Speter          $ ./autogen.sh
712251881Speter          $ mkdir ../obj
713251881Speter          $ cd ../obj
714251881Speter          $ ../svn/configure [...with options as appropriate...]
715251881Speter          $ make
716251881Speter
717251881Speter      puts the Subversion working copy in the directory svn and builds
718251881Speter      it in a separate, parallel directory obj.
719251881Speter
720251881Speter      Why would you want to do this? Well there are a number of
721251881Speter      reasons...
722251881Speter
723251881Speter          *  You may prefer to avoid "polluting" the working copy with
724251881Speter             files generated during the build.
725251881Speter
726251881Speter          *  You may want to put the build directory and the working
727251881Speter             copy on different physical disks to improve performance.
728251881Speter
729251881Speter          *  You may want to separate source and object code and only
730251881Speter             backup the source.
731251881Speter
732251881Speter          *  You may want to remote mount the working copy on multiple
733251881Speter             machines, and build for different machines from the same
734251881Speter             working copy.
735251881Speter
736251881Speter          *  You may want to build multiple configurations from the
737251881Speter             same working copy.
738251881Speter
739251881Speter      The last reason above is possibly the most useful.  For instance
740251881Speter      you can have separate debug and optimized builds each using the
741251881Speter      same working copy. Or you may want a client-only build and a
742251881Speter      client-server build. Using multiple build directories you can
743251881Speter      rebuild any or all configurations after an edit without the need
744251881Speter      to either clean and reconfigure, or identify and copy changes
745251881Speter      into another working copy.
746251881Speter
747251881Speter
748251881Speter  D.  Installing from a Zip or Installer File under Windows
749251881Speter      --------------------------------------------------------
750251881Speter
751251881Speter      Of all the ways of getting a Subversion client, this is the
752251881Speter      easiest.  Download a Zip (*.zip) or self-extracting installer
753251881Speter      (*-setup.exe) file from:
754251881Speter
755251881Speter      http://subversion.apache.org/packages#windows
756251881Speter
757251881Speter      For a Zip file, run your unzipping utility (WinZIP, ZipGenius,
758251881Speter      UltimateZIP, FreeZIP, whatever) and extract the DLLs and EXEs to
759251881Speter      a directory of your choice. Included in the download is the SVN
760251881Speter      client, the SVNADMIN administration tool, and the SVNLOOK
761251881Speter      reporting tool.
762251881Speter
763251881Speter      Note that if you need support for non-English locales you'll have
764251881Speter      to set the APR_ICONV_PATH environment variable to the path of the
765251881Speter      iconv directory in the folder that contains the Subversion install.
766251881Speter
767251881Speter      You may also want to add the bin directory in the Subversion folder
768251881Speter      to your PATH environment variable so as to not have to use the full
769251881Speter      path when running Subversion commands.
770251881Speter
771251881Speter      To test the installation, open a DOS box (run either "cmd" or
772251881Speter      "command" from the Start menu's "Run..." menu option), change to
773251881Speter      the directory you installed the executables into, and run:
774251881Speter
775251881Speter          C:\test>svn co https://svn.apache.org/repos/asf/subversion/trunk svn
776251881Speter
777251881Speter      This will get the latest Subversion sources and put them into the
778251881Speter      "svn" subdirectory.
779251881Speter
780251881Speter      If using a self-extracting .exe file, just run it instead of
781251881Speter      unzipping it, to install Subversion.
782251881Speter
783251881Speter  E.  Building the Latest Source under Windows
784251881Speter      ----------------------------------------
785251881Speter
786251881Speter  E.1 Prerequisites
787251881Speter
788251881Speter      * Visual Studio 6 and service pack. It can be built with later versions
789251881Speter        of Visual Studio (Visual Studio.NET 2002, 2003, 2005, 2008 and Visual
790251881Speter        C++ Express 2005, 2008) but these instructions assume VS6.
791251881Speter      * A recent Windows SDK. (Not needed with Visual Studio 2005 and later)
792251881Speter        If you are using Visual Studio 6, you need the latest SDK which
793251881Speter        is compatible with VC6, which is the one from february 2003.
794251881Speter        You can get it from MSDN:
795251881Speter        http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
796251881Speter      * Python 2.5 or higher, downloaded from http://www.python.org/ which is
797251881Speter        used to generate the project files.
798251881Speter      * Perl 5.8 or higher from http://www.activestate.com/
799251881Speter      * Awk (from http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe) is
800251881Speter        needed to compile Apache or APR.  Note that this is the actual awk
801251881Speter        program, not an installer - just rename it to awk.exe and it is
802251881Speter        ready to use.
803251881Speter      * Apache apr, apr-util, and optionally apr-iconv libraries, version
804251881Speter        0.9.12 or later. Included in both the Subversion dependencies ZIP file
805251881Speter        and the Apache 2 source zip.  If you are building from a Subversion
806251881Speter        checkout and have not downloaded Apache 2, then get these 3 libraries
807251881Speter        from http://www.apache.org/dist/apr/.
808251881Speter      * ZLib 1.2 or higher is required and is included in the Subversion
809251881Speter        dependencies zip file or can be obtained from http://www.zlib.org
810251881Speter      * Either a Subversion client binary from http://subversion.apache.org/ to
811251881Speter        do the initial checkout of the Subversion source or the zip file
812251881Speter        source distribution. See the section "Bootstrapping from a Zip or
813251881Speter        Installer File under Windows" above for more.
814251881Speter      * A means of unpacking the files, e.g., WinZIP or similar.
815251881Speter
816251881Speter      Additional Options
817251881Speter
818251881Speter      * [Optional] Apache 2 source, downloaded from
819251881Speter        http://httpd.apache.org/download.cgi, these instructions assume
820251881Speter        version 2.0.58.  This is only needed for building the Subversion
821251881Speter        server Apache modules.  Note that although Subversion will compile
822251881Speter        against Apache 2.2.3 and APR 1.2.7, there is a bug that causes
823251881Speter        runtime failures with Subversion on Windows.  The fix is included in
824251881Speter        APR 1.2.8 and will be bundled in the next HTTP Server release
825251881Speter        (likely to be 2.2.4).
826251881Speter      * [Optional] Apache 2 msi install file, also from
827251881Speter        http://httpd.apache.org/download.cgi (required for running the
828251881Speter        tests).  Only needed for testing the server dso modules and if
829251881Speter        you are using Visual Studio 6.
830251881Speter        Note that if you are not using Visual Studio 6 (and you want to
831251881Speter        run and test the server modules) then you must rebuild Apache
832251881Speter        from source -- do not use the stock MSI since mixing C runtime
833251881Speter        libraries is not supported.
834251881Speter      * [Optional] Berkeley DB for backend support of the server
835251881Speter        components -- versions 4.3.27 and 4.4.20 are available from
836251881Speter        http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688
837251881Speter        as db-4.3.27-win32.zip and db-4.4.20-win32.zip.
838251881Speter        For more information see Section I.5.
839251881Speter      * [Optional] Openssl 0.9.7f or higher can be obtained from
840251881Speter        http://www.openssl.org/source/openssl-0.9.7f.tar.gz
841251881Speter      * [Optional] A modified version of GNU libintl, called
842251881Speter        svn-win32-libintl.zip, can be used for displaying localized
843251881Speter        messages. Available at:
844251881Speter        http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627
845251881Speter      * [Optional] GNU gettext for generating message catalog (.mo)
846251881Speter        files from message translations. You can get the latest
847251881Speter        binaries from http://gnuwin32.sourceforge.net/. You'll need the
848251881Speter        binaries (gettext-0.14.1-bin.zip) and dependencies
849251881Speter        (gettext-0.14.1-dep.zip).
850251881Speter      * [Optional] An assembler, e.g., MASM32 from http://www.masm32.com/
851251881Speter        or nasm which is available from
852251881Speter        http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
853251881Speter
854251881Speter  E.2 Notes
855251881Speter
856251881Speter      The Serf library supports secure connections with OpenSSL and
857251881Speter      on-the-wire compression with zlib. If you want to use the
858251881Speter      secure connections feature, you should pass the option
859251881Speter      "--with-openssl" to the gen-make.py script. See Section I.11 for
860251881Speter      more details.
861251881Speter
862251881Speter  E.3 Preparation
863251881Speter
864251881Speter      This section describes how to unpack the files to make a build tree.
865251881Speter
866251881Speter      * Make a directory SVN and cd into it.
867251881Speter      * Either checkout Subversion:
868251881Speter
869251881Speter          svn co https://svn.apache.org/repos/asf/subversion/trunk src-trunk
870251881Speter
871251881Speter        or unpack the zip file distribution and rename the directory to
872251881Speter        src-trunk.
873251881Speter
874251881Speter      * Install Visual Studio Environment. You either have to tell the
875251881Speter        installer to register environment variables or run VCVARS32.BAT
876251881Speter        before building anything.  If you are using a newer Visual Studio,
877251881Speter        use the 'Visual Studio 200x Command Prompt' on the Start menu.
878251881Speter      * Install and register a recent Windows Core SDK if you are using
879251881Speter        Visual Studio 6. This is a quote from the Microsoft February 2003
880251881Speter        SDK documentation:
881251881Speter
882251881Speter       "To register the SDK bin, include, and library directories with
883251881Speter        Microsoft Visual Studio�� version 6.0 and Visual Studio .NET,
884251881Speter        click Start, point to All Programs, point to Microsoft Platform
885251881Speter        SDK February 2003, point to Visual Studio Registration, and then
886251881Speter        click Register PSDK Directories with Visual Studio. This
887251881Speter        registration process places the SDK bin, include, and library
888251881Speter        directories at the beginning of the search paths, which ensures
889251881Speter        that the latest headers and libraries are used when building
890251881Speter        applications in the IDE. Note that for Visual Studio 6.0
891251881Speter        integration to succeed, Visual Studio 6.0 must run at least once
892251881Speter        before you select Register PSDK Directories with Visual
893251881Speter        Studio. Also note that when this option is run, the IDEs should
894251881Speter        not be running."
895251881Speter
896251881Speter      * Install Python and add it to your path
897251881Speter      * Install Perl (it should add itself to the path)
898251881Speter      * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add
899251881Speter        the directory containing it (e.g. SVN\awk) to the path.
900251881Speter      * Install Apache 2 using the msi file if you are going to test the
901251881Speter        server dso modules and are using Visual Studio 6.  You must build
902251881Speter        and install it from source if you are not using Visual Studio 6 and
903251881Speter        want to build and/or test the server modules.
904251881Speter      * If you checked out Subversion from the repository then install the serf
905251881Speter        sources into SVN\src-trunk\serf.
906251881Speter      * If you want BDB backend support, extract the Berkeley DB files
907251881Speter        into SVN\src-trunk\db4-win32. It's a good idea to add
908251881Speter        SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find
909251881Speter        the Berkeley DB DLLs.
910251881Speter
911251881Speter        [NOTE: This binary package of Berkeley DB is provided for
912251881Speter            convenience only. Please don't address questions about
913251881Speter            Berkeley DB that aren't directly related to using Subversion
914251881Speter            to the project mailing list.]
915251881Speter
916251881Speter        If you build Berkeley DB from the source, you will have to copy
917251881Speter        the file db-x.x.x\build_win32\db.h to
918251881Speter        SVN\src-trunk\db4-win32\include, and all the import libraries to
919251881Speter        SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in
920251881Speter        your path.
921251881Speter
922251881Speter      * If you want to build the server modules, extract Apache source into
923251881Speter        SVN\httpd-2.x.x.
924251881Speter      * If you are building from a checkout of Subversion, and you are NOT
925251881Speter        building Apache, then you will need the APR libraries.  Depending
926251881Speter        on how you got your version of APR, either:
927251881Speter          - Extract the APR, APR-util and APR-iconv source distributions into
928251881Speter            SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively.
929251881Speter        Or:
930251881Speter          - Extract the apr, apr-util and apr-iconv directories from the
931251881Speter            srclib folder in the Apache httpd source into SVN\apr,
932251881Speter            SVN\apr-util, and SVN\apr-iconv respectively.
933251881Speter      * Extract the ZLib sources into SVN\zlib if you are not using the zlib
934251881Speter        included in the dependencies zip file.
935251881Speter      * If you want secure connection (https) client support, extract openssl
936251881Speter        into SVN\openssl-x.x.x
937251881Speter      * If you want localized message support, extract svn-win32-libintl.zip
938251881Speter        into SVN\svn-win32-libintl and extract gettext-x.x.x-bin.zip and
939251881Speter        gettext-x.x.x-dep.zip into SVN\gettext-x.x.x-bin.
940251881Speter        Add SVN\gettext-x.x.x-bin\bin to your path.
941251881Speter      * [Optional] Extract MASM32 (only the ML.EXE and ML.ERR files) into
942251881Speter        SVN\asm (or extract nasm into SVN\asm) and put it in your path.
943251881Speter
944251881Speter  E.4 Building the Binaries
945251881Speter
946251881Speter      To build the binaries either follow the instructions here or use
947251881Speter      build\win32\vc6-build.bat.in after editing its default paths to match
948251881Speter      yours and saving it as vc6-build.bat.  The vc6-build.bat does a full build
949251881Speter      using all options so it requires Apache 2 source and the other optional
950251881Speter      components.
951251881Speter
952251881Speter      Start in the SVN directory you created.
953251881Speter
954251881Speter      Set up the environment (commands should be one line even if wrapped here).
955251881Speter
956251881Speter      C:>set VER=trunk
957251881Speter      C:>set DIR=trunk
958251881Speter      C:>set DRIVE=C
959251881Speter      C:>set PYTHONDIR=C:\Python22
960251881Speter      C:>set AWKDIR=C:\SVN\Awk
961251881Speter      C:>set ASMDIR=C:\SVN\asm
962251881Speter      C:>set SDKINC=C:\Program Files\Microsoft SDK\include
963251881Speter      C:>set SDKLIB=C:\Program Files\Microsoft SDK\lib
964251881Speter      C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin
965251881Speter      C:>PATH=%PATH%;%DRIVE%:\SVN\src-%DIR%\db4-win32;%ASMDIR%;
966251881Speter              %PYTHONDIR%;%AWKDIR%;%GETTEXTBIN%
967251881Speter      C:>set INCLUDE=%SDKINC%;%INCLUDE%
968251881Speter      C:>set LIB=%SDKLIB%;%LIB%
969251881Speter
970251881Speter      OpenSSL
971251881Speter
972251881Speter      C:>cd openssl-0.9.7f
973251881Speter      C:>perl Configure VC-WIN32
974251881Speter  [*] C:>call ms\do_masm
975251881Speter      C:>nmake -f ms\ntdll.mak
976251881Speter      C:>cd out32dll
977251881Speter      C:>call ..\ms\test
978251881Speter      C:>cd ..\..
979251881Speter
980251881Speter      *Note: Use "call ms\do_nasm" if you have nasm instead of MASM, or
981251881Speter             "call ms\do_ms" if you don't have an assembler.
982251881Speter
983251881Speter      Apache 2
984251881Speter
985251881Speter      This step is only required for building the server dso modules.
986251881Speter
987251881Speter      The Subversion gen-make.py script must be run before building Apache or
988251881Speter      Apache and Subversion will be running incompatible versions of apr.
989251881Speter
990251881Speter      C:>cd src-%DIR%
991251881Speter      C:>python gen-make.py -t dsp --with-httpd=..\httpd-2.0.58
992251881Speter         --with-berkeley-db=db4-win32 --with-openssl=..\openssl-0.9.7f
993251881Speter         --with-zlib=..\zlib --with-libintl=..\svn-win32-libintl
994251881Speter      C:>cd ..
995251881Speter      C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2
996251881Speter      C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release"
997251881Speter
998251881Speter      Subversion
999251881Speter
1000251881Speter      Things to note:
1001251881Speter
1002251881Speter      * If you don't want to build mod_dav_svn, omit the --with-httpd
1003251881Speter        option.  The zip file source distribution contains apr, apr-util and
1004251881Speter        apr-iconv in the default build location. If you have downloaded the
1005251881Speter        apr files yourself you will have to tell the generator where to find
1006251881Speter        the APR libraries; the options are --with-apr, --with-apr-util and
1007251881Speter        --with-apr-iconv.
1008251881Speter      * If you would like a debug build substitute Debug for Release in
1009251881Speter        the msdev commands.
1010251881Speter      * There have been rumors that Subversion on Win32 can be built
1011251881Speter        using the latest cygwin, you probably don't want the zip file source
1012251881Speter        distribution though. ymmv.
1013251881Speter      * The /USEENV switch to msdev makes it take notice of the INCLUDE and
1014251881Speter        LIB environment variables, it also makes it ignore its own lib and
1015251881Speter        include settings so you need to have the Windows SDK lib and include
1016251881Speter        directories in the LIB and INCLUDE environment variables.  Do *not*
1017251881Speter        use this switch when starting up the msdev Visual environment.  If you
1018251881Speter        wish to build in the Visual environment the SDK lib and include
1019251881Speter        directories must be in the Tools/Options/Directories settings (if you
1020251881Speter        followed the 'Register the SDK with Visual Studio 6' instructions
1021251881Speter        above this has been done for you).
1022251881Speter      * If you are using Visual Studio .NET change -t dsw into -t vcproj and
1023251881Speter        add the --vsnet-version=200x option on the gen-make.py command.
1024251881Speter        In this case you will also have to distribute the C runtime dll with
1025251881Speter        the binaries.  Also, since Apache/APR do not provide .vcproj files,
1026251881Speter        you will need to convert the Apache/APR .dsp files to .vcproj files
1027251881Speter        with Visual Studio before building -- just open the Apache .dsw file
1028251881Speter        and answer 'Yes To All' when the conversion dialog pops up, or you
1029251881Speter        can open the individual .dsp files and convert them one at a time.
1030251881Speter        The Apache/APR projects required by Subversion are:
1031251881Speter        apr-util\libaprutil.dsp, apr\libapr.dsp,
1032251881Speter        apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp,
1033251881Speter        apr-util\uri\gen_uri_delims.dsp (for APR 0.9.x),
1034251881Speter        apr-iconv\ccs\libapriconv_ccs_modules.dsp, and
1035251881Speter        apr-iconv\ces\libapriconv_ces_modules.dsp.
1036251881Speter      * If the server dso modules are being built and tested Apache must not
1037251881Speter        be running or the copy of the dso modules will fail.
1038251881Speter
1039251881Speter      C:>cd src-%DIR%
1040251881Speter
1041251881Speter      If Apache 2 has been built and the server modules are required then
1042251881Speter      gen-make.py will already have been run. If the source is from the zip
1043251881Speter      file, Apache 2 has not been built so gen-make.py must be run:
1044251881Speter
1045251881Speter      C:>python gen-make.py -t dsp --with-berkeley-db=db4-win32
1046251881Speter          --with-openssl=..\openssl-0.9.7f --with-zlib=..\zlib
1047251881Speter          --with-libintl=..\svn-win32-libintl
1048251881Speter
1049251881Speter      Then build subversion:
1050251881Speter
1051251881Speter      C:>msdev subversion_msvc.dsw /USEENV /MAKE "__ALL_TESTS__ - Win32 Release"
1052251881Speter      C:>cd ..
1053251881Speter
1054251881Speter      Or, with Visual C++.NET 2002, 2003, 2005:
1055251881Speter
1056251881Speter      C:>devenv subversion_vcnet.sln /build "Release" /project "__ALL_TESTS__"
1057251881Speter      C:>cd ..
1058251881Speter
1059251881Speter      Or, with Visual C++ Express 2005:
1060251881Speter
1061251881Speter      C:>msbuild subversion_vcnet.sln /t:__ALL_TESTS__ /p:Configuration=Release
1062251881Speter      C:>cd ..
1063251881Speter
1064251881Speter      The binaries have now been built.
1065251881Speter
1066251881Speter  E.5 Packaging the binaries
1067251881Speter
1068251881Speter      You now need to copy the binaries ready to make the release zip
1069251881Speter      file. You also need to do this to run the tests as the new binaries
1070251881Speter      need to be in your path. You can use the build/win32/make_dist.py
1071251881Speter      script in the Subversion source directory to do that.
1072251881Speter
1073251881Speter      [TBD: Describe how to do this. Note dependencies on zip, jar, doxygen.]
1074251881Speter
1075251881Speter  E.6 Testing the Binaries
1076251881Speter      [TBD: It's been a long, long while since it was necessary to move
1077251881Speter            binaries around for testing. win-tests.py does that automagically.
1078251881Speter            Fix this section accordingly, and probably reorder, putting
1079251881Speter            the packaging at the end.]
1080251881Speter
1081251881Speter      The build process creates the binary test programs but it does not
1082251881Speter      copy the client tests into the release test area.
1083251881Speter
1084251881Speter      C:>cd src-%DIR%
1085251881Speter      C:>mkdir Release\subversion\tests\cmdline
1086251881Speter      C:>xcopy /S /Y subversion\tests\cmdline Release\subversion\tests\cmdline
1087251881Speter
1088251881Speter      If the server dso modules  have been built then copy the dso files and
1089251881Speter      dlls into the Apache modules directory.
1090251881Speter
1091251881Speter      C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so "%APACHEDIR%"\modules
1092251881Speter      C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so
1093251881Speter         "%APACHEDIR%"\modules
1094251881Speter      C:>copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin"
1095251881Speter      C:>copy svn-win32-%VER%\bin\iconv.dll "%APACHEDIR%\bin"
1096251881Speter      C:>copy svn-win32-%VER%\bin\libdb42.dll "%APACHEDIR%\bin"
1097251881Speter      C:>cd ..
1098251881Speter
1099251881Speter      Put the svn-win32-trunk\bin directory at the start of your path so
1100251881Speter      you run the newly built binaries and not another version you might
1101251881Speter      have installed.
1102251881Speter
1103251881Speter      Then run the client tests:
1104251881Speter
1105251881Speter      C:>PATH=%DRIVE%:\SVN\svn-win32-%VER%\bin;%PATH%
1106251881Speter      C:>cd src-%DIR%
1107251881Speter      C:>python win-tests.py -c -r -v
1108251881Speter
1109251881Speter      If the server dso modules were built configure Apache to use the
1110251881Speter      mod_dav_svn and mod_authz_svn modules by making sure these lines appear
1111251881Speter      uncommented in httpd.conf:
1112251881Speter
1113251881Speter        LoadModule dav_module         modules/mod_dav.so
1114251881Speter        LoadModule dav_fs_module      modules/mod_dav_fs.so
1115251881Speter        LoadModule dav_svn_module     modules/mod_dav_svn.so
1116251881Speter        LoadModule authz_svn_module   modules/mod_authz_svn.so
1117251881Speter
1118251881Speter      And further down the file add location directives to point to the
1119251881Speter      test repositories. Change the paths to the SVN directory you created
1120251881Speter      (paths should be on one line even if wrapped here):
1121251881Speter
1122251881Speter        <Location /svn-test-work/repositories>
1123251881Speter         DAV svn
1124251881Speter         SVNParentPath C:/SVN/src-trunk/Release/subversion/tests/cmdline/
1125251881Speter                       svn-test-work/repositories
1126251881Speter        </Location>
1127251881Speter
1128251881Speter        <Location /svn-test-work/local_tmp/repos>
1129251881Speter         DAV svn
1130251881Speter         SVNPath c:/SVN/src-trunk/Release/subversion/tests/cmdline/
1131251881Speter                 svn-test-work/local_tmp/repos
1132251881Speter        </Location>
1133251881Speter
1134251881Speter      Then restart Apache and run the tests:
1135251881Speter
1136251881Speter      C:>python win-tests.py -c -r -v -u http://localhost
1137251881Speter      C:>cd ..
1138251881Speter
1139251881SpeterIII.  BUILDING A SUBVERSION SERVER
1140251881Speter      ============================
1141251881Speter
1142251881Speter      Subversion has two servers you can choose from:  svnserve and
1143251881Speter      Apache.  svnserve is a small, lightweight server program that is
1144251881Speter      automatically compiled when you build Subversion's source.  Apache
1145251881Speter      is a more heavyweight HTTP server, but tends to have more features.
1146251881Speter
1147251881Speter      This section primarily focuses on how to build Apache and the
1148251881Speter      accompanying mod_dav_svn server module for it.  If you plan to use
1149251881Speter      svnserve instead, jump right to section E for a quick explanation.
1150251881Speter
1151251881Speter
1152251881Speter  A.  Setting Up Apache
1153251881Speter      -----------------
1154251881Speter
1155251881Speter      (Following the BOOTSTRAPPING FROM RPM procedures above will install and
1156251881Speter      build the latest Subversion server for Linux RedHat 7.1, 7.2, and PPC
1157251881Speter      Linux systems *IF* the apache-devel-2.0.41 or greater package is already
1158251881Speter      installed when the SUBVERSION RPM is built.)
1159251881Speter
1160251881Speter
1161251881Speter      1.  Obtaining and Installing Apache 2
1162251881Speter
1163251881Speter      Subversion tries to compile against the latest released version
1164251881Speter      of Apache httpd 2.X.  The easiest thing for you to do is download
1165251881Speter      a source tarball of the latest release and unpack that.
1166251881Speter
1167251881Speter
1168251881Speter        ****************************************************************
1169251881Speter        **    IMPORTANT ISSUE ABOUT APACHE VERSIONS:  READ THIS.      **
1170251881Speter        **                                                            **
1171251881Speter        ****************************************************************
1172251881Speter        |                                                              |
1173251881Speter        | First, be sure to read the APR version warning box, back in  |
1174251881Speter        | section I.C.1, which explains that APR 0.9.x and 1.X are     |
1175251881Speter        | binary-incompatible.                                         |
1176251881Speter        |                                                              |
1177251881Speter        |    Apache HTTPD 2.0 uses APR 0.9.x.                          |
1178251881Speter        |    Apache HTTPD 2.2 uses APR 1.2.x.                          |
1179251881Speter        |                                                              |
1180251881Speter        | We recommend using the latest Apache.  However, whatever     |
1181251881Speter        | version you choose, you *must* ensure that Subversion        |
1182251881Speter        | and Apache are using the same version of APR.  If you don't, |
1183251881Speter        | things will segfault and break.                              |
1184251881Speter        |______________________________________________________________|
1185251881Speter
1186251881Speter
1187251881Speter      If you have questions about the Apache httpd 2.0 build, please consult
1188251881Speter      the httpd install documentation:
1189251881Speter
1190251881Speter          http://httpd.apache.org/docs-2.0/install.html
1191251881Speter
1192251881Speter      At the top of the httpd tree:
1193251881Speter
1194251881Speter          $ ./buildconf
1195251881Speter          $ ./configure --enable-dav --enable-so --enable-maintainer-mode
1196251881Speter
1197251881Speter      The first arg says to build mod_dav.
1198251881Speter
1199251881Speter      The second arg says to enable shared module support which is needed
1200251881Speter      for a typical compile of mod_dav_svn (see below).
1201251881Speter
1202251881Speter      The third arg says to include debugging information.  If you
1203251881Speter      built Subversion with --enable-maintainer-mode, then you should
1204251881Speter      do the same for Apache; there can be problems if one was
1205251881Speter      compiled with debugging and the other without.
1206251881Speter
1207251881Speter      Note: if you have multiple db versions installed on your system,
1208251881Speter      Apache might link to a different one than Subversion, causing
1209251881Speter      failures when accessing the repository through Apache.  To prevent
1210251881Speter      this from happening, you have to tell Apache which db version to
1211251881Speter      use and where to find db.  Add --with-dbm=db4 and
1212251881Speter      --with-berkeley-db=/usr/local/BerkeleyDB.4.2 to the configure
1213251881Speter      line.  Make sure this is the same db as the one Subversion uses.
1214251881Speter      This note assumes you have installed Berkeley DB 4.2.52
1215251881Speter      at its default locations.  For more info about the db requirement,
1216251881Speter      see section I.5.
1217251881Speter
1218251881Speter      You may also want to include other modules in your build. Add
1219251881Speter      --enable-ssl to turn on SSL support, and --enable-deflate to turn on
1220251881Speter      compression support, for example.  Consult the Apache documentation
1221251881Speter      for more details.
1222251881Speter
1223251881Speter      All instructions below assume you configured Apache to install
1224251881Speter      in its default location, /usr/local/apache2/; substitute
1225251881Speter      appropriately if you chose some other location.
1226251881Speter
1227251881Speter      Compile and install apache:
1228251881Speter
1229251881Speter          $ make && make install
1230251881Speter
1231251881Speter
1232251881Speter  B.  Making and Installing the Subversion Apache Server Module
1233251881Speter      ---------------------------------------------------------
1234251881Speter
1235251881Speter      Go back into your subversion working copy and run ./autogen.sh if
1236251881Speter      you need to.  Then, assuming Apache httpd 2.0 is installed in the
1237251881Speter      standard location, run:
1238251881Speter
1239251881Speter          $ ./configure
1240251881Speter
1241251881Speter      Note: do *not* configure subversion with "--disable-shared"!
1242251881Speter      mod_dav_svn *must* be built as a shared library, and it will
1243251881Speter      look for other libsvn_*.so libraries on your system.
1244251881Speter
1245251881Speter      If you see a warning message that the build of mod_dav_svn is
1246251881Speter      being skipped, this may be because you have Apache httpd 2.X
1247251881Speter      installed in a non-standard location.  You can use the
1248251881Speter      "--with-apxs=" option to locate the apxs script:
1249251881Speter
1250251881Speter          $ ./configure --with-apxs=/usr/local/apache2/bin/apxs
1251251881Speter
1252251881Speter      Note: it *is* possible to build mod_dav_svn as a static library
1253251881Speter      and link it directly into Apache. Possible, but painful. Stick
1254251881Speter      with the shared library for now; if you can't, then ask.
1255251881Speter
1256251881Speter          $ rm /usr/local/lib/libsvn*
1257251881Speter
1258251881Speter      If you have old subversion libraries sitting on your system,
1259251881Speter      libtool will link them instead of the `fresh' ones in your tree.
1260251881Speter      Remove them before building subversion.
1261251881Speter
1262251881Speter          $ make clean && make && make install
1263251881Speter
1264251881Speter      After the make install, the Subversion shared libraries are in
1265251881Speter      /usr/local/lib/.  mod_dav_svn.so should be installed in
1266262253Speter      /usr/local/libexec/ (or elsewhere, such as /usr/local/apache2/modules/,
1267262253Speter      if you passed --with-apache-libexecdir to configure).
1268251881Speter
1269251881Speter
1270251881Speter      Section II.E explains how to build the server on Windows.
1271251881Speter
1272251881Speter
1273251881Speter  C.  Configuring Apache for Subversion
1274251881Speter      ---------------------------------
1275251881Speter
1276251881Speter      The following section is an abbreviated version of the
1277251881Speter      information in the Subversion Book
1278251881Speter      (http://svnbook.red-bean.com).  Please read chapter 6 for more
1279251881Speter      details.
1280251881Speter
1281251881Speter      The following assumes you have already created a repository.
1282251881Speter      For documentation on how to do that, see README.
1283251881Speter
1284251881Speter      The following also assumes that you have modified
1285251881Speter      /usr/local/apache2/conf/httpd.conf to reflect your setup.
1286251881Speter      At a minimum you should look at the User, Group and ServerName
1287251881Speter      directives.  Full details on setting up apache can be found at:
1288251881Speter      http://httpd.apache.org/docs-2.0/
1289251881Speter
1290251881Speter      First, your httpd.conf needs to load the mod_dav_svn module.
1291262253Speter      If you pass --enable-mod-activation to Subversion's configure,
1292262253Speter      'make install' target should automatically add this line for you.
1293262253Speter      In any case, if Apache HTTPD gives you an error like "Unknown
1294251881Speter      DAV provider: svn", then you may want to verify that this line
1295251881Speter      exists in your httpd.conf:
1296251881Speter
1297251881Speter         LoadModule dav_svn_module     modules/mod_dav_svn.so
1298251881Speter
1299251881Speter      NOTE: if you built mod_dav as a dynamic module as well, make sure
1300251881Speter      the above line appears after the one that loads mod_dav.so.
1301251881Speter
1302251881Speter      Next, add this to the *bottom* of your httpd.conf:
1303251881Speter
1304251881Speter      <Location /svn/repos>
1305251881Speter          DAV svn
1306251881Speter          SVNPath /absolute/path/to/repository
1307251881Speter      </Location>
1308251881Speter
1309251881Speter      This will give anyone unrestricted access to the repository.  If
1310251881Speter      you want limited access, read or write, you add these lines to
1311251881Speter      the Location block:
1312251881Speter
1313251881Speter          AuthType Basic
1314251881Speter          AuthName "Subversion repository"
1315251881Speter          AuthUserFile /my/svn/user/passwd/file
1316251881Speter
1317251881Speter      And:
1318251881Speter
1319251881Speter          a) For a read/write restricted repository:
1320251881Speter
1321251881Speter             Require valid-user
1322251881Speter
1323251881Speter          b) For a write restricted repository:
1324251881Speter
1325251881Speter             <LimitExcept GET PROPFIND OPTIONS REPORT>
1326251881Speter                 Require valid-user
1327251881Speter             </LimitExcept>
1328251881Speter
1329251881Speter          c) For separate restricted read and write access:
1330251881Speter
1331251881Speter             AuthGroupFile /my/svn/group/file
1332251881Speter
1333251881Speter             <LimitExcept GET PROPFIND OPTIONS REPORT>
1334251881Speter                 Require group svn_committers
1335251881Speter             </LimitExcept>
1336251881Speter
1337251881Speter             <Limit GET PROPFIND OPTIONS REPORT>
1338251881Speter                 Require group svn_committers
1339251881Speter                 Require group svn_readers
1340251881Speter             </Limit>
1341251881Speter
1342251881Speter      These are only a few simple examples.  For a complete tutorial
1343251881Speter      on Apache access control, please consider taking a look at the
1344251881Speter      tutorials found under "Security" on the following page:
1345251881Speter      http://httpd.apache.org/docs-2.0/misc/tutorials.html
1346251881Speter
1347251881Speter      In order for 'svn cp' to work (which is actually implemented as a
1348251881Speter      DAV COPY command), mod_dav needs to be able to determine the
1349251881Speter      hostname of the server.  A standard way of doing this is to use
1350251881Speter      Apache's ServerName directive to set the server's hostname.  Edit
1351251881Speter      your /usr/local/apache2/conf/httpd.conf to include:
1352251881Speter
1353251881Speter      ServerName svn.myserver.org
1354251881Speter
1355251881Speter      If you are using virtual hosting through Apache's NameVirtualHost
1356251881Speter      directive, you may need to use the ServerAlias directive to specify
1357251881Speter      additional names that your server is known by.
1358251881Speter
1359251881Speter      If you have configured mod_deflate to be in the server, you can enable
1360251881Speter      compression support for your repository by adding the following line
1361251881Speter      to your Location block:
1362251881Speter
1363251881Speter          SetOutputFilter DEFLATE
1364251881Speter
1365251881Speter
1366251881Speter      NOTE: If you are unfamiliar with an Apache directive, or not exactly
1367251881Speter      sure about what it does, don't hesitate to look it up in the
1368251881Speter      documentation: http://httpd.apache.org/docs-2.0/mod/directives.html.
1369251881Speter
1370251881Speter      NOTE: Make sure that the user 'nobody' (or whatever UID the
1371251881Speter      httpd process runs as) has permission to read and write the
1372251881Speter      Berkeley DB files!  This is a very common problem.
1373251881Speter
1374251881Speter
1375251881Speter  D.  Running and Testing
1376251881Speter      -------------------
1377251881Speter
1378251881Speter      Fire up apache 2:
1379251881Speter
1380251881Speter          $ /usr/local/apache2/bin/apachectl stop
1381251881Speter          $ /usr/local/apache2/bin/apachectl start
1382251881Speter
1383251881Speter      Check /usr/local/apache2/logs/error_log to make sure it started
1384251881Speter      up okay.
1385251881Speter
1386251881Speter      Try doing a network checkout from the repository:
1387251881Speter
1388251881Speter          $ svn co http://localhost/svn/repos wc
1389251881Speter
1390251881Speter      The most common reason this might fail is permission problems
1391251881Speter      reading the repository db files.  If the checkout fails, make
1392251881Speter      sure that the httpd process has permission to read and write to
1393251881Speter      the repository.  You can see all of mod_dav_svn's complaints in
1394251881Speter      the Apache error logfile, /usr/local/apache2/logs/error_log.
1395251881Speter
1396251881Speter      To run the regression test suite for networked Subversion, see
1397251881Speter      the instructions in subversion/tests/cmdline/README.
1398251881Speter      For advice about tracing problems, see "Debugging the server" in
1399251881Speter      http://subversion.apache.org/docs/community-guide/.
1400251881Speter
1401251881Speter
1402251881Speter  E.  Alternative:  'svnserve' and ra_svn
1403251881Speter      -----------------------------------
1404251881Speter
1405251881Speter      An alternative network layer is libsvn_ra_svn (on the client
1406251881Speter      side) and the 'svnserve' process on the server.  This is a
1407251881Speter      simple network layer that speaks a custom protocol over plain
1408251881Speter      TCP (documented in libsvn_ra_svn/protocol):
1409251881Speter
1410251881Speter         $ svnserve -d     # becomes a background daemon
1411251881Speter         $ svn checkout svn://localhost/usr/local/svn/repository
1412251881Speter
1413251881Speter      You can use the "-r" option to svnserve to set a logical root
1414251881Speter      for repositories, and the "-R" option to restrict connections to
1415251881Speter      read-only access.  ("Read-only" is a logical term here; svnserve
1416251881Speter      still needs write access to the database in this mode, but will
1417251881Speter      not allow commits or revprop changes.)
1418251881Speter
1419251881Speter      'svnserve' has built-in CRAM-MD5 authentication (so you can use
1420251881Speter      non-system accounts), and can also be tunneled over SSH (so you
1421251881Speter      can use existing system accounts).  It's also capable of using
1422251881Speter      Cyrus SASL if libsasl2 is detected at ./configure time.  Please
1423251881Speter      read chapter 6 in the Subversion Book
1424251881Speter      (http://svnbook.red-bean.com) for details on these features.
1425251881Speter
1426251881Speter
1427251881Speter
1428251881SpeterIV.   PLATFORM-SPECIFIC ISSUES
1429251881Speter      ========================
1430251881Speter
1431251881Speter  A.  Windows XP
1432251881Speter      ----------
1433251881Speter
1434251881Speter      There is an error in the Windows XP TCP/IP stack which causes
1435251881Speter      corruption in certain cases.  This problem is exposed only
1436251881Speter      through ra_dav.
1437251881Speter
1438251881Speter      The root of the matter is caused by duplicating file handles
1439251881Speter      between parent and child processes.  The httpd Apache group
1440251881Speter      explains this a lot better:
1441251881Speter
1442251881Speter          http://www.apache.org/dist/httpd/binaries/win32/#xpbug
1443251881Speter
1444251881Speter      And there's an item about this in the Subversion FAQ:
1445251881Speter
1446251881Speter          http://subversion.apache.org/faq.html#windows-xp-server
1447251881Speter
1448251881Speter      The only known workaround for now is to update to Windows XP
1449251881Speter      SP1 (or higher).
1450251881Speter
1451251881Speter
1452251881Speter  B.  Mac OS X
1453251881Speter      --------
1454251881Speter
1455251881Speter      [TBD: Describe BDB 4.0.x problem]
1456251881Speter
1457251881Speter
1458251881Speter
1459251881SpeterV.    PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA)
1460251881Speter      ========================================================
1461251881Speter
1462251881Speter      For Python, Perl and Ruby bindings, see the file
1463251881Speter
1464251881Speter          ./subversion/bindings/swig/INSTALL
1465251881Speter
1466251881Speter      For Java bindings, see the file
1467251881Speter
1468251881Speter          ./subversion/bindings/javahl/README
1469