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.
This package is known to build and work properly using an LFS-11.1
platform.
Package Information
-
Download (HTTP):
https://archive.apache.org/dist/subversion/subversion-1.14.1.tar.bz2
-
Download MD5 sum: 2eccc2c7451397e01a13682600af9563
-
Download size: 8.1 MB
-
Estimated disk space required: 208 MB (add 228 MB for
bindings, 52 MB for docs, 1.3 GB for tests)
-
Estimated build time: 0.5 SBU (Using parallelism=4; add 1.9
SBU for bindings, 35 SBU for tests)
Subversion Dependencies
Required
Apr-Util-1.6.1 and SQLite-3.37.2
Recommended
Serf-1.3.9 (for handling http:// and https://
URLs)
Optional
Apache-2.4.52, Boost-1.78.0, Cyrus
SASL-2.1.27, dbus-1.12.20, Doxygen-1.9.3 (for
generating HTML documentation), gnome-keyring-40.0, libsecret-0.20.5, Py3c-1.4 (for the
python bindings, and tests) Python-2.7.18 (with sqlite support for
the tests), Ruby-3.1.0, SWIG-4.0.2 (for building Perl, Python and
Ruby bindings), LZ4, and UTF8proc
Optional (for the Java Bindings)
One of OpenJDK-17.0.2, Dante or Jikes, JUnit 4 (to test the Java bindings)
and apache-ant-1.10.12.
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/subversion
Installation of Subversion
First, adapt some Python scripts to use python3:
grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'
Install Subversion by running the
following commands:
PYTHON=python3 ./configure --prefix=/usr \
--disable-static \
--with-apache-libexecdir \
--with-lz4=internal \
--with-utf8proc=internal &&
make
If you have Doxygen-1.9.3 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.12
and must be downloaded separately. To build the Java bindings,
issue the following command:
make javahl
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.10/site-packages/libsvn \
swig_pydir_extra=/usr/lib/python3.10/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.
To test the results of the Java bindings build, issue LANG=C make check-javahl.
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.1 &&
cp -v -R doc/* /usr/share/doc/subversion-1.14.1
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.10/site-packages/libsvn \
swig_pydir_extra=/usr/lib/python3.10/site-packages/svn
make install-swig-rb
Command Explanations
--disable-static
: This
switch prevents installation of static versions of the libraries.
--with-apache-libexecdir
:
If Apache-2.4.52 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-lz4=internal,
--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.