configure.ac

Checkout Tools
  • last updated 8 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1817042 is being indexed.

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).

Rename the ill-defined SVN_LIBSVN_CLIENT_LINKS_* defines to an

easier to maintain SVN_LIBSVN_RA_LINKS_*. LIBSVN_CLIENT didn't

link any of this since well before 1.0.

* trunk/build/generator/gen_win_dependencies.py

* trunk/configure.ac

* trunk/subversion/libsvn_ra/ra_loader.c

* trunk/subversion/libsvn_ra_local/ra_plugin.c

* trunk/subversion/svn_private_config.hw

Update references.

  1. … 4 more files in changeset.
Merge the 'svnmover' prototype from the 'move-tracking-2' branch to trunk.

See the dev@ email thread "Merge 'svnmover' demo tool to trunk" started on

2015-11-10, archived at e.g. <http://mail-archives.apache.org/mod_mbox/subversion-dev/201511.mbox/%3CCAEcU=1YE5Ci02j_4aAeB_roS1X0H2QWPP3juu0exjVJ-FGCLyg@mail.gmail.com%3E>.

This is a reintegration (performed as an automatic merge) followed by

reverting the unwanted parts. As such, those unwanted parts (such as shim

insertions in several libraries) will be treated as 'record-only merged' and

will not be picked up by any subsequent automatic merge to trunk.

A brief description of the changes follows.

* build.conf

Adjust to build the new files.

* configure.ac

Adjust compiler warning flags to not warn about passing or returning a

structure, because some of the code does so.

* LICENSE

Add the licence text for the embedded 'linenoise' library.

* notes/move-tracking/README

New file, describing this work.

* subversion/include/private/svn_branch.h,

subversion/include/private/svn_branch_compat.h,

subversion/include/private/svn_branch_impl.h,

subversion/include/private/svn_branch_nested.h,

subversion/include/private/svn_branch_repos.h,

subversion/include/private/svn_element.h

New files.

* subversion/libsvn_delta/branch.c,

subversion/libsvn_delta/branch_compat.c,

subversion/libsvn_delta/branch_migrate.c,

subversion/libsvn_delta/branch_nested.c,

subversion/libsvn_delta/branch_repos.c,

subversion/libsvn_delta/element.c

New files.

* subversion/include/private/svn_cmdline_private.h

subversion/libsvn_subr/cmdline.c

(svn_cmdline__stdin_is_a_terminal,

svn_cmdline__stdout_is_a_terminal,

svn_cmdline__stderr_is_a_terminal): New.

* subversion/tests/cmdline/svnmover_tests.py

New file.

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

(run_and_verify_svnmover,

run_and_verify_svnmover2): New.

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

(svnmover_binary,

run_svnmover): New.

(execute_tests): Initialize 'svnmover_binary'.

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

(State): Add 'rename' and 'from_eids' methods.

(StateItem): Add an 'eid' attribute.

* tools/dev/svnmover

New tool.

  1. … 25 more files in changeset.
Use similar detection for a few system headers on Windows and other platforms,

to avoid problems whenever we want to reuse this code and to make it easier

to fix Windows specifics in one place.

* configure.ac

Check for stdint.h instead of the less likely to exist inttypes.h, where

we use the include of stdint.h of.

* subversion/libsvn_subr/utf8proc/utf8proc.h

Use standard defines for the headers we need.

* subversion/svn_private_config.hw

Declare defines for Visual Studio.

  1. … 2 more files in changeset.
Require Python ≥2.7 for Subversion 1.9, part 1: documentation and dependency

version checks.

* INSTALL

(I.C. Dependencies in Detail):

Document that Python 2.7 is required.

Add statement about Python 3.x.

* subversion/tests/cmdline/README,

* subversion/bindings/swig/INSTALL:

Document that Python 2.7 is required.

* autogen.sh,

* build/find_python.sh,

* configure.ac,

* Makefile.in (check),

* subversion/tests/cmdline/svntest/__init__.py:

Update comments, version number checks, and error messages.

  1. … 7 more files in changeset.
Support the --enable-runtime-module-search configure option on Mac OS X.

OSX shared libraries have a MAJOR.SOVERSION.dylib suffix instead of the

MAJOR.so.SOVERSION more common on ELF platforms.

* configure.ac (SVN_DSO_SUFFIX_FMT): New platform-specific variable.

* subversion/libsvn_fs/fs-loader.c (load_module),

* subversion/libsvn_ra/ra_loader.c (load_ra_module):

Use SVN_DSO_SUFFIX_FMT to construct the library name.

  1. … 2 more files in changeset.
Bump required JDK version for JavaHL to 1.6.

* configure.ac (JAVA_OLDEST_WORKING_VER): Set to 1.6.

* build/ac-macros/java.m4 (SVN_FIND_JDK): Set Java source version to 1.6.

* subversion/bindings/javahl/README:

Update JDK and C++ version requirements. Update the rest of the

doc to match the current state of JavaHL.

  1. … 2 more files in changeset.
* configure.ac: Don't add -lstdc++ on FreeBSD 10 as it is not needed and

adding it causes linking to fail.

* configure.ac: Remove SVN_AVOID_CIRCULAR_LINKAGE_AT_ALL_COSTS_HACK, a

followup to r1506554.

* configure.ac: Followup to r1619075, we no longer need to disable the

string-plus-int compiler warning.

* configure.ac

(CMAINTAINERFLAGS): Add -Wbad-function-cast, warnings show up in FSX.

Follow-up to r1572261:

* configure.ac: Actually accept APR/APR-Util 1.6.* - 1.9.*. Delete obsolete comment.

Move SVN_UNUSED into a private header.

* subversion/include/svn_types.h

(SVN_UNUSED): Remove and move to ...

* configure.ac

(AH_BOTTOM): to here ...

* subversion/svn_private_config.hw

(SVN_UNUSED): and here.

  1. … 2 more files in changeset.
Fix GCC's "always_inline function might not be inlinable" warning.

As it turns out, these functions must also be marked as "inline"

if we want to enforce inlining.

Once at it, make the forced inline macro fall back to at least

APR-defined inlining (instead of no decoration at all) if there

is no way to enforce it.

* configure.ac

(AH_BOTTOM): Make SVN__FORCE_INLINE imply APR_INLINE when not in

SVN_DEBUG mode.

* subversion/svn_private_config.hw

(SVN__FORCE_INLINE): Fall back to APR_INLINE in non-SVN_DEBUG mode

when not using Visual C.

  1. … 1 more file in changeset.
Allow Swig to use Ruby 2.0 and 2.1.

Patch by: James McCoy <jamessan{_AT_}debian.org>

* build/ac-macros/swig.m4

(SVN_FIND_SWIG): Adjust include path for Ruby 2.

* configure.ac: Allow Ruby 2.0 and 2.1.

  1. … 1 more file in changeset.
Remove absurd warning message for ruby.

* configure.ac:

Ruby 1.9 support is hardly new now and only warning when using exactly 1.9.3

is silly.

Repeat the change made in r1577223, this time also tested on Linux.

Add libintl linker flags to SVN_INTL_LIBS on *nix builds.

Fixes linker flags recorded in libsvn_subr's pkg-config file

which never mentioned -lintl even if required.

* Makefile.in: Define SVN_INTL_LIBS.

* configure.ac: Set SVN_INTL_LIBS to the linker flags required

to link to libintl and export the value of SVN_INTL_LIBS

to the Makefile.

Revert part of r1577223 in an attempt to unbreak the Unix build.

* configure.ac: Don't set SVN_INTL_LIBS thus making it always empty.