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 12.2
          platform.
        
        
          Package Information
        
        
          
            - 
              
                Download (HTTP): 
                https://archive.apache.org/dist/subversion/subversion-1.14.3.tar.bz2
               
- 
              
                Download MD5 sum: 19756a5ceb32a022698a66e48616ef6b
               
- 
              
                Download size: 8.2 MB
               
- 
              
                Estimated disk space required: 193 MB (add 189 MB for
                bindings, 54 MB for docs, 1.3 GB for tests)
               
- 
              
                Estimated build time: 0.5 SBU (Using parallelism=4; add 2.0
                SBU for bindings, 30 SBU for tests)
               
 
        
          Additional Downloads
        
        
        
          Subversion Dependencies
        
        
          Required
        
        
          Apr-Util-1.6.3 and SQLite-3.46.1
        
        
          Recommended
        
        
          Serf-1.3.10 (for handling http:// and https://
          URLs)
        
        
          Optional
        
        
          Apache-2.4.62, Boost-1.86.0, Cyrus
          SASL-2.1.28, dbus-1.14.10, Doxygen-1.12.0 (for
          generating HTML documentation), gnome-keyring-46.2, libsecret-0.21.4, Py3c-1.4 (for the
          python bindings, and tests), Python-3.12.5 (with sqlite support for
          the tests), Ruby-3.3.4, SWIG-4.2.1 (for building Perl, Python and
          Ruby bindings), and UTF8proc
        
        
          Optional (for the Java Bindings)
        
        
          One of OpenJDK-22.0.2, Dante or Jikes, JUnit 4 (to test the Java bindings)
          and apache-ant-1.10.14.
        
       
      
        
          Installation of Subversion
        
        
          First, adapt some Python scripts to use python3:
        
        grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'
        
          Next, fix building this package with GCC 14:
        
        patch -Np1 -i ../subversion-1.14.3-upstream_fixes-1.patch
        
          After modifying the SWIG bindings like we did with the patch, the
          build system must be regenerated so the bindings pick up the
          changes:
        
        touch build/generator/swig/*.py &&
mv -v build-outputs.mk{,.old}   &&
./autogen.sh --release
        
          Install Subversion by running the
          following commands:
        
        PYTHON=python3                        \
./configure --prefix=/usr             \
            --disable-static          \
            --with-apache-libexecdir  \
            --with-utf8proc=internal &&
make
        
          If you have Doxygen-1.12.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.14
          and must be downloaded separately. To build the Java bindings,
          issue the following command:
        
        make -j1 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.12/site-packages/libsvn \
     swig_pydir_extra=/usr/lib/python3.12/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
          changes in Python-3.12, you can expect to see around 200 Syntax
          Warnings during the test suite due to invalid escape sequences.
        
        
          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.3 &&
cp      -v -R doc/* /usr/share/doc/subversion-1.14.3
        
          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.12/site-packages/libsvn \
      swig_pydir_extra=/usr/lib/python3.12/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.62 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.