[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [RFC] Build System Documentation

From: Ben Reser <ben_at_reser.org>
Date: Wed, 20 Feb 2013 13:06:39 -0800

On Mon, Feb 18, 2013 at 4:10 AM, Gabriela Gibson
<gabriela.gibson_at_gmail.com> wrote:
> I've written up some documentation about the build system, could I
> please have some feedback as to usefulness, style, shape etc?

Seems plenty useful for someone that isn't familiar with our build
system. The major comment I have is you're really mostly talking
about the Unix build system. You do mention some of the pieces of the
Windows setup but your explanation here really is about how the Unix
side works. I wouldn't worry too much about that since I'm not
inclined to send you in the dark hole that is the Windows build.

> Next, configure uses configure.ac, Makefile.in and build-outputs.mk
> to generate the Makefile.

I'd say this is a tad inaccurate. build-outputs.mk is not used to
generate the Makefile but is included at runtime. It is just another
makefile.

> Then, a section had to be added to build.conf:
>
> Index: build.conf
> ===================================================================
> --- build.conf (revision 1441170)
> +++ build.conf (working copy)
> @@ -62,7 +62,6 @@ private-built-includes =
> subversion/svn/svn-help.inc
> subversion/svn/svn-help.man
>
> -
> test-scripts =
> subversion/tests/cmdline/*_tests.py
>

Spurious whitespace change in this diff that creates an additional
block that's not needed.

> --- get-deps.sh (revision 1442814)
> +++ get-deps.sh (working copy)
> @@ -115,7 +115,11 @@ get_gtest() {
>
> unzip -q $TEMPDIR/$GTEST.zip
>
> - mv $GTEST gtest
> + mv $GTEST libgtest
> + echo "Gtest has been installed, please note:"
> + echo "autogen.sh will issue spurious header warnings."
> + echo "./configure --enable-gtest will issue repeated spurious warnings
> that"
> + echo "the option --enable-gtest is not recognsed."

Why is that? I haven't really been following the gtest work that much
but the spurious warnings issue seems like an issue in what you did
rather than something you should be adding documentation around. Also
typo of recognized/recognised (depending on preference US vs UK
spelling).

> build.conf Data file used by gen-make.py to generate
> build-outputs.mk
> build-outputs.mk see build.conf

I'd say that build-outputs.mk is a makefile generated based on
build.conf here and is included by Makefile.

> config.log log of the most recent comile to aid debugging

This should be log of most recent configure.

> find_python.sh check for the correct pytho version

typo of python

> computes the header dependencies (not sure what this means)

This computes the headers that a given target depends on beyond just
the sources listed in build.conf. So that if a header is changed then
the target will properly rebuild. You can easily see the difference
by running `./autogen.sh` saving the build-outputs.mk and then running
`./autogen.sh -s` and comparing the results.

> write the (above obtained?) sqlite headers

Nope this is where the transform_sql.py code gets run.

> offer debug output if --debug is defined

You skipped the primary function of gen-make.py which is caused by
this call "generator.write()". This produces whatever output is
required for the build setup being run. For Unix that's primarily
build-outputs.mk but also autogen-standalone.mk (which is used for
producing the generated SWIG code when autogen.sh is run in release
mode) and build/transform_libtool_scripts.sh (which is used to modify
the libtool scripts to preload local libraries). For Windows it'll
produce the project files.

> useage_exit & class Options:
> It also offers interactive useage service -- when is that used?

Typo should be usage. gen-make.py is invoked directly when doing a
Windows build since there is no ./autogen.sh or ./configure
equivalents. So the usage output exists to aid those users.

> [libsvn_fs_base]

implementation of the BDB backend.

> [libsvn_fs_fs]

implementation of the fsfs backend.

> [libsvn_ra_local] Accessing repositories via direct libsvn_fs

More accurately: Accessing repositories via direct libsvn_repos.
Primarily this is implemented on top of libsvn_repos but some things
end up using functions in libsvn_fs. So I wouldn't mention libsvn_fs.

> trang
> doxygen
> Check for trang.
> Check for doxygen

Duplicated lines.

There's the whole Perl bindings situation but I'm not sure documenting
that is really worth your time. The Perl bindings don't generate
their targets via the gen-make.py process but rather have a
Makefile.PL.in that generates a Makefile.PL (by way of configure) that
then generates a Makefile (this is a standard way of generating
Makefiles for Perl modules). There are other obscure pieces that I
probably haven't thought of.
Received on 2013-02-20 22:14:03 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.