Let's talk about subversion/svn

olli hauer ohauer at gmx.de
Mon Nov 19 08:00:31 UTC 2012


On 2012-11-19 08:16, Jeremy Chadwick wrote:
> Given the incessant focus on everything using Subversion now (please do
> not get me started, it will be like arguing with a brick wall), I'd like
> to know what the plan is for minimising the number of dependencies.
> 
> The present subversion **package** on the official FTP servers is for
> subversion-1.7.6:
> 
> root at icarus:~ # ftp ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/Latest/
> ...
> ftp> dir subversion*.tbz
> 229 Entering Extended Passive Mode (|||10279|).
> 150 Here comes the directory listing.
> lrwxr-xr-x    1 967      100            32 Oct 14 14:53 subversion-java.tbz -> ../All/subversion-java-1.7.6.tbz
> lrwxr-xr-x    1 967      100            27 Oct 13 13:24 subversion.tbz -> ../All/subversion-1.7.6.tbz
> lrwxr-xr-x    1 967      100            28 Oct 14 01:54 subversion16.tbz -> ../All/subversion-1.6.18.tbz
> 226 Directory send OK.
> 
> And this is partially what it pulls down dependency-wise:
> 
> root at icarus:~ # pkg_add -r -n subversion
> Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/Latest/subversion.tbz...  Done.
> Package dependency sqlite3-3.7.14.1 for ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/Latest/subversion.tbz not found!
> Package dependency gdbm-1.9.1 for ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/Latest/subversion.tbz not found!
> Package dependency db42-4.2.52_5 for ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/Latest/subversion.tbz not found!
> Package dependency neon29-0.29.6_4 for ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/Latest/subversion.tbz not found!
> 
> I say partially because due to use of -n, some of those packages weren't
> downloaded, thus the recursive dependency nature is lost (I consider
> this mostly a bug with -n when used with a remote package, but it could
> also be deemed a feature).
> 
> However, GDBM and Oracle/Sleepycat DB aren't (by default) enabled
> in 1.7.7 which is what's in ports currently:
> 
> root at icarus:/usr/ports/devel/subversion # make run-depends-list
> /usr/ports/databases/sqlite3
> /usr/ports/devel/apr1
> /usr/ports/devel/gettext
> /usr/ports/textproc/expat2
> /usr/ports/www/neon29
> 
> So GDBM and Oracle/Sleepycat DB are now disabled by default (good!),
> but now we have the following (and I will describe each of them for
> readers so they know what they're for):
> 
> - SQLite -- which I believe is used for data storage for commits/etc.
>   and tends to work well for that, so I'm okay with it.
> - gettext -- needed for NLS, which I've learned to accept although I'd
>   rather everything today just use UTF-8 universally (idealistic me).
>   However, there are many people who are heavy WITHOUT_NLS advocates,
>   and I used to be one, so they should be honoured (IMO).
> - APR -- have yet to figure this out.  All I can think of is "svn is
>   an Apache project and we like injecting all our crap into everything,
>   so enjoy!".
> - expat2 -- XML parsing library, which I also have yet to figure out
>   the need for.  What VCS uses XML and why?  Is this really *needed*?
> - neon -- OPTIONS description labels this as "WebDAV/DAV support",
>   but in reality what this provides that's most important is HTTPS/SSL
>   support.  I found this out the hard way when building svn for a
>   customer 4-5 months ago.  NEON_DESC should really become this:
> 
>   NEON_DESC=WebDAV/Delta-V access module + HTTPS/SSL support
> 
> I want people reading this to remember olden days, because it seems
> we've taken a step backwards when it comes to applying minimalistic
> approaches and KISS principle.  I want people to remember the days of
> this command:
> 
> pkg_add -r cvsup-without-gui
> 

For most ports you can find the answer of dependency directly in the source.
Example subversion:

$> cd devel/subversion
$> make extract
$> less work/subversion-1.7.7/INSTALL

Subversion also depends on the following third-party libraries:
      * SQLite  (REQUIRED for client and server)
      * libz  (REQUIRED for client and server)
      * libapr and libapr-util (REQUIRED for client and server)
      * libserf or libneon  (OPTIONAL for client)
...

Hope this helps for all your other dependency related questions.



More information about the freebsd-ports mailing list