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