#### Beyond Linux® From Scratch (systemd Edition) - Version r13.0-491

### Chapter 13. Programming

- Prev

  slang-2.3.3

- Next

  Running a Subversion Server

- Up
- Home

# Subversion-1.14.5

## Introduction to Subversion

Subversion is a version control system that is designed to be a compelling replacement for CVS in the open source community. It extends and enhances CVS' feature set, while maintaining a similar interface for those already familiar with CVS. These instructions install the client and server software used to manipulate a Subversion repository. Creation of a repository is covered at Running a Subversion Server.

### Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

### Package Information

- Download (HTTP): https://archive.apache.org/dist/subversion/subversion-1.14.5.tar.bz2

- Download MD5 sum: af6001dc7af2f1242a4f72e8a5c565d2

- Download size: 8.3 MB

- Estimated disk space required: 260 MB (add 189 MB for bindings, 54 MB for docs, 1.3 GB for tests)

- Estimated build time: 1.5 SBU (Using parallelism=4; add 2.0 SBU for bindings, 30 SBU for tests)

### Additional Downloads

- Required patch: https://www.linuxfromscratch.org/patches/blfs/svn/subversion-1.14.5-upstream_fixes-1.patch

### Subversion Dependencies

#### Required

Apr-Util-1.6.3

#### Recommended

Serf-1.3.10 (for handling http:// and https:// URLs) and SWIG-4.4.1 (for regenerating the build system)

#### Optional

Apache-2.4.66, Boost-1.90.0, Cyrus SASL-2.1.28, dbus-1.16.2, Doxygen-1.17.0 (for generating HTML documentation), gnome-keyring-50.0, libsecret-0.21.7, Py3c-1.4 (for the python bindings, and tests), Ruby-4.0.3, SWIG-4.4.1, and UTF8proc

#### Optional (for the Java Bindings)

One of OpenJDK-21.0.10, Dante or Jikes, JUnit 4 (to test the Java bindings) and apache-ant-1.10.17.

## Installation of Subversion

First, fix several problems with Python 3.14 and SWIG-4.4:

    patch -Np1 -i ../subversion-1.14.5-upstream_fixes-1.patch

Install Subversion by running the following commands:

    ./configure --prefix=/usr            \
                --disable-static         \
                --with-apache-libexecdir \
                --with-utf8proc=internal &&
    make

If you have Doxygen-1.17.0 installed and you wish to build the API documentation, issue:

    doxygen doc/doxygen.conf

If you wish to build the Java bindings pass the `--enable-javahl` parameter to the configure command. In addition, if you want to run the Java test suite, you have to specify the location of the JUnit file by adding `--with-junit=<path to junit jar>` (for instance `--with-junit=/usr/local/java/lib/junit-4.13.jar`) to configure. The JUnit jar file is no longer included in apache-ant-1.10.17 and must be downloaded separately. To build the Java bindings, issue the following command:

    make -j1 javahl

If you are going to compile the Ruby bindings, set the C standard to prevent the build from failing:

    sed -i 's/Wno-int-to-pointer-cast/std=gnu17/' Makefile

If you want to compile Perl, Python, or Ruby bindings, issue any of the following command:

    make swig-pl # for Perl
    make swig-py \
         swig_pydir=/usr/lib/python3.14/site-packages/libsvn \
         swig_pydir_extra=/usr/lib/python3.14/site-packages/svn # for Python
    make swig-rb # for Ruby

To test the results, issue: make check. Four tests in the `commit_tests.py`, `prop_tests.py`, and `update_tests.py` suites are known to fail due to output differences with newer versions of Python.

To test the results of any of the SWIG bindings, you can use any of the following commands: make check-swig-pl, make check-swig-py, or make check-swig-rb.

Now, as the `root` user:

    make install &&

    install -v -m755 -d /usr/share/doc/subversion-1.14.5 &&
    cp      -v -R doc/* /usr/share/doc/subversion-1.14.5

If you built the Java bindings, issue the following command as the `root` user to install them:

    make install-javahl

If you built the Perl, Python, or Ruby bindings, issue any of the following commands as the `root` user to install them:

    make install-swig-pl
    make install-swig-py \
          swig_pydir=/usr/lib/python3.14/site-packages/libsvn \
          swig_pydir_extra=/usr/lib/python3.14/site-packages/svn
    make install-swig-rb

The java bindings need to be installed in order for the tests to run, since the tests attempt to look for them in CLASSPATH. To test the results of the Java bindings build, issue LANG=C make check-javahl.

## Command Explanations

`--disable-static`: This switch prevents installation of static versions of the libraries.

`--with-apache-libexecdir`: If Apache-2.4.66 is installed, the shared Apache modules are built. This switch allows to have those modules installed to Apache's configured module dir instead of `/usr/libexec`. It has no effect if Apache is not installed.

`--with-utf8proc=internal`: Remove these switches if you have installed the optional dependencies.

`--enable-javahl`: enables compilation of Java high level bindings. Running make javahl is necessary to do the compilation.

`--with-junit=<location of the junit jar file>`: gives the location of the junit jar, otherwise the javahl tests cannot be run.

`--disable-gmock`: Do not use the Googlemock testing framework.

## Configuring Subversion

### Config Files

`~/.subversion/config` and `/etc/subversion/config`

### Configuration Information

`/etc/subversion/config` is the Subversion system-wide configuration file. This file is used to specify defaults for different svn commands.

`~/.subversion/config` is the user's personal configuration file. It is used to override the system-wide defaults set in `/etc/subversion/config`.

## Contents

Installed Programs: svn, svnadmin, svnbench, svndumpfilter, svnfsfs, svnlook, svnmucc, svnrdump, svnserve, svnsync, and svnversion
Installed Libraries: libsvn_*-1.so and optionally, a Java library, the mod_dav_svn.so and mod_authz_svn.so Apache HTTP DSO modules and various Perl, Python and Ruby modules.
Installed Directories: /usr/include/subversion-1, /usr/lib/perl5/site_perl/5.42/{,auto/}SVN, /usr/lib/python3.14/site-packages/{libsvn,svn}, /usr/lib/ruby/site_ruby/<x.y.z>/{,<arch-linux>-linux/}svn, /usr/lib/svn-javahl, and /usr/share/doc/subversion-1.14.5

### Short Descriptions

svn | is a command-line client program used to access Subversion repositories
svnadmin | is a tool for creating, tweaking or repairing a Subversion repository
svnbench | is a benchmarking tool
svndumpfilter | is a program for filtering Subversion repository dumpfile format streams
svnfsfs | is the FSFS (FileSystem atop of the FileSystem - Subversion filesystem implementation) repository manipulation tool
svnlook | is a tool for inspecting a Subversion repository
svnmucc | is a Multiple URL Command Client for Subversion
svnrdump | is a tool for dumping or loading a remote Subversion repository
svnserve | is a custom standalone server program, able to run as a daemon process or invoked by SSH
svnsync | is a Subversion repository synchronisation tool
svnversion | is used to report the version number and state of a working Subversion repository copy
`libsvn_*-1.so` | are the support libraries used by the Subversion programs
`mod_authz_svn.so` | is a plug-in module for the Apache HTTP server, used to authenticate users to a Subversion repository over the Internet or an intranet
`mod_dav_svn.so` | is a plug-in module for the Apache HTTP server, used to make a Subversion repository available to others over the Internet or an intranet

- Prev

  slang-2.3.3

- Next

  Running a Subversion Server

- Up
- Home