configure.ac

Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Require at least version 1.5 of APR

Since r1874057, the apr_pescape_shell() API is being used to escape filenames

when invoking $SVN_EDITOR. This was added to APR in 1.5.0, released on

2013-11-13.

* INSTALL

(): Document new minimum APR version

* build/generator/gen_win_dependencies.py

(_find_apr): Bump minimal_apr_version to 1.5.0

* configure.ac

(APR_VER_REGEXES): Bump minor version in 1.x regex to 1.5

* get-deps.sh:

(APR_VERSION): Specify 1.5.0 as default version

* subversion/include/private/svn_dep_compat.h

(apr_time_from_msec): Removed, since it's provided by APR 1.4.0 or later

* subversion/include/svn_types.h

(apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val): Remove

prototypes, since they're provide by APR 1.5.0 or later

* subversion/libsvn_subr/iter.c

(hash_do_baton): Remove condition requiring APR 1.4.0 to define this type

(svn_iter_apr_hash): Remove pre-APR 1.4.0 code

(apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val): Remove

definitions, since they're provided by APR 1.5.0 or later

* subversion/libsvn_subr/pool.c

(apr_pool_create_unmanaged_ex): Remove conditional alias to

apr_pool_create_core_ex, for APR versions < 1.3.3

  1. … 7 more files in changeset.
Merge the swig-py3 branch to trunk.
  1. … 61 more files in changeset.
Fix format of Requires(.private) fields in pkg-config files

Per pkg-config(1), the field "is a comma-separated list of packages that are

required by your package", not a space-separated field.

* build/generator/templates/pkg-config.in.ezt

(): Generate comma-separated lists for Requires(.private)

* configure.ac:

(old_gnome_keyring): Use a comma separated list for SVN_GNOME_KEYRING_PCLIBS

  1. … 1 more file in changeset.
* configure.ac: Use the POSIX string equality operator.

On my system, that's required:

.

% sh -c 'test x == y; echo $?'

sh: 1: test: x: unexpected operator

2

%

% sh -c 'test x = y; echo $?'

1

%

* configure.ac: Do not use link-time optimizations. While they may

theoretically save some space and gain some speed, they in fact

tickle a bug in (at least) clang++, breaking SVN++.

It's just not worth it.

Make sure we don't require any part of Boost unless explicitly requested by

enabling the C++ bindings.

* configure.ac

(--enable-svnxx): New option to compile C++ bindings.

(--enable-svnxx-tests): New option to compile C++ bindings tests.

(SVN_HAVE_CXX_BOOST): Remove substitution variable.

(SVN_BUILD_SVNXX, SVN_BUILD_SVNXX_TESTS): New substitution variables.

* build.conf

(libsvnxx): Only build when SVN_BUILD_SVNXX is enabled.

(svnxx-tests): Only build when SVN_BUILD_SVNXX_TESTS is enabled.

* Makefile.in

(SVN_HAVE_CXX_BOOST): Remove.

(SVN_BUILD_SVNXX, SVN_BUILD_SVNXX_TESTS): Define.

  1. … 2 more files in changeset.
Switch all SVN++ tests to Boost.Test.

* build/ac-macros/ax_boost_unit_test_framework.m4: New; imported from the Autoconf Archive.

* LICENSE: Add entry for ax_boost_unit_test_framework.m4.

* aclocal.m4: Include ax_boost_unit_test_framework.m4.

* Makefile.in

(BOOST_TEST_CPPFLAGS): Rename from BOOST_CPPFLAGS, redefine.

(BOOST_TEST_LDFLAGS): Rename from BOOST_LDFLAGS, redefine.

(COMPILE_SVNXX): Rename from COMPILE_SVNXX_CXX, redefine.

(COMPILE_SVNXX_TEST): Rename from COMPILE_SVNXX_CXX_BOOST, redefine.

(LINK_SVNXX_TEST): Rename from LINK_CXX_BOOST, redefine.

* build.conf

(libsvnxx, svnxx-tests): Update compile and link commands.

* configure.ac: Update SVN++ bits.

* subversion/bindings/cxx/src/aprwrap/array.hpp:

Add comments to mark obsolete constructs that should change to C++11 idiom.

* subversion/bindings/cxx/src/aprwrap/hash.hpp: Likewise.

* subversion/bindings/cxx/tests/cxxhl-tests.cpp.

* subversion/bindings/cxx/tests/test_aprwrap.cpp: Removed.

* subversion/bindings/cxx/tests/svnxx-tests.cpp,

* subversion/bindings/cxx/tests/fixture_initialize_apr.hpp,

* subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp: New.

* subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_pools.cpp: New; extracted from the

removed test_aprwrap.cpp and reworked for Boost.Test.

* subversion/bindings/cxx/tests/test_exceptions.cpp: Renamed from test_exception.cpp

and reworked for Boost.Test.

  1. … 18 more files in changeset.
Add optional dependency on the Boost C++ libraries for the SVN++ test suite.

* build/ac-macros/ax_boost_base.m4: New; imported from The Autoconf Archive.

* LICENSE, NOTICE: Document the license for ax_boost_base.m4.

* aclocal.m4: Inlcude build/ac-macros/ax_boost_base.m4

* build.conf

(options.private-includes): Add headers from subversion/bindings/cxx/tests.

(svnxx-tests): Declare test target for SVN++.

* configure.ac: Check for Boost availability.

* Makefile.in

(BOOST_CPPFLAGS, BOOST_LDFLAGS, SVN_HAVE_CXX_BOOST): New substitutions.

(COMPILE_SVNXX_CXX_BOOST, LINK_CXX_BOOST): New compile and link commands.

  1. … 6 more files in changeset.
Switch default C++ language level to C++11 on Unix.

- "Modern" C++ (C++11 and later) has become ubiquitous.

- We already need C++11 to compile the KWallet plugin.

- JavaHL compiles in C++11 mode, otherwise it would not build on Windows

with newer versions of MSVC.

- Our core code is not affected at all.

* configure.ac: Display the C and C++ language level flags.

* build/ac-macros/compiler.m4

(SVN_CXX_MODE_SETUP): Switch to C++11.

(SVN_CXX_MODE_SETUP11): Remove; it's now obsolete.

* build/ac-macros/kwallet.m4

(SVN_LIB_KWALLET): Remove reference to SVN_CXX_MODE_SETUP11.

* subversion/bindings/javahl/native/RemoteSession.cpp

(compare_c_strings::operator()): Make this method const to avoid a warning.

  1. … 3 more files in changeset.
Remove optional dependency on Googletest and Googlemock.

* INSTALL: don't mention googlemock.

* Makefile.in

(SVN_USE_GOOGLEMOCK, GOOGLEMOCK_INCLUDES, GOOGLEMOCK_LIB_INCLUDES,

COMPILE_GOOGLEMOCK_CXX, COMPILE_CXXHL_GOOGLEMOCK_CXX): Removed.

* build.conf

(cxxhl-tests): Temporarily disabled due to dependencies.

(libgooglemock): Removed.

* configure.ac: Remove references to Googlemock.

* gen-make.py: Likewise.

* get-deps.sh: Likewise.

* doc/programmer/gtest-guide.txt: Removed.

  1. … 6 more files in changeset.
* configure.ac: Use $PYTHON (always defined by autogen.sh) when

running build/getversion.py via esyscmd.

Disable plaintext password sorage by default. It can still be enabled

at configure time.

* configure.ac: Invert the default of the plaintext-password-storage

option and update its help text.

On Linux, only check ELF headers of loaded shared libraries when

we have the ELF API available. Also, include executable files

in the list.

* configure.ac: Check for elf.h

* subversion/libsvn_subr/sysinfo.c: Optionally include elf.h.

(parse_pointer_value): Move to conditional block.

(check_elf_heade): New.

(linux_shared_libs): Make all ELF-specific checks conditional.

  1. … 1 more file in changeset.
Bump minimum JDK version required for JavaHL to 1.8, in preparation for the

changes needed to support Java 10

* subversion/bindings/javahl/README

(): Update JDK version requirements.

* configure.ac

(JAVA_OLDEST_WORKING_VER): Set to 1.8

* build/ac-macros/java.m4

(SVN_FIND_JDK): Set Java source version to 1.8.

* build/generator/gen_win.py

(get_proj_sources): Set Java source and target version to 1.8.

  1. … 3 more files in changeset.
Fixes libsvn_auth_gnome_keyring.pc when configured with libsecret, and

make dependencies private.

* configure.ac, build/ac-macros/libsecret.m4:

Set SVN_GNOME_KEYRING_PCLIBS to libsecret/gnome-keyring as appropriate.

* build.conf (gnome-keyring):

Substitute SVN_GNOME_KEYRING_PCLIBS as private deps of

libsvn_auth_gnome_keyring in generated pkg-config file.

Reviewed by: philip

  1. … 2 more files in changeset.
* configure.ac

Fix variable name with path to rdoc, broken in r1806570.

Found by: Jan Palus <jpalus{_AT_}fastmail.com>

Use https:// links when downloading or suggesting to download SQLite

amalgamation.

* configure.ac

(SQLITE_URL): Construct https:// link.

* get-deps.sh

(get_sqlite): Use https:// link.

  1. … 1 more file in changeset.
fsfs: Use the `WITHOUT ROWID` optimization for rep-cache.db in format 8.

This optimization, introduced in SQLite 3.8.2, works well for tables that

have non-integer primary keys, such as

hash TEXT NOT NULL PRIMARY KEY

in the rep-cache.db. (See the https://sqlite.org/withoutrowid.html article

for additional details.)

A quick experiment showed a reduction of the on-disk size of the database

by ~1.75x. The lookups should also be faster, both due to the reduced

database size and due to the lesser amount of internal bsearches. This

should improve the times of new commits and `svnadmin load`, especially

for large repositories that also have large rep-cache.db files.

In order to maintain compatibility, since SQLite versions prior to 3.8.2

do not support this statement, we only start using it for fsfs format 8

repositories and simultaneously bump the minimal required SQLite version

from 3.7.12 (May 2012) to 3.8.2 (December 2013). The last step ensures that

all binaries compiled to support format 8 can work with the tables with

this optimization. Also, as the various scripts have both the minimal

and recommended (3.7.15.1) SQLite versions, we bump the recommended

version to the last 3.8.x patch version, which is 3.8.11.1.

* subversion/libsvn_fs_fs/rep-cache-db.sql

(STMT_CREATE_SCHEMA): Rename this ...

(STMT_CREATE_SCHEMA_V1): ...to this.

(STMT_CREATE_SCHEMA_V2): New, enables `WITHOUT ROWID` optimization.

(STMT_GET_REP, STMT_SET_REP, STMT_GET_REPS_FOR_RANGE,

STMT_GET_MAX_REV, STMT_DEL_REPS_YOUNGER_THAN_REV,

STMT_LOCK_REP, STMT_UNLOCK_REP):

Note that these statements work for both V1 and V2 schemas.

* subversion/libsvn_fs_fs/fs.h

(SVN_FS_FS__MIN_REP_CACHE_SCHEMA_V2_FORMAT): New.

* subversion/libsvn_fs_fs/rep-cache.c

(REP_CACHE_SCHEMA_FORMAT): Remove.

(open_rep_cache): Select between creating a V1 or V2 schemas based

on the format of the filesystem.

* subversion/libsvn_subr/sqlite.c

(): Bump minimum required SQLite version to 3.8.2.

* subversion/tests/cmdline/svnadmin_tests.py

(check_hotcopy_fsfs_fsx): Check if the Python's built-in SQLite version

is enough to interpret the schema of rep-cache.db, and skip the check

if it's not.

* build/generator/gen_win_dependencies.py

(_find_sqlite): Bump minimum required SQLite version to 3.8.2.

* configure.ac

(SQLITE_MINIMUM_VER): Bump to 3.8.2.

(SQLITE_RECOMMENDED_VER): Bump to 3.8.11.1.

(SQLITE_RECOMMENDED_VER_REL_YEAR): New, required to construct the

download URL which includes the release year for the newer SQLite

amalgamation versions.

(SQLITE_URL): Update the download URL.

* get-deps.sh

(SQLITE_VERSION): Bump to 3.8.11.1.

(SQLITE_VERSION_REL_YEAR): New.

(get_sqlite): Update the download URL that includes the release year

for the newer SQLite amalgamation versions.

* INSTALL

(C.12.SQLite): Bump minimum required SQLite version to 3.8.2.

(E.1.Prerequisites): Bump the minimum and recommended SQLite versions.

  1. … 8 more files in changeset.
Add SWIG_FEATURES variable (and lang-specific variants) to tune how swig bindings are generated.

SWIG_FEATURES is used for general swig options, like -Wall, while

SWIG_(PL|PY|RB)_FEATURES allows tuning language specific settings.

This replaces the incorrect usage of CPPFLAGS as the mechanism for controlling

swig's behavior, thus avoiding the need to filter unknown flags before passing

them on to swig (c.f., r1722164).

* Makefile.in,

configure.ac:

(SWIG_CPPFLAGS): Removed

(SWIG_FEATURES, SWIG_PL_FEATURES, SWIG_PY_FEATURES, SWIG_RB_FEATURE): Added

* build.conf

(swig-*-opts): Replace SWIG_CPPFLAGS with SWIG_FEATURES and add relevant

SWIG_*_FEATURES

  1. … 2 more files in changeset.
* configure.ac: Expand the ever-growing list of ruby binaries to look for.

Add versions up to ruby 2.4. Add binary names used by Ruby ports on *BSD.

Prompted by a patch which was added to OpenBSD ports to make SVN detect

current versions of Ruby.

Build against the system utf8proc library by default instead of the

internal copy of the utf8proc code. Add --with-utf8proc=PREFIX|internal

to allow the user to specify either where to find utf8proc or that the

internal copy be used. The Windows build will continue to use the

internal utf8proc code.

* build/ac-macros/utf8proc.m4: New.

* aclocal.m4: Include utf8proc.m4.

* configure.ac: Call SVN_UTF8PROC.

* Makefile.in

(SVN_UTF8PROC_LIBS, SVN_UTF8PROC_INCLUDES): New.

* build.conf

(libsvn_subr): Add utf8proc to link.

(utf8proc): New.

* subversion/libsvn_subr/utf8proc/utf8proc.h: Rename to ...

* subversion/libsvn_subr/utf8proc/utf8proc_internal.h: ... this.

* subversion/libsvn_subr/utf8proc/utf8proc.c: Include svn_private_config.h

and utf8proc_internal.h, protect with SVN_INTERNAL_UTF8PROC.

* subversion/libsvn_subr/utf8proc.c: Include system utf8proc.h or internal

utf8proc.c.

* subversion/svn_private_config.hw: Define SVN_INTERNAL_UTF8PROC to

enable internal copy of utf8proc.

* subversion/tests/libsvn_subr/utf-test.c

(test_utf_fuzzy_escape): Allow for small output difference between

utf8proc 1.x and 2.x.

  1. … 10 more files in changeset.
Build against the system LZ4 library by default instead of the

internal copy of the LZ4 code. Add --with-lz4=PREFIX|internal

to allow the user to specify either where to find LZ4 or that

the internal copy be used. The Windows build will continue to

use the internal LZ4 code.

* build/ac-macros/lz4.m4: New.

* aclocal.m4: Include lz4.m4.

* configure.ac: Call SVN_LZ4.

* Makefile.in

(SVN_LZ4_LIBS, SVN_LZ4_INCLUDES): New.

* build.conf

(libsvn_subr): Add lz4 to link.

(lz4): New.

* subversion/libsvn_subr/lz4/lz4.h: Rename to ...

* subversion/libsvn_subr/lz4/lz4internal.h: ... this, include

svn_private_config.h, protect with SVN_INTERNAL_LZ4.

* subversion/libsvn_subr/lz4/lz4.c: Include svn_private_config.h and

lz4internal.h, protect with SVN_INTERNAL_LZ4.

* subversion/libsvn_subr/compress.c: Include system lz4.h or lz4internal.h.

* subversion/svn_private_config.hw: Define SVN_INTERNAL_LZ4 to

enable internal copy of LZ4.

  1. … 9 more files in changeset.
Disable static builds of the apache and auth provider modules as

these are only ever used via dlopen() and so only shared modules

are required. As well as removing redundant compilation this

also solves the problem that KDE5, as used by the kwallet auth

provider, does not support compilation without -fPIC.

* build/generator/gen_base.py

(TargetSharedOnlyLib, TargetSharedOnlyCxxLib): New target types to

provide explicit compile/link commands for shared-only builds.

* build.conf

(libsvn_auth_gnome_keyring): Change to shared-only-lib.

(libsvn_auth_kwallet): Change to shared-only-cxx-lib.

* Makefile.in

(COMPILE_APACHE_MOD, LINK_APACHE_MOD): Add -shared.

(COMPILE_SHARED_ONLY_LIB, COMPILE_SHARED_ONLY_CXX_LIB,

LINK_SHARED_ONLY_LIB, LINK_SHARED_ONLY_CXX_LIB,

shared_only_LDFLAGS): New.

(libsvn_auth_gnome_keyring_LDFLAGS, libsvn_auth_kwallet_LDFLAGS): Remove.

* configure.ac

(shared_only_LDFLAGS): New.

(libsvn_auth_gnome_keyring_LDFLAGS, libsvn_auth_kwallet_LDFLAGS): Remove.

  1. … 3 more files in changeset.
Use libsecret to implement the GNOME Keyring provider by default

instead of libgnome-keyring. The GNOME project have deprecated

libgnome-keyring and libsecret is the preferred replacement. The old

implementation using libgnome-keyring can still be chosen at configure

time. Both implementations read and write passwords that can be used

by the other implementation.

The configure option '--with-gnome-keyring' now controls the new

implementation while the option '--with-old-gnome-keyring' controls

the previous implementation.

* build/ac-macros/libsecret.m4: New, provides --with-gnome-keyring.

* configure.ac: Change --with-gnome-keyring to --with-old-gnome-keyring

and disable by default.

* aclocal.m4: Include libsecret.m4.

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c: Add new

libsecret implementation conditional on SVN_HAVE_LIBSECRET, make old

code conditional on SVN_HAVE_GNOME_KEYRING,

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Make already conditional

code depend on SVN_HAVE_LIBSECRET.

* subversion/include/svn_auth.h

(SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC,

SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_BATON): Deprecate.

* subversion/include/private/svn_cmdline_private.h

(svn_cmdline__auth_gnome_keyring_unlock_prompt): Deprecate.

* subversion/libsvn_subr/prompt.c

(svn_cmdline__auth_gnome_keyring_unlock_prompt): Make conditional.

* subversion/tests/libsvn_subr/auth-test.c

(test_platform_specific_auth_providers): Make already conditional

code depend on SVN_HAVE_LIBSECRET.

  1. … 8 more files in changeset.
Fix SVN-4653: SVN_LOCALE_DIR incorrectly interpolated when prefix is not set explicitly.

* configure.ac: When calculating SVN_LOCALE_DIR, adjust the test for

the default value to account for the new ${dataroot} variable

that was introduced by autoconf 2.60.

Found by: Michael Osipov

Make get-deps.sh download Googlemock and Googletest from GitHub.

Also rename gmock->googlemock throughout the code

(except for a few places in get_deps.sh).

* .: Ignore directory 'googlemock' instaed of 'gmock-fused'.

* get-deps.sh: Renamed gmock to googlemock.

(GMOCK_VERSION): Bump to 1.7.0

(GMOCK, GMOCK_URL): Update to the new location on GitHub.

(GTEST, GTEST_URL, GTEST_VERSION): New variables.

(get_googlemock): Updated to download both Googlemock and Googletest sources.

* configure.ac: Renamed gmock to googlemock.

(SVN_USE_GOOGLEMOCK): Fixed one instance that was mistyped.

* build.conf: Renamed gmock to googlemock.

(cxxhl-tests): Updated target definition.

(libgooglemock): Updated source path and sources list.

* Makefile.in: Renamed gmock to googlemock.

(GOOGLEMOCK_INCLUDES): Changed, these are now only the include paths that

are needed by tests that use Googlemock, not the Googlemock library itself.

(GOOGLEMOCK_LIB_INCLUDES): New, these are the include paths for the library.

(COMPILE_GOOGLEMOCK_CXX): Use the correct include paths.

  1. … 4 more files in changeset.
Add --enable-apache-whitelist configure option. Subversion's configure

script blacklists some old, buggy, Apache versions and refuses to build

while some distributions ship these old versions with patches to fix

the bugs. Whitelisting an Apache version will override the blacklist

and allow Subversion to build.

Subversion has regression tests for the buggy Apache behaviour and

whitelisting will change the expected behaviour for these tests from

XFAIL to PASS. As an example: using --enable-apache-whitelist=2.4.6

on an up-to-date CentOS 7 will allow Subversion to build and the

regression tests will PASS.

* configure.ac: Add --enable-apache-whitelist.

* build/ac-macros/apache.m4

(SVN_FIND_APACHE): Check whitelist, tweak help text for

--enable-broken-httpd-auth.

* Makefile.in

(HTTPD_WHITELIST): New.

(check): Pass --httpd-whitelist.

* build/run_tests.py

(TestHarness.__init__, TestHarness._run_py_test, main): Add httpd_whitelist.

* subversion/tests/cmdline/svntest/main.py

(is_mod_dav_url_quoting_broken): Check whitelist.

(TestSpawningThread.run_one): Handle --httpd-whitelist.

(_create_parser): Add --httpd-whitelist.

  1. … 4 more files in changeset.
Filter out -Wdate-time from SWIG_CPPFLAGS

As part of the reproducible builds effort[0], it's becoming more common to see

-Wdate-time in CPPFLAGS, which is used to seed SWIG_CPPFLAGS. Swig doesn't

understand this switch, so continue the current whack-a-mole approach of

filtering out unsupported switches in SWIG_CPPFLAGS.

[0]: https://reproducible-builds.org/

* configure.ac

(SWIG_CPPFLAGS): Filter out -Wdate-time

* configure.ac: Add -Wno-unused-const-variable as we use const variables

in several internal header files and recent gcc will issue warnings.

* trunk/configure.ac

Fix message to reflect reality (since before 1.0).