diff --git a/contrib/subversion/.editorconfig b/contrib/subversion/.editorconfig index 13868c63e3f8..b000de12aff1 100644 --- a/contrib/subversion/.editorconfig +++ b/contrib/subversion/.editorconfig @@ -1,19 +1,20 @@ # top-most EditorConfig file # See http://editorconfig.org/ root = true [*] indent_style = space indent_size = 2 insert_final_newline = true trim_trailing_whitespace = false [**/Makefile*] indent_style = tab +indent_size = 8 [build-outputs.mk] indent_style = tab [build/generator/templates/build-outputs.mk.ezt] indent_style = tab diff --git a/contrib/subversion/.swig_pl_checked b/contrib/subversion/.swig_pl_checked deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/contrib/subversion/.swig_py_checked b/contrib/subversion/.swig_py_checked deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/contrib/subversion/.swig_rb_checked b/contrib/subversion/.swig_rb_checked deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/contrib/subversion/CHANGES b/contrib/subversion/CHANGES index 08398a98ac8b..656b1898d7d0 100644 --- a/contrib/subversion/CHANGES +++ b/contrib/subversion/CHANGES @@ -1,7248 +1,7314 @@ # To view a revision listed as (rXXXXXXX), visit: # https://svn.apache.org/rXXXXXXX # # To view an issue listed as (issue #XXXX), visit: # https://subversion.apache.org/issue-XXXX +Version 1.14.1 +(10 Feb 2021, from /branches/1.14.x) + User-visible changes: + - Client-side improvements and bugfixes: + * Fix non-deterministic generation of mergeinfo (issue #4862) + * Fix merge removing a folder with non-inheritable mergeinfo (issue #4859) + * Do not suggest --help -v for commands which do not support -v (r1882157) + * Fix invalid SQL quoting in working copy upgrade system (r1879198) + * Fix problems in human-readable file size formatting (r1878909, -18, -50) + * Improve an error message from svnmucc (r1877072) + * Fix 'svn info --xml' gives wrong 'source-right' of conflict (issue #4869) + * Fix filename encoding/quoting when invoking editor on Windows (r1885953) + * Convert filename for editor from UTF-8 to the locale's encoding (r1882234) + + - Server-side improvements and bugfixes: + * Fix authz doesn't combine global and repository rules (issue #4762) + * Make the hot-backup.py script work with Python 3 (r1878855, r1878859) + * Fix an uninitialized read in FSFS (r1880374) + * Make mailer.py work properly with Python 3 (r1884427 et al) + * Fix a potential NULL dereference in the config file parser (r1886019) + + Developer-visible changes: + - General: + * Restore support for building with APR 1.4 (r1881958, r1882128) + * Rewrite internal test data to avoid literal trailing spaces (r1875675) + * Remove use of os.dup2() from tests for Python 3.6 on Windows (r1883337) + * Note in INSTALL that non-release mode is required for Python 2 (r1877960) + * Make gen-make.py --debug work with Python 3 (r1876906) + * Make test suite run correctly with Python 3 on Windows (r1876707 et al) + * Fix compilation errors with Visual Studio 2008 (r1877259) + * Use Doxygen comment leader for comments with doxygen syntax (r1877794) + - Bindings: + * Fix win-tests.py to load Python 3 bindings with debug config (r1884642) + * Fix C4204 errors building swig-py with Python 3.9 on Windows (r1883570) + * Fix unable to load *.pyd files with Python 3.8.x on Windows (r1883335) + * Add SWIG4 support for SWIG Python binding on Windows (r1877338) + * Fix incorrect cache in JavaHL SVNBase::createCppBoundObject (r1882115) + * Fix crash in JavaHL JNI wrapper caused by object lifetimes (r1880886) + * autogen.sh: Remove .swig_*_checked files from release tarballs (r1878413) + * Avoid version check for Python if --without-swig is used (r1876662) + * siwg-py: Fix a syntax error for Python 3.6 and later (r1885112) + * Fix several crashes and JNI warnings in javahl TunnelAgent (r1886029) + Version 1.14.0 -(6 May 2020, from /branches/1.14.x) +(27 May 2020, from /branches/1.14.x) https://svn.apache.org/repos/asf/subversion/tags/1.14.0 User-visible changes: - Minor new features and improvements: * Experimental shelving feature is now disabled by default (r1875039) * Reinstate support for experimental shelving v2 from SVN 1.11 (r1875037) * Introduce 'svnadmin build-repcache' command (r1875921 et al) - Client-side improvements and bugfixes: * Add 'changelist' option to 'svn info --show-item' (r1869481) * Allow simultaneous use of 'svn log' --quiet and --diff options (r1871916) * Fix 'svn info' for file that was inside replaced directory (issue #4837) * Don't abort if the server redirects to a non-canonical URL (r1873375) * Fix merge assertion failure in svn_sort__array_insert (issue #4840) * Escape filenames when invoking $SVN_EDITOR (r1874057 et al) * Small performance optimization for FSFS rep-cache.db (r1875918) * Fix a crash seen when using git-svn with kwallet (r1875680) - Server-side improvements and bugfixes: * Fix 'svnadmin load --normalize-props' for versioned properties (r1868203) * mailer.py: prevent SMTP errors from impeding later emails (issue #1804) * mailer.py: Add option to specify the SMTP port to connect to (r1872398) * Make svn-backup-dump.py work on Python 3 * validate-files.py: Fix handling for non-ASCII characters (r1874393) * Fix an undefined behavior problem in FSFS caching code (r1876054) Developer-visible changes: * Require at least version 1.5 of APR (r1874094) * Support Python3 in the py-swig bindings; requires py3c (r1869354 et al) * Support building with SWIG 4 on Python 3.x (r1869853) * Fix svnserveautocheck for Python 3 (r1868151) * contribulyze.py: Support Python 3 in addition to Python 2 (r1871211) * Fix Proc.new warnings in Ruby bindings with Ruby >= 2.7 (r1876020) Version 1.13.0 (30 Oct 2019, from /branches/1.13.x) https://svn.apache.org/repos/asf/subversion/tags/1.13.0 User-visible changes: - Minor new features and improvements: * New 'svnadmin rev-size' command to report revision size (r1857624) * In 'svn help', hide experimental commands and global options (issue #4828) * Add a hint about mod_dav_svn misconfiguration (r1866738) * Performance improvement for 'svn st' etc., in WC SQLite DB (r1865523) - Client-side bugfixes: * Windows: avoid delays in SSL certificate validation override (r1863018) * Fix 'svn patch' setting mode 0600 on patched files with props (r1864440) * Fix "svn diff --changelist ARG" broken in subdirectories (issue #4822) * Fix misleading 'redirect cycle' error on a non-repository URL (r1866899) - Server-side bugfixes: * svnserve: Report some errors that we previously ignored (r1866062) * Make server code more resilient to malformed paths and URLs (r1866318 et al) * Make dump stream parser more resilient to malformed dump stream (r1866951) * mod_dav_svn: Fix missing Last-Modified header on 'external' GET requests (r1866425) - Client-side and server-side bugfixes: * Fix excessive memory usage in some cases reading binary data (r1866950) * Win32: fix svn_io_file_rename2() spinning in a retry loop (r1865518) - Other tool improvements and bugfixes: * svn_load_dirs.pl: do not show password; fix cleanup (r1863262, r1863392) Developer-visible changes: * New svn_fs_ioctl() API for FSFS stats, dump/load index, rev-size (r1857435) Version 1.12.2 (24 Jul 2019, from /branches/1.12.x) https://svn.apache.org/repos/asf/subversion/tags/1.12.2 User-visible changes: * Fix conflict resolver bug: local and incoming edits swapped. (r1863285) * Fix memory lifetime problem in a libsvn_wc error code path. (r1863287) * Faster Windows file existence checks, improving 'svn st' etc. (r1863289) Developer-visible changes: * Allow generating Visual Studio 2019 projects (r1863286) * Fix build with APR 1.7.0. (r1860377) * Fix building Subversion with Visual Studio 2005 and 2008. (r1863288) * Allow svnserve's 'get-deleted-rev' API to return 'not deleted'. (r1863290) Version 1.12.1 (Not released; see changes for 1.12.2.) Version 1.12.0 (12 Apr 2019, from /branches/1.12.x) https://svn.apache.org/repos/asf/subversion/tags/1.12.0 User-visible changes: - Major new features: - Minor new features and improvements: * 'move vs. move' merge conflicts can now be resolved (r1846851, r1851913) * 'svn --version --verbose' shows loaded libraries on Linux (r1843774) * 'svnrdump' can read/write a file instead of stdin/stdout (r1844906) * 'svn list' tries to not truncate the author's name (r1847384 et al.) * 'svn list' can show sizes in base-2 unit suffixes (r1847384 et al.) * 'svn info' shows the size of files in the repository (r1847441 et al.) * 'svn cleanup' can remove read-only directories (#4806, r1854072 et al.) - Client-side bugfixes: * Repos-to-WC copy with --parents works with absent target (r1843888) * Repos-to-WC copy from foreign repo with peg/operative revs (#4785) - Server-side bugfixes: * Ignore empty group definitions in authz files (#4802, r1851687) - Client-side and server-side bugfixes: - Other tool improvements and bugfixes: * svnauthz: warn about empty groups in authz files (#4803, r1851823) * Storing passwords in plain text on disk is disabled by default (r1845377) Developer-visible changes: - General: * Updated the required libtool version to 2.x (r1845716) * get-deps.sh: Remove references to Googlemock and Googletest (r1849200) * All C++ code is compiled in C++11 mode by default (r1849202) - Bindings: * JavaHL: Fixed potential core dump in ISVNClient.diff (r1845408) * JavaHL: Let clients decode file contents from ISVNClient.blame (r1851333) Version 1.11.1 (11 Jan 2019, from /branches/1.11.x) http://svn.apache.org/repos/asf/subversion/tags/1.11.1 User-visible changes: - Minor new features and improvements: * Conflict resolver support for added vs unversioned file (r1845577) * Conflict resolver support for unversioned directories (r1846299) * Improve help for 'svn add' and the '-N' option (r1842814 et al.) * Improve display of Mac OS name in 'svn --version --verbose' (r1842334) - Client-side bugfixes: * Fix: repos-to-WC copy with --parents doesn't create dirs (#4768) * Fix: foreign repo copy with peg/operative revisions (#4785) * Fix: foreign repo copy of file adding mergeinfo (#4792) * Fix: assertion failure using -rPREV on a working copy at r0 (#4532) * Fix: tree conflict message ends a sentence with a colon (#4717) - Server-side bugfixes: * Fix CVE-2018-11803: malicious SVN clients can crash mod_dav_svn * Fix: unexpected SVN_ERR_FS_NOT_DIRECTORY errors (#4791) * Fix: mod_dav_svn's SVNUseUTF8 had no effect in some setups (r1844882) * Fix crash in mod_http2 (#4782) - Other tool improvements and bugfixes: * svndumpfilter: Clarify error messages by including node path (r1845261) - Bindings bugfixes: * JavaHL: Fix crash in client code when using external diff (r1845408) Developer-visible changes: - General: * Fix build on systems without python in $PATH (r1845555) * Fix compiler warnings about indentation (r1845556 et al.) - API changes: (none) Version 1.11.0 (30 Oct 2018, from /branches/1.11.x) http://svn.apache.org/repos/asf/subversion/tags/1.11.0 User-visible changes: - Major new features: * Shelving is no longer based on patch files (experimental) (issue #3625) * Checkpointing (experimental) (issue #3626) * Viewspec output command (experimental) (issue #4753) - Minor new features and improvements: * Improvements to tree conflict resolution (issue #4694 #4766 ...) * 'patch' can now read non-pretty-printed svn:mergeinfo diffs (r1822151) * Better error when http:// URL is not a Subversion repository (r1825302) * Add 'schedule' and 'depth' items to 'svn info --show-item' (r1827032) * Allow the client cert password to be saved (r1836762) - Client-side bugfixes: * Fix a crash in a repo:WC summary diff of a local copy (r1835218) * Fix double diff headers (r1836746) * Tree conflict resolver: avoid endless scan in some cases (r1839662) - Server-side bugfixes: * svnadmin dump shouldn't canonicalize svn:date (issue #4767) * 'svnadmin verify --keep-going --quiet' shows an error summary (r1837790) * Let 'svnadmin recover' prune the rep-cache even if disabled (r1838813) - Client-side and server-side bugfixes: * Fix pattern-matching of top level path in listing with search (r1830599) * Allow commands like 'svn ci --file X' to work when X is a FIFO (r1836306) - Other tool improvements and bugfixes: * tools/client-side/bash_completion: Add '--password-from-stdin' (r1820045) Developer-visible changes: - General: * new tool: tools/dist/edit-N-log-messages (r1819207) * tools/dev/unix-build/Makefile.svn: various fixes * Expose the diff option 'pretty_print_mergeinfo' in APIs (r1822014) * In 'revert' APIs, choose whether to delete schedule-add nodes (r1822534) - Bindings: * Fix Python binding fs.FileDiff behaviour with python-future (r1823802) * Fix Python unit test, fs.SubversionFSTestCase, on Windows (r1824410) * Bump minimum JDK version required for JavaHL to 1.8 (r1831895) * Enable building against Java 10 (r1841180 et al) * Fix a potential crash in JavaHL (issue #4764) +Version 1.10.7 +(10 Feb 2021, from /branches/1.10.x) + User-visible changes: + - Client-side bugfixes: + * Fix 'svn patch' setting mode 0600 on patched files with props (r1864440) + * Fix invalid SQL quoting in working copy upgrade system (r1879198) + * Fix non-deterministic generation of mergeinfo (issue #4862) + * Fix a crash seen when using git-svn with kwallet (r1875680) + * Fix merge removing a folder with non-inheritable mergeinfo (issue #4859) + * Fix 'svn info --xml' gives wrong 'source-right' of conflict (issue #4869) + + - Server-side bugfixes: + * mod_dav_svn: install cleanup handler for FS warning logging (r1865266) + * mod_dav_svn: Fix missing Last-Modified header on 'external' GET requests (r1866425) + * Fix formatting type size mismatches in FSFS (r1865987, -8) + * Fix an undefined behavior problem in FSFS caching code (r1876054) + * Fix a potential NULL dereference in the config file parser (r1886019) + + Developer-visible changes: + * Fix Requires(.private) fields in pkg-config files (r1863987, -90) + * Fix crash in JavaHL JNI wrapper caused by object lifetimes (r1880886) + * Fix an EOL issue in tests on Windows (r1881985 et al) + Version 1.10.6 (24 Jul 2019, from /branches/1.10.x) https://svn.apache.org/repos/asf/subversion/tags/1.10.6 User-visible changes: * Allow the use of empty groups in authz rules. (r1854883) * Fix conflict resolver case with move vs move conflicts. (r1863297) * Fix #4760: Missing children in svnadmin dump --include/exclude. (r1863298) * Fix #4793: authz rights from inverted access selectors. (r1854882) * Fix conflict resolver bug: local and incoming edits swapped. (r1863300) * Fix #4806: Remove on-disk trees with read-only dirs. (r1863299) * Fix memory lifetime problem in a libsvn_wc error code path. (r1863302) * No tree conflict when 'svn up' deletes unmodified dir with unversioned items. (r1863296) * Remove a useless common ancestor search from conflict resolver. (r1863294) Developer-visible changes: * Allow generating Visual Studio 2019 projects (r1863304) * Fix a use-after-free in mod_dav_svn's logging of FS warnings. (r1863292) * Fix "unused static function" warning in release-mode builds. (r1854884) * Fix build with APR 1.7.0. (r1863303) * Fix issue #4804: spurious SQLite-related test failures. (r1863295) * Allow svnserve's 'get-deleted-rev' API to return 'not deleted'. (r1863305) * Silence a deprecation warning from amalgamated SQLite on macOS. (r1863291) Version 1.10.5 (Not released; see changes for 1.10.6.) Version 1.10.4 (11 Jan 2019, from /branches/1.10.x) http://svn.apache.org/repos/asf/subversion/tags/1.10.4 User-visible changes: - Minor new features and improvements: * Conflict resolver support for added vs unversioned file (r1845577) * Conflict resolver support for unversioned directories (r1846299) - Client-side bugfixes: * Fix: repos-to-WC copy with --parents doesn't create dirs (#4768) * Fix: foreign repo copy with peg/operative revisions (#4785) * Fix: foreign repo copy of file adding mergeinfo (#4792) * Fix: assertion failure using -rPREV on a working copy at r0 (#4532) * Fix: tree conflict message ends a sentence with a colon (#4717) - Server-side bugfixes: * Fix CVE-2018-11803: malicious SVN clients can crash mod_dav_svn * Fix: unexpected SVN_ERR_FS_NOT_DIRECTORY errors (#4791) * Fix: mod_dav_svn's SVNUseUTF8 had no effect in some setups (r1844882) * Fix crash in mod_http2 (#4782) - Other tool improvements and bugfixes: * svndumpfilter: Clarify error messages by including node path (r1845261) - Bindings bugfixes: * JavaHL: Fix crash in client code when using external diff (r1845408) Developer-visible changes: - General: * Fix build on systems without python in $PATH (r1845555) - API changes: (none) Version 1.10.3 (10 Oct 2018, from /branches/1.10.x) http://svn.apache.org/repos/asf/subversion/tags/1.10.3 User-visible changes: - Minor new features and improvements: * Store the HTTPS client cert password (r1842578) - Client-side bugfixes: * Fix shelving when custom diff command is configured (issue #4758) * Fix conflict resolver crashes (issue #4744, r1842581, r1842582, r1842583) * Fix conflict resolver endless scan in some cases (r1842586) * Fix "Accept incoming deletion" on locally deleted file (issue #4739) * Fix "resolver adds unrelated moves to move target list" (issue #4766) - Server-side bugfixes: * Reject bad PUT before CHECKOUT in v1 HTTP protocol (r1841281) * Let 'svnadmin recover' prune the rep-cache even if disabled (r1842585) - Client-side and server-side bugfixes: * Allow commands like 'svn ci --file X' to work when X is a FIFO (r1841282) - Other tool improvements and bugfixes: * 'svnadmin verify --keep-going --quiet' shows an error summary (r1842584) * Fix error in german translation for 'svn help merge' (r1837038) Developer-visible changes: - General: * Python tests use the current python executable (r1842626) Version 1.10.2 (20 Jul 2018, from /branches/1.10.x) http://svn.apache.org/repos/asf/subversion/tags/1.10.2 User-visible changes: - Client-side bugfixes: * Correctly claim to offer Gnome Keyring support with libsecret (r1831142) * Fix segfault using Gnome Keyring with libsecret (r1835782) * Fix JavaHL local refs capacity warning when unparsing externals (r1831143) * Since on Windows Subversion does not handle symlinks, never check for reparse points (r1835701) * Prune externals after 'update --set-depth=exclude' (r1835702) * Fix issue #4740, "conflict resolver searches too far back ..." (r1835703) - Server-side bugfixes: * Fix regression issue #4741: authz group refers to multiple groups (r1831220) Developer-visible changes: - General: * Regression test and FSFS checksum test, part of issue #4722 (r1828043) * Explicit error on configure --without-lz4 or --without-utf8proc (r1831604) * configure.ac: Fix regression relating to path to 'rdoc' (r1833486) * Ensure consistent use of $PYTHON during build and test (r1833487) * Fix libsvn_auth_gnome_keyring.pc when built using libsecret (r1835781) - Bindings: * Fix regression in use of pre-generated Swig bindings in release builds (r1833488) Version 1.10.1 (Not released; see changes for 1.10.2.) Version 1.10.0 (13 Apr 2018, from /branches/1.10.x) http://svn.apache.org/repos/asf/subversion/tags/1.10.0 See the 1.10 release notes for a more verbose overview of the changes since the 1.9 release: https://subversion.apache.org/docs/release-notes/1.10.html User-visible changes: - Major new features: * Better interactive conflict resolution for tree conflicts (r1687489 et al) * Wildcards and improved performance in path-based authorization (r1776832) * New experimental 'svn shelve' command (issue #3625) - Minor new features and improvements: * svnbench: Show time taken & bytes transferred (r1703383, r1710586) * New 'svnadmin dump' options to include/exclude paths (r1811992 et al) * New '--normalize-props' option for 'svnadmin dump' (r1807836 et al) * New 'svnadmin 'load-revprops', 'dump-revprops' subcommands (r1694191, -225) * New '--no-flush-to-disk' option for 'svnadmin load' (r1736357, -7357) * New '--file' option for several svnadmin subcommands (r1738021) * New '--max-request-size', '--max-response-size' options for svnserve (r1714330, -333) * New '-rN' option for 'svnadmin lstxns' (r1703699) * New '--search' option for fast 'svn ls' searches (r1767186 et al) * Add '--search' option support to 'svnbench null-list' (r1767202) * New '-M' option for 'svnlook tree' (r1708222) * New '--skip-unchanged' option for 'svnsync copy-revprops' (r1692655) * 'svn log --search' now ignores case and diacriticals (r1731300, r1735614) * Improved performance of server-side log processing (r1732768, r1731656) * diff3: Reduce processing time and memory usage (r1731659) * ra_serf: Adjustments for serf versions with HTTP/2 support (r1716400) * ra_serf: Send svndiff1 deltas during commit (r1704317, r1704613, r1791290) * ra_serf: Stream svndiff deltas w/o creating temporary files (r1803143 et al) * ra_serf: Don't necessarily request full MERGE responses (r1806017 et al) * 'svn patch': Parse binary diffs in git-style patches (r1703925) * 'svnadmin info' now reports latest revision in the repository (r1697953) * ra_svn: Various performance-related tweaks (r1694490) * Optimize svndiff parser (r1685063) * 'svn status' without -v: Stop showing uninteresting deletions (r1664533) * Save a few cycles in svn_stringbuf_set() (r1759177) * windows: Use the Unicode Windows API (r1756193) * windows: Distinguish out-of-memory error from abort() (r1724784, -809) * windows: Explicitly release file locks (r1702089) * windows: Correctly check result from LoadLibrary() call (r1755983) * Remove Windows-specific slowdown during pristine cleanup (r1701641) * FSFS: Optionally cache node properties without full-text cache (r1723715) * FSFS: Open transaction's proto revision in write-only mode (r1759135) * FSFS: Avoid checksum calculations if logical addressing is used (r1756377) * FSFS: Do not read very long change lists in block read mode (r1746012) * FSFS: Avoid double DAG lookup (r1711582) * FSFS: Avoid double cache lookups (r1681974, r1710370) * FSFS: Increase default revprop pack size from 4k to 16k (r1709799) * FSFS: Speed up revprop access (r1707986 et al) * FSFS: Disable representation sharing for directories (r1706619) * FSFS: Speed up transaction processing for large directories (r1706617) * FSFS: Tune format 7 pack ordering heuristics (r1706615) * FSFS: Reduce I/O overhead during history traversal (r1703237) * FSFS: Use native Windows API to guarantee data is flushed (r1701053) * FSFS: Warn if a possible rep-cache SHA1 collision is detected (r1674673) * FSFS: Optimize revprop cache filling strategy under high load (r1795324) * FSFS: New "verify-before-commit" fsfs.conf option (r1795351) * FSFS: New format 8 with various performance improvements (r1801940 et al) * FSFS/FSX: Chunked read support for changed paths lists (r1746026, -4987) * FSFS/FSX: Improvements to cache implementation (r1694489) * FSX: Add checksums to packed revprop manifests and files (r1713132, -9717) * FSX: Significantly reduce size of packed revprop manifest data (r1713109) * FSX: Improved on-disk representation of property lists (r1717427) * FSX: New in-repository representation of directories (r1712967) * FSX: Make 'svnadmin recover' discard all transactions (r1712937) * FSX: Reduce number of fsync operations (r1711354 et al) * mod_dav_svn: Improve performance and memory usage of PROPFIND (r1721732) * mod_dav_svn: Show process-id on Windows in /svn-status page (r1718567) * mod_dav_svn: Advertise svndiff1 support to clients (r1704891, r1791285) * mod_dav_svn: Remove disk I/O to TMPDIR during first commit (r1716240) * svnsync: Fix assertion failure with up-to-date repositories (r1727140) * ra_serf: Parallel requests for text and property changes (r1716575) * svnserve: Remove disk I/O to TMPDIR during first commit (r1716240) * Triple performance of URI escaping (r1710099, -103) * 'svn blame': Optimize a bit on the server side (r1711666) * 'svn cleanup': Add --vacuum-pristines option (r1802787 et al) * 'svn diff --git': Show diffs of symlinks like git and hg (r1706372) * 'svn patch': Capable of handling git-like symlink changes (r1706446) * 'svn patch': Improve detection of additions and deletions (r1706623) * 'svn patch': Handle zero-byte files vs deleted files (r1705856) * 'svn diff --git': Produce 'rename from/to' headers (r1706855) * 'svn diff --git': Produce proper mode headers (r1706041) * 'svn lock', 'svn unlock': Take the -q option (r1796288) * 'svn help': improved wording and consistency (r1802989 et al) * 'svn': Add a new '--accept recommended' option. (r1805623) * 'svn': --non-interactive uses recommended tree conflict resolution (r1805620) * Evaluate 'old mode' and 'new mode' lines from git-syle diffs (r1705391) * svnrdump, svndumpfilter: Enable buffered stdin (r1703074) * ra_serf: Receive svndiff1 and gzip compressed deltas (r1791282, -3, -4) * svnadmin: 'lock', 'unlock', 'rmlocks': Take the -q option (r1796406) * New svndiff2 binary delta format using lz4 compression (r1801938, et al) * gpg-agent: Support gpg ≥2.1.13 and unset GPG_AGENT_INFO (r1795087) * Add 'http-compression=auto' client config option as default (r1803899 et al) * Speed up processing of mergeinfo (r1802470 et al) * Check for invalid 'xt' fields in x509 certs (r1809290) * New '--password-from-stdin' option for 'svn' (r1819093) - Client-side bugfixes: * svnbench: Honour the '--with-no-revprops' option (r1709593) * ra_serf: Fix segfault when running over HTTP v1 (r1766089) * ra_serf: Keep small svndiffs in memory during commit (r1724455) * ra_serf: Improve error messages related to lock operations (r1716450) * ra_serf: Work around a bug in serf bucket handling (r1714806) * ra_serf: Fix lock token handling for file-path commits (r1815799 et al) * Raise a malfunction instead of segfaulting with corrupt wc.db (r1749887) * Fix check for unversioned obstructions blocking file externals (r1735932) * 'svn patch' bugfixes: + Fix behaviour if a reject file can't be created (r1725948) + Describe adds and removes in reject file headers (r1707034) + Detect recorded moves that are already applied (r1706893) + Detect already applied patches in edge cases (r1706687) + Fix handling of missing trailing context (issue #4609) + Fix interaction of moves and property changes (r1706875) + Fix output for reordered hunks (issue #4533) + Prevent from overwriting existing reject files (r1706600) + Improve handling of added properties (r1706598) + Improve handling of rejected file deletions (r1706221) + Fix --dry-run with replaced files (r1706217) + Fix applying prop changes which should conflict (r1705733) + Fix duplicate notifications when adding directories (r1704883) + Fix duplicate notifications when patching svn:executable prop (r1706078) + Fix notifications when adding/removing properties (r1705698) + Make handle already applied property patches (r1705692) + Change some notifications to 'U' instead of 'G' (r1706693) + Don't create file if git-style patch indicates modification (r1706005) + Parse any properties following svn:mergeinfo (r1706825) + Fix potential unbounded memory usage in parser (r1705979) + Fix problems with --git diffs applied in reverse (r1704854, -88) + Fix removal of EOL if final patch context line has no EOL (#4315) * 'svn diff --git': Fix file permission modes to match git and hg (r1695384) * 'svn diff --git': added/deleted filenames are never /dev/null (issue #4689) * Fix a problem with relocating some externals (r1723385) * Fix 'svn diff URL@REV WC' wrongly looks up URL@HEAD (issue #4597) * Fix 'svn diff --no-diff-added' shows properties as added (issue #4596) * Properly raise text merge conflicts with file externals (r1680245) * Fix 'svn diff' with local directories marked incomplete (r1674413 et al) * ra_svn/ra_serf: Make negative log limits work as documented (r1665530) * ra_svn: Eliminate unnecessary URL reparenting (r1779611, r1779611) * ra_svn: Use svndiff2 deltas when supported on both ends (r1803269 et al) * Handle invalid revision numbers consistently across RA layers (r1665328) * Handle commits to revs > HEAD consistently across RA layers (r1664698) * Eliminate one client/server roundtrip from checkouts of HEAD (r1779620) * Expose some error messages generated by github's SVN server (r1707164) * 'svnfsfs stats': Show average lengths of delta chains (r1705739) * svnmucc: Fix crash during application teardown (r1795727) * Fix assertion when exporting a working copy containing relative externals (r1802316) - Server-side bugfixes: * Fix checksum validation error due to data eviction from cache (r1781694) * FSFS pack: Use unbuffered file streams in a couple of places (r1759405) * FSFS: Reduce excessive amount of read and seek syscalls (r1758979, -9399) * FSFS: Reduce memory footprint of cached directories (r1725179) * FSFS: Add various checks for integer overflows (r1714372, -32, -34) * FSFS: Detect a very unlikely case of item index corruption (r1716973) * FSFS: Make handling of revprop size information more resilient (r1716784) * FSFS: Don't re-parse a directory which just got committed (r1706679) * FSFS: Handle some known quirks in committed node revisions (r1673875) * FSFS format 7: Verify item types more thoroughly (r1796160) * FSFS: Fix false positive "Not a directory" error involving file moved and replaced by dir (issue #4677) * FSFS: Fix crash accessing revprops with --memory-cache-size=0 (r1795164) * FSFS: Fix issue #4623 for FSFS. (r1813794 et al) * mod_dav_svn: Omit Cache-Control HTTP header for HEAD URLs (issue #4514) * mod_dav_svn: Reduced memory consumption for DAV merge responses (r1727790) * mod_dav_svn: Don't set a Last-Modified header in GET responses (r1724790) * mod_dav_svn: Actually use FSFS transaction directory cache (r1723720) * mod_dav_svn: Do not insert newlines in base64 encoded responses (r1712223) * Fix insertion of very large items into the membuffer cache (r1717337, -8) * Fix capacity check of the membuffer cache's prefix pool (r1714356) * Prevent paths containing newlines from being committed (r1662585) * Fix for properties: Null updates break last-changed-revision (issue #4700) * 'svnfsfs stats': Fix false positive checksum errors reading old revisions (r1785904) * 'svnfsfs stats': Fix support for pre-v4 FSFS repositories. (r1816966) * svnadmin, svnfsfs: Detect invalid arguments to -M (r1787023, r1787045) * svnlook, svnserve: Detect invalid arguments to -M (r1787023, r1787045) * svnadmin: Output locked paths in canonical form (r1796420) * svnadmin: Output locked paths correctly encoded (r1797122) * svn: propdel, propset: Transcode property names on output (r1797186) * svnserve: Make use-sasl=true a fatal error in SASL-less builds. (r1803188) - Client-side and server-side bugfixes: * Fix integer overflow check with >= 1G mergeinfo ranges per path (r1714380) * Fix integer overflow checks on WoW64 platforms (r1714372) * Fix bug with canonicalizing Window-specific drive-relative URL (r1692262) * In file:// URLs, allow '\' directly after Windows drive letter (r1692259) * Fix segfault with recursive configuration value definitions (issue #4543) * FSFS: Improve error messages when DAG lookup fails (r1795120) * Transcode command-line arguments to UTF-8 (r1797190, r1797362, et al) * Fix segfault on x509 certificate with empty name (r1798157) * Fix segfault with invalid URLs in svn:externals (r1803471) * Windows: Failure to write files might remain undetected (r1806014) - Other tool improvements and bugfixes: * New svn-mergeinfo-normalizer tool (r1695992 et al) * Allow configuring mailer.py to use SMTP SSL (r1777846) * svnmucc can now delete directories with deleted children (issue #4666) * svn-vendor.py: Minor enhancements, mostly in treating symlinks (r1732669) * bash_completion: Better URL completion (r1701494) * bash_completion: Complete arguments to 'svn info --show-item' (r1698276) * fsfs-stats: New 1.8-compatible wrapper for 'svnfsfs stats' (r1802032) * Drop support for upgrading working copies created with Subversion 1.7 (r1807584 et al) Developer-visible changes: - General: * windows: Removed support for building with Visual Studio 6.0 (r1703419) * Fix .py scripts throughout the source tree for Python 3 (r1741723 et al) * Support memcached on Windows with APR-util 1.3 or later (r1674626 et al) * Don't require GNU-specific sed(1) extensions during the build (r1693159) * get-deps.sh: download Googlemock and Googletest from GitHub (r1746303) * windows: Add autodetection for 'zlibstat.lib' (r1783704) * windows: Compile libsvn_fs_* as DLLs (r1696758, -83) * windows: Allow building against OpenSSL 1.1.0 (r1814724 et al) * OS X: Silence compile-time deprecation warnings with SASL (r1739649) * OS X: Silence ranlib warnings about disabled WIN32 code (r1809792) * 'make check GLOBAL_SCHEDULER=1' will run many tests in parallel (r1716399) * unix: New '--enable-apache-whitelist' configure script option (r1732294) * OS X: Support 'configure --enable-runtime-module-search' (r1677273) * tests: Allow tests to be run over HTTP/2 (r1710707) * tests: httpd compile-time and run-time version may differ (r1808955 et al) * tests: Add pre-cooked repos for all FSFS versions. (r1816402 et al) * tests: Add FSFS_DIR_DELTIFICATION option. (r1813897) * Add basic tests for svn_xml_parser_t API (r1765214) * Unbreak the test suite on Python 3 (r1743034, -81, et al) * Make the test suite work when checked out of a git repository (r1771118) * Allow Apache HTTPD with mod_deflate in testsuite on Windows (r1758776) * Support modern utilities for finding free TCP ports for tests (r1684649) * The C test scheduler is more efficient in SMP environments (r1775555) * The C tests convert paths from/to UTF-8 more efficiently (r1775642) * Add INSTALL instructions for building with OpenSSL 1.1.0 (r1778313) * Improved INSTALL instructions for Windows (r1703470, -2, -3, -4, et al) * Updated INSTALL instructions (r1691712) * windows: Support Visual Studio 2017 (r1786653, r1786669) * gnome-keyring: Support libsecret in preference to libgnome-keyring (r1798004) * kwallet: Support KDE 5 in preference to KDE 4 (r1798731) * kwallet: Fix KDE5 support with clang 3.8 (r1802536 et al) * kwallet: Add --with-kwallet=INCDIR:LIBDIR build option (r1802646) * Rename cxxhl bindings 'make tests' to avoid confusion with 'make test' (r1800849) * 'make check': Allow testing with FSFS compression (r1801936) * svnserveautocheck.sh: Support out-of-tree builds when running a single test file (r1802081) * Distribution artifacts now prepared with swig 3.0.10 (r1802135) * SQLite: Use https:// links to download amalgamation sources (r1817043) * Create reproducible tarballs (r1804618 et al) * Disable static builds of the apache and auth provider modules (r1802612) * utf8proc: Update to version 2.1.0 (r1809090 et al) * utf8proc: Build against the system library by default (r1803210 et al) - API changes: * New svn_client_conflict_* API functions for the new conflict resolver. * New svn_repos_fs_get_mergeinfo2() with streamy access (r1780810 et al) * New streamy svn_repos_get_logs5() API function (r1730389, -1163) * New streamy svn_fs_paths_changed3() API function (r1727822, r1745055) * New svn_client_list4() API function (r1767186) * New svn_ra_list() API function (r1767190) * New svn_repos_list() API function (r1765088) * New svn_stream_contents_checksum() API function (r1755486, -6651) * New svn_io_file_get_offset() API function (r1719269) * New svn_base64_encode2 API function (r1711517) * New svn_fs_create2() API function (r1710631) * New svn_string_from_stream2() API function (r1710065) * New svn_io_write_atomic2() API function (r1703142) * New svn_stream_for_stdin2() API function (r1702983) * New svn_io_file_rename2() API function (r1701017) * New svn_error_quick_wrapf() API function (r1662668) * New svn_repos_path_change_t type (r1802114) * New svn_repos_log_entry_t type (r1802114) * New svn_cstring_join2() API (r1806041) * New svn_txdelta_to_svndiff_stream() API (r1803140 et al) * svn_repos_parse_dumpstream3() now accepts NULL pointers (r1700180) * Return resettable streams from svn_stream_checksummed2(). (r1804807) * Fix svnserveautocheck&davautocheck when time is only a built-in (r1665652) - Bindings: * Configure the swig bindings only if swig has been enabled (r1751167) * Error if 'configure --with-swig' is used and swig is not found (r1700844) * Perl: Fix build with libraries in non-standard LD_LIBRARY_PATH (r1781588) * JavaHL can now get revision properties along with log messages (r1780819) * JavaHL: Allow access to constructors of a couple JavaHL classes (r1739704) * JavaHL: Correct some JNIEntry method names (r1706738) * Allow swig bindings scripts to configure the FSFS cache (r1709922) * Disable some swig wrappers that aren't working (r1700966) * JavaHL: Make StringArray nullable (r1785429) * JavaHL: Add missing exception checks (r1801108) * Ruby: Fix handling of NULL MD5 digests (r1811786) * Ruby: Detect versions up to 2.4 (r1806570) Version 1.9.12 (24 Jul 2019, from /branches/1.9.x) https://svn.apache.org/repos/asf/subversion/tags/1.9.12 User-visible changes: * No tree conflict when 'svn up' deletes unmodified dir with unversioned items. (r1863309) Developer-visible changes: * Allow generating Visual Studio 2019 projects (r1863311) * Fix a use-after-free in mod_dav_svn's logging of FS warnings. (r1863307) * Fix "unused static function" warning in release-mode builds. (r1854881) * Fix build with APR 1.7.0. (r1863310) * Fix issue #4804: spurious SQLite-related test failures. (r1863308) * Allow svnserve's 'get-deleted-rev' API to return 'not deleted'. (r1863312) * Silence a deprecation warning from amalgamated SQLite on macOS. (r1863306) Version 1.9.11 (Not released; see changes for 1.9.12.) Version 1.9.10 (11 Jan 2019, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.10 User-visible changes: - Client-side bugfixes: * Fix: repos-to-WC copy with --parents doesn't create dirs (#4768) * Fix: foreign repo copy with peg/operative revisions (#4785) * Fix: assertion failure using -rPREV on a working copy at r0 (#4532) * Fix: german translation for 'svn help merge' (r1837037) * Fix: prune externals after 'update --set-depth=exclude' (r1830883 et al.) * Fix: detection of GPG-agent (r1794166 et al.) * Fix: null updates don't update last-changed-revision (#4700) * Fix: merge "Unable to parse reversed revision range" (#4686) - Server-side bugfixes: * Fix: unexpected SVN_ERR_FS_NOT_DIRECTORY errors (#4791) * Fix: mod_dav_svn's SVNUseUTF8 had no effect in some setups (r1844882) * Fix: crash in mod_http2 (#4782) * Fix: 'svnadmin upgrade' of BDB: Error out on too-new formats (r1804013) * Fix: Enforce v1 HTTP protocol: error if PUT before CHECKOUT (r1833465) * Fix: Let 'svnadmin recover' prune rep-cache even if disabled (r1838813) * Add test and FSFS checksum verification for issue #4722 (r1826720 et al.) - Other tool improvements and bugfixes: * Install 'fsfs-stats' wrapper for 1.8 compat (r1802032 et al.) * Note that 'tools/client-side/detach.py' doesn't work on 1.8+ (r1696722) - Bindings bugfixes: * JavaHL: Fix crash in client code when using external diff (r1845408) * JavaHL: SSL server trust prompt: allow accepting temporarily (r1820718) Developer-visible changes: - General: (none) - API changes: (none) Version 1.9.9 (20 Jul 2018, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.9 User-visible changes: - Client-side bugfixes: * Fix SEGV for 'svn export -rN WC' with relative externals (r1803755) * Fix issue #4677: 'svn up' after a directory replaced a file (r1814248) * Fix segfault when no home directory is available (r1819199) * Performance: Make 'svn info' fast on old repository revisions (r1827690) * Fix RA-serf problem with proxy username and password (r1833571) - Server-side bugfixes: * svnadmin: Fix false errors on some valid LOCK_PATH arguments (r1803754) * Fix crash when exiting 'svnserve --config-file' (r1824405) * Fix issue #4722: false "filesystem is corrupt" error on commit (r1827688) * Reword confusing "nested" wording in an httpd.conf warning (r1835700) - Bindings bugfixes: * swig-py: svn.core.Stream supports raw binary file-like objects (r1820620) * swig-rb: Don't crash if svn_md5_digest_to_cstring returns NULL (r1823805) Developer-visible changes: - General: * Fix CVE-2017-9800: Malicious server can execute arbitrary command on client (r1804698) * Fix test failure if compile- and run-time HTTPD versions differ (r1820523) - API changes: (none) Version 1.9.8 (Not released; see changes for 1.9.9.) Version 1.9.7 (10 Aug 2017, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.7 User-visible changes: - Client-side bugfixes: * Fix arbitrary code execution vulnerability CVE-2017-9800 See for details. - Server-side bugfixes: (none) - Bindings bugfixes: (none) Developer-visible changes: - General: (none) - API changes: (none) Version 1.9.6 (5 Jul 2017, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.6 User-visible changes: - Client-side bugfixes: * cp/mv: improve error message when target is an unversioned dir (r1779948) * merge: reduce memory usage with large amounts of mergeinfo (issue #4667) - Server-side bugfixes: * 'svnadmin freeze': document the purpose more clearly (r1774109) * dump: fix segfault when a revision has no revprops (r1781507) * fsfs: improve error message upon failure to open rep-cache (r1781655) * fsfs: never attempt to share directory representations (r1785053) * fsfs: make consistency independent of hash algorithms (r1785737 et al) This change makes Subversion resilient to collision attacks, including SHA-1 collision attacks such as . See also our documentation at and . - Client-side and server-side bugfixes: * work around an APR bug related to file truncation (r1759116) - Bindings bugfixes: * javahl: follow redirects when opening a connection (r1667738, r1796720) Developer-visible changes: - General: * win_tests.py: make the --bin option work, rather than abort (r1706432) (regression introduced in 1.9.2) * windows: support building with 'zlibstat.lib' in install-layout (r1783704) - API changes: (none) Version 1.9.5 (29 Nov 2016, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.5 User-visible changes: - Client-side bugfixes: * fix accessing non-existent paths during reintegrate merge (r1766699 et al) * fix handling of newly secured subdirectories in working copy (r1724448) * info: remove trailing whitespace in --show-item=revision (issue #4660) * fix recording wrong revisions for tree conflicts (r1734106) * gpg-agent: improve discovery of gpg-agent sockets (r1766327) * gpg-agent: fix file descriptor leak (r1766323) * resolve: fix --accept=mine-full for binary files (issue #4647) * merge: fix possible crash (issue #4652) * resolve: fix possible crash (r1748514) * fix potential crash in Win32 crash reporter (r1663253 et al) - Server-side bugfixes: * fsfs: fix "offset too large" error during pack (issue #4657) * svnserve: enable hook script environments (r1769152) * fsfs: fix possible data reconstruction error (issue #4658) * fix source of spurious 'incoming edit' tree conflicts (r1760570) * fsfs: improve caching for large directories (r1721285) * fsfs: fix crash when encountering all-zero checksums (r1759686) * fsfs: fix potential source of repository corruptions (r1756266) * mod_dav_svn: fix excessive memory usage with mod_headers/mod_deflate (issue #3084) * mod_dav_svn: reduce memory usage during GET requests (r1757529 et al) * fsfs: fix unexpected "database is locked" errors (r1741096 et al) * fsfs: fix opening old repositories without db/format files (r1720015) - Client-side and server-side bugfixes: * fix possible crash when reading invalid configuration files (r1715777) - Bindings bugfixes: * swig-pl: do not corrupt "{DATE}" revision variable (r1767768) * javahl: fix temporarily accepting SSL server certificates (r1764851) * swig-pl: fix possible stack corruption (r1683266, r1683267) Developer-visible changes: - General: * add zlib discovery through pkg-config (issue #4655) * fix potential build issue with invalid SVN_LOCALE_DIR (issue #4653) * ruby: fix test failures with ruby >= 2.2 (r1766240) * fix link error with --disable-keychain on OS X (r1761755) * swig: enable building with SWIG >= 3.0.6 (r1721488 et al) * swig: fix building with -Wdate-time in $CPPFLAGS (r1722164) * update serf download URI in build scripts (r1700130 et al) * raise minimal httpd version from 2.0 to 2.2 (r1754190) Version 1.9.4 (28 Apr 2016, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.4 User-visible changes: - Client-side bugfixes: * diff: support '--summarize --ignore-properties' (part of issue #4567) * checkout: fix performance regression on NFS (r1710167) * gpg-agent: properly handle passwords with percent characters (issue #4611) * svn-graph.pl: fix assertion about a non-canonical path (r1729060 et al) * hot-backup.py: better input validation (r1721174, r1721175) * commit: abort on Ctrl-C in plaintext password prompt (issue #4624) * diff: produce proper forward binary diffs with --git (r1704292, r1704573) * ra_serf: fix deleting directories with many files (issue #4557) - Server-side bugfixes: * mod_authz_svn: fix crash in COPY/MOVE authorization check (CVE-2016-2168) * svnserve/sasl: fix authenticating users with wrong realm (CVE-2016-2167) * improve documentation for AuthzSVNGroupsFile and groups-db (r1730856) * fsfs: reduce peak memory usage when listing large directories (r1725180) * fsfs: fix a rare source of incomplete dump files and reports (r1717876) - Client-side and server-side bugfixes: * update INSTALL documentation file (r1703470 et al) * fix potential memory access bugs (r1722860 et al) * fix potential out of bounds read in svn_repos_get_logs5() (r1738259) - Bindings bugfixes: * ignore absent nodes in javahl version of svn status -u (r1720643) Developer-visible changes: - General: * fix ruby test suite to work with test-unit gem (r1714790) * allow building against KDE4 without conflict with KDE5 (r1734926) * fix update_tests.py#76 with SVNPathAuthz short_circuit (r1736432) * tweak getting symbolic error names in maintainer mode (r1735179) * fix inconsistent behavior of inherited property API (r1717874 et al) - API changes: * properly interpret parameters in svn_wc_get_diff_editor6() (r1728308) Version 1.9.3 (15 Dec 2015, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.3 User-visible changes: - Client-side bugfixes: * svn: fix possible crash in auth credentials cache (r1705328) * cleanup: avoid unneeded memory growth during pristine cleanup (r1706241) * diff: fix crash when repository is on server root (r1705060 et al) * fix translations for commit notifications (r1709389, r1709562) * ra_serf: fix crash in multistatus parser (r1706323, r1706324) * svn: report lock/unlock errors as failures (r1701598 et al) * svn: cleanup user deleted external registrations (r1705843, r1710558) * svn: allow simple resolving of binary file text conflicts (r1703581) * ra_serf: report built- and run-time versions of libserf (r1704847) * ra_serf: set Content-Type header in outgoing requests (r1715224 et al) * svn: fix merging deletes of svn:eol-style CRLF/CR files (r1703689 et al) * ra_local: disable zero-copy code path (r1718167) - Server-side bugfixes: * mod_dav_svn: fix heap overflow with skel-encoded requests (CVE-2015-5343) * mod_authz_svn: fix authz with mod_auth_kerb/mod_auth_ntlm (issue #4602) * mod_dav_svn: fix display of process ID in cache statistics (r1709553) * mod_dav_svn: use LimitXMLRequestBody for skel-encoded requests (r1687812) * svnadmin dump: preserve no-op changes (r1709388 et al, issue #4598) * fsfs: avoid unneeded I/O when opening transactions (r1715793) * svnlook: properly remove tempfiles on diff errors (r1711346) - Client-side and server-side bugfixes: * fix heap overflow in svn:// protocol parser (CVE-2015-5259) - Bindings bugfixes: * javahl: fix ABI incompatibilty with 1.8 (r1710104) * javahl: allow non-absolute paths in SVNClient.vacuum (r1710215, r1710290) Developer-visible changes: - General: * fix patch filter invocation in svn_client_patch() (r1706783) * add @since information to config defines (r1706983, r1706999) * fix running the tests in compatibility mode (r1706375) * clarify documentation of svn_fs_node_created_rev() (r1717154) - API changes: * fix overflow detection in svn_stringbuf_remove and _replace (r1714358) * don't ignore some of the parameters to svn_ra_svn_create_conn3 (r1714314) Version 1.9.2 (30 Sep 2015, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.2 User-visible changes: - Client-side bugfixes: * svn: fix crash when saving credentials in kwallet (r1700740, r1700951) * checkout/update: fix "access denied" error on Windows (r1701064 et al) * update: fix crash when updating a conflicted tree (r1702198, r1702200) * commit: fix possible crash (r1702231) * ra_serf: do not crash on unexpected 'X-SVN-VR-Base' headers (r1702288) * merge: fix crash when merging to a local add (r1702299 et al) * svnmucc: fix error during propset+put for existing file (r1702467 et al) * update: fix crash without .svn/tmp folder (r1701838, r1702203) * checkout: remove unnecessary I/O operation (r1701638) * merge: fix possible crash (r1701997) * update: fix crash with some of the incoming deletes (r1702247) * upgrade: fix crash for pre-1.3 wc with externals (r1702218 et al) * revert: fix crash when reverting the root of a move (r1702237 et al) * svn: do not crash upon specific database corruptions (r1702974, r1702991) * svn: show utf8proc version in svn --version --verbose (r1702533, r1702891) - Server-side bugfixes: * fix reporting for empty representations in svnfsfs stats (r1698312 et al) Developer-visible changes: - General: * fix svnfsfs_tests.py in fsfs-v4 and fsfs-v6 modes (r1700215 et al) - API changes: * disable unsupported operations for standard streams (r1701633 et al) Version 1.9.1 (02 Sep 2015, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.1 User-visible changes: - Client-side bugfixes: * Fix crash with GPG-agent with non-canonical $HOME (r1691928, issue #4584) * Fix checkout errors with svn+ssh:// on Windows (r1696222, r1696225) * svn: expose expat and zlib versions in svn --version --verbose (r1696387, r1697664) * svn: improve help text for 'svn info --show-item' (r1698106) - Server-side bugfixes: * svnserve: fixed minor typo in help text (r1694023) * Enable caching with memcached on Windows (1674626, r1674785) * Fix an error leak in FSFS verification (r1693886) * Fix incomplete membuffer cache initialization (r1695022) * svnfsfs: fix some bugs and inconsistencies in load-index (r1697381 et al.) - Client-side and server-side bugfixes: * Fix alignment fault in ra_svn on 32 bit SPARC machines (r1697914) - Bindings bugfixes: * Fix memory corruption in copy source SWIG bindings (r1694929) Developer-visible changes: * Better configure-time detection of httpd version and authz fix (r1687304 et al.) * Correct a parameter name in svn_repos_get_fs_build_parser5 (r1694194) * Resolve circular library reference in libsvn_fs_x (r1696695) * Fix Unix build on systems without GPG agent (r1694481, r1697824) Version 1.9.0 (5 Aug 2015, from /branches/1.9.x) http://svn.apache.org/repos/asf/subversion/tags/1.9.0 User-visible changes: - General: * make all commands provide brief description in help output (r1522518) * flush stdout before exiting to avoid information being lost (r1543868) - Major new features: * fsfs: new format 7 with more efficient on-disk layout (r1547045 et al) * blame: support showing prospective as well as previous changes * info: support printing of individual values with --show-item (r1662620) * svn auth: new subcommand to manage cached credentials and certs * svnserve: cache config and authz to lower resource usage and be able to serve large numbers of connections with a limited number of threads * membuffer: quadruple the maximum cacheable directory size (r1545948 et al) * new filesystem fsx (faster, smaller); experimental - see release notes - Minor new features and improvements: * new 'diff-ignore-content-type' runtime configuration option * new option for 'svnadmin verify': --check-normalization * new option for 'svnadmin verify': --keep-going * svnadmin info: new subcommand to print info about a repository * print summary of conflicts before/after interactive conflict resolution * import: reduce number of connections to the server needed (r1482962) * membuffer: rework cache eviction heuristics (r1476664 et at) * membuffer: improved cache usage statistics (r1489883) * mergeinfo: new '--log' option (r1492168) * svnadmin upgrade: progress and cancellation support (r1495545, r1495566) * cleanup: add '--remove-unversioned' and '--remove-ignored' (issue #3549) * cleanup: add '--include-externals' option (issue #2325) * cleanup: add '--quiet' option (r1498661) * svnadmin load: speedup by setting revprops in one call (r1504079) * svnadmin load: set svn:date revprop in the initial commit (r1504951) * reimplement UTF-8 fuzzy conversion using utf8proc (r1511676) * svnadmin verify: speed up for repos with large directories (r1520419) * svn merge: interactive conflict resolver tries external tools (r1524145) * minor speed up in string to time conversion (r1533387) * windows: speed up console output (r1533994) * update: optimize wc db usage when obtaining children (r1537065 et al) * decreased overhead for case-sensitive configuration access (r1538068) * avoid re-opening repo for in-repo authz if already open (r1538120) * svnserve: output errors in a more standard way (r1544250) * faster parsing of config file comments (r1544716) * avoid trying to open the hooks-env file when it doesn't exist (r1544721) * svnserve: provide the same logging detail in "run once" mode as provided in the log file (r1544731) * svnserve: reduce connection latency (r1544732) * wc: reduce the number of locks and transactions required (r1545127 et al) * cat: add '--ignore-keywords' option (r1547517) * merge and mergeinfo: use fewer RA sessions (r1552265) * fsfs: limit delta chains from crossing too many shards (r1554942) * fsfs: option to configure compression level in deltas (r1559748) * fsfs: enable dir and prop deltas by default for formats that support it (r1555286) * fsfs: avoid out of date errors from files in a directory changing when you change a property on the directory (issue #2118) * fsfs: temporary transaction properties are preserved when commit is interrupted (r1549907 et al) * fsfs: speed up transaction creation (r1544719) * fsfs: avoid trying to open lock digest files that don't exist (r1544721) * fsfs: reduce internal overhead by using sorted array instead of hash for directory representation (r1554711) * fsfs: skip decoding txdelta windows that are already cached (r1555284) * fsfs: avoid constructing fulltext when delta we need is stored (r1555297) * fsfs: improvements to format 6 reading/writing (r1517479) * fsfs: reduce overhead of parsing noderev structures (r1544717) * fsfs: speed up node relation comparison (r1554807) * fsfs: speed up critical open_path() call (r1483301 et al) * fsfs: speed up node verification (r1520421 et al) * fsfs: speed up serialization into cache buffer format (r1505056) * fsfs: avoid caching intermediate fulltexts (r1565100) * fsfs: reduce lock contention on txn-list-lock (r1569549) * svnadmin: don't display warnings as errors (r1556297) * ra_serf: avoid caching properties in the update editor (r1557538) * ra_serf: decrease latency of requests to get directory contents by pipelining requests, speeds up 'svn ls --include externals' and some cases of multi-url diff, including merge (r1557548) * ra_serf: spool small update reports in memory to avoid making temp files for small requests (r1557599) * ra_serf: allow the reuse of serf connections after an error (r1553341) * ra_serf: improve many error messages (r1551910 et al) * ra_serf: pipeline lock/unlock requests (r1551918, r1551993, r1552008) * ra_serf: pipeline requests for inherited properties against old servers that don't support the faster REPORT (r1552455, r1552475) * ra_serf: allow reuse of sessions after a canceled request (r1557686) * ra_serf: reduce memory usage when retrieving revision props (r1557689) * mod_dav_svn: make out of date error message consistent with generic repos logic (r1558247) * allow SQLite to optimize functions that are deterministic (r1559352) * speed up delta calculations on non-deltifyable sections (r1559767) * ra_serf: improve memory usage in commit processing (r1520028) * report progress as cumulative across all sessions (issue #3260) * ra_serf: don't send DAV headers with GET requests (r1517472) * mod_dav_svn: SVNCacheTextDeltas defaults to on (r1517479) * fs: improve scalability of fs_open and similar functions (r1523450 et al) * svnserve: improve performance and scalability (r1523465 et al) * svnadmin verify: output progress messages to stdout (r1471095) * svnadmin crashtest: make output less misleading (r1486046) * mod_dav_svn: discover copy to src earlier in some cases (r1537440) * speed up mergeinfo parsing (r1483292, r1483309 et al) * optimize hash lookups used in mergeinfo and caching (r1483434 et al) * log: optimize string handling in repos layer (r1483570, r1483572) * ask disk hardware to sync instead of only syncing to hardware buffers when OS supports it (r1484439, r1484445) * optimize diff code to avoid unneeded comparisons (r1485488) * optimize check if relpaths are canonical (r1485496, r1489828) * ra_svn: reduce protocol implementation overhead (r1485499, r1485504 et al) * optimize file translation without keyword substitution (r1486058) * optimize config file parsing by using unbuffered I/O (r1486897) * patch: apply ignore settings when deciding to delete dirs (r1490378) * use a cheaper RA operation for common client calculation (r1496468 et al) * ra_svn: avoid unnecessary work when doing a blame (r1503046) * optimize reading files into memory if size is known (r1505068) * copy: do not error on properties when doing a foreign copy (r1563361) * membuffer: reduce memory usage by using shorter lived pools (r1564217) * svnadmin load: add '--ignore-dates' option (r1564789) * update: reduce sessions used with '--parents' option (r1565920) * diff: report properties on deleted nodes (r1569320, r1570055) * diff: switch to diff processor APIs instead of old style callbacks, step towards resolving long standing bugs and feature requests (r1569551 et al) * diff: use the proper revision in headers for addition and deletion of files (r1570053) * svnadmin lslocks: add cancellation (r1571992) * svn --version: list available authentication credential caches (r1572106) * fs: improved detection of changes between two nodes, this should reduce the number of out of date errors clients see (r1572336) * allow the use of libmagic to be configured via subversion configuration file or SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE env variable (r1572916) * new '--pin-externals' option for svn copy (issue #1258) * the '--strict' option was renamed '--no-newline' (r1662224) * merge/update: switch to three-way text conflict markers (r1591951, r1595522) * patch: handle renames in git formatted patches (r1594636) * svnfsfs: new expert tool (r1594860) * mod_dav_svn: allow server admin to GET the FSFS global cache stats (r1595160) * diff: support git-like binary file diffs with '--git' (r1599552) * diff: support arbitrary context size for internal diff tool with '-U' option (r1603847, 1603871) * commit: print progress notification between client finishing transmitting text deltas and asking server to commit (r1604179) * fsfs: optimize log commands for repos on Windows by not using a locale specific function to parse ids (r1605123) * fsfs: reduce memory usage of reading/writing changed paths caches (r1605188 et al) * mod_dav_svn: log post-commit errors to httpd error log as well as returning them to client (r1606004) * make server config groups work with svn:// URLs (issue #4512) * svnadmin hotcopy: report progress when copying revisions and packed shards for FSFS repositories (r1613339) * info: show revisions for missing tree conflicts (r1617932) * fsfs: avoid shared data clashes due to multiple distinct repositories having identical UUIDs (r1618138 et al) * status: ignore thumbs.db files by default (r1620955) * fsfs: harden parsers against data corruption (r1622931, r1622937, r1622942) * diff: respect svn:keywords and svn:eol-style when doing arbitrary diffs (r1623820) * ra_serf: reduce size of XML generated for reports (r1627333) * replace generic --trust-server-cert with more specific options to override specific certificate failures (r1630117 et al) * commit: improve speed of commits with many files (r1630312 et al) * svnadmin setrevprop: add '--transaction' option (r1631435) * svnadmin delrevprop: new subcommand (1592723) * svnadmin verify: validate the index data against checksums (r1631598) * svnadmin verify: new option '--metadata-only' (r1593753) * cp: improve performance of local copies (r1632284, et al) * fsfs: speed up operations that use revision properties (r1634875, r1634879) * checkout/update: use fewer RA sessions (r1635753 et al) * log: do less work when '--with-no-revprops' is used (r1642231) * patch: improve command to be more capable as compared to GNU patch (issue #4533) * limit server caches to avoid running out of memory if server admin configured caches larger than supported by the platform (r1645572) * mod_authz_svn: log implicit read access failures with INFO log level; Explicit read access failures are still logged with ERROR log level (r1653032) * ra_serf: reduce memory usage by removing some extra intermediary state (r1654681, r1654690) * revert: improve performance on large working copies without changes (r1657083) * ra_svn: improve efficiency of editor processing (r1658194 et al) * merge: provide different conflict reasons for local additions and unversioned obstructions (r1659381) * windows: improve checkout performance on windows by using sqlite truncate journal mode rather than delete (r1659426) * status: now accept '-r' argument (r1671164, 1672578, 1673228) * ls: improve performance of '-v' on tag directories (r1673153) * resolve: improve conflict prompts for binary files (r1667228 et al) * fsfs: improve error messages for parsing errors (r1678147, r1678149) * warn when the '--config-option' FILE:SECTION:OPTION combination may be invalid. (r1674301 et al) * ensure full key matching in membuffer cache (r1678950 et al) * mod_dav_svn: expose cache statistics via HTTP (r1595160) - Client-side bugfixes: * export: fix problem exporting symlinks on windows (r1476093) * fix non-ascii character handling of command line options (r1476461) * log: strip EOL marker only after converting to UTF-8 (r1476608) * ra_serf: avoid dropping errors when making a lock request (r1489526) * ra_serf: fix an error leak in update logic (r1499686) * windows: fix issues with wcs in symlinked folders (r1501251) * fix regression that broke parallel nested checkouts (issue #4390) * svnmucc: ignore leading r in revision number arguments to -r (r1502636) * mkdir: use absolute paths to avoid Windows path length limits (r1516816) * avoid encoding support code when C runtime doesn't support it (r1530582) * ra_svn: add check against dirents with path separators (r1533812) * properly delete temporary files when atomic write fails (r1537466) * wc: fix corner cases in move-update tree conflicts (r1538639 et al) * windows: fix crash report indentation for x64 reports (r1543589) * mergeinfo: allow to work on a moved target (issue #4301) * windows: avoid delay when no homedir is available (r1546814) * status: report externals in a deterministic way (r1550200) * copy: avoid an unneeded extra RA session for wc to repo case (r1551564) * ra_serf: show pre-revprop-change failure on revprop delete (issue #3086) * svnsync: avoid extra request at end of every revision sync (r1553370) * ra_serf: fix replace + propset of locked file failures (issue #3674) * ra_serf: prevent overwriting directory during copy (issue #3314) * commit: limit number of temporary files open at same time (issue #4172) * ra_serf: verify incoming integers are really integers (r1557709 et al) * log: -g --xml doesn't differentiate between forward and reverse merges (issue #4463) * windows: improve update and checkout speed (issue #4450) * log: reduce performance penalties of using -g (r1559912) * blame: reduce performance penalties of using -g (r1560112) * ra_local: set svn:txn-user-agent for consistency (r1498608) * ra_svn: use the stream API properly for communications (r1562072) * update: provide error when none of targets are wcs (r1565388) * wc: reduce dependence on unspecified SQLite behavior (r1567080 et al) * diff: fix diffing directory without permissions to read parent (r1569265, r1569290) * diff: improve resolving peg revisions (r1570205 et al) * diff: fix bug in calculating header paths (r1570584) * ra_serf: add SSL certificate issuers common name to output (r1573728) * updates keywords in files not modified during 'svn switch' (issue #1975) * svnmucc: Normalize line endings with '-F' and '-m' options (r1592148, r1592150) * fix problems with read-only authentication caches (issue #4504) * commit: don't bump just locked files (r1603617) * log: reduce memory with '-v' (r1604569 et al) * diff: fix diffing locally deleted nodes under copied directories (r1605832) * diff: fix missing node error when diffing a replaced node (r1605866) * propget: forbid using 'show-inherited-properties' with 'strict' (r1611698) * windows: avoid delay when user profile isn't writable (r1617926) * merge: display the correct node kinds for tree conflicts (r1618024, r1619418, r1619717) * diff: show the correct revisions in the header (r1619452) * diff: fix missing header for files with only property changes (r1619476) * update: raise a tree conflict rather than an obstruction when an incoming server-excluded node conflicts with a locally added node (r1619495) * update: improve tree conflict reason and action descriptions (r1619777) * ra_serf: fix stalls during checkout/update over http/https (r1621596) * svnmucc: don't crash when '--version' is used with other arguments (r1625496) * checkout: report svn:externals failures via the exit code as other commands already do (r1628398) * svn & svnlook: use the right error code when fputs() fails (r1630369) * export: reject peg specifiers on local destination path (r1635085) * don't reject command-line arguments in the form of ".@abc", where "abc" is a peg specifier that may be empty (r1635118) * fix directory externals not following history (issue #4529) * remove 'df' and 'm' options from the interactive conflict resolver for binary files (r1645578) * mergeinfo parsing: allow source path to be empty (issue #4537) * mkdir: when using '--parents' don't add entire contents recursively if target already exists (r1649951) * resolve errors with move of a nested delete (r1651980, r1651997) * update: prevent breaking a working copy when a directory is replaced with an external to a foreign repository (issue #4550) * update: prevent an invalid wc state when applying a move (r1652184 et al) * resolve: fix a segfault when breaking a move inside a delete (issue #4491) * ra_serf: don't handle a commit that didn't produce a new revision as a successful commit (r1653532) * export: fix the lack of notifications when starting to handle externals (issue #4527) * update: fix a case where we reported an error rather than a tree conflict (r1655017) * info: Use local platform style paths in all cases (r1659283) * handle lack of a configuration file properly (r1660369) * update: resolve issues with tree conflicts caused by an incoming delete removing a mixed revision tree (r1660742) * don't hold onto locks of deleted paths in the client on commit (r1661363) * info: fix url calculation for a few statuses (r1661476) * update: when using '--set-depth' avoid removing local changes (r1661585) * update: fix tree conflict detection on unversioned nodes that exist where there used to be a deleted node (r1661664) * status: display tree conflicts even if the node with the tree conflict is shadowed by a file (r1662331) * pre-1.6 wc compatibility: fix with obstructed working copies (r1662412) * resolve: allow directly resolving tree conflicts (r1658435) * copy: when copying from a wc to a url show all the changes (r1655729) * info: provide results in a stable order (r1662030) * revert: allow depth limited reverts of nodes that only have not-present and/or excluded child nodes (r1662091) * wc: fix calculating repo path after commits of nodes that shadow a switched (not-present) node (r1663991, r1666258, r1674032) * update: resolve assertion on bad update report involving incomplete status (r1663671, r1666832) * update: allow a real file to replace a file external (r1664035) * merge: raise a tree conflict on root of obstructing dir (r1666690) * cp: fix 'svn cp ^/A/D/H@1 ^/A' to properly create A (r1674455, r1674456) * status: fix incorrect output with file externals (issue #4580) * merge: fix part of issue #4582 (r1686175, r1687029, r1688258) - Server-side bugfixes: * svnserve: don't ignore socket initialization errors (r1544253) * svnserve: don't hide fatal errors in inetd and tunnel modes (r1544256) * fsfs: log repo path in local style for cache init failure (r1494314) * fsfs: fix potential transaction corruption (r1519624) * svnserve: fix logging in multi-threaded servers (r1523502) * fsfs: don't report out of date errors due to FS corruption (r1527084) * svnadmin verify: detect inconsistencies that prevent loading (r1536854) * mod_dav_svn: use 404 status for errors caused by invalid URIs (r1542063) * mod_dav_svn: use 404 when the repository doesn't exist (r1544259) * mod_dav_svn: use 'dav_svn:' prefix for filename instead of 'svn:' (r1544711) * mod_dav_svn: XML escape lock tokens (r1547427) * hotcopy: don't create config files when copying pre-1.5 repos (r1547454) * hotcopy: preserve the rep-cache.db permissions when hotcopying (r1547877) * mod_dav_svn: fix SVNCacheTextDeltas and SVNAdvertisV2Protocol directive merging (r1548124) * mod_dav_svn: always produce an error text even when text specifies the default message to make diagnosing issues easier (r1553441) * mod_dav_svn: fix some pool lifetime issues with error messages (r1553868) * mod_dav_svn: avoid setting option headers multiple times (r1557103) * fsfs: prevent some commits that could cause future corruption (r1560673) * cache: fix premature eviction due to 64-bit underflows (r1567996 et al) * svnserve: fix potential integer overflow in Cyrus SASL support (r1570434) * bdb: fix potential integer overflow and underflow (r1570701) * bdb: prevent silent propagation of some corruption (r1570778) * svnadmin hotcopy: do not corrupt db/current contents when copying old FSFS repos (r1603485) * svnadmin hotcopy: don't produce broken copies when a concurrent pack happens (r1605633) * log: reduce memory consumption of '-v' (r1605195) * mod_dav_svn: fix performance issue on Windows with named atomics (r1611379) * log: fix a segfault in handling changed paths (r1615364) * mod_dav_svn: properly forward post-lock/post-unlock failures (r1622235) * diff: fix handling of depth empty in added directories (r1622024) * fix a segfault with corrupted changed path lists that try to add root nodes (r1622944) * svnadmin verify: report errors nicely rather than possibly aborting (r1622955) * svnlook propget: report transaction name rather than revision number in errors if run with '-t' option (r1623317) * svnadmin verify: prevent stack overflow conditions in corrupted repositories (r1623398) * fsfs upgrade: fix an issue that could block an upgraded format 1 or 2 repository from being committed to (r1624011) * fs backends: fix memory lifetime issue (r1632646) * bdb: output correct checksum in error message about corruption (r1640707) * fsfs: fix a pool lifetime error related to transaction local caches (r1643139, 1643233) * fsfs: avoid "random DAG walks" during checkout over ra_serf (r1645567) * fsfs/bdb: reduce memory use during tree deletions (r1647820, r1655022) * mod_authz_svn: fix unbounded memory use when SVNPathAuthz short_circuit is used (r1647887) * fsfs: reduce memory use when walking back in history (r1648230) * dump: remove incorrect kind header on replaced nodes (issue #4553) * dump: remove duplicate headers for replace-with-copy (issue #4552) * mod_dav_svn: don't send XML-unsafe characters in svn:author (issue #4415) * dump: don't write broken dump files in some ambiguously encoded fsfs repositories (issue #4554) * mod_dav_svn: provide a more intuitive error message to the client when trying to create a directory that already exists (issue #2295) * fsfs: fix uninitialized memory use in lock/unlock code (r1657525) * fix a segfault executing a pre-commit hook with legacy locks (r1657893) * mod_dav_svn: do not ignore skel parsing errors (r1658168) * fsfs: fix multiple reporting of the same lock (r1658482) * fsfs: fix pool lifetime issue in lock handling (r1659314) * mod_dav_svn: properly log assertions and malfuctions (r1660480) * svnadmin load/dump: preserve deletion of svn:date from r0 (issue #4563) * svnrdump: don't provide HEAD+1 as base revision when loading deletes (r1664684) * mod_dav_svn: improve error message sent with a 405 status code (r1665195, r1666096, r1666379) * make detection of invalid base revision on commit behave the same on all RA layers (r1664664, r1664672, r1664674) * mod_dav_svn: emit the first few log items as soon as they are available (r1666965, r1667120) * mod_dav_svn: prevent a tree walk on copy sources (issue #4351) * fsfs: fix 'EOF found' error when reading repo (issue #4577) * svnadmin freeze: unlock rep-cache.db as part of unfreezing (r1679169, r1679287) * fsfs: improve stability in the presence of power or network disk failures during 'svnadmin pack' (r1683378) * detect invalid svndiff data earlier (r1684077) - Client-side and server-side bugfixes: * use less memory when retrieving extension from filename (r1548480) * use more optimal code path with old txdelta v1 data (r1485480) * windows: allow opening SQLite databases on long paths (r1564338) * fix an out-of-bounds read in the delta combiner (r1569415) * fix a number of cases of undefined behavior when passing invalid arguments to memcpy() (r1632530, et al) * windows: avoid a 12 second delay due to a retry loop in some error conditions when opening a file (r1657583) - Other tool improvements and bugfixes: * windows: add build-svn-deps-win.pl tool to build dependencies (r1467715) * svnpubsub: add support for revprop changes (r1486463) * svnpubsub: do not pass svn commands through shell (r148466, r1486467) * svnpubsub: hooks exit with an error if they fail (r1486500, r1486597) * svnpubsub: hooks use "--" to signal end of arguments (r1486513) * mailer: properly encode mail headers per RFC2047 (r1487532) * svnwcsub: add a pre-update hook, which can deny update (r1494542 et al) * fsfs-stats: count file nodes that are added without history (r1519283) * fsfs-stats: replaced by 'svnfsfs stats' (r1594860) * fsfs-access-map: count empty reads and unnecessary seeks (r1523441) * fsfs-access-map: generate scaled/rectangular heatmaps (r1505065) * fsfs-access-map: deal with strace format issues (r1505065) * fsfs-access-map: update to know about index files (r1505065) * svnbench: renamed from svn-bench (r1659226) * svnbench: add null-info command (r1532196) * svnlook.py: made usable as a library by adding getter methods (r1541558) * svnbench, svnraisetreeconflict, svnauthz, svn-rep-sharing-stats: More consistent error reporting, following pattern of core command-line programs (r1544194) * which-error.py: allow which-error.py to be run from symlink (r1547977) * bash_completion: add svnlook filesize command and options to svn cat, info, and mergeinfo commands (r1569021) * new '--conflict-style' option to standalone diff3 tool (r1591750) * update standalone diff3 tool so it can be used with --diff-cmd directly (r1591871, r1591876) * bash_completion: support for auth command (r1596841) * diff: support '-U' option (r1618618) * svn-rep-sharing-stats: replaced by 'svnfsfs stats' (r1618861) * add svn-vendor.py as an alternative to svn_load_dirs.pl that can auto-detect renames and copies (r1623660) * svnpredumpfilter.py: fix a scalability problem that made run time increase greatly on large repositories (r1625674 et al) * svnpredumpfilter.py: detect copies of copies and handle properly (r1626182) * bash_completion: add svnadmin delrevprop (r1631473) * showchange.pl: removed, obsoleted by 'svn log --diff' (r1631686) * bash_completion: add new trust options (r1660373) * bash_completion: add '--pin-externals' (r1662250) * bash_completion: stop offering deprecated options (r1662291) * bash_completion: add '--show-item' and '--no-newline' (r1662622) * svnbench: add null-blame command (r1673785, r1673803, r1674015) * svnbench: install with default 'make install' (r1685085) Developer-visible changes: - General: * require Python 2.7+ for development and testing (r1691712, r1691713, r1692448) * include symbolic names for error codes in maintainer mode (r1467643) * include symbolic names for warning codes in maintainer mode (r1469855) * support YouCompleteMe vim plugin (r1476374 et al) * cache: add pretend_empty mode for maintainers (r1461689, et al) * allow tests to be run with exclusive wc locks (r1496475) * fix check for Microsoft C/C++ compiler (r1503148) * improve windows build to use pre-built dependencies * optimize ramdrive usage in the windows test runner (r1504511) * SVN_CMDLINE_DISABLE_CRASH_HANDLER env var added for Windows (r1506507) * gen-make.py: support Visual Studio 2013 by --vsnet-version=2013 (r1533907) * windows: don't require APR source when building (r1534037, et al) * don't compile SQLite amalgamation twice (r1536364) * make C tests use same temp path as Python tests (r1536700) * davautocheck: access log logs the r->filename now (r1538048) * added test to detect duplicate SQL queries (r1538962) * windows test runner: copy additional apr dlls (r1539300) * support for debug logging that should be available in serf 1.4.0 (r1541561) * OS X: fix build when Gnome is installed (r1541698) * properly detect if expat is libexpat.lib or xml.lib on windows (r1541981) * doc-clean target works properly with separate build dir (r1542303) * don't break entire test run if cleaning temp directory failed but return an error anyway (r1542817) * windows tests: find java.exe via the sdk if not found via PATH (r1543876) * fix davautocheck with httpd 2.3.x+ and worker/prefork MPMs (r1544302-3) * add parallel mode for C tests (r1545334 et al) * use --bin path for svnrdump when running Python tests (r1548706) * remove unused --with-openssl option from configure (r1548714) * tests: stop rewriting shared authz file for every sandbox (r1552064 et al) * fix unnecessary aborts in maintainer mode on sqlite errors (r1536325) * new --sqlite-logging option for C tests (r1560409) * allow building with APR-2 (r1560586) * remove support for ASM Zlib from Windows build system (r1560864) * gen-make.py: new -D option (r1567046) * improve how we fetch the version of Windows (r1568798, 1568806) * move common code in python tests to library files to avoid side effects of having tests depending on each other (r1570654) * disable compiling on platforms where int is shorter than 32-bits and add the SVN_ALLOW_SHORT_INTS compile definition to override (r1570882) * disable building *.sbr files with Visual C++ 2010 or later (r1571020) * require serf 1.3.4 (r1572261) * require APR and APR-Util 1.3.x (r1572261) * add mod_dontdothat to davautocheck.sh (r1572312) * require Apache httpd 2.2.x (r1572339) * support pkg-config for serf when using a prefix (r1572762) * don't depend on stdbool.h and inttypes.h for utf8proc (r1573069 et al) * avoid non-portable find extensions so the build works on Solaris (r1573780) * Allow PARALLEL value to specify the number of threads to run tests with, PARALLEL=1 means to use the default (r1573320) * pkg-config support for libsvn_* libraries (issue #4435) * binaries built on Mac OS X 10.6+ will not run on older versions (r1651549) * fix random failure of Makefile-based parallel builds on Unix when the amalgamated SQLite is being used (r1658357) * C tests only run with ra_local to avoid duplicate testing (r1609477) * allow skipping the C tests for any RA method (r1609489) * new tools for benchmarking on Windows (r1610264) * svnbench: no longer part of tools but main subversion (r1618860) * improve detection for libtool (r1627276) * check the runtime version of the fs_util library in the fs backends (r1651567) * properly initialize the src_kind value to avoid problems for other API users during a copy (r1655723) * try to improve reliability of applications that do not call svn_dso_initialize2() right after apr_initialize() (r1659604) * add svn-wc-db-tester tool for testing working copies (r1660874) * fix bugs and performance issues using svn_wc_walk_entries3() (r1661110) * support using Python 3 for building (r1661247) * don't add -lstdc++ on FreeBSD 10 (r1662329) * add build support for Visual Studio 2015 (r1663183, r1663184, r1689721 et al.) * fix test failures when running from a directory whose name contains characters that must be escaped when used in a URL. (r1664997) * fix breakage of the serf ra session with svn_ra_get_dir2() and svn_ra_get_log2(). (r1665213, r1665259, r1665609) * resolve a race condition in some test suite cleanup code (r1683303) * fix some tests on non-US default locale on Windows (r1684034) * document the meaning of "XFAIL" for users building from source (r1683071) - API changes: * new RA callbacks for managing ra_svn tunnels: svn_ra_callbacks2_t::check_tunnel_func, svn_ra_callbacks2_t::open_tunnel_func and svn_ra_callbacks2_t::close_tunnel_func * new API for retrieving info about a file system: svn_fs_info() * new API svn_io_file_flush() that wraps apr_file_flush() * new API svn_io_write_atomic(), that writes, sync and renames a file * new API svn_compat_log_revprops_out_string() * deprecate unused datatype svn_ra_get_latest_revnum_func_t * new API svn_client_cleanup2() (r1496954 et al) * new API svn_stringbuf_create_wrap() (r1502248) * new API svn_io_file_aligned_seek() (r1502539) * ra_svn: fix svn_ra_get_log*() to apply limit when server can't (r1503043) * svn_client_commit6: notify which path prevents a mv commit (r1503662) * new APIs svn_io_file_create_empty() and svn_io_file_create_bytes() (r1505006) * new API svn_ver_check_list2() (r1502267) * new API svn_stringbuf_from_stream() (r1532193) * svn_auth_get_platform_specific_client_providers() now includes ssl providers (r1534153) * change dav_svn_split_uri() repos_path argument (r1537812) * new API svn_repos_fs_type() returns filesystem type (r1538585) * svn_client__get_inheritable_props() clears wcroot_iprops when revision is not valid (r1538602) * SVN_VA_NULL: New macro which is null-pointer constant (r1536307) * SVN_NEEDS_SENTINEL_NULL: New macro to mark functions that require final NULL sentinel value, so compilers can warn when missing (r1543394) * platform specific svn_auth_get_* functions are deprecated, use the svn_auth_get_platform_specific_provider() function instead (r1543992) * SVN_INT_ERR macro is deprecated; use svn_handle_error2() or svn_cmdline_handle_exit_error() instead (r1544142) * new API svn_client_cat3() allow disabling keyword expansion and retrieving props (r1544182) * svn_auth_first_credentials(): provides an error rather than crashing if auth_baton is NULL (r1544320) * svn_auth_set_parameter(): Do nothing if auth_baton is NULL (r1544320) * new API svn_relpath_prefix which returns a relpath with a maximum number of path components (r1545123, r1673282) * svn_fs_initialize() is now threadsafe (r1546409) * svn_checksum_kind_t has two new FNV-1a checksums (r1546699) * svn_fs_lock: control characters are not allowed in lock tokens (r1547445) * new API svn_wc_cleanup4() makes some functionality optional and adds notifications (r1548075 et al) * new API svn_client_info4() supports walking externals (r1550206 et al) * new flag for svn_fs_begin_txn2() SVN_FS_TXN_CLIENT_DATE to allow client to set the final svn:date (r1550228) * new APIs for easier RA commits svn_client_mtcc_* (r1550758 et al) * new API svn_ra_session_dup() (r1552324 et al) * svn_ra_stat() now handles compatibility with 1.0-1.1 svnserve (r1552441) * new error code SVN_ERR_COMPOSED_ERROR added to allow detection of composed errors by API consumers (r1553266) * new error code SVN_ERR_RA_DAV_PRECONDITION_FAILED (r1553668) * new error code SVN_ERR_RA_CANNOT_CREATE_SESSION (r1554027) * new API svn_fs_node_relation() (r1554800) * SVN_EXPERIMENTAL to mark functions that might change in future (r1526012) * fix bug in svn_client_get_merging_summary() with some params (r1532396) * new error code SVN_ERR_XML_UNEXPECTED_ELEMENT (r1498938) * extend stream API to also support incomplete reads (r1561688 et al) * new API svn_wc_add_from_disk3() (r1563361) * new API svn_client_revert3() to allow clearing changelists and to have a metadata_only flag (r1568635, r1657026) * svn_rangelist_inheritable2(): don't change inheritabilty of remaining ranges (r1569731) * svn_rangelist_inheritable2() and svn_mergeinfo_inheritable2(): fix a pool lifetime issue (r1569764) * new APIs to support cancellation during unified diff output and allow the context size to be specified (r1570149 et al) * APIs related to retrieving logs are now documented to be unlimited when a negative value is passed for the limit (r1570330, 1570335) * new APIs: svn_fs_props_different() and svn_fs_contents_different() (r1572363, r1573111) * expose SVN_CONFIG_AUTHN_* macros in public API (r1572640) * add SVN_CONFIG_OPTION_SQLITE_TIMEOUT to allow SQLite busy timeout to be configured by clients (r1592093) * add new notification between transmitting deltas and finalizing commit as svn_wc_notify_commit_finalizing (r1603388) * svn_client_cat3() API no longer returns entry or WC props (r1603501) * properly handle canonical paths in svn_io_start_cmd3() (r1604761) * add SVN_FS_CONFIG_FSFS_BLOCK_READ to control FSFS format 7 block read feature (r1604933) * new API svn_cstring_skip_prefix() (r1612823) * new API svn_diff_mem_string_output_merge3() (r1618599) * extend svn_wc_info_t with conflicts2 (r1618643) * new API svn_diff_mem_string_output_unified3() (r1618839) * new API svn_diff_file_output_merge3() (r1618857) * svn_fs_props_changed() and svn_fs_contents_changed() no longer return false positives (r1618880) * new API svn_wc_conflict_description2_dup() (r1618883) * extend svn_wc_conflict_description2_t with prop_reject_abspath field (r1619096) * extend svn_wc_conflict_description2_t with property values as svn_string_t's (r1619122) * fix svn_client_import5() to use absolute paths (r1623974) * fix a few cases of invalid filling of svn_client_commit_item3_t (r1623981) * add SVN_FS_CONFIG_FSFS_SHARD_SIZE to allow creation of repositories with a custom shard size (r1624512) * new API svn_cmdline_create_auth_baton2 (r1630117) * make svn_string_*() and svn_stringbuf_*() functions handle C strings of NULL with 0 length (r1632530, et al) * fix svn_stream_compressed() for streams without partial read support (r1639626) * do not segfault on svn_stream_read_full() or svn_stream_skip() are called for a no-op stream created via svn_stream_create() (r1639637) * add SVN_FS_CONFIG_FSFS_LOG_ADDRESSING to control logical addressing feature of fsfs format 7 (r1640915) * rename the 'parent_directory' parameter of svn_wc_parse_externals_description3() to 'defining_directory' and improve the documentation (r1642690) * new API svn_repos_get_fs_build_parser5() (r1647563) * SVN_VERSION_BODY changed so that it is embedded into libraries, ultimately allowing SVN_VER_TAG constant to be modified by patches (r1651565) * rename repos_url to repos_url_deocded argument to svn_repos_get_commit_editor5() to clairfy usage (r1653609) * make svn_io_set_file_read_only() and svn_io_remove_dir2() ignore ENOTDIR when ignore_enoent argument is set so the behavior is consistent across platforms (r1653680) * make svn_ra_open4() return the documented error when a repository should be opened in a different location (r1655648) * no longer return an error when using svn_ra_get_lock() and the path does not exist (r1656875) * svn_string_dup() will accept a NULL pointer and return a NULL (r1657254) * svn_ra_get_file_revs2() now handles SVN_INVALID_REVNUM as HEAD (r1660463) * new API svn_error_quick_wrapf() (r1662668) * new API svn_fs_node_has_props() (r1673170, r1673172, r1673692, r1673746) * new API svn_repos_verify_fs3() (r1492651 ... r1687769) - Bindings: * javahl: add support for the RA layer (r1494650 et al) * javahl: add ignore-keywords knob to ISVNCLient.doExport (r1494936) * javahl: improve performance of rev_range_vector_to_apr_array (r1496243) * javahl: provide whole stack of errors from native exceptions (r1496353) * javahl: new framework for manipulating in-memory config data (r1497746) * javahl: add methods to set config change handler callback (r1497753) * javahl: add inheritance info to JavaHL's RevisionRange type (r1499308) * swig-rb: fixes to building on Windows (1505406 et al) * libsvn_swig_*libraries now work as proper shared librares (r1506520 et al) * swig-py: 'import svn.core.*' imports libsvn_subr public symbols (r1507860) * javahl: expose the svn_rangelist operations (r1509025) * javahl: new utility class SVNUtil (r1512354) * javahl: serialize init of native library (r1519803) * javahl: fix value truncation checks (r1519913) * javahl: add ISVNClient.info which exposes svn_client_info4 (r1603481) * javahl: include name of exception class in error messages (r1532117) * javahl: simplify JNI environment handling (r1533804) * javahl: Revsion.UNSPECIFIED added as alias to Revision.START (r1533928) * javahl: do not require JUnit to build javahl; only to test (r1535603) * javahl: update Action enum with new entries added in 1.9 (r1536319) * javahl: expose node property validation utility (r1538133) * javahl: new style JNI wrapper (r1539114 et al) * javahl: new utility API to parse/unparse svn:externals (r1539130 et al) * javahl: allow tests to be run from a RAM disk (r1539215 et al) * javahl: expose and use the url member of svn_wc_notify_t (r1539601) * javahl: expose a utility API to resolve relative externals (r1540921) * javahl: new utility API for file content translation (r1542401) * javahl: throw NullPointerException when sources is empty (r1543328) * swig-pl: fix compilation against perl 5.18 on Windows (r1543980) * javahl: implement streamed file contents translation (r1543985) * javahl: enable warnings with javac (r1544163, r1544169) * javahl: cleanup warnings (r1544578 et al) * javahl: add common utilities for new-style map iterations (r1545925) * javahl: add an API to get runtime version of native libs (r1545945) * javahl: use default cache size instead of no cache (r1547248) * swig-py: add typemap for hunks field of svn_patch_t (r1548379) * javahl: don't ignore difference between NULL and empty changelist in ISVNClient.getChangelists (r1553254) * swig-pl: fix pool issues with setting dates as revisions (r1553822) * swig-pl: make svn_auth_set_parameter() usable (r1553823) * javahl: expose inheritiable property names (r1560338) * javahl: fix bug in parsing single revision merginfo data (r1563140) * javahl: create JVM crashlogs from svn malfunctions (r1563927, r1564252) * javahl: avoid problems when building without NLS support (r1566578 et al) * javahl: expose --alow-mixed-revisions merge option (r1567602) * javahl: support incomplete reads from streams (r1569631) * javahl: allow revert API to take a set of paths (r1571461) * javahl: improve authentication callback (r1597758 et al) * javahl: load (most) classes on demand (r1602822) * javahl: expose confg file keys in JavaHL (r1604448) * javahl: update ISVNClient.info, ISVnClient.cleanup and add ISvnClient.vacuum (r1604449) * javahl: update ISVNRepos.hotcopy (r1618894) * swig-py: Add close to the core.Stream class (r1619077) * javahl: add example clients that use the authn API (r1640533) * swig-py: implement dump stream parser (r1642813) * swig-pl: remove some unneeded cleanup code that triggered a cleanup failure on windows (r1643072) * swig-pl: make cancel_func, cancel_baton parameter pairs work (r1648852) * javahl: expose whitespace diff parameters to blame method (issue #4475) * javahl: update ConflictDescriptor (r1655842) * javahl: update FileRevision to provide textDelta (r1656911) * swig-pl: install into prefix (r1658459) * javahl: expose the metadataOnly option to copy support (r1661451) * swig-py: add support for svn_fs_lock_many(), svn_fs_unlock_many(), svn_repos_fs_lock_many() and svn_repos_fs_unlock_many() (r1662867) * swig-py: fix support for svn_ra_lock() and svn_ra_unlock() (r1662891) * javahl: allow java callbacks to throw errors back to the svn code (r1664938, r1664939, r1664940, r1664978, r1664984) * swig-pl: fix some stack memory problems (r1668618, 1671388) * swig: warn on using SWIG 3.x as we have compatibility problems with newer versions of SWIG (1675149) * javahl: requires Java 1.6 (r1677003) * javahl: on OS X use /usr/libexec/java_home to find the JDK (r1675774) * javahl: allow compiling with a C++11 compiler (r1684412) Version 1.8.19 (10 Aug 2017, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.19 User-visible changes: - Client-side bugfixes: * Fix arbitrary code execution vulnerability CVE-2017-9800 See for details. - Server-side bugfixes: (none) - Bindings bugfixes: (none) Developer-visible changes: - General: (none) - API changes: (none) Version 1.8.18 (10 Jul 2017, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.18 User-visible changes: - Server-side bugfixes: * fsfs: never attempt to share directory representations (r1785053) * fsfs: make consistency independent of hash algorithms (r1785737 et al) This change makes Subversion resilient to collision attacks, including SHA-1 collision attacks such as . See also our documentation at and . - Client-side and server-side bugfixes: * work around an APR bug related to file truncation (r1759116) Developer-visible changes: - General: * update serf download URI in build scripts (r1700130 et al) Version 1.8.17 (29 Nov 2016, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.17 User-visible changes: - Client-side bugfixes: * fix handling of newly secured subdirectories in working copy (r1724448) * ra_serf: fix deleting directories with many files (issue #4557) * gpg-agent: properly handle passwords with percent characters (issue #4611) * merge: fix crash when merging to a local add (r1702299 et al) - Server-side bugfixes: * fsfs: fix possible data reconstruction error (issue #4658) * svnlook: properly remove tempfiles on diff errors (r1711346) - Client-side and server-side bugfixes: * fix potential memory access bugs (r1722860 et al) - Bindings bugfixes: * javahl: fix temporarily accepting SSL server certificates (r1764851) * swig-pl: do not corrupt "{DATE}" revision variable (r1767768) * swig-pl: fix possible stack corruption (r1683266) Developer-visible changes: - General: * fix inconsistent behavior of inherited property API (r1717875, r1717878) * fix patch filter invocation in svn_client_patch() (r1706783) * fix potential build issue with invalid SVN_LOCALE_DIR (issue #4653) Version 1.8.16 (28 Apr 2016, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.16 User-visible changes: - Server-side bugfixes: * mod_authz_svn: fix crash in COPY/MOVE authorization check (CVE-2016-2168) * svnserve/sasl: fix authenticating users with wrong realm (CVE-2016-2167) * mod_authz_svn: fix authz with mod_auth_kerb/mod_auth_ntlm (issue #4602) * dump: don't write broken dump files in some ambiguously encoded fsfs repositories (issue #4554) - Client-side and server-side bugfixes: * update INSTALL documentation file (r1703470, r1703475) Developer-visible changes: - General: * fix javahl test suite to work on a symlinked RAM disk (r1539230) * fix ruby test suite to work with test-unit gem (r1714790) Version 1.8.15 (15 Dec 2015, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.15 User-visible changes: - Client-side bugfixes: * gpg-agent: fix crash with non-canonical $HOME (r1691928, issue #4584) - Client-side and server-side bugfixes: * fix a segfault with old style text delta (r1618472 et al) - Server-side bugfixes: * mod_dav_svn: fix heap overflow with skel-encoded requests (CVE-2015-5343) * fsfs: reduce memory allocation with Apache (r1591005 et al) * mod_dav_svn: emit first log items as soon as possible (r1666965 et al) * mod_dav_svn: use LimitXMLRequestBody for skel-encoded requests (r1687812) - Bindings bugfixes: * swig: fix memory corruption in svn_client_copy_source_t (r1694929) Developer-visible changes: - General: * better configure-time detection of httpd authz fix (r1687304 et al) * fix compilation with apr 1.2.x (r1701237) Version 1.8.14 (5 Aug 2015, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.14 User-visible changes: - Client-side bugfixes: * document svn:autoprops (r1678494 et al.) * cp: fix 'svn cp ^/A/D/H@1 ^/A' to properly create A (r1674455, r1674456) * resolve: improve conflict prompts for binary files (r1667228 et al.) * ls: improve performance of '-v' on tag directories (r1673153) * improved Sqlite 3.8.9 query performance regression on externals (r1672295 et al.) * fixed issue #4580: 'svn -v st' on file externals reports "?" instead of user and revision after 'svn up' (r1680242) - Server-side bugfixes: * mod_authz_svn: do not leak information in mixed anonymous/authenticated httpd (dav) configurations (CVE-2015-3184) * do not leak paths that were hidden by path-based authz (CVE-2015-3187) * mod_dav_svn: do not ignore skel parsing errors (r1658168) * detect invalid svndiff data earlier (r1684077) * prevent possible repository corruption on power/disk failures (r1680819) * fixed issue #4577: Read error with nodes whose DELTA chain starts with a PLAIN rep (r1676667, r1677267) * fixed issue #4531: server-side copy (over dav) is slow and uses too much memory (r1674627) Developer-visible changes: - General: * support building on Windows with Visual Studio 2015 (r1692785) * avoid failing some tests on versions of Python with a very old sqlite (r1674522) * fix Ruby tests so they don't use the users real configuration (r1597884) - Bindings: * swig-pl: fix some stack memory problems (r1668618, 1671388) Version 1.8.13 (31 Mar 2015, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.13 User-visible changes: - Client-side bugfixes: * ra_serf: prevent abort of commits that have already succeeded (r1659867) * ra_serf: support case-insensitivity in HTTP headers (r1650481, r1650489) * better error message if an external is shadowed (r1655712, r1655738) * ra_svn: fix reporting of directory read errors (r1656713) * fix a redirect handling bug in 'svn log' over HTTP (r1650531) * properly copy tree conflict information (r1658115, r1659553, r1659554) * fix 'svn patch' output for reordered hunks (issue #4533) * svnrdump load: don't load wrong props with no-deltas dump (issue #4551) * fix working copy corruption with relative file external (issue #4411) * don't crash if config file is unreadable (r1590751, r1660350) * svn resolve: don't ask a question with only one answer (r1658417) * fix assertion failure in svn move (r1651963 et al) * working copy performance improvements (r1664531, r1664476, et al) * handle existing working copies which become externals (r1660071) * fix recording of WC meta-data for foreign repos copies (r1660593) * fix calculating repository path of replaced directories (r1660646) * fix calculating repository path after commit of switched nodes (r1663991) * svnrdump: don't provide HEAD+1 as base revision for deletes (r1664684) * don't leave conflict markers on files that are moved (r1660220, r1665874) * avoid unnecessary subtree mergeinfo recording (r1666690) * fix diff of a locally copied directory with props (r1619380 et al) - Server-side bugfixes: * fsfs: fix a problem verifying pre-1.4 repos used with 1.8 (r1561419) * svnadmin freeze: fix memory allocation error (r1653039) * svnadmin load: tolerate invalid mergeinfo at r0 (r1643074, issue #4476) * svnadmin load: strip references to r1 from mergeinfo (issue #4538) * svnsync: strip any r0 references from mergeinfo (issue #4476) * fsfs: reduce memory consumption when operating on dag nodes (r1655651) * reject invalid get-location-segments requests in mod_dav_svn and svnserve (r1667233) * mod_dav_svn: reject invalid txnprop change requests (r1667235) - Client-side and server-side bugfixes: * fix undefined behaviour in string buffer routines (r1650834) * fix consistency issues with APR r/w locks on Windows (r1611380 et al) * fix occasional SEGV if threads load DSOs in parallel (r1659013, r1659315) * properly duplicate svn error objects (r1651759) * fix use-after-free in config parser (1646785, r1646786, r1646797) Developer-visible changes: * add lock file config for testing against HTTPD 2.4+ (r1544302, r1544303) * make sqlite amalgamated build work with sqlite 3.8.x+ (r1659399) * fix build with Ruby 2 (r1596882) * process 'svnadmin dump' output as binary in the test suite (r1592987) * simplify Windows resource compilation to avoid warnings (r1532287) Version 1.8.12 (Not released, see changes for 1.8.13.) Version 1.8.11 (15 Dec 2014, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.11 User-visible changes: - Client-side bugfixes: * checkout/update: fix file externals failing to follow history and subsequently silently failing (issue #4185) * patch: don't skip targets in valid --git difs (r1592014, r1592034) * diff: make property output in diffs stable (r1589360) * diff: fix diff of local copied directory with props (r1619380, r1619393) * diff: fix changelist filter for repos-WC and WC-WC (r1621978, r1621981) * remove broken conflict resolver menu options that always error out (r1620332) * improve gpg-agent support (r1600331, r1600348, 1600368, r1600563, r1600781) * fix crash in eclipse IDE with GNOME Keyring (issue #3498) * fix externals shadowing a versioned directory (issue #4085) * fix problems working on unix file systems that don't support permissions (r1612225) * upgrade: keep external registrations (issue #4519) * cleanup: iprove performance of recorded timestamp fixups (r1633126) * translation updates for German - Server-side bugfixes: * disable revprop caching feature due to cache invalidation problems (r1543594, r1619774, r1619105, r1619118, r1619153, r1619802) * skip generating uniquifiers if rep-sharing is not supported (r1561426) * mod_dav_svn: reject requests with missing repository paths (r1643409) * mod_dav_svn: reject requests with invalid virtual transaction names (r1643437) * mod_dav_svn: avoid unneeded memory growth in resource walking (issue #4531) Developer-visible changes: - General: * make sure all members of the repos layer notify struct are valid, fixes crashes in API users using all members (r1616131) * properly generate a version resource when building on Windows (r1542610, r1564576, r1568180) * fix LIBTOOL_M4 and LIBTOOL_CONFIG variable not be evaluated properly during a unix build (r1637826) * allow the use of libtool 2.4.3 (r1640862, r1640873, r1643793) Version 1.8.10 (11 Aug 2014, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.10 User-visible changes: - Client-side bugfixes: * guard against md5 hash collisions when finding cached credentials (r1550691, r1550772, r1600909) * ra_serf: properly match wildcards in SSL certs. (r1615211, 1615219) * ra_serf: ignore the CommonName in SSL certs where there are Subject Alt Names (r1565531, r1566503, r1568349, r1568361) * ra_serf: fix a URI escaping bug that prevented deleting locked paths (r1594223, r1553501, r1553556, r1559197, issue #3674) * rm: Display the proper URL when deleting a URL in the commit log editor (r1591123) * log: Fix another instance of broken pipe error (r1596866, issue #3014) * copy: Properly handle props not present or excluded on cross wc copy (r1589184, r1589188) * copy: Fix copying parents of locally deleted nodes between wcs (r1589460, r1589486) * externals: Properly delete ancestor directories of externals when removing the external by changing svn:externals. (r1600311, 1600315, r1600323, r1600393) * ra_serf: fix memory lifetime of some hash values (r1606009) - Server-side bugfixes: * fsfs: omit config file when creating pre-1.5 format repos (r1547454, r1561703) Developer-visible changes: - General: * fix improper linking when serf is in the same prefix as existing svn libraries. (r1609004) * use proper intermediate directory when building with VS 2003-2008 (r1595431) * support generating VS 2013 and later project files. - Bindings: * ruby: removing warning about Ruby 1.9 support being new. (r1593992) * python: fix notify_func callbacks (r1594794, r1594814, r1594834, r1595061) Version 1.8.9 (07 May 2014, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.9 User-visible changes: - Client-side bugfixes: * log: use proper peg revision over DAV (r1568872) * upgrade: allow upgrading from 1.7 with exclusive locks (r1572102 et al) * proplist: resolve inconsistent inherited property results (r1575270 et al) * increase minimal timestamp sleep from 1ms to 10ms (r1581305 et al) * merge: automatic merge confused by subtree merge (issue #4481) * propget: report proper error on invalid revision for url (r1586255) * commit: fix an assertion when committing a deleted descendant (r1571747, r1571787, r1571795) * merge: resolve segfault when '--force' merges a directory delete (r1577812, r1577813, r1579429) * resolve: prevent interactive conflict resolution when nothing has been done to resolve the conflict (r1577294) * update: fix locks lost from wc with pre-1.6.17 servers (issue #4412) * merge: honor the 'preserved-conflict-file-exts' setting (r1577151) * list: fix '--verbose' against older servers (r1591111) * unlock: fix ability to remove locks with timeouts (r1579588) * copy: fix 'svn copy URL WC' on relocated working copies (r1580626, r1580650) * export: allow file externals to be exported (issue #4427) * move: fix working copy db inconsistency in cert scenarios (issue #4437) * commit: fix an issue where mixed revision copy with non copy descendants that shadow a not present node couldn't be committed (r1518942 et al) * delete: properly remove move_to info when the node in its original location is removed (r1538812 et al) * status; fix an issue where output would vary based on if the target was the node itself or its parent (r1544597 et al) - Server-side bugfixes: * ensure proper access synchronization in fsfs on Windows (r1568953 et al) * svnadmin dump: don't let invalid mergeinfo stop dump (r1574868 et al) * svnserve: resolve performance regression caused by iprops (r1578853 et al) * reduce size of memory buffer when reading config files (r1581296) * remove dead transaction if commit was blocked by hook (r1583977) * svnrdump load: fix crash when svn:* normalization (issue #4490) * fix memcached support (issue #4470) * svndumpfilter: fix order of node record headers (r1578670 et al) * mod_dav_svn: blacklist building with broken versions of httpd; 2.2.25, 2.4.5 and 2.4.6 (r1545835) * mod_dav_svn: allow generic DAV clients to refresh locks (issue #3515) * mod_dav_svn: detect out of dateness correctly during commit (issue #4480) Developer-visible changes: - General: * improve consistency checks of DAV inherited property requests (r1498000) * fix occasional failure in autoprop_tests.py (r1567752) * avoid duplicate sqlite analyze information rows (r1571214) * add Mavericks to our sysinfo output (r1573088) * bump copyright years to 2014 (r1555403) * unbreak test suite when running as root (r1583580) * resolve buffer overflow in testcode (r1481782) * fix libmagic detection with custom LDFLAGS (r1577200) * fix an out of scope variable use in merge (r1587946) * javahl: fix crash from resolve callback throwing an exception (r1586439) * ruby: fix two memory lifetime bugs (r1586052, r1586467) * fix a missing null byte when handling old pre-1.4 deltas (r1587968) * fix building with APR 0.9.x (r1585499) * make svn_ra_get_locks() and svn_ra_get_lock() report not locked nodes with a NULL svn_lock_t *, as documented (r1578273, r1578311, r1578326) * fix tests for compiler flags (r1573106) Version 1.8.8 (19 Feb 2014, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.8 User-visible changes: - Client-side bugfixes: * use CryptoAPI to validate intermediary certificates on Windows (r1564623) * fix automatic relocate for wcs not at repository root (r1541638 et al) * diff: fix when target is a drive root on Windows (r1541635) * wc: improve performance when used with SQLite 3.8 (r1542765) * copy: fix some scenarios that broke the working copy (r1560690) * move: fix errors when moving files between an external and the parent working copy (r1551524, r1551579) * log: resolve performance regression in certain scenarios (r1553101 et al) * merge: decrease work to detect differences between 3 files (r1548486) * checkout: don't require flush support for symlinks on Windows (r1547774) * commit: don't change file permissions inappropriately (issue #4440) * commit: fix assertion due to invalid pool lifetime (r1553376 et al) * version: don't cut off the distribution version on Linux (r1544878 et al) * flush stdout before exiting to avoid information being lost (r1499470) * status: fix missing sentinel value on warning codes (r1543145) * update/switch: improve some WC db queries that may return incorrect results depending on how SQLite is built (r1567109) - Server-side bugfixes: * reduce memory usage during checkout and export (r1564215) * fsfs: create rep-cache.db with proper permissions (issue #3437) * mod_dav_svn: prevent crashes with SVNListParentPath on (CVE-2014-0032) * mod_dav_svn: fix SVNAllowBulkUpdates directive merging (r1548105) * mod_dav_svn: include requested property changes in reports (r1557522) * svnserve: correct default cache size in help text (r1563110) * svnadmin dump: reduce size of dump files with '--deltas' (r1554978) * resolve integer underflow that resulted in infinite loops (r1567985) Developer-visible changes: - General: * fix occasional failure of check_tests.py 12 (r1496127 et al) * fix failure with SQLite 3.8.1-3.8.3 when built with SQLITE_ENABLE_STAT3/4 due to bug in SQLite (r1567286, r1567392) * specify SQLite defaults that can be changed when SQLite is built to avoid unexpected behavior with Subversion (r1567064) - API changes: * numerous documentation fixes * svn_client_commit_item3_dup() fix pool lifetime issues (r1550803) * ra_serf: properly ask multiple certificate validation providers for acceptance of certificate failures (r1535532) * release internal fs objects when closing commit editor (r1555499) * svn_client_proplist4() don't call the callback multiple times for the same path in order to deliver inherited properties (r1549858 et al) - Bindings: * javahl: make test suite run without installing on OS X (r1535115) * swig: fix building out of tarball on OS X (r1555654) * swig-pl: fix with --enable-sqlite-compatibility-version (r1559009) * swig: fix building bindings on OS X when APR has the -no-cpp-precomp flag in the apr-config --cppflags output. (r1535610) * swig: fix building from tarball with an out-of-tree build (r1543187) Version 1.8.7 (Not released, see changes for 1.8.8.) Version 1.8.6 (Not released, see changes for 1.8.8.) Version 1.8.5 (25 November 2013, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.5 User-visible changes: - Client-side bugfixes: * fix externals that point at redirected locations (issues #4428, #4429) * diff: fix assertion with move inside a copy (issue #4444) - Server-side bugfixes: * mod_dav_svn: Prevent crashes with some 3rd party modules (r1537360 et al) * mod_dav_svn: canonicalize paths properly (r1542071) * mod_authz_svn: fix crash of mod_authz_svn with invalid config (r1541432) * hotcopy: fix hotcopy losing revprop files in packed repos (issue #4448) - Other tool improvements and bugfixes: * mod_dontdothat: Fix the uri parser (r1542069 et al) Developer-visible changes: - General: * fix compilation with '--enable-optimize' with clang (r1534860) * fix compilation with debug build of BDB on Windows (r1501656, r1501702) * fix '--with-openssl' option when building on Windows (r1535139) * add test to fail when built against broken ZLib (r1537193 et al) - Bindings: * swig-rb: fix tests to run without installing on OS X (r1535161) * ctypes-python: build with compiler selected via configure (r1536537) Version 1.8.4 (29 October 2013, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.4 User-visible changes: - Client- and server-side bugfixes: * fix assertion on urls of the form 'file://./' (r1516806) * stop linking against psapi.dll on Windows (r1534102) * translation updates for Swedish - Client-side bugfixes: * revert: fix problems reverting moves (issue #4436) * update: fix assertion when file external access is denied (issue #4422) * merge: reduce network connections for automatic merge (r1468980 et al) * merge: fix path corruption during reintegration (r1523666) * mergeinfo: fix crash (r1519955) * ra_serf: verify the result of xml parsing (r1501199 et al) * ra_serf: improve error messages during commit (r1526439) * ra_local: fix error with repository in Windows drive root (r1518184) * fix crash on windows when piped command is interrupted (r1522892) * fix crash in the crash handler on windows (r1532023) * fix assertion when upgrading old working copies (r1520529) - Server-side bugfixes: * hotcopy: cleanup unpacked revprops with '--incremental' (r1512300 et al) * fix OOM on concurrent requests at threaded server start (r1527103 et al) * fsfs: improve error message when unsupported fsfs format found (r1534158) * fix memory problem in 3rd party FS module loader (r1519615 et al) Developer-visible changes: - General: * allow compiling against serf 1.3 and later on Windows (r1517123) - Bindings: * javahl: canonicalize path for streamFileContent method (r1524869) Version 1.8.3 (29 August 2013, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.3 User-visible changes: - Client- and server-side bugfixes: * translation updates for Swedish * enforce strict version equality between tools and libraries (r1502267) * consistently output revisions as "r%ld" in error messages (r1499044 et al) - Client-side bugfixes: * status: always use absolute paths in XML output (issue #4398) * ra_serf: 'svn log -v' fails with a 1.2.x server (issue #4044) * ra_serf: fix crash when committing cp with deep deletion (issue #4400) * diff: issue an error for files that can't fit in memory (r1513119 et al) * svnmucc: generate proper error for mismatched URLs (r1511353) * update: fix a crash when a temp file doesn't exist (r1513156) * commit & update: improve sleep for timestamps performance (r1508438) * diff: continue on missing or obstructing files (issue #4396) * ra_serf: use runtime serf version for User-Agent (r1514315, r1514628) * ra_serf: ignore case when checking certificate common names (r1514763) * ra_serf: format distinguished names properly (r1514804) * ra_serf: do not retry HTTP requests if we started to parse them (r1503318) * ra_serf: output ssl cert verification failure reason (r1514785 et al) * ra_serf: allow session reuse after SVN_ERR_CEASE_INVOCATION (r1502901) * ra_serf: include library version in '--version' output (r1514295 et al) * info: fix spurious error on wc root with child in conflict (r1515366) - Server-side bugfixes: * svnserve: fix creation of pid files (r1516556) * svnadmin: fix output encoding in non-UTF8 environments (r1506966) * svnsync: fix high memory usage when running over ra_serf (r1515249 et al) * mod_dav_svn: do not map requests to filesystem (r1512432 et al) * svnauthz: improve help strings (r1511272) * fsfs: fixed manifest file growth with revprop changes (r1513874) * fsfs: fix packed revprops causing loss of revprops (r1513879 et al) - Other tool improvements and bugfixes: * svnwcsub/irkerbridge: fix symlink attack via pid file (r175 from upstream) Developer-visible changes: - General: * describe APR unimplemented errors as coming from APR (r1503010 et al) * mod_dav_svn: update INSTALL to reflect configure defaults (r1515141) * davautocheck: use the correct apxs binary by default (r1507889, r1507891) - API changes: * svn_config_walk_auth_data() config_dir arg: permit NULL (r1507382 et al) - Bindings: * swig-pl: fix SVN::Client not honoring config file settings (r150744) * swig-pl & swig-py: disable unusable svn_fs_set_warning_func (r1515119) Version 1.8.2 (Not released, see changes for 1.8.3.) Version 1.8.1 (23 July 2013, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.1 User-visible changes: - Client- and server-side bugfixes: * translation updates for German and Simplified Chinese * improve sqlite error message output (r1497804) * support platforms lacking mmap (r1498136) * allow configuration files to start with UTF-8 BOM (r1499100 et al) * don't fail on UTF-8 data when encoding conversion not available (r1503009) * improve error messages when encoding conversion fails (r1503010) - Client-side bugfixes: * merge: rename 'automatic merge' to 'complete merge' (r1491432) * mergeinfo: reduce network usage for '--show-revs' (r1492005) * ra_serf: improve http status handling (r1495104) * merge: avoid unneeded RA session (r1493475) * merge: reduce network usage (r1478987) * merge: remove duplicated ancestry check (r1493424, r1495597) * ra_serf: fix 'Accept-Encoding' header for IIS interoperability (r1497551) * svn status: improve documentation for lock columns (r1497318, r1497319) * ra_serf: fix support for 'get-file-revs-reversed' capability (r1498456) * log: reduce network usage on repository roots (r1496957) * diff: avoid temporary files when calling external diff (issue #4382) * upgrade: fix notification of 1.7.x working copies (r1493703, r1494171) * fix crash during tree conflict resolution (issue #4388) * interactive file merge: add two additional choices (r1491816, r1494089) * diff: use local style paths in error messages (r1500680) * resolve: improve the interactive conflict resolution menu (r1491739 et al) * switch: use local style path in error message (r1500074) * ra_serf: improve error output when receiving invalid XML (r1498851) * svn cleanup: explain what the command does in help output (r1497310) * blame: error on -r M:N where M>N unless server supports (r1498449 et al) * gpg-agent auth: don't try to use agent when unavailable (r1500762 et al) * gpg-agent auth: don't require GPG_TTY or TERM env vars (r1500801) * update: fix some tree conflicts not triggering resolver (r1491868 et al) * commit: remove stale entries from wc lock table when deleting (r1491756) * merge: fix --record-only erroring out on renamed path (issue #4387) * svnmucc: fix 'make install' symlink to work when DESTDIR is set (r1501072) * wc: fix crash when target is symlink to a working copy root (issue #4383) * ra_serf: change "internal malfunction" errors to normal errors (r1502577) * ra_serf: handle proxies not supporting chunked requests (r1502401 et al) - Server-side bugfixes: * fsfs: resolve endless loop problem when repos/db/uuid has \r\n (r1492145) * fsfs: remove revision property buffer limit (r1491770) * mod_dav_svn: better status codes for anonymous user errors (r1495918) * mod_dav_svn: better status codes for commit failures (r1490684) * fix performance regression in 'svn log' against root (r1494913) * allow deleting non-user-visible 'svn:' properties (r1495432) * fsfs: fix crash on strict-alignment architectures (r1495806, r1495985) * svnadmin upgrade: fix error of non-sharded fsfs repositories (r1494287) * svnadmin create: deny '--fs-type=fsfs --compatible-version=1.0' (r1494223) * svnadmin upgrade: fix data loss when cancelling in last stage (r1494298) * mod_dav_svn: fix incorrect path canonicalization (r1503528) See CVE-2013-4131, and descriptive advisory at http://subversion.apache.org/security/CVE-2013-4131-advisory.txt - Other tool improvements and bugfixes: * fsfs-stats (tool): resolve segfault when passing invalid path (r1492164) * svn-bench: fix help output (r1493951) * svnpubsub: add version header to server (r1491707) Developer-visible changes - General: * ra_serf: fix some test runner issues on Windows (r1490679) * fix two issues in reverse svn_ra_get_file_revs() (r1492148, et al) * handle --compatible-version=1.8 in the C tests (r1494342) * improve clang compatibility (r1480080 et al) * use proper cancel baton when handling conflicts (r1495850) * fs: BDB: provide proper error value from BDB (r1495428) * ra_serf: tweak connection failed error value (r1496132, et al) * svn_client_log5: resolve possible segfault (r1496110) * fix metadata_only move to work when target is unversioned node (r1498564) * ra_svn: fix segfault with a NULL commit message (r1498550, r1499727) * Ev2: correctly initialize node kind in shims' change table (r1501058) * Ev2: fix copyfrom URL construction in shims (r1500226) * fs: improve test against newlines in filenames (r1498483 et al) * make building with BDB 6 an opt-in feature (r1499438) * sqlite: allow placing amalgamation in build dir (r1499034, r1500175) * ra_svn: make sessions usable after log callback early out (r1503554) - Bindings: * swig-rb: fix tests with out-of-tree-builds (r1492295) * javahl: fix encoding of error messages produced by javahl (r1492264) * swig-pl: silence compiler warnings (r1487094) * swig-pl: improve documentation (r1488693, r1490721, r1500904) Version 1.8.0 (18 Jun 2013, from /branches/1.8.x) http://svn.apache.org/repos/asf/subversion/tags/1.8.0 User-visible changes: - General: * require serf as client-side http library (neon support removed) (r1349694) * deprecate the Berkeley DB FS backend (libsvn_fs_base) (r1464985 et al) - Major new features: * working copy records moves as first-class operation (issue #3631, #4232) * merge uses reintegrate mode automatically when needed (r1369896 et al) * FSFS: Packing of revision property shards (issue #3944) * support inheritable properties (r1395109) * repository can suggest config for autoprops and ignores (r1401908) * support gpg-agent for password caching (r1151069) * authz rules can be stored inside the repository (r1424780) - Minor new features and improvements (client-side): * doubled svn:// protocol throughput (r1325899) * optimize file/dir truename checks on Windows (r1435527) * new 'commit --include-externals' option (related to issues #1167, #3563) * new --include-externals option for 'svn list' (issue #4225) * remove extraneous externals output from 'svn status -q' (issue #1935) * reject some attempts to merge between unrelated branches (r1215273) * new --ignore-properties option for 'svn diff' (r1239553, -617) * new --properties-only option for 'svn diff' (r1336110) * new --patch-compatible option for 'svn diff' (r1239561) * new --no-diff-added option for 'svn diff' (r1433958) * new w/c subtree duplication tool (tools/client-side/detach.py) * new mergeinfo fixup tool (tools/client-side/mergeinfo-sanitizer.py) * 'svn diff' can compare arbitrary files and directories (r1310291, et al) * ra_serf avoids re-downloading content present in pristine store (r1333936) * 'svn mergeinfo' now honors the --revision (-r) option (issue #4199) * 'svn mergeinfo' now shows a summary graph by default (issue #4239) * new --search and --search-and options for 'svn log' (r1354666, -83518) * 'svn log' reports the node kind even for pre-1.6 revision files (r1242958) * sort path list generated by "svn log -v --xml" (r1299323) * new built-in interactive text conflict merge tool (r1357864, et al) * 'svn --version' shows build system info (r1368662) * 'svn --version --verbose' shows runtime environment info (r1370813 et al) * 'svn' is now non-interactive when not run in a terminal device (r1424037) * 'svn propset' checks spelling of reserved property names (r1470781) * improve working copy performance on network disks (issue #4176) * support for custom keyword definitions in svn:keywords (issue #890) * svn:ignore __pycache__ directories by default (r1150073) * 'svn diff --git' include copyfrom revision in "copied" headers (r1155279) * svn:mergeinfo related operations now use much less memory (r1149519 et al) * get list of supported schemes for RA libraries (r1148134) * 'svn checkout' skips file externals from other repositories (r1153110) * 'svn resolve' exits non-zero if conflicts could not be resolved (r1150439) * let HTTPv2-aware clients fetch v2-style resources (r1161202) * 'svn status' with better NLS support (r1157537, -682) * better tracking of shallow-yet-complete merges (issues #4056, #4057) * make 'svn status --quiet' w/ externals quieter still (issue #1935) * ensure that conflict paths are shown relative-ized (r1337520) * improve performance of local multi-target deletions (r1195873) * various interactive conflict resolver improvements in 'svn' (r1440421 etc) * improved tree diff implementation for diff and merge (r1440599 et al) * tree conflicts on directories detected better during merges (issue #3150) * allow reverting unmodified copies with 'svn remove' (r1442611) * make 'svn diff' with mixed URL and local path targets work (r1442640) * make 'svn patch' re-add deleted directories if needed (r1445333) * make repos-wc diffs fully ancestry-aware (r1445904) * 'svn diff --git' now implies 'svn diff --show-copies-as-adds' (r1446279) * 'svn diff --show-copies-as-adds' now implies --notice-ancestry (r1446279) * improved tree-conflict detection for 'svn switch' (r1449413, r1450582) * allow up to 8 revision number digits in 'svn status -v' output (r1428637) * show node kind (file or dir) in tree conflict descriptions (r1429907) * restore deleted switched paths upon next update (issue #4295) * add support for copying paths from foreign repositories (issue #3590) * fix merge -cA,B with --accept option aborts if rA conflicts (issue #4238) * 'svn resolve' interactive support; no longer requires --accept (r1336929) * notify when removing externals leaves behind modified files (r1366021) * new 'http-max-connections' configuration option for serf (r1421559) * new 'http-bulk-updates' configuration option for serf (r1421490) * 'svn cleanup' now runs SQLite "vacuum" to reclaim space (r1418459) * 'svn info' displays repository-relative URL (r1415365) * fix serf memory leak on checkout (issue #4194) * detect duplicate paths setting svn:externals (issue #4227) * make ra_serf work over HTTP/1.0 proxies (issue #3979) * make ra_serf accept gzip compression for all responses (r1407454) * double ra_serf performance for checkout and export (r1407545) * improve network and disk i/o interleaving in ra_serf (r1407934) * avoid assert in ra_serf when REPORT response was truncated (r1407935) * rewrite ra_serf XML parser (r1409259 et al) * ra_serf can create transaction with inline txnprops (r1375167) * partially fix replace+propset of locked file fails over DAV (issue #3674) * fix ra_serf doesn't handle bad baseline error from server (issue #4127) * decreased default http timeout for ra_serf (issue #3968) * prevent ra_serf from corrupting the working copy (issue #3993) * ra_serf transmits property changes inline to reduce requests (r1378927) * by default avoid SSL certificate prompts in client (issue #2410) * improve interactive resolution of property conflicts (r1387678 et al) * make ra_serf raise an error upon delta-base mismatch (issue #4235) * tune ra_svn transmit buffer handling (r1391788) * make 'svnrdump' work with serf (issue #4116) * fix 'svnrdump' on path below repository root (issue #4101) * support ipv6 in URLs (e.g. http://[::1]/svn/repos) (r1454047) * conflict resolver now iterates paths in a sorted order (r1461820) * mod_dav_svn does keyword expansion with 'kw=1' query arg (r1466055) - Minor new features and improvements (server-side): * improve performance of config file parsing (r1344347 et al) * new 'svnadmin load --revision' load filtering support (issue #3734) * new 'svnadmin hotcopy --incremental' support for FSFS (issue #3815) * new 'svnadmin lock' / 'svnadmin unlock' subcommands (issue #3942, #4092) * new SVNUseUTF8 configuration option for mod_dav_svn (issue #2487) * new SVNHooksEnv configuration option for mod_dav_svn (r1239966) * new SvnPubSub distributed commit hooks (tools/server-side/svnpubsub) * new light-weight benchmarking client (tools/client-side/svn-bench) * svndumpfilter dependency analysis (tools/server-side/svnpredumpfilter.py) * new automatic working copy updater (tools/server-side/svnpubsub) * new 'svnadmin freeze' subcommand (r1376228) * 'svndumpfilter' now supports --delta dumpfiles (r1351009, -3745) * new --drop-all-emtpy-revs option for 'svndumpfilter' (issue #3681) * client version info now reported to commit hooks (issue #4124) * txn name now reported to post-commit hooks (r1240856) * support for server-side keyword expansion in mod_dav_svn (r1466055) * FSFS now able to cache revision properties (r1326307) * FSFS cache for changed-paths increases 'svn log' performance (r1378358) * FSFS cache mergeinfo requested during 'log -g' (r1395439) * many FSFS caching improvements (r1390435, r1390447) * directory and property deltification option in FSFS (issue #4084) * fine-grained control deltification behavior via fsfs.conf (r1311476) * FSFS de-duplication ("rep sharing") now works within a revision (r1397773) * FSFS de-duplication now works for properties as well (r1243312) * read FSFS data using fewer fopen calls (issue #3372) * 'svnadmin verify' will now check meta data (issues #3956, #4211) * 'svnadmin verify' now checks for issue #4129 style corruption (r1304656) * new --client-speed option for svnserve (r1391788) * new --single-threaded option in svnserve (r1296018) * hook script templates are now marked as executable (r1153414) * error out on non-canonical fspaths in the authz file (r1166111) * improve path lookup performance in FSFS (r1442088) * svnserve now logs explicit path and reason for authz failures (r1446542) * validate offsets from rep-cache to prevent FSFS corruption (issue #4277) * new AuthzSVNGroupsFile option to store authz groups separately (r1438407) * new 'SVNAllowBulkUpdates prefer' option for mod_dav_svn (r1417642, et al) * new 'SVNMasterVersion' option for mod_dav_svn (r1398962) * added virtual-host support to 'svnserve' (r1401296) * new fsfs-stats tool which prints FSFS repository stats (r1410995) * new fsfs-reorg tool to optimize FSFS packing (r1383214, r1385395) * new --compatible-version option for 'svnadmin create' (r1407279 ) * new --ignore-properties option for 'svnlook diff' (r1407905) * new --properties-only option for 'svnlook diff' (r1407905) * new --diff-cmd option for 'svnlook diff' (r1413449) * allow leading "r"'s in http: ?p= and ?r= query parameters (r1221463) * faster 'svn ls' for large directories (r1296627) * mod_dav_svn now advertises supported POST types (r1375123) * mod_dav_svn can create transaction with inline txnprops (r1375167) * run start-commit hook after transaction creation (r1376201) * avoid byte-for-byte comparison where it can be avoided (r1390641) * various server-side performance improvements for 'log -g' (r1395442 et al) * allow up to 10Gbit throughput with svnserve (r1391788) * install mod_dontdothat correctly (r1454450) * svnadmin verify can now verify transactions (r1462353) * FSFS verifies revisions as they are added (r1462409) - Client-side bugfixes: * fix inconsistent 'svn log' output for empty revisions (issue #3964) * fix mis-ordered text output of 'svn log --diff' on Windows (r1220783) * fix 'svn log --diff' on moved file (issue #4153). * fix 'svn revert' of 'svn move' (issue #876) * fix file externals wrongly "resurrecting" a deleted file (#4017) * fix reporting of corrupted 1.6 w/cs by 'svn upgrade' (r1182904, -9) * fix bug caused by URI-decoding local merge source paths (r1210539) * fix properties out of sync with repos after merge and revert (issue #4305) * fix merge of replacement on local delete fails (issue #4011) * fix replacements on deletes produce wrong tree conflicts (issue #3806) * made ra_serf handle location headers that are not RFC-compliant (r1443906) * merge no longer errors out after resolving all conflicts (issue #4316) * fix svn blame mis-categorizing file type as binary (issue #2089) * fix externals not removed when working copy is made shallow (issue #3741) * fix update under add with not-present parent (issue #4111) * fix revert of files with svn:needs-lock under copied dirs (r1343168) * fix repos->wc diff of local copied/moved-here directories (r1341927) * fix repos->wc diff of local copied/moved-here files (r1341544) * fix "svn diff -cN PATH" where PATH was deleted in rN (r1338708) * fix dependency on APR hash order in several logic paths (r1338350 et al) * fix path inconsistencies in 'svn diff' output (r1338291) * fix misleading error message printed by 'svn switch' (issue #2337) * fix bug in mergeinfo recording during foreign-repos merge (r1430310) * fix spurious merge conflicts for binary files with keywords (issue #4221) * fix patching symlinks with 'svn patch' (issue #4273) * make 'svn switch' refresh lock information (issue #3378) * fix 'svn diff' output doesn't apply as patch without fuzz (issue #3362) * fix mergeinfo recording for multiple-revision-range merge (issue #4306) * fix diffs shown by 'show-diff' conflict prompt option (r1438879) * don't print an update summary header with no content (r1439480) * make 'svn rm' remove externals registrations below its targets (r1361256) * fix crashes in ra_serf where AVG 2012 Surf-Shield is in use (issue #4175) * don't raise conflicts on identical binary files (issue #4128) * improve error messages when wc.db missing (issue #4118) * fix 'svn diff' showing wrong text change (issue #4270) * fix 'svn diff -rN' failing to show local replace (issue #3797) * fix 'svn diff' showing wrong revision (issue #4010) * fix 'svn merge' showing spurious notifications (issue #2910) * parse '.@HEAD' correctly (issue #3606) * fix 'svn revert' after conflict in sparse working copy (issue #4168) * fix bug in global/per-server config handling in serf (r1421516) * properly display errors from serf (r1398742) * fix crash in ra_serf (r1408291) * fixed svnmucc propset and propdel on repository root (issue #3663) * fix 'svn info' output with ancient svnserve servers (pre-1.2) (r1409732) * ra_serf shows error message for 408 Request Timeout response (r1410983) * fix handling of "\ No newline ..." in diff/patch (r1411723, r1412382) * allow infinite http timeout in ra_serf (r1411976) * using unknown svn: property names now requires --force (issue #4261) * fix handling of case insensitive configuration files (r1215089) * properly handle errors during password caching (r1380695) * fix svnversion output not always a number (issue #4226) * fix conflict resolver losing executable bit of a file (r1391019) * fix redundant notifications when merging with ra_serf (issue #3802) * fix 'svn add --force /path/to/wcroot' should work (issue #4241) * fix file permissions changed after commit (issue #4331) * improve handling of http errors in ra_serf (1452792, 1452870) * include checksum of missing pristines in error message (r1452800) * fix an assert when merging against a replaced source (issue #4132) * fix replacement in merge source has incorrect notification (issue #4138) * improve performance of checkout (r1453791) * fixed documentation regarding merge source (issue #3247) * fix merge errors out after resolving conflicts (issue #4316) * fix delete/move with file external in unversioned dir (issue #4293) * fix resolving tree conflict with local node missing (r1461848) * fix invalid read during diff suffix scanning (issue #4339) * fix assertion when running 'svn log @PREV' (r1462134) * optimize enumerating configuration options (r1464478) * revert will now sleep for timestamps if using commit times (r1464769) * don't allow externals to be deleted with 'svn rm' (r1464992) * improved memory usage in ra_serf and ra_local (r1465280) * replace some assertions with more helpful error messages (r1465975) * fixed long keyword expansion truncated (issue #4349) - Server-side bugfixes: * SVNParentPath / repository listing now authz-filtered (r1408184) * user/group names in the authz config file are case-sensitive (r1475772) * limit commit runtime for nodes with very deep histories (r1224836) * 'svnadmin recover' truncates rep-cache at the right point (issue #4077) * fix crashes in dumpstream loading with skipped revs (r1214202, r1214216) * fix 'svn log -g' incorrectly treating rename as merge (issue #4022) * fix bug where fsfs file-hinting fails (issue #4320) * don't leak path of repository on server's disk to clients (r1330906) * remove spurious is-fresh-txn-root from empty revision files (issue #4031) * fix a stdout handling problem in 'svnlook diff' (r1411971) * fix erratic behaviour in 'svnlook diff' showing property diffs (r1412224) * fix inconsistent authz error messages in 'svn log' in svnserve (r1292462) * fix svndumpfilter for empty paths in included or excluded lists (r1294583) * make fsfs packing threadsafe (r1376011) * don't error out on intermittent memcached failures (r1394470) * fix a ra_svn deadlock with zero-copy server option (r1465622) - Other tool improvements and bugfixes: * 'svnmucc' promoted to first-class supported utility (issue #3308, #4279) * make 'svnmucc' prompt for log messages (issue #3418) * rename 'svnauthz-validate' to 'svnauthz' (issue #4284) * make 'svnauthz' optionally validate user/path access (r1197588) * fix mailer.py test suite problems (r1449582) * fix mailer.py not showing dirs with property deletions (r1449582) * make mailer.py generate Date and Message-ID headers (r1449592) * new '-?' option support for 'svnmucc' (r1339428) * provide the repository name to mailer.py (r1439592) * add '--force-interactive' to svnmucc (r1457789) * add '--trust-server-cert' to svnmucc (r1458995) Developer-visible changes: - General: * now require Python 2.5 for tests and dev tools (r1243627) * now require bzip2 for tests and dev tools (r1148512) * configure defaults to --without-apache-libexecdir (r1469862) * support builds with APR pool debugging (r1176894) * 'make extraclean' is more thorough now (r1149460) * support for Serf 2 (r1147538) * introduction of editor v2 (via private APIs only) (r1166332 et al) * improve SQLite setup for compatibility with OS X 10.7. (r1181666) * rework switch statement to accommodate OWC compiler limitations (r1204407) * new --enable-sqlite-compatibility-version configure option (r1201421) * make test suite LD_LIBRARY_PATH include just-built auth plugins (r1200474) * packages/ directory removed, contents were outdated and unused (r1442167) * rename 'makefile.ezt' to 'build-outputs.mk.ezt' (r1444822) * use expensive compiler optimizations with --enable-optimize (r1445063) * in Visual C++ builds, move temp files to different directory (r1446416) * remove --with-ssl and --with-gssapi configure options (r1449023) * require at least serf 1.2.0 as build dependency (issue #4296) * fix error tracing to record file/line properly (r1331242) * add --log-level argument to win-tests.py (r1335461) * improve GDB pretty-printing of svn types (r1351336, r1364750, r1365035) * load third-party FS modules (if --enable-runtime-module-search) (r1362434) * enable running the regression tests over https (r1349699) * support 'make davautocheck' on OS X (r1421583) * new '--enable-gcov' configure option (r1416646) * fix build with Apache HTTPD 2.5 (r1408985) * allow running the test suite through a http proxy (r1410195) * don't use non-constant initializers in struct variables (r1412911) * allow generation of Visual Studio 2012 compatible projects (r1245152) * nicer pretty-printing of Subversion data types in gdb (r1367262 et al) * teach serf build on Windows to use static APR/Util and OpenSSL (r1371338) * add --ssl-cert option to win-tests.py to run tests over https (r1372760) * don't strip Content-Type header form .po files on Windows (r1380056) * configure now script auto-detects GNOME keyring (r1387230) * allow configure to detect BDB on Debian-based Linux distros (r1390633) * auto-detect serf via pkg-config (r1391662) * improve queries for compatibility with SQLite 3.7.16 (r1455239) * remove support for in-tree apr, apr-util and apr-memcache (r1456924) * FSFS caching supports prefixes now (r1462436) * maintainer mode now prints symbolic error codes (r1465157) * don't require NLS support for kwallet support (r1466445) * make Julian happy (r1413030) - API changes: * fix inconsistent handling of log revs without changed paths (issue #3694) * deprecated SVN_ERR_SQLITE_UNSUPPORTED_SCHEMA (r1173240) * provide API to clear cached auth credentials (issue #2775) * improve repository location information in various APIs (issue #4170) * major rewrite of conflict storage and handling APIs (r1354973 et al) * hide (deprecate) svn_wc APIs that use editors (r1243339) * svn_stringbuf_ensure() allocates an extra byte for terminator (r1308966) * switch and update apis are now more consistent (r1465292) * deprecated svn_client_merge_reintegrate (r1466742) * deprecated low level ra_svn apis (r1466907) - Bindings: * star-imports in swig-py only import 'svn_*' symbols (r1303375) * fix compilation of Perl bindings on Mandriva 2007 (issue #2617) * new JavaHL testing targets (r1182983) * enable returning an error on malfunctions for JavaHL (r1366215) * MacOS X build fix to cope with missing GNOME keyring (r1397844) * fix swig bindings tests on MacOS X (r1397846) * fix assertion failure in JavaHL error reporting (r1405922) * support ruby 1.9 (r1407206) * JavaHL: Include OSGI Manifest information in svn-javahl.jar (r1234864) * new svn_auth_set_gnome_keyring_unlock_prompt_func function (r1241554) * fix svn_txdelta window ops for python bindings (r1389054) * fix build of Perl bindings with newer versions of SWIG (r1389658) * add missing API functions to Perl bindings (issue #2646) * add missing API functions to Python bindings (r1392038 et al) * add missing API functions to JavaHL bindings (issue #4326) * fix some reference counting bugs in swig-py bindings (r1464899, r1466524) Version 1.7.22 (12 Aug 2015, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.22 Developer-visible changes: - General: * fix the regression test suite which was broken in 1.7.21 (r1694012) Version 1.7.21 (5 Aug 2015, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.21 User-visible changes: - Client-side bugfixes: * cp: fix 'svn cp ^/A/D/H@1 ^/A' to properly create A (r1674455, r1674456) * fix issue #4551: svnrdump load commits wrong properties, or fails, on a non-deltas dumpfile (r1652182 et al.) - Server-side bugfixes: * mod_authz_svn: do not leak information in mixed anonymous/authenticated httpd (dav) configurations (CVE-2015-3184) * do not leak paths that were hidden by path-based authz (CVE-2015-3187) * fix 'svnadmin recover' for pre-1.4 FSFS repositories (r1561419) Developer-visible changes: - General: * support building on Windows with Visual Studio 2012, 2013 and 2015 (r1687158, r1692783) - Bindings: * swig-pl: fix some stack memory problems (r1668618, 1671388) Version 1.7.20 (31 Mar 2015, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.20 User-visible changes: - Client-side bugfixes: * fix 'svn patch' output for reordered hunks (issue #4533) - Server-side bugfixes: * reject invalid get-location-segments requests in mod_dav_svn and svnserve (r1667233) * mod_dav_svn: reject invalid txnprop change requests (r1667235) - Client-side and server-side bugfixes: * properly duplicate svn error objects (r1651759) * fix use-after-free in config parser (1646785, r1646786, r1646797) Developer-visible changes: * add lock file config for testing against HTTPD 2.4+ (r1544302, r1544303) * fix build with absolute path to neon install (r1664789) Version 1.7.19 (15 Dec 2014, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.19 User-visible changes: - Client-side bugfixes: * rm: display the proper URL in commit log editor (r1591123) * diff: fix invalid read during suffix scanning (issue #4339) * fix crash in eclipse IDE with GNOME Keyring (issue #3498) * checkout/update: fix file externals failing to follow history and subsequently silently failing (issue #4185) - Server-side bugfixes: * svnadmin dump: don't let invalid mergeinfo prevent a dump (issue #4476) * mod_dav_svn: reject requests with missing repository paths (r1643409) * mod_dav_svn: reject requests with invalid virtual transaction names (r1643437) * mod_dav_svn: avoid unneeded memory growth in resource walking (issue #4531) Developer-visible changes: - General: * properly generate a version resource when building on Windows (r1542610, r1564576, r1568180) * fix a problem with the unix build that could result in linking to the wrong Subversion libraries at build or at run time (r1594157) * use a proper intermediate directory when building with Visual Studio 2003-2008 (r1595431) * fix LIBTOOL_M4 and LIBTOOL_CONFIG variable not be evaluated properly during a unix build (r1637826) * allow the use of libtool 2.4.3 (r1640862, r1640873, r1643793) Version 1.7.18 (11 Aug 2014, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.18 User-visible changes: - Client-side bugfixes: * guard against md5 hash collisions when finding cached credentials (r1550691, r1550772, r1600909) * ra_serf: properly match wildcards in SSL certs. (r1615211, 1615219) * ra_serf: ignore the CommonName in SSL certs where there are Subject Alt Names (r1565531, r1566503, r1568349) Developer-visible changes: - General: * fix occasional failure in checkout_tests.py test 12. (r1496127) * disable building ZLib's assembly optimizations on Windows. Version 1.7.17 (07 May 2014, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.17 User-visible changes: - Client-side bugfixes: * log: use proper peg revision over DAV (r1568872) * move: fix errors when moving files between an external and the parent working copy (r1551579) * copy: fix 'svn copy URL WC' on relocated working copies (r1580626, r1580650) - Server-side bugfixes: * mod_dav_svn: blacklist building with broken versions of httpd; 2.2.25, 2.4.5 and 2.4.6 (r1545835) * mod_dav_svn: detect out of dateness correctly during commit (issue #4480) Developer-visible changes: - General: * fix libmagic detection with custom LDFLAGS (r1577200) * fix a missing null byte when handling old pre-1.4 deltas (r1587968) * support building with Serf 1.3.x (r1517123, r1535139) - Bindings: * javahl: fix crash from resolve callback throwing an exception (r1586439) Version 1.7.16 (26 Feb 2014, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.16 User-visible changes: - Client-side bugfixes: * copy: fix some scenarios that broke the working copy (r1560690) * diff: fix regressions due to fixes in 1.7.14 (issue #4460) - Server-side bugfixes: * mod_dav_svn: prevent crashes with SVNListParentPath on (CVE-2014-0032) * reduce memory usage during checkout and export (r1564215) Developer-visible changes: - General: * fix failure in checkout_tests.py * support compiling against Cyrus sasl 2.1.25 (r1404912, r1413402) * support compiling against neon 0.30.x (r1566320) Version 1.7.15 (Not released, see changes for 1.7.16.) Version 1.7.14 (25 Nov 2013, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.14 User-visible changes: - Client- and server-side bugfixes: * fix assertion on urls of the form 'file://./' (r1516806) - Client-side bugfixes: * upgrade: fix an assertion when used with pre-1.3 wcs (r1530849) * ra_local: fix error with repository in Windows drive root (r1518184) * fix crash on windows when piped command is interrupted (r1522892) * fix externals that point at redirected locations (issues #4428, #4429) * diff: fix incorrect calculation of changes in some cases (issue #4283) * diff: fix errors with added/deleted targets (issues #4153, #4421) - Server-side bugfixes: * mod_dav_svn: Prevent crashes with some 3rd party modules (r1537360 et al) * fix OOM on concurrent requests at threaded server start (r1527103 et al) * fsfs: limit commit time of files with deep change histories (r1536790) * mod_dav_svn: canonicalize paths properly (r1542071) - Other tool improvements and bugfixes: * mod_dontdothat: Fix the uri parser (r1542069 et al) Developer-visible changes: - Bindings: * javahl: canonicalize path for streamFileContent method (r1524869) Version 1.7.13 (29 Aug 2013, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.13 User-visible changes: - General * merge: fix bogus mergeinfo with conflicting file merges (issue #4306) * diff: fix duplicated path component in '--summarize' output (issue #4408) * ra_serf: ignore case when checking certificate common names (r1514763) - Server-side bugfixes: * svnserve: fix creation of pid files (r1516556) * mod_dav_svn: better status codes for commit failures (r1490684) * mod_dav_svn: do not map requests to filesystem (r1512432 et al) Developer-visible changes: - General: * support linking against gssapi on Solaris 10 (r1515068) * don't use uninitialized variable to produce an error code (r1482282) - Bindings: * swig-pl: fix SVN::Client not honoring config file settings (r150744) * swig-pl & swig-py: disable unusable svn_fs_set_warning_func (r1515119) Version 1.7.12 (Not released, see changes for 1.7.13.) Version 1.7.11 (23 Jul 2013, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.11 User-visible changes: - General * translation updates for Simplified Chinese - Server-side bugfixes: * mod_dav_svn: fix incorrect path canonicalization (r1503528) See CVE-2013-4131, and descriptive advisory at http://subversion.apache.org/security/CVE-2013-4131-advisory.txt - Other tool improvements and bugfixes: * fix argument processing in contrib hook scripts (r1485350) See CVE-2013-2088, and descriptive advisory at http://subversion.apache.org/security/CVE-2013-2088-advisory.txt Developer-visible changes: - Bindings: * javahl: fix bug in error constructing code (r1405922) Version 1.7.10 (30 May 2013, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.10 User-visible changes: - Client-side bugfixes: * fix 'svn revert' "no such table: revert_list" spurious error (issue #4168) * fix 'svn diff' doesn't show some locally added files (issue #3797) * fix changelist filtering when --changelist values aren't UTF8 (r1475724) * fix 'svn diff --git' shows wrong copyfrom (issue #4294) * fix 'svn diff -x-w' shows wrong changes (issues #4133 and #4270, r1427278) * fix 'svn blame' sometimes shows every line as modified (issue #4034) * fix regression in 'svn status -u' output for externals (r1434750) * fix file permissions change on commit of file with keywords (issue #4331) * improve some fatal error messages (r1465975) * fix externals not removed when working copy is made shallow (issue #3741) - Server-side bugfixes: * fix FSFS repository corruption due to newline in filename (issue #4340) See CVE-2013-1968, and descriptive advisory at http://subversion.apache.org/security/CVE-2013-1968-advisory.txt * fix svnserve exiting when a client connection is aborted (r1482759) See CVE-2013-2112, and descriptive advisory at http://subversion.apache.org/security/CVE-2013-2112-advisory.txt * fix svnserve memory use after clear (issue #4365) * fix repository corruption on power/disk failure on Windows (r1483781) Developer-visible changes - General: * make get-deps.sh compatible with Solaris /bin/sh (r1451678) * fix infinite recursion bug in get-deps.sh (r1421541, r1424977) * fix uninitialised output parameter of svn_fs_commit_txn() (r1461743) - Bindings: * fix JavaHL thread-safety bug (r1476359) Version 1.7.9 (04 Apr 2013, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.9 User-visible changes - Client-side bugfixes: * improved error messages about svn:date and svn:author props. (r1440620) * fix local_relpath assertion (issue #4257) * fix memory leak in `svn log` over svn:// (r1458341) * fix incorrect authz failure when using neon http library (issue #4332) * fix segfault when using kwallet (r1421103) - Server-side bugfixes: See CVE-2013-1845, CVE-2013-1846, CVE-2013-1847, CVE-2013-1849, and CVE-2013-1884, and descriptive advisories at http://subversion.apache.org/security/ * svnserve will log the replayed rev not the low-water rev. (r1461278) * mod_dav_svn will omit some property values for activity urls (r1453780) * fix an assertion in mod_dav_svn when acting as a proxy on / (issue #4272) * improve memory usage when committing properties in mod_dav_svn (r1443929) * fix svnrdump to load dump files with non-LF line endings (issue #4263) * fix assertion when rep-cache is inaccessible (r1422100) * improved logic in mod_dav_svn's implementation of lock. (r1455352) * avoid executing unnecessary code in log with limit (r1459599) Developer-visible changes: - General: * fix an assertion in dav_svn_get_repos_path() on Windows (r1425368) * fix get-deps.sh to correctly download zlib (r13520131) * doxygen docs will now ignore prefixes when producing the index (r1429201) * fix get-deps.sh on freebsd (r1423646) - Bindings: * javahl status api now respects the ignoreExternals boolean (r1435361) Version 1.7.8 (17 Dec 2012, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.8 User-visible changes - Client- and server-side bugfixes: * Fix typos in pt_BR, es and zh_TW translations (r1402417, r1402421) - Client-side bugfixes: * fix crash with --username option on Windows (r1396285) * add missing attributes to "svn log -v --xml" output (r1398100) * fix svn patch ignoring hunks after no trailing newline (r1399174) * fix hang with ra_serf during error processing (r1403583) * ignore file externals with mergeinfo when merging (r1401915) * fix "svnmucc cp" segfault with a missing last argument (issue #4079) * fix conflict handling on symlinks (issue #4091) - Server-side bugfixes: * properly detect threading availability (r1398325) * fix "svnadmin load --bypass-prop-validation" (r1237779) * fix parsing of [groupsfoo] sections in authz file (issue #3531) * add Vary: header to GET responses to improve cacheability (r1390653) * fix fs_fs to cleanup after failed rep transmission (r1403964, et al) * fix mod_dav_svn to complain about revisions > HEAD (r1403588) Developer-visible changes: - General: * fix incorrect status returned by 1.6 API (r1403258) * fix compilation with g++ 4.7 (r1345740) * fix svn_uri_get_file_url_from_dirent on Windows (r1409146) Version 1.7.7 (09 Oct 2012, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.7 User-visible changes - Client- and server-side bugfixes: * fix memory read bug (r137614) * update Chinese translation - Client-side bugfixes: * fix issues with applying Git patch files (r1374800, et al) * fix status does not descend into dir externals after upgrade (issue #4016) * fix file externals don't update with old mod_dav_svn (issue #4224) * fix external diff tool duplicates Index: lines with 'svn diff' (r1380697) * fix GNOME keyring library fails with very old glib (r1378847) * fix unknown password stores in config file cause error (r1375052) * fix assertions in ra_serf running against server root (r1365519, et al) * fix ra_serf checkout/export aborts early on Windows (issue #4174) - Server-side bugfixes: * fix an assert with SVNAutoVersioning in mod_dav_svn (issue #4231) * fix unbounded memory use with SVNPathAuthz short_circuit (r1387943) * fix svndumpfilter exclude --targets requires leading slash (issue #4234) * fix connection ttl for memcache should be 50 seconds (r1391641) * stabilize order of paths in dumpfiles with APR 1.4.6 (r1344864, et al) Developer-visible changes: - General: * print "All tests successful" at the end of 'make check' (r1375089) * fix sandbox violation in a test (r1371282) * fix tests fail when running within a format 30 WC (r1391188, et al) * fix return value of svn_client_update4() incorrect (r1380295) * fix make check summary missing test failures (r1390965) * fix build does not fail when apache httpd is not available (r1374198) - Bindings: * fix swig-pl build fails with swig 2.0.7 and newer. (r1389658) * fix swig-py runtime problems with swig 2.0.5 and newer (r1351117) Version 1.7.6 (15 Aug 2012, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.6 User-visible changes: - Client- and server-side bugfixes: - Client-side bugfixes: * Fix "svn status -u --depth empty FILE" (r1348822, r1349215) * Fix example output of 'svn help status' (issue #3962) * propset of svn:eol-style might not notice related text changes (r1353572) * sort output of 'svn propget -R' (r1355699) * sort output of 'svn proplist' (r1355698) * sort output of 'svn status' (r1341012) * avoid a filestat per working copy find operation (r1340556) * optimize 'svn upgrade' performance on large working copies (r1342984) * allow 'file:///C:\repos' style arguments on Windows, like 1.6 (r1346765) * fix ra_serf against Subversion 1.2 servers (r1349367) * fix 'svn upgrade' on working copies with certain tree conflicts (r1345482) * avoid workqueue references to system temp dir (r1367854) * allow non-existent canonical paths (r1367853) * fix 'svn revert --depth files' to operate on files (r1365554) * fix ra_serf XML namespace handling against malicious server (r1337441) * fix relocate with server-relative externals (issue 4216) * change two asserts into errors for TortoiseSVN (r1368128, r1368065) * don't attempt to anchor an operation outside a wc root (r1361341) - Server-side bugfixes: * partial sync drops properties when converting to adds (issue #4184) * replaying a copy and delete of an unreadable child fails (issue #4121) * allow svnlook to operate on r0 (r1362508) * make FSFS revision files independent of APR hash order (r1367498) - Other tool improvements and bugfixes: * move mod_dontdothat to install-tools (r1307177) Developer-visible changes: - General: * fix running tests against httpd 2.4 (r1291594) * use constant struct initialisers for C89 compatibility (r1352068) - Bindings: * JavaHL: Don't assert on some invalid input (r1354626, r1354652) * JavaHL: Add missing new in 1.7 notifications (r1351772) Version 1.7.5 (17 May 2012, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.5 User-visible changes: - Client- and server-side bugfixes: * http: report deleted-revision upon delete during update (r1327474) - Client-side bugfixes: * avoid potential segfault when canonicalizing properties (r1296369) * improve memory and file-handle management with externals (issue #4130) * serf: convert assertions to "MERGE failed" errors (r1302417) * fix undefined behaviour during multi-segment reverse merges (issue #4144) * fix potential use of already freed memory during diff operation (r1311935) * improve performance of scan for the working copy root (r1306334) * cmdline: fix segfault during 'svn diff' argument processing (r1311702) * fix regression from 1.6 in update with --depth option (issue #4136) * propset: avoid undefined behaviour in error path (r1325361) * reset sqlite statements, partly for sqlite-3.7.11 compat (r1328846, et al) * fix assertion during 'svn diff -r BASE:HEAD ^/trunk' (issue #4161) * notify upon 'update' just removing locks on files (r1329876) * neon: fix potential use of freed memory during commits (r1329388) * 'status --xml' doesn't show repository deletes correctly (issue #4167) * fix assert on svn:externals with drive letter on Windows (issue #4073) * fix 'svn update --depth=empty' against 1.4 servers (issue #4046) * handle missing svn:date reported by svnserve gracefully (r1306111) * fix merges which first add a subtree and then delete it (issue #4166) * fix a regression with checkout of file externals (issue #4087) * don't add spurious mergeinfo to subtrees in edge-case merge (issue #4169) * improve performance of status on large working copies (issue #4178) - Server-side bugfixes: * fix non-fatal FSFS corruption bug with concurrent commits (issue #4129) * mod_dav_svn: raise an error on MERGE of non-existent resource (r1298343) * mod_dav_svn: support compiling/running under httpd-2.4 (r1232267) * mod_dav_svn: forbid BDB repositories under httpd's event MPM (issue #4157) - Other tool improvements and bugfixes: * emacs support: updates to dsvn.el and vc-svn.el (r1200896, et al) Developer-visible changes: - General: * windows example distribution scripts: include svnrdump (r1295007) * fix running the test suite with jsvn (r1335555) - Bindings: * swig-py tests: avoid FAILs on APR hash order (r1296137, r1292248) * swig-rb tests: avoid FAILs on APR hash order (r1310535, r1310594) * swig-pl: Improved perl detection in gen-make.py (r1291797, r1291810) Version 1.7.4 (08 Mar 2012, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.4 User-visible changes: * fix 'svn log --diff' for moved paths (r1210147, et al) * fix ra_serf problem with reading directory entries via HTTPv2 (r1238121) * prepend "sqlite:" to error messages from SQLite (r1245738, -817) * fix randomly missing "Merged via" notifications in 'svn log -g' (r1293229) * fix spurious conflict when merging deleted symbolic link (issue #4052) * fix URL-to-WC copy of externals on Windows (issue #4123) * improve an FSFS sanity-check error message (r1294470) * fix regressions with symlinks pointing at externals (issue #4102) * fix 'svn log --diff' output ordering issue on Windows (r1295671) Developer-visible changes: * don't build mod_dontdothat if not building with httpd (r1243976) * fix the testsuite to avoid FAILs on APR hash order (r1230714, et al) Version 1.7.3 (14 Feb 2012, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.3 General: * ship mod_dontdothat with the standard release User-visible changes: * fix segfault on 'svn rm $ROOT_URL' (issue #4074) * replace a couple of assertions in favor of errors (r1207858, -949) * fix a server assert after being upgraded (r1210195) * fix segfault on 'svn mkdir svn://localhost' (r1211483) * make 'svnadmin recover' prune the rep cache (r1213331, et al) * make svnmucc use values from --config-dir option * update and clarify the merge help text (r1154121, et al) * replace wc assertion with informative error (r1222521, -693) * copy permissions correctly for FSFS dirs (r1229252) * improve 'svn log --with-all-revprops' over ra-dav (issue #4082) * fix segfault when remapping a file external (issue #4093) * fix segfault caused by obstructing unversioned dir (r1229677) * fix regression on first update of external dir with '-r' (issue #4053) * fix various EOL-handling problems in 'svn patch' (issues #3814, #3991) * fix segfault in 'svn revert' (r1229303) * improve correctness of 'svn patch --dry-run' (r1231944, -5) * enforce revisions given in 'svn:externals' (issue #4053) * fix potential corruption on 32-bit FSFS with large files (r1230212) * make 'svn status --xml' show new files (issue #4097) * fix 'svn mergeinfo' correctness (issue #4050) * return the correct status for non-present nodes (r1232202, -07, -21, -22) * improve SASL error messages (r1236343, et al) * improve server cert error code for ra_serf (r1232413) * fix SVNParentPath listings for parent path symlinks (r1221767, -80) * fix mod_dav_svn's handling of POST errors (issue #4086) * log some mod_dav_svn errors, rather than ignoring them (r1237720, -9596) * relax requirements for canonicalization in mod_dav_svn (r1236173) * fix a rare source of FSFS corruption (r1240752) * allow committing the result of some copy operations (issue #4059) * prevent one-byte buffer overflow in base64 decoding (r1242337) Developer-visible changes: * JavaHL: Add missing notify action, fixing an exception (r1221793) * fix swig-py memory leak (r1235264, -296, -302, -736) * fix spurious test suite failure (r1220742, -50) * allow running tests on UNC shares (r1225491) * bindings: see platform-specific password providers (r1242660, -1) * skip 'svnrdump dump' tests over ra_serf (r1242537) * convert a few ra_serf assertions to errors (r1242607) Version 1.7.2 (02 Dec 2011, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.2 User-visible changes: * fix working copy corruption after interrupted update/switch (issue #4040) * avoid segfaults against pre-1.5 servers (r1186928) * improve configure error message if apr-util uses old or no bdb (r1186784) * make 'svn patch' ignore '/dev/null' targets for compat with git (r1197998) * fix 'svn patch' segfault on patch that skips and deletes files (r1199950) * omit "Committed revision N." output from 'svn commit --quiet' (r1200837) * fix authz denial when svnserve root is a repository (issue #4060) * fix uninitialized memory read in client diff code (r1201002) * avoid potential segfault during merges (r1202807) * fix an assertion failure when a symlink is updated (r1186944, -81, -83) * make working copy operations fail if nodes have no base checksum (r1202630) * fix nested s when using v2 protocol (r1203546, -651, -653) * make mod_dav_svn ignore non-Subversion POST requests (r1187695) * avoid reading freed memory (r1204478) * recognize empty (only byte order mark) UTF-8 files as text (issue #4064) * fix 1.7 client regression when operating against a 1.0.x server (r1199876) * remove empty parent dirs of removed externals on update (issue #4044) * make 'svn diff -c N' work for files added in rN (issue #2873) * plug a memory leak in the bdb backend (r1205726) * fix 'svn import' with native eol-style and inconsistent EOLs (r1205193) * fix reading beyond the end of a string in bdb backend (r1205839, -48) * don't assert when committing an incomplete directory (issue #4042) Developer-visible changes: * JavaHL: allow 'status -u' to function properly (r1189190, -395) * don't put '\r' characters in our generate sql headers (r1189580) * properly define WIN64 on Windows x64 builds (r1188609) * better adherence to C89 in enum definitions (r1189665) * bump copyright year in Windows DLLs (r1189261) * log a better error when opening rep-cache.db fails (r1204610, -73) Version 1.7.1 (24 Oct 2011, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.1 User-visible changes: * improve performance of 'svn info' (r1164386) * improve hash table sorting performance (r1167659) * update bash completion for 1.7 (r1177001) * make 'svn ls' continue to work with 1.0-1.3 repos (r1154278, -379, -82) * improve handling of error messages generated by Cyrus SASL (r1179767) * update INSTALL documentation file (r1182115, and others) * error instead of assert when upgrading corrupt WCs (r1182904, -9) * improve memory usage in merge (r1176915) * fix an invalid assertion in merge (r1149103, -35) * improve performance of 'merge --reintegrate' in edge-case (r1167681) * fixed: 'svn mergeinfo' shows wrong revisions for added nodes (issue #3791) * make 'svn add --parents D/file' work if D is deleted (r1185222) * improve performance of trivial text file merges (issue #4009) * add FSFS sanity check to prevent corruption seen in the wild (r1178280) * improve correctness/performance of recursive info and proplist (r1164426) * fix memory leak in 'merge --reintegrate' (r1180154) * fix handling of directories after 'update --set-depth=empty' (r1185911) * fix 'checksum != NULL' assertions in some upgraded WCs (r1177732) * fix upgrading of WCs containing authz-restricted dirs (r1185738) * make the server tolerate svn:mergeinfo with malformed paths (r1182771) * fix some erroneous warning messages from the svn client (r1185746) * fix WC upgrade with replaced nodes in edge-case (issue #4033) Developer-visible changes: * fix object lifetime issues in the JavaHL bindings (r1175888) * fix org.tigris JavaHL wrappers to avoid double finalize (r1179680) * don't write to const memory (r1177492) * improve zlib configuration (r1174761, -98, -806) * improve SQLite runtime init for OS X 10.7 compat (r1181666) * improve test suite correctness (r1174111) * fix potential segfault seen by TSVN (r1183263) * fix backward compat crashes in JavaHL (r1183054, -347) * fill in repos_* fields of svn_wc_status3_t for repos-only nodes (r1181609) * disable the SQLite shared process cache (r1185242, r1185280) Version 1.7.0 (11 Oct 2011, from /branches/1.7.x) http://svn.apache.org/repos/asf/subversion/tags/1.7.0 See the 1.7 release notes for a more verbose overview of the changes since the 1.6 release: http://subversion.apache.org/docs/release-notes/1.7.html User-visible changes: - General: * No longer including contrib/ in the release tarballs (r877798) - Major new features: * Less verbose HTTP-based repository access protocol (issue #1161, #3371) * Rewritten working copy metadata storage (issue #3357) * New 'svn patch' subcommand (issue #511) * Rewritten FSFS in-memory caching for better performance * New remote repository dump/load client 'svnrdump' - Minor new features and improvements: * Better handling of HTTP redirects (issue #2779) * Improved and much more consistent path handling (issue #2028, and others) * 'svnadmin load' rewrites changed revnums in mergeinfo (issue #3020) * Error message and help text improvements * 'svn log' can print unidiff of changes made in a revision (issue #2909) * 'svn diff' can print git-style unidiff annotations * svnsync can now steal locks on a mirror repository (issue #3309) * display the wc root in the output of 'svn info' (issue #3355) * add 'svnlook filesize' (issue #3509) * add 'svn upgrade' command for upgrading working copies (r877675) * add 'svnsync --disable-locking' (issue #3545) * subtree merges don't unconditionally stop reintegrate merge (issue #3577) * 'svn relocate' replaces 'svn switch --relocate' (r1026475) * 'svn relocate' updates relative externals (issue #3597) * allow svnsync users to specify the source repo (issue #3637) * remove redundant mergeinfo notifications for 2-URL merges (issue #3671) * 'svn export' into the current directory (issue #3727) * added '--parents' to 'svn update' (issue #3748) * allow configurable connection timeout in ra_serf (r876161) * add digest authentication in ra_serf (r876405) * add extensive caching support to servers (r1067669, -75, -72302) * add configurable caching to svnadmin (r1078357) * make server-side network data compression rate configurable (r1072288) * added support for auto-detecting mime-types with libmagic (r1131120) * 'svn rm url1 url2 url3' uses single txn per repo (issue #1199) * don't leave unversioned files when reverting copies (issue #3101) - Client-side bugfixes: * 'svn cp A B; svn mv B C' is equivalent to 'svn cp A C' (issue #756) * revert fetches missing directories from the server (issue #1040) * allow subdirs of moved dirs to be moved and committed (issue #1259) * improved performance of 'svn mv' with whole directories (issue #1284) * 'svn rm B; svn cp A B' now works (issue #1516) * 'svn diff URL1 URL2' now reverse of 'svn diff URL2 URL1' (issue #2333) * error if relocating to an unused URL (issue #2531) * 'svn blame -rWORKING' is now supported (issue #2544) * improve correctness of commit on a relocated wc over ra_dav (issue #2578) * add early error to 'svn add --auto-props' with mixed eols (issue #2713) * allow 'svn diff' to accept symlinks as targets (issue #2716) * don't lose props for replaced items (issue #2743) * handle mergeinfo for subtrees removed outside of svn (issue #2915) * add ability to force 'svn diff' to use internal diff (issue #3701) * correctly recover a schedule-for-delete rm'd outside of svn (issue #3106) * don't create self-referential mergeinfo from own history (issue #3157) * improve 'svn log -g' handling of bad mergeinfo source paths (issue #3270) * better conflict stat printing (issue #3342, issue #3594) * 'svn update' restores excluded files (issue #3544) * allow reintegrate merges into WCs with missing subtrees (issue #3603) * more gracefully error when given back cmdline input (issue #3620) * update exit codes to reflect command failure (issue #3622) * don't double-update file externals (issue #3665) * improve output of multi-target update (issue #3693, #3746) * make 'svn up --set-depth=exclude FILE' work (issue #3736) * return correct error code for 'svn cat' on nonexisting file (issue #3713) * support svn:externals on locally added directories (issue #2267) * use installed GSSAPI lib for Kerberos in ra_serf (r877381) * allow 'svn info' to run on an excluded item (issue #3792) * improve 'log -g' output with reverse merges (issue #3176) * don't print error message if stdout is a pipe and is closed (issue #3014) * removed special copy-handling during updates added in 1.5.0 (issue #3711) * fix warning about copies committed with non-infinity depth (issue #3752) * can now commit multiple wc paths lacking a common parent (issue #2381) * 'svn export --depth $WC' now works correctly (issue #3800) * added support for case-only renames on Windows (issue #3702) * 'svn delete --force' removes tree conflicts (issue #3805) * don't throw an error when skipping tree conflicts in update (issue #3329) * don't break commits of wc->wc copies with file externals (issue #3589) * allow 'svn info' to work on symlinks to working copies (issue #2305) * allow 'svn st --show-updates' to work across symlinks (issue #3117) * 'svn revert' shouldn't loop on symlinks (issue #3972) * fixed: wc-to-wc copy of a switch source (issue #1802) * fixed: 'svn st' reports symlinks as obstructed items (issue #2284) * fixed: 'cd e:\; svn up e:\' fails (issue #2556) * fixed: svn aborts on committing from root dir on windows (issue #3346) * fixed: removing a dir scheduled for deletion corrupts wc (issue #2741) * fixed: 'svn cleanup' fails on obstructed paths (issue #2867) * fixed: case-only renames resulting from merges don't work (issue #3115) * fixed: 'svn mergeinfo' ignores peg rev for wc target (issue #3180) * fixed: unable to merge to wc of deleted branch (issue #3221) * fixed: move via merge leaves behind versioned move source (issue #3324) * fixed: ra_serf does not honor http-proxy-exceptions (issue #3428) * fixed: 'svn mv A B; svn mv B A' loses history (issue #3429) * fixed: ra_serf doesn't support http-auth-types config (issue #3435) * fixed: merge sets incorrect mergeinfo on skipped paths (issue #3440) * fixed: ra_serf inconsistent handling of cached authn creds (issue #3450) * fixed: ra_serf segfault with using NTLM or Negotiate auth (r876910) * fixed: excluded subtrees are not detected by svnversion (issue #3461) * fixed: submitting a changelist while obstructed item exists (issue #3484) * fixed: crash when changing an external's URL (issue #3530) * fixed: target moved after branching breaks reintegrate (issue #3640) * fixed: potential race condition in svnsync (issue #3546) * fixed: spurious merge conflicts with pre-1.7 mod_dav_svn (issue #3657) * fixed: repeat merge is not a no-op (issue #3564) * fixed: inheritance results in self-referential mergeinfo (issue #3668) * fixed: inheritance results in nonexistent mergeinfo sources (issue #3669) * fixed: memory leaks in ra_serf (issue #3684) * fixed: corruption of 'svn pg' output for large properties (issue #3721) * fixed: 'svnsync copy-revprops' doesn't sync revprop dels (issue #3728) * fixed: executable flag not correctly set on merge (issue #3686) * fixed: 'svn rm' fails on multiple URLs with encoded spaces (issue #3839) * fixed: children of replaced dirs cannot be deleted (issue #3468) * fixed: executable flag of binary file lost during merge (issue #3686) * fixed: merging a symlink-turned-regular-file breaks the wc (issue #2530) * fixed: can't remove file externals (issue #3351) * fixed: 'svn unlock' attempts to unlock wrong token on DAV (issue #3794) * fixed: forced DAV 'svn unlock' results in 403, not warning (issue #3801) * fixed: rm -> ci -> cp = missing directory (issue #2763) * fixed: 'svn info' returns parent info on missing dirs (issue #3178) * fixed: spurious prop conflict with 'merge --reintegrate' (issue #3919) * fixed: 'svn --version' fails with non-existent $HOME (issue #3947) * fixed: unforced export silently overwrites existing file (issue #3799) * fixed: reverse merge which adds subtree mergeinfo fails (issue #3978) * fixed: 'svn up -r{R>HEAD}' hangs client over ra_svn (issue #3963) * fixed: 'svn up' updates file externals in target siblings (issue #3819) * many other minor bugfixes, optimizations, plugs of memory leaks, etc - Server-side bugfixes: * mod_dav_svn is less strict about auto-merging for commits (issue #1704) * allow SVNListParentPath to be used with authz (issue #2753) * allow nav to repo list from repo top with SVNListParentPath (issue #3159) * allow repositories in the root of a drive on windows (issue #3535) * don't destroy mergeinfo with 'svnadmin load --parent-dir' (issue #3547) * fixed: 'svnadmin hotcopy' does not duplicate symlinks (issue #2591) * fixed: post-revprop-change errors cancel commit (issue #2990) * fixed: mod_dav_svn runs pre-revprop-change hook twice (issue #3085) * fixed: mod_dav_svn doesn't return stderr to user on failure (issue #3112) * fixed: hotcopy may corrupt target rep-cache.db (issue #3596) * fixed: mod_dav_svn can cause spurious merge conflicts (issue #3657) * fixed: DAV can overwrite directories during copy (issue #3314) * fixed: 'svn log' returns log of unrelated path (issue #3931) * match paths against authz rules in case sensitive way (issue #3781) * svnserve can now force usernames to upper/lower case (issue #3726) * reduce duplicate log messages in 'log -g' (issue #3650) * svnserve: don't crash on shutdown with SASL in inetd mode (issue #3664) * disallow arbitrary HTTP headers from committers (issue #2872) * limit FSFS memory consumption (issue #3478, #3593) * many other minor bugfixes too numerous to list here - Other tool improvements and bugfixes: * svnsync now takes the '--config-option' argument (issue #2027) * svnsync can translate non-UTF-8 properties to UTF-8 (issue #3817) * svnadmin now errors on non-UTF-8 revision properties (issue #3755) * svnadmin verify now errors on non-UTF-8 paths (r1129641) Developer-visible changes: - General: * improved output of 'make check' * introduce scratch_pool/result_pool parameter paradigm * improved error tracing (r877208, -736) * improve building with sqlite on Windows (issue #3364) * allow mod_dav_svn to compile against Apache 2.4 (issue #3548) * support running tests against older servers (r876016) * notification of unversioned obstructions (r877344) * removed virtually all abort() calls (issue #2780) * don't include client-specific suggestions in error msgs (issue #3887) - API changes: * don't crash svn_client_copy if ctx->log_msg_func is NULL (issue #3234) * much improved ra_serf error handling (issue #3375) * provide clients with old and new revision on update (r876515) * close both files, even on error in svn_stream_copy3() (r887262) * added 'work-in-progress' XFail test status (r876549) * notifications sent when mergeinfo changes (r877588) * add information on text and property mods in log APIs (r877688) * fixed: svn_ra_local__get_file() leaks file descriptors (issue #3290) * svn_ra_neon__get_dir() returns correct dir set for URLs (issue #3093) * swig-py: always set ChangedPath.path (also for deletes) (issue #2630) * improve conflict resolver API for a specific direction (issue #3049) - Bindings: * New JavaHL package: org.apache.subversion * Deprecate the SVNClientSynchronized class in JavaHL (issue #2755) * fixed setting binary properties in JavaHL (issue #3770) * fix type mapping of svn_txdelta_window_t in python bindings (issue #3688) Version 1.6.23 (30 May 2013, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.23 User-visible changes - Server-side bugfixes: * fix FSFS repository corruption due to newline in filename (issue #4340) * fix svnserve exiting when a client connection is aborted (r1482759) See CVE-2013-2112, and descriptive advisory at http://subversion.apache.org/security/CVE-2013-2112-advisory.txt - Other tool improvements and bugfixes: * fix argument processing in contrib hook scripts (r1485350) Version 1.6.22 (Not released, see changes for 1.6.23.) Version 1.6.21 (04 Apr 2013, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.21 User-visible changes - Server-side bugfixes: * mod_dav_svn will omit some property values for activity urls (r1453780) * improve memory usage when committing properties in mod_dav_svn (r1443929) * fix mod_dav_svn runs pre-revprop-change twice (issue #3085) * fixed: post-revprop-change errors cancel commit (issue #2990) * improved logic in mod_dav_svn's implementation of lock. (r1455352) Developer-visible changes: - General: * fix a compatibility issue with g++ 4.7 (r1345740) Version 1.6.20 (04 Jan 2013, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.20 User-visible changes - Client- and server-side bugfixes: * Fix typos in pt_BR, es and zh_TW translations (r1402417) - Server-side bugfixes: * add Vary: header to GET responses to improve cacheability (r1390653) * fix fs_fs to cleanup after failed rep transmission (r1403964, et al) * fix an assert with SVNAutoVersioning in mod_dav_svn (issue #4231) Version 1.6.19 (10 Sep 2012, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.19 - Client-side bugfixes: * handle missing svn:date reported by svnserve gracefully (r1306111) - Server-side bugfixes: * fix possible server hang if a hook script fails to start (r1330410) * fix write-through proxy commit regression introduced in 1.6.17 (r1088602) * partial sync drops properties when converting to adds (issue #4184) - Developer-visible changes: * fix the testsuite to avoid FAILs on APR hash order (r1230714, et al) Version 1.6.18 (29 Mar 2012, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.18 User-visible changes: * reject invalid svn:mergeinfo at commit time over DAV (issue #3953) * fix reintegrate merge regression introduced in 1.6.13 (issue #3957) * make the stderr output of the post-commit hook XML-safe (r893478) * fix a rare source of FSFS corruption (r1240752) * plug a memory leak in the bdb backend (r1205726) * server-side performance fix for "log -g" (r1152282) * fix description of svndumpfilter's --targets option (r1151911) * fix datastream corruption during resumed transfer in ra_serf (r1154733) * fix a crash in ra_svn SASL authentication (r1166555, -678) * fix potential corruption on 32-bit FSFS with large files (r1230212) * make website links point to subversion.apache.org (r896893, -901, r915036) * fix non-fatal FSFS corruption bug with concurrent commits (issue #4129) Developer-visible changes: * fix sqlite distfile retrieval in get-deps.sh (r1134734) * fix swig-py memory leak (r1235264, -296, -302, -736) * allow passing --with-jdk to gen-make.py on Windows (r966167) Version 1.6.17 (01 Jun 2011, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.17 User-visible changes: * improve checkout speed on Windows (issue #3719) * make 'blame -g' more efficient with large mergeinfo (r1094692) * avoid some invalid handle exceptions on Windows (r1095654) * preserve log message with a non-zero editor exit (r1072084) * fix FSFS cache performance on 64-bit platforms (r1103665) * make svn cleanup tolerate obstructed directories (r1091881) * fix deadlock in multithreaded servers serving FSFS repositories (r1104093) * detect very occasional corruption and abort commit (issue #3845) * fixed: file externals cause non-inheritable mergeinfo (issue #3843) * fixed: file externals cause mixed-revision working copies (issue #3816) * fix crash in mod_dav_svn with GETs of baselined resources (r1104126) See CVE-2011-1752, and descriptive advisory at http://subversion.apache.org/security/CVE-2011-1752-advisory.txt * fixed: write-through proxy could directly commit to slave (r917523) * detect a particular corruption condition in FSFS (r1100213) * improve error message when clients refer to unknown revisions (r939000) * bugfixes and optimizations to the DAV mirroring code (r878607) * fixed: locked and deleted file causes tree conflict (issue #3525) * fixed: update touches locked file with svn:keywords property (issue #3471) * fix svnsync handling of directory copyfrom (issue #3641) * fix 'log -g' excessive duplicate output (issue #3650) * fix svnsync copyfrom handling bug with BDB (r1036429) * server-side validation of svn:mergeinfo syntax during commit (issue #3895) * fix remotely triggerable mod_dav_svn DoS (r1130303) See CVE-2011-1783, and descriptive advisory at http://subversion.apache.org/security/CVE-2011-1783-advisory.txt * fix potential leak of authz-protected file contents (r1130303) See CVE-2011-1921, and descriptive advisory at http://subversion.apache.org/security/CVE-2011-1921-advisory.txt Developer-visible changes: * fix reporting FS-level post-commit processing errors (r1104098) * fix JVM recognition on OS X Snow Leopard (10.6) (r1028084) * allow building on Windows with recent Expat (r1074572) Version 1.6.16 (02 Mar 2011, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.16 User-visible changes: * more improvement to the 'blame -g' memory leak from 1.6.15 (r1041438) * avoid a crash in mod_dav_svn when using locks (r1071239, -307) See CVE-2011-0715, and descriptive advisory at http://subversion.apache.org/security/CVE-2011-0715-advisory.txt * avoid unnecessary globbing for performance (r1068988) * don't add tree conflicts when one already exists (issue #3486) * fix potential crash when requesting mergeinfo (r902467) * don't attempt to resolve prop conflicts in 'merge --dry-run' (r880146) * more fixes for issue #3270. Developer-visible changes: * ensure report_info_t is properly initialized by ra_serf (r1058722) * locate errors properly on a malfunction (r1053208) * fix output param timing of svn_fs_commit_txn() on fsfs (r1051751) * for svn_fs_commit_txn(), set invalid rev on failed commit (r1051632, -8) * fix sporadic Ruby bindings test failures (r1038792) * fix JavaHL JVM object leak when dumping large revisions (r947006) * use Perl to resolve symlinks when building swig-pl (r1039040) * allow Perl bindings to build within a symlinked working copy (r1036534) * don't overwrite the LD_LIBRARY_PATH during make check-swig-pl (r946355) * improve unit tests for some fs functions (r1051744, -5, -3185, -241) Version 1.6.15 (26 Nov 2010, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.15 User-visible changes: * hide unreadable dirs in mod_dav_svn's GET response (r996884) * make 'svnmucc propsetf' actually work (r1005446) * limit memory fragmentation in svnserve (r1022675) * fix 'svn export' regression from 1.6.13 (r1032970) * fix 'svn export' mistakenly uri-encodes paths (issue #3745) * fix server-side memory leaks triggered by 'blame -g' (r1032808) This has been tracked as CVE-2010-4644 * prevent crash in mod_dav_svn when using SVNParentPath (r1033166) This has been tracked as CVE-2010-4539 * allow 'log -g' to continue in the face of invalid mergeinfo (issue #3270) * filter unreadable paths for 'svn ls' and 'svn co' (r997026, -070, -474) * fix abort in 'svn blame -g' (issue #3666) * fix file handle leak in ruby bindings (issue #3512) * remove check for 1.7-style working copies (issue #3729) Developer-visible changes: * improve some swig parameter mapping (r984565, r1035745) * improve test accuracy over dav (r991534, r877814) * create fails.log for test runs (r964349) * improve detection of 'svnversion' when building (r877219, et al) * don't violate API layering in dumpstream logic (issue #3733) * don't report working copy installs as switched (r1033921) Version 1.6.14 (Not released, see changes for 1.6.15.) Version 1.6.13 (01 Oct 2010, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.13 User-visible changes: * don't drop properties during foreign-repo merges (issue #3623) * improve auto-props failure error message (r961970) * improve error message for 403 status with ra_neon (r876615) * don't allow 'merge --reintegrate' for 2-url merges (r959004) * improve handling of missing fsfs.conf during hotcopy (r980811, -1449) * escape unsafe characters in a URL during export (issue #3683) * don't leak stale locks in FSFS (r959760) * better detect broken working copies during update over ra_neon (r979045) * fsfs: make rev files read-only (r981921) * properly canonicalize a URL (r984928, -31) * fix wc corruption with 'commit --depth=empty' (issue #3700) * permissions fixes when doing reintegrate merges (related to issue #3242) * fix mergeinfo miscalculation during 2-url merges (issue #3648) * fix error transmission problems in svnserve (r997457, -66) * fixed: record-only merges create self-referential mergeinfo (issue #3646) * fixed: 'SVNPathAuthz short_circuit' unsolicited read access (issue #3695) See CVE-2010-3315, and descriptive advisory at http://subversion.apache.org/security/CVE-2010-3315-advisory.txt * make 'svnmucc propset' handle existing and non-existing URLs (r1000607) * add new 'propsetf' subcommand to svnmucc (r1000612) * warn about copied dirs during 'svn ci' with limited depth (r1002094) Developer-visible changes: * make ruby bindings compatible with Ruby 1.9 (r957507) * use the repos verify API in JavaHL (r948916) * teach ra_serf to parse md5 checksums with update editors (r979429) * let ra_serf work with current serf releases (r879757, r880320, r943796) Version 1.6.12 (21 Jun 2010, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.12 User-visible changes: * further improvements for issue #3242 * allow deletion of uris which need character escaping (issue #3636) * fix errors with 'svn mkdir --parents' (issue #3649) * update address to which crash reports are sent (r901304) * check for server certificate revocation on Windows (r898048) * disable custom file mutexes on Windows (r879902, -16) * fix handling of peg revision'd copy targets (issue #3651) * more improvements to 'svn merge --reintegrate' (r935631) * allow copying of broken symlinks (issue #3303) * improve rep-sharing performance on high-concurrency repos (issue #3506) * fixed: added subtrees with mergeinfo break reintegrate (issue #3654) * fixed: assertion triggered by tree-conflicted externals (issue #3469) Developer-visible changes: * give windows devs more flexibility with sqlite versions (r944635) * allow the pack tests to work with low file descriptor limits (r937610) * improve exception handling on Windows Vista and 7 (r878447, -910, -916) Version 1.6.11 (19 Apr 2010, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.11 User-visible changes: * fix for repositories mounted via NFS (issue #3501) * enable TCP keep-alives in svnserve (r880552) * tighten restrictions on revprops for 'svnadmin verify' (r904594) * make ra_serf give better out-of-date information (issue #3561) * improve error message upon connection failure with svn+ssh:// (r922516) * allow 'svn log' on an uncommitted copy/move destination (r901752) * make 'svnadmin hotcopy' copy the fsfs config file (r905303) * mergeinfo improvements with non-inheritable mergeinfo (issue #3573) * make mergeinfo queries not require access to the repo root (issue #3242) * update URLs to refer the new apache.org repository (r904301, -94) * update relative externals during a switch (issue #3390) * fix 'merge --reintegrate' with self-referential mergeinfo (r892050, -85) * improve wc-ng working copy detection (r929382) * improve handling of mergeinfo when using serf (r880461) * fixed: 'svnlook plist --revprop' with '-t TXN_NAME' (r917640, -8211) * fixed: file external from URL cannot overwrite existing item (issue #3552) * fixed: potential memory error in 'svn status' (r923674, -9) * fixed: merge records mergeinfo from natural history gaps (issue #3432) * fixed: theoretical possibility of DB corruption (r926151, -67) Developer-visible changes: * disable checks for wc-ng working copies when running the test suite * on Windows, don't ignore move operation error codes (r896915) * more precise reporting of errors occurring with sqlite init (r927323, -8) * ensure rangelist APIs are commutative (r923389, -91) Version 1.6.10 (Not released, see changes for 1.6.11.) Version 1.6.9 (25 Jan 2010, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.9 User-visible changes: * allow multiple external updates over ra_svn (issue #3487) * fix a segmentation fault when using FSFS (r881905) * support Berkeley DB 4.8 (r879688) * various autoprop improvements (r880274, -5) * improve usage of svn+ssh:// on Windows (issue #2580) * teach 1.6.x to recognize 1.7 working copies (1.6.x-future-proof branch) * update help text for 'svn update' and 'svn switch' (r886164, -97) * make 'svnadmin load --parent-dir' create valid mergeinfo (r888979, -9081) * tolerate relative merge source paths in mergeinfo (r889840) * teach mod_dav_svn to support the Label header (issue #3519) * fixed: svnsync leaves stale sync-locks on mirrors (r884842) * fix applicability of 'svn resolve --accept=theirs-conflict' (r880525, -6) * fixed: segfault in 'svn resolve' (r896522, -47) * fix commit failure against an out-of-date mirror (r900797) Developer-visible changes: * update ruby bindings test expectation (r880162) * don't allow rangelist and mergeinfo API to modify input args (r879093) Version 1.6.8 (Not released, see changes for 1.6.9.) Version 1.6.7 (Not released, see changes for 1.6.9.) [ Note: All revision numbers for versions prior to 1.6.7 reference the original repository on svn.collab.net. For more information see: http://svn.apache.org/repos/asf/subversion/README ] Version 1.6.6 (22 Oct 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.6 User-visible changes: * fix crash during 'svn update' (r39673) * respect Apache's ServerSignature directive (r40008, -21, -31) * don't add a file with mixed line endings, and then abort (issue #2713) * support Neon 0.29. * fix a crash in 'svn rm --force' (r37953) * handle tree conflicts involving replacements (issue #3486) * allow non-threadsafe sqlite if APR has no threads (r39301) * print newline before plaintext SSL cert / password prompts (r38982, r39302) * improve merge performance with implicit subtree mergeinfo (issue #3443) * fix "libsvn_ra_svn/marshal.c assertion failed (opt || cstr)" (issue #3485) * make file externals work for binary files (issue #3368) * perform MIME type matching case-insensitively (issue #3479) * do not treat non-existent revisions as HEAD in 'svn export' (issue #3400) * revert r36720's default MIME type change back to "text/plain" (issue #3508) * improve "tree conflict already exists" error message (r38872) * fix failure to commit replacement of a directory (issue #3281) * fix mod_dav_svn parent dir links to preserve peg revisions (issue #3425) Developer-visible changes: * fix 2 failing tests in ruby bindings (r38886) * do not require GNU grep for build (issue #3453) * use '$SED' instead of 'sed' in build scripts (issue #3458) * add svn.client.{log5,merge_peg3} to python bindings (r39635, -6, -7) * include the time of a test run in tests.log (r39887) Version 1.6.5 (22 Aug 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.5 User-visible changes: * fix mod_dav_svn directory view links to preserve peg revisions (r38021) * do not error on Windows when ALLUSERPROFILE dir nonexistent (r38053, -5, -7) * properly escape lock comments over ra_neon (r38101, -2) * allow syncing copies of '/' over ra_neon and ra_serf (issue #3438) * make 'svnlook diff' show empty added or deleted files (r38458) * fix building with Apache 2.4 (r36720) * fix possible data loss on ext4 and GPFS filesystems (issue #3442) * resolve symlinks when checking for ~/.subversion (r36023) * don't let svn+ssh SIGKILL ssh processes (issue #2580) * allow PLAIN and LOGIN mechanisms with SASL in svnserve (r38205) * fix peg revision parsing in filenames like 'dir/@file.txt' (issue #3416) * fix detection of Apache <2.0.56 (r38290, -3, -4) * don't pretend to do tree conflict resolution (r38799, -801, -805) * fix data corruption when syncing from svnserve to mod_dav_svn (r38686, -7) * fix GNOME Keyring with '--non-interactive' option (r38222, -3, -61, -410) * fixed: false "File '...' already exists" error during commit (issue #3119) Developer-visible changes: * avoid referencing uninitialized variables (r38388) * plug a couple of error leaks (r38572) * improve windows test output (r38616, -7, -9, -49) Version 1.6.4 (06 Aug 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.4 User-visible changes: * fixed: heap overflow vulnerability on server and client See CVE-2009-2411, and descriptive advisory at http://subversion.apache.org/security/CVE-2009-2411-advisory.txt Version 1.6.3 (22 Jun 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.3 User-visible changes: * fix segfault in WC->URL copy (r37646, -56) * let 'svnadmin load' tolerate mergeinfo with "\r\n" (r37768) * make svnsync normalize svn:* props to LF line endings (issue #3404) * better integration with external merge tools (r36178) * return a friendly error message for 'svn diff' (r37735) * update dsvn.el for 1.6 (r37774) * don't allow setting of props on out-of-date dirs under neon (r37745) * improve BASH completion (r36450, -52, -70, -79, -538) * always show tree conflicts with 'svn st' (issue #3382) * improve correctness of 'svn mergeinfo' (issue #3126) * decrease the amount of memory needed for large commits (r37894, -6) * work around an APR buffer overflow seen by svnsync (r37622) * ra_svn clients now use TCP keep-alives if available (issue #3347) * improve 'svn merge' perf by reducing server contact (r37491, -593, -618) * stop propagating self-referential mergeinfo in reintegrate merges (r37931) * fix NLS detection where -liconv is required for bindtextdomain() (r37827) * don't delete unversioned files with 'rm --keep-local' (r38015, -17, -19) * bump apr and apr-util versions included in deps to latest. (r37941) * avoid temp file name collisions with ra_serf, ra_neon (r37972) * fixed: potential segfault with noop file merges (r37779) * fixed: incorrect output with 'svn blame -g' (r37719, -23, -41) * fixed: bindings don't load FS libs when module search enabled (issue #3413) * fixed: DAV RA layers not properly handling update/switch working copy directory to revision/place in which it doesn't exist (issue #3414) * fixed: potential abort() in the working copy library (r37857) * fixed: memory leak in hash reading functions (r37868, -979) Developer-visible changes: * improve memory usage in file-to-stringbuf APIs (r37907) * reduce memory usage for temp string manipulation (r38010) Version 1.6.2 (11 May 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.2 User-visible changes: * vastly improve memory usage with 'svn merge' (issue #3393) * make default depth for merge 'infinity' (r37156) * make 'status --quiet' show tree conflicts (issue #3396) * allow '--set-depth infinity' to expand shallow subtrees (r37169) * return an error if attempting to reintegrate from/to the repo root (r37385) * don't store bogus mergeinfo for '--ignore-ancestry', foreign merges (r37333) * don't allow merge of difference between two repos (r37519) * avoid potential segfault with subtree mergeinfo (r36613, -15, -31, -41) * recommend sqlite 3.6.13 (r37245) * avoid unnecessary server query for implicit mergeinfo (r36509) * avoid unnecessary server query during reverse merges (r36527) * set depth=infinity on 'svn add' items with restricted depth (r37607) * fixed: commit log message template missing paths (issue #3399) * fixed: segfault on merge with servers < 1.6 (r37363, -67, -68, -79) * fixed: repeat merge failures with non-inheritable mergeinfo (issue #3392) * fixed: another memory leak when performing mergeinfo-aware merges (r37398) * fixed: incorrect mergeinfo on children of shallow merges (issue #3407) * fixed: pool lifetime issues in the BDB backend (r37137) Developer-visible changes: * don't fail if an embedding app has already initialized SQLite (issue #3387) * resolve naming collisions with static stat() function in svnserve (r37527) * fix an expectation for a failing dirent windows test (r37121) Version 1.6.1 (9 Apr 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.1 User-visible changes: * recommend Neon 0.28.4. (r36388) * improve performance of 'svn merge --ignore-ancestry' (r36256) * improve 'svn merge' performance with subtree mergeinfo (r36444) * correctly proxy LOCK and UNLOCK requests (r36159) * prevent a crash when updating old working copies (r36751) * don't let svnmerge.py delete a nonexistent property (r36086, -767, -769) * don't fail when upgrading pre-1.2 repositories (r36851, -7) * allow escaping of separator characters in autoprops (r36763, -84) * improve tempfile creation robustness on Windows (r36442, -3) * fix change-svn-wc-format.py for 1.6.x working copies (r36874, -5) * improve configure's detection of Berkeley DB (r36741, -2) * don't allow foreign merges to add foreign mergeinfo (issue #3383) * improve performance of 'svn update' on large files (r36389, et. al.) * fixed: error leak and potential crash (r36860) * fixed: parent directory handling on Windows (r36049, -50, -51, -131) * fixed: uninitialized memory errors (r36252, -3) * fixed: potential working copy corruption (r36714) * fixed: working copy upgrade error (r36302) * fixed: pointer dereference error (r36783) * fixed: error diff'ing large data with ignored whitespace (r36816) * fixed: potential hang in ra_serf (r36913) * fixed: problem with merge and non-inheritable mergeinfo (r36879) * fixed: repeated merging of conflicted properties fails (issue #3250) * fixed: excluding an absent directory segfaults (issue #3391) Developer-visible changes: * ensure svn_subst_translate_cstring2() properly flushes data (r36747) * make serf report a base checksum to apply_textdelta (r36890) * syntax updates for strict C89 compilers (r36799) * update RPM scripts for RHEL4 (r36834) * allow tests to be run with Python 2.6.1 on Windows (r36149, -50, -51, -56) * allow building JavaHL with Visual Studio 2008 (r36954) * stop setting default translation domain in JavaHL (r36955) * fixed: warning with Python 2.6 and ctypes bindings (r36559) * fixed: undefined references to svn_fs_path_change2_create() (r36823) Version 1.6.0 (20 Mar 2009, from /branches/1.6.x) http://svn.apache.org/repos/asf/subversion/tags/1.6.0 User-visible changes: - General: * Now require Windows 2000 or newer on Windows (r33170) - Major new features: * identical files share storage space in repository (issue #2286) * file-externals support for intra-repository files (issue #937) * "tree" conflicts now handled more gracefully (issue #2282, #2908) * repository root relative URL support on most commands (issue #3193) - Minor new features and improvements: * pre-lock hook can now specify lock tokens via stdout (r32778) * svnmucc: support '--with-revprop' (r29492) * merge: log include-descendants in operational log (r30426, r30428) * improved operational logging for 'svn switch' (r30517) * new 'Header' keyword, similar to 'Id' but with full URL (r35386) * warn/disallow when storing plain-text passwords (r31046) * support KWallet and GNOME keyring for password storage (r31241, -337) * client now caches SSL client cert passphrases (issue #2489) * add '--prefix-file' option to 'svndumpfilter' (issue #2697) * add '--ignore-externals' option to 'svn cp' (issue #3365) * add '--with-no-revprops' to 'svn log' (issue #3286) * new 'svnadmin pack' command to compress FSFS filesystems * new SVNAllowBulkUpdates mod_dav_svn directive (issue #3121) * new public mod_dav_svn URI syntax: path?[p=PEG][&r=REV] (r34076) * new 'svnsync info' command to show synchronization information (r35053) * conflict resolver supports display-conflict, mine-conflict and theirs-conflict - Client-side bugfixes: * faulty reflexive merges (issue #2897) * buffer overflow on a 0 byte string buffer (r35968, -74) * conflict resolver needed more useful 'diff' option (issue #3048) * disable username assumption (issue #2324) * more accurate usage message for 'svn log' (r30449) * do not repeat merge if target has explicit mergeinfo (issue #2821) * corruption when filtering self-referential mergeinfo (r30467) * filter empty mergeinfo with self-referential mergeinfo (r30510) * pay attention to partial replay from the server in svnsync (r30440) * improved property name handling in svnsync (r30480) * properly recognize the file:/// in repository with svnsync (r30482) * svn+ssh SIGKILLs ssh processes (issue #2580) * 'svn up'/'svn co' early abort with svn:externals (issue #3148) * improve tempfile names for conflict resolver (issue #3166) * ra_serf: 'svn merge' aborts (issue #3212) * 'svn cleanup' failed on non-ASCII characters (issue #3313) * 'svn update' fails on moved, modified file with local mods (issue #3354) * easier use of NTLM for proxy with ra_neon (r29874) * 2-url merge from DAV-accessed foreign repo makes bad wcprops (issue #3118) * can't add .svn (and children) to your wc via '--parents' (r35819) * improved performance removing unversioned directories (r36111) * 'svn cp --parents' had path URL encoding issues (issue #3374) * support shell quoting rules in externals definitions (issue #2461) * new SVN_LOCALE_DIR environment variable for localization (issue #2879) * scheme and domain name in urls handled case insensitive (issue #2475) * merge: pick default revisions with peg revision in single url (r30455) * many other minor bugfixes, optimizations, plugs of memory leaks, etc - Server-side bugfixes: * mod_dav_svn runs pre-revprop-change twice (issue #3085) * mod_dav_svn ignores pre-revprop-change failure on delete (issue #3086) * mod_dav_svn prevented lock breaks from being propagated to client (r29914) * non-UTF8 filenames could enter repository (issue #2748) * 'svnlook proplist' xml output (issue #2809) * don't let mod_dav_svn hide errors from client (issue #3102) * ra_serf failure during update (issue #3113) * ra_serf comply with RFC 2617 in handling authentication headers (r35981) * use both SHA1 and MD5 in the FS backends (r34388) * many other minor bugfixes too numerous to list here - Contributed tools improvements and bugfixes: * commit-email.pl: Deprecated; use mailer.py instead (r31755, -67) * svnmerge.py migration tool munged svn:mergeinfo ordering (issue #3302) * And other random sundry stuff Developer-visible changes: - General: * serf 0.3.0 required, when building with serf (r35586) * require SQLite 3.4.0 or newer (r33520) * allow the use of an in-tree SQLite amalgamation (r35263) * svn_log_changed_path_t now includes a 'kind' field (issue #1967) * BDB `changes' table inconsistency when APIs are misused (issue #3349) * configure should prefer apr-1 over apr-0 if both are present (issue #2671) * make 'Not Found' errors consistent between RA layers (issue #3137) * fix a potential buffer overrun (r34374) * many bug fixes and improvements to the test suite - API changes: * notification system for properties and revision properties (issue #783) * make ra_svn's merge commit-revprops public (r30462, r30453) * mod_dav_svn operational logging compatible with svnserve logging (r30518) * improve speed of svn_client__get_copy_source() (issue #3356) * if fsfs commit fails return SVN_INVALID_REVNUM (r35950) - Bindings: * new: ctypes python bindings * many improvements to all bindings (Java, Perl, Python, and Ruby) * respect CFLAGS in SWIG bindings (r35879) * fix building Ruby bindings with Ruby 1.9 (r35852, r35883) Version 1.5.9 (06 Dec 2010, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.9 User-visible changes: * fix proxying of LOCK and UNLOCK requests with WebDAV proxies (r36159) * improve performance of --ignore-ancestry merges (r36256) * avoid crash with when using subtree mergeinfo (r36613, -13, -31, -41) * improve merge correctness with non-inheritable mergeinfo (r36789) * fixed: repeated mergeinfo of conflicting properties fails (issue #3250) * fix segfault in wc->URL copy (r37646, -56) * make 'svn up --set-depth infinity' expand shallow subtrees (r37169) * resolve symlinks when checking for ~/.subversion (r36023) * make default depth of 'svn merge' infinity (r37156) * don't allow foreign merges to add foreign mergeinfo (issue #3383) * error if attempting to reintegrate to/from the repo root (r37385) * let 'svnadmin load' tolerate mergeinfo with "\r\n" (r37768) * improve memory performance in 'svn merge' (issue #3393) * fixed: 'SVNPathAuthz short_circuit' unsolicited read access (issue #3695) See CVE-2010-3315, and descriptive advisory at http://subversion.apache.org/security/CVE-2010-3315-advisory.txt * prevent crash in mod_dav_svn when using SVNParentPath (r1033166) * limit memory fragmentation in svnserve (r1022675) * fix server-side memory leaks triggered by 'blame -g' (r1032808) * perform MIME type matching case-insensitively (issue #3479) * respect Apache's ServerSignature directive (r880082) * error early if attempting to use Serf >= 0.4.0 (r1041545) Developer-visible changes: * fix pointer dereference (r36783) * fix error leak (r36860) * make basic_tests 12 compatible with Windows and Python 2.5+ (r35930) Version 1.5.8 (Not released, see changes for 1.5.9.) Version 1.5.7 (06 Aug 2009, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.7 User-visible changes: * fixed: heap overflow vulnerability on server and client See CVE-2009-2411, and descriptive advisory at http://subversion.apache.org/security/CVE-2009-2411-advisory.txt Version 1.5.6 (26 Feb 2009, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.6 User-visible changes: * allow colons within mergeinfo path names (r35040) * make it impossible to add .svn to wc via 'svn add --parents' (r35143, -5) * copy properties of added but uncommitted files (r32448) * speedup JavaHL bindings on Windows (r35733) * improve performance of log operation on < 1.5 servers (r35566) * allow commits over Neon of files >2GB (POSIX only) (r34919, -24) * allow serf from behind MS ISA proxy servers (r35981) * prevent svnmerge-migrate-history.py from committing bogus mergeinfo (r35516) Developer-visible changes: * fix error handling in mod_dav_svn (r35250, -86) * support --server-minor-version in windows testsuite (r31393) * fix depth_tests.py 23 on Windows with a BDB repo (r34875) * allow svn_mergeinfo_parse() to tolerate unordered mergeinfo (r35297, -367) * allow overlapping rangelists into svn_mergeinfo_parse() (r35466, -712, -713) Version 1.5.5 (22 Dec 2008, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.5 User-visible changes: * allow prop commits on dirs with modified children (r34487, -92, -94) * make Cyrus auth implementation always prefer EXTERNAL to ANONYMOUS (r33866) * do not create mergeinfo for wc-wc moves or copies (r34184, -585) * do not autoupgrade old BDB filesystems to 1.5 or 1.4 format (r34653, -6) * return mergeinfo to prior state during reverse merges (r30257, r33024, -6) * remove mergeinfo deleted by merge (issue #3323) * make proxy slaves pass through txn GET and PROPFIND requests (issue #3275) * merge can now use targets with inconsistent newlines (issue #3262) * don't allow empty-string changelists (issue #3344) * remove false positive ra_neon mergeinfo errors (r34822) * improve performance of 'svn merge --reintegrate' (r34091, -4, and others) * fixed: foreign merges keep UUID of foreign repository (r34050, -1, -3) * fixed: properly encode diff headers used in conflict resolution (r34171) * fixed: segfault in 'svn cp --parents' (r31311, -4) * fixed: mergeinfo for '...' maps to empty revision range (issue #3312) * fixed: segfault in BDB backend node-origins cache (r34506) * fixed: broken merge if target's history includes resurrections (r34385, -93) * fixed: invalid mergeinfo created on a subtree during merge (r34560, -2) Developer-visible changes: * fixed: svn_repos_get_logs() chokes on some revision arguments (r33873, -4) Version 1.5.4 (24 Oct 2008, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.4 User-visible changes: * Properly handle explicit mergeinfo added in merge source (r32968, -75) * fixed: merging of paths containing spaces (r33641, -44) * fixed: regression in mergeinfo-aware merges against 1.5.3 (r33693, -704) Version 1.5.3 (10 Oct 2008, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.3 User-visible changes: * Allow switch to continue after deleting locally modified dirs (issue #2505) * Update bash_completion to be compatible with 1.5 (r32900, -11, -12) * Improve 'svn merge' execution time by 30% on Windows (r33447) * Reuse network sessions during 'svn merge', improving performance (r33476) * Improve temp file creation time on Windows (r33464) * Greatly improve merge performance (r29969, r32463, r33013, -016, -022, -112) * Improve file IO performance on Windows (r33178, -85) * fixed: merging files with spaces in name (r33109, -121, -369) * fixed: incorrect relative externals expansion (r33109, -121, -369) * fixed: 'svn mv' hangs and consumes infinite memory (r33201, -12) * fixed: correctness regression in 'svn log -g' (issue #3285) * fixed: current early bailout of 'svn log -g' (r32977) Developer-visible changes: * Allow the tests to run as non-administrator on Windows Vista (r31203) * Allow out-of-tree build of bindings on BSD (r32409) * Translate messages in svn_fs_util.h (r32771) * fixed: bindings test for Perl 5.10 (r31546) * fixed: building bindings and C API tests with VS2008 (r32012) * fixed: svn_ra_replay API over ra_serf (r33173) Version 1.5.2 (30 Aug 2008, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.2 User-visible changes: * Set correct permissions on created fsfs shards (r32355, -7) * Pass client capabilities to start-commit hook (issue #3255) * Disallow creating nested repositories (issue #3269) * Support Neon 0.28.3 * Properly canonicalize URIs with an empty hostname (issue #2116) * Improved merge performance for superfluous ranges (r32643) * Better error message for 'Malformed URL for repository' (r31867, r32365) * Improved svn:externals parsing (r32672, -673, -674, -739) * fixed: improper ordering in 'svnlook diff' output (r32019) * fixed: mod_dav_svn memory leak with 'SVNPathAuthz short_circuit' (r32360) * fixed: duplicate svn:externals targets fail on co/up (issue #3246) * fixed: 'svn merge --depth' inconsistencies (issue #2825) * fixed: ra_serf test failures (1.5.x-ra_serf-backports branch) * fixed: memory leak and crashes in FS (r32545, -58, -82) * fixed: core dump with relative externals (issue #3237) * fixed: 'svn copy' working copy corruption (r32467, -70) * fixed: perl bindings errors in non-English locale (issue #3258) * fixed: 'svn merge' incorrectly reverses previous merges (r32494, -522, -523) * fixed: 'svn merge' errors with subtree mergeinfo (issue #3067) Developer-visible changes: * make libsvn_ra_neon initialization thread-safe (r32497, r32510) * respect LDFLAGS in SWIG bindings (r32416, r32421, r32442) * fixed: test failures in non-English locales (r32491) Version 1.5.1 (26 Jul 2008, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.1 User-visible changes: * mergeinfo on switched subtrees should elide in repos (issue #3188) * Add support for --config-dir to svnmerge.py (r31727) * improve performance of bdb post-commit deltification (r31820, -59) * return faster when there is nothing to be merged (r30748) * don't commit an add of a missing item (issue #3198) * don't create unneeded self-referential mergeinfo (issue #3157) * support 'http-library' (if --enable-runtime-module-search) (r31425, -722) * support Berkeley DB 4.7 (r32017, -29) * fixed: make serf usable with root-level authz (r31464) * fixed: 'svndumpfilter' partial-path matching bug (r31833) * fixed: crash on invalid dates in 'log' and 'blame' (issue #2721) * fixed: 'svn status --xml' outputting invalid XML (issue #2887) * fixed: 'svn merge' prints incorrect range (r30746, -47) * fixed: using neon/serf, can not replace branch (issue #2939) * fixed: 'file not found' error when merging to a broken symlink (r31159, -79) * fixed: using serf, crash or endless loop fetching authn data (r31619) * fixed: ArrayIndexOutOfBoundsException in JavaHL bindings (r31719, -806) * fixed: authn password lookup used wrong username (issue #2242) * fixed: unbounded memory usage in wc-to-wc copy and move (r31868) * fixed: subtree merges broken for non-intersecting ranges (issue #3199) * fixed: invalid XML from 'svn log --xml' against pre-1.2 servers (r31875) * fixed: 'svnlook diff' ignores --diff-copy-from for properties (issue #3248) * fixed: 'svnlook diff' doesn't report that binary files differ (issue #3249) * fixed: bogus results from commits to subtrees added by merge (issue #3240) * fixed: non-existent subtree in destination breaks the merge (issue #3067) * fixed: serf merge bug too complex to describe here (r32056) * fixed: 'svn log -g' correctness and speed (issue #3220, issue #3235) * fixed: merge chokes on renamed subtrees (issue #3174) Developer-visible changes: * export svn_path_is_url() to the bindings (r31603) * don't clobber LDFLAGS in configure when given '--with-zlib' (r31825) * make libsvn_ra depend on libsvn_delta unconditionally (r31852) * correctly set the peg revision for copy in JavaHL (r31994) * 'svn mergeinfo' handles wc paths (r31023, -873, -874, -929, -930, -038) * fixed: crash when when svn_ra_open3() is passed a bogus URL (r31223) * fixed: JavaHL compilation on Windows (r31737) * fixed: crash in calling apr_pstrcat (affects TortoiseSVN) (r32080) Version 1.5.0 (19 Jun 2008, from /branches/1.5.x) http://svn.apache.org/repos/asf/subversion/tags/1.5.0 User-visible changes: - Major new features: * Merge Tracking [foundational] (issue #820) * Sparse checkouts (see new '--depth' option) (issue #695) * Interactive conflict resolution (r25670 et al) * svn:externals handles relative URLs (issue #1336) and peg URLs * Changelist support * WebDAV transparent write-through proxy * Better support for large FSFS deployments (via sharding & partitioning) * Cyrus SASL support for ra_svn and svnserve (issue #1144) - Minor new features and improvements: * 'svn resolve' (with '--accept' option) replaces "resolved" (issue #2784) * 'svn move file1 file2 ... dir' now moves the files into dir (issue #747) * 'svn mkdir' and 'svn copy' now take '--parents' option (issue #1776) * 'svn delete' now takes '--keep-local' to not remove working copy files * 'svn copy', 'move' now support peg revisions (issue #2546; also r26484) * 'svn copy A B ; svn move B C' now the same as 'svn copy A C' (issue #756) * 'svn copy -rBASE' now works in a working copy (issue #1643) * 'svn import' now takes '--force' (issue #2806) * 'svn status -u' now shows of locally deleted directories (issue #2420) * 'svn switch' now takes '--force' (issue #2392) * 'svn switch' now takes '--ignore-externals' option (issue #2189) * 'svn switch' now supports peg revisions (issue #2545) * 'svn checkout' now takes '--force' option (issue #1328) * 'svn proplist' and 'svn propget' now support peg revisions (issue #3070) * 'svn propget' now takes '--xml' option (issue #2696) * 'svn propedit' now support URLs (issue #2238, but see issue #2923) * 'svn proplist --quiet' no longer prints extra info (issue #1547) * 'svn diff --summarize' now takes '--xml' option (issue #2967) * 'svn diff -x' now takes '-p' extension option (issue #2995) * 'svn log' now takes '-c' option (r27933) * 'svn log' now takes '-l' as short form of '--limit' (r25829) * 'svn log --xml' now takes '--with-revprop' option (issue #2850) * 'svn diff'/'svnlook diff' now show property actions better (issue #3019) * 'svn merge' now has informative messages on reverse merges (issue #2848) * 'svn merge FILE' now honors '--ignore-ancestry' (issue #2853, r25891) * 'svn merge' handles multiple notifications for single items (issue #2828) * 'svn merge' handles skipped path better (issue #2829) * 'svn merge' handles merges from foreign repositories more completely * 'update', 'checkout', 'switch' now handle obstructions gracefully (r22257) * 'svn update' now takes '--force' (issue #2392) * 'svn update' now sometimes copies or moves local files, for efficiency * 'svnadmin lslocks' now accepts path within repository (issue #2965) * 'svnadmin recover' now supports FSFS repositories (issue #2992) * 'svnadmin verify' now has '-q' and '-r' options (r22103) * 'svnadmin setrevprop' command added (r21736) * 'svnadmin setuuid' command added (r28511) * 'svnsync sync' now shows commit progress like 'svn commit' * 'svnsync' now takes '-q, --quiet' option (r26465) * 'svnsync' now supports separate authn for source/target (issue #2717) * 'svnsync copy-revprops' now supports revision ranges (r23498) * 'svnsync copy-revprops' now supports "HEAD" revision alias (r23500) * 'svnmucc' is new name for contrib tool formerly called 'mucc' * 'svnmucc' now has propset and propdel subcommands (issue #2758) * 'svnmucc' now has more authentication options * 'svnmucc' now now takes '--non-interactive' option (r25977) * 'svnmucc' now takes a global base revision, for extra safety (r23764) * 'svnlook' now takes '--extensions' option (issue #2912) * 'svnlook' now takes '-N' option (issue #2663) * 'svnlook history' now takes '-l' / '--limit' option (r25843) * 'svnserve' now takes '--config-file' option (r24119) * 'mod_dav_svn' now uses Apache default mime-type for files (issue #2304) * new '--with-revprop' option on all commands that commit (issue #1976) * now accept "peg dates" (URL@{DATE}), behaving like peg revs (issue #2602) * easier to try out experimental ra_serf http:// access module * select ra_neon vs ra_serf on a site-by-site basis in config (r25535) * client-side post-commit processing now more efficient (issue #2607) * windows binaries now use a custom crash handler (issue #1628) * add vim swap file patterns to default global-ignores (r24348) * add "*.pyc" and "*.pyo" patterns to default global-ignores (issue #2415) * add unix/libtool library patterns to default global-ignores (issue #2415) * naming scheme for conflict files is now configurable (issue #2474) * removed svn-ref.tex as it's extremely out of date (issue #2762) * improved cancellation response in many situations * support Neon up to 0.28 * character set conversion now uses native API on Windows (r25650) * HTTP authn protocol now configurable (for Neon 0.26 and higher) (r21531) * http:// (over Neon) supports HTTP redirection / relocation (issue #660) * support PKCS#11-provided (smartcard) SSL client certs with Neon (r29421) * authz now supports aliases (r21982) * authz token rules for authenticated-only, anonymous, and inverse (r23750) * mailer.py now supports properties in commit messages (r21684) * ra_serf now supports NTLM/SSPI authentication (issue #2900) * warn if try to turn off boolean property via propset/propedit (r25486) * display repository basename in XML and HTML index views (r25837, r25838) * config 'http-auth-type' can be overridden to force BASIC auth (r23900) * translation updates for all languages, as usual * Revamp mod_dav_svn logging; see tools/server-side/svn_dav_log_parse.py * misleading configure arg --enable-dso now --enable-runtime-module-search - Client-side bugfixes: * 'svn revert' of missing scheduled addition broke wc (issue #2425) * 'svn export' should export svn:externals from local copies (issue #2429) * 'svn status -uN' should show status of files (issue #2468) * 'svn update' overwrote if local timestamp unchanged (issue #2746) * 'svn update -N' errored when receiving a deletion (issue #3039) * 'svn merge' would delete locally modified props (issue #2857) * 'svn log --xml' could output invalid XML (issue #2866) * 'svn copy' on URL with spaces made wrong WC file name (issue #2955) * 'svn diff' was failing w/ large diffs on Windows (issue #1789) * 'svn delete' no longer deletes locally-modified files (issue #1808) * 'svn move' moved files to wrong directory on Windows (issue #1869) * 'svn revert' mistakenly used leftover .svn-revert files (issue #2927) * 'svn diff' output now shows relative paths (issue #2723) * 'svn diff' wasn't ignoring all EOLs (issue #2920) * 'svn cleanup' no longer fails on a missing .svn/tmp dir (r23370) * infinite loop in UTF conversion in non-C locale (issue #2577) * interrupting "svn status" could make svn crash (issue #2623) * commit-email.pl date header output now RFC2822-compliant (issue #2633) * authz write access to folder wasn't permitting locking (issue #2700) * stop complaining just because $HOME is unreadable (issue #2363) * do not display unescaped characters in error message (issue #2471) * propchange received on subdir merge causes conflict (issue #2969) * revert replaced-with-history files should restore checksum (issue #2928) * catch improper arguments to diff (issue #2996) * handle URLs like http://hostname (i.e. no path part) (issue #1851) * config autoprops honored regardless of case of entry (issue #2036) * "Cannot replace a directory from within" error now rarer (issue #2047) * handle _svn/.svn as part of a path (issue #3026) * make permissions changes on symlinks a no-op (issue #2581) * error usefully if asked to update a URL (r22296) * fixed infinite loop on Windows if fail to find repository root (r22483) * 'svn info $REPO_ROOT' now supports pre-1.2 svn:// servers (r26264) * be more resilient in the face of faulty .svn/entries files (r26482) * 'svn diff -x --ignore-eol-style' failed to ignore all EOLs (r27094) * rare property dataloss bug now fixed (issue #2986, see also r29538) * fixed faulty status reporting for some missing directories (issue #2804) * 'svn diff --summarize' showed wrong output paths (issue #2765) * propset and move interaction could cause property weirdness (r25833) * 'svn propget .@HEAD' now works (issue #3012) * 'svnsync' had bug with replaced+modified rev over serf (issue #2904) * 'svnsync --config-dir' sometimes ignored, thus tunnel agent bug (r27056) * update/merge safely receives file on top of schedule-add file (r23506) * http:// (over Neon) reports progress while disk-spooling delta (r26271) * print "Out of memory" before dying from memory shortage (issue #2167) * warn when used on old checkout without a repository root entry (r25168) * merge to missing file target wrongly appeared to succeed (issue #2782) * 'svn merge URL PATH -cX' could cause property corruption (issue #2781) * URL parsing now consistently checks for error earlier (issue #2207) * security hole: files could be created above cwd (r26047, CVE-2007-3846) * local property mods to replaced-with-history file could be lost (r26364) * revert of replaced-with-history path left copyfrom info (r23452) * character encoding translation could hang (r23492) * un-substituting keywords was buggy ($Id$ vs. $Id:$) (issue #2640) * ra_neon and ra_serf lost pre-revprop-change hook output (issue #443) * merge of non-empty subdir could be committed incorrectly (issue #1962) * many other minor bugfixes, optimizations, plugs of memory leaks, etc - Server-side bugfixes: * segfault in svnserve and svnversion commands fixed (issue #2757) * segfault when stopping httpd (if BDB repository) fixed (issue #2732) * 'svnadmin dump' had a path ordering bug (issue #2641) * better FSFS support for NFS v3 and lower (r24470) * better FSFS support for some buggy NFS clients (r29448) * authentication and authz bugs w.r.t. anonymous access (issue #2712) * inconclusive authz result should deny, not allow (r23815) * better reporting of problems parsing authz files (r22329) * set svn:date revprop even if dumpstream does not (issue #2729) * http:// commit can now create empty files properly (r25471, r25474) * squelch not-a-directory errors in both FS backends (issue #2549) * segfault on update-report response without base revision (issue #3023) * 'svnserve --root PATH' checks that PATH exists (r22580, r22701) * 'svnlook propget -t TXN_NAME' reports errors better (r22772) * make location of mod_dav_svn activity database configurable (r24873) * select only paths that are proper children of requested path (r25231) * http:// commit error could leave empty transactions behind (r23594) * 'svn switch --relocate' now works against unreadable repos root (r23848) * many other minor bugfixes too numerous to list here - Contributed tools improvements and bugfixes: * svn_load_dirs.pl: - Support global-ignores list (issue #2470) - Allow "@" in filenames (r22203, Debian bug 359145) - Add -no_auto_exe option (r26399) * svnmerge.py: - fixed: Always get end_rev from source instead of target (issue #2863) - fixed: 'init' now chooses a better default revision range (issue #2810) - fixed: Consider revs changing blocking status as reflected (issue #2814) - Performance inmprovement (issue #2812) - initialized revisions can be excluded (issue #2851) * new 'svn-populate-node-origins-index' tool (issue #3024) * new 'svn-merge-vendor.py' to assist in merging vendor branches (r23030) * 'svn2rss.py' is now called 'svn2feed.py' * svn2cl: New release 0.9 (r24498) * commit-email.pl: various improvements (r22971, r22589) * commit-email.rb: various improvements * psvn.el: too many improvements and new features to list them all here * dsvn.el: improve XEmacs compatibility (r24337) * svn-tweak-author.py: make NEWAUTHOR argument optional (r24387) * And more stuff that we just didn't have time to list. Enjoy. Developer-visible changes: * General: - libsvn_ra_neon is new name for libsvn_ra_dav (to accommodate ra_serf) - many abort() calls removed, replaced with error returns - client and server now do capabilities exchange (r29358 et al) - gen_win.py: auto-detect the path to the JDK on Windows (r24333) * API changes: - many, many new APIs and types as part of the new features in 1.5.0 - APIs to allow retrieving multiple revprops in one fetch (issue #2850) - basic progress reporting for ra_svn (issue #901) - new APIs for creating and using iterators (r26533) - svn_fs_node_origin_rev finds line of history origin (issue #3017, #3024) - svn_revnum_parse for parsing revision numbers (r26195) - svn_path_is_canonical for validating paths (r26481) - new API svn_fs_txn_root_base_revision() (r22610) - pass individual arguments rather than config objects (r25182, r25190) - clients can now extend HTTP User-Agent header (r28613) - SVN_ERR_RA_DAV_PATH_NOT_FOUND is deprecated and no longer raised * Bindings: - Many improvements to all bindings (Java, Perl, Python, and Ruby) Version 1.4.6 (21 Dec 2007, from /branches/1.4.x) http://svn.apache.org/repos/asf/subversion/tags/1.4.6 User-visible changes: - Client: * fixed: unbounded memory use in "svn cat" over ra_svn (r26964, -8) * fixed: 'svn diff --summarize file' displays erroneous output (issue #2765) * fixed: 'svn status' wrong on previously-reverted deleted dir (issue #2804) * fixed: 'svn up' can delete unversioned symlinks (issue #1808) * fixed: use correct properties for locally replaced files (issue #2743) * fixed: 'svn info -R $REPO_ROOT' w/ pre-1.2 svnserve broken (r26264) * fixed: svnsync ignores '--config-dir' (r27056) * datestamps can be localized (r26156) * fixed: text base not updated when merging a replaced file (issue #2698) * fixed: inverted 'switch --relocate' error message (r22355) * fixed: sporadically failing file and directory removal on Windows (r25520) * fixed: property file handling for schedule-delete files (r25833) * fixed: allow invalid svn:eol-style values (r28331) * fixed: 'svnadmin rmlocks' should error when no path provided (r28431) * support neon 0.26.4 (r26077) - Server: * fixed: authz granted if calculation inconclusive (r23815) * fixed: svndumpfilter crashes on Windows (r23494) * fixed: wrong pointer type used for memset (r27263) * fixed: invalid FSFS directory cache can corrupt repository (r27256) * fixed: dir props on FSFS filesystem root never conflict (issue #2608) - Client and Server: * fixed: "No newline at end of file" message translated (issue #2906) * use compressed delta encoding for 'svn blame' in svnserve (r26115) * translation updates for Simplified Chinese Developer-visible changes: * svnserveautocheck.sh script is executable (r23942) * add RHEL5 RPM (r25593) * test suite passes with trunk servers (forwards-compatibility) (r25607) * javahl bindings: - improve error reporting from native code (r25208) Version 1.4.5 (27 Aug 2007, from /branches/1.4.5) http://svn.apache.org/repos/asf/subversion/tags/1.4.5 User-visible changes: * fixed: file placement vulnerability (Win32 clients only) See CVE-2007-3846, and descriptive advisory at http://subversion.apache.org/security/CVE-2007-3846-advisory.txt Version 1.4.4 (30 May 2007, from /branches/1.4.x) http://svn.apache.org/repos/asf/subversion/tags/1.4.4 User-visible changes: - Client: * fixed: 'svn up' of replaced file without history fails (issue #2618) * fixed: 'svn export' succeeds on non-existent URL (r23191, -3, -5, -200) * fixed: 'svn diff' fails writing large hunks to Win console (issue #1789) * fixed: 'svn merge' shows 'G' notifications for unchanged files (r24483) * fixed: svnsync cannot sync unreadable modified dir copies (issue #2705) * fixed: ra_dav litters empty transactions if initial setup fails (r23594) * fixed: inconsistent expansion of revision number keywords (issue #1743) - Server: * fixed: rare dirprop dataloss leading to BDB repo corruption (issue #2751) * fixed: race condition when changing FSFS revprops (r23439, r23440) * fixed: 'svnadmin load' invents svn:date if none exists (issue #2729) * fixed: svnserve can't commit locked file if root unwritable (issue #2700) * fixed: 'svnadmin dump' output invalid for non-ASCII paths (issue #2641) * fixed: security flaw in 'svn prop*' commands [CVE-2007-2448] (r25095, -099, -104, -105, -10) - Client and Server: * fixed: hang during character translation (r23491, r23492) * translation updates for Simplified Chinese, Japanese, and Norwegian Developer-visible changes: * new "make svnserveautocheck" testing target (r23558) * fixed: ra_serf fails checkout if access to repos root is forbidden (r23846) * fixed: svn_client_cat2() doesn't accept WORKING as a revision (r23556) * javahl bindings: - fixed: potential segfault in initialisation (r23383) - fixed: SVNClientSynchronized.logMessages() isn't synchronised (r23978) - fixed: SVNClient.info2() misreports itself as unlock in errors (r24219) * SWIG/perl bindings: - fixed: ra_do_{update,switch,status} don't work with Perl delta editors (r20667, r22311) * SWIG/python bindings: - fixed: memory leak whenever C APIs returned errors (r23521) * SWIG/ruby bindings: - fixed: typos in method Svn::Wc#merge_prop_diffs and docs (r23405, -6) Version 1.4.3 (18 January 2007, from /branches/1.4.x) http://svn.apache.org/repos/asf/subversion/tags/1.4.3 User-visible changes: - Client: * fixed: crash using automatic auth protocols with Neon 0.26 (r22440, -61) * fixed: svn_load_dirs.pl cannot import file names containing '@' (r22203) * fixed: error when committing replaced directories (r22991, -8) * fixed: inability to change file perms due to existing file perms (r23018) * include newest version of svn-graph.pl (r22969) - Server: * fixed: incorrectly reporting authz circular dependencies (issue #2684) * fixed: potential filesystem memory leak in commit finalisation (r22729) - Client and Server: * fixed: crash in character translation, particularly on Windows (r22417) * fixed: potential string corruption when resizing string buffers (r22689) * translation updates for Korean, Spanish, Italian, Simplified Chinese, and Japanese (fixing issues #2649 and #2681) Developer-visible changes: * support Neon 0.26.2 (issue #2666) * update (experimental) ra_serf repository access module for DAV (r22872) * Windows installer improvements (r21516, r22155, r22224) * fixed: svn_{ra,repos}_replay() doesn't send checksums (r22346, -51, -52) * fixed: error when calling svn_repos_replay2() with a txn root (r22609) * fixed: Solaris packaging script broken (issue #2669) * javahl bindings: - fixed: auth cache is created in the current directory (r22780) - fixed: SVNAdmin's setLog() method always fails (r22387) - fixed: target dependency order in generated build scripts (r22209) * SWIG/perl bindings: - fixed: memory leak when calling methods on a Perl commit editor (r22332) Version 1.4.2 (2 November 2006, from /branches/1.4.x) http://svn.apache.org/repos/asf/subversion/tags/1.4.2 User-visible changes: - Client: * new "notes/svnsync.txt" file explains common svnsync usage * install a manpage for svnsync (r21403) * install/package svnsync on Windows (r21387, r21424) * translation updates for all languages * dramatically speed up commit of wc-to-wc copy (r21471) * fixed: support 'svn co URL@{DATE}' (issue #2602) * fixed: cannot access repositories with spaces via svn:// (issue #2612) * fixed: passing full URL in some DAV requests, breaking proxies (r21526) * fixed: history-tracing can fail for renamed directories (issue #2600) * fixed: crash if interrupted while opening a working copy (r21792) * fixed: 'svn merge' should notify about conflicted files (issue #2584) * fixed: 'svn revert' should notify about prop-only reverts (issue #2517) * fixed: 'svn status -u' not showing props changed on wc root (issue #2533) * fixed: 'svn status -u' fails in a read-only working copy (r21904, -19) * fixed: 'svn up' failing with checksum mismatch error (issue #2618) * fixed: 'svnsync sync' copying missing implicit revprops (issue #2613) * fixed: svnsync unable to synchronise copies of URL-unsafe paths (r22092) * svnshell tool: support "setrev head" (r20992) * include newest version of svnmerge.py - Server: * FSFS: improve detection of disk write errors (r21346) * FSFS: prevent API violation from corrupting repository (issue #2467) * improved error checking when running hook scripts, etc (r21483) * mailer.py: new commit_url option links to web page for a commit (r21333) Developer-visible changes: * support Neon 0.26.0 and 0.26.1 (r21289, r21293, r21956) * support current CVS versions of libtool (post-1.5.22) (r22120) * now compiles on architectures without APR_HAS_DSO (e.g. RISC OS) (r21473) * fixed: build error on FreeBSD due to missing svnsync manpage (r21403) * RHEL3 RPM package requires correct version of Apache httpd (r21974) * numerous improvements to coverage of the test suite * javahl bindings: - compile Java bytecode for Java 1.2 VM (r21765, -7, r21814) - fixed: crash if using 1.4.x bindings with older libraries (r21316, -429) - fixed: crash when empty destination path passed to checkout (r21770) * SWIG/ruby bindings: - fixed: accept nil for Svn::Repos#load_fs's parent_dir argument (r21793) * SWIG/python bindings: - fixed: crash when using an apr_hash_t typemap (issue #2606) - fixed: in tests, use URLs that work on Windows (r21392) * SWIG/perl bindings: - fixed: ra_replay works with Perl delta editors (r20666) Version 1.4.1 (Not released, see changes for 1.4.2.) Version 1.4.0 (10 September 2006, from /branches/1.4.x) http://svn.apache.org/repos/asf/subversion/tags/1.4.0 User-visible changes: - Client: * new 'svnsync' commandline tool for repository replication * numerous working copy improvements (WARNING! upgrades to new format!): - improved performance when detecting modified files (r18628 -56) - new property storage is faster and uses less disk space (r17583) - internal wcprops take up less space (r19433 -37) - large file commit speedups (r17861 -73 18867 -918 -29 -44 -45 -48 -49) - reduce memory usage for large working copies (r19183 -538) - increased working copy stability with merge, copy and move: (fixes issues #845, #1516, #1553, #2135, #2144, #2148) * new switches added: - 'svn blame --force' (issue #2509) - 'svn diff/merge -c/--change' (r17054 -6 -68 18568 -741) - 'svn diff --summarize' (issue #2015) - 'svn merge/blame -x' (r18716 -20) (r18602 -857) * 'svn log' now supports peg revisions (issue #2287) * 'svn export' now creates intermediate directories if needed (r20030) * use switch/relocate when svn:externals updated (issue #2209) * internal diff can ignore whitespace and eol style changes (issue #2121) * conflict markers now match the file's eol style (issue #1325) * new svn2cl, svn-viewdiff and svn-resolve contrib scripts * numerous improvements to svnmerge.py, vc-svn and psvn * translation updates for all languages * Mac OS X: store cached passwords encrypted in Keychain (r17619 -43) * fixed: 'svn ls' slow over ra_dav (issue #2151) * fixed: 'svn import' not handling eol-style correctly (issue #2433) * fixed: 'svn blame' should default operative rev range to peg rev (r18400) * fixed: 'svn blame' ignores eol-style (issue #2431) * fixed: 'svn checkout' should default operative rev to peg rev (r18422) * fixed: 'svn diff' supports all eol styles (r17624 -8 -61 18195 -392) * fixed: 'svn diff' multi-target memory leak (r17518) * fixed: 'svn merge' showing wrong status with external diff3 (issue #1914) * fixed: 'svn merge' not merging added dir into deleted dir (issue #2515) * fixed: 'svn rm' of non-existent item should fail (issue #2440) * fixed: 'svn status' should skip unversioned files (issue #2030) * fixed: 'svn status' shows added and conflicted files as added (r20382) * fixed: 'svn switch --relocate' may set wrong repos root (r17031) * fixed: 'svn switch --relocate' memory leak (r19535) * fixed: 'svn switch --relocate' not caching passwords (issue #2360) * fixed: 'svn info' not showing locks sometimes (r19777) * fixed: incorrect merge of add of binary file already in WC (issue #2403) * fixed: possible dataloss if editing immediately after merge (r20609 -12) * fixed: lots of diff wc<->repos bugs * fixed: unfriendly error message on propget on nonexistent path (r19399) * fixed: spurious revert report after manual conflict removal (issue #2517) * fixed: don't allow -rPREV on schedule add path (issue #2315) * fixed: keywords with dollar signs cause badness (issue #1780) * fixed: really revert file with locally modified keywords (issue #1663) * fixed: deleting schedule add file leaves working props file (issue #2419) * fixed: svn:needs-lock and read-only-ness not always in sync (issue #2306) * fixed: post-commit error output not sent to the client (issue #443) * fixed: not locked error on commit of switched path (issue #2353) * fixed: svn_apply_autoprops.py should trim whitespace from props (r20790) * fixed: show locking notifications in local path style (r20927) * fixed: encoding error on error messages from invalid options (r20883) - Server: * support for new 'svnsync' repository mirroring utility * support for BDB 4.4, including automatic recovery (issue #2449) * new contrib hook scripts: - enforcer - detect-merge-conflict.sh - case-insensitive.py * new tools script svn-backup-dumps.py * new tools hook script log-police.py * svnserve improvements: - can now run as a native Windows service (r18855) - new option --pid-file (r17836) - allow the password database to be read-only (r16840) * mod_dav_svn improvements: - fixed: error conversion crash (r19516) - fixed: unfriendly error when locking already locked path (issue #2275) - fixed: xml escaping bugs (r19760 -85 -86) * authorization improvements: - new mod_dontdothat apache module (r19531) - new mod_authz_svn directive AuthzSVNNoAuthWhenAnonymousAllowed (r18680) - error out when authz rules contain unexpected characters (r19471) * support .wsf hook scripts on Windows (r18972, 19076) * lots of improvements to mailer.py and commit-email.pl * FSFS back-end performance improvements (r17125 19119 -456 -58 -59) * fixed: 'svnadmin verify' output not in native encoding (issue #1997) * fixed: uuid file in FSFS could be destroyed on write error (issue #2193) * fixed: FSFS path encoding bug (r17774) * fixed: don't crash on corrupt repositories (r17625) * fixed: expect error output from hook scripts in native encoding (r17101) * fixed: catch errors starting hook scripts (r16891 17041 -81) * fixed: svnserve and authz can cause broken WCs (issue #2566) * fixed: the default hook script templates should be vanilla sh (r20796) - Both: * delta compression improvements: - new delta encoding reduces size (r18363 -94 -66 -78 -98 -99 -457 -950) - xdelta algorithm speed improvements (r18986, 19047) * don't bail on invalid locale (r19445) * improve speed of non-verbose svn ls (r17067 -71) * fixed: delta combiner reading past EOF (r17743) Developer-visible changes: * require APR >= 0.9.7 to improve error detection for FSFS repos (r19915) * require zlib, for svndiff1 delta encoding (r18363) * support SWIG 1.3.29 (r19968) * support autoconf 2.60-dev (r19919 20632 -36) * removed no-longer-supported Red Hat 7.x RPMs (r20462) * add support for building RPMs for x86-64 architecture (r20548 -552) * numerous improvements to gen-make.py build system, especially on win32 * removed Visual Studio.NET APR 0.9 project files (r20170) * numerous improvements to the test suite * new public APIs: - keyword / eol translation helpers and generic streams (see svn_subst.h) - new generic stream helpers (see svn_io.h) - authn providers made available to other clients (see svn_auth.h) - svn_cmdline_setup_auth_baton - svn_dso_initialize, svn_dso_load - svn_client_diff_summarize and svn_client_diff_summarize_peg - svn_client_list - svn_config_has_section - svn_txdelta_compose_windows and svn_txdelta_apply_instructions - svn_txdelta_stream_create - svn_diff_file_options_create and svn_diff_file_options_parse - svn_err_best_message - svn_compat_wrap_commit_callback - svn_uuid_generate - svn_user_get_name and svn_user_get_homedir - svn_io_get_dir_filenames - svn_ra_reparent - svn_ra_replay - svn_wc_revision_status - several rev'd APIs, see doxygen docs * flush stdout after each status/notification line (r19476 -656) * new (experimental) ra_serf repository access module for pipelined DAV * .svn/entries use a less verbose non-xml format (r19420) * make recursive 'svn ls' streamy (issue #1809) * remove svn-config script * empty-file and README.txt removed from WC admin areas (r17181 -268 -364) * replace cmdline client XML DTDs with RNG schemas (r16379 -80 -93 -571 17248) * fixed: log --limit against old svnserve leaves unusable session (r19638) * fixed: Solaris build problems (r19636) * fixed: blame of WORKING revision shouldn't give BASE (r19558) * fixed: svn_client_copy and _move should fail if target exists (issue #2188) * fixed: svn_io_file_rename and readonlyness on Windows and UNIX (r17366 -69) * fixed: ra_dav memory leak when reusing session (issue #2247) * fixed: console character encoding problems when built with VS2005 (r20108) * fixed: various problems with --enable-dso and global pools (r20996, r20999) * fixed: installer file syntax error in new versions of Inno Setup (r21022) * SWIG bindings: - SWIG/python bindings: - new support for svn_client_info (r19413) - SWIG/ruby bindings: - full support for Subversion 1.4 APIs, including : svn_ra_replay and svn_diff_summarize - numerous bug fixes - add ruby documentation (make install-swig-rb-doc) (r20166) - add APIs for adding a provider (r21079) - SWIG/perl bindings: - new support for svn_client_info (r18758) - minor corrections to SVN::Fs (r19312) * javahl bindings: - APIs to get version info for the native libraries (r17604 -07) - API for path validation (r18989, r19079) - C++/Java code refactoring, cleanup, and consolidation - fixed: handle possible errors from date/time conversions (r17213) - fixed: SVNClient username/password JVM crash on null input (r19803 -13) - fixed: specify default UUID load action (r18030) - fixed: compile error on Visual Studio 2005 (r18054) Version 1.3.2 (23 May 2006, from /branches/1.3.x) http://svn.apache.org/repos/asf/subversion/tags/1.3.2 User-visible changes: - Client: * fixed: 'svn st -u' crash on missing subdirs (r19348, -71, issue #2551) * fixed: leaving stray working copy locks on cancellation (r18893) * fixed: svn_load_dirs.pl trying to import .svn and _svn dirs (r18549) * svn_load_dirs.pl symlink support (issue #2478) * translation updates to Japanese, Traditional Chinese. - Server: * fixed: mod_dav_svn memory leak when listing large dirs (r19528) * fixed: mod_dav_svn crash on valid request (r19520) * fixed: svnserve protocol error in lock, causing client hang (issue #2548) * mailer.py: add Content-Transfer-Encoding header (r19319) * mailer.py: fixed: named substitutions incorrectly ignored (r18114, -681) * fixed: authz requires read access for root for writes (issue #2486) * svnauthz-validate: add config file validation tool (r18504, -09) Developer-visible changes: * fixed: tests don't catch repository creation failure properly (r19149,-51) * support SWIG 1.3.28 * support APR 0.9.x >= 0.9.10 (r19039, -57, -60) * python bindings: - fixed: link error on OpenBSD (r18983) * ruby bindings: - fixed: memory leak (r19493) - fixed: NULL argument conversion bug (r19543) Version 1.3.1 (25 March 2006, from /branches/1.3.x) http://svn.apache.org/repos/asf/subversion/tags/1.3.1 User-visible changes: - Client: * fixed: segfault moving unversioned files (issue #2436) * fixed: verbose list broken over ra_dav (issue #2442) * fixed: 'svn ci -m path_name' not requiring '--force-log' (r17956) * fixed: crash on mixed-case https URL scheme (r18042) * fixed: crash in status with ignored directories (r18291) * fixed: strip peg rev from default checkout directory (r18416) * fixed: diff crash with non-recursive checkout (r17231, 18539, -41) * fixed: 'svn ls' URL encoding bug with locks (r18665, -68) * fixed: unlock circumvents lock token check (r18691, -94) * fixed: repos-to-repos copy crash (r18451) * fixed: 'svnmerge' utility improvements (r18811) * translation updates for German, Swedish and Norwegian - Server: * fixed: set svn:date at the end of commit in fsfs (r18078) * fixed: don't wait for hook script background jobs (r18146) * fixed: mod_dav_svn should log the whole error chain (r18211) * fixed: uncomment section headers in repos config files (r18247, -50) * fixed: log scalability issues with many paths (r18395, -404) * fixed: better path input validation in mod_dav_svn (r18660) * fixed: assert in copy in fsfs and bdb (issue #2398) * fixed: RPM package bad interaction with NFS servers (issue #1456) - Both: * fixed: copyright years updated to include 2006 (r18021, -127) Developer-visible changes: * fixed: missing #include (r18065) * fixed: allow building with Neon 0.25.5 (r18215) * fixed: error leaks (18196, -249) * javahl bindings: - fixed: compile error on Visual Studio 2005 (r18054, -55) * python bindings: - fixed: libsvn_swig_py link problem on Solaris 10 (r17910) - fixed: pool lifetime bug (r17992) - fixed: memory leak (r18230) - fixed: race condition during application pool initialization (r18721) - fixed: Make pool parameters optional (issue #2444) * ruby bindings: - fixed: pool management issue (r17795, -811) - fixed: protect baton from garbage collection (r17627) - fixed: conversion bug (r17726, -925) - fixed: compile errors with SWIG 1.3.24 (r18456, -58) Version 1.3.0 (30 December 2005, from /branches/1.3.x) http://svn.apache.org/repos/asf/subversion/tags/1.3.0 User-visible changes: - Client: * 'svn ls -v' now shows remote locks (issue #2291) * 'svn status' speedup (r15061, r15103) * 'svn blame' speedup on files with long history (issue #1970) * 'svnversion' now assumes default argument of '.' (r14892) * support for neon 0.25.x, which fixes http:// control-c bug (issue #2297) * support for more ISO-8601 date formats, compatible with GNU date (r14428) * support for single-digit date components (r15459) * on Windows, '_svn' admin dir now toggled by runtime env. variable (r16244) * working copy size with empty propfiles reduced (r16855, see releasenotes) * new switches added: - 'svn blame --xml [--incremental]' (r14690) - 'svn status --xml [--incremental]' (issue #2069) - 'svn info --xml [--incremental]' - 'svn add/import --no-ignore' (issue #2105) - 'svnlook tree --full-paths' (r13976) - 'svnlook diff --diff-copy-from' (r14855) - 'svnlook changed --copy-info' (r16681) * fixed: 'svn copy wc URL' might include deleted items (issue #2153) * fixed: 'svn copy wc wc' allows cross-repository copies (issue #2404) * fixed: 'svn up/merge' major property-merging bugs (issue #2035) * fixed: 'svn merge' insisting on write access to '.' (issue #2411) * fixed: 'svn merge' cross-device move problems (r16293, -329, -330) * fixed: 'svn diff' outputs headers in wrong encoding (issue #1533) * fixed: 'svn proplist/add/cat' dies on unversioned items (issue #2030) * fixed: 'svn add' not honoring svn:ignore property (issue #2243) * fixed: 'svn log -rN:M --limit X' error over http:// (issue #2396) * fixed: 'svn switch --relocate' failure on 'deleted' dir (r16673) * fixed: 'svn info' not always showing repos lock (issue #2276) * fixed: 'svn info' might show lock on wrong path (r16626) * fixed: 'svnlook' chokes on logs with inconsistent newlines (r14573) * fixed: 'svnlook propget --revprop -t' failure (r15203) * fixed: 'svnversion' wrongly traverses into externals (r15161) * fixed: incorrect URI encoding passed to svn+ssh:// (issue #2406) * fixed: properly handle filenames containing '@' (issue #2317) * fixed: '--non-interactive' now suppresses launch of $EDITOR (r15277) * fixed: conflict markers not in current encoding (r14621) * fixed: commands ignoring extraneous -m or -F switches (issue #2285) * fixed: poor error-checking when using revprops (r15542) * fixed: stack-smashing bugs (r15948, r16037) * fixed: incorrect parsing of mod_dav_svn XML responses (r17589) * translation updates for all languages - Server: * svnserve improvements: - can now restrict read/write access by path (see releasenotes) - undeprecation of the --read-only (-R) option (r17614) * mod_dav_svn improvements: - 'SVNListParentPath on' shows all repositories in web browser (r16158) - ability to log high-level client operations (see releasenotes) - sets svn:mime-type on autoversioning commits (r14359) * 'svn log' performance improvement (r14722) * fixed: fs history algorithm might return wrong objects (issue #1970) * fixed: repos deadlock when hooks output too much (issue #2078) * fixed: mod_dav_svn displays errors with sensitive paths (r14792) * fixed: anonymous reader could create empty commits (issue #2388) * fixed: possible segfault to callers of trace_node_locations() (r16188) * fixed: BDB-style locking actions on FSFS repositories (r16295, r16297) * fixed: numerous bugs running BDB commands on FSFS (issue #2361, r16388) * fixed: svndumpfilter incorrectly remapping dropped revs (issue #1911) - Both: * faster multiple (un)locks in a single svn:// request (issue #2264) * the Subversion Book is no longer bundled (r17466) Developer-visible changes: * reorganization of automated tests, including ability to run on ramdisk * lots of Doxygen/API documentation cleanup * numerous improvements to gen-make.py build system, especially on win32 * working copy is now storing repos_root as separate field (issue #960) * keywords are now stored in an internal hash (issue #890) * client status APIs now makes more server-side info available (r16344) * new public APIs: - new transfer progress callback for DAV (r15948) - svn_ra_initialize(), svn_client_open_ra_session() - svn_fs_closest_copy(), svn_fs_type() - several rev'd APIs, see doxygen docs * SWIG bindings: No more compile-time or runtime SWIG dependencies - SWIG/python bindings: - automatic memory management: APIs no longer require pool arguments! - improved stability, as shown by our new testsuite - better error messages - SWIG/ruby bindings: - complete API coverage! - automatic memory management - greatly expanded test suite - SWIG/perl bindings: - new accessors for svn_lock_t, svn_fs_access_t - a number of bugfixes * javahl bindings: - add streamy API for fetching file contents (r15584) - fixed: let tests run before bindings are installed (issue #2040) - fixed: lock command not raising errors properly (issue #2394) - fixed: ignored errors from svn_client_blame2() (r16434) Version 1.2.3 (19 August 2005, from /branches/1.2.x) http://svn.apache.org/repos/asf/subversion/tags/1.2.3 User-visible changes: - Client: * fixed: 'svn status -u' fails against pre-1.2 mod_dav_svn (r15359, r15423) * fixed: 'svn export' segfault (r15516) * fixed: 'svn merge' memory leak (r15233) * fixed: horrible rename-tracing performance against 1.0 servers (r15315) * fixed: 'svn cat' over file:// -- small leak (r15253) * fixed: crash with "svn lock" and authentication (r15703) * improvements to 'svnmerge' utility (r14008,-458,-587,-632, r15329,-340) * translation updates for French, German, Polish, Norwegian, Swedish, Korean - Server: * fixed: mod_authz_svn being overly restrictive (r15463) * fixed: fsfs directory caching bug (r15705, r15742) - Both: * fixed: crash when >50 options passed to any commandline app (r15251) * fixed: memory leak in character translation handle caching (r15379,-398) Developer-visible changes: * fixed: crash when calling svn_client_(un)lock with no targets (r15734) * rhel-4 RPM bugfix for python bindings (r15616) * missing #include in SWIG bindings (r15683) * javahl bindings: - fixed: JNI library loading bug (r15552) - fixed: JNI stack-name cut and paste error (r15337) - fixed: crash when revisions have no dates (r15737) * perl bindings: - now compatible with SWIG 1.3.25 (r15248) - allow SVN::Pool to be used as pool parameter (r15450) - make SVN::Delta::Editor friendlier for debugging (r15609) - fixed: wrap svn_ra_stat properly (r15713) - fixed: bug in SVN::Core::Stream's read function (r15698, r15700) * ruby bindings: - now compatible with SWIG 1.3.25 (r14980, r15361) Version 1.2.2 (Not released, see changes for 1.2.3.) Version 1.2.1 (5 July 2005, from /branches/1.2.x) http://svn.apache.org/repos/asf/subversion/tags/1.2.1 User-visible changes: - Client: * fixed: 'svn lock' on switched file locks wrong thing (issue #2307) * fixed: 'svn (un)lock' errors on multiple targets (r14736, 14775) * fixed: 'svn (un)lock' problems with URI-unsafe names (issue #2314) * fixed: 'svn (un)lock' not caching authentication (r15088) * fixed: 'svn unlock' loses executable bit (r14859, r14923, r14939) * fixed: 'svn unlock URL' segfault (r14893) * fixed: 'svn commit' failure on XML-unsafe locked paths (issue #2335) * fixed: recursive directory copy bug (issue #2343) * fixed: don't initialize RA library in 'svnversion' (r14755) * fixed: svn-push segfault (r14732) * various translation updates for localized client messages - Server: * fixed: 'svn log' performance regression, general (r14116, 14772, 14759) * fixed: 'svn log -v' performance regression, FSFS-specific (r15016) * fixed: mod_dav_svn bug sets content-type incorrectly (r15046) Developer-visible changes: * fixed: win32 innosetup's add/repair/remove features (r14830) * fixed: OBOE with 'limit' parameter of svn_repos_get_logs3(). (r15119) * redhat RPM fixes (r15050) * perl bindings: - accessors for svn_lock_t (r15082) - call utf_initialize, adjust global pool usage (r15076, r15080, r15081, r15117) Version 1.2.0 (21 May 2005, from /branches/1.2.x) http://svn.apache.org/repos/asf/subversion/tags/1.2.0 See the 1.2 release notes for a more verbose overview of the changes since the 1.1 release: http://subversion.apache.org/docs/release-notes/1.2.html User-visible changes: - Client: * add peg-rev syntax to co/blame/cat/ls/pget/plist/export (issue #1093) * 'svn info' now works on URLs (r13123, 13144) * 'svn* --version' now shows available repository back-ends (r13761) * new fixed-length keywords (for placement in binary files) (issue #2095) * on Windows, disk-cached passwords are now encrypted (r13888) * performance improvements: - 'svn status' does much less disk parsing (r11677, 11704) - 'svn st -u' no longer asks server to generate textdeltas (issue #2259) - 'svn revert -R' doing much less work (r13883) - utf8<->native conversions are faster now (issue #2016) * new switches added: - 'svn commit --no-unlock - retain lock in wc upon commit - 'svn log --limit N' - show only first N log messages - 'svn info --revision' - show info on older object (r13265) - 'svn list --xml' - output listing in XML - 'svn propset --force' - allow unusual propsets (#2065) - 'svn diff --force' - show diffs on binary files (#2099) - 'svn co/up/st --ignore-externals' - skip over externals (#2189) - 'svn export --non-recursive' - don't export subdirs (issue #2228) - 'svnversion --help' - show help (r13128) * fixed: 'svn merge' fails to add symlinks or expand keywords (issue #2064) * fixed: 'svn merge --dry-run' shows spurious 'skip' messages (issue #1943) * fixed: 'svn merge' file-not-found' error (issue #1673) * fixed: 'svn merge' of propchanges into deleted file (issue #2132) * fixed: 'svn merge' on implicit target with space (r13010) * fixed: 'svn merge/diff URL URL' can cause httpd timeout (issue #2048) * fixed: 'svn switch/update' failure might corrupt wc (issue #1825) * fixed: 'svn up' should rm before add, helps case-insensitivity (r12616) * fixed: 'svn up -rX' causes file to be unrestorable (issue #2250) * fixed: 'svn copy wc wc' should keep .svn/ hidden (issue #1739) * fixed: 'svn copy wc wc' of deleted=true doesn't delete (issue #2101) * fixed: 'svn copy' shouldn't copy into schedule-delete area (issue #2020) * fixed: 'svn copy dir dir' infinite recursion (issue #2224) * fixed: 'svn log' throws error on unversioned target (issue #1551) * fixed: 'svn log' in r0 working copy shows r1 log msg (issue #1950) * fixed: 'svn export' bugs on deleted dirs or nonexistents (#2226, r13226) * fixed: 'svn export' on single file from working copy (issue #1708) * fixed: 'svn import' creating an empty revision (r14293) * fixed: 'svn commit' ignores --encoding when editing externally (#2244) * fixed: 'svn commit' log message lost if utf8-conversion failure (r13230) * fixed: 'svn diff' output encoding bug (r11461) * fixed: 'svn diff' showing prop-diffs on repos root dir (r13381-2) * fixed: 'svn diff' label reversal (issue #2033) * fixed: 'svn propget' prints extra newline in --strict mode (r14505) * fixed: 'svn propset' should skip unversioned files (#2030) * fixed: 'svn rm URL1 URL2 URL3...' huge memory usage (issue #2218) * fixed: 'svn mkdir' cleanup after failure (r11883) * fixed: 'svn status -u' crash in non-recursive wc's (issue #2122) * fixed: 'svn revert' should skip unversioned items (issues #2030, 2133) * fixed: 'svn revert' should suggest --recursive (issue #2114) * fixed: 'svn add/import' better detects invalid paths (issue #1954) * fixed: 'svn cleanup' should repair timestamps (r12012) * fixed: 'svn cat -rBASE' contacts repository (issue #1361) * fixed: fuzzily escape control-characters when sending over dav (#2147) * fixed: prevent client from manipulating svn:wc:* properties (r12523) * fixed: allow portnumber in svn+ssh://user@host:port/ URLs (r14373) * fixed: xml-escaping bugs over dav (r11090) * fixed: store symlinks as utf8, always work in non-utf8 locale (r11358-9) * fixed: bug in special-file detranslation (r11441) * fixed: show paths in local-style where we weren't (issue #1538) * fixed: detect invalid propnames better (issue #1832) * fixed: entire error stack not being printed (issue #1822) * fixed: improper utf8 conversion of revision strings (issue #1999) * fixed: use-commit-times timestamp bug (r12906) * fixed: don't comment out section-names in default config file (r11771) * more support for user-cancellation (r13083-4, 13086) * improved error messages (r12920, 11392, 11599, 11913, #2154, #2214) - Server: * mod_dav_svn autoversioning feature now complete (see release notes) * 'svnadmin create' now creates FSFS repositories by default (r13624) * new pre/post-revprop hook argument to describe propchange (r12162) * mod_authz_svn groups can now contain other groups (issue #2085) * 'svnadmin recover' now creates default svnserve passwd file (r11589) * increase default BDB cache size in DB_CONFIG (r13030) * new switches added: - 'svnlook diff --no-diff-added' - suppress added files (#2180) - 'svnlook propget/proplist --revprop' - show revision props (#2181) - 'svnadmin load --use-pre-commit-hook' 'svnadmin load --use-post-commit-hook'- invoke hooks when loading * fixed: FSFS race condition on posix platforms (issue #2265) * fixed: change FSFS revprops atomically and safely (issue #2193) * fixed: FSFS should verify checksums (issue #2253) * fixed: FSFS crash bug (r14333) * fixed: 'svnadmin create' should clean up when it fails (r13200) * fixed: 'svnadmin load' compatibility on pre-0.14 dumpfiles (r12075) * fixed: 'svnadmin load' crashes on contentful rev 0 (issue #1674) * fixed: 'svnadmin dump' should write in console encoding (issue #1997) * fixed: check for null-streams in dump/load code (r10510) * fixed: hook script ignored when symlink is broken (issue #1700) * fixed: hook script may inherit server's stdin stream (r12155) * fixed: potential svnserve segfault (r13199) * fixed: svnserve handling mutually-exclusive options (issue #2251) * fixed: mod_authz_svn should log errors to httpd errorlog (issue #2182) * fixed: 'svnadmin hotcopy' failed to copy format files (r14678, r14683) * mailer.py: add win32 compatibility, plus other bugfixes - Both: * new 'locking' feature (issue #1478, see release notes for details): - new: 'svn lock/unlock', 'svnadmin lslocks/rmlocks', 'svnlook lock' - new: 'svn:needs-lock' property to enable communication - 'svn st [-u]' shows local or remote lock overview - 'svn info wc | URL' shows local or remote lock details - 'svn commit' sends locks, 'svn up' removes stale locks - new hook scripts: pre-lock, pre-unlock, post-lock, post-unlock * speedups for 'svn blame' and other commands (see xdelta in release notes) * fixed: make both svnserve and svn:// urls work with IPv6 (r13235-6) * fixed: updating xml-unsafe dirname over http (issue #2268) * new translation of localized messages: French * continued improvement of localized message translations: - German, Spanish, Polish, Brazilian Portuguese, Norwegian Bokmål, Swedish, Traditional Chinese, Simplified Chinese, Korean, Japanese - more localized messages in all svn-related binaries Developer-visible changes: * binary diff algorithm now defaults to xdelta instead of vdelta * huge number of new APIs: - new locking APIs in svn_client.h, svn_ra.h, svn_repos.h, svn_fs.h - new 'flattened' svn_ra.h API, which imitates svn_fs.h (issue #1931) - new notification API in svn_client.h, svn_wc.h - http://svn.haxx.se/dev/archive-2005-04/0319.shtml has all API changes * fs now has its own 'format' file, independent of repos 'format' (r13387) * improve efficiency of delta combining algorithm (r13016, r13063) * make all BDB apis take explicit pool parameters (r13198, r13205) * remove libsvn_fs_base caching of node revisions (r13299) * libsvn_repos commit editor can now take incoming txn (r13733) * fixed: mod_dav_svn sending illegal editor-drive (issue #2258) * pool usage improvements (r12954, 12852, r13386, issue #1310) * SWIG bindings: better API coverage overall. - new ruby bindings! - remove bitrotting swig-java bindings - perl and python bindings: numerous improvements, see their own logs. - bindings tests now within svntest framework * javahl bindings: numerous improvements, see its own logs. * many improvements to mailer.py and commit-email.pl * rewrite/improvements to gen-make build system, including VS.NET support * many improvements to the automated python testsuite (issue #2257) * book moved to separate repository (http://svn.red-bean.com/svnbook) Version 1.1.4 (1 April 2005, from /branches/1.1.x) http://svn.apache.org/repos/asf/subversion/tags/1.1.4 User-visible changes: - Client: * fixed: win32 not ignoring versioned symlinks (issue #2173) * fixed: 'svn merge' can cause broken working copy (issue #2222) * fixed: 'svn commit' fails when schedule-delete dir has local mod (r11980) * fixed: 'svn st -u nonexistent_file' segfault (issue #2127) * fixed: 'svn cp wc wc' utf8 conversion error (r13111) * fixed: confusing error message about "wc not locked" (issue #2174) * many translation updates for localized client messages - Server: * fixed: nasty (though unusual) performance bug in FSFS commits (r13222-3) * fixed: FSFS memory leak when auto-merging large tree (r13193) * fixed: FSFS memory leak in 'svnadmin hotcopy' (r13218, 13465, 13468) * fixed: FSFS segfault when encountering empty data reps (r13683) * fixed: two dataloss bugs in svndumpfilter (r12630, r12636) * fixed: wasteful memory usage in svndumpfilter (r12637, r12640) * fixed: mod_dav_svn segfaults when client sends bogus paths (issue #2199) * make mailer.py work on win32 (r12499, r12542, r12670) - Both: * fixed: (win32) retry file operation if sharing violation (r12983, r12986) Developer-visible changes: * add SWIG 1.3.24 and .25 compatibility (r12551, r12717-9, r12722, r13504) * fixed: JavaHL run-time link error (r12576), path/url cleanups (r13090) * fixed: python bindings log_receiver failure with SWIG 1.3.24 (r13487) * build system tweaks: add install dependencies for fs & fs_base (r11050) Version 1.1.3 (14 January 2005, from /branches/1.1.x) http://svn.apache.org/repos/asf/subversion/tags/1.1.3 User-visible changes: - Client: * translation updates for localized client messages. Developer-visible changes: * Fix a compile error in the Perl bindings. Version 1.1.2 (20 December 2004, from /branches/1.1.x) http://svn.apache.org/repos/asf/subversion/tags/1.1.2 User-visible changes: - Client: * fixed: 'svn switch' interruption can break working copy (issue #1826) * fixed: 'svn switch' memleak over ra_dav (issue #2106) * fixed: 'svn blame' algorithm bug (r11527) * fixed: invoke external diff/diff3 with local-style paths (r11689) * fixed: 'svn status' handling of missing subdirs (r11936) * fixed: 'svn ls -v' encoding bug (r11740) * fixed: 'svn ls "file with space"' bug (r12273, r12393) * fixed: 'svn merge' should URI-encode copyfrom URLs (issue #1905) * fixed: 'svn merge' deletion output formatting (r12100, r12111, r12114) * fixed: 'svnversion --version .' crash (r11438) * fixed: UNC paths on Cygwin (issue #2108) * fixed: win98 iconv bug -- uninitialized variable (issue #2091) * improved 'svn status' performance: - do fewer check_path calls (r11592) - 'svn status file' shouldn't recursively lock tree (r11439, r11669) * translation updates for localized client messages. - Server: * fixed: 'svnadmin load' race condition (r12327) * fixed: fsfs memleak in commit finalization (r11706) * fixed: fsfs memleak in inefficient directory removal (r11701) * fixed: fsfs commits use insert-only perms on db/revs/ (r11665) * fixed: fsfs creates lockfile at creation time, not at 1st commit (r12172) * fixed: svndumpfilter mislabeling output as version 3 (issue #2142) * fixed: 'svnserve -h' encoding bug (part of issue #1997) * fixed: prevent cross-repository copies (r12003) * fixed: increase log-region max size in default DB_CONFIG (issue #2159) - Both: * fixed: 'svn switch' quietly corrupting working copy (issue #2124) * fixed: canonicalize paths sent by ra_svn/svnserve (issue #2119) * fixed: memleak into UTF8 translation routines (r11689) Developer-visible changes: * add support for BerkeleyDB 4.3 (if using a compatible apr-util) * add support for any apr/apr-util 1.X * disallow incompatible SWIG versions (r12450) * fixed: slight API/ABI incompatibility between 1.0.9 and 1.1.x (r12102) * fixed: perl bindings pool usage & object refcounts (r11451, r11630) * fixed: perl bindings pool usage and potential memleak (r12397) * fixed: javahl crash trying to fetch nonexistent property (r12184) * fixed: javahl build can fail due to missing dirs (issue #2032) * fixed: RPM build breakage (issue #2111) * fixed: i18n issues for windows installer (r11685) * allow build system to update single .po file (r11763) Version 1.1.1 (22 October 2004, from /branches/1.1.x) http://svn.apache.org/repos/asf/subversion/tags/1.1.1 User-visible changes: - Client: * fixed: 'svn status' win32 performance regression (issue #2016) * fixed: 'svn ls' dying on non-ascii paths over DAV (issue #2060) * fixed: allow URI-encoded colon or pipe on win32 (issue #2012) * fixed: broken win32 UNC paths (issue #2011) * fixed: memory bloat when committing many files over DAV (r11284, -321) * fixed: eol-style translation error for 'svn propget' (r11202, -243) * fixed: 'svn propedit' does EOL conversion properly (issue #2063) * fixed: 'svn log --xml' shouldn't be locale-dependent. (r11181) * fixed: 'svn export' of symlinks with 'use-commit-times' (r11224) * fixed: 'svn export -rBASE' when WC has added items (r11296, -415) * many translation updates for localized client messages. - Server: * fixed: 'svn ls' HTTP performance regression (r11211, -232, -285) * fixed: make it possible to set "SVNPathAuthz off" in httpd.conf (r11190) * fixed: fsfs validating revisions when accessing revprops (issue #2076) * fixed: 'svn log -v' hiding too much info on 'empty' revisions. (r11137) * fixed: encoding bug with 'svnlook log'/'svnlook author' (r11172) * fixed: allow mod_authz_svn to return '403 Forbidden', not 500 (r11064) * fixed: XML-escape author and date strings before sending (issue #2071) * fixed: invalid XML being sent over DAV (issue #2090) Developer-visible changes: * fixed: IRIX compile error (issue #2082) * fixed: error in perl bindings (r11290) * fixed: error leaks in mod_dav_svn (r11458) * fixed: javahl should use default config directory (r11394) Version 1.0.9 (13 October 2004, from /branches/1.0.9) http://svn.apache.org/repos/asf/subversion/tags/1.0.9 User-visible changes: - Server: * fixed: 'svn ls' HTTP performance regression (r11211, -232, -285) * fixed: 'svn log -v' hiding too much info on 'empty' revisions. (r11137) Developer-visible changes: * fixed: make redhat 7/8 rpm scripts build the book correctly (11143) Version 1.1.0 (29 September 2004, from /branches/1.1.x) http://svn.apache.org/repos/asf/subversion/tags/1.1.0 See the 1.1 release notes for a more verbose overview of the changes since 1.0.x: http://subversion.apache.org/docs/release-notes/1.1.html User-visible changes: * new non-database repository back-end (libsvn_fs_fs) * symlinks can now be placed under version control (unix systems only) * cmdline client now supports psuedo-IRIs and autoescapes chars (issue #1910) * 'svnadmin recover' no longer waits forever for a lock (new '--wait' option) * new $Revision$ synonym for $Rev$ and $LastChangedRevision$ * new runtime option 'store-passwords = ' gives finer control (r10794)x * fixed: working copies now shareable by multiple users (issue #1509) * fixed: diff and other subcommands correctly follow renames (issue #1093) - new 'peg' syntax for diff/merge: 'svn diff -r X:Y TARGET@REV' - now able to compare working copy with URL: 'svn diff --old WC --new URL' * new framework for localized error/info/help messages, initial translations: - German, Polish, Swedish, Norwegian Bokmål, Traditional Chinese, Japanese, Brazilian Portuguese. * speed improvements: - faster 'svn up' on complex working copies -- no more repos txns (r8840) - faster 'svn status' -- fewer stat() calls (r9182) - faster 'svn checkout' -- fewer sleep() calls (r9123) - faster 'svn blame' -- new RA->get_file_revs() func (issue #1715) * new switches added: - 'svn blame --verbose' - show extra annotation info - 'svn export --native-eol TYPE' - export using TYPE line-endings - 'svn add --force' - recurse into version-controlled dirs - 'svnadmin dump --deltas' - include binary diffs in dumpfile - 'svnadmin create --fs-type fsfs' - create fs_fs repos (default is bdb) - 'svnserve --tunnel-user=NAME' - assume authenticated NAME over tunnel - 'svndumpfilter [cmd] --quiet' - less chatty dumpfiltering - 'svnserve --version' - show program's version 'svnversion --version' 'svndumpfilter --version' * svnadmin dump/deltify now understand -r{DATE} (r9805) * allow update of non-existent target entry (partial issue #1902 fix) * 'svnadmin create' now sets sgid bit on repos/db/ (unix systems only) * increase default neon (ra_dav) timeout from 120 to 3600 seconds (r9568) * print verbose BDB error messages (r10557, r10566) * fixed: don't bail when 'svn up' refuses to delete local mods (issue #1806) * fixed: process svn:externals in defined order (issue #1788) * fixed: pass new propval to stdin of pre-revprop-change hook (issue #952) * fixed: svndumpfilter logic/memory/display bugs (r8691, 8831, 9061) * fixed: 'svnadmin hotcopy PATH .' (r8659) * fixed: copy crash bug (r8863) * fixed: 'svn st -u' crash bug (r10841) * fixed: 'svn commit' segfault (r10676) * fixed: allow cleanup on .svn/ dirs containing KILLME file (r8891) * fixed: 'svn revert' detects corrupted text-base (r8897) * fixed: 'svn status -N' no longer locks entire tree (r8906) * fixed: several different 'svn switch' bugs (r9192, 9203, 9238, 9698) * fixed: some 'svn copy' bugs (r9193, 9274) * fixed: obscure update-deletion bug (r8976) * fixed: utf8 conversion 'hang' (r9233) * fixed: missing UTF8->native recoding in 'svn log' output (r10652, 10673) * fixed: 'svn blame' now defaults to rev (r9440) * fixed: 'svn blame' closing files before deleting them (issue #1969) * fixed: 'svn diff' shows truncated paths (r9693) * fixed: 'svn diff --notice-ancestry' bug (r9699) * fixed: 'svn subcommand -r{DATE} URL' works if URL not in HEAD (issue #1840) * fixed: 'svn blame' on non-ascii path truncation (issue #1770) * fixed: svn:external 'wc not locked' bug (issue #1897) * fixed: proper mod_dav_svn html/xml escaping (issue #1209) * fixed: memleak in 'svn propset -R URL' (issue #1928) * fixed: stop 'svn up' from deleting schedule-add target dir (issue #1793) * fixed: 'svn merge' adding a directory already 'deleted' (issue #1769) * fixed: excessive memory use when fs deltifies revision 2^N (r10070) * fixed: disallow non-recursive directory commit (issue #1797) * fixed: allow propget of props with colon in name (issue #1807) * fixed: 'svnadmin load' computation of copyfrom-rev (issue #1795) * fixed: runtime config files created with proper line-endings (issue #1803) * fixed: make svnserve's authn work on usernames with spaces (r10385) * fixed: have svnserve use repos UUID as default authn realm (r10394) * fixed: segfault when history-following hits 'empty' revision (r10368) * fixed: overzealous out-of-dateness checks in 'svn cp wc URL' (issue 1994) * fixed: don't URI-encode path in mod_dav_svn XML listings (r10461) * fixed: 'svn info' should refuse URL targets (r10760) * fixed: incomplete-directory handling bug (r10956) * fixed: allow cancellation between files during recursive dir add (r10894) * general improvement and normalization of error messages * many improvements to contributed tools: mailer.py, psvn.el, etc. Developer-visible changes: * libsvn_fs now loads either bdb (libsvn_fs_base) or fsfs (libsvn_fs_fs) * new console-printing API: svn_cmdline_printf() family checks for errors. * new library-version querying API: - new svn_[libname]_version() in each library - svn_ver_*() family of functions * 2nd generation APIs, from svn_foo() --> svn_foo2(). old APIs deprecated. - svn_wc_adm_open2() & friends, svn_wc_export2(), svn_client_add2() svn_wc_parse_externals_description2(), svn_hash_read/write2(), svn_repos_dump/load_fs2() & friends, svn_wc_diff2(), svn_subst_copy_and_translate2() * other new APIs: - svn_stream_copy(), svn_txdelta_target_push(), svn_opt_parse_path(), svn_io_file_flush_to_disk, svn_repos_trace_node_locations(), svn_repos_get_file_revs(), RA->get_locations(), RA->get_file_revs, RA->get_version(), svn_sort_compare_paths(), svn_utf_initialize() * SVN_REVNUM_FMT_T usage replaced with %ld (r9691) * cache mod_authz_svn authz file per connection (r8867) * validate hex digits in % escape (issue #1947) * hashes now written to disk in sorted order (r9910) * do cancellation checks before loops, not after (r8918) * fixed: bug in svn_repos_dir_delta replacement logic (r8078) * fixed: tiny memory access bugs (r8229, 8230, 8313) * fixed: several commit buglets (r8955, 9658, 9757, 9855) * fixed: don't recursively lock all prop commands (r9172) * fixed: svnserve memory usage on many-file commits (r9185) * fixed: close svnserve child's listen-socket after forking (r10050) * fixed: 'svnadmin hotcopy' integrity improvements (issues #1817, #1818) * fixed: only verify media type of svn:mime-type, not encoding (r10126) * fixed: handle '//' and '..' in svn_path_canonicalize (issue #1779) * fixed: double URI escaping (issue #1814) * fixed: editor-driver bug (don't delete before every copy) (r10851) * fixed: potential mod_dav_svn crashes/memleaks (r10478) * fixed: better 'svnadmin verify verification (r10508, r10509) * fixed: encoding of get_repos_url_result (r10353, 10375) * fixed: prevent canonicalized URIs from ending in '/' (r10317) * stop using -std=c89 gcc flag (r11054) * sync with apr 1.0's find_apr.m4 and find_apu.m4 files (r10560) * win32 installer improvements (r10978) * huge improvements to python, perl, java bindings * huge changes to win32 build system Version 1.0.8 (22 September 2004, from /branches/1.0.8) http://svn.apache.org/repos/asf/subversion/tags/1.0.8 User-visible changes: * fixed: mod_authz_svn path and log-message metadata leaks. See CAN-2004-0749, and descriptive advisory at http://subversion.apache.org/security/CAN-2004-0749-advisory.txt Version 1.0.7 (17 September 2004, from /branches/1.0.x) http://svn.apache.org/repos/asf/subversion/tags/1.0.7 User-visible changes: * fixed: win32 'file not found' error [issue #1862] * fixed: 'svn st -u' crash (r10841) * fixed: potential repos corruption; ensure stdin/out/err always open (r10819) * fixed: allow propnames containing ":" to be fetched via http:// (r10190) * fixed: allow user to interrupt between authentication prompts (see r11014) * fixed: work around +t directory-creation bug in APR (r10616, 10638, 10642) * various small fixes to Book Developer-visible changes: * fix library dependencies for bindings (r9338, 9340) * java bindings: fix a crash and other bugs (r9883, 9905, 8027) * perl bindings: various fixes (see r11023) Version 1.0.6 (19 July 2004, from /branches/1.0.x) http://svn.apache.org/repos/asf/subversion/tags/1.0.6 User-visible changes: * fixed: crash in status command, caused by race (r10144) * fixed: crashes when deleting a revision-prop (r10148, r10185, r10192) * fixed: mod_authz_svn allows COPY method on repos with space in name (#1837) * fixed: mod_authz_svn COPY security hole: authorize whole tree (issue #1949) Developer-visible changes: * neon 0.24.7 now required (fixes wire compression bugs) (r10159, 10176) Version 1.0.5 (10 Jun 2004, from /branches/1.0.5) http://svn.apache.org/repos/asf/subversion/tags/1.0.5 User-visible changes: * fixed: security bug in svn protocol string parsing. (CAN-2004-0413) Version 1.0.4 (21 May 2004, from /branches/1.0.x) http://svn.apache.org/repos/asf/subversion/tags/1.0.4 User-visible changes: * fixed: 'svn up' can delete unversioned data on win32 fs (issue #1854) * fixed: pool leaks in 'svnlook diff/changed/dirs-changed' * fixed: insecure script example in pre-commit-hook template * fixed: inability to do a checkout to '/' * officially recommend neon 0.24.6 in all docs. Developer-visible changes: * fixed: RPM build for Fedora & WBEL3/RHEL3 * fixed: SWIG-java building problem * fixed: javahl bug which can crash JVM * fixed: change formatting codes in svn_swig_pl_callback_thunk * fixed: properly wrap svn_txdelta_parse_svndiff for perl Version 1.0.3 (19 May 2004, from /branches/1.0.3) http://svn.apache.org/repos/asf/subversion/tags/1.0.3 User-visible changes: * fixed: security bug in date parsing. (CAN-2004-0397) Version 1.0.2 (15 April 2004, from /branches/1.0.x) http://svn.apache.org/repos/asf/subversion/tags/1.0.2 User-visible changes: * fixed: segfault when remotely deleting svn:author property. * fixed: mod_dav_svn accepting too many authors. (issue #1786) * fixed: create runtime config files with native EOLs. (Issue #1802) * fixed: recursive propset can corrupt .svn/entries (issue #1794) * fixed: allow shared working copies [mostly working now] (issue #1509) * fixed: mod_authz_svn should ignore uri on MERGE request (partial #1821) * fixed: svnserve assertion failure on empty error messages * fixed: commit/update memory leaks when working on many targets (issue #1635) * fixed: don't display repos-paths or URLs with '\' on win32. * new example script: svnserve 'sgid' wrapper. * minor book fixes, new 'best-practices' doc. Developer-visible changes: * fixed: deprecation warning from SWIG 1.3.20_ * fixed: broken win32 python-swig bindings compilation. * fixed: bug in libsvn_fs changes-table change-folding code. * fixed: perl bindings: wrap root->paths_changed, apply_txdelta return values * added VC7 support and defines for including debug symbol files. Version 1.0.1 (12 March 2004, from /branches/1.0.x) http://svn.apache.org/repos/asf/subversion/tags/1.0.1 User-visible changes: * allow anonymous access checking in mod_authz_svn * fixed: mod_authz_svn now works with SVNParentPath (issue #1588) * fixed: potential segfault in mod_dav_svn. * fixed: improper BDB cursor shutdown in libsvn_fs, which can wedge repos. * fixed: allow checkout of repository with space in path. (issue #1694) * fixed: make 'svn propget URL' work correctly over svn://. (issue #1752) * fixed: failed 'svn merge URL' when URL contains user@host. (issue #1759) * fixed: invalid REPORT response when updating a deleted wc. (issue #1721) * fixed: allow deletes below copied wc dirs. * fixed: merge --dry-run bug on added-files with props. (issue #1738) * fixed: svnlook no longer requires write access to '.' * fixed: ensure 'svn blame' fails on files marked as binary. (issue #1733) * fixed: make failed direct-URL commits clean up their fs txns. (issue #1726) * fixed: obscure bugs in time/date string formatting. (issue #1692) * fixed: svn export doesn't export svn:externals. (issue #1750) * fixed: svn import doesn't handle EOL or keyword translation. (issue #1756) * fixed: svn status -v shows unwanted status of externals (issue #1741) * fixed: allow revert of schedule-replace file that has no props (issue #1775) * fixed: svnserve segfault on invalid --listen-host argument. * fixed: switch bug which caused wrong URL to be left in wc. * detect invalid UTF8 filenames when native locale is UTF8. * improve presentation of directory property conflicts. * improve presentation of errors from svnadmin & svnlook. * clarify output of 'svnadmin help deltify'. * augment copyright notice to --version output. * more book updates. Developer-visible changes: * remove obsolete auth provider examples. * prevent potential ra_dav commit race-condition. * fix svn_io_dir_walk 'dot-first' ordering required by 'svnadmin hotcopy'. * fix error leaks in dav_svn_convert_err() * upgrade win32 innosettup tools and redhat RPMs. * fix compile warning: compressed streams on LP64 architecture. * use cpio to generate tarballs instead of GNU tar. * tweaks to dist.sh. * fix bindings on win32. * fix perl bindings build on OS X. * fix perl bindings: bug which rejects string revnums. Version 1.0.0 (branching 23 February 2004, from /branches/1.0.x) http://svn.apache.org/repos/asf/subversion/tags/1.0.0 User-visible changes: * fixes to the shbang lines in tools/hook-scripts/. * vast improvements to cvs2svn.py (NOTE: now a separate project!) * general documentation cleanup: - clarify built-in help text for 'svn switch' and 'svn status'. - fix docs within the hook templates. - cleanups to README, INSTALL, HACKING, svn-ref.tex, bash_completion. - bring www/ pages up-to-date for 1.0. - many changes to the Book Developer-visible changes: * updates to the win32 installer packaging code. * cleanups to SWIG bindings: - disable svn_io_* functions. - svn_filesize_t and apr_time_t fixes. - remove debugging print statements and various warnings. - make svn_repos_dir_delta() function correctly - add support for repos authz callback. Version 0.37.0 [Beta Interim 2] (branching 24 January 2004, from /branches/1.0-stabilization) http://svn.apache.org/repos/asf/subversion/tags/0.37.0 User-visible changes: * bugfix: buffer overflow for AIX client * 'svn merge' now notices ancestry by default. (r8390) * bugfix: double Ctrl-C on windows no longer wedges repository. * New date formats (see API change: Rewrite of date parser below) * bugfix: Errors in authentication when --no-interactive is turned on (r8139) * bugfix: Fix some 'access denied' errors on Windows (r8341, r8352) Developer-visible changes: * API change: Rewrite of date parser (r8327, r8328, r8329) (issue #408) * bugfix: svn_fs__bdb_changes_fetch() fouls up change ordering (issue #1695) * require SWIG >=1.3.19 (issue #1690) * numerous changes to language bindings, to keep up with C API. * fix: apr build issues (r8279, r8280, r8318) (issue #1666) * changed the auth-provider C API to use 'realmstring' on all funcs * check the ra plugin ABI versions. * fix: ABI problem with blame. (r8494) (issue #1705) * remove svn_io_file_printf from public API. (r8492) (issue #1653) * extensive changes in the perl client bindings. (r8270) * too many big and small internal code cleanups and fixes to mention here Version 0.36.0 [Beta Interim 1] (branching 13 January 2004, from /branches/1.0-stabilization) http://svn.apache.org/repos/asf/subversion/tags/0.36.0 User-visible changes: * add cancellation support to svnadmin and svnlook (r8222) * runtime 'store-password' option renamed to 'store-auth-creds' (r8014) * 'svn blame' changes: - now shows correct revision info (r8035-6) - responds to cancellation better (r8129) * svnserve changes: - added '--inetd' option; now required to speak with stdin/stdout (r8205) - added '--listen-port' and '--listen-host' options (r8001-2) - removed '-u' option (r8003) - ignore SIGPIPE (no more repos lockups when you terminate a pipe) (r8140) * lots of Book work (many newly-documented Apache and svnserve topics) Developer-visible changes: * bugfix: svnserve network crash (r8142) * bugfix: return result_rev from svn_client_checkout correctly (r8096) * bugfix: fs history harvesting code (r8154) * bugfix: memory leak in mod_dav_svn (r8223) * bugfixes in edge-cases of status and update (r8114-5) * make 'svn blame' work with 18n and uri-escaped filenames (r8023, 8030, 8040) * small bugfixes to authentication system (r8006, r8235) * standardize error message formatting (r8218) * load RA modules as foo.so.0, not foo.so (r8098) * various core API changes: - use constructor for svn_client_cxt_t (r8053-4) - anchor/target may use NULL for target (r8216) - stop using apr_ symbols (r8219) - rename to 'svn_repos_authz_func_t' (r8213) - add pool parameter to finish_report and abort_report (r8215) * numerous changes to Perl and Java bindings, to keep up with C API. Version 0.35.1 [Beta] (branching 19 December 2003, from /tags/0.35.0) http://svn.apache.org/repos/asf/subversion/tags/0.35.1 NOTICES: This release is to correct for the problems in the 0.35.0 release and affects Windows users only: * fix: file handle leak (r8048) * fix: UTF-8 path problem (issue #1660) Version 0.35.0 (branching 12 December 2003, from revision 7994) http://svn.apache.org/repos/asf/subversion/branches/0.35.0 NOTICES: 1. As of this release, Subversion once again does deltification automatically. This means that the deltification step most repositories introduced into their post-commit hooks as of release 0.33.0 should now be reverted. Look for a line with "svnadmin deltify" in hooks/post-commit, and remove it. 2. We now recommend using Berkeley DB 4.2.52 or higher for SVN repositories. See http://sleepycat.com/download/index.shtml. User-visible changes: * BDB log files are automatically pruned, with BDB 4.2.50 and higher (#1615) * deltification is automatic again (issue #1601) * fix: svn diff -rX:Y wcpath' may lie (issue #1616) * fix: URI-decoding problem on 'svn import' (issue #1622) * many other enhancements, minor features, and bugfixes not listed here Developer-visible changes: * misc. improvements on Perl and Java bindings * improved diff handling (r7985) * many other changes not listed here Merged revisions after release branching: * r8009, r8010 and r8011 - Java bindings * r8041 - typo/bugfix Version 0.34.0 (released 3 December 2003, from revision r7859) http://svn.apache.org/repos/asf/subversion/tags/0.34.0 ##################################################################### ## WARNING WARNING WARNING WARNING WARNING WARNING WARNING ## ##################################################################### ## ## ## This release makes an incompatible change to the Subversion ## ## database. Repositories created with versions of Subversion ## ## prior to 0.34 will not work with Subversion 0.34. ## ## To upgrade, first use 'svnadmin dump' with your existing ## ## Subversion binaries. Then upgrade your binaries to 0.34, and ## ## use 'svnadmin load' to create a new repository from your ## ## dumpfile. ## ## Don't forget to copy any custom configuration/hooks from the ## ## old to the new repository. ## ## ## ##################################################################### Please see notes/repos_upgrade_HOWTO for documentation on migrating pre-0.34.0 repos to 0.34.0. That document is also located here: http://svn.apache.org/repos/asf/subversion/trunk/notes/repos_upgrade_HOWTO User-visible changes: * fs schema change (#1578, #1595) **NOTE: repos dump/load cycle required!** * Berkeley DB 4.2.50 is now the recommended Berkeley version * Fix: 'svn status' thought replaced items were unversioned (#1609) * SSL server cert error prompt improvement (r7849) * many error message improvements (r7745, r7763, r7824 and 7827 - #897) * don't show update-completion message until all wc work completes (#1556) * many other enhancements, minor features, and bugfixes not listed here Developer-visible changes: * public client APIs changes (r7799) after fixing #1556 * many improvements and fixes on Perl bindings (perl => 5.8.0 are required) * improvements, fixes on misc. test scripts * many other changes not listed here Merged revisions after release branching: * r7868 - Java bindings * r7888 - Security fix for svnserve Version 0.33.1 (released 17 November 2003, revision r7782) http://svn.apache.org/repos/asf/subversion/tags/0.33.1 NOTICE: This is a bugfix release. The bug is fixed if *either* the client or server uses the new code. User-visible changes: * major performance fix for updates Version 0.33.0 (released 13 November 2003, revision r7737) http://svn.apache.org/repos/asf/subversion/tags/0.33.0 NOTICES: 1. This client may be incompatible with ra_dav servers <= 0.31. 2. In order to make commits more responsive, repository deltification is no longer automatic. However, you may want to run deltification as a background process in your repository post-commit hook. For example, the new post-commit.tmpl file recommends 'nice -2 svnadmin deltify "$REPOS" -r "$REV" &'. User-visible changes: * now require APR/APU 0.9.5 (ships in Apache 2.0.48) * lose automatic deltification, but recommend it in post-commit (r7695, #1573) * new configuration and authn/authz support in ra_svn (r7604, r7601) * much faster checkouts and updates, over both svn:// and http:// (#1429) * new partial-authz feature: checkouts/updates just skip unauthorized items * new 'use-commit-times = yes' config option to use commit-time timestamps * new 'svnadmin hotcopy' command, like hot-backup.py (#1567) * fix Win32 "access denied" error in renames (r7598, #1576) * unnecessary working copy tree locks now avoided, to save time (#1245) * Compatibility changes: - lose ra_dav compatibility with servers 0.31 and earlier - lose support for working copy format "1" (not created for over a year) * 'svn diff' and other read-only actions now work in read-only working copies * 'svn blame -rX' now does the intuitive thing * 'svn log' output headers now say "rXXXX | " instead of "rev XXXX: " * 'svnversion' no longer stymied by svn:externals * new 'svn pd' alias for 'svn propdel' * '-rCOMMITTED' keyword now works on more commands * minor changes to output of 'svn ls -v' and 'svn st -v' (r7530) * 'svn log --xml' now obeys the '-q' flag (r7555) * cvs2svn.py bugfixes, especially issue #1440 * book and documentation updates * removed server config options ssl-ignore-invalid-date and ssl-override-cert-hostname (r7644) * many other enhancements, minor features, and bugfixes not listed here Developer-visible changes: * repair text- and prop-time in .svn/entries if spuriously wrong (r7565) * speed up keyword translation (r7502) * two new editor functions, absent_file() and absent_directory() * ra_dav checkouts/updates no longer do O(n) number of GET, PROPFIND requests * new svn_io_temp_dir function, will morph to apr_temp_dir_get soon * new svn_io_file_close wrapper for apr_file_close * tools/test-scripts/svntest/ scripts now support ra_dav and ramdisk * many other changes not listed here Version 0.32.1 (released 23 October 2003, revision 7497) http://svn.apache.org/repos/asf/subversion/tags/0.32.1 NOTICE: This release is to correct for the problems in the 0.32.0 release. There are no user or developer changes in this release other than the subversion/include/svn_version.h now reflects the correct version number. NOTICE: This release of Subversion causes an ra_dav client/server compatibility break with Subversions older than 0.28.0. Version 0.32.0 (released 22 October 2003, revision 7480) http://svn.apache.org/repos/asf/subversion/tags/0.32.0 NOTICE: This release of Subversion causes an ra_dav client/server compatibility break with Subversions older than 0.28.0. User-visible changes: * new 'svn blame' subcommand. (r7389, 7438, #508) * fix huge ra_dav 'svn import' memory leak. (r7381) * other bugfixes: proper line endings in diff headers (r7450, #1533), stop auto-props from removing all whitespace (r7358), 'svn st' UI consistency fix (r7364), various 'svn switch' fixes (r7366), mini-manpages for svnadmin, svnserve, svnversion (r7421), remove 'P' field from 'svn ls -v' (r7432), 'svn merge' double-notification bug (r7447), prevent 'svn:externals' infinite loop (r7459), 'svn merge' segfault (r7458). Developer-visible changes: * 'svn diff' is now reasonably streamy. (r7393, 7439, #1481) * fix many ra_dav pool abuses. (r7370-3, 7380, 7368, 7400, ...) * fix mini leaks: clear unused svn_error_t's. (r7378-9, 7405, 7408, 7429) * tons of code, doc, API cleanup. (from julianfoad!) * new RA->get_repos_root() API. (r7428) * swig/python, swig/perl and native JNI updates and improvements. * more work on build depenedency generator. (r7412-8) * svn_repos_finish_report() now aborts txns on error. (r7424) * remove crufty old ra_dav compatibility code (r7466, 7468) * other changes: new SVN_DEBUG_ERROR tool macro, new 'davautocheck' and 'contrib' makefile targets, new --enable-gprof configure option (r7437), new scramble-tree.py testing tool, auth provider reorganization, make RA->get_dir fetch props correctly over ra_dav (r7431), notice permission error when creating unique tmpfile (r7434). Version 0.31.0 (released 08 October 2003, revision 7355) http://svn.apache.org/repos/asf/subversion/tags/0.31.0 User-visible changes: * new 'svnlook history' command (and removal of 'svnadmin lscr'). * new 'auto-props' feature can set file properties during 'svn add/import' * win32 client now properly converts UTF8 to console-locale. (r7168, #872) * 'svn up' now notices when svn:externals value changes. (r7256, #1519) * authentication changes: - client caches auth-creds in memory for a single session (r7292, #1526) - SSL cert caches keyed on host+port, not any SSL connection. (r7174) * faster 'svn log' (see new fs-history algorithm) (#1499) * faster repos read-operations (caching gives ~20% speedup) (rXXXX, #1499) * faster updates (fewer entries-file writes gives ~20% speedup) (r7170, #1490) * more work on psvn.el and svn_load_dirs.pl * more cvs2svn bugfixes * obsolete manpages truncated to point to 'help' and book URLs. (r7340, #1508) * other bugfixes: no more revision keywords "FIRST" or "CHANGED" (r7250), fix 'svn cp URL URL' $EDITOR msg generation (r7264), fix regression bug in 'svnadmin load' (r7273), 'svnadmin setlog' now triggers repository hooks (r7322), 'svn cp -rHEAD wc' now works correctly (r7331), post-commit-hook failures correctly ignored by client (r7342, #906) Developer-visible changes: * tons of filesystem improvements (#1499): - new fast fs-history algorithm: allows stable VR urls (r7283, #1499) - new dag-node caching (r7163) - skip-deltas now run in individual trails (r7138) - no-op svn_fs_copy()s don't write to the database (r7158) * mod_dav_svn MERGE response is faster (using svn_repos_replay()) (r7191) * ensure consistent wc 'dead entry' cleanup (r7197, r7204, #1075) * lots of work on gen_win.py, gen_make.py, gen_base.py tools * lots of work on making SWIG-java bindings build. * updates/improvements to javahl bindings and SWIG-perl bindings * updates/improvements to Mandrake RPM builds * other bugfixes: python testsuite now uses local path separators (r7224), svn:externals no longer keeps connections open (r7312, #1448), UTF8-to-local date conversion (r7316, #1534), API consistification changes (r7298, r7302, r7304, r7307). Version 0.30.0 (released 24 Sep 2003, revision 7178) http://svn.apache.org/repos/asf/subversion/tags/0.30.0 User-visible changes: * SSL changes: (r7134, #1330) - client now prompts to cache server certificates - no more 'ssl-ignore-unknown-ca' option - 'ssl-ignore-host-mismatch' is renamed to 'ssl-override-cert-hostname' - new 'ssl-trust-default-ca' option to trust 'default' openssl CAs * 'svn log' no longer dies on unversioned args (r6989, #777) * local mods now obstruct 'svn up' deletions (r7050, #1196) * 'svnserve' now notices (unauthenticated) --username arg (r7060) * no more 'svnadmin createtxn' subcommand. (r7062) * 'svn ls -v' shows years when appropriate * document some new things in Book (r7014), plus minor technical fixes * website changes: new sidebar, new 'svn links' page, new tigris.org!! * other bugfixes: hooks use proper stdout handles on win32 (r7001), prevent copies of copies in wc (r7077, #1259), display failed revprop change over ra_dav (r7081, #1520), 'svn st -u' throws RA error properly (r7094, #1506) Developer-visible changes: * ra_dav now requires neon-0.24.X * many gen_make.py/gen-base.py improvements, especially for win32 builds * many improvements to swig/perl bindings * improvements to contrib/: psvn.el, and new svn-push program. * more cvs2svn bugfixes: issue #1504, #1421, #1514, and new --username arg. * python testsuite only raises exceptions, never status codes. (#1192) * various libsvn_fs re-org (prepwork) for issue #1499. * other bugfixes: code-complete timestamp feature (r6983, #1445), add op-counting features to trails (r6984, #655), fs UUID caching (r7037), almost finish win32 iconv issues (#872), restored-file entry-timestamp bugfix (r7090, #1523), always print CWD as '.' (r7097) Version 0.29.0 (released 05 Sep 2003, revision 6976) http://svn.apache.org/repos/asf/subversion/tags/0.29.0 User-visible changes: * 'svn status' now streams its response. (r6913, #1426) * 'svn status' now recurses into externals (r6913, #1428) * new 'svnadmin verify' command to verify repository data (r6851, #1074) * SSL changes: (r6958, #1371) - dropped support for PEM-encoded client certs, only accept PKCS12 now. - 'ssl-authority-files' is now a list of CA files - no more 'ssl-client-cert-type' and 'ssl-client-key-file' variables. * new svndumpfilter option: '--preserve-revprops' to keep props on empty revs * mailer.py improvement: handle multiple match groups (r6940) * remove in-repos/on-disk repository template features, till post-1.0 (r6965) * various cleanups to the Book * other bugfixes: switch deletion bug (r6890, #1496), status repos-delete bug (r6913, #1469), reversion of '.' (r6953, #854). Developer-visible changes: * GUI developers take note: prompting API changed (r6928, #1214) * now compile against neon-0.24; 0.23.9 support to be dropped soon. (r6958) * various improvements to Perl/SWIG bindings * tree re-org: non-core utilities split into 'tools' and 'contrib' areas. * some gen_make.py/gen-base.py improvements * configure.in CFLAGS bugfix (r6963) * stop calling deprecated APIs in APR, in preparation for upcoming APR-1.0. Version 0.28.2 (released 29 Aug 2003, revision 6946) http://svn.apache.org/repos/asf/subversion/tags/0.28.2 User-visible changes: * MAJOR BUGFIX: revert revision 6764. The new history-searching code was over-stressing our use of BerkeleyDB transactions, causing checkouts to go twice as slow and lose all concurrent-client scalability. This is a temporary fix for a larger design problem. See issue https://issues.apache.org/jira/browse/SVN-1499 Version 0.28.1 (released 28 Aug 2003,http://svn.apache.org/repos/asf/subversion/tags/0.28.1) There are no changes in this release. It is strictly an updated release, build with the correct version of autoconf; autconf-2.57 Version 0.28.0 (released 27 August 2003, rev 6894, branches/release-0.28) (http://svn.apache.org/repos/asf/subversion/tags/0.28) ##################################################################### ## WARNING WARNING WARNING WARNING WARNING WARNING WARNING ## ##################################################################### ## ## ## This release makes an incompatible change to the Subversion ## ## repository filesystem schema. Repositories created with ## ## Subversion code prior to this release will unable to operate ## ## with this new code. To maintain the ability to use said ## ## repositories, you must use a version 'svnadmin dump' prior to ## ## this change to dump your repository to a dumpfile, then use ## ## this new Subversion code to create, and load your dumpfile ## ## a new repository using 'svnadmin load'. And don't forget to ## ## copy over any custom configuration/hooks from the old to the ## ## new repository. ## ## ## ##################################################################### Please see notes/repos_upgrade_HOWTO for documentation on migrating pre-0.28.0 repos to 0.28.0. That document is also located here: http://svn.apache.org/repos/asf/subversion/trunk/notes/repos_upgrade_HOWTO User-visible changes: * fs schema change, see issue #1003 **NOTE: repos dump/load cycle required!** * command-line options - changed 'lsdblogs' is now 2 commands 'list-dblogs', 'list-unused-dblogs' - removed '--only-unread' option - new 'list-unused-dblogs' - new '--config-dir' allows svn config to live outside ~/.subversion - new (r6811) - svn-status-get-specific-revision (interface to svn cat) - svn-ediff-with-revision (run ediff w/ a file wc and a specified rev) * fixed 'mod_dav_svn' segfault bug caused by foreign DeltaV requests (r6725) * fixed 'svn switch' bug which could result in corrupted repo (#1316,r6746) * fixed items now marked as 'deleted' if they no longer exist (#919,r6748) * fixed 'merge' no longer adds file/dir if scheme differs from wc. (#1321) * fixed Handle \r correctly when prompting on Windows. (r6792,#1307) * 'svn merge' now 'skip's when it hits unversioned obstructions (r6810,#1425) * fixed repos->wc of file w/ svn:keywords set caused segfault (r6818,#1473) * fixed 'svn diff -r PREV:HEAD' failed if tmp/ exists in cwd (r6838,#1487) Developer-visible changes: * database schema changed (see warning above!) (r6752,#1003,#1248,#1438) * svn Perl bindings are ready - see swig/INSTALL * internal changes to treat swig libraries more like normal libraries (r6761) * improved handling of errors opening a repository over ra_svn (r6841) Version 0.27.0 (released 12 August 2003, rev 6707, branches/release-0.27.0) User-visible changes: * fixed ra_svn: - (r6588) avoid hangs due to ra_svn tunnel creation errors - (r6696, r6697, #1465) svnserve crash due to pre-commit hook failure * fixed 'svn log': - (r6642, #1423) log on a deleted path over ra-dav - (r6684, #1438) log performance bug * fixed 'svn diff' and 'svn merge': - (r6604, #1311) diff URL URL on files now works - (r6668, #1142) diff comparing wc to repos branch - (r6687, #1297) diff/merge interaction in file adds - (r6703, #1319) merge problem with adding subtrees - (#6607) new default ancestry-following behavior for diff, merge * fixed 'svn status': - (r6688, r6691, r6692, #1289) status on nodes deleted in repos - (r6637) status now always uses "I" for ignored directories * fixed 'svn copy': - (r6704, #1313) copy between 2 repositories errors cleanly now - (r6649, #1444) seg fault when copying empty dir from repos to wc * fixed 'svn export': - (r6652, #1461) exporting an empty directory - (r6664, #1296) path->path exports * fixed - gracefully handle failure to get uid on Win98 (r6695, #1470) * fixed - avoid spurious conflicts when merging binary files (r6621, #1319) * fixed - merge of a single file into implicit '.' (r6630, #1150) * fixed - various Win32 innosetup improvements/fixes (r6693, r6656, #1133) * fixed - disallow ".." in svn:externals target paths (r6639, #1449) * fixed - use 'env' instead of hard-coded paths in scripts (r6626, #1413) * fixed - bug in loading incremental dumpfiles (r6595) * fixed - performance issue in svn_load_dirs.pl fixed (r6623, r6627, #1455) * fixed - handle IPv6 addresses in URLs (r6638, r6654, #1338) * changed - 'svn resolve' renamed to 'svn resolved' (r6597) * changed - 'svnlook tree' takes new optional path-in-repos argument (r6583) * changed - renamed 'svnadmin archive' to 'svnadmin lsdblogs'; offer either all logs, or just the unused ones (r6661) * changed - now offer full-text search in Windows documentation file (r6658) * changed - much documentation updated, especially the book * Many other fixes and changes, too numerous to mention individually. Developer-visible changes: * fixed - many improvements to Perl and Python bindings, including some Win32-specific improvements (r6619, r6686, r6590, r6580, r6579) * All other important dev changes are implied by the user-visible changes. Version 0.26.0 (released 24 July 2003, revision 6550, branches/release-0.26.0) User-visible changes: * fixed - --parent-dir option to svnadmin load (r6436) * fixed - 'svnlook diff' now properly displays diffs (r6408, #1241) * fixed - 'svn cat' no longer expands values from the wrong revision. * fixed 'svn merge': - (r6447,#1402) -r FOO:PREV works correctly - (r6452,#1379) no longer prints confusing no-op lines - (r6500/6503,#1399) warn user when a tree-delta chunk can't be applied * turn compression off to work around to mod_deflate timeouts (r6509) Developer-visible changes: * cvs2svn.py: lots of bugfixing related to branch/tag support * diff code refactored to allow use by other tools (r6407) * make 'svn export' set commit-timestamps (not ready yet) (r6420) * fixed - memory leaks in libsvn_ra_dav commits (r6422) * fixed - cvs2svn.py handles branch files rooted in dead revs (r6482,#1417) * fixed - new lines now detected in svn:author property (r6497,#1401) * fixed - svn_load_dirs works w/ absolute paths (r6507, Debian bug #187331) * changed - build infrastructure now supports Perl SWIG bindings (r6441) * removed - PORTING document no longer necessary (r6472) Version 0.25.0 (released 11 July 2003, revision 6394, branches/release-0.25.0) User-visible changes: * command line options: - new --force option for svn export (r6327,#1296) - new --force-log for commit, copy, delete, import, mkdir, move (r6294) - no longer need --force for commit * commands - new - svnadmin archive (r6310) - changed - svn import syntax now 'svn import [PATH] URL' (r6288,#933,#735) - fixed - Search PATH for external diff commands (r6373) - fixed - 'svn switch' memory bug (r6296) - fixed - 'svn mkdir' coredump (r6388,#1369) * python bindings now in -tools rpm for Mandrake 9.1 (r6374) * allow parent-into-child copies, provided they are not WC->WC. (r6348,#1367) * fixed - Apache module installation order (r6382-6,#1381) * now require apache 2.0.47 (and apr 0.9.4) * fix 2 commit leaks * fix mod_dav_svn path-escaping bug Developer-visible changes: * Win32 build system - new - .vcproj files for svn_config project and APR (r6311) - fixed - SWIG bindings for Win32 (r6304) - vcproj generator now works (r6316) - swig's generated .c files now dependent on headers in .i files (r6379) - refactored code common to dsp & vcproj into gen_win.py (r6328) * fixed - SEGFAULTs in SWIG bindings (r6339) - potential SEGFAULTs in 'REPORT vcc' backward-compatibility code (r6377) - mod_dav_svn's autoversioning failure on PUT (r6312) - 'svn switch' memory bug (r6296) * changed - mailer.py now uses svn_repos_replay() Version 0.24.2 (released 18 June 2003, revision 6284, branches/release-0.24.2) User-visible changes: * fix 'svn export' potential segfault * fix occasional diff test failures * fix 'svnadmin dump' memory hog * fix new-dir-with-spaces bug Developer-visible changes: * none Version 0.24.1 (released 16 June 2003, revision 6249, branches/release-0.24.1) User-visible changes: * Fix bug in 'svn log'. Developer-visible changes: * none Version 0.24.0 (released 15 June 2003, revision 6234, branches/release-0.24.0) User-visible changes: * new 'svn diff [--old OLD] [--new NEW]' syntax (#1142) * new --relocate option for svn switch (#951) * new --version option for svnadmin and svnlook * new path-based authorization module for apache * make 'svn checkout' and not just 'svn update' resume a checkout * .svn directories now hidden on Windows * config variable 'store-password = no' now actually works * fix 'svn merge --dry-run' * fix 'properties hanging after a rename' issue (#1303) * fix odd behavior of 'svn up -r PREV filename' (#1304) * fix delete-tracking bug (#1348) * fix dump and load corner cases (#1290) * ra_dav server more resilient for foreign deltaV clients * numerous ra_svn changes - must update clients and servers * fix export over ra_svn (#1318) * fix ra_svn error transmission bug (#1146) * fix ra_svn corruption in tunnel mode (#1145) * make svnserve multi-threaded on non-fork platforms (now works on Windows) * remove svnserve -F and -S options * various memory use improvements (#1323) * various performance improvements for all protocols * various performance improvements for 'svnadmin dump' and svnlook * various subversion book updates (you have read the book right?) * more cvs2svn.py improvements (and more to follow) * new debugging script normalize-dump.py to normalize dump output Developer-visible changes: * path-based editor drivers * no more RA->do_checkout() * update python and java bindings * various windows build fixes Version 0.23.0 (released 16 May 2003, revision 5962, branches/release-0.23.0) User-visible changes: * 'svn cat' now performs keyword expansion (#399) * 'svn export' keyword expansion fixed * checkouts are now restartable (#730) * ssh ra_svn tunnel agent specified with svn+ssh://hostname/path syntax. * remove dependency on external diff program * don't error out early on unversioned files (#774) * fix commands where REPORT fails if item isn't in HEAD (#891) * updates now receive checksums like checkouts (#1101) * 'svn revert dir' now resets property timestamp (#1163) * fix instances of client showing help instead of error message (#1265) * fix incorrect path in 'not a working copy' error messages (#1291) * fix cvs2svn.py file added on branch problem (#1302) * fix various vc-svn.el problems (#1257, #1268) * fix various psvn problems (#1270) * various Win32 build fixes Developer-visible changes: * fix various gcc 3.3 warnings (#1031) * fix various memory errors/leaks * remove java/jni bindings Version 0.22.2 (released 13 May 2003, revision 5918, branches/release-0.22.2) User-visible changes: * fix Win32 build * properly handle on-disk template errors * fix bogus uuid bug in cvs2svn.py Developer-visible changes: * none Version 0.22.1 (released 9 May 2003, revision 5874, branches/release-0.22.1) User-visible changes: * fix shared library installation problem * update cvs2svn.py script Developer-visible changes: * none Version 0.22.0 (released 7 May 2003, revision 5842, branches/release-0.22) User-visible changes: * svn diff -r BASE:HEAD and other edge cases fixed (#977) * svn diff and merge now have --ignore-ancestry option (#1034) * svn ci -N DIR no longer errors during post-commit (#1239) * ra_dav now optional (#617) * update vn-svn.el (#1250, #1253) * improvements to svn_load_dirs.pl (#1223, #1215) * misc ra_svn bug fixes and protocol change * log-encoding option now properly only applied to logs * fix mmap failures on HP-UX * fix some client memory leaks Developer-visible changes: * finish transition to new xml prop namespaces for mod_dav_svn (#840) * minimize full tree locks and number of system calls (#1245) * auto-generated .dsp files (#850) * fix ETag of directory (#1251) * added export editor (#1230) Version 0.21.0 (released 15 Apr 2003, revision 5639, branches/release-0.21) User-visible changes: * SSL client and server certificate verification * authentication info now stored in ~/.subversion/auth/ * svn diff on a copied file only shows local mods, not the whole file * svn propget now takes a --strict option to control output * svnadmin load now takes a --parent-dir option * added the new 'svndumpfilter' program * svnlook now has 'cat', 'propget', and 'proplist' commands to enable viewing this information on transactions * 'svn copy' from another repository now adds without history * tag/branch conversion disabled in cvs2svn until it gets fixed * the 'anonymous' user is no longer used; we simply avoid attaching an author property when an author is not available * improvements to ignored-file handling * Python ConfigParser-style variable expansion for config file (#1165) Developer-visible changes: * introduced the svn_filesize_t type (#639) * realmstring added to the svn_auth framework * the "result checksum" moved to the editor.close_file function * more checksumming here and there * initial work to enable binary properties via ra_dav * initial, internal support for compressed streams * test framework shifting to exception-based failure recording (#1193) * improved options and handling in the C test framework * java and python binding work * libsvn_auth folded into libsvn_subr * bug fixes: 'svnadmin load' parse bug; ra_svn crashes (#1160); 'svn log' on a switched wc (#1108); 'svn ci -N' on named files (#1195) Version 0.20.1 (released 26 Mar 2003, revision 5467, branches/release-0.20.1) User-visible changes: * fix svnadmin load bug so that property deletions actually occur * fix checksum compatibility issue for older repositories Developer-visible changes: * none Version 0.20.0 (released 20 Mar 2003, revision 5410, branches/release-0.20) User-visible changes: * new compatibility rule: require only that each interim release be compatible with the one before it (see HACKING) * ra_svn is still new so above rule doesn't yet apply (i.e. 0.20 over ra_svn is NOT compatible with previous releases) * merge infers the target path (see book chapters 4 & 8) * merge continues in presence of missing target file * merge's add notifications are no longer duplicated * commands can be safely interrupted (Ctrl-C) * --encoding global default in ~/.subversion/config * new option --editor-cmd * begin multi-release transition to escape binary properties over DAV * misc performance improvements Developer-visible changes: * RA vtable functions take pool argument * svn-config --includes path fixed * uuid at creation now complete * start having test failures throw exceptions rather than return errors * test suite option --cleanup with --verbose being default mode * continued diff library development * minor revprop hook changes * bug fixes: no diff on binary files (#1019), consistent error messages (#1181), version numbers in hook scripts (#1182), win98 codepage (#1186) Version 0.19.1 (released 12 Mar 2003, revision 5303, branches/release-0.19.1) User-visible changes: * fix svnserve tunnel mode pipe close bug Developer-visible changes: * none Version 0.19.0 (released 10 Mar 2003, revision 5262, branches/release-0.19) User-visible changes: * svn ls works on wc paths (#1130) * new cvs2svn.py features and bug fixes (1105) * new svnlook subcommand 'uuid' * new svnadmin create option '--bdb-txn-nosync' (use with care) * fix svnserve help output * SVN_EDITOR now overrides svn-editor in ~/.subversion/config * miscellaneous performance improvements (memory and speed) * more work on the Book Developer-visible changes: * start implementing cancellation of long-running functions * misc windows build fixes and features (DSP generator) * -W and -P options to stress.pl * start adding support for multiple fs backends * work on bindings and bindings build system (#1132, #1149) * bug fixes: ra_dav import/checkout memory usage (#995), control chars in commit messages (#1025), svn merge memory usage (#1069, #1077), pre-existing ~/.subversion (#1121), keyword expansion (#1151), line number in config error message (#1157), svn-tunnel-agent in [default] (#1158), RA->close RIP (#1164), config-test non-source (#1172) Version 0.18.1 (released 26 Feb 2003, revision 5118, branches/release-0.18.1) User-visible changes: * editor environment variables no longer incorrectly required * 'svn help import' now displays correct usage * fix crashes in the internal diff library and ra_dav * fix Win9x/Me console issue * cvs2svn.py api fix * hot_backup.py now correctly removes old backups Developer-visible changes: * various rpm package fixes Version 0.18.0 (released 19 Feb 2003, revision 4968, branches/release-0.18) User-visible changes: * renamed the [default] section to [global] in the servers config file * compression option is now http-compression and lives in servers file * use internal diff by default rather than external program (#405 in progress) * symlinked hook scripts now run * read-only access flag (-R) for svnserve * quiet flag (--quiet) for svnadmin dump * --ignore-uuid and --force-uuid for svnadmin load * miscellaneous performance improvements * more work on the Book Developer-visible changes: * new authentication library libsvn_auth (#724) * new bdb table uuids * client context object in libsvn_client * more work on java and other language bindings * test framework now has a quiet option (-q) * miscellaneous small code cleanups * bug fixes: more valgrind memory bugs, apr xlate i18n mess (#872), non-existent URL checkout (#946), props on to-be-deleted files (#1066), ra_svn move/copy (#1084), eol translation (#1085), ra_svn checksumming (#1099), cat command corrupt output (#1104), cvs2svn memory consumption (#1107), merge of property add (#1109), '..' relative path (#1111), commit/cleanup/diff3 (#1119), .svn/entries checksum (#1120), svn commit in / (#1122), status on uncontrolled directory (#1124), commit message eol characters (#1126), cat -r PREV (#1134), ra_dav wcprops (#1136) split XML cdata/attribute encoding (#1118) Version 0.17.1 (released 22 Jan 2003, revision 4503, branches/0.17.1) User-visible changes: * changed non-baseline build version number display. * compatibility change: make sure old clients can talk to newest servers. * some changes to the Book Developer-visible changes: * dumper/loader now use checksums (#1102) * miscellaneous small code cleanups * bug fixes: eol-style timestamp changes (#1086), valgrind mem bug, better checksum error reporting, Version 0.17.0 (released 20 Jan 2003, revision 4468, branches/0.17) User-visible changes: * 'svn add' is now recursive by default, -N to disable (#1073) * new 'svnversion' program summarizes mixed-revs of a working copy * huge improvements to the mailer.py tool * more work on the Book and man page * default global-ignores now built-in, new runtime-config file commented out Developer-visible changes: * checksums, checksums everywhere (issues #649, #689): - filesystem stores them, and verifies them when reading/writing - working copy stores them, and verifies them when reading/writing - checksums transferred both ways over network, RA layers verify them * finish draft of internal diff/diff3 library -- ready for testing/optimizing * more utf8<->apr conversion work (#872) * more work on swig/python and ruby bindings * improvements to win32-innosetup package * 'svnserve' now has an official IANA-assigned portnumber. * mod_dav_svn now only sends/understands new xml prop namespaces (#840) * bug fixes: stop needless fs rep data copies (#1067), wc auth caching bugs (#1064), use APR_BUFFERED to open files (#1071), lots of wc 'missing dir' edge-case bugs (#962), prevent wc from receiving '.svn' (#1068), don't commit symlinks (#1081), better diff labels (#1080), better fulltext tmpfile names in conflicts (#1079), prevent ra_dav from deleting out-of-date items (#1017), segfault (#1092), don't attempt checksum on missing tmp textbase (#1091), allow diffs during update again (yikes!) Version 0.16.1 (released 6 Jan 2003, revision 4276) User-visible changes: * ra_svn network layer (apache alternative) now tested & ssh-tunnelable * new (experimental) mod_dav_svn autoversioning feature (SVNAutoversioning) * reorganization of the ~/.subversion/ run-time config files. * more entry caching: approx. 3x speedup on checkouts & updates. * option rename: --non-recursive instead of --nonrecursive * option rename: --no-diff-deleted instead of --no-diff-on-delete * new 'svn log --quiet' * new 'svn diff --no-diff-deleted' * fix keyword expansion behaviors ($keyword:$ / $keyword$ / $keyword: $) * handle win32 non-ascii config-file paths (#968, #1048, part of #872) Developer-visible changes: * most public header files now using doxygen markup * new (untested) internal difflib (#405) * neon debugging now tweakable via run-time config file * more progress on Subversion Book rewrite. * new ./configure --with-diffutils * begin work on client/server checksums (#649) * regression tests now depend on svnadmin dump/load * lose src_err field of svn_error_t * many fs function renames: begins fs database back-end abstraction. * new libsvn_repos prop-validating wrappers * lots of work on build-system dependency graph generation (for SWIG building) * swig binding work: - python svn calls can now run as independent threads - new java-binding build system - improved swig building features: --prefix, LDFLAGS behaviors * many, many bug fixes: wc->repos copies (#1029), #943 followup (#1023), copies of copies (#830), 'svn resolve' cleans up entries file (#1021), prop merging (#1012), segfault fixes (#1027, #1055), autoconf 2.5X (#886), O(1) copies (#717), new 'failed revert' signal (#714), detect missing schedule-add conflicts (#899, #863), begin dav namespace switchover (#840), status bugs, url auth inference (#1038), log bug (#1028), newline prompt (#1039), svnadmin errorchecking, url syntax errors (#1057, #1058), apr/utf8 work (start #872), and many more. Version 0.16 (released 4 Dec 2002, revision 3987) User-visible changes: * new 'svn cat' subcommand * new --revprop flag to access revision props, -r for versioned props (#943) * new "compression" runtime option in ~/.subversion/config * svnadmin/svnlook now use help system, and some subcommands deleted or moved. * tool changes: - new svnshell.py tool - new mirror_dir_through_svn.cgi script - new svn_load_dirs.pl features - updates to vc-svn.el * --message-encoding is now just --encoding, and affects svn: propvals too. * major rewrites of chapters 3, 4, 5 of the Subversion Book. Developer-visible changes: * new network layer, libsvn_ra_svn! still experimental. * all svn_error_t's now allocated in subpool of global pool. * reorganize svnlook/svnadmin subcommands & option-parsing (#540, #915, #910) * all log messages and svn: props now stored as UTF8/LF endings (#896) * huge cleanup/reorg of all svn_path_* routines * svn_client_status sends feedback, distinguishes unversioned vs. ignored * improvements to swig typemappings and build processes * fixes to pool cleanup handlers * begin abstraction of gen_make.py * entry-caching improvements * stop using global apr_xlate objects * win32-innosetup code added to packages/ * new work on ruby bindings and swig-java bindings * many, many bug fixes: various small coredumps, svn_error_t leaks, copy props correctly (#976), copy executable bits correctly (#982), test-system fix (#882), accidentally imported tmpfile (#964), ra_local checkout memleak (#985), accidental wc deletion (#988), better text vs. binary detection (#994), dav log-report error handling, bad 'svn switch' dav caching (#1000), don't call NULL callbacks (#1005), bogus switch feedback (#1007), eol-style file corruption (#920), getdate.y fix (#1009), ra_local error reporting (#900), start of work on issues #830 and #869. Version 0.15 (released 7 Nov 2002, revision 3687) User-visible changes: * New 'S' indicator in 'svn status' shows switched subdirs * New --dry-run option added for 'svn merge' (issue #953) * Fix 'svn update .' to handle svn:externals correctly * Memory usage of 'svn import' reduced (issue #860) * Allow 'svn revert' on missing directories scheduled for deletion * Assorted bug fixes in several exciting flavors * Documentation improvements Developer-visible changes: * #911 (apr and apr-util version at build time) * Fixed issues #851, #894, * Testing scripts accept --url=URL and BASE_URL=URL * Issue #881 (--enable-all-static) * Delta editors all converted to new-style, and editor composition is gone * Improve libsvn_wc wcprop handling (issue #806) * SWIG binding improvements * Various pool usage improvements Version 0.14.5 [Alpha Interim 5] (released 30 Oct 2002, revision 3578) User-visible changes: * allow --incremental option for 'svn log' xml output Developer-visible changes: * autoconf bugfix for berkeley-db detection * clean up property interface mess (part of #806) * dish.sh bugfix: build the new docbook docs correctly * python tests now log commands * gen-make.py now assumes 'build.conf' Version 0.14.4 [Alpha Interim 4] (released 29 Oct 2002, revision 3553) User-visible changes: * new working-copy entry-caching: speeds many ops up to 5x (#749) * new 'svnadmin recover', instead of db_recover * client can now view & change server-side revision props (e.g. log messages) * new --non-interactive switch for commandline client * new --incremental option to 'svn log' * new -r {date} syntax for specifying dated revs; works over network too. * automatically set svn:executable prop when adding or importing (#870) * initial $EDITOR text now ignores all log data below special token * consistify behavior of text & prop columns in 'svn status' output. * .svn/auth/* files now chmod 700, to stop scaring people. :-) * improved labels in 'svn diff' output (#936) * run-time adjustable neon timeout in newly renamed 'servers' config file * big improvements to cvs2svn script: bugfixes and basic branch/tag support * new python access-control hook script * no more implicit dot-target for 'svn propedit' or 'svn propset' (#924) * Win32 improvements: - use system-wide config-file/registry - run-time configurable diff/diff3 binary locations (#668) * remove obsolete --xml-file support * Handbook is now ported to Docbook, 2 new chapters. Developer-visible changes: * abstracted option/help-parsing code, now shared between svn and svnadmin * require apache 2.0.42 * use neon 0.23.5: fix XML entity derefs, SSL server certs, HP-UX build, etc. * support Berkeley DB 4.0 *or* 4.1 * many SWIG binding improvements: - better overall coverage of apr and libsvn_* library symbols - new 'make swig-py-ext' and 'make install-swig-py-ext' targets * finish conversion of all editor/drivers to "new" style (#737) * removed xml-delta editors and editor drivers and related tests * new predicate-logic system added to automated-test system ("skip" support) * more work on mailer.py * no more lost commit messages (#761) * eradication of misused stringbufs, obsolete code removal (#909) * mem-leak fixes in libsvn_fs (#860) * improved atomicity of working-file translations (#914) * improve ./configure --help output (#949) * MANY bugfixes, especially for entry-locks (#931, #932, #847, #938), merges (#880, ), auth storage (#934); also #921 (svnadmin segfault), #907 (xml quoting), #918 (post-commit processing), #935 (path canonicalization), #779 (diff errors) Version 0.14.3 [Alpha Interim 3] (released 20 Sept 2002, revision 3200) User-visible changes: * new ~/.subversion/config file * new $Id$ keyword * new client --no-auth-cache option * empty values in the Windows Registry are no longer ignored (issue #671) * report details of repository start-commit or pre-commit hook errors * fix locking behaviour when using current directory as a target * updated man page * new front-page logo. :-) Developer-visible changes: * continuing work on python SWIG bindings * continuing work on new access-baton system for libsvn_wc * upgrade to neon 0.23.4 to fix Windows build issues and seg faults * add XFAIL to the C testing framework * prevent setting of certain svn: props on incorrect file types * cleanup libsvn_subr's path library behavior * new 'fast-clean' vs. 'clean' Makefile targets * various bugfixes, tweaks, cleanups. Version 0.14.2 [Alpha Interim 2] (released 22 Aug 2002, revision 3033) User-visible changes: * fs schema change, see issue #842. **NOTE: repos dump/load cycle required!** * new 'svn ls -R' option * new status code `~', for type changes * add --username and --password options to 'svn ls' * new script tools/client-side/svn_all_diffs.pl * new script tools/examples/blame.py (draft) Developer-visible changes: * test suite now does XFAIL and XPASS * test suite over DAV now uses SVNParentPath, no longer depends on symlinks * DAV tests now work on Windows * upgrade to neon 0.22.0 * 'make install' notices the $(DESTDIR) parameter * new dav prop namespaces, but old still sent for compat; see issue #840 * error code space reorganized, see issue #702 * many cleanups to path handling * more use of access batons in libsvn_wc, see issue #749 * working props now stored with ".svn-work" extension, see issue #618 * the usual round of bug fixes, new regression tests, etc Version 0.14.1 [Alpha Interim 1] (released 9 August 2002, revision 2927) User-visible changes: * show copy-ancestry in 'svn log -v' * 'svn co' can take multiple URLs now * new 'svn ls' command * new 'svn st --no-ignore' option * new 'svn --version --quiet' option * more conservative 'svn help' usage error-message * more graceful degradation from charset conversion failure * standardize policy of -q switch behavior * less intimidating error output * new SVNParentPath directive for mod_dav_svn s * svnlook now correctly displays copied subtrees * Handbook: additions, tweaks, cleanups, and new French Translation :-) * svn_load_dirs.pl: auto propset on files matching specified regex, bug fixes Developer-visible changes: * integrated the delta-combiner! (issue #531) * integration of libsvn_wc-baton-locking branch (issue #749) * new "skip-deltas" added to delta-combiner * properly URI-encode/decode path components throughout our code * RA->do_diff() made independent from RA->do_switch(). * stricter setting/parsing of svn:mime-type property in client and server. * new 'install-static' make target * extend SWIG bindings to libsvn_wc and libsvn_client * BerkeleyDB usage tweaking: in preparation for auto-recovery features. * work on #850 (.dsp generator) * Better support for incremental dumps (see revision 2920) * started fs branch work on #842 (copyID inheritance), #830 (copies of copies), #790 (copy table uses txnID), #815 (custom sorting) * numerous bugfixes: #709 (better error handling), #813/814 (apr_filepath_merge), #685 (showing dir propdiffs), OS X dumper bugfix, #561 (property conflict detection), mod_dav_svn path bugs, svn_wc_status() bugs, path canonicalization bugs, #816 (svn log -r), #843 (URL keyword), #846 (kind-change replacement), #809 ($EDITOR dir), #855 (module updates not cooperating with new wc access batons), improvements to test suite sensitivity, Version 0.14.0 [Alpha] (released 23 July 2002, revision 2667) User-visible changes: * finally some documentation: The Subversion Handbook * i18n support for paths, prop names, and log messages; (not on Win32 yet) * support for URI-escaped paths * "-R" is now short for --recursive, and "-N" replaces "-n" * add the -R option to 'svn info' and 'svn resolve' * new syntax for 'svn switch' and 'svn co' * new 'svn-config' file installed * new commit-access-control.pl utility (feature #775) * new vc-svn.el, first pass at Emacs VC support for Subversion * lots of work on svn_load_dirs.pl (provides vendor-branch-like features) * new --message-encoding option for logfiles given by -F * support win32 drive-letters in file:/// urls * improved date output syntax: ISO-8601 prefix, then human-friendly suffix * the usual round of bug fixes Developer-visible changes: * UTF-8 changes - all libraries now assume UTF-8 input paths and log msgs - many apr calls are now abstracted into new svn_io_* wrappers * fs schema change - cache each revision's changed-paths in a new 'changes' table - another repository dump/load is required * a number of fs-dumper bugfixes and redesigns * test suite is now all python, so it can run on win32 * reduce huge memory consumption of mod_dav_svn during checkouts * memory optimizations for prop-reading and 'svn diff' * bugfixes for commit-email.pl and tweak-log.cgi * lots of branch work on the delta-combiner and on libsvn_wc rewrite * numerous bugfixes: 'svn merge .' bug (#748), bug #764, two new ghudson-dirversioning bugs, #756, #675, #783, #796, wc-root bugs, #799, #800, #797, directory-removal bugs (#611, #687) Version 0.13.2 [Pre-Alpha] (released 28 June 2002, revision 2376) User-visible changes: * fixed various buggy commandline outputs * allow global/local config-files on win32 * prevent overwrites with 'svn cp URL URL' * improvements to svn_load_dirs.pl * mod_dav_svn can generate xml output for directory GETs * new svnadmin(1) man page Developer-visible changes: * finished notification callback system, no more buggy output * fs-changes: - revisions table nothing but an index to txns table - branch work-in-progress: new 'changes' table to store changed paths * more work on svn_time_* funcs and formats (moving towards ISO8601) * property reversion bugs fixed, dumper bug fixed * add version number to svndiff database storage * new regression tests for 'svn merge' * fix 'svn diff -rX:Y' server bug * fix bugs in python test system * bring win32 build up-to-date, get most python tests working on win32 Version 0.13.1 [Pre-Alpha] (released 20 June 2002, revision 2291) User-visible changes: * "modules" are now implemented * new 'svn export' command * 'svn log' now traverses copy history and can print changed paths * 'svn merge' now (temporarily) only merges into '.' * 'svnadmin lscr' now traverses copy history * changes to the 'svn:executable' prop take effect immediately now * server is more tolerant of wc's with old-style version resource URLs * new Handbook started * commit-email.pl fixes/improvements -- now shows prop mods and copy history * bug fixes to cp, rm, merge, revert, admin dump and load, svnlook Developer-visible changes: * headers now install in subdir and libs are named libsvn_FOO-1.so * improvements to the Python test suite * delta combiner implemented (unused for now, though) * Python SWIG binding improvements: ability to write an editor in Python * new example: tools/examples/svnlook.py * start moving libsvn_client to new notification system (no composed editors!) * upgrade to neon 0.21.2, fixing deflated communication with apache * Moved Berkeley-specific code to libsvn_fs/bdb/, skels into libsvn_fs/util/ * changes to the RPM packaging Version 0.13.0 [Pre-Alpha] (released 10 June 2002, revision 2140) User-visible changes: * repositories have a new database schema; existing ones must be upgraded! - new svnadmin 'dump'/'load' commands to migrate repositories - read http://svn.apache.org/repos/asf/subversion/trunk/notes/repos_upgrade_HOWTO Developer-visible changes: * complete rewrite of filesystem schema! - skels are abstracted away, opening the door to SQL backends - node-ids now have copy IDs * huge progress on module system [only checkouts work at the moment] * massive conversion of stringbufs to char* in our public APIs * vsn-rsc-urls are now based on created-rev/path instead of fs_id_t's. * reinstate 'deleted' flag on entries, to ensure accurate update reports * dir_delta learns how to send copy history - svnlook no longer sends 10MB emails when we make a branch - dumpfiles get much smaller * memory consumption reduced via new apr-pool code that reuses/frees mem * client can now parse ISO-8601 timestamps (start of issue 614) * added script for stress-testing concurrent repository access * auto-locate apache's apr libraries at build-time * beginnings of ra_pipe library * progress on delta combiner code * many memleaks fixed, thanks to valgrind! * upgrade to newest neon, allow deflated communication with apache * many bugfixes to merge, switch, checkout, rm; tackling of issues 704, 705, 698, 711, 713, 721, 718 and many others Version 0.12.0 (released 3 May 2002, revision 1868) User-visible changes: * 'svn diff' can now compare two arbitrary URLs * 'svn diff' now displays property changes * 'svn rm' requires --force for unversioned and/or modified items * 'svn rm' immediately removes files & uncommitted dirs * 'svn mv' for WC->WC behaves like 'svn rm' with respect to the source * checkouts, updates, switches now print received revision on final line. * new 'svn info' command prints information about a versioned resource. * switch to 2-part conflict markers (diff3 -E) instead of 3-part (diff3 -A) * new bash programmable completion file * file's executable bit can be versioned (svn:executable prop) * commits and imports now support --nonrecursive option * new --xml option for 'svn log' * new 'svnadmin dump' command Developer-visible changes: * updates correctly deal with disjoint urls. * libsvn_wc now checksums text-bases, to detect working copy corruption * cached wcprops (vsn-rsc-urls) now auto-regenerate if invalid * python testsuite now runs on Win32. * new switch_tests.py added to testsuite * NEW internalized diff/diff3 library. Not yet integrated/tested. * dir_delta sends entry props; pipe-editor removed. * no more expat/ tree; use apr-util's expat instead. * fs deltificaton happens outside commit process, using fewer db locks * privatize svn_fs_id_t structure * start abstracting skels out of libsvn_fs * new docs: secure coding tips, quickref card * memory bugfixes for import/commit/mass removals * many bugfixes: issues 644, 646, 691, 693, 694, 543, 684 Version 0.11.1 (released 12 April 2002, revision 1692, branches/0.11.0) User-visible changes: * completion of 'svn merge' (issue 504) * added SVNReposName directive to mod_dav_svn * insist on a diff binary that supports "-u" * fix and unify pop-up $EDITOR behaviors (issues 638, 633, 615) Developer-visible changes: * finish rewrite of commit system to handle disjoint urls (issue 575) * finish proxy support via config files (esp. on win32) (issue 579) * fix svn_ra_dav__get_baseline_info and related bugs (issue 581) * reorganization of libsvn_wc header files & API * new getopt_tests.py to test commandline option processing * 'make check' now more portable -- tests invoked via python, not sh * miscellaneous bugfixes in imports, svndiff, db linkage. Version 0.11.0 (unreleased) Version 0.10.2 (released 25 Mar 2002, revision 1587) User-visible changes: * new ~/.subversion configuration directory * proxy support via ~/.subversion/proxies file Developer-visible changes: * rewrite of client-side commit process partially done * beginnings of 'svn merge' * mod_dav_svn now generates "streamy" report responses * stringbuf cleanups and bugfixes * interface to svn_wc_entry_t cleaned up * tweaks to build system and freebsd port * miscellaneous bugfixes in path escaping, pool usage, hp-ux compilation Version 0.10.1 (released 17 Mar 2002, revision 1537) User-visible changes: * New --targets command-line option for some commands. * conflicts now create conflict-markers in files, and 3 fulltext backups. * new 'svn resolve' command removes conflicted state (by removing backups) Developer-visible changes: * no more dependency on 'patch'; only on GNU diff3 and some version of 'diff' * complete rewrite of svn_wc_entry_t interface * begin abstracting svn_fs API by hiding implementation details * consolidate RA layer callbacks * start work on commit-driver rewrite * start work on ~/.subversion/ configuration directory, and proxy support * move a lot of svn_wc.h into private wc.h * bugfixes relating to commits, network prop xfers, 'svn log', 'svn co -q' * major deletion bug fixed (see email WARNING: http://subversion.tigris.org/servlets/ReadMsg?msgId=64442&listName=dev) Version 0.10.0 (released 08 Mar 2002, revision 1467) User-visible changes: * fewer out-of-memory errors: (see "memory consumption" below) * clearer user errors: - detailed marshalling of server errors to client - better errors from ra_dav - better commandline-client-specific error messages * 'svn log' now works on single paths correctly * show locked directories in 'svn status' * 'svnadmin lstxns' improvements, and new --long switch * commits show "Replacing" instead of "Deleting/Adding" (#571) * commits show progress on postfix txdeltas. * WARNING: existing repositories need to be upgraded; read tools/enable-dupkeys.sh. Developer-visible changes: * reduced memory consumption - new Editor interface that manages pools automatically - conversion of most existing editors to new system - have libsvn_fs write data to DB streamily - reduce DB logfile growth via 'duplicate keys' - stop using one pool for post-commit processing - stop using one pool for sending all textdeltas - many, many other pool-usage improvements in libsvn_wc, ra_dav, etc. * start of work on 'svn merge": issue 504, and diff3 integration * start of work on disjoint-url detection: issue 575 * start removing stringbuf path library funcs; use new const char * funcs * better python 2.X detection in test suite * svnlook uses single tempdir * build system evolution - upgrade to neon 0.19.[2-3] - lots of work on FreeBSD port * many small bugfixes: - propedit, file merges, revert, dir_delta, keywords - memory leaks in 'svn add', 'svn import/commit', and svnlook - date-parsing and readonly bugs Version 0.9 (released 15 Feb 2002, revision 1302) User-visible changes: * 'svn switch', for switching part of a working copy to a branch * 'svn status -v' now shows created-rev and last-author info * 'svn help ' now shows proper switches * if no log message passed to commit, $EDITOR pops up * greatly improved/re-organized README, INSTALL, and HACKING docs * big progress on cvs2svn repository converter * faster retrieval of old revisions: turn off fs directory deltification * fixed broken behaviors in 'svn diff' and 'svn log' Developer-visible changes: * new fs code for detecting differences and relatedness * new cancellation editor, for event-driven users of libsvn_client * make .svn/ area readonly * continued development of ruby, java, and python (swig) bindings * new config-file parser * code reorganization and cleanup - huge conversion of svn_stringbuf_t --> char * - standardized on commit_info return structure - no more 'path styles' in path library - rewrite bootstrapping code for python test framework - rewrite commandline app's help-system and alias-system - feedback table replaced with notification callback - rewrite sorting of hashes - svnadmin internal rewrite - faster post-update processing - using SVN_ERR macros where they weren't - new svn_client_revision_t mechanism - txdelta windows are readonly now - pool debugging code moved to APR - various pool-usage fixes * build system evolution - apr-util now required - upgrade to neon 0.18.5 - much apr m4 macro churn - win32 updates, no longer needs precompiled neon - 'make check' when builddir != srcdir * fixes for many issues, including #624, 627, 580, 598, 591, 607. 609, 590, 565 [Versions 0.8 and older are only brief summaries] Version 0.8 (released 15 Jan 2002, revision 909) * newline conversion and keyword substitution (#524) * rewrite ra_local commit system to commit against HEAD (#463) * mod_dav_svn sends svndiffs now (#518) * code migration from libsvn_fs to libsvn_repos (#428) Version 0.7 (released 03 Dec 2001, revision 587) * 'svn cp/mv' completed: - can copy from wc/repos to wc/repos - This how we create branches/tags * 'svn mkdir' [WC_PATH|REPOS_URL] * 'svn delete' [REPOS_URL] Version 0.6 (released 12 Nov 2001, revision 444) * 'svn log' * 'svn cp/mv' from wc to wc Milestones M4/M5 (released 19 Oct 2001, revision 271) * network layer bugfixes * filesystem deltification Milestone M3 (released 30 Aug 2001, revision 1) * self-hosting begins, all history left behind in CVS repository. Milestone M2 (released 15 May 2001, from CVS, "milestone-2" tag) * filesystem library (libsvn_fs) * network layer (libsvn_ra_dav and mod_dav_svn) Milestone M1 (released 20 Oct 2000, from CVS, "milestone-1" tag) * working-copy library (libsvn_wc), using XML files Birth (05 June 2000) * CVS repository created. diff --git a/contrib/subversion/INSTALL b/contrib/subversion/INSTALL index 64f821a31057..44a916b4ac49 100644 --- a/contrib/subversion/INSTALL +++ b/contrib/subversion/INSTALL @@ -1,1464 +1,1470 @@ ====================================== INSTALLING SUBVERSION A Quick Guide ====================================== -$LastChangedDate: 2020-02-17 03:49:42 +0000 (Mon, 17 Feb 2020) $ +$LastChangedDate: 2020-12-18 04:00:24 +0000 (Fri, 18 Dec 2020) $ Contents: I. INTRODUCTION A. Audience B. Dependency Overview C. Dependencies in Detail D. Documentation II. INSTALLATION A. Building from a Tarball B. Building the Latest Source under Unix C. Building under Unix in Different Directories D. Installing from a Zip or Installer File under Windows E. Building the Latest Source under Windows III. BUILDING A SUBVERSION SERVER A. Setting Up Apache Httpd B. Making and Installing the Subversion Apache Server Module C. Configuring Apache Httpd for Subversion D. Running and Testing E. Alternative: 'svnserve' and ra_svn IV. PLATFORM-SPECIFIC ISSUES A. Windows XP B. Mac OS X V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) I. INTRODUCTION ============ A. Audience This document is written for people who intend to build Subversion from source code. Normally, the only people who do this are Subversion developers and package maintainers. If neither of these labels fits you, we recommend you find an appropriate binary package of Subversion and install that. While the Subversion project doesn't officially release binary packages, a number of volunteers have made such packages available for different operating systems. Most Linux and BSD distributions already have Subversion packages ready to go via standard packaging channels, and other volunteers have built 'installers' for both Windows and OS X. Visit this page for package links: https://subversion.apache.org/packages.html For those of you who still wish to build from source, Subversion follows the Unix convention of "./configure && make", but it has a number of dependencies. B. Dependency Overview You'll need the following build tools to compile Subversion: * autoconf 2.59 or later (Unix only) * libtool 1.4 or later (Unix only) * a reasonable C compiler (gcc, Visual Studio, etc.) Subversion also depends on the following third-party libraries: * libapr and libapr-util (REQUIRED for client and server) The Apache Portable Runtime (APR) library provides an abstraction of operating-system level services such as file and network I/O, memory management, and so on. It also provides convenience routines for things like hashtables, checksums, and argument processing. While it was originally developed for the Apache HTTP server, APR is a standalone library used by Subversion and other products. It is a critical dependency for all of Subversion; it's the layer that allows Subversion clients and servers to run on different operating systems. * SQLite (REQUIRED for client and server) Subversion uses SQLite to manage some internal databases. * libz (REQUIRED for client and server) Subversion uses zlib for compressing binary differences. These diff streams are used everywhere -- over the network, in the repository, and in the client's working copy. * utf8proc (REQUIRED for client and server) Subversion uses utf8proc for UTF-8 support, including Unicode normalization. * Apache Serf (OPTIONAL for client) The Apache Serf library allows the Subversion client to send HTTP requests. This is necessary if you want your client to access a repository served by the Apache HTTP server. There is an alternate 'svnserve' server as well, though, and clients automatically know how to speak the svnserve protocol. Thus it's not strictly necessary for your client to be able to speak HTTP... though we still recommend that your client be built to speak both HTTP and svnserve protocols. * OpenSSL (OPTIONAL for client and server) OpenSSL enables your client to access SSL-encrypted https:// URLs (using Apache Serf) in addition to unencrypted http:// URLs. To use SSL with Subversion's WebDAV server, Apache needs to be compiled with OpenSSL as well. * Netwide Assembler (OPTIONAL for client and server) The Netwide Assembler (NASM) is used to build the (optional) assembler modules of OpenSSL. As of OpenSSL 1.1.0 NASM is the only supported assembler. * Berkeley DB (DEPRECATED and OPTIONAL for client and server) When you create a repository, you have the option of specifying a storage 'back-end' implementation. Currently, there are two options. The newer and recommended one, known as FSFS, does not require Berkeley DB. FSFS stores data in a flat filesystem. The older implementation, known as BDB, has been deprecated and is not recommended for new repositories, but is still available. BDB stores data in a Berkeley DB database. This back-end will only be available if the BDB libraries are discovered at compile time. * libsasl (OPTIONAL for client and server) If the Cyrus SASL library is detected at compile time, then the svn client (and svnserve server) will be able to utilize SASL to do various forms of authentication when speaking the svnserve protocol. * Python, Perl, Java, Ruby (OPTIONAL) Subversion is mostly a collection of C libraries with well-defined APIs, with a small collection of programs that use the APIs. If you want to build Subversion API bindings for other languages, you need to have those languages available at build time. * py3c (OPTIONAL, but REQUIRED for Python bindings) The Python 3 Compatibility Layer for C Extensions is required to build the Python language bindings. * KDE Framework 5, libsecret, GNOME Keyring (OPTIONAL for client) Subversion contains optional support for storing passwords in KWallet via KDE Framework 5 libraries (preferred) or kdelibs4, and GNOME Keyring via libsecret (preferred) or GNOME APIs. * libmagic (OPTIONAL) If the libmagic library is detected at compile time, it will be used to determine mime-types of binary files which are added to version control. Note that mime-types configured via auto-props or the mime-types-file option take precedence. C. Dependencies in Detail Subversion depends on a number of third party tools and libraries. Some of them are only required to run a Subversion server; others are necessary just for a Subversion client. This section explains what other tools and libraries will be required so that Subversion can be built with the set of features you want. On Unix systems, the './configure' script will tell you if you are missing the correct version of any of the required libraries or tools, so if you are in a real hurry to get building, you can skip straight to section II. If you want to gather the pieces you will need before starting out, however, you should read the following. If you're just installing a Subversion client, the Subversion team has created a script that downloads the minimal prerequisite libraries (Apache Portable Runtime, Sqlite, and Zlib). The script, 'get-deps.sh', is available in the same directory as this file. When run, it will place 'apr', 'apr-util', 'serf', 'zlib', and 'sqlite-amalgamation' directories directly into your unpacked Subversion distribution. With the exception of sqlite-amalgamation, they will still need to be configured, built and installed explicitly, and Subversion's own configure script may need to be told where to find them, if they were not installed in standard system locations. Note: there are optional dependencies (such as OpenSSL, swig, and httpd) which get-deps.sh does not download. Note: Because previous builds of Subversion may have installed older versions of these libraries, you may want to run some of the cleanup commands described in section II.B before installing the following. - 1. Apache Portable Runtime 1.5 or newer (REQUIRED) + 1. Apache Portable Runtime 1.4 or newer (REQUIRED) Whenever you want to build any part of Subversion, you need the Apache Portable Runtime (APR) and the APR Utility (APR-util) libraries. If you do not have a pre-installed APR and APR-util, you will need to get these yourself: https://apr.apache.org/download.cgi On Unix systems, if you already have the APR libraries compiled and do not wish to regenerate them from source code, then Subversion needs to be able to find them. There are a couple of options to "./configure" that tell it where to look for the APR and APR-util libraries. By default it will try to locate the libraries using apr-config and apu-config scripts. These scripts provide all the relevant information for the APR and APR-util installations. If you want to specify the location of the APR library, you can use the "--with-apr=" option of "./configure". It should be able to find the apr-config script in the standard location under that directory (e.g. ${prefix}/bin). Similarly, you can specify the location of APR-util using the "--with-apr-util=" option to "./configure". It will look for the apu-config script relative to that directory. For example, if you want to use the APR libraries you built with the Apache httpd server, you could run: $ ./configure --with-apr=/usr/local/apache2 \ --with-apr-util=/usr/local/apache2 ... Be sure to use a native Windows SVN client (as opposed to Cygwin's version) so that the .dsp files get carriage-returns at the ends of their lines. Otherwise Visual Studio will complain that it doesn't recognize the .dsp files. If you use APR libraries checked out from svn in an Unix environment, you need to run the 'buildconf' script in each library's directory, to regenerate the configure scripts and other files required for compiling the libraries: $ cd apr; ./buildconf; ./configure ...; make; make install; cd .. $ cd apr-util; ./buildconf; ./configure ...; make; make install; cd .. Configure build and install both libraries before running Subversion's configure script. 2. SQLite (REQUIRED) Subversion requires SQLite version 3.8.2 or above. You can meet this dependency several ways: * Use an SQLite amalgamation file. * Specify an SQLite installation to use. * Let Subversion find an installed SQLite. To use an SQLite-provided amalgamation, just drop sqlite3.c into Subversion's sqlite-amalgamation/ directory, or point to it with the --with-sqlite configure option. This file also ships with the Subversion dependencies distribution, or you can download it from SQLite: https://www.sqlite.org/download.html 3. Zlib (REQUIRED) Subversion's binary-differencing engine depends on zlib for compression. Most Unix systems have libz pre-installed, but if you need it, you can get it from http://www.zlib.net/ 4. utf8proc (REQUIRED) Subversion uses utf8proc for UTF-8 support. Configure will attempt to locate utf8proc by default using pkg-config and known paths. If it is installed in a non-standard location, then use: --with-utf8proc=/path/to/libutf8proc Alternatively, a copy of utf8proc comes bundled with the Subversion sources. If configure should use the bundled copy, use: --with-utf8proc=internal 5. autoconf 2.59 or newer (Unix only) This is required only if you plan to build from the latest source (see section II.B). Generally only developers would be doing this. 6. libtool 1.4 or newer (Unix only) This is required only if you plan to build from the latest source (see section II.B). Note: Some systems (Solaris, for example) require libtool 1.4.3 or newer. The autogen.sh script knows about that. 7. Apache Serf library 1.3.4 or newer (OPTIONAL) If you want your client to be able to speak to an Apache server (via a http:// or https:// URL), you must link against Apache Serf. Though optional, we strongly recommend this. In order to use ra_serf, you must install serf, and run Subversion's ./configure with the argument --with-serf. If serf is installed in a non-standard place, you should use --with-serf=/path/to/serf/install instead. Apache Serf can be obtained via your system's package distribution system or directly from https://serf.apache.org/. For more information on Apache Serf and Subversion's ra_serf, see the file subversion/libsvn_ra_serf/README. 8. OpenSSL (OPTIONAL) ### needs some updates. I think Apache Serf automagically handles ### finding OpenSSL, but we may need more docco here. and w.r.t ### zlib. The Apache Serf library has support for SSL encryption by relying on the OpenSSL library. a. Using OpenSSL on the client through Apache Serf On Unix systems, to build Apache Serf with OpenSSL, you need OpenSSL installed on your system, and you must add "--with-ssl" as a "./configure" parameter. If your OpenSSL installation is hard for Apache Serf to find, you may need to use "--with-libs=/path/to/lib" in addition. In particular, on Red Hat (but not Fedora Core) it is necessary to specify "--with-libs=/usr/kerberos" for OpenSSL to be found. You can also specify a path to the zlib library using "--with-libs". Under Windows, you can specify the paths to these libraries by passing the options --with-zlib and --with-openssl to gen-make.py. b. Using OpenSSL on the Apache server You can also add support for these features to an Apache httpd server to be used for Subversion using the same support libraries. The Subversion build system will not provide them, however. You add them by specifying parameters to the "./configure" script of the Apache Server instead. For getting SSL on your server, you would add the "--enable-ssl" or "--with-ssl=/path/to/lib" option to Apache's "./configure" script. Apache enables zlib support by default, but you can specify a nonstandard location for the library with the "--with-z=/path/to/dir" option. Consult the Apache documentation for more details, and for other modules you may wish to install to enhance your Subversion server. If you don't already have it, you can get a copy of OpenSSL, including instructions for building and packaging on both Unix systems and Windows, at: https://www.openssl.org/ 9. Berkeley DB 4.X (DEPRECATED and OPTIONAL) You need the Berkeley DB libraries only if you are building a Subversion server that supports the older BDB repository storage back-end, or a Subversion client that can access local BDB repositories via the file:// URI scheme. The BDB back-end has been deprecated and is not recommended for new repositories. BDB may be removed in Subversion 2.0. We recommend the newer FSFS back-end for all new repositories. FSFS does not require the Berkeley DB libraries. If in doubt, the 'svnadmin info' command, added in Subversion 1.9, can identify whether an existing repository uses BDB or FSFS. The current recommended version of Berkeley DB is 4.4.20 or newer, which brings auto-recovery functionality to the Berkeley DB database environment. If you must use an older version of Berkeley DB, we *strongly* recommend using 4.3 or 4.2 over the 4.1 or 4.0 versions. Not only are these significantly faster and more stable, but they also enable Subversion repositories to automatically clean up database journal files to save disk space. You'll need Berkeley DB installed on your system. You can get it from: http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html If you have Berkeley DB installed in a place not searched by default for includes and libraries, add something like this: --with-berkeley-db=db.h:/usr/local/include/db4.7:/usr/local/lib/db4.7:db-4.7 to your `configure' switches, and the build process will use the Berkeley DB header and library in the named directories. You may need to use a different path, of course. Note that in order for the detection to succeed, the dynamic linker must be able to find the libraries at configure time. If you are on the Windows platform and want to build Subversion, a precompiled version of the Berkeley DB library is available for download at the Subversion web site "Documents & files" area: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688 Look in the "Releases > Windows > Windows BDB" section. 10. Cyrus SASL library (OPTIONAL) If the Simple Authentication and Security Layer (SASL) library is detected on your system, then the Subversion client and svnserve server can utilize its abilities for various forms of authentication. To learn more about SASL or to get the source code, visit: http://freshmeat.net/projects/cyrussasl/ 11. Apache Web Server 2.2.X or newer (OPTIONAL) (https://httpd.apache.org/download.cgi) The Apache httpd server is one of two methods to make your Subversion repository available over a network - the other is a custom server program called svnserve, which requires no extra software packages. Building Subversion, the Apache server, and the modules that Apache needs to communicate with Subversion are complicated enough that there is a whole section at the end of this document that describes how it is done: See section III for details. 12. Python 3.x or newer (https://www.python.org/) (OPTIONAL) Subversion does not require Python for its basic operation. However, Python is required for building and testing Subversion and for using Subversion's SWIG Python bindings or hook scripts coded in Python. The majority of Subversion's test suite is written in Python, as is part of Subversion's build system. In more detail, Python is required to do any of the following: * Use the SWIG Python bindings. * Use the ctypes Python bindings. * Use hook scripts coded in Python. * Build Subversion from a tarball on Unix-like systems and run Subversion's test suite as described in section II.B. * Build Subversion on Windows as described in section II.E. * Build Subversion from a working copy checked out from Subversion's own repository (whether or not running the test suite). * Build the SWIG Python bindings. * Build the ctypes Python bindings. * Testing as described in section III.D. The Python bindings are used by: * Third-party programs (e.g., ViewVC) * Scripts distributed with Subversion itself in the tools/ subdirectory. * Any in-house scripts you may have. Python is NOT required to do any of the following: * Use the core command-line binaries (svn, svnadmin, svnsync, etc.) * Use Subversion's C libraries. * Use any of Subversion's other language bindings. * Build Subversion from a tarball on Unix-like systems without running Subversion's test suite Although this section calls for Python 3.x, Subversion still technically works with Python 2.7. However, Support for Python 2.7 is being phased out. As of 1 January 2020, Python 2.7 has reached end of life. All users are strongly encouraged to move to Python 3. + Note: If you are using a Subversion distribution tarball and want + to build the Python bindings for Python 2, you should rebuild + the build environment in non-release mode by running + 'sh autogen.sh' before running the ./configure script; see + section II.B for more about autogen.sh. + 13. Perl 5.8 or newer (Windows only) (OPTIONAL) To build Subversion under any of the MS Windows platforms, you will also need Perl 5.8 or newer to run apr-util's w32locatedb.pl script. 14. pkg-config (Unix only, OPTIONAL) Subversion uses pkg-config to find appropriate options used at build time. 15. D-Bus (Unix only, OPTIONAL) D-Bus is a message bus system. D-Bus is required for support for KWallet and GNOME Keyring. pkg-config is needed to find D-Bus headers and library. 16. Qt 5 or Qt 4 (Unix only, OPTIONAL) Qt is a cross-platform application framework. QtCore, QtDBus and QtGui modules are required for support for KWallet. pkg-config is needed to find Qt headers and libraries. 17. KDE 5 Framework libraries or KDELibs 4 (Unix only, OPTIONAL) Subversion contains optional support for storing passwords in KWallet. Subversion will look for KF5Wallet, KF5CoreAddons, KF5I18n APIs by default, and needs kf5-config to find them. The KDELibs 4 api is also supported. KDELibs contains core KDE libraries. Subversion uses libkdecore and libkdeui libraries when support for KWallet is enabled. kde4-config is used to get some necessary options. pkg-config, D-Bus and Qt 4 are also required. If you want to build support for KWallet, then pass the '--with-kwallet' option to `configure`. If KDE is installed in a non-standard prefix, then use: --with-kwallet=/path/to/KDE/prefix 18. GLib 2 (Unix only, OPTIONAL) GLib is a general-purpose utility library. GLib is required for support for GNOME Keyring. pkg-config is needed to find GLib headers and library. 19. GNOME Keyring (Unix only, OPTIONAL) Subversion contains optional support for storing passwords in GNOME Keyring. pkg-config is needed to find GNOME Keyring headers and library. D-Bus and GLib are also required. If you want to build support for GNOME Keyring, then pass the '--with-gnome-keyring' option to `configure`. 20. Ctypesgen (OPTIONAL) Ctypesgen is Python wrapper generator for ctypes. It is used to generate a part of Subversion Ctypes Python bindings (CSVN). If you want to build CSVN, then pass the '--with-ctypesgen' option to `configure`. If ctypesgen.py is installed in a non-standard place, then use: --with-ctypesgen=/path/to/ctypesgen.py For more information on CSVN, see subversion/bindings/ctypes-python/README. 21. libmagic (OPTIONAL) Subversion's configure script attempts to find libmagic automatically. If it is installed in a non-standard location, then use: --with-libmagic=/path/to/libmagic/prefix The files include/magic.h and lib/libmagic.so.1.0 (or similar) are expected beneath this prefix directory. If they cannot be found Subversion will be compiled without support for libmagic. If libmagic is installed but support for it should not be compiled in, then use: --with-libmagic=no If configure should fail when libmagic is not present, but only the default locations should be searched, then use: --with-libmagic 22. LZ4 (OPTIONAL) Subversion uses LZ4 compression libary version r129 or above. Configure will attempt to locate the system library by default using pkg-config and known paths. If it is installed in a non-standard location, then use: --with-lz4=/path/to/liblz4 If configure should use the version bundled with the sources, use: --with-lz4=internal 23. py3c (OPTIONAL) Subversion uses the Python 3 Compatibility Layer for C Extensions (py3c) library when building the Python language bindings. As py3c is a header-only library, it is needed only to build the bindings, not to use them. Configure will attempt to locate py3c by default using pkg-config and known paths. If it is installed in a non-standard location, then use: --with-py3c=/path/to/py3c/prefix The library can be downloaded from GitHub: https://github.com/encukou/py3c On Unix systems, you can also use the provided get-deps.sh script to download py3c and several other dependencies; see the top of section I.C for more about get-deps.sh. D. Documentation The primary documentation for Subversion is the free book "Version Control with Subversion", a.k.a. "The Subversion Book", obtainable from http://svnbook.red-bean.com/. Various additional documentation exists in the doc/ subdirectory of the Subversion source. See the file doc/README for more information. II. INSTALLATION ============ A. Building from a Tarball ------------------------------ 1. Building from a Tarball Download the most recent distribution tarball from: https://subversion.apache.org/download/ Unpack it, and use the standard GNU procedure to compile: $ ./configure $ make # make install You can also run the full test suite by running 'make check'. Even in successful runs, some tests will report XFAIL; that is normal. Failed runs are indicated by FAIL or XPASS results, or a non-zero exit code from "make check". B. Building the Latest Source under Unix ------------------------------------- These instructions assume you have already installed Subversion and checked out a working copy of Subversion's own code -- either the latest /trunk code, or some branch or tag. You also need to have already installed whatever prerequisites that version of Subversion requires (if you haven't, the ./configure step should complain). You can discard the directory created by the tarball; you're about to build the latest, greatest Subversion client. This is the procedure Subversion developers use. First off, if you have any Subversion libraries lying around from previous 'make installs', clean them up first! # rm -f /usr/local/lib/libsvn* # rm -f /usr/local/lib/libapr* # rm -f /usr/local/lib/libserf* Start the process by running "autogen.sh": $ sh ./autogen.sh This script will make sure you have all the necessary components available to build Subversion. If any are missing, you will be told where to get them from. (See the 'Dependency Overview' in section I.) Note: if the command "autoconf" on your machine does not run autoconf 2.59 or later, but you do have a new enough autoconf available, then you can specify the correct one with the AUTOCONF variable. (The AUTOHEADER variable is similar.) This may be required on Debian GNU/Linux, where "autoconf" is actually a Perl script that attempts to guess which version is required -- because of the interaction between Subversion's and APR's configuration systems, the Perl script may get it wrong. So for example, you might need to do: $ AUTOCONF=autoconf2.59 sh ./autogen.sh Once you've prepared the working copy by running autogen.sh, just follow the usual configuration and build procedure: $ ./configure $ make # make install (Optionally, you might want to pass --enable-maintainer-mode to the ./configure script. This enables debugging symbols in your binaries (among other things) and most Subversion developers use it.) Since the resulting binary depends on shared libraries, the destination library directory must be identified in your operating system's library search path. That is in either /etc/ld.so.conf or $LD_LIBRARY_PATH for Linux systems and in /etc/rc.conf for FreeBSD, followed by a run of the 'ldconfig' program. Check your system documentation for details. By identifying the destination directory, Subversion will be able to dynamically load repository access plugins. If you try to do a checkout and see an error like: subversion/libsvn_ra/ra_loader.c:209: (apr_err=170000) svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/subversion/trunk' It probably means that the dynamic loader/linker can't find all of the libsvn_* libraries. C. Building under Unix in Different Directories -------------------------------------------- It is possible to configure and build Subversion on Unix in a directory other than the working copy. For example $ svn co https://svn.apache.org/repos/asf/subversion/trunk svn $ cd svn $ # get SQLite amalgamation if required $ chmod +x autogen.sh $ ./autogen.sh $ mkdir ../obj $ cd ../obj $ ../svn/configure [...with options as appropriate...] $ make puts the Subversion working copy in the directory svn and builds it in a separate, parallel directory obj. Why would you want to do this? Well there are a number of reasons... * You may prefer to avoid "polluting" the working copy with files generated during the build. * You may want to put the build directory and the working copy on different physical disks to improve performance. * You may want to separate source and object code and only backup the source. * You may want to remote mount the working copy on multiple machines, and build for different machines from the same working copy. * You may want to build multiple configurations from the same working copy. The last reason above is possibly the most useful. For instance you can have separate debug and optimized builds each using the same working copy. Or you may want a client-only build and a client-server build. Using multiple build directories you can rebuild any or all configurations after an edit without the need to either clean and reconfigure, or identify and copy changes into another working copy. D. Installing from a Zip or Installer File under Windows ----------------------------------------------------- Of all the ways of getting a Subversion client, this is the easiest. Download a Zip or self-extracting installer via: https://subversion.apache.org/packages.html#windows For a Zip file extract the DLLs and EXEs to a directory of your choice. Included in the download are among other tools the SVN client, the SVNADMIN administration tool and the SVNLOOK reporting tool. You may want to add the bin directory in the Subversion folder to your PATH environment variable so as to not have to use the full path when running Subversion commands. To test the installation, open a DOS box (run either "cmd" or "command" from the Start menu's "Run..." menu option), change to the directory you installed the executables into, and run: C:\test>svn co https://svn.apache.org/repos/asf/subversion/trunk svn This will get the latest Subversion sources and put them into the "svn" subdirectory. If using a self-extracting .exe file, just run it instead of unzipping it, to install Subversion. E. Building the Latest Source under Windows ---------------------------------------- E.1 Prerequisites * Microsoft Visual Studio. Any recent (2005+) version containing the Visual C++ component will work (E.g. Professional, Express, Community Edition). Make sure you enable C++ support during setup. * Python 2.7 or higher, downloaded from https://www.python.org/ which is used to generate the project files. * Perl 5.8 or higher from https://www.perl.org/get.html * Awk (from https://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe) is needed to compile Apache. Note that this is the actual awk program, not an installer - just rename it to awk.exe and it is ready to use. * Apache apr, apr-util, and optionally apr-iconv libraries, version - 1.5 or later (1.2 for apr-iconv). If you are building from a Subversion + 1.4 or later (1.2 for apr-iconv). If you are building from a Subversion checkout and have not downloaded Apache 2, then get these 3 libraries from https://www.apache.org/dist/apr/. * SQLite 3.8.2 or higher from https://www.sqlite.org/download.html (3.8.11.1 or higher recommended) * ZLib 1.2 or higher is required and can be obtained from http://www.zlib.net/ * Either a Subversion client binary from https://subversion.apache.org/packages.html to do the initial checkout of the Subversion source or the zip file source distribution. Additional Options * [Optional] Apache Httpd 2 source, downloaded from https://httpd.apache.org/download.cgi, these instructions assume version 2.0.58. This is only needed for building the Subversion server Apache modules. ### FIXME Apache 2.2 or greater required. * [Optional] Berkeley DB for backend support of the server components are available from http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html (Version 4.4.20 or in specific cases some higher version recommended) For more information see Section I.C.7. * [Optional] Openssl can be obtained from https://www.openssl.org/source/ * [Optional] NASM can be obtained from http://www.nasm.us/ * [Optional] A modified version of GNU libintl, called svn-win32-libintl.zip, can be used for displaying localized messages. Available at: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627 * [Optional] GNU gettext for generating message catalog (.mo) files from message translations. You can get the latest binaries from http://gnuwin32.sourceforge.net/. You'll need the binaries (gettext-0.14.1-bin.zip) and dependencies (gettext-0.14.1-dep.zip). E.2 Notes The Apache Serf library supports secure connections with OpenSSL and on-the-wire compression with zlib. If you want to use the secure connections feature, you should pass the option "--with-openssl" to the gen-make.py script. See Section I.C.6 for more details. E.3 Preparation This section describes how to unpack the files to make a build tree. * Make a directory SVN and cd into it. * Either checkout Subversion: svn co https://svn.apache.org/repos/asf/subversion/trunk src-trunk or unpack the zip file distribution and rename the directory to src-trunk. * Install Visual Studio Environment. You either have to tell the installer to register environment variables or run VCVARS32.BAT before building anything. If you are using a newer Visual Studio, use the 'Visual Studio 20xx Command Prompt' on the Start menu. * Install Python and add it to your path * Install Perl (it should add itself to the path) ### Subversion doesn't need perl. Only some dependencies need it (OpenSSL and some apr scripts) * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add the directory containing it (e.g. SVN\awk) to the path. ### Subversion doesn't need awk. Only some dependencies need it (some apr scripts) * [Optional] Install NASM and add it to your path ### Subversion doesn't need NASM. Only some dependencies need it optionally (OpenSSL) * [Optional] If you checked out Subversion from the repository and want to build Subversion with http/https access support then install the Apache Serf sources into SVN\src-trunk\serf. * [Optional] If you want BDB backend support, extract the Berkeley DB files into SVN\src-trunk\db4-win32. It's a good idea to add SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find the Berkeley DB DLLs. [NOTE: This binary package of Berkeley DB is provided for convenience only. Please don't address questions about Berkeley DB that aren't directly related to using Subversion to the project mailing list.] If you build Berkeley DB from the source, you will have to copy the file db-x.x.x\build_win32\db.h to SVN\src-trunk\db4-win32\include, and all the import libraries to SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in your path. ### Just use --with-serf instead of the hardcoded path * [Optional] If you want to build the server modules, extract Apache source into SVN\httpd-2.x.x. * If you are building from a checkout of Subversion, and you are NOT building Apache, then you will need the APR libraries. Depending on how you got your version of APR, either: - Extract the APR, APR-util and APR-iconv source distributions into SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively. Or: - Extract the apr, apr-util and apr-iconv directories from the srclib folder in the Apache httpd source into SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively. ### Just use --with-apr, etc. instead of the hardcoded paths * Extract the ZLib sources into SVN\zlib if you are not using the zlib included in the dependencies zip file. ### Just use --with-zlib instead of the hardcoded path * [Optional] If you want secure connection (https) client support extract OpenSSL into SVN\openssl ### And pass the path to both serf and gen-make.py * [Optional] If you want localized message support, extract svn-win32-libintl.zip into SVN\svn-win32-libintl and extract gettext-x.x.x-bin.zip and gettext-x.x.x-dep.zip into SVN\gettext-x.x.x-bin. Add SVN\gettext-x.x.x-bin\bin to your path. * Download the SQLite amalgamation from https://www.sqlite.org/download.html and extract it into SVN\sqlite-amalgamation. See I.C.12 for alternatives to using the amalgamation package. E.4 Building the Binaries To build the binaries either follow these instructions. Start in the SVN directory you created. Set up the environment (commands should be one line even if wrapped here). C:>set VER=trunk C:>set DIR=trunk C:>set BUILD_ROOT=C:\SVN C:>set PYTHONDIR=C:\Python27 C:>set AWKDIR=C:\SVN\Awk C:>set ASMDIR=C:\SVN\asm C:>set SDKINC="C:\Program Files\Microsoft SDK\include" C:>set SDKLIB="C:\Program Files\Microsoft SDK\lib" C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin C:>PATH=%PATH%;%BUILD_ROOT%\src-%DIR%\db4-win32;%ASMDIR%; %PYTHONDIR%;%AWKDIR%;%GETTEXTBIN% C:>set INCLUDE=%SDKINC%;%INCLUDE% C:>set LIB=%SDKLIB%;%LIB% OpenSSL < 1.1.0 C:>cd openssl C:>perl Configure VC-WIN32 [*] C:>call ms\do_masm C:>nmake -f ms\ntdll.mak C:>cd out32dll C:>call ..\ms\test C:>cd ..\.. *Note: Use "call ms\do_nasm" if you have nasm instead of MASM, or "call ms\do_ms" if you don't have an assembler. Also if you are using OpenSSL >= 1.0.0 masm is no longer supported. You will have to use do_nasm or do_ms in this case. OpenSSL >= 1.1.0 C:>cd openssl C:>perl Configure VC-WIN32 C:>nmake C:>nmake test C:>cd .. Apache 2 This step is only required for building the server dso modules. ### FIXME Apache 2.2 or greater required. Old build instructions for VC6. C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2 C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release" APR If you downloaded APR / APR-UTIL / APR_ICONV by source, you will have to build these libraries first. Building these libraries on Windows is straight forward and in most cases as simple as issuing these two commands: C:>nmake -f Makefile.win C:>nmake -f Makefile.win install Please refer to the build instructions provided by the library source for actual build instructions. ZLib If you downloaded the zlib source, you will have to build ZLib first. Building ZLib using Visual Studio should be quite simple. Just open the appropriate solution and build the project zlibstat using the IDE. Please refer to the build instructions provided by the library source for actual build instructions. Note that you'd make sure to define ZLIB_WINAPI in the ZLib config header and move the lib-file into the zlib root-directory. Apache Serf ### Section about Apache Serf might be required/useful to add. ### scons is required too and Apache Serf needs to be configured prior to ### be able to build Subversion using: ### scons APR=[PATH_TO_APR] APU=[PATH_TO_APU] OPENSSL=[PATH_TO_OPENSSL] ### ZLIB=[PATH_TO_ZLIB] PREFIX=[PATH_TO_SERF_DEST] ### scons check ### scons install Subversion Things to note: * If you don't want to build mod_dav_svn, omit the --with-httpd option. The zip file source distribution contains apr, apr-util and apr-iconv in the default build location. If you have downloaded the apr files yourself you will have to tell the generator where to find the APR libraries; the options are --with-apr, --with-apr-util and --with-apr-iconv. * If you would like a debug build substitute Debug for Release in the msbuild command. * There have been rumors that Subversion on Win32 can be built using the latest cygwin, you probably don't want the zip file source distribution though. ymmv. * You will also have to distribute the C runtime dll with the binaries. Also, since Apache/APR do not provide .vcproj files, you will need to convert the Apache/APR .dsp files to .vcproj files with Visual Studio before building -- just open the Apache .dsw file and answer 'Yes To All' when the conversion dialog pops up, or you can open the individual .dsp files and convert them one at a time. The Apache/APR projects required by Subversion are: apr-util\libaprutil.dsp, apr\libapr.dsp, apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp, apr-iconv\ccs\libapriconv_ccs_modules.dsp, and apr-iconv\ces\libapriconv_ces_modules.dsp. * If the server dso modules are being built and tested Apache must not be running or the copy of the dso modules will fail. C:>cd src-%DIR% If Apache 2 has been built and the server modules are required then gen-make.py will already have been run. If the source is from the zip file, Apache 2 has not been built so gen-make.py must be run: C:>python gen-make.py --vsnet-version=20xx --with-berkeley-db=db4-win32 --with-openssl=..\openssl --with-zlib=..\zlib --with-libintl=..\svn-win32-libintl Then build subversion: C:>msbuild subversion_vcnet.sln /t:__MORE__ /p:Configuration=Release C:>cd .. The binaries have now been built. E.5 Packaging the binaries You now need to copy the binaries ready to make the release zip file. You also need to do this to run the tests as the new binaries need to be in your path. You can use the build/win32/make_dist.py script in the Subversion source directory to do that. [TBD: Describe how to do this. Note dependencies on zip, jar, doxygen.] E.6 Testing the Binaries [TBD: It's been a long, long while since it was necessary to move binaries around for testing. win-tests.py does that automagically. Fix this section accordingly, and probably reorder, putting the packaging at the end.] The build process creates the binary test programs but it does not copy the client tests into the release test area. C:>cd src-%DIR% C:>mkdir Release\subversion\tests\cmdline C:>xcopy /S /Y subversion\tests\cmdline Release\subversion\tests\cmdline If the server dso modules have been built then copy the dso files and dlls into the Apache modules directory. C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so "%APACHEDIR%"\modules C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so "%APACHEDIR%"\modules C:>copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin" C:>copy svn-win32-%VER%\bin\iconv.dll "%APACHEDIR%\bin" C:>copy svn-win32-%VER%\bin\libdb42.dll "%APACHEDIR%\bin" C:>cd .. Put the svn-win32-trunk\bin directory at the start of your path so you run the newly built binaries and not another version you might have installed. Then run the client tests: C:>PATH=%BUILD_ROOT%\svn-win32-%VER%\bin;%PATH% C:>cd src-%DIR% C:>python win-tests.py -c -r -v If the server dso modules were built configure Apache to use the mod_dav_svn and mod_authz_svn modules by making sure these lines appear uncommented in httpd.conf: LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so And further down the file add location directives to point to the test repositories. Change the paths to the SVN directory you created (paths should be on one line even if wrapped here): DAV svn SVNParentPath C:/SVN/src-trunk/Release/subversion/tests/cmdline/ svn-test-work/repositories DAV svn SVNPath c:/SVN/src-trunk/Release/subversion/tests/cmdline/ svn-test-work/local_tmp/repos Then restart Apache and run the tests: C:>python win-tests.py -c -r -v -u http://localhost C:>cd .. III. BUILDING A SUBVERSION SERVER ============================ Subversion has two servers you can choose from: svnserve and Apache. svnserve is a small, lightweight server program that is automatically compiled when you build Subversion's source. Apache is a more heavyweight HTTP server, but tends to have more features. This section primarily focuses on how to build Apache and the accompanying mod_dav_svn server module for it. If you plan to use svnserve instead, jump right to section E for a quick explanation. A. Setting Up Apache Httpd ----------------------- 1. Obtaining and Installing Apache Httpd 2 Subversion tries to compile against the latest released version of Apache httpd 2.2+. The easiest thing for you to do is download a source tarball of the latest release and unpack that. If you have questions about the Apache httpd 2.2 build, please consult the httpd install documentation: https://httpd.apache.org/docs-2.2/install.html At the top of the httpd tree: $ ./buildconf $ ./configure --enable-dav --enable-so --enable-maintainer-mode The first arg says to build mod_dav. The second arg says to enable shared module support which is needed for a typical compile of mod_dav_svn (see below). The third arg says to include debugging information. If you built Subversion with --enable-maintainer-mode, then you should do the same for Apache; there can be problems if one was compiled with debugging and the other without. Note: if you have multiple db versions installed on your system, Apache might link to a different one than Subversion, causing failures when accessing the repository through Apache. To prevent this from happening, you have to tell Apache which db version to use and where to find db. Add --with-dbm=db4 and --with-berkeley-db=/usr/local/BerkeleyDB.4.2 to the configure line. Make sure this is the same db as the one Subversion uses. This note assumes you have installed Berkeley DB 4.2.52 at its default locations. For more info about the db requirement, see section I.C.7. You may also want to include other modules in your build. Add --enable-ssl to turn on SSL support, and --enable-deflate to turn on compression support, for example. Consult the Apache documentation for more details. All instructions below assume you configured Apache to install in its default location, /usr/local/apache2/; substitute appropriately if you chose some other location. Compile and install apache: $ make && make install B. Making and Installing the Subversion Apache Server Module --------------------------------------------------------- Go back into your subversion working copy and run ./autogen.sh if you need to. Then, assuming Apache httpd 2.2 is installed in the standard location, run: $ ./configure Note: do *not* configure subversion with "--disable-shared"! mod_dav_svn *must* be built as a shared library, and it will look for other libsvn_*.so libraries on your system. If you see a warning message that the build of mod_dav_svn is being skipped, this may be because you have Apache httpd 2.x installed in a non-standard location. You can use the "--with-apxs=" option to locate the apxs script: $ ./configure --with-apxs=/usr/local/apache2/bin/apxs Note: it *is* possible to build mod_dav_svn as a static library and link it directly into Apache. Possible, but painful. Stick with the shared library for now; if you can't, then ask. $ rm /usr/local/lib/libsvn* If you have old subversion libraries sitting on your system, libtool will link them instead of the `fresh' ones in your tree. Remove them before building subversion. $ make clean && make && make install After the make install, the Subversion shared libraries are in /usr/local/lib/. mod_dav_svn.so should be installed in /usr/local/libexec/ (or elsewhere, such as /usr/local/apache2/modules/, if you passed --with-apache-libexecdir to configure). Section II.E explains how to build the server on Windows. C. Configuring Apache Httpd for Subversion --------------------------------------- The following section is an abbreviated version of the information in the Subversion Book (http://svnbook.red-bean.com). Please read chapter 6 for more details. The following assumes you have already created a repository. For documentation on how to do that, see README. The following also assumes that you have modified /usr/local/apache2/conf/httpd.conf to reflect your setup. At a minimum you should look at the User, Group and ServerName directives. Full details on setting up apache can be found at: https://httpd.apache.org/docs-2.2/ First, your httpd.conf needs to load the mod_dav_svn module. If you pass --enable-mod-activation to Subversion's configure, 'make install' target should automatically add this line for you. In any case, if Apache HTTPD gives you an error like "Unknown DAV provider: svn", then you may want to verify that this line exists in your httpd.conf: LoadModule dav_svn_module modules/mod_dav_svn.so NOTE: if you built mod_dav as a dynamic module as well, make sure the above line appears after the one that loads mod_dav.so. Next, add this to the *bottom* of your httpd.conf: DAV svn SVNPath /absolute/path/to/repository This will give anyone unrestricted access to the repository. If you want limited access, read or write, you add these lines to the Location block: AuthType Basic AuthName "Subversion repository" AuthUserFile /my/svn/user/passwd/file And: a) For a read/write restricted repository: Require valid-user b) For a write restricted repository: Require valid-user c) For separate restricted read and write access: AuthGroupFile /my/svn/group/file Require group svn_committers Require group svn_committers Require group svn_readers ### FIXME Tutorials section refers to old 2.0 docs These are only a few simple examples. For a complete tutorial on Apache access control, please consider taking a look at the tutorials found under "Security" on the following page: https://httpd.apache.org/docs-2.0/misc/tutorials.html In order for 'svn cp' to work (which is actually implemented as a DAV COPY command), mod_dav needs to be able to determine the hostname of the server. A standard way of doing this is to use Apache's ServerName directive to set the server's hostname. Edit your /usr/local/apache2/conf/httpd.conf to include: ServerName svn.myserver.org If you are using virtual hosting through Apache's NameVirtualHost directive, you may need to use the ServerAlias directive to specify additional names that your server is known by. If you have configured mod_deflate to be in the server, you can enable compression support for your repository by adding the following line to your Location block: SetOutputFilter DEFLATE NOTE: If you are unfamiliar with an Apache directive, or not exactly sure about what it does, don't hesitate to look it up in the documentation: https://httpd.apache.org/docs-2.2/mod/directives.html. NOTE: Make sure that the user 'nobody' (or whatever UID the httpd process runs as) has permission to read and write the Berkeley DB files! This is a very common problem. D. Running and Testing ------------------- Fire up apache 2: $ /usr/local/apache2/bin/apachectl stop $ /usr/local/apache2/bin/apachectl start Check /usr/local/apache2/logs/error_log to make sure it started up okay. Try doing a network checkout from the repository: $ svn co http://localhost/svn/repos wc The most common reason this might fail is permission problems reading the repository db files. If the checkout fails, make sure that the httpd process has permission to read and write to the repository. You can see all of mod_dav_svn's complaints in the Apache error logfile, /usr/local/apache2/logs/error_log. To run the regression test suite for networked Subversion, see the instructions in subversion/tests/cmdline/README. For advice about tracing problems, see "Debugging the server" in https://subversion.apache.org/docs/community-guide/. E. Alternative: 'svnserve' and ra_svn ----------------------------------- An alternative network layer is libsvn_ra_svn (on the client side) and the 'svnserve' process on the server. This is a simple network layer that speaks a custom protocol over plain TCP (documented in libsvn_ra_svn/protocol): $ svnserve -d # becomes a background daemon $ svn checkout svn://localhost/usr/local/svn/repository You can use the "-r" option to svnserve to set a logical root for repositories, and the "-R" option to restrict connections to read-only access. ("Read-only" is a logical term here; svnserve still needs write access to the database in this mode, but will not allow commits or revprop changes.) 'svnserve' has built-in CRAM-MD5 authentication (so you can use non-system accounts), and can also be tunneled over SSH (so you can use existing system accounts). It's also capable of using Cyrus SASL if libsasl2 is detected at ./configure time. Please read chapter 6 in the Subversion Book (http://svnbook.red-bean.com) for details on these features. IV. PLATFORM-SPECIFIC ISSUES ======================== A. Windows XP ---------- There is an error in the Windows XP TCP/IP stack which causes corruption in certain cases. This problem is exposed only through ra_dav. The root of the matter is caused by duplicating file handles between parent and child processes. The httpd Apache group explains this a lot better: https://www.apache.org/dist/httpd/binaries/win32/#xpbug And there's an item about this in the Subversion FAQ: https://subversion.apache.org/faq.html#windows-xp-server The only known workaround for now is to update to Windows XP SP1 (or higher). B. Mac OS X -------- [TBD: Describe BDB 4.0.x problem] V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) ======================================================== For Python, Perl and Ruby bindings, see the file ./subversion/bindings/swig/INSTALL For Java bindings, see the file ./subversion/bindings/javahl/README diff --git a/contrib/subversion/NOTICE b/contrib/subversion/NOTICE index a3e794d536e7..84d77667c40d 100644 --- a/contrib/subversion/NOTICE +++ b/contrib/subversion/NOTICE @@ -1,34 +1,34 @@ Apache Subversion -Copyright 2020 The Apache Software Foundation +Copyright 2021 The Apache Software Foundation This product includes software developed by many people, and distributed under Contributor License Agreements to The Apache Software Foundation (http://www.apache.org/). See the accompanying COMMITTERS file and the revision logs for an exact contribution history. Portions of the test suite for Subversion's Python bindings are copyrighted by Edgewall Software, Jonas Borgström and Christopher Lenz. For more information, see LICENSE. This product includes software developed under the X Consortium License see: build/install-sh This product includes software developed by Markus Kuhn under a permissive license, see LICENSE. This software contains code derived from the RSA Data Security Inc. MD5 Message-Digest Algorithm, including various modifications by Spyglass Inc., Carnegie Mellon University, and Bell Communications Research, Inc (Bellcore). This product includes software developed by Public Software Group e. V. under a permissive license, see LICENSE. This software contains code derived from TropicSSL under a BSD 3-Clause license, see LICENSE. This product includes code derived from the software developed by Yann Collet under a BSD 2-Clause license, see LICENSE. This product includes code derived from the software developed by Thomas Porschberg and Peter Adolphs under a permissive license, see LICENSE. diff --git a/contrib/subversion/autogen.sh b/contrib/subversion/autogen.sh index 84a6e2ca33cc..6579daa9e415 100755 --- a/contrib/subversion/autogen.sh +++ b/contrib/subversion/autogen.sh @@ -1,247 +1,247 @@ #!/bin/sh # # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # ### Run this to produce everything needed for configuration. ### # Some shells can produce output when running 'cd' which interferes # with the construct 'abs=`cd dir && pwd`'. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Run tests to ensure that our build requirements are met RELEASE_MODE="" RELEASE_ARGS="" SKIP_DEPS="" while test $# != 0; do case "$1" in --release) RELEASE_MODE="$1" RELEASE_ARGS="--release" shift ;; -s) SKIP_DEPS="yes" shift ;; --) # end of option parsing break ;; *) echo "invalid parameter: '$1'" exit 1 ;; esac done # ### The order of parameters is important; buildcheck.sh depends on it and # ### we don't want to copy the fancy option parsing loop there. For the # ### same reason, all parameters should be quoted, so that buildcheck.sh # ### sees an empty arg rather than missing one. ./build/buildcheck.sh "$RELEASE_MODE" || exit 1 # Handle some libtool helper files # # ### eventually, we can/should toss this in favor of simply using # ### APR's libtool. deferring to a second round of change... # # Much like APR except we do not prefer libtool 1 over libtool 2. libtoolize="`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`" lt_major_version=`$libtoolize --version 2>/dev/null | sed -e 's/^[^0-9]*//' -e 's/\..*//' -e '/^$/d' -e 1q` if [ "x$libtoolize" = "x" ]; then echo "libtoolize not found in path" exit 1 fi rm -f build/config.guess build/config.sub $libtoolize --copy --automake --force ltpath="`dirname $libtoolize`" if [ "x$LIBTOOL_M4" = "x" ]; then ltm4_error='(try setting the LIBTOOL_M4 environment variable)' if [ -d "$ltpath/../share/aclocal/." ]; then ltm4=`cd "$ltpath/../share/aclocal" && pwd` else echo "Libtool helper path not found $ltm4_error" echo " expected at: '$ltpath/../share/aclocal'" exit 1 fi else ltm4_error="(the LIBTOOL_M4 environment variable is: $LIBTOOL_M4)" ltm4="$LIBTOOL_M4" fi ltfile="$ltm4/libtool.m4" if [ ! -f "$ltfile" ]; then echo "$ltfile not found $ltm4_error" exit 1 fi echo "Copying libtool helper: $ltfile" # An ancient helper might already be present from previous builds, # and it might be write-protected (e.g. mode 444, seen on FreeBSD). # This would cause cp to fail and print an error message, but leave # behind a potentially outdated libtool helper. So, remove before # copying: rm -f build/libtool.m4 cp "$ltfile" build/libtool.m4 for file in ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4; do rm -f build/$file if [ $lt_major_version -ge 2 ]; then ltfile="$ltm4/$file" if [ ! -f "$ltfile" ]; then echo "$ltfile not found $ltm4_error" exit 1 fi echo "Copying libtool helper: $ltfile" cp "$ltfile" "build/$file" fi done if [ $lt_major_version -ge 2 ]; then if [ "x$LIBTOOL_CONFIG" = "x" ]; then ltconfig_error='(try setting the LIBTOOL_CONFIG environment variable)' if [ -d "$ltpath/../share/libtool/config/." ]; then ltconfig=`cd "$ltpath/../share/libtool/config" && pwd` elif [ -d "$ltpath/../share/libtool/build-aux/." ]; then ltconfig=`cd "$ltpath/../share/libtool/build-aux" && pwd` else echo "Autoconf helper path not found $ltconfig_error" echo " expected at: '$ltpath/../share/libtool/config'" echo " or: '$ltpath/../share/libtool/build-aux'" exit 1 fi else ltconfig_error="(the LIBTOOL_CONFIG environment variable is: $LIBTOOL_CONFIG)" ltconfig="$LIBTOOL_CONFIG" fi for file in config.guess config.sub; do configfile="$ltconfig/$file" if [ ! -f "$configfile" ]; then echo "$configfile not found $ltconfig_error" exit 1 fi echo "Copying autoconf helper: $configfile" cp "$configfile" build/$file done fi # Create the file detailing all of the build outputs for SVN. # # Note: this dependency on Python is fine: only SVN developers use autogen.sh # and we can state that dev people need Python on their machine. Note # that running gen-make.py requires Python 2.7 or newer. PYTHON="`./build/find_python.sh`" if test -z "$PYTHON"; then echo "Python 2.7 or later is required to run autogen.sh" echo "If you have a suitable Python installed, but not on the" echo "PATH, set the environment variable PYTHON to the full path" echo "to the Python executable, and re-run autogen.sh" exit 1 fi # Compile SWIG headers into standalone C files if we are in release mode if test -n "$RELEASE_MODE"; then echo "Generating SWIG code..." # Generate build-outputs.mk in non-release-mode, so that we can # build the SWIG-related files "$PYTHON" ./gen-make.py build.conf || gen_failed=1 # Build the SWIG-related files make -f autogen-standalone.mk autogen-swig || gen_failed=1 - # Remove the .swig_checked file - rm -f .swig_checked + # Remove the .swig_*checked files + rm -f .swig_checked .swig_pl_checked .swig_py_checked .swig_rb_checked fi if test -n "$SKIP_DEPS"; then echo "Creating build-outputs.mk (no dependencies)..." "$PYTHON" ./gen-make.py $RELEASE_ARGS -s build.conf || gen_failed=1 else echo "Creating build-outputs.mk..." "$PYTHON" ./gen-make.py $RELEASE_ARGS build.conf || gen_failed=1 fi if test -n "$RELEASE_MODE"; then find build/ -name '*.pyc' -exec rm {} \; fi rm autogen-standalone.mk if test -n "$gen_failed"; then echo "ERROR: gen-make.py failed" exit 1 fi # Produce config.h.in echo "Creating svn_private_config.h.in..." ${AUTOHEADER:-autoheader} # If there's a config.cache file, we may need to delete it. # If we have an existing configure script, save a copy for comparison. if [ -f config.cache ] && [ -f configure ]; then cp configure configure.$$.tmp fi # Produce ./configure echo "Creating configure..." ${AUTOCONF:-autoconf} # If we have a config.cache file, toss it if the configure script has # changed, or if we just built it for the first time. if [ -f config.cache ]; then ( [ -f configure.$$.tmp ] && cmp configure configure.$$.tmp > /dev/null 2>&1 ) || ( echo "Tossing config.cache, since configure has changed." rm config.cache ) rm -f configure.$$.tmp fi # Remove autoconf 2.5x's cache directory rm -rf autom4te*.cache echo "" echo "You can run ./configure now." echo "" echo "Running autogen.sh implies you are a maintainer. You may prefer" echo "to run configure in one of the following ways:" echo "" echo "./configure --enable-maintainer-mode" echo "./configure --disable-shared" echo "./configure --enable-maintainer-mode --disable-shared" echo "./configure --disable-optimize --enable-debug" echo "./configure CFLAGS='--flags-for-C' CXXFLAGS='--flags-for-C++'" echo "" echo "Note: If you wish to run a Subversion HTTP server, you will need" echo "Apache 2.x. See the INSTALL file for details." echo "" diff --git a/contrib/subversion/build-outputs.mk b/contrib/subversion/build-outputs.mk index aee265351a80..3f7ac1a100f8 100644 --- a/contrib/subversion/build-outputs.mk +++ b/contrib/subversion/build-outputs.mk @@ -1,3619 +1,3630 @@ # DO NOT EDIT -- AUTOMATICALLY GENERATED BY build/generator/gen_make.py # FROM build/generator/templates/build-outputs.mk.ezt ######################################## # Section 1: Global make variables ######################################## FS_BASE_DEPS = subversion/libsvn_fs_base/libsvn_fs_base-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la FS_BASE_LINK = ../../subversion/libsvn_fs_base/libsvn_fs_base-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la FS_FS_DEPS = subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la FS_FS_LINK = ../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la FS_X_DEPS = subversion/libsvn_fs_x/libsvn_fs_x-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la FS_X_LINK = ../../subversion/libsvn_fs_x/libsvn_fs_x-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la RA_LOCAL_DEPS = subversion/libsvn_ra_local/libsvn_ra_local-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la RA_LOCAL_LINK = ../../subversion/libsvn_ra_local/libsvn_ra_local-1.la ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la RA_SERF_DEPS = subversion/libsvn_ra_serf/libsvn_ra_serf-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la RA_SERF_LINK = ../../subversion/libsvn_ra_serf/libsvn_ra_serf-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la RA_SVN_DEPS = subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la RA_SVN_LINK = ../../subversion/libsvn_ra_svn/libsvn_ra_svn-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la -BUILD_DIRS = subversion/tests/afl subversion/tests/cmdline subversion/tests/libsvn_subr subversion/tests/libsvn_repos subversion/tests/libsvn_fs_base subversion/tests/libsvn_client subversion/tests/libsvn_wc subversion/tests/libsvn_client/../libsvn_wc tools/diff subversion/tests/libsvn_diff subversion/tests/libsvn_fs_fs subversion/tests/libsvn_fs subversion/tests/libsvn_fs_x tools/dev subversion/bindings/javahl/src/org/apache/subversion/javahl/callback subversion/bindings/javahl/classes subversion/bindings/javahl/include subversion/bindings/javahl/src/org/tigris/subversion/javahl subversion/bindings/javahl/tests/org/tigris/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl/remote subversion/bindings/javahl/tests/org/apache/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl/types subversion/bindings/javahl/src/org/apache/subversion/javahl/util subversion/libsvn_auth_gnome_keyring subversion/libsvn_auth_kwallet subversion/libsvn_client subversion/libsvn_delta subversion/libsvn_diff subversion/libsvn_fs subversion/libsvn_fs_base subversion/libsvn_fs_base/bdb subversion/libsvn_fs_base/util subversion/libsvn_fs_fs subversion/libsvn_fs_util subversion/libsvn_fs_x subversion/libsvn_ra subversion/libsvn_ra_local subversion/libsvn_ra_serf subversion/libsvn_ra_svn subversion/libsvn_repos subversion/libsvn_subr subversion/libsvn_subr/lz4 subversion/bindings/swig/perl/libsvn_swig_perl subversion/bindings/swig/python/libsvn_swig_py subversion/bindings/swig/ruby/libsvn_swig_ruby subversion/tests subversion/libsvn_wc subversion/bindings/javahl/native subversion/bindings/javahl/native/jniwrapper subversion/bindings/cxx subversion/bindings/cxx/src subversion/bindings/cxx/src/aprwrap subversion/po subversion/mod_authz_svn subversion/mod_dav_svn subversion/mod_dav_svn/reports subversion/mod_dav_svn/posts tools/server-side/mod_dontdothat subversion/tests/libsvn_ra_local subversion/tests/libsvn_ra subversion/tests/libsvn_delta subversion/svn tools/client-side/svn-mergeinfo-normalizer tools/server-side tools/dev/wc-ng subversion/svnadmin subversion/svnbench tools/client-side/svnconflict subversion/svndumpfilter subversion/svnfsfs subversion/svnlook tools/dev/svnmover subversion/svnmucc tools/dev/svnraisetreeconflict subversion/svnrdump subversion/svnserve subversion/svnsync subversion/svnversion subversion/bindings/cxx/tests subversion/bindings/swig subversion/tests/libsvn_wc/../../libsvn_subr subversion/bindings/swig/python subversion/bindings/swig/perl subversion/bindings/swig/ruby subversion/bindings/swig/proxy +BUILD_DIRS = subversion/tests/afl subversion/tests/cmdline subversion/tests/libsvn_subr subversion/tests/libsvn_repos subversion/tests/libsvn_fs_base subversion/tests/libsvn_client subversion/tests/libsvn_wc subversion/tests/libsvn_client/../libsvn_wc tools/diff subversion/tests/libsvn_diff subversion/tests/client subversion/tests/libsvn_fs_fs subversion/tests/libsvn_fs subversion/tests/libsvn_fs_x tools/dev subversion/bindings/javahl/src/org/apache/subversion/javahl/callback subversion/bindings/javahl/classes subversion/bindings/javahl/include subversion/bindings/javahl/src/org/tigris/subversion/javahl subversion/bindings/javahl/tests/org/tigris/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl/remote subversion/bindings/javahl/tests/org/apache/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl/types subversion/bindings/javahl/src/org/apache/subversion/javahl/util subversion/libsvn_auth_gnome_keyring subversion/libsvn_auth_kwallet subversion/libsvn_client subversion/libsvn_delta subversion/libsvn_diff subversion/libsvn_fs subversion/libsvn_fs_base subversion/libsvn_fs_base/bdb subversion/libsvn_fs_base/util subversion/libsvn_fs_fs subversion/libsvn_fs_util subversion/libsvn_fs_x subversion/libsvn_ra subversion/libsvn_ra_local subversion/libsvn_ra_serf subversion/libsvn_ra_svn subversion/libsvn_repos subversion/libsvn_subr subversion/libsvn_subr/lz4 subversion/bindings/swig/perl/libsvn_swig_perl subversion/bindings/swig/python/libsvn_swig_py subversion/bindings/swig/ruby/libsvn_swig_ruby subversion/tests subversion/libsvn_wc subversion/bindings/javahl/native subversion/bindings/javahl/native/jniwrapper subversion/bindings/cxx subversion/bindings/cxx/src subversion/bindings/cxx/src/aprwrap subversion/po subversion/mod_authz_svn subversion/mod_dav_svn subversion/mod_dav_svn/reports subversion/mod_dav_svn/posts tools/server-side/mod_dontdothat subversion/tests/libsvn_ra_local subversion/tests/libsvn_ra subversion/tests/libsvn_delta subversion/svn tools/client-side/svn-mergeinfo-normalizer tools/server-side tools/dev/wc-ng subversion/svnadmin subversion/svnbench tools/client-side/svnconflict subversion/svndumpfilter subversion/svnfsfs subversion/svnlook tools/dev/svnmover subversion/svnmucc tools/dev/svnraisetreeconflict subversion/svnrdump subversion/svnserve subversion/svnsync subversion/svnversion subversion/bindings/cxx/tests subversion/bindings/swig subversion/tests/libsvn_wc/../../libsvn_subr subversion/bindings/swig/python subversion/bindings/swig/perl subversion/bindings/swig/ruby subversion/bindings/swig/proxy BDB_TEST_DEPS = subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) BDB_TEST_PROGRAMS = subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) -TEST_DEPS = subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/cmdline/authz_tests.py subversion/tests/cmdline/autoprop_tests.py subversion/tests/cmdline/basic_tests.py subversion/tests/cmdline/blame_tests.py subversion/tests/cmdline/cat_tests.py subversion/tests/cmdline/changelist_tests.py subversion/tests/cmdline/checkout_tests.py subversion/tests/cmdline/commit_tests.py subversion/tests/cmdline/copy_tests.py subversion/tests/cmdline/dav_tests.py subversion/tests/cmdline/depth_tests.py subversion/tests/cmdline/diff_tests.py subversion/tests/cmdline/entries_tests.py subversion/tests/cmdline/export_tests.py subversion/tests/cmdline/externals_tests.py subversion/tests/cmdline/getopt_tests.py subversion/tests/cmdline/history_tests.py subversion/tests/cmdline/import_tests.py subversion/tests/cmdline/info_tests.py subversion/tests/cmdline/input_validation_tests.py subversion/tests/cmdline/iprop_authz_tests.py subversion/tests/cmdline/iprop_tests.py subversion/tests/cmdline/lock_tests.py subversion/tests/cmdline/log_tests.py subversion/tests/cmdline/merge_authz_tests.py subversion/tests/cmdline/merge_automatic_tests.py subversion/tests/cmdline/merge_reintegrate_tests.py subversion/tests/cmdline/merge_tests.py subversion/tests/cmdline/merge_tree_conflict_tests.py subversion/tests/cmdline/mergeinfo_tests.py subversion/tests/cmdline/mod_authz_svn_tests.py subversion/tests/cmdline/mod_dav_svn_tests.py subversion/tests/cmdline/move_tests.py subversion/tests/cmdline/patch_tests.py subversion/tests/cmdline/pegrev_parse_tests.py subversion/tests/cmdline/prop_tests.py subversion/tests/cmdline/redirect_tests.py subversion/tests/cmdline/relocate_tests.py subversion/tests/cmdline/resolve_tests.py subversion/tests/cmdline/revert_tests.py subversion/tests/cmdline/schedule_tests.py subversion/tests/cmdline/shelf2_tests.py subversion/tests/cmdline/shelf_tests.py subversion/tests/cmdline/special_tests.py subversion/tests/cmdline/stat_tests.py subversion/tests/cmdline/svnadmin_tests.py subversion/tests/cmdline/svnauthz_tests.py subversion/tests/cmdline/svndumpfilter_tests.py subversion/tests/cmdline/svnfsfs_tests.py subversion/tests/cmdline/svnlook_tests.py subversion/tests/cmdline/svnmover_tests.py subversion/tests/cmdline/svnmucc_tests.py subversion/tests/cmdline/svnrdump_tests.py subversion/tests/cmdline/svnsync_authz_tests.py subversion/tests/cmdline/svnsync_tests.py subversion/tests/cmdline/svnversion_tests.py subversion/tests/cmdline/switch_tests.py subversion/tests/cmdline/trans_tests.py subversion/tests/cmdline/tree_conflict_tests.py subversion/tests/cmdline/update_tests.py subversion/tests/cmdline/upgrade_tests.py subversion/tests/cmdline/wc_tests.py +TEST_DEPS = subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/client/filesize-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/cmdline/authz_tests.py subversion/tests/cmdline/autoprop_tests.py subversion/tests/cmdline/basic_tests.py subversion/tests/cmdline/blame_tests.py subversion/tests/cmdline/cat_tests.py subversion/tests/cmdline/changelist_tests.py subversion/tests/cmdline/checkout_tests.py subversion/tests/cmdline/commit_tests.py subversion/tests/cmdline/copy_tests.py subversion/tests/cmdline/dav_tests.py subversion/tests/cmdline/depth_tests.py subversion/tests/cmdline/diff_tests.py subversion/tests/cmdline/entries_tests.py subversion/tests/cmdline/export_tests.py subversion/tests/cmdline/externals_tests.py subversion/tests/cmdline/getopt_tests.py subversion/tests/cmdline/history_tests.py subversion/tests/cmdline/import_tests.py subversion/tests/cmdline/info_tests.py subversion/tests/cmdline/input_validation_tests.py subversion/tests/cmdline/iprop_authz_tests.py subversion/tests/cmdline/iprop_tests.py subversion/tests/cmdline/lock_tests.py subversion/tests/cmdline/log_tests.py subversion/tests/cmdline/merge_authz_tests.py subversion/tests/cmdline/merge_automatic_tests.py subversion/tests/cmdline/merge_reintegrate_tests.py subversion/tests/cmdline/merge_tests.py subversion/tests/cmdline/merge_tree_conflict_tests.py subversion/tests/cmdline/mergeinfo_tests.py subversion/tests/cmdline/mod_authz_svn_tests.py subversion/tests/cmdline/mod_dav_svn_tests.py subversion/tests/cmdline/move_tests.py subversion/tests/cmdline/patch_tests.py subversion/tests/cmdline/pegrev_parse_tests.py subversion/tests/cmdline/prop_tests.py subversion/tests/cmdline/redirect_tests.py subversion/tests/cmdline/relocate_tests.py subversion/tests/cmdline/resolve_tests.py subversion/tests/cmdline/revert_tests.py subversion/tests/cmdline/schedule_tests.py subversion/tests/cmdline/shelf2_tests.py subversion/tests/cmdline/shelf_tests.py subversion/tests/cmdline/special_tests.py subversion/tests/cmdline/stat_tests.py subversion/tests/cmdline/svnadmin_tests.py subversion/tests/cmdline/svnauthz_tests.py subversion/tests/cmdline/svndumpfilter_tests.py subversion/tests/cmdline/svnfsfs_tests.py subversion/tests/cmdline/svnlook_tests.py subversion/tests/cmdline/svnmover_tests.py subversion/tests/cmdline/svnmucc_tests.py subversion/tests/cmdline/svnrdump_tests.py subversion/tests/cmdline/svnsync_authz_tests.py subversion/tests/cmdline/svnsync_tests.py subversion/tests/cmdline/svnversion_tests.py subversion/tests/cmdline/switch_tests.py subversion/tests/cmdline/trans_tests.py subversion/tests/cmdline/tree_conflict_tests.py subversion/tests/cmdline/update_tests.py subversion/tests/cmdline/upgrade_tests.py subversion/tests/cmdline/wc_tests.py -TEST_PROGRAMS = subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/cmdline/authz_tests.py subversion/tests/cmdline/autoprop_tests.py subversion/tests/cmdline/basic_tests.py subversion/tests/cmdline/blame_tests.py subversion/tests/cmdline/cat_tests.py subversion/tests/cmdline/changelist_tests.py subversion/tests/cmdline/checkout_tests.py subversion/tests/cmdline/commit_tests.py subversion/tests/cmdline/copy_tests.py subversion/tests/cmdline/dav_tests.py subversion/tests/cmdline/depth_tests.py subversion/tests/cmdline/diff_tests.py subversion/tests/cmdline/entries_tests.py subversion/tests/cmdline/export_tests.py subversion/tests/cmdline/externals_tests.py subversion/tests/cmdline/getopt_tests.py subversion/tests/cmdline/history_tests.py subversion/tests/cmdline/import_tests.py subversion/tests/cmdline/info_tests.py subversion/tests/cmdline/input_validation_tests.py subversion/tests/cmdline/iprop_authz_tests.py subversion/tests/cmdline/iprop_tests.py subversion/tests/cmdline/lock_tests.py subversion/tests/cmdline/log_tests.py subversion/tests/cmdline/merge_authz_tests.py subversion/tests/cmdline/merge_automatic_tests.py subversion/tests/cmdline/merge_reintegrate_tests.py subversion/tests/cmdline/merge_tests.py subversion/tests/cmdline/merge_tree_conflict_tests.py subversion/tests/cmdline/mergeinfo_tests.py subversion/tests/cmdline/mod_authz_svn_tests.py subversion/tests/cmdline/mod_dav_svn_tests.py subversion/tests/cmdline/move_tests.py subversion/tests/cmdline/patch_tests.py subversion/tests/cmdline/pegrev_parse_tests.py subversion/tests/cmdline/prop_tests.py subversion/tests/cmdline/redirect_tests.py subversion/tests/cmdline/relocate_tests.py subversion/tests/cmdline/resolve_tests.py subversion/tests/cmdline/revert_tests.py subversion/tests/cmdline/schedule_tests.py subversion/tests/cmdline/shelf2_tests.py subversion/tests/cmdline/shelf_tests.py subversion/tests/cmdline/special_tests.py subversion/tests/cmdline/stat_tests.py subversion/tests/cmdline/svnadmin_tests.py subversion/tests/cmdline/svnauthz_tests.py subversion/tests/cmdline/svndumpfilter_tests.py subversion/tests/cmdline/svnfsfs_tests.py subversion/tests/cmdline/svnlook_tests.py subversion/tests/cmdline/svnmover_tests.py subversion/tests/cmdline/svnmucc_tests.py subversion/tests/cmdline/svnrdump_tests.py subversion/tests/cmdline/svnsync_authz_tests.py subversion/tests/cmdline/svnsync_tests.py subversion/tests/cmdline/svnversion_tests.py subversion/tests/cmdline/switch_tests.py subversion/tests/cmdline/trans_tests.py subversion/tests/cmdline/tree_conflict_tests.py subversion/tests/cmdline/update_tests.py subversion/tests/cmdline/upgrade_tests.py subversion/tests/cmdline/wc_tests.py +TEST_PROGRAMS = subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/client/filesize-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/cmdline/authz_tests.py subversion/tests/cmdline/autoprop_tests.py subversion/tests/cmdline/basic_tests.py subversion/tests/cmdline/blame_tests.py subversion/tests/cmdline/cat_tests.py subversion/tests/cmdline/changelist_tests.py subversion/tests/cmdline/checkout_tests.py subversion/tests/cmdline/commit_tests.py subversion/tests/cmdline/copy_tests.py subversion/tests/cmdline/dav_tests.py subversion/tests/cmdline/depth_tests.py subversion/tests/cmdline/diff_tests.py subversion/tests/cmdline/entries_tests.py subversion/tests/cmdline/export_tests.py subversion/tests/cmdline/externals_tests.py subversion/tests/cmdline/getopt_tests.py subversion/tests/cmdline/history_tests.py subversion/tests/cmdline/import_tests.py subversion/tests/cmdline/info_tests.py subversion/tests/cmdline/input_validation_tests.py subversion/tests/cmdline/iprop_authz_tests.py subversion/tests/cmdline/iprop_tests.py subversion/tests/cmdline/lock_tests.py subversion/tests/cmdline/log_tests.py subversion/tests/cmdline/merge_authz_tests.py subversion/tests/cmdline/merge_automatic_tests.py subversion/tests/cmdline/merge_reintegrate_tests.py subversion/tests/cmdline/merge_tests.py subversion/tests/cmdline/merge_tree_conflict_tests.py subversion/tests/cmdline/mergeinfo_tests.py subversion/tests/cmdline/mod_authz_svn_tests.py subversion/tests/cmdline/mod_dav_svn_tests.py subversion/tests/cmdline/move_tests.py subversion/tests/cmdline/patch_tests.py subversion/tests/cmdline/pegrev_parse_tests.py subversion/tests/cmdline/prop_tests.py subversion/tests/cmdline/redirect_tests.py subversion/tests/cmdline/relocate_tests.py subversion/tests/cmdline/resolve_tests.py subversion/tests/cmdline/revert_tests.py subversion/tests/cmdline/schedule_tests.py subversion/tests/cmdline/shelf2_tests.py subversion/tests/cmdline/shelf_tests.py subversion/tests/cmdline/special_tests.py subversion/tests/cmdline/stat_tests.py subversion/tests/cmdline/svnadmin_tests.py subversion/tests/cmdline/svnauthz_tests.py subversion/tests/cmdline/svndumpfilter_tests.py subversion/tests/cmdline/svnfsfs_tests.py subversion/tests/cmdline/svnlook_tests.py subversion/tests/cmdline/svnmover_tests.py subversion/tests/cmdline/svnmucc_tests.py subversion/tests/cmdline/svnrdump_tests.py subversion/tests/cmdline/svnsync_authz_tests.py subversion/tests/cmdline/svnsync_tests.py subversion/tests/cmdline/svnversion_tests.py subversion/tests/cmdline/switch_tests.py subversion/tests/cmdline/trans_tests.py subversion/tests/cmdline/tree_conflict_tests.py subversion/tests/cmdline/update_tests.py subversion/tests/cmdline/upgrade_tests.py subversion/tests/cmdline/wc_tests.py check-deps test-deps: subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/cmdline/lock-helper$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) MANPAGES = subversion/svn/svn.1 subversion/svnadmin/svnadmin.1 subversion/svndumpfilter/svndumpfilter.1 subversion/svnlook/svnlook.1 subversion/svnmucc/svnmucc.1 subversion/svnrdump/svnrdump.1 subversion/svnserve/svnserve.8 subversion/svnserve/svnserve.conf.5 subversion/svnsync/svnsync.1 subversion/svnversion/svnversion.1 -CLEAN_FILES = subversion/bindings/cxx/svnxx-tests$(EXEEXT) subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT) subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/cmdline/authz_tests.pyc subversion/tests/cmdline/autoprop_tests.pyc subversion/tests/cmdline/basic_tests.pyc subversion/tests/cmdline/blame_tests.pyc subversion/tests/cmdline/cat_tests.pyc subversion/tests/cmdline/changelist_tests.pyc subversion/tests/cmdline/checkout_tests.pyc subversion/tests/cmdline/commit_tests.pyc subversion/tests/cmdline/copy_tests.pyc subversion/tests/cmdline/dav_tests.pyc subversion/tests/cmdline/depth_tests.pyc subversion/tests/cmdline/diff_tests.pyc subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/cmdline/entries_tests.pyc subversion/tests/cmdline/export_tests.pyc subversion/tests/cmdline/externals_tests.pyc subversion/tests/cmdline/getopt_tests.pyc subversion/tests/cmdline/history_tests.pyc subversion/tests/cmdline/import_tests.pyc subversion/tests/cmdline/info_tests.pyc subversion/tests/cmdline/input_validation_tests.pyc subversion/tests/cmdline/iprop_authz_tests.pyc subversion/tests/cmdline/iprop_tests.pyc subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/cmdline/lock_tests.pyc subversion/tests/cmdline/log_tests.pyc subversion/tests/cmdline/merge_authz_tests.pyc subversion/tests/cmdline/merge_automatic_tests.pyc subversion/tests/cmdline/merge_reintegrate_tests.pyc subversion/tests/cmdline/merge_tests.pyc subversion/tests/cmdline/merge_tree_conflict_tests.pyc subversion/tests/cmdline/mergeinfo_tests.pyc subversion/tests/cmdline/mod_authz_svn_tests.pyc subversion/tests/cmdline/mod_dav_svn_tests.pyc subversion/tests/cmdline/move_tests.pyc subversion/tests/cmdline/patch_tests.pyc subversion/tests/cmdline/pegrev_parse_tests.pyc subversion/tests/cmdline/prop_tests.pyc subversion/tests/cmdline/redirect_tests.pyc subversion/tests/cmdline/relocate_tests.pyc subversion/tests/cmdline/resolve_tests.pyc subversion/tests/cmdline/revert_tests.pyc subversion/tests/cmdline/schedule_tests.pyc subversion/tests/cmdline/shelf2_tests.pyc subversion/tests/cmdline/shelf_tests.pyc subversion/tests/cmdline/special_tests.pyc subversion/tests/cmdline/stat_tests.pyc subversion/tests/cmdline/svnadmin_tests.pyc subversion/tests/cmdline/svnauthz_tests.pyc subversion/tests/cmdline/svndumpfilter_tests.pyc subversion/tests/cmdline/svnfsfs_tests.pyc subversion/tests/cmdline/svnlook_tests.pyc subversion/tests/cmdline/svnmover_tests.pyc subversion/tests/cmdline/svnmucc_tests.pyc subversion/tests/cmdline/svnrdump_tests.pyc subversion/tests/cmdline/svnsync_authz_tests.pyc subversion/tests/cmdline/svnsync_tests.pyc subversion/tests/cmdline/svnversion_tests.pyc subversion/tests/cmdline/switch_tests.pyc subversion/tests/cmdline/trans_tests.pyc subversion/tests/cmdline/tree_conflict_tests.pyc subversion/tests/cmdline/update_tests.pyc subversion/tests/cmdline/upgrade_tests.pyc subversion/tests/cmdline/wc_tests.pyc subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/dev/x509-parser$(EXEEXT) tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) +CLEAN_FILES = subversion/bindings/cxx/svnxx-tests$(EXEEXT) subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT) subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/client/filesize-test$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/cmdline/authz_tests.pyc subversion/tests/cmdline/autoprop_tests.pyc subversion/tests/cmdline/basic_tests.pyc subversion/tests/cmdline/blame_tests.pyc subversion/tests/cmdline/cat_tests.pyc subversion/tests/cmdline/changelist_tests.pyc subversion/tests/cmdline/checkout_tests.pyc subversion/tests/cmdline/commit_tests.pyc subversion/tests/cmdline/copy_tests.pyc subversion/tests/cmdline/dav_tests.pyc subversion/tests/cmdline/depth_tests.pyc subversion/tests/cmdline/diff_tests.pyc subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/cmdline/entries_tests.pyc subversion/tests/cmdline/export_tests.pyc subversion/tests/cmdline/externals_tests.pyc subversion/tests/cmdline/getopt_tests.pyc subversion/tests/cmdline/history_tests.pyc subversion/tests/cmdline/import_tests.pyc subversion/tests/cmdline/info_tests.pyc subversion/tests/cmdline/input_validation_tests.pyc subversion/tests/cmdline/iprop_authz_tests.pyc subversion/tests/cmdline/iprop_tests.pyc subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/cmdline/lock_tests.pyc subversion/tests/cmdline/log_tests.pyc subversion/tests/cmdline/merge_authz_tests.pyc subversion/tests/cmdline/merge_automatic_tests.pyc subversion/tests/cmdline/merge_reintegrate_tests.pyc subversion/tests/cmdline/merge_tests.pyc subversion/tests/cmdline/merge_tree_conflict_tests.pyc subversion/tests/cmdline/mergeinfo_tests.pyc subversion/tests/cmdline/mod_authz_svn_tests.pyc subversion/tests/cmdline/mod_dav_svn_tests.pyc subversion/tests/cmdline/move_tests.pyc subversion/tests/cmdline/patch_tests.pyc subversion/tests/cmdline/pegrev_parse_tests.pyc subversion/tests/cmdline/prop_tests.pyc subversion/tests/cmdline/redirect_tests.pyc subversion/tests/cmdline/relocate_tests.pyc subversion/tests/cmdline/resolve_tests.pyc subversion/tests/cmdline/revert_tests.pyc subversion/tests/cmdline/schedule_tests.pyc subversion/tests/cmdline/shelf2_tests.pyc subversion/tests/cmdline/shelf_tests.pyc subversion/tests/cmdline/special_tests.pyc subversion/tests/cmdline/stat_tests.pyc subversion/tests/cmdline/svnadmin_tests.pyc subversion/tests/cmdline/svnauthz_tests.pyc subversion/tests/cmdline/svndumpfilter_tests.pyc subversion/tests/cmdline/svnfsfs_tests.pyc subversion/tests/cmdline/svnlook_tests.pyc subversion/tests/cmdline/svnmover_tests.pyc subversion/tests/cmdline/svnmucc_tests.pyc subversion/tests/cmdline/svnrdump_tests.pyc subversion/tests/cmdline/svnsync_authz_tests.pyc subversion/tests/cmdline/svnsync_tests.pyc subversion/tests/cmdline/svnversion_tests.pyc subversion/tests/cmdline/switch_tests.pyc subversion/tests/cmdline/trans_tests.pyc subversion/tests/cmdline/tree_conflict_tests.pyc subversion/tests/cmdline/update_tests.pyc subversion/tests/cmdline/upgrade_tests.pyc subversion/tests/cmdline/wc_tests.pyc subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/dev/x509-parser$(EXEEXT) tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) EXTRACLEAN_FILES = subversion/libsvn_fs_fs/rep-cache-db.h subversion/libsvn_fs_x/rep-cache-db.h subversion/libsvn_subr/internal_statements.h subversion/libsvn_wc/wc-queries.h subversion/tests/libsvn_wc/wc-test-queries.h \ $(abs_builddir)/subversion/libsvn_subr/errorcode.inc \ $(abs_builddir)/subversion/libsvn_subr/config_keys.inc \ $(abs_srcdir)/compile_commands.json SWIG_INCLUDES = -I$(abs_builddir)/subversion \ -I$(abs_srcdir)/subversion/include \ -I$(abs_srcdir)/subversion/bindings/swig \ -I$(abs_srcdir)/subversion/bindings/swig/include \ -I$(abs_srcdir)/subversion/bindings/swig/proxy \ -I$(abs_builddir)/subversion/bindings/swig/proxy \ $(SVN_APR_INCLUDES) $(SVN_APRUTIL_INCLUDES) RELEASE_MODE = 1 ######################################## # Section 2: SWIG headers (wrappers and external runtimes) ######################################## ######################################## # Section 3: SWIG autogen rules ######################################## .swig_py_checked: @if [ -n "$(SWIG_PY_ERRMSG)" ]; then \ echo "SWIG python disabled at configure time: $(SWIG_PY_ERRMSG)" >&2; \ exit 1; \ fi @touch $@ autogen-swig-py: .swig_py_checked subversion/bindings/swig/python/core.c subversion/bindings/swig/python/svn_client.c subversion/bindings/swig/python/svn_delta.c subversion/bindings/swig/python/svn_diff.c subversion/bindings/swig/python/svn_fs.c subversion/bindings/swig/python/svn_ra.c subversion/bindings/swig/python/svn_repos.c subversion/bindings/swig/python/svn_wc.c autogen-swig: autogen-swig-py # Ensure the swig build targets depend on the configuration check swig-py: .swig_py_checked .swig_pl_checked: @if [ -n "$(SWIG_PL_ERRMSG)" ]; then \ echo "SWIG perl disabled at configure time: $(SWIG_PL_ERRMSG)" >&2; \ exit 1; \ fi @touch $@ autogen-swig-pl: .swig_pl_checked subversion/bindings/swig/perl/native/core.c subversion/bindings/swig/perl/native/svn_client.c subversion/bindings/swig/perl/native/svn_delta.c subversion/bindings/swig/perl/native/svn_diff.c subversion/bindings/swig/perl/native/svn_fs.c subversion/bindings/swig/perl/native/svn_ra.c subversion/bindings/swig/perl/native/svn_repos.c subversion/bindings/swig/perl/native/svn_wc.c autogen-swig: autogen-swig-pl # Ensure the swig build targets depend on the configuration check swig-pl: .swig_pl_checked .swig_rb_checked: @if [ -n "$(SWIG_RB_ERRMSG)" ]; then \ echo "SWIG ruby disabled at configure time: $(SWIG_RB_ERRMSG)" >&2; \ exit 1; \ fi @touch $@ autogen-swig-rb: .swig_rb_checked subversion/bindings/swig/ruby/core.c subversion/bindings/swig/ruby/svn_client.c subversion/bindings/swig/ruby/svn_delta.c subversion/bindings/swig/ruby/svn_diff.c subversion/bindings/swig/ruby/svn_fs.c subversion/bindings/swig/ruby/svn_ra.c subversion/bindings/swig/ruby/svn_repos.c subversion/bindings/swig/ruby/svn_wc.c autogen-swig: autogen-swig-rb # Ensure the swig build targets depend on the configuration check swig-rb: .swig_rb_checked ######################################## # Section 4: Rules to build SWIG .c files from .i files ######################################## # This needs to be here, rather than in Makefile.in, else # './autogen.sh --release' doesn't find it. .swig_checked: @if [ "$(SWIG)" = "none" ]; then \ echo "SWIG disabled at configure time" >&2; \ exit 1; \ fi @touch .swig_checked ######################################## # Section 5: Individual target build rules ######################################## afl_svndiff_PATH = subversion/tests/afl afl_svndiff_DEPS = subversion/tests/afl/afl-svndiff.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la afl_svndiff_OBJECTS = afl-svndiff.lo subversion/tests/afl/afl-svndiff$(EXEEXT): $(afl_svndiff_DEPS) cd subversion/tests/afl && $(LINK) $(afl_svndiff_LDFLAGS) -o afl-svndiff$(EXEEXT) $(afl_svndiff_OBJECTS) ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) afl_x509_PATH = subversion/tests/afl afl_x509_DEPS = subversion/tests/afl/afl-x509.lo subversion/libsvn_subr/libsvn_subr-1.la afl_x509_OBJECTS = afl-x509.lo subversion/tests/afl/afl-x509$(EXEEXT): $(afl_x509_DEPS) cd subversion/tests/afl && $(LINK) $(afl_x509_LDFLAGS) -o afl-x509$(EXEEXT) $(afl_x509_OBJECTS) ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) atomic_ra_revprop_change_PATH = subversion/tests/cmdline atomic_ra_revprop_change_DEPS = subversion/tests/cmdline/atomic-ra-revprop-change.lo subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la atomic_ra_revprop_change_OBJECTS = atomic-ra-revprop-change.lo subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT): $(atomic_ra_revprop_change_DEPS) cd subversion/tests/cmdline && $(LINK) $(atomic_ra_revprop_change_LDFLAGS) -o atomic-ra-revprop-change$(EXEEXT) $(atomic_ra_revprop_change_OBJECTS) ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) auth_test_PATH = subversion/tests/libsvn_subr auth_test_DEPS = subversion/tests/libsvn_subr/auth-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la auth_test_OBJECTS = auth-test.lo subversion/tests/libsvn_subr/auth-test$(EXEEXT): $(auth_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(auth_test_LDFLAGS) -o auth-test$(EXEEXT) $(auth_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) authz_test_PATH = subversion/tests/libsvn_repos authz_test_DEPS = subversion/tests/libsvn_repos/authz-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la authz_test_OBJECTS = authz-test.lo subversion/tests/libsvn_repos/authz-test$(EXEEXT): $(authz_test_DEPS) cd subversion/tests/libsvn_repos && $(LINK) $(authz_test_LDFLAGS) -o authz-test$(EXEEXT) $(authz_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) bit_array_test_PATH = subversion/tests/libsvn_subr bit_array_test_DEPS = subversion/tests/libsvn_subr/bit-array-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la bit_array_test_OBJECTS = bit-array-test.lo subversion/tests/libsvn_subr/bit-array-test$(EXEEXT): $(bit_array_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(bit_array_test_LDFLAGS) -o bit-array-test$(EXEEXT) $(bit_array_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) cache_test_PATH = subversion/tests/libsvn_subr cache_test_DEPS = subversion/tests/libsvn_subr/cache-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la cache_test_OBJECTS = cache-test.lo subversion/tests/libsvn_subr/cache-test$(EXEEXT): $(cache_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(cache_test_LDFLAGS) -o cache-test$(EXEEXT) $(cache_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) changes_test_PATH = subversion/tests/libsvn_fs_base changes_test_DEPS = subversion/tests/libsvn_fs_base/changes-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_base/libsvn_fs_base-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la changes_test_OBJECTS = changes-test.lo subversion/tests/libsvn_fs_base/changes-test$(EXEEXT): $(changes_test_DEPS) cd subversion/tests/libsvn_fs_base && $(LINK) $(changes_test_LDFLAGS) -o changes-test$(EXEEXT) $(changes_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_base/libsvn_fs_base-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) checksum_test_PATH = subversion/tests/libsvn_subr checksum_test_DEPS = subversion/tests/libsvn_subr/checksum-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la checksum_test_OBJECTS = checksum-test.lo subversion/tests/libsvn_subr/checksum-test$(EXEEXT): $(checksum_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(checksum_test_LDFLAGS) -o checksum-test$(EXEEXT) $(checksum_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(SVN_ZLIB_LIBS) $(LIBS) client_test_PATH = subversion/tests/libsvn_client client_test_DEPS = subversion/tests/libsvn_client/client-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la client_test_OBJECTS = client-test.lo subversion/tests/libsvn_client/client-test$(EXEEXT): $(client_test_DEPS) cd subversion/tests/libsvn_client && $(LINK) $(client_test_LDFLAGS) -o client-test$(EXEEXT) $(client_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) compat_test_PATH = subversion/tests/libsvn_subr compat_test_DEPS = subversion/tests/libsvn_subr/compat-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la compat_test_OBJECTS = compat-test.lo subversion/tests/libsvn_subr/compat-test$(EXEEXT): $(compat_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(compat_test_LDFLAGS) -o compat-test$(EXEEXT) $(compat_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) compress_test_PATH = subversion/tests/libsvn_subr compress_test_DEPS = subversion/tests/libsvn_subr/compress-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la compress_test_OBJECTS = compress-test.lo subversion/tests/libsvn_subr/compress-test$(EXEEXT): $(compress_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(compress_test_LDFLAGS) -o compress-test$(EXEEXT) $(compress_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) config_test_PATH = subversion/tests/libsvn_subr config_test_DEPS = subversion/tests/libsvn_subr/config-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la config_test_OBJECTS = config-test.lo subversion/tests/libsvn_subr/config-test$(EXEEXT): $(config_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(config_test_LDFLAGS) -o config-test$(EXEEXT) $(config_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) conflict_data_test_PATH = subversion/tests/libsvn_wc conflict_data_test_DEPS = subversion/tests/libsvn_wc/conflict-data-test.lo subversion/tests/libsvn_wc/utils.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la conflict_data_test_OBJECTS = conflict-data-test.lo utils.lo subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT): $(conflict_data_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(conflict_data_test_LDFLAGS) -o conflict-data-test$(EXEEXT) $(conflict_data_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) conflicts_test_PATH = subversion/tests/libsvn_client conflicts_test_DEPS = subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_client/conflicts-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la conflicts_test_OBJECTS = ../libsvn_wc/utils.lo conflicts-test.lo subversion/tests/libsvn_client/conflicts-test$(EXEEXT): $(conflicts_test_DEPS) cd subversion/tests/libsvn_client && $(LINK) $(conflicts_test_LDFLAGS) -o conflicts-test$(EXEEXT) $(conflicts_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) crypto_test_PATH = subversion/tests/libsvn_subr crypto_test_DEPS = subversion/tests/libsvn_subr/crypto-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la crypto_test_OBJECTS = crypto-test.lo subversion/tests/libsvn_subr/crypto-test$(EXEEXT): $(crypto_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(crypto_test_LDFLAGS) -o crypto-test$(EXEEXT) $(crypto_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) db_test_PATH = subversion/tests/libsvn_wc db_test_DEPS = subversion/tests/libsvn_wc/db-test.lo subversion/tests/libsvn_wc/utils.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la db_test_OBJECTS = db-test.lo utils.lo subversion/tests/libsvn_wc/db-test$(EXEEXT): $(db_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(db_test_LDFLAGS) -o db-test$(EXEEXT) $(db_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) diff_PATH = tools/diff diff_DEPS = tools/diff/diff.lo subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la diff_OBJECTS = diff.lo tools/diff/diff$(EXEEXT): $(diff_DEPS) cd tools/diff && $(LINK) $(diff_LDFLAGS) -o diff$(EXEEXT) $(diff_OBJECTS) ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) diff_diff3_test_PATH = subversion/tests/libsvn_diff diff_diff3_test_DEPS = subversion/tests/libsvn_diff/diff-diff3-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la diff_diff3_test_OBJECTS = diff-diff3-test.lo subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT): $(diff_diff3_test_DEPS) cd subversion/tests/libsvn_diff && $(LINK) $(diff_diff3_test_LDFLAGS) -o diff-diff3-test$(EXEEXT) $(diff_diff3_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) diff3_PATH = tools/diff diff3_DEPS = tools/diff/diff3.lo subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la diff3_OBJECTS = diff3.lo tools/diff/diff3$(EXEEXT): $(diff3_DEPS) cd tools/diff && $(LINK) $(diff3_LDFLAGS) -o diff3$(EXEEXT) $(diff3_OBJECTS) ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) diff4_PATH = tools/diff diff4_DEPS = tools/diff/diff4.lo subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la diff4_OBJECTS = diff4.lo tools/diff/diff4$(EXEEXT): $(diff4_DEPS) cd tools/diff && $(LINK) $(diff4_LDFLAGS) -o diff4$(EXEEXT) $(diff4_OBJECTS) ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) dirent_uri_test_PATH = subversion/tests/libsvn_subr dirent_uri_test_DEPS = subversion/tests/libsvn_subr/dirent_uri-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la dirent_uri_test_OBJECTS = dirent_uri-test.lo subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT): $(dirent_uri_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(dirent_uri_test_LDFLAGS) -o dirent_uri-test$(EXEEXT) $(dirent_uri_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) dump_load_test_PATH = subversion/tests/libsvn_repos dump_load_test_DEPS = subversion/tests/libsvn_repos/dump-load-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la dump_load_test_OBJECTS = dump-load-test.lo subversion/tests/libsvn_repos/dump-load-test$(EXEEXT): $(dump_load_test_DEPS) cd subversion/tests/libsvn_repos && $(LINK) $(dump_load_test_LDFLAGS) -o dump-load-test$(EXEEXT) $(dump_load_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) entries_compat_test_PATH = subversion/tests/libsvn_wc entries_compat_test_DEPS = subversion/tests/libsvn_wc/entries-compat.lo subversion/tests/libsvn_wc/utils.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la entries_compat_test_OBJECTS = entries-compat.lo utils.lo subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT): $(entries_compat_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(entries_compat_test_LDFLAGS) -o entries-compat-test$(EXEEXT) $(entries_compat_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) entries_dump_PATH = subversion/tests/cmdline entries_dump_DEPS = subversion/tests/cmdline/entries-dump.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la entries_dump_OBJECTS = entries-dump.lo subversion/tests/cmdline/entries-dump$(EXEEXT): $(entries_dump_DEPS) cd subversion/tests/cmdline && $(LINK) $(entries_dump_LDFLAGS) -o entries-dump$(EXEEXT) $(entries_dump_OBJECTS) ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) error_code_test_PATH = subversion/tests/libsvn_subr error_code_test_DEPS = subversion/tests/libsvn_subr/error-code-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la error_code_test_OBJECTS = error-code-test.lo subversion/tests/libsvn_subr/error-code-test$(EXEEXT): $(error_code_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(error_code_test_LDFLAGS) -o error-code-test$(EXEEXT) $(error_code_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) error_test_PATH = subversion/tests/libsvn_subr error_test_DEPS = subversion/tests/libsvn_subr/error-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la error_test_OBJECTS = error-test.lo subversion/tests/libsvn_subr/error-test$(EXEEXT): $(error_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(error_test_LDFLAGS) -o error-test$(EXEEXT) $(error_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) +filesize_test_PATH = subversion/tests/client +filesize_test_DEPS = subversion/tests/client/filesize-test.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la +filesize_test_OBJECTS = filesize-test.lo +subversion/tests/client/filesize-test$(EXEEXT): $(filesize_test_DEPS) + cd subversion/tests/client && $(LINK) $(filesize_test_LDFLAGS) -o filesize-test$(EXEEXT) $(filesize_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) + fs_base_test_PATH = subversion/tests/libsvn_fs_base fs_base_test_DEPS = subversion/tests/libsvn_fs_base/fs-base-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_base/libsvn_fs_base-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_base_test_OBJECTS = fs-base-test.lo subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT): $(fs_base_test_DEPS) cd subversion/tests/libsvn_fs_base && $(LINK) $(fs_base_test_LDFLAGS) -o fs-base-test$(EXEEXT) $(fs_base_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_base/libsvn_fs_base-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_fs_util/libsvn_fs_util-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fs_fs_fuzzy_test_PATH = subversion/tests/libsvn_fs_fs fs_fs_fuzzy_test_DEPS = subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_fs_fuzzy_test_OBJECTS = fs-fs-fuzzy-test.lo subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT): $(fs_fs_fuzzy_test_DEPS) cd subversion/tests/libsvn_fs_fs && $(LINK) $(fs_fs_fuzzy_test_LDFLAGS) -o fs-fs-fuzzy-test$(EXEEXT) $(fs_fs_fuzzy_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fs_fs_pack_test_PATH = subversion/tests/libsvn_fs_fs fs_fs_pack_test_DEPS = subversion/tests/libsvn_fs_fs/fs-fs-pack-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_fs_pack_test_OBJECTS = fs-fs-pack-test.lo subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT): $(fs_fs_pack_test_DEPS) cd subversion/tests/libsvn_fs_fs && $(LINK) $(fs_fs_pack_test_LDFLAGS) -o fs-fs-pack-test$(EXEEXT) $(fs_fs_pack_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fs_fs_private_test_PATH = subversion/tests/libsvn_fs_fs fs_fs_private_test_DEPS = subversion/tests/libsvn_fs_fs/fs-fs-private-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_fs_private_test_OBJECTS = fs-fs-private-test.lo subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT): $(fs_fs_private_test_DEPS) cd subversion/tests/libsvn_fs_fs && $(LINK) $(fs_fs_private_test_LDFLAGS) -o fs-fs-private-test$(EXEEXT) $(fs_fs_private_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fs_sequential_test_PATH = subversion/tests/libsvn_fs fs_sequential_test_DEPS = subversion/tests/libsvn_fs/fs-sequential-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_sequential_test_OBJECTS = fs-sequential-test.lo subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT): $(fs_sequential_test_DEPS) cd subversion/tests/libsvn_fs && $(LINK) $(fs_sequential_test_LDFLAGS) -o fs-sequential-test$(EXEEXT) $(fs_sequential_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_fs_util/libsvn_fs_util-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fs_test_PATH = subversion/tests/libsvn_fs fs_test_DEPS = subversion/tests/libsvn_fs/fs-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_test_OBJECTS = fs-test.lo subversion/tests/libsvn_fs/fs-test$(EXEEXT): $(fs_test_DEPS) cd subversion/tests/libsvn_fs && $(LINK) $(fs_test_LDFLAGS) -o fs-test$(EXEEXT) $(fs_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_fs_util/libsvn_fs_util-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fs_x_pack_test_PATH = subversion/tests/libsvn_fs_x fs_x_pack_test_DEPS = subversion/tests/libsvn_fs_x/fs-x-pack-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_x/libsvn_fs_x-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la fs_x_pack_test_OBJECTS = fs-x-pack-test.lo subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT): $(fs_x_pack_test_DEPS) cd subversion/tests/libsvn_fs_x && $(LINK) $(fs_x_pack_test_LDFLAGS) -o fs-x-pack-test$(EXEEXT) $(fs_x_pack_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_x/libsvn_fs_x-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) fsfs_access_map_PATH = tools/dev fsfs_access_map_DEPS = tools/dev/fsfs-access-map.lo subversion/libsvn_subr/libsvn_subr-1.la fsfs_access_map_OBJECTS = fsfs-access-map.lo tools/dev/fsfs-access-map$(EXEEXT): $(fsfs_access_map_DEPS) cd tools/dev && $(LINK) $(fsfs_access_map_LDFLAGS) -o fsfs-access-map$(EXEEXT) $(fsfs_access_map_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) hashdump_test_PATH = subversion/tests/libsvn_subr hashdump_test_DEPS = subversion/tests/libsvn_subr/hashdump-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la hashdump_test_OBJECTS = hashdump-test.lo subversion/tests/libsvn_subr/hashdump-test$(EXEEXT): $(hashdump_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(hashdump_test_LDFLAGS) -o hashdump-test$(EXEEXT) $(hashdump_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) io_test_PATH = subversion/tests/libsvn_subr io_test_DEPS = subversion/tests/libsvn_subr/io-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la io_test_OBJECTS = io-test.lo subversion/tests/libsvn_subr/io-test$(EXEEXT): $(io_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(io_test_LDFLAGS) -o io-test$(EXEEXT) $(io_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) javahl_callback_java_PATH = subversion/bindings/javahl/classes javahl_callback_java_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h javahl_callback_java_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/AuthnCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameLineCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameRangeCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ChangelistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ClientNotifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitMessageCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConfigEvent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConflictResolverCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/DiffSummaryCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ImportFilterCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InfoCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InheritedProplistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListItemCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/LogMessageCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/PatchCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProgressCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProplistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteStatus.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposFreezeAction.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposNotifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposVerifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/StatusCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/TunnelAgent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/UserPasswordCallback.class javahl_callback_java_DEPS = $(javahl_callback_java_HEADERS) $(javahl_callback_java_OBJECTS) javahl-callback-java: $(javahl_callback_java_DEPS) javahl_callback_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameLineCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameRangeCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ClientNotifyCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitMessageCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConfigEvent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConflictResolverCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ImportFilterCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListItemCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProgressCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteStatus.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposFreezeAction.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposNotifyCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposVerifyCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java $(javahl_callback_java_HEADERS) $(javahl_callback_java_OBJECTS): $(javahl_callback_java_SRC) $(COMPILE_JAVAHL_JAVAC) -h subversion/bindings/javahl/include -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_callback_java_CLASSPATH) $(javahl_callback_java_SRC) javahl_compat_java_PATH = subversion/bindings/javahl/classes javahl_compat_java_HEADERS = javahl_compat_java_OBJECTS = subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback3.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallbackImpl.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangePath.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangelistCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ClientException.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItem.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItemStateFlags.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitMessage.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictDescriptor.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResolverCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResult.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictVersion.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CopySource.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Depth.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummary.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummaryReceiver.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DirEntry.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ErrorCodes.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InfoCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InputInterface.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ListCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Lock.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LockStatus.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogDate.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessage.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessageCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Mergeinfo.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/MergeinfoLogKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NativeException.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NodeKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyAction.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyInformation.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyStatus.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Operation.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/OutputInterface.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Path.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressEvent.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressListener.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword3.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PropertyData.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallbackImpl.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Revision.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionRange.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdmin.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClient.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientInterface.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientLogLevel.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientSynchronized.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNInputStream.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNOutputStream.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ScheduleKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Status.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SubversionException.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Version.class javahl_compat_java_DEPS = $(javahl_compat_java_HEADERS) $(javahl_compat_java_OBJECTS) $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) $(javahl_java_DEPS) javahl-compat-java: $(javahl_compat_java_DEPS) javahl_compat_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItemStateFlags.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitMessage.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResolverCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummaryReceiver.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ErrorCodes.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InfoCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ListCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LockStatus.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyStatus.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Operation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressListener.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword3.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientLogLevel.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNInputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNOutputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ScheduleKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SubversionException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java $(javahl_compat_java_HEADERS) $(javahl_compat_java_OBJECTS): $(javahl_compat_java_SRC) $(COMPILE_JAVAHL_COMPAT_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_compat_java_CLASSPATH) $(javahl_compat_java_SRC) javahl_compat_tests_PATH = subversion/bindings/javahl/classes javahl_compat_tests_HEADERS = javahl_compat_tests_OBJECTS = subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BasicTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RunTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdminTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/WC.class javahl_compat_tests_DEPS = $(javahl_compat_tests_HEADERS) $(javahl_compat_tests_OBJECTS) $(javahl_compat_java_DEPS) javahl-compat-tests: $(javahl_compat_tests_DEPS) javahl_compat_tests_SRC = $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/RunTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNAdminTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/WC.java $(javahl_compat_tests_HEADERS) $(javahl_compat_tests_OBJECTS): $(javahl_compat_tests_SRC) $(COMPILE_JAVAHL_COMPAT_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_compat_tests_CLASSPATH) $(javahl_compat_tests_SRC) javahl_java_PATH = subversion/bindings/javahl/classes javahl_java_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeResources.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h javahl_java_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientNotifyInformation.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitInfo.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItem.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItemStateFlags.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictDescriptor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictResult.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/DiffSummary.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNClient.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNConfig.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRemote.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNReporter.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRepos.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIError.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIObject.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeResources.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/OperationContext.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ProgressEvent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ReposNotifyInformation.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNClient.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRepos.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNUtil.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SubversionException.class javahl_java_DEPS = $(javahl_java_HEADERS) $(javahl_java_OBJECTS) javahl-java: $(javahl_java_DEPS) javahl_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReporter.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/OperationContext.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SubversionException.java $(javahl_java_HEADERS) $(javahl_java_OBJECTS): $(javahl_java_SRC) $(COMPILE_JAVAHL_JAVAC) -h subversion/bindings/javahl/include -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_java_CLASSPATH) $(javahl_java_SRC) javahl_remote_java_PATH = subversion/bindings/javahl/classes javahl_remote_java_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_CommitEditor.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteFactory.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteSession.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_StateReporter.h javahl_remote_java_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/CommitEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteFactory.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteSession.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RetryOpenSession.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StateReporter.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StatusEditor.class javahl_remote_java_DEPS = $(javahl_remote_java_HEADERS) $(javahl_remote_java_OBJECTS) javahl-remote-java: $(javahl_remote_java_DEPS) javahl_remote_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RetryOpenSession.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java $(javahl_remote_java_HEADERS) $(javahl_remote_java_OBJECTS): $(javahl_remote_java_SRC) $(COMPILE_JAVAHL_JAVAC) -h subversion/bindings/javahl/include -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_remote_java_CLASSPATH) $(javahl_remote_java_SRC) javahl_tests_PATH = subversion/bindings/javahl/classes javahl_tests_HEADERS = javahl_tests_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/BasicTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ExceptionTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/RunTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRemoteTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNReposTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/UtilTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/WC.class javahl_tests_DEPS = $(javahl_tests_HEADERS) $(javahl_tests_OBJECTS) $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) $(javahl_java_DEPS) javahl-tests: $(javahl_tests_DEPS) javahl_tests_SRC = $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java $(javahl_tests_HEADERS) $(javahl_tests_OBJECTS): $(javahl_tests_SRC) $(COMPILE_JAVAHL_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_tests_CLASSPATH) $(javahl_tests_SRC) javahl_types_java_PATH = subversion/bindings/javahl/classes javahl_types_java_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeInputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeOutputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Revision.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RevisionRangeList.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RuntimeVersion.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Version.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended.h javahl_types_java_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ChangePath.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Checksum.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ConflictVersion.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/CopySource.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Depth.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DiffOptions.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DirEntry.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ExternalItem.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Info.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Lock.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/LogDate.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Mergeinfo.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeInputStream.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeOutputStream.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NodeKind.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Property.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Revision.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRange.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRangeList.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RuntimeVersion.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Status.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Tristate.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Version.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/VersionExtended.class javahl_types_java_DEPS = $(javahl_types_java_HEADERS) $(javahl_types_java_OBJECTS) javahl-types-java: $(javahl_types_java_DEPS) javahl_types_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ChangePath.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Checksum.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/CopySource.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Depth.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DiffOptions.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DirEntry.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ExternalItem.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Lock.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Mergeinfo.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeInputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeOutputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Property.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RuntimeVersion.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Tristate.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Version.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java $(javahl_types_java_HEADERS) $(javahl_types_java_OBJECTS): $(javahl_types_java_SRC) $(COMPILE_JAVAHL_JAVAC) -h subversion/bindings/javahl/include -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_types_java_CLASSPATH) $(javahl_types_java_SRC) javahl_util_java_PATH = subversion/bindings/javahl/classes javahl_util_java_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigImpl.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_DiffLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_PropLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_RequestChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ResponseChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_SubstLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_TunnelChannel.h javahl_util_java_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigImpl.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/DiffLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/PropLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/RequestChannel.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ResponseChannel.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/SubstLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/TunnelChannel.class javahl_util_java_DEPS = $(javahl_util_java_HEADERS) $(javahl_util_java_OBJECTS) javahl-util-java: $(javahl_util_java_DEPS) javahl_util_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/RequestChannel.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ResponseChannel.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/SubstLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/TunnelChannel.java $(javahl_util_java_HEADERS) $(javahl_util_java_OBJECTS): $(javahl_util_java_SRC) $(COMPILE_JAVAHL_JAVAC) -h subversion/bindings/javahl/include -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_util_java_CLASSPATH) $(javahl_util_java_SRC) libsvn_auth_gnome_keyring_PATH = subversion/libsvn_auth_gnome_keyring libsvn_auth_gnome_keyring_DEPS = subversion/libsvn_auth_gnome_keyring/gnome_keyring.lo subversion/libsvn_auth_gnome_keyring/version.lo subversion/libsvn_subr/libsvn_subr-1.la libsvn_auth_gnome_keyring_OBJECTS = gnome_keyring.lo version.lo subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la: $(libsvn_auth_gnome_keyring_DEPS) cd subversion/libsvn_auth_gnome_keyring && $(LINK_SHARED_ONLY_LIB) $(libsvn_auth_gnome_keyring_LDFLAGS) -o libsvn_auth_gnome_keyring-1.la $(LT_NO_UNDEFINED) $(libsvn_auth_gnome_keyring_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(SVN_GNOME_KEYRING_LIBS) $(LIBS) libsvn_auth_kwallet_PATH = subversion/libsvn_auth_kwallet libsvn_auth_kwallet_DEPS = subversion/libsvn_auth_kwallet/kwallet.lo subversion/libsvn_auth_kwallet/version.lo subversion/libsvn_subr/libsvn_subr-1.la libsvn_auth_kwallet_OBJECTS = kwallet.lo version.lo subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la: $(libsvn_auth_kwallet_DEPS) cd subversion/libsvn_auth_kwallet && $(LINK_SHARED_ONLY_CXX_LIB) $(libsvn_auth_kwallet_LDFLAGS) -o libsvn_auth_kwallet-1.la $(LT_NO_UNDEFINED) $(libsvn_auth_kwallet_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(SVN_KWALLET_LIBS) $(LIBS) libsvn_client_PATH = subversion/libsvn_client libsvn_client_DEPS = subversion/libsvn_client/add.lo subversion/libsvn_client/blame.lo subversion/libsvn_client/cat.lo subversion/libsvn_client/changelist.lo subversion/libsvn_client/checkout.lo subversion/libsvn_client/cleanup.lo subversion/libsvn_client/cmdline.lo subversion/libsvn_client/commit.lo subversion/libsvn_client/commit_util.lo subversion/libsvn_client/compat_providers.lo subversion/libsvn_client/conflicts.lo subversion/libsvn_client/copy.lo subversion/libsvn_client/ctx.lo subversion/libsvn_client/delete.lo subversion/libsvn_client/deprecated.lo subversion/libsvn_client/diff.lo subversion/libsvn_client/diff_local.lo subversion/libsvn_client/diff_summarize.lo subversion/libsvn_client/export.lo subversion/libsvn_client/externals.lo subversion/libsvn_client/import.lo subversion/libsvn_client/info.lo subversion/libsvn_client/iprops.lo subversion/libsvn_client/layout.lo subversion/libsvn_client/list.lo subversion/libsvn_client/locking_commands.lo subversion/libsvn_client/log.lo subversion/libsvn_client/merge.lo subversion/libsvn_client/merge_elements.lo subversion/libsvn_client/mergeinfo.lo subversion/libsvn_client/mtcc.lo subversion/libsvn_client/patch.lo subversion/libsvn_client/prop_commands.lo subversion/libsvn_client/ra.lo subversion/libsvn_client/relocate.lo subversion/libsvn_client/repos_diff.lo subversion/libsvn_client/resolved.lo subversion/libsvn_client/revert.lo subversion/libsvn_client/revisions.lo subversion/libsvn_client/shelf.lo subversion/libsvn_client/shelf2.lo subversion/libsvn_client/status.lo subversion/libsvn_client/switch.lo subversion/libsvn_client/update.lo subversion/libsvn_client/upgrade.lo subversion/libsvn_client/url.lo subversion/libsvn_client/util.lo subversion/libsvn_client/version.lo subversion/libsvn_client/wc_editor.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_client_OBJECTS = add.lo blame.lo cat.lo changelist.lo checkout.lo cleanup.lo cmdline.lo commit.lo commit_util.lo compat_providers.lo conflicts.lo copy.lo ctx.lo delete.lo deprecated.lo diff.lo diff_local.lo diff_summarize.lo export.lo externals.lo import.lo info.lo iprops.lo layout.lo list.lo locking_commands.lo log.lo merge.lo merge_elements.lo mergeinfo.lo mtcc.lo patch.lo prop_commands.lo ra.lo relocate.lo repos_diff.lo resolved.lo revert.lo revisions.lo shelf.lo shelf2.lo status.lo switch.lo update.lo upgrade.lo url.lo util.lo version.lo wc_editor.lo subversion/libsvn_client/libsvn_client-1.la: $(libsvn_client_DEPS) cd subversion/libsvn_client && $(LINK_LIB) $(libsvn_client_LDFLAGS) -o libsvn_client-1.la $(LT_NO_UNDEFINED) $(libsvn_client_OBJECTS) ../../subversion/libsvn_wc/libsvn_wc-1.la ../../subversion/libsvn_ra/libsvn_ra-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_delta_PATH = subversion/libsvn_delta libsvn_delta_DEPS = subversion/libsvn_delta/branch.lo subversion/libsvn_delta/branch_compat.lo subversion/libsvn_delta/branch_migrate.lo subversion/libsvn_delta/branch_nested.lo subversion/libsvn_delta/branch_repos.lo subversion/libsvn_delta/cancel.lo subversion/libsvn_delta/compat.lo subversion/libsvn_delta/compose_delta.lo subversion/libsvn_delta/debug_editor.lo subversion/libsvn_delta/default_editor.lo subversion/libsvn_delta/deprecated.lo subversion/libsvn_delta/depth_filter_editor.lo subversion/libsvn_delta/editor.lo subversion/libsvn_delta/element.lo subversion/libsvn_delta/path_driver.lo subversion/libsvn_delta/svndiff.lo subversion/libsvn_delta/text_delta.lo subversion/libsvn_delta/version.lo subversion/libsvn_delta/xdelta.lo subversion/libsvn_subr/libsvn_subr-1.la libsvn_delta_OBJECTS = branch.lo branch_compat.lo branch_migrate.lo branch_nested.lo branch_repos.lo cancel.lo compat.lo compose_delta.lo debug_editor.lo default_editor.lo deprecated.lo depth_filter_editor.lo editor.lo element.lo path_driver.lo svndiff.lo text_delta.lo version.lo xdelta.lo subversion/libsvn_delta/libsvn_delta-1.la: $(libsvn_delta_DEPS) cd subversion/libsvn_delta && $(LINK_LIB) $(libsvn_delta_LDFLAGS) -o libsvn_delta-1.la $(LT_NO_UNDEFINED) $(libsvn_delta_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_ZLIB_LIBS) $(LIBS) libsvn_diff_PATH = subversion/libsvn_diff libsvn_diff_DEPS = subversion/libsvn_diff/binary_diff.lo subversion/libsvn_diff/deprecated.lo subversion/libsvn_diff/diff.lo subversion/libsvn_diff/diff3.lo subversion/libsvn_diff/diff4.lo subversion/libsvn_diff/diff_file.lo subversion/libsvn_diff/diff_memory.lo subversion/libsvn_diff/diff_tree.lo subversion/libsvn_diff/lcs.lo subversion/libsvn_diff/parse-diff.lo subversion/libsvn_diff/token.lo subversion/libsvn_diff/util.lo subversion/libsvn_subr/libsvn_subr-1.la libsvn_diff_OBJECTS = binary_diff.lo deprecated.lo diff.lo diff3.lo diff4.lo diff_file.lo diff_memory.lo diff_tree.lo lcs.lo parse-diff.lo token.lo util.lo subversion/libsvn_diff/libsvn_diff-1.la: $(libsvn_diff_DEPS) cd subversion/libsvn_diff && $(LINK_LIB) $(libsvn_diff_LDFLAGS) -o libsvn_diff-1.la $(LT_NO_UNDEFINED) $(libsvn_diff_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_ZLIB_LIBS) $(LIBS) libsvn_fs_PATH = subversion/libsvn_fs install-ramod-lib: $(SVN_FS_LIB_INSTALL_DEPS) libsvn_fs_DEPS = $(SVN_FS_LIB_DEPS) subversion/libsvn_fs/access.lo subversion/libsvn_fs/deprecated.lo subversion/libsvn_fs/editor.lo subversion/libsvn_fs/fs-loader.lo subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_fs_OBJECTS = access.lo deprecated.lo editor.lo fs-loader.lo subversion/libsvn_fs/libsvn_fs-1.la: $(libsvn_fs_DEPS) cd subversion/libsvn_fs && $(LINK_LIB) $(libsvn_fs_LDFLAGS) -o libsvn_fs-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_OBJECTS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_FS_LIB_LINK) $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_fs_base_PATH = subversion/libsvn_fs_base libsvn_fs_base_DEPS = subversion/libsvn_fs_base/bdb/bdb-err.lo subversion/libsvn_fs_base/bdb/bdb_compat.lo subversion/libsvn_fs_base/bdb/changes-table.lo subversion/libsvn_fs_base/bdb/checksum-reps-table.lo subversion/libsvn_fs_base/bdb/copies-table.lo subversion/libsvn_fs_base/bdb/dbt.lo subversion/libsvn_fs_base/bdb/env.lo subversion/libsvn_fs_base/bdb/lock-tokens-table.lo subversion/libsvn_fs_base/bdb/locks-table.lo subversion/libsvn_fs_base/bdb/miscellaneous-table.lo subversion/libsvn_fs_base/bdb/node-origins-table.lo subversion/libsvn_fs_base/bdb/nodes-table.lo subversion/libsvn_fs_base/bdb/reps-table.lo subversion/libsvn_fs_base/bdb/rev-table.lo subversion/libsvn_fs_base/bdb/strings-table.lo subversion/libsvn_fs_base/bdb/txn-table.lo subversion/libsvn_fs_base/bdb/uuids-table.lo subversion/libsvn_fs_base/dag.lo subversion/libsvn_fs_base/err.lo subversion/libsvn_fs_base/fs.lo subversion/libsvn_fs_base/id.lo subversion/libsvn_fs_base/key-gen.lo subversion/libsvn_fs_base/lock.lo subversion/libsvn_fs_base/node-rev.lo subversion/libsvn_fs_base/reps-strings.lo subversion/libsvn_fs_base/revs-txns.lo subversion/libsvn_fs_base/trail.lo subversion/libsvn_fs_base/tree.lo subversion/libsvn_fs_base/util/fs_skels.lo subversion/libsvn_fs_base/uuid.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la libsvn_fs_base_OBJECTS = bdb/bdb-err.lo bdb/bdb_compat.lo bdb/changes-table.lo bdb/checksum-reps-table.lo bdb/copies-table.lo bdb/dbt.lo bdb/env.lo bdb/lock-tokens-table.lo bdb/locks-table.lo bdb/miscellaneous-table.lo bdb/node-origins-table.lo bdb/nodes-table.lo bdb/reps-table.lo bdb/rev-table.lo bdb/strings-table.lo bdb/txn-table.lo bdb/uuids-table.lo dag.lo err.lo fs.lo id.lo key-gen.lo lock.lo node-rev.lo reps-strings.lo revs-txns.lo trail.lo tree.lo util/fs_skels.lo uuid.lo subversion/libsvn_fs_base/libsvn_fs_base-1.la: $(libsvn_fs_base_DEPS) cd subversion/libsvn_fs_base && $(LINK_LIB) $(libsvn_fs_base_LDFLAGS) -o libsvn_fs_base-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_base_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_DB_LIBS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la $(LIBS) libsvn_fs_fs_PATH = subversion/libsvn_fs_fs libsvn_fs_fs_DEPS = subversion/libsvn_fs_fs/cached_data.lo subversion/libsvn_fs_fs/caching.lo subversion/libsvn_fs_fs/dag.lo subversion/libsvn_fs_fs/dump-index.lo subversion/libsvn_fs_fs/fs.lo subversion/libsvn_fs_fs/fs_fs.lo subversion/libsvn_fs_fs/hotcopy.lo subversion/libsvn_fs_fs/id.lo subversion/libsvn_fs_fs/index.lo subversion/libsvn_fs_fs/load-index.lo subversion/libsvn_fs_fs/lock.lo subversion/libsvn_fs_fs/low_level.lo subversion/libsvn_fs_fs/pack.lo subversion/libsvn_fs_fs/recovery.lo subversion/libsvn_fs_fs/rep-cache.lo subversion/libsvn_fs_fs/rev_file.lo subversion/libsvn_fs_fs/revprops.lo subversion/libsvn_fs_fs/stats.lo subversion/libsvn_fs_fs/temp_serializer.lo subversion/libsvn_fs_fs/transaction.lo subversion/libsvn_fs_fs/tree.lo subversion/libsvn_fs_fs/util.lo subversion/libsvn_fs_fs/verify.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la libsvn_fs_fs_OBJECTS = cached_data.lo caching.lo dag.lo dump-index.lo fs.lo fs_fs.lo hotcopy.lo id.lo index.lo load-index.lo lock.lo low_level.lo pack.lo recovery.lo rep-cache.lo rev_file.lo revprops.lo stats.lo temp_serializer.lo transaction.lo tree.lo util.lo verify.lo subversion/libsvn_fs_fs/libsvn_fs_fs-1.la: $(libsvn_fs_fs_DEPS) cd subversion/libsvn_fs_fs && $(LINK_LIB) $(libsvn_fs_fs_LDFLAGS) -o libsvn_fs_fs-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_fs_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la $(LIBS) libsvn_fs_util_PATH = subversion/libsvn_fs_util libsvn_fs_util_DEPS = subversion/libsvn_fs_util/fs-util.lo subversion/libsvn_subr/libsvn_subr-1.la libsvn_fs_util_OBJECTS = fs-util.lo subversion/libsvn_fs_util/libsvn_fs_util-1.la: $(libsvn_fs_util_DEPS) cd subversion/libsvn_fs_util && $(LINK_LIB) $(libsvn_fs_util_LDFLAGS) -o libsvn_fs_util-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_util_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_fs_x_PATH = subversion/libsvn_fs_x libsvn_fs_x_DEPS = subversion/libsvn_fs_x/batch_fsync.lo subversion/libsvn_fs_x/cached_data.lo subversion/libsvn_fs_x/caching.lo subversion/libsvn_fs_x/changes.lo subversion/libsvn_fs_x/dag.lo subversion/libsvn_fs_x/dag_cache.lo subversion/libsvn_fs_x/fs.lo subversion/libsvn_fs_x/fs_id.lo subversion/libsvn_fs_x/fs_x.lo subversion/libsvn_fs_x/hotcopy.lo subversion/libsvn_fs_x/id.lo subversion/libsvn_fs_x/index.lo subversion/libsvn_fs_x/lock.lo subversion/libsvn_fs_x/low_level.lo subversion/libsvn_fs_x/noderevs.lo subversion/libsvn_fs_x/pack.lo subversion/libsvn_fs_x/recovery.lo subversion/libsvn_fs_x/rep-cache.lo subversion/libsvn_fs_x/reps.lo subversion/libsvn_fs_x/rev_file.lo subversion/libsvn_fs_x/revprops.lo subversion/libsvn_fs_x/string_table.lo subversion/libsvn_fs_x/temp_serializer.lo subversion/libsvn_fs_x/transaction.lo subversion/libsvn_fs_x/tree.lo subversion/libsvn_fs_x/util.lo subversion/libsvn_fs_x/verify.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la libsvn_fs_x_OBJECTS = batch_fsync.lo cached_data.lo caching.lo changes.lo dag.lo dag_cache.lo fs.lo fs_id.lo fs_x.lo hotcopy.lo id.lo index.lo lock.lo low_level.lo noderevs.lo pack.lo recovery.lo rep-cache.lo reps.lo rev_file.lo revprops.lo string_table.lo temp_serializer.lo transaction.lo tree.lo util.lo verify.lo subversion/libsvn_fs_x/libsvn_fs_x-1.la: $(libsvn_fs_x_DEPS) cd subversion/libsvn_fs_x && $(LINK_LIB) $(libsvn_fs_x_LDFLAGS) -o libsvn_fs_x-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_x_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la $(LIBS) libsvn_ra_PATH = subversion/libsvn_ra install-lib: $(SVN_RA_LIB_INSTALL_DEPS) libsvn_ra_DEPS = $(SVN_RA_LIB_DEPS) subversion/libsvn_ra/compat.lo subversion/libsvn_ra/debug_reporter.lo subversion/libsvn_ra/deprecated.lo subversion/libsvn_ra/editor.lo subversion/libsvn_ra/ra_loader.lo subversion/libsvn_ra/util.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_ra_OBJECTS = compat.lo debug_reporter.lo deprecated.lo editor.lo ra_loader.lo util.lo subversion/libsvn_ra/libsvn_ra-1.la: $(libsvn_ra_DEPS) cd subversion/libsvn_ra && $(LINK_LIB) $(libsvn_ra_LDFLAGS) -o libsvn_ra-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_RA_LIB_LINK) $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_ra_local_PATH = subversion/libsvn_ra_local libsvn_ra_local_DEPS = subversion/libsvn_ra_local/ra_plugin.lo subversion/libsvn_ra_local/split_url.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_ra_local_OBJECTS = ra_plugin.lo split_url.lo subversion/libsvn_ra_local/libsvn_ra_local-1.la: $(libsvn_ra_local_DEPS) cd subversion/libsvn_ra_local && $(LINK_LIB) $(libsvn_ra_local_LDFLAGS) -o libsvn_ra_local-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_local_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_ra_serf_PATH = subversion/libsvn_ra_serf libsvn_ra_serf_DEPS = subversion/libsvn_ra_serf/blame.lo subversion/libsvn_ra_serf/blncache.lo subversion/libsvn_ra_serf/commit.lo subversion/libsvn_ra_serf/eagain_bucket.lo subversion/libsvn_ra_serf/get_deleted_rev.lo subversion/libsvn_ra_serf/get_file.lo subversion/libsvn_ra_serf/get_lock.lo subversion/libsvn_ra_serf/getdate.lo subversion/libsvn_ra_serf/getlocations.lo subversion/libsvn_ra_serf/getlocationsegments.lo subversion/libsvn_ra_serf/getlocks.lo subversion/libsvn_ra_serf/inherited_props.lo subversion/libsvn_ra_serf/list.lo subversion/libsvn_ra_serf/lock.lo subversion/libsvn_ra_serf/log.lo subversion/libsvn_ra_serf/merge.lo subversion/libsvn_ra_serf/mergeinfo.lo subversion/libsvn_ra_serf/multistatus.lo subversion/libsvn_ra_serf/options.lo subversion/libsvn_ra_serf/property.lo subversion/libsvn_ra_serf/replay.lo subversion/libsvn_ra_serf/request_body.lo subversion/libsvn_ra_serf/sb_bucket.lo subversion/libsvn_ra_serf/serf.lo subversion/libsvn_ra_serf/stat.lo subversion/libsvn_ra_serf/stream_bucket.lo subversion/libsvn_ra_serf/update.lo subversion/libsvn_ra_serf/util.lo subversion/libsvn_ra_serf/util_error.lo subversion/libsvn_ra_serf/xml.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_ra_serf_OBJECTS = blame.lo blncache.lo commit.lo eagain_bucket.lo get_deleted_rev.lo get_file.lo get_lock.lo getdate.lo getlocations.lo getlocationsegments.lo getlocks.lo inherited_props.lo list.lo lock.lo log.lo merge.lo mergeinfo.lo multistatus.lo options.lo property.lo replay.lo request_body.lo sb_bucket.lo serf.lo stat.lo stream_bucket.lo update.lo util.lo util_error.lo xml.lo subversion/libsvn_ra_serf/libsvn_ra_serf-1.la: $(libsvn_ra_serf_DEPS) cd subversion/libsvn_ra_serf && $(LINK_LIB) $(libsvn_ra_serf_LDFLAGS) -o libsvn_ra_serf-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_serf_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SERF_LIBS) $(SVN_ZLIB_LIBS) $(LIBS) libsvn_ra_svn_PATH = subversion/libsvn_ra_svn libsvn_ra_svn_DEPS = subversion/libsvn_ra_svn/client.lo subversion/libsvn_ra_svn/cram.lo subversion/libsvn_ra_svn/cyrus_auth.lo subversion/libsvn_ra_svn/deprecated.lo subversion/libsvn_ra_svn/editorp.lo subversion/libsvn_ra_svn/internal_auth.lo subversion/libsvn_ra_svn/marshal.lo subversion/libsvn_ra_svn/streams.lo subversion/libsvn_ra_svn/version.lo subversion/libsvn_ra_svn/wrapped_sasl.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_ra_svn_OBJECTS = client.lo cram.lo cyrus_auth.lo deprecated.lo editorp.lo internal_auth.lo marshal.lo streams.lo version.lo wrapped_sasl.lo subversion/libsvn_ra_svn/libsvn_ra_svn-1.la: $(libsvn_ra_svn_DEPS) cd subversion/libsvn_ra_svn && $(LINK_LIB) $(libsvn_ra_svn_LDFLAGS) -o libsvn_ra_svn-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_svn_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SASL_LIBS) $(LIBS) libsvn_repos_PATH = subversion/libsvn_repos libsvn_repos_DEPS = subversion/libsvn_repos/authz.lo subversion/libsvn_repos/authz_info.lo subversion/libsvn_repos/authz_parse.lo subversion/libsvn_repos/commit.lo subversion/libsvn_repos/compat.lo subversion/libsvn_repos/config_file.lo subversion/libsvn_repos/config_pool.lo subversion/libsvn_repos/delta.lo subversion/libsvn_repos/deprecated.lo subversion/libsvn_repos/dump.lo subversion/libsvn_repos/dump_editor.lo subversion/libsvn_repos/fs-wrap.lo subversion/libsvn_repos/hooks.lo subversion/libsvn_repos/list.lo subversion/libsvn_repos/load-fs-vtable.lo subversion/libsvn_repos/load.lo subversion/libsvn_repos/log.lo subversion/libsvn_repos/node_tree.lo subversion/libsvn_repos/notify.lo subversion/libsvn_repos/replay.lo subversion/libsvn_repos/reporter.lo subversion/libsvn_repos/repos.lo subversion/libsvn_repos/rev_hunt.lo subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_repos_OBJECTS = authz.lo authz_info.lo authz_parse.lo commit.lo compat.lo config_file.lo config_pool.lo delta.lo deprecated.lo dump.lo dump_editor.lo fs-wrap.lo hooks.lo list.lo load-fs-vtable.lo load.lo log.lo node_tree.lo notify.lo replay.lo reporter.lo repos.lo rev_hunt.lo subversion/libsvn_repos/libsvn_repos-1.la: $(libsvn_repos_DEPS) cd subversion/libsvn_repos && $(LINK_LIB) $(libsvn_repos_LDFLAGS) -o libsvn_repos-1.la $(LT_NO_UNDEFINED) $(libsvn_repos_OBJECTS) ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_subr_PATH = subversion/libsvn_subr -libsvn_subr_DEPS = subversion/libsvn_subr/adler32.lo subversion/libsvn_subr/atomic.lo subversion/libsvn_subr/auth.lo subversion/libsvn_subr/base64.lo subversion/libsvn_subr/bit_array.lo subversion/libsvn_subr/cache-inprocess.lo subversion/libsvn_subr/cache-membuffer.lo subversion/libsvn_subr/cache-memcache.lo subversion/libsvn_subr/cache-null.lo subversion/libsvn_subr/cache.lo subversion/libsvn_subr/cache_config.lo subversion/libsvn_subr/checksum.lo subversion/libsvn_subr/cmdline.lo subversion/libsvn_subr/compat.lo subversion/libsvn_subr/compress_lz4.lo subversion/libsvn_subr/compress_zlib.lo subversion/libsvn_subr/config.lo subversion/libsvn_subr/config_auth.lo subversion/libsvn_subr/config_file.lo subversion/libsvn_subr/config_win.lo subversion/libsvn_subr/crypto.lo subversion/libsvn_subr/ctype.lo subversion/libsvn_subr/date.lo subversion/libsvn_subr/debug.lo subversion/libsvn_subr/deprecated.lo subversion/libsvn_subr/dirent_uri.lo subversion/libsvn_subr/dso.lo subversion/libsvn_subr/encode.lo subversion/libsvn_subr/eol.lo subversion/libsvn_subr/error.lo subversion/libsvn_subr/fnv1a.lo subversion/libsvn_subr/gpg_agent.lo subversion/libsvn_subr/hash.lo subversion/libsvn_subr/io.lo subversion/libsvn_subr/iter.lo subversion/libsvn_subr/lock.lo subversion/libsvn_subr/log.lo subversion/libsvn_subr/lz4/lz4.lo subversion/libsvn_subr/macos_keychain.lo subversion/libsvn_subr/magic.lo subversion/libsvn_subr/md5.lo subversion/libsvn_subr/mergeinfo.lo subversion/libsvn_subr/mutex.lo subversion/libsvn_subr/nls.lo subversion/libsvn_subr/object_pool.lo subversion/libsvn_subr/opt.lo subversion/libsvn_subr/packed_data.lo subversion/libsvn_subr/path.lo subversion/libsvn_subr/pool.lo subversion/libsvn_subr/prefix_string.lo subversion/libsvn_subr/prompt.lo subversion/libsvn_subr/properties.lo subversion/libsvn_subr/quoprint.lo subversion/libsvn_subr/root_pools.lo subversion/libsvn_subr/simple_providers.lo subversion/libsvn_subr/skel.lo subversion/libsvn_subr/sorts.lo subversion/libsvn_subr/spillbuf.lo subversion/libsvn_subr/sqlite.lo subversion/libsvn_subr/sqlite3wrapper.lo subversion/libsvn_subr/ssl_client_cert_providers.lo subversion/libsvn_subr/ssl_client_cert_pw_providers.lo subversion/libsvn_subr/ssl_server_trust_providers.lo subversion/libsvn_subr/stream.lo subversion/libsvn_subr/string.lo subversion/libsvn_subr/subst.lo subversion/libsvn_subr/sysinfo.lo subversion/libsvn_subr/target.lo subversion/libsvn_subr/temp_serializer.lo subversion/libsvn_subr/time.lo subversion/libsvn_subr/token.lo subversion/libsvn_subr/types.lo subversion/libsvn_subr/user.lo subversion/libsvn_subr/username_providers.lo subversion/libsvn_subr/utf.lo subversion/libsvn_subr/utf8proc.lo subversion/libsvn_subr/utf_validate.lo subversion/libsvn_subr/utf_width.lo subversion/libsvn_subr/validate.lo subversion/libsvn_subr/version.lo subversion/libsvn_subr/win32_crashrpt.lo subversion/libsvn_subr/win32_crypto.lo subversion/libsvn_subr/win32_xlate.lo subversion/libsvn_subr/x509info.lo subversion/libsvn_subr/x509parse.lo subversion/libsvn_subr/xml.lo -libsvn_subr_OBJECTS = adler32.lo atomic.lo auth.lo base64.lo bit_array.lo cache-inprocess.lo cache-membuffer.lo cache-memcache.lo cache-null.lo cache.lo cache_config.lo checksum.lo cmdline.lo compat.lo compress_lz4.lo compress_zlib.lo config.lo config_auth.lo config_file.lo config_win.lo crypto.lo ctype.lo date.lo debug.lo deprecated.lo dirent_uri.lo dso.lo encode.lo eol.lo error.lo fnv1a.lo gpg_agent.lo hash.lo io.lo iter.lo lock.lo log.lo lz4/lz4.lo macos_keychain.lo magic.lo md5.lo mergeinfo.lo mutex.lo nls.lo object_pool.lo opt.lo packed_data.lo path.lo pool.lo prefix_string.lo prompt.lo properties.lo quoprint.lo root_pools.lo simple_providers.lo skel.lo sorts.lo spillbuf.lo sqlite.lo sqlite3wrapper.lo ssl_client_cert_providers.lo ssl_client_cert_pw_providers.lo ssl_server_trust_providers.lo stream.lo string.lo subst.lo sysinfo.lo target.lo temp_serializer.lo time.lo token.lo types.lo user.lo username_providers.lo utf.lo utf8proc.lo utf_validate.lo utf_width.lo validate.lo version.lo win32_crashrpt.lo win32_crypto.lo win32_xlate.lo x509info.lo x509parse.lo xml.lo +libsvn_subr_DEPS = subversion/libsvn_subr/adler32.lo subversion/libsvn_subr/apr_escape.lo subversion/libsvn_subr/atomic.lo subversion/libsvn_subr/auth.lo subversion/libsvn_subr/base64.lo subversion/libsvn_subr/bit_array.lo subversion/libsvn_subr/cache-inprocess.lo subversion/libsvn_subr/cache-membuffer.lo subversion/libsvn_subr/cache-memcache.lo subversion/libsvn_subr/cache-null.lo subversion/libsvn_subr/cache.lo subversion/libsvn_subr/cache_config.lo subversion/libsvn_subr/checksum.lo subversion/libsvn_subr/cmdline.lo subversion/libsvn_subr/compat.lo subversion/libsvn_subr/compress_lz4.lo subversion/libsvn_subr/compress_zlib.lo subversion/libsvn_subr/config.lo subversion/libsvn_subr/config_auth.lo subversion/libsvn_subr/config_file.lo subversion/libsvn_subr/config_win.lo subversion/libsvn_subr/crypto.lo subversion/libsvn_subr/ctype.lo subversion/libsvn_subr/date.lo subversion/libsvn_subr/debug.lo subversion/libsvn_subr/deprecated.lo subversion/libsvn_subr/dirent_uri.lo subversion/libsvn_subr/dso.lo subversion/libsvn_subr/encode.lo subversion/libsvn_subr/eol.lo subversion/libsvn_subr/error.lo subversion/libsvn_subr/fnv1a.lo subversion/libsvn_subr/gpg_agent.lo subversion/libsvn_subr/hash.lo subversion/libsvn_subr/io.lo subversion/libsvn_subr/iter.lo subversion/libsvn_subr/lock.lo subversion/libsvn_subr/log.lo subversion/libsvn_subr/lz4/lz4.lo subversion/libsvn_subr/macos_keychain.lo subversion/libsvn_subr/magic.lo subversion/libsvn_subr/md5.lo subversion/libsvn_subr/mergeinfo.lo subversion/libsvn_subr/mutex.lo subversion/libsvn_subr/nls.lo subversion/libsvn_subr/object_pool.lo subversion/libsvn_subr/opt.lo subversion/libsvn_subr/packed_data.lo subversion/libsvn_subr/path.lo subversion/libsvn_subr/pool.lo subversion/libsvn_subr/prefix_string.lo subversion/libsvn_subr/prompt.lo subversion/libsvn_subr/properties.lo subversion/libsvn_subr/quoprint.lo subversion/libsvn_subr/root_pools.lo subversion/libsvn_subr/simple_providers.lo subversion/libsvn_subr/skel.lo subversion/libsvn_subr/sorts.lo subversion/libsvn_subr/spillbuf.lo subversion/libsvn_subr/sqlite.lo subversion/libsvn_subr/sqlite3wrapper.lo subversion/libsvn_subr/ssl_client_cert_providers.lo subversion/libsvn_subr/ssl_client_cert_pw_providers.lo subversion/libsvn_subr/ssl_server_trust_providers.lo subversion/libsvn_subr/stream.lo subversion/libsvn_subr/string.lo subversion/libsvn_subr/subst.lo subversion/libsvn_subr/sysinfo.lo subversion/libsvn_subr/target.lo subversion/libsvn_subr/temp_serializer.lo subversion/libsvn_subr/time.lo subversion/libsvn_subr/token.lo subversion/libsvn_subr/types.lo subversion/libsvn_subr/user.lo subversion/libsvn_subr/username_providers.lo subversion/libsvn_subr/utf.lo subversion/libsvn_subr/utf8proc.lo subversion/libsvn_subr/utf_validate.lo subversion/libsvn_subr/utf_width.lo subversion/libsvn_subr/validate.lo subversion/libsvn_subr/version.lo subversion/libsvn_subr/win32_crashrpt.lo subversion/libsvn_subr/win32_crypto.lo subversion/libsvn_subr/win32_xlate.lo subversion/libsvn_subr/x509info.lo subversion/libsvn_subr/x509parse.lo subversion/libsvn_subr/xml.lo +libsvn_subr_OBJECTS = adler32.lo apr_escape.lo atomic.lo auth.lo base64.lo bit_array.lo cache-inprocess.lo cache-membuffer.lo cache-memcache.lo cache-null.lo cache.lo cache_config.lo checksum.lo cmdline.lo compat.lo compress_lz4.lo compress_zlib.lo config.lo config_auth.lo config_file.lo config_win.lo crypto.lo ctype.lo date.lo debug.lo deprecated.lo dirent_uri.lo dso.lo encode.lo eol.lo error.lo fnv1a.lo gpg_agent.lo hash.lo io.lo iter.lo lock.lo log.lo lz4/lz4.lo macos_keychain.lo magic.lo md5.lo mergeinfo.lo mutex.lo nls.lo object_pool.lo opt.lo packed_data.lo path.lo pool.lo prefix_string.lo prompt.lo properties.lo quoprint.lo root_pools.lo simple_providers.lo skel.lo sorts.lo spillbuf.lo sqlite.lo sqlite3wrapper.lo ssl_client_cert_providers.lo ssl_client_cert_pw_providers.lo ssl_server_trust_providers.lo stream.lo string.lo subst.lo sysinfo.lo target.lo temp_serializer.lo time.lo token.lo types.lo user.lo username_providers.lo utf.lo utf8proc.lo utf_validate.lo utf_width.lo validate.lo version.lo win32_crashrpt.lo win32_crypto.lo win32_xlate.lo x509info.lo x509parse.lo xml.lo subversion/libsvn_subr/libsvn_subr-1.la: $(libsvn_subr_DEPS) cd subversion/libsvn_subr && $(LINK_LIB) $(libsvn_subr_LDFLAGS) -o libsvn_subr-1.la $(LT_NO_UNDEFINED) $(libsvn_subr_OBJECTS) $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_XML_LIBS) $(SVN_ZLIB_LIBS) $(SVN_APR_MEMCACHE_LIBS) $(SVN_SQLITE_LIBS) $(SVN_MAGIC_LIBS) $(SVN_INTL_LIBS) $(SVN_LZ4_LIBS) $(SVN_UTF8PROC_LIBS) $(SVN_MACOS_PLIST_LIBS) $(SVN_MACOS_KEYCHAIN_LIBS) $(LIBS) libsvn_swig_perl_PATH = subversion/bindings/swig/perl/libsvn_swig_perl libsvn_swig_perl_DEPS = subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_swig_perl_OBJECTS = swigutil_pl.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la: $(libsvn_swig_perl_DEPS) cd subversion/bindings/swig/perl/libsvn_swig_perl && $(LINK_LIB) $(libsvn_swig_perl_LDFLAGS) -o libsvn_swig_perl-1.la $(LT_NO_UNDEFINED) $(libsvn_swig_perl_OBJECTS) ../../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_PERL_LIBS) $(SVN_SWIG_LIBS) $(LIBS) libsvn_swig_py_PATH = subversion/bindings/swig/python/libsvn_swig_py libsvn_swig_py_DEPS = subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_swig_py_OBJECTS = swigutil_py.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la: $(libsvn_swig_py_DEPS) cd subversion/bindings/swig/python/libsvn_swig_py && $(LINK) $(libsvn_swig_py_LDFLAGS) -o libsvn_swig_py-1.la $(LT_NO_UNDEFINED) $(libsvn_swig_py_OBJECTS) ../../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_PYTHON_LIBS) $(SVN_SWIG_LIBS) $(LIBS) libsvn_swig_ruby_PATH = subversion/bindings/swig/ruby/libsvn_swig_ruby libsvn_swig_ruby_DEPS = subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_swig_ruby_OBJECTS = swigutil_rb.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la: $(libsvn_swig_ruby_DEPS) cd subversion/bindings/swig/ruby/libsvn_swig_ruby && $(LINK) $(SWIG_RB_LIBS) $(libsvn_swig_ruby_LDFLAGS) -o libsvn_swig_ruby-1.la $(LT_NO_UNDEFINED) $(libsvn_swig_ruby_OBJECTS) ../../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_RUBY_LIBS) $(SVN_SWIG_LIBS) $(LIBS) libsvn_test_PATH = subversion/tests libsvn_test_DEPS = subversion/tests/svn_test_fs.lo subversion/tests/svn_test_main.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_test_OBJECTS = svn_test_fs.lo svn_test_main.lo subversion/tests/libsvn_test-1.la: $(libsvn_test_DEPS) cd subversion/tests && $(LINK_LIB) $(libsvn_test_LDFLAGS) -o libsvn_test-1.la $(libsvn_test_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvn_wc_PATH = subversion/libsvn_wc libsvn_wc_DEPS = subversion/libsvn_wc/adm_crawler.lo subversion/libsvn_wc/adm_files.lo subversion/libsvn_wc/adm_ops.lo subversion/libsvn_wc/ambient_depth_filter_editor.lo subversion/libsvn_wc/cleanup.lo subversion/libsvn_wc/conflicts.lo subversion/libsvn_wc/context.lo subversion/libsvn_wc/copy.lo subversion/libsvn_wc/crop.lo subversion/libsvn_wc/delete.lo subversion/libsvn_wc/deprecated.lo subversion/libsvn_wc/diff_editor.lo subversion/libsvn_wc/diff_local.lo subversion/libsvn_wc/entries.lo subversion/libsvn_wc/externals.lo subversion/libsvn_wc/info.lo subversion/libsvn_wc/lock.lo subversion/libsvn_wc/merge.lo subversion/libsvn_wc/node.lo subversion/libsvn_wc/old-and-busted.lo subversion/libsvn_wc/props.lo subversion/libsvn_wc/questions.lo subversion/libsvn_wc/relocate.lo subversion/libsvn_wc/revert.lo subversion/libsvn_wc/revision_status.lo subversion/libsvn_wc/status.lo subversion/libsvn_wc/translate.lo subversion/libsvn_wc/tree_conflicts.lo subversion/libsvn_wc/update_editor.lo subversion/libsvn_wc/upgrade.lo subversion/libsvn_wc/util.lo subversion/libsvn_wc/wc_db.lo subversion/libsvn_wc/wc_db_pristine.lo subversion/libsvn_wc/wc_db_update_move.lo subversion/libsvn_wc/wc_db_util.lo subversion/libsvn_wc/wc_db_wcroot.lo subversion/libsvn_wc/wcroot_anchor.lo subversion/libsvn_wc/workqueue.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la libsvn_wc_OBJECTS = adm_crawler.lo adm_files.lo adm_ops.lo ambient_depth_filter_editor.lo cleanup.lo conflicts.lo context.lo copy.lo crop.lo delete.lo deprecated.lo diff_editor.lo diff_local.lo entries.lo externals.lo info.lo lock.lo merge.lo node.lo old-and-busted.lo props.lo questions.lo relocate.lo revert.lo revision_status.lo status.lo translate.lo tree_conflicts.lo update_editor.lo upgrade.lo util.lo wc_db.lo wc_db_pristine.lo wc_db_update_move.lo wc_db_util.lo wc_db_wcroot.lo wcroot_anchor.lo workqueue.lo subversion/libsvn_wc/libsvn_wc-1.la: $(libsvn_wc_DEPS) cd subversion/libsvn_wc && $(LINK_LIB) $(libsvn_wc_LDFLAGS) -o libsvn_wc-1.la $(LT_NO_UNDEFINED) $(libsvn_wc_OBJECTS) ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) libsvnjavahl_PATH = subversion/bindings/javahl/native libsvnjavahl_DEPS = $(javahl_java_DEPS) $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) $(javahl_java_DEPS) subversion/bindings/javahl/native/Array.lo subversion/bindings/javahl/native/AuthnCallback.lo subversion/bindings/javahl/native/BlameCallback.lo subversion/bindings/javahl/native/ChangelistCallback.lo subversion/bindings/javahl/native/ClientContext.lo subversion/bindings/javahl/native/CommitCallback.lo subversion/bindings/javahl/native/CommitEditor.lo subversion/bindings/javahl/native/CommitMessage.lo subversion/bindings/javahl/native/CopySources.lo subversion/bindings/javahl/native/CreateJ.lo subversion/bindings/javahl/native/Credential.lo subversion/bindings/javahl/native/DiffOptions.lo subversion/bindings/javahl/native/DiffSummaryReceiver.lo subversion/bindings/javahl/native/EditorCallbacks.lo subversion/bindings/javahl/native/EditorProxy.lo subversion/bindings/javahl/native/EnumMapper.lo subversion/bindings/javahl/native/ExternalItem.lo subversion/bindings/javahl/native/File.lo subversion/bindings/javahl/native/ImportFilterCallback.lo subversion/bindings/javahl/native/InfoCallback.lo subversion/bindings/javahl/native/InputStream.lo subversion/bindings/javahl/native/Iterator.lo subversion/bindings/javahl/native/JNIByteArray.lo subversion/bindings/javahl/native/JNICriticalSection.lo subversion/bindings/javahl/native/JNIMutex.lo subversion/bindings/javahl/native/JNIStackElement.lo subversion/bindings/javahl/native/JNIStringHolder.lo subversion/bindings/javahl/native/JNIUtil.lo subversion/bindings/javahl/native/ListCallback.lo subversion/bindings/javahl/native/LockTokenTable.lo subversion/bindings/javahl/native/LogMessageCallback.lo subversion/bindings/javahl/native/MessageReceiver.lo subversion/bindings/javahl/native/NativeStream.lo subversion/bindings/javahl/native/OperationContext.lo subversion/bindings/javahl/native/OutputStream.lo subversion/bindings/javahl/native/PatchCallback.lo subversion/bindings/javahl/native/Path.lo subversion/bindings/javahl/native/Pool.lo subversion/bindings/javahl/native/Prompter.lo subversion/bindings/javahl/native/PropertyTable.lo subversion/bindings/javahl/native/ProplistCallback.lo subversion/bindings/javahl/native/RemoteSession.lo subversion/bindings/javahl/native/RemoteSessionContext.lo subversion/bindings/javahl/native/ReposFreezeAction.lo subversion/bindings/javahl/native/ReposNotifyCallback.lo subversion/bindings/javahl/native/ReposVerifyCallback.lo subversion/bindings/javahl/native/Revision.lo subversion/bindings/javahl/native/RevisionRange.lo subversion/bindings/javahl/native/RevisionRangeList.lo subversion/bindings/javahl/native/SVNBase.lo subversion/bindings/javahl/native/SVNClient.lo subversion/bindings/javahl/native/SVNRepos.lo subversion/bindings/javahl/native/StateReporter.lo subversion/bindings/javahl/native/StatusCallback.lo subversion/bindings/javahl/native/StringArray.lo subversion/bindings/javahl/native/SubversionException.lo subversion/bindings/javahl/native/Targets.lo subversion/bindings/javahl/native/Utility.lo subversion/bindings/javahl/native/VersionExtended.lo subversion/bindings/javahl/native/deprecated.lo subversion/bindings/javahl/native/jniwrapper/jni_base.lo subversion/bindings/javahl/native/jniwrapper/jni_channel.lo subversion/bindings/javahl/native/jniwrapper/jni_class_cache.lo subversion/bindings/javahl/native/jniwrapper/jni_io_stream.lo subversion/bindings/javahl/native/jniwrapper/jni_iterator.lo subversion/bindings/javahl/native/jniwrapper/jni_list.lo subversion/bindings/javahl/native/jniwrapper/jni_string_map.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs/libsvn_fs-1.la libsvnjavahl_OBJECTS = Array.lo AuthnCallback.lo BlameCallback.lo ChangelistCallback.lo ClientContext.lo CommitCallback.lo CommitEditor.lo CommitMessage.lo CopySources.lo CreateJ.lo Credential.lo DiffOptions.lo DiffSummaryReceiver.lo EditorCallbacks.lo EditorProxy.lo EnumMapper.lo ExternalItem.lo File.lo ImportFilterCallback.lo InfoCallback.lo InputStream.lo Iterator.lo JNIByteArray.lo JNICriticalSection.lo JNIMutex.lo JNIStackElement.lo JNIStringHolder.lo JNIUtil.lo ListCallback.lo LockTokenTable.lo LogMessageCallback.lo MessageReceiver.lo NativeStream.lo OperationContext.lo OutputStream.lo PatchCallback.lo Path.lo Pool.lo Prompter.lo PropertyTable.lo ProplistCallback.lo RemoteSession.lo RemoteSessionContext.lo ReposFreezeAction.lo ReposNotifyCallback.lo ReposVerifyCallback.lo Revision.lo RevisionRange.lo RevisionRangeList.lo SVNBase.lo SVNClient.lo SVNRepos.lo StateReporter.lo StatusCallback.lo StringArray.lo SubversionException.lo Targets.lo Utility.lo VersionExtended.lo deprecated.lo jniwrapper/jni_base.lo jniwrapper/jni_channel.lo jniwrapper/jni_class_cache.lo jniwrapper/jni_io_stream.lo jniwrapper/jni_iterator.lo jniwrapper/jni_list.lo jniwrapper/jni_string_map.lo org_apache_subversion_javahl_NativeResources.lo org_apache_subversion_javahl_SVNClient.lo org_apache_subversion_javahl_SVNRepos.lo org_apache_subversion_javahl_remote_CommitEditor.lo org_apache_subversion_javahl_remote_RemoteFactory.lo org_apache_subversion_javahl_remote_RemoteSession.lo org_apache_subversion_javahl_remote_StateReporter.lo org_apache_subversion_javahl_types_RevisionRangeList.lo org_apache_subversion_javahl_types_RuntimeVersion.lo org_apache_subversion_javahl_types_Version.lo org_apache_subversion_javahl_types_VersionExtended.lo org_apache_subversion_javahl_util_ConfigImpl_Category.lo org_apache_subversion_javahl_util_ConfigLib.lo org_apache_subversion_javahl_util_DiffLib.lo org_apache_subversion_javahl_util_PropLib.lo org_apache_subversion_javahl_util_SubstLib.lo org_apache_subversion_javahl_util_TunnelChannel.lo subversion/bindings/javahl/native/libsvnjavahl-1.la: $(libsvnjavahl_DEPS) cd subversion/bindings/javahl/native && $(LINK_JAVAHL_CXX) $(libsvnjavahl_LDFLAGS) -o libsvnjavahl-1.la $(LT_NO_UNDEFINED) $(libsvnjavahl_OBJECTS) ../../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../../subversion/libsvn_fs/libsvn_fs-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_JAVA_SDK_LIBS) $(LIBS) libsvnxx_PATH = subversion/bindings/cxx libsvnxx_DEPS = subversion/bindings/cxx/src/aprwrap/impl.lo subversion/bindings/cxx/src/client_context.lo subversion/bindings/cxx/src/client_status.lo subversion/bindings/cxx/src/debug.lo subversion/bindings/cxx/src/depth.lo subversion/bindings/cxx/src/exception.lo subversion/bindings/cxx/src/future.lo subversion/bindings/cxx/src/init.lo subversion/bindings/cxx/src/revision.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs/libsvn_fs-1.la libsvnxx_OBJECTS = src/aprwrap/impl.lo src/client_context.lo src/client_status.lo src/debug.lo src/depth.lo src/exception.lo src/future.lo src/init.lo src/revision.lo subversion/bindings/cxx/libsvnxx-1.la: $(libsvnxx_DEPS) if $(SVN_BUILD_SVNXX) ; then cd subversion/bindings/cxx && $(LINK_CXX_LIB) $(libsvnxx_LDFLAGS) -o libsvnxx-1.la $(LT_NO_UNDEFINED) $(libsvnxx_OBJECTS) ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) ; else echo "fake" > subversion/bindings/cxx/libsvnxx-1.la ; fi locale_PATH = subversion/po locale_DEPS = subversion/po/de.mo subversion/po/es.mo subversion/po/fr.mo subversion/po/it.mo subversion/po/ja.mo subversion/po/ko.mo subversion/po/nb.mo subversion/po/pl.mo subversion/po/pt_BR.mo subversion/po/sv.mo subversion/po/zh_CN.mo subversion/po/zh_TW.mo locale: $(locale_DEPS) lock_helper_PATH = subversion/tests/cmdline lock_helper_DEPS = subversion/tests/cmdline/lock-helper.lo subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la lock_helper_OBJECTS = lock-helper.lo subversion/tests/cmdline/lock-helper$(EXEEXT): $(lock_helper_DEPS) cd subversion/tests/cmdline && $(LINK) $(lock_helper_LDFLAGS) -o lock-helper$(EXEEXT) $(lock_helper_OBJECTS) ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) locks_test_PATH = subversion/tests/libsvn_fs locks_test_DEPS = subversion/tests/libsvn_fs/locks-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la locks_test_OBJECTS = locks-test.lo subversion/tests/libsvn_fs/locks-test$(EXEEXT): $(locks_test_DEPS) cd subversion/tests/libsvn_fs && $(LINK) $(locks_test_LDFLAGS) -o locks-test$(EXEEXT) $(locks_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) mergeinfo_test_PATH = subversion/tests/libsvn_subr mergeinfo_test_DEPS = subversion/tests/libsvn_subr/mergeinfo-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la mergeinfo_test_OBJECTS = mergeinfo-test.lo subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT): $(mergeinfo_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(mergeinfo_test_LDFLAGS) -o mergeinfo-test$(EXEEXT) $(mergeinfo_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) mod_authz_svn_PATH = subversion/mod_authz_svn mod_authz_svn_DEPS = subversion/mod_authz_svn/mod_authz_svn.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/mod_dav_svn/mod_dav_svn.la mod_authz_svn_OBJECTS = mod_authz_svn.lo subversion/mod_authz_svn/mod_authz_svn.la: $(mod_authz_svn_DEPS) if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_authz_svn && $(LINK_APACHE_MOD) $(mod_authz_svn_LDFLAGS) -o mod_authz_svn.la $(LT_NO_UNDEFINED) $(mod_authz_svn_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_HTTPD_LIBS) $(LIBS) ; else echo "fake" > subversion/mod_authz_svn/mod_authz_svn.la ; fi mod_dav_svn_PATH = subversion/mod_dav_svn mod_dav_svn_DEPS = subversion/mod_dav_svn/activity.lo subversion/mod_dav_svn/authz.lo subversion/mod_dav_svn/deadprops.lo subversion/mod_dav_svn/liveprops.lo subversion/mod_dav_svn/lock.lo subversion/mod_dav_svn/merge.lo subversion/mod_dav_svn/mirror.lo subversion/mod_dav_svn/mod_dav_svn.lo subversion/mod_dav_svn/posts/create_txn.lo subversion/mod_dav_svn/reports/dated-rev.lo subversion/mod_dav_svn/reports/deleted-rev.lo subversion/mod_dav_svn/reports/file-revs.lo subversion/mod_dav_svn/reports/get-location-segments.lo subversion/mod_dav_svn/reports/get-locations.lo subversion/mod_dav_svn/reports/get-locks.lo subversion/mod_dav_svn/reports/inherited-props.lo subversion/mod_dav_svn/reports/list.lo subversion/mod_dav_svn/reports/log.lo subversion/mod_dav_svn/reports/mergeinfo.lo subversion/mod_dav_svn/reports/replay.lo subversion/mod_dav_svn/reports/update.lo subversion/mod_dav_svn/repos.lo subversion/mod_dav_svn/status.lo subversion/mod_dav_svn/util.lo subversion/mod_dav_svn/version.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la mod_dav_svn_OBJECTS = activity.lo authz.lo deadprops.lo liveprops.lo lock.lo merge.lo mirror.lo mod_dav_svn.lo posts/create_txn.lo reports/dated-rev.lo reports/deleted-rev.lo reports/file-revs.lo reports/get-location-segments.lo reports/get-locations.lo reports/get-locks.lo reports/inherited-props.lo reports/list.lo reports/log.lo reports/mergeinfo.lo reports/replay.lo reports/update.lo repos.lo status.lo util.lo version.lo subversion/mod_dav_svn/mod_dav_svn.la: $(mod_dav_svn_DEPS) if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_dav_svn && $(LINK_APACHE_MOD) $(mod_dav_svn_LDFLAGS) -o mod_dav_svn.la $(LT_NO_UNDEFINED) $(mod_dav_svn_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_HTTPD_LIBS) $(SVN_MOD_DAV_LIBS) $(LIBS) ; else echo "fake" > subversion/mod_dav_svn/mod_dav_svn.la ; fi mod_dontdothat_PATH = tools/server-side/mod_dontdothat mod_dontdothat_DEPS = tools/server-side/mod_dontdothat/mod_dontdothat.lo subversion/libsvn_subr/libsvn_subr-1.la subversion/mod_dav_svn/mod_dav_svn.la mod_dontdothat_OBJECTS = mod_dontdothat.lo tools/server-side/mod_dontdothat/mod_dontdothat.la: $(mod_dontdothat_DEPS) if $(INSTALL_APACHE_MODS) ; then cd tools/server-side/mod_dontdothat && $(LINK_APACHE_MOD) $(mod_dontdothat_LDFLAGS) -o mod_dontdothat.la $(LT_NO_UNDEFINED) $(mod_dontdothat_OBJECTS) ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_HTTPD_LIBS) $(LIBS) ; else echo "fake" > tools/server-side/mod_dontdothat/mod_dontdothat.la ; fi mtcc_test_PATH = subversion/tests/libsvn_client mtcc_test_DEPS = subversion/tests/libsvn_client/mtcc-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la mtcc_test_OBJECTS = mtcc-test.lo subversion/tests/libsvn_client/mtcc-test$(EXEEXT): $(mtcc_test_DEPS) cd subversion/tests/libsvn_client && $(LINK) $(mtcc_test_LDFLAGS) -o mtcc-test$(EXEEXT) $(mtcc_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) op_depth_test_PATH = subversion/tests/libsvn_wc op_depth_test_DEPS = subversion/tests/libsvn_wc/op-depth-test.lo subversion/tests/libsvn_wc/utils.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la op_depth_test_OBJECTS = op-depth-test.lo utils.lo subversion/tests/libsvn_wc/op-depth-test$(EXEEXT): $(op_depth_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(op_depth_test_LDFLAGS) -o op-depth-test$(EXEEXT) $(op_depth_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) opt_test_PATH = subversion/tests/libsvn_subr opt_test_DEPS = subversion/tests/libsvn_subr/opt-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la opt_test_OBJECTS = opt-test.lo subversion/tests/libsvn_subr/opt-test$(EXEEXT): $(opt_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(opt_test_LDFLAGS) -o opt-test$(EXEEXT) $(opt_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) packed_data_test_PATH = subversion/tests/libsvn_subr packed_data_test_DEPS = subversion/tests/libsvn_subr/packed-data-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la packed_data_test_OBJECTS = packed-data-test.lo subversion/tests/libsvn_subr/packed-data-test$(EXEEXT): $(packed_data_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(packed_data_test_LDFLAGS) -o packed-data-test$(EXEEXT) $(packed_data_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) parse_diff_test_PATH = subversion/tests/libsvn_diff parse_diff_test_DEPS = subversion/tests/libsvn_diff/parse-diff-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la parse_diff_test_OBJECTS = parse-diff-test.lo subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT): $(parse_diff_test_DEPS) cd subversion/tests/libsvn_diff && $(LINK) $(parse_diff_test_LDFLAGS) -o parse-diff-test$(EXEEXT) $(parse_diff_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) path_test_PATH = subversion/tests/libsvn_subr path_test_DEPS = subversion/tests/libsvn_subr/path-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la path_test_OBJECTS = path-test.lo subversion/tests/libsvn_subr/path-test$(EXEEXT): $(path_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(path_test_LDFLAGS) -o path-test$(EXEEXT) $(path_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) perl_client_PATH = subversion/bindings/swig/perl/native perl_client_DEPS = subversion/bindings/swig/perl/native/svn_client.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_client_OBJECTS = svn_client.lo subversion/bindings/swig/perl/native/_Client.la: $(perl_client_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_client_LDFLAGS) -o _Client.la $(LT_NO_UNDEFINED) $(perl_client_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_core_PATH = subversion/bindings/swig/perl/native perl_core_DEPS = subversion/bindings/swig/perl/native/core.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la perl_core_OBJECTS = core.lo subversion/bindings/swig/perl/native/_Core.la: $(perl_core_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_core_LDFLAGS) -o _Core.la $(LT_NO_UNDEFINED) $(perl_core_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_delta_PATH = subversion/bindings/swig/perl/native perl_delta_DEPS = subversion/bindings/swig/perl/native/svn_delta.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_delta_OBJECTS = svn_delta.lo subversion/bindings/swig/perl/native/_Delta.la: $(perl_delta_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_delta_LDFLAGS) -o _Delta.la $(LT_NO_UNDEFINED) $(perl_delta_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_diff_PATH = subversion/bindings/swig/perl/native perl_diff_DEPS = subversion/bindings/swig/perl/native/svn_diff.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_diff_OBJECTS = svn_diff.lo subversion/bindings/swig/perl/native/_Diff.la: $(perl_diff_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_diff_LDFLAGS) -o _Diff.la $(LT_NO_UNDEFINED) $(perl_diff_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_fs_PATH = subversion/bindings/swig/perl/native perl_fs_DEPS = subversion/bindings/swig/perl/native/svn_fs.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_fs_OBJECTS = svn_fs.lo subversion/bindings/swig/perl/native/_Fs.la: $(perl_fs_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_fs_LDFLAGS) -o _Fs.la $(LT_NO_UNDEFINED) $(perl_fs_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_ra_PATH = subversion/bindings/swig/perl/native perl_ra_DEPS = subversion/bindings/swig/perl/native/svn_ra.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_ra_OBJECTS = svn_ra.lo subversion/bindings/swig/perl/native/_Ra.la: $(perl_ra_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_ra_LDFLAGS) -o _Ra.la $(LT_NO_UNDEFINED) $(perl_ra_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_repos_PATH = subversion/bindings/swig/perl/native perl_repos_DEPS = subversion/bindings/swig/perl/native/svn_repos.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_repos_OBJECTS = svn_repos.lo subversion/bindings/swig/perl/native/_Repos.la: $(perl_repos_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_repos_LDFLAGS) -o _Repos.la $(LT_NO_UNDEFINED) $(perl_repos_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) perl_wc_PATH = subversion/bindings/swig/perl/native perl_wc_DEPS = subversion/bindings/swig/perl/native/svn_wc.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/perl/native/_Core.la perl_wc_OBJECTS = svn_wc.lo subversion/bindings/swig/perl/native/_Wc.la: $(perl_wc_DEPS) cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_wc_LDFLAGS) -o _Wc.la $(LT_NO_UNDEFINED) $(perl_wc_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la ../../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) prefix_string_test_PATH = subversion/tests/libsvn_subr prefix_string_test_DEPS = subversion/tests/libsvn_subr/prefix-string-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la prefix_string_test_OBJECTS = prefix-string-test.lo subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT): $(prefix_string_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(prefix_string_test_LDFLAGS) -o prefix-string-test$(EXEEXT) $(prefix_string_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) priority_queue_test_PATH = subversion/tests/libsvn_subr priority_queue_test_DEPS = subversion/tests/libsvn_subr/priority-queue-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la priority_queue_test_OBJECTS = priority-queue-test.lo subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT): $(priority_queue_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(priority_queue_test_LDFLAGS) -o priority-queue-test$(EXEEXT) $(priority_queue_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) pristine_store_test_PATH = subversion/tests/libsvn_wc pristine_store_test_DEPS = subversion/tests/libsvn_wc/pristine-store-test.lo subversion/tests/libsvn_wc/utils.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la pristine_store_test_OBJECTS = pristine-store-test.lo utils.lo subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT): $(pristine_store_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(pristine_store_test_LDFLAGS) -o pristine-store-test$(EXEEXT) $(pristine_store_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) python_client_PATH = subversion/bindings/swig/python python_client_DEPS = subversion/bindings/swig/python/svn_client.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_client_OBJECTS = svn_client.lo subversion/bindings/swig/python/_client.la: $(python_client_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_client_LDFLAGS) -o _client.la $(LT_NO_UNDEFINED) $(python_client_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_core_PATH = subversion/bindings/swig/python python_core_DEPS = subversion/bindings/swig/python/core.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la python_core_OBJECTS = core.lo subversion/bindings/swig/python/_core.la: $(python_core_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_core_LDFLAGS) -o _core.la $(LT_NO_UNDEFINED) $(python_core_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_delta_PATH = subversion/bindings/swig/python python_delta_DEPS = subversion/bindings/swig/python/svn_delta.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_delta_OBJECTS = svn_delta.lo subversion/bindings/swig/python/_delta.la: $(python_delta_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_delta_LDFLAGS) -o _delta.la $(LT_NO_UNDEFINED) $(python_delta_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_diff_PATH = subversion/bindings/swig/python python_diff_DEPS = subversion/bindings/swig/python/svn_diff.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_diff_OBJECTS = svn_diff.lo subversion/bindings/swig/python/_diff.la: $(python_diff_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_diff_LDFLAGS) -o _diff.la $(LT_NO_UNDEFINED) $(python_diff_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_fs_PATH = subversion/bindings/swig/python python_fs_DEPS = subversion/bindings/swig/python/svn_fs.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_fs_OBJECTS = svn_fs.lo subversion/bindings/swig/python/_fs.la: $(python_fs_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_fs_LDFLAGS) -o _fs.la $(LT_NO_UNDEFINED) $(python_fs_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_ra_PATH = subversion/bindings/swig/python python_ra_DEPS = subversion/bindings/swig/python/svn_ra.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_ra_OBJECTS = svn_ra.lo subversion/bindings/swig/python/_ra.la: $(python_ra_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_ra_LDFLAGS) -o _ra.la $(LT_NO_UNDEFINED) $(python_ra_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_repos_PATH = subversion/bindings/swig/python python_repos_DEPS = subversion/bindings/swig/python/svn_repos.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_repos_OBJECTS = svn_repos.lo subversion/bindings/swig/python/_repos.la: $(python_repos_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_repos_LDFLAGS) -o _repos.la $(LT_NO_UNDEFINED) $(python_repos_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) python_wc_PATH = subversion/bindings/swig/python python_wc_DEPS = subversion/bindings/swig/python/svn_wc.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/python/_core.la python_wc_OBJECTS = svn_wc.lo subversion/bindings/swig/python/_wc.la: $(python_wc_DEPS) cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_wc_LDFLAGS) -o _wc.la $(LT_NO_UNDEFINED) $(python_wc_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la ../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ra_local_test_PATH = subversion/tests/libsvn_ra_local ra_local_test_DEPS = subversion/tests/libsvn_ra_local/ra-local-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la ra_local_test_OBJECTS = ra-local-test.lo subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT): $(ra_local_test_DEPS) cd subversion/tests/libsvn_ra_local && $(LINK) $(ra_local_test_LDFLAGS) -o ra-local-test$(EXEEXT) $(ra_local_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_ra_local/libsvn_ra_local-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) ra_test_PATH = subversion/tests/libsvn_ra ra_test_DEPS = subversion/tests/libsvn_ra/ra-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la ra_test_OBJECTS = ra-test.lo subversion/tests/libsvn_ra/ra-test$(EXEEXT): $(ra_test_DEPS) cd subversion/tests/libsvn_ra && $(LINK) $(ra_test_LDFLAGS) -o ra-test$(EXEEXT) $(ra_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_ra_svn/libsvn_ra_svn-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) random_test_PATH = subversion/tests/libsvn_delta random_test_DEPS = subversion/tests/libsvn_delta/random-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la random_test_OBJECTS = random-test.lo subversion/tests/libsvn_delta/random-test$(EXEEXT): $(random_test_DEPS) cd subversion/tests/libsvn_delta && $(LINK) $(random_test_LDFLAGS) -o random-test$(EXEEXT) $(random_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) repos_test_PATH = subversion/tests/libsvn_repos repos_test_DEPS = subversion/tests/libsvn_repos/dir-delta-editor.lo subversion/tests/libsvn_repos/repos-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la repos_test_OBJECTS = dir-delta-editor.lo repos-test.lo subversion/tests/libsvn_repos/repos-test$(EXEEXT): $(repos_test_DEPS) cd subversion/tests/libsvn_repos && $(LINK) $(repos_test_LDFLAGS) -o repos-test$(EXEEXT) $(repos_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) revision_test_PATH = subversion/tests/libsvn_subr revision_test_DEPS = subversion/tests/libsvn_subr/revision-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la revision_test_OBJECTS = revision-test.lo subversion/tests/libsvn_subr/revision-test$(EXEEXT): $(revision_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(revision_test_LDFLAGS) -o revision-test$(EXEEXT) $(revision_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) root_pools_test_PATH = subversion/tests/libsvn_subr root_pools_test_DEPS = subversion/tests/libsvn_subr/root-pools-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la root_pools_test_OBJECTS = root-pools-test.lo subversion/tests/libsvn_subr/root-pools-test$(EXEEXT): $(root_pools_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(root_pools_test_LDFLAGS) -o root-pools-test$(EXEEXT) $(root_pools_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) ruby_client_PATH = subversion/bindings/swig/ruby ruby_client_DEPS = subversion/bindings/swig/ruby/svn_client.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_client_OBJECTS = svn_client.lo subversion/bindings/swig/ruby/client.la: $(ruby_client_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_client_LDFLAGS) -o client.la $(LT_NO_UNDEFINED) $(ruby_client_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_core_PATH = subversion/bindings/swig/ruby ruby_core_DEPS = subversion/bindings/swig/ruby/core.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la ruby_core_OBJECTS = core.lo subversion/bindings/swig/ruby/core.la: $(ruby_core_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_core_LDFLAGS) -o core.la $(LT_NO_UNDEFINED) $(ruby_core_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_delta_PATH = subversion/bindings/swig/ruby ruby_delta_DEPS = subversion/bindings/swig/ruby/svn_delta.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_delta_OBJECTS = svn_delta.lo subversion/bindings/swig/ruby/delta.la: $(ruby_delta_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_delta_LDFLAGS) -o delta.la $(LT_NO_UNDEFINED) $(ruby_delta_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_diff_PATH = subversion/bindings/swig/ruby ruby_diff_DEPS = subversion/bindings/swig/ruby/svn_diff.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_diff_OBJECTS = svn_diff.lo subversion/bindings/swig/ruby/diff.la: $(ruby_diff_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_diff_LDFLAGS) -o diff.la $(LT_NO_UNDEFINED) $(ruby_diff_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_fs_PATH = subversion/bindings/swig/ruby ruby_fs_DEPS = subversion/bindings/swig/ruby/svn_fs.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_fs_OBJECTS = svn_fs.lo subversion/bindings/swig/ruby/fs.la: $(ruby_fs_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_fs_LDFLAGS) -o fs.la $(LT_NO_UNDEFINED) $(ruby_fs_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_ra_PATH = subversion/bindings/swig/ruby ruby_ra_DEPS = subversion/bindings/swig/ruby/svn_ra.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_ra_OBJECTS = svn_ra.lo subversion/bindings/swig/ruby/ra.la: $(ruby_ra_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_ra_LDFLAGS) -o ra.la $(LT_NO_UNDEFINED) $(ruby_ra_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_repos_PATH = subversion/bindings/swig/ruby ruby_repos_DEPS = subversion/bindings/swig/ruby/svn_repos.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_repos_OBJECTS = svn_repos.lo subversion/bindings/swig/ruby/repos.la: $(ruby_repos_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_repos_LDFLAGS) -o repos.la $(LT_NO_UNDEFINED) $(ruby_repos_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) ruby_wc_PATH = subversion/bindings/swig/ruby ruby_wc_DEPS = subversion/bindings/swig/ruby/svn_wc.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/bindings/swig/ruby/core.la ruby_wc_OBJECTS = svn_wc.lo subversion/bindings/swig/ruby/wc.la: $(ruby_wc_DEPS) cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_wc_LDFLAGS) -o wc.la $(LT_NO_UNDEFINED) $(ruby_wc_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la ../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) skel_test_PATH = subversion/tests/libsvn_subr skel_test_DEPS = subversion/tests/libsvn_subr/skel-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la skel_test_OBJECTS = skel-test.lo subversion/tests/libsvn_subr/skel-test$(EXEEXT): $(skel_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(skel_test_LDFLAGS) -o skel-test$(EXEEXT) $(skel_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) spillbuf_test_PATH = subversion/tests/libsvn_subr spillbuf_test_DEPS = subversion/tests/libsvn_subr/spillbuf-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la spillbuf_test_OBJECTS = spillbuf-test.lo subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT): $(spillbuf_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(spillbuf_test_LDFLAGS) -o spillbuf-test$(EXEEXT) $(spillbuf_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) sqlite_test_PATH = subversion/tests/libsvn_subr sqlite_test_DEPS = subversion/tests/libsvn_subr/sqlite-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la sqlite_test_OBJECTS = sqlite-test.lo subversion/tests/libsvn_subr/sqlite-test$(EXEEXT): $(sqlite_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(sqlite_test_LDFLAGS) -o sqlite-test$(EXEEXT) $(sqlite_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) stream_test_PATH = subversion/tests/libsvn_subr stream_test_DEPS = subversion/tests/libsvn_subr/stream-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la stream_test_OBJECTS = stream-test.lo subversion/tests/libsvn_subr/stream-test$(EXEEXT): $(stream_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(stream_test_LDFLAGS) -o stream-test$(EXEEXT) $(stream_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) string_table_test_PATH = subversion/tests/libsvn_fs_x string_table_test_DEPS = subversion/tests/libsvn_fs_x/string-table-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_x/libsvn_fs_x-1.la subversion/libsvn_subr/libsvn_subr-1.la string_table_test_OBJECTS = string-table-test.lo subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT): $(string_table_test_DEPS) cd subversion/tests/libsvn_fs_x && $(LINK) $(string_table_test_LDFLAGS) -o string-table-test$(EXEEXT) $(string_table_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs_x/libsvn_fs_x-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) string_test_PATH = subversion/tests/libsvn_subr string_test_DEPS = subversion/tests/libsvn_subr/string-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la string_test_OBJECTS = string-test.lo subversion/tests/libsvn_subr/string-test$(EXEEXT): $(string_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(string_test_LDFLAGS) -o string-test$(EXEEXT) $(string_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) strings_reps_test_PATH = subversion/tests/libsvn_fs_base strings_reps_test_DEPS = subversion/tests/libsvn_fs_base/strings-reps-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_fs_base/libsvn_fs_base-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la strings_reps_test_OBJECTS = strings-reps-test.lo subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT): $(strings_reps_test_DEPS) cd subversion/tests/libsvn_fs_base && $(LINK) $(strings_reps_test_LDFLAGS) -o strings-reps-test$(EXEEXT) $(strings_reps_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la ../../../subversion/libsvn_fs_base/libsvn_fs_base-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) subst_translate_test_PATH = subversion/tests/libsvn_subr subst_translate_test_DEPS = subversion/tests/libsvn_subr/subst_translate-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la subst_translate_test_OBJECTS = subst_translate-test.lo subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT): $(subst_translate_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(subst_translate_test_LDFLAGS) -o subst_translate-test$(EXEEXT) $(subst_translate_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svn_PATH = subversion/svn svn_DEPS = subversion/svn/add-cmd.lo subversion/svn/auth-cmd.lo subversion/svn/blame-cmd.lo subversion/svn/cat-cmd.lo subversion/svn/changelist-cmd.lo subversion/svn/checkout-cmd.lo subversion/svn/cl-conflicts.lo subversion/svn/cleanup-cmd.lo subversion/svn/commit-cmd.lo subversion/svn/conflict-callbacks.lo subversion/svn/copy-cmd.lo subversion/svn/delete-cmd.lo subversion/svn/deprecated.lo subversion/svn/diff-cmd.lo subversion/svn/export-cmd.lo subversion/svn/file-merge.lo subversion/svn/filesize.lo subversion/svn/help-cmd.lo subversion/svn/import-cmd.lo subversion/svn/info-cmd.lo subversion/svn/list-cmd.lo subversion/svn/lock-cmd.lo subversion/svn/log-cmd.lo subversion/svn/merge-cmd.lo subversion/svn/mergeinfo-cmd.lo subversion/svn/mkdir-cmd.lo subversion/svn/move-cmd.lo subversion/svn/notify.lo subversion/svn/patch-cmd.lo subversion/svn/propdel-cmd.lo subversion/svn/propedit-cmd.lo subversion/svn/propget-cmd.lo subversion/svn/proplist-cmd.lo subversion/svn/props.lo subversion/svn/propset-cmd.lo subversion/svn/relocate-cmd.lo subversion/svn/resolve-cmd.lo subversion/svn/resolved-cmd.lo subversion/svn/revert-cmd.lo subversion/svn/shelf-cmd.lo subversion/svn/shelf2-cmd.lo subversion/svn/similarity.lo subversion/svn/status-cmd.lo subversion/svn/status.lo subversion/svn/svn.lo subversion/svn/switch-cmd.lo subversion/svn/unlock-cmd.lo subversion/svn/update-cmd.lo subversion/svn/upgrade-cmd.lo subversion/svn/util.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la svn_OBJECTS = add-cmd.lo auth-cmd.lo blame-cmd.lo cat-cmd.lo changelist-cmd.lo checkout-cmd.lo cl-conflicts.lo cleanup-cmd.lo commit-cmd.lo conflict-callbacks.lo copy-cmd.lo delete-cmd.lo deprecated.lo diff-cmd.lo export-cmd.lo file-merge.lo filesize.lo help-cmd.lo import-cmd.lo info-cmd.lo list-cmd.lo lock-cmd.lo log-cmd.lo merge-cmd.lo mergeinfo-cmd.lo mkdir-cmd.lo move-cmd.lo notify.lo patch-cmd.lo propdel-cmd.lo propedit-cmd.lo propget-cmd.lo proplist-cmd.lo props.lo propset-cmd.lo relocate-cmd.lo resolve-cmd.lo resolved-cmd.lo revert-cmd.lo shelf-cmd.lo shelf2-cmd.lo similarity.lo status-cmd.lo status.lo svn.lo switch-cmd.lo unlock-cmd.lo update-cmd.lo upgrade-cmd.lo util.lo subversion/svn/svn$(EXEEXT): $(svn_DEPS) cd subversion/svn && $(LINK) $(svn_LDFLAGS) -o svn$(EXEEXT) $(svn_OBJECTS) ../../subversion/libsvn_client/libsvn_client-1.la ../../subversion/libsvn_wc/libsvn_wc-1.la ../../subversion/libsvn_ra/libsvn_ra-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svn_mergeinfo_normalizer_PATH = tools/client-side/svn-mergeinfo-normalizer svn_mergeinfo_normalizer_DEPS = tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.lo tools/client-side/svn-mergeinfo-normalizer/help-cmd.lo tools/client-side/svn-mergeinfo-normalizer/log.lo tools/client-side/svn-mergeinfo-normalizer/logic.lo tools/client-side/svn-mergeinfo-normalizer/missing-branches.lo tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.lo tools/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.lo tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.lo tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la svn_mergeinfo_normalizer_OBJECTS = analyze-cmd.lo help-cmd.lo log.lo logic.lo missing-branches.lo normalize-cmd.lo remove-branches-cmd.lo svn-mergeinfo-normalizer.lo wc_mergeinfo.lo tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT): $(svn_mergeinfo_normalizer_DEPS) cd tools/client-side/svn-mergeinfo-normalizer && $(LINK) $(svn_mergeinfo_normalizer_LDFLAGS) -o svn-mergeinfo-normalizer$(EXEEXT) $(svn_mergeinfo_normalizer_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svn_populate_node_origins_index_PATH = tools/server-side svn_populate_node_origins_index_DEPS = tools/server-side/svn-populate-node-origins-index.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la svn_populate_node_origins_index_OBJECTS = svn-populate-node-origins-index.lo tools/server-side/svn-populate-node-origins-index$(EXEEXT): $(svn_populate_node_origins_index_DEPS) cd tools/server-side && $(LINK) $(svn_populate_node_origins_index_LDFLAGS) -o svn-populate-node-origins-index$(EXEEXT) $(svn_populate_node_origins_index_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) svn_wc_db_tester_PATH = tools/dev/wc-ng svn_wc_db_tester_DEPS = tools/dev/wc-ng/svn-wc-db-tester.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la svn_wc_db_tester_OBJECTS = svn-wc-db-tester.lo tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT): $(svn_wc_db_tester_DEPS) cd tools/dev/wc-ng && $(LINK) $(svn_wc_db_tester_LDFLAGS) -o svn-wc-db-tester$(EXEEXT) $(svn_wc_db_tester_OBJECTS) ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) svnadmin_PATH = subversion/svnadmin svnadmin_DEPS = subversion/svnadmin/svnadmin.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svnadmin_OBJECTS = svnadmin.lo subversion/svnadmin/svnadmin$(EXEEXT): $(svnadmin_DEPS) cd subversion/svnadmin && $(LINK) $(svnadmin_LDFLAGS) -o svnadmin$(EXEEXT) $(svnadmin_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnauthz_PATH = tools/server-side svnauthz_DEPS = tools/server-side/svnauthz.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la svnauthz_OBJECTS = svnauthz.lo tools/server-side/svnauthz$(EXEEXT): $(svnauthz_DEPS) cd tools/server-side && $(LINK) $(svnauthz_LDFLAGS) -o svnauthz$(EXEEXT) $(svnauthz_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) svnauthz_validate_PATH = tools/server-side svnauthz_validate_DEPS = tools/server-side/svnauthz.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_subr/libsvn_subr-1.la svnauthz_validate_OBJECTS = svnauthz.lo tools/server-side/svnauthz-validate$(EXEEXT): $(svnauthz_validate_DEPS) cd tools/server-side && $(LINK) $(svnauthz_validate_LDFLAGS) -o svnauthz-validate$(EXEEXT) $(svnauthz_validate_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) svnbench_PATH = subversion/svnbench svnbench_DEPS = subversion/svnbench/help-cmd.lo subversion/svnbench/notify.lo subversion/svnbench/null-blame-cmd.lo subversion/svnbench/null-export-cmd.lo subversion/svnbench/null-info-cmd.lo subversion/svnbench/null-list-cmd.lo subversion/svnbench/null-log-cmd.lo subversion/svnbench/svnbench.lo subversion/svnbench/util.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_delta/libsvn_delta-1.la svnbench_OBJECTS = help-cmd.lo notify.lo null-blame-cmd.lo null-export-cmd.lo null-info-cmd.lo null-list-cmd.lo null-log-cmd.lo svnbench.lo util.lo subversion/svnbench/svnbench$(EXEEXT): $(svnbench_DEPS) cd subversion/svnbench && $(LINK) $(svnbench_LDFLAGS) -o svnbench$(EXEEXT) $(svnbench_OBJECTS) ../../subversion/libsvn_client/libsvn_client-1.la ../../subversion/libsvn_wc/libsvn_wc-1.la ../../subversion/libsvn_ra/libsvn_ra-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnconflict_PATH = tools/client-side/svnconflict svnconflict_DEPS = tools/client-side/svnconflict/svnconflict.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la svnconflict_OBJECTS = svnconflict.lo tools/client-side/svnconflict/svnconflict$(EXEEXT): $(svnconflict_DEPS) cd tools/client-side/svnconflict && $(LINK) $(svnconflict_LDFLAGS) -o svnconflict$(EXEEXT) $(svnconflict_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svndiff_stream_test_PATH = subversion/tests/libsvn_delta svndiff_stream_test_DEPS = subversion/tests/libsvn_delta/svndiff-stream-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svndiff_stream_test_OBJECTS = svndiff-stream-test.lo subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT): $(svndiff_stream_test_DEPS) cd subversion/tests/libsvn_delta && $(LINK) $(svndiff_stream_test_LDFLAGS) -o svndiff-stream-test$(EXEEXT) $(svndiff_stream_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svndiff_test_PATH = subversion/tests/libsvn_delta svndiff_test_DEPS = subversion/tests/libsvn_delta/svndiff-test.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svndiff_test_OBJECTS = svndiff-test.lo subversion/tests/libsvn_delta/svndiff-test$(EXEEXT): $(svndiff_test_DEPS) cd subversion/tests/libsvn_delta && $(LINK) $(svndiff_test_LDFLAGS) -o svndiff-test$(EXEEXT) $(svndiff_test_OBJECTS) ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svndumpfilter_PATH = subversion/svndumpfilter svndumpfilter_DEPS = subversion/svndumpfilter/svndumpfilter.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svndumpfilter_OBJECTS = svndumpfilter.lo subversion/svndumpfilter/svndumpfilter$(EXEEXT): $(svndumpfilter_DEPS) cd subversion/svndumpfilter && $(LINK) $(svndumpfilter_LDFLAGS) -o svndumpfilter$(EXEEXT) $(svndumpfilter_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnfsfs_PATH = subversion/svnfsfs svnfsfs_DEPS = subversion/svnfsfs/dump-index-cmd.lo subversion/svnfsfs/load-index-cmd.lo subversion/svnfsfs/stats-cmd.lo subversion/svnfsfs/svnfsfs.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svnfsfs_OBJECTS = dump-index-cmd.lo load-index-cmd.lo stats-cmd.lo svnfsfs.lo subversion/svnfsfs/svnfsfs$(EXEEXT): $(svnfsfs_DEPS) cd subversion/svnfsfs && $(LINK) $(svnfsfs_LDFLAGS) -o svnfsfs$(EXEEXT) $(svnfsfs_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnlook_PATH = subversion/svnlook svnlook_DEPS = subversion/svnlook/svnlook.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la svnlook_OBJECTS = svnlook.lo subversion/svnlook/svnlook$(EXEEXT): $(svnlook_DEPS) cd subversion/svnlook && $(LINK) $(svnlook_LDFLAGS) -o svnlook$(EXEEXT) $(svnlook_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_diff/libsvn_diff-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnmover_PATH = tools/dev/svnmover svnmover_DEPS = tools/dev/svnmover/merge3.lo tools/dev/svnmover/ra.lo tools/dev/svnmover/scanlog.lo tools/dev/svnmover/svnmover.lo tools/dev/svnmover/util.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_delta/libsvn_delta-1.la svnmover_OBJECTS = merge3.lo ra.lo scanlog.lo svnmover.lo util.lo tools/dev/svnmover/svnmover$(EXEEXT): $(svnmover_DEPS) cd tools/dev/svnmover && $(LINK) $(svnmover_LDFLAGS) -o svnmover$(EXEEXT) $(svnmover_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnmucc_PATH = subversion/svnmucc svnmucc_DEPS = subversion/svnmucc/svnmucc.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_delta/libsvn_delta-1.la svnmucc_OBJECTS = svnmucc.lo subversion/svnmucc/svnmucc$(EXEEXT): $(svnmucc_DEPS) cd subversion/svnmucc && $(LINK) $(svnmucc_LDFLAGS) -o svnmucc$(EXEEXT) $(svnmucc_OBJECTS) ../../subversion/libsvn_client/libsvn_client-1.la ../../subversion/libsvn_ra/libsvn_ra-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnraisetreeconflict_PATH = tools/dev/svnraisetreeconflict svnraisetreeconflict_DEPS = tools/dev/svnraisetreeconflict/svnraisetreeconflict.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la svnraisetreeconflict_OBJECTS = svnraisetreeconflict.lo tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT): $(svnraisetreeconflict_DEPS) cd tools/dev/svnraisetreeconflict && $(LINK) $(svnraisetreeconflict_LDFLAGS) -o svnraisetreeconflict$(EXEEXT) $(svnraisetreeconflict_OBJECTS) ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnrdump_PATH = subversion/svnrdump svnrdump_DEPS = subversion/svnrdump/dump_editor.lo subversion/svnrdump/load_editor.lo subversion/svnrdump/svnrdump.lo subversion/svnrdump/util.lo subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svnrdump_OBJECTS = dump_editor.lo load_editor.lo svnrdump.lo util.lo subversion/svnrdump/svnrdump$(EXEEXT): $(svnrdump_DEPS) cd subversion/svnrdump && $(LINK) $(svnrdump_LDFLAGS) -o svnrdump$(EXEEXT) $(svnrdump_OBJECTS) ../../subversion/libsvn_client/libsvn_client-1.la ../../subversion/libsvn_ra/libsvn_ra-1.la ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnserve_PATH = subversion/svnserve svnserve_DEPS = subversion/svnserve/cyrus_auth.lo subversion/svnserve/log-escape.lo subversion/svnserve/logger.lo subversion/svnserve/serve.lo subversion/svnserve/svnserve.lo subversion/svnserve/winservice.lo subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la svnserve_OBJECTS = cyrus_auth.lo log-escape.lo logger.lo serve.lo svnserve.lo winservice.lo subversion/svnserve/svnserve$(EXEEXT): $(svnserve_DEPS) cd subversion/svnserve && $(LINK) $(svnserve_LDFLAGS) -o svnserve$(EXEEXT) $(svnserve_OBJECTS) ../../subversion/libsvn_repos/libsvn_repos-1.la ../../subversion/libsvn_fs/libsvn_fs-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la ../../subversion/libsvn_ra_svn/libsvn_ra_svn-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SASL_LIBS) $(LIBS) svnsync_PATH = subversion/svnsync svnsync_DEPS = subversion/svnsync/svnsync.lo subversion/svnsync/sync.lo subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la svnsync_OBJECTS = svnsync.lo sync.lo subversion/svnsync/svnsync$(EXEEXT): $(svnsync_DEPS) cd subversion/svnsync && $(LINK) $(svnsync_LDFLAGS) -o svnsync$(EXEEXT) $(svnsync_OBJECTS) ../../subversion/libsvn_ra/libsvn_ra-1.la ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) svnversion_PATH = subversion/svnversion svnversion_DEPS = subversion/svnversion/svnversion.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la svnversion_OBJECTS = svnversion.lo subversion/svnversion/svnversion$(EXEEXT): $(svnversion_DEPS) cd subversion/svnversion && $(LINK) $(svnversion_LDFLAGS) -o svnversion$(EXEEXT) $(svnversion_OBJECTS) ../../subversion/libsvn_wc/libsvn_wc-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) svnxx_tests_PATH = subversion/bindings/cxx svnxx_tests_DEPS = subversion/bindings/cxx/tests/svnxx-tests.lo subversion/bindings/cxx/tests/test_aprwrap_arrays.lo subversion/bindings/cxx/tests/test_aprwrap_hashes.lo subversion/bindings/cxx/tests/test_aprwrap_pools.lo subversion/bindings/cxx/tests/test_client_status.lo subversion/bindings/cxx/tests/test_depth.lo subversion/bindings/cxx/tests/test_exceptions.lo subversion/bindings/cxx/tests/test_init.lo subversion/bindings/cxx/tests/test_revision.lo subversion/bindings/cxx/tests/test_strings.lo subversion/bindings/cxx/tests/test_tristate.lo subversion/bindings/cxx/libsvnxx-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_fs/libsvn_fs-1.la svnxx_tests_OBJECTS = tests/svnxx-tests.lo tests/test_aprwrap_arrays.lo tests/test_aprwrap_hashes.lo tests/test_aprwrap_pools.lo tests/test_client_status.lo tests/test_depth.lo tests/test_exceptions.lo tests/test_init.lo tests/test_revision.lo tests/test_strings.lo tests/test_tristate.lo subversion/bindings/cxx/svnxx-tests$(EXEEXT): $(svnxx_tests_DEPS) if $(SVN_BUILD_SVNXX_TESTS) ; then cd subversion/bindings/cxx && $(LINK_SVNXX_TEST) $(svnxx_tests_LDFLAGS) -o svnxx-tests$(EXEEXT) $(svnxx_tests_OBJECTS) ../../../subversion/bindings/cxx/libsvnxx-1.la ../../../subversion/libsvn_repos/libsvn_repos-1.la ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_diff/libsvn_diff-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../subversion/libsvn_fs/libsvn_fs-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) ; else echo "fake" > subversion/bindings/cxx/svnxx-tests$(EXEEXT) ; fi time_test_PATH = subversion/tests/libsvn_subr time_test_DEPS = subversion/tests/libsvn_subr/time-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la time_test_OBJECTS = time-test.lo subversion/tests/libsvn_subr/time-test$(EXEEXT): $(time_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(time_test_LDFLAGS) -o time-test$(EXEEXT) $(time_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) translate_test_PATH = subversion/tests/libsvn_subr translate_test_DEPS = subversion/tests/libsvn_subr/translate-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la translate_test_OBJECTS = translate-test.lo subversion/tests/libsvn_subr/translate-test$(EXEEXT): $(translate_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(translate_test_LDFLAGS) -o translate-test$(EXEEXT) $(translate_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) utf_test_PATH = subversion/tests/libsvn_subr utf_test_DEPS = subversion/tests/libsvn_subr/utf-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la utf_test_OBJECTS = utf-test.lo subversion/tests/libsvn_subr/utf-test$(EXEEXT): $(utf_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(utf_test_LDFLAGS) -o utf-test$(EXEEXT) $(utf_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) vdelta_test_PATH = subversion/tests/libsvn_delta vdelta_test_DEPS = subversion/tests/libsvn_delta/vdelta-test.lo subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la vdelta_test_OBJECTS = vdelta-test.lo subversion/tests/libsvn_delta/vdelta-test$(EXEEXT): $(vdelta_test_DEPS) cd subversion/tests/libsvn_delta && $(LINK) $(vdelta_test_LDFLAGS) -o vdelta-test$(EXEEXT) $(vdelta_test_OBJECTS) ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) wc_incomplete_tester_PATH = subversion/tests/libsvn_wc wc_incomplete_tester_DEPS = subversion/tests/libsvn_wc/wc-incomplete-tester.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la wc_incomplete_tester_OBJECTS = wc-incomplete-tester.lo subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT): $(wc_incomplete_tester_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(wc_incomplete_tester_LDFLAGS) -o wc-incomplete-tester$(EXEEXT) $(wc_incomplete_tester_OBJECTS) ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) wc_lock_tester_PATH = subversion/tests/libsvn_wc wc_lock_tester_DEPS = subversion/tests/libsvn_wc/wc-lock-tester.lo subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la wc_lock_tester_OBJECTS = wc-lock-tester.lo subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT): $(wc_lock_tester_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(wc_lock_tester_LDFLAGS) -o wc-lock-tester$(EXEEXT) $(wc_lock_tester_OBJECTS) ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) wc_queries_test_PATH = subversion/tests/libsvn_wc wc_queries_test_DEPS = subversion/libsvn_subr/sqlite3wrapper.lo subversion/tests/libsvn_wc/wc-queries-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la wc_queries_test_OBJECTS = ../../libsvn_subr/sqlite3wrapper.lo wc-queries-test.lo subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT): $(wc_queries_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(wc_queries_test_LDFLAGS) -o wc-queries-test$(EXEEXT) $(wc_queries_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SQLITE_LIBS) $(LIBS) wc_test_PATH = subversion/tests/libsvn_wc wc_test_DEPS = subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_wc/wc-test.lo subversion/libsvn_client/libsvn_client-1.la subversion/tests/libsvn_test-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_subr/libsvn_subr-1.la wc_test_OBJECTS = utils.lo wc-test.lo subversion/tests/libsvn_wc/wc-test$(EXEEXT): $(wc_test_DEPS) cd subversion/tests/libsvn_wc && $(LINK) $(wc_test_LDFLAGS) -o wc-test$(EXEEXT) $(wc_test_OBJECTS) ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) window_test_PATH = subversion/tests/libsvn_delta window_test_DEPS = subversion/tests/libsvn_delta/window-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_subr/libsvn_subr-1.la window_test_OBJECTS = window-test.lo subversion/tests/libsvn_delta/window-test$(EXEEXT): $(window_test_DEPS) cd subversion/tests/libsvn_delta && $(LINK) $(window_test_LDFLAGS) -o window-test$(EXEEXT) $(window_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) x509_parser_PATH = tools/dev x509_parser_DEPS = tools/dev/x509-parser.lo subversion/libsvn_subr/libsvn_subr-1.la x509_parser_OBJECTS = x509-parser.lo tools/dev/x509-parser$(EXEEXT): $(x509_parser_DEPS) cd tools/dev && $(LINK) $(x509_parser_LDFLAGS) -o x509-parser$(EXEEXT) $(x509_parser_OBJECTS) ../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APR_LIBS) $(LIBS) x509_test_PATH = subversion/tests/libsvn_subr x509_test_DEPS = subversion/tests/libsvn_subr/x509-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la x509_test_OBJECTS = x509-test.lo subversion/tests/libsvn_subr/x509-test$(EXEEXT): $(x509_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(x509_test_LDFLAGS) -o x509-test$(EXEEXT) $(x509_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) xml_test_PATH = subversion/tests/libsvn_subr xml_test_DEPS = subversion/tests/libsvn_subr/xml-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_subr/libsvn_subr-1.la xml_test_OBJECTS = xml-test.lo subversion/tests/libsvn_subr/xml-test$(EXEEXT): $(xml_test_DEPS) cd subversion/tests/libsvn_subr && $(LINK) $(xml_test_LDFLAGS) -o xml-test$(EXEEXT) $(xml_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS) ######################################## # Section 6: Install-Group build targets ######################################## apache-mod: subversion/mod_authz_svn/mod_authz_svn.la subversion/mod_dav_svn/mod_dav_svn.la bdb-lib: subversion/libsvn_fs_base/libsvn_fs_base-1.la bdb-test: subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) bin: subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT) fsmod-lib: subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_fs_x/libsvn_fs_x-1.la subversion/libsvn_subr/libsvn_subr-1.la gnome-keyring-lib: subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la javahl-callback-java: javahl-compat-java: javahl-compat-tests: javahl-java: javahl-lib: subversion/bindings/javahl/native/libsvnjavahl-1.la javahl-remote-java: javahl-tests: javahl-types-java: javahl-util-java: kwallet-lib: subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la lib: subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_wc/libsvn_wc-1.la locale: ramod-lib: subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_repos/libsvn_repos-1.la serf-lib: subversion/libsvn_ra_serf/libsvn_ra_serf-1.la sub-test: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT) svnxx-lib: subversion/bindings/cxx/libsvnxx-1.la svnxx-tests: subversion/bindings/cxx/svnxx-tests$(EXEEXT) swig-pl-lib: subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la swig-py: subversion/bindings/swig/python/_client.la subversion/bindings/swig/python/_core.la subversion/bindings/swig/python/_delta.la subversion/bindings/swig/python/_diff.la subversion/bindings/swig/python/_fs.la subversion/bindings/swig/python/_ra.la subversion/bindings/swig/python/_repos.la subversion/bindings/swig/python/_wc.la swig-py-lib: subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la swig-rb: subversion/bindings/swig/ruby/client.la subversion/bindings/swig/ruby/core.la subversion/bindings/swig/ruby/delta.la subversion/bindings/swig/ruby/diff.la subversion/bindings/swig/ruby/fs.la subversion/bindings/swig/ruby/ra.la subversion/bindings/swig/ruby/repos.la subversion/bindings/swig/ruby/wc.la swig-rb-lib: subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -test: subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_test-1.la subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) +test: subversion/tests/afl/afl-svndiff$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/client/filesize-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_test-1.la subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) tools: tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/server-side/mod_dontdothat/mod_dontdothat.la tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/x509-parser$(EXEEXT) ######################################## # Section 7: Install-Group install targets ######################################## install-mods-shared: subversion/mod_dav_svn/mod_dav_svn.la subversion/mod_authz_svn/mod_authz_svn.la if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_dav_svn ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n dav_svn mod_dav_svn.la ; fi if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_authz_svn ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n authz_svn mod_authz_svn.la ; fi install-bdb-lib: subversion/libsvn_fs_base/libsvn_fs_base-1.la $(MKDIR) $(DESTDIR)$(bdb_libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_fs_base ; $(INSTALL_BDB_LIB) libsvn_fs_base-1.la $(DESTDIR)$(bdb_libdir)/libsvn_fs_base-1.la $(INSTALL_DATA) subversion/libsvn_fs_base/libsvn_fs_base.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_base.pc install-bin: subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT) $(MKDIR) $(DESTDIR)$(bindir) cd subversion/svn ; $(INSTALL_BIN) svn$(EXEEXT) $(DESTDIR)$(bindir)/svn$(EXEEXT) cd subversion/svnadmin ; $(INSTALL_BIN) svnadmin$(EXEEXT) $(DESTDIR)$(bindir)/svnadmin$(EXEEXT) cd subversion/svnbench ; $(INSTALL_BIN) svnbench$(EXEEXT) $(DESTDIR)$(bindir)/svnbench$(EXEEXT) cd subversion/svndumpfilter ; $(INSTALL_BIN) svndumpfilter$(EXEEXT) $(DESTDIR)$(bindir)/svndumpfilter$(EXEEXT) cd subversion/svnfsfs ; $(INSTALL_BIN) svnfsfs$(EXEEXT) $(DESTDIR)$(bindir)/svnfsfs$(EXEEXT) cd subversion/svnlook ; $(INSTALL_BIN) svnlook$(EXEEXT) $(DESTDIR)$(bindir)/svnlook$(EXEEXT) cd subversion/svnmucc ; $(INSTALL_BIN) svnmucc$(EXEEXT) $(DESTDIR)$(bindir)/svnmucc$(EXEEXT) cd subversion/svnrdump ; $(INSTALL_BIN) svnrdump$(EXEEXT) $(DESTDIR)$(bindir)/svnrdump$(EXEEXT) cd subversion/svnserve ; $(INSTALL_BIN) svnserve$(EXEEXT) $(DESTDIR)$(bindir)/svnserve$(EXEEXT) cd subversion/svnsync ; $(INSTALL_BIN) svnsync$(EXEEXT) $(DESTDIR)$(bindir)/svnsync$(EXEEXT) cd subversion/svnversion ; $(INSTALL_BIN) svnversion$(EXEEXT) $(DESTDIR)$(bindir)/svnversion$(EXEEXT) install-fsmod-lib: subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_fs_x/libsvn_fs_x-1.la $(MKDIR) $(DESTDIR)$(fsmod_libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_subr ; $(INSTALL_FSMOD_LIB) libsvn_subr-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_subr-1.la $(INSTALL_DATA) subversion/libsvn_subr/libsvn_subr.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_subr.pc cd subversion/libsvn_delta ; $(INSTALL_FSMOD_LIB) libsvn_delta-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_delta-1.la $(INSTALL_DATA) subversion/libsvn_delta/libsvn_delta.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_delta.pc cd subversion/libsvn_fs_util ; $(INSTALL_FSMOD_LIB) libsvn_fs_util-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_fs_util-1.la $(INSTALL_DATA) subversion/libsvn_fs_util/libsvn_fs_util.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_util.pc cd subversion/libsvn_fs_fs ; $(INSTALL_FSMOD_LIB) libsvn_fs_fs-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_fs_fs-1.la $(INSTALL_DATA) subversion/libsvn_fs_fs/libsvn_fs_fs.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_fs.pc cd subversion/libsvn_fs_x ; $(INSTALL_FSMOD_LIB) libsvn_fs_x-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_fs_x-1.la $(INSTALL_DATA) subversion/libsvn_fs_x/libsvn_fs_x.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_x.pc install-gnome-keyring-lib: subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la $(MKDIR) $(DESTDIR)$(gnome_keyring_libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_auth_gnome_keyring ; $(INSTALL_GNOME_KEYRING_LIB) libsvn_auth_gnome_keyring-1.la $(DESTDIR)$(gnome_keyring_libdir)/libsvn_auth_gnome_keyring-1.la $(INSTALL_DATA) subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_auth_gnome_keyring.pc install-javahl-callback-java: $(MKDIR) $(DESTDIR)$(javahl_callback_javadir) $(INSTALL_EXTRA_JAVAHL_CALLBACK_JAVA) install-javahl-compat-java: $(MKDIR) $(DESTDIR)$(javahl_compat_javadir) $(INSTALL_EXTRA_JAVAHL_COMPAT_JAVA) install-javahl-compat-tests: $(MKDIR) $(DESTDIR)$(javahl_compat_testsdir) $(INSTALL_EXTRA_JAVAHL_COMPAT_TESTS) install-javahl-java: $(MKDIR) $(DESTDIR)$(javahl_javadir) $(INSTALL_EXTRA_JAVAHL_JAVA) install-javahl-lib: subversion/bindings/javahl/native/libsvnjavahl-1.la $(MKDIR) $(DESTDIR)$(javahl_libdir) cd subversion/bindings/javahl/native ; $(INSTALL_JAVAHL_LIB) libsvnjavahl-1.la $(DESTDIR)$(javahl_libdir)/libsvnjavahl-1.la $(INSTALL_EXTRA_JAVAHL_LIB) install-javahl-remote-java: $(MKDIR) $(DESTDIR)$(javahl_remote_javadir) $(INSTALL_EXTRA_JAVAHL_REMOTE_JAVA) install-javahl-tests: $(MKDIR) $(DESTDIR)$(javahl_testsdir) $(INSTALL_EXTRA_JAVAHL_TESTS) install-javahl-types-java: $(MKDIR) $(DESTDIR)$(javahl_types_javadir) $(INSTALL_EXTRA_JAVAHL_TYPES_JAVA) install-javahl-util-java: $(MKDIR) $(DESTDIR)$(javahl_util_javadir) $(INSTALL_EXTRA_JAVAHL_UTIL_JAVA) install-kwallet-lib: subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la $(MKDIR) $(DESTDIR)$(kwallet_libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_auth_kwallet ; $(INSTALL_KWALLET_LIB) libsvn_auth_kwallet-1.la $(DESTDIR)$(kwallet_libdir)/libsvn_auth_kwallet-1.la $(INSTALL_DATA) subversion/libsvn_auth_kwallet/libsvn_auth_kwallet.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_auth_kwallet.pc install-lib: subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_client/libsvn_client-1.la $(MKDIR) $(DESTDIR)$(libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_diff ; $(INSTALL_LIB) libsvn_diff-1.la $(DESTDIR)$(libdir)/libsvn_diff-1.la $(INSTALL_DATA) subversion/libsvn_diff/libsvn_diff.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_diff.pc cd subversion/libsvn_ra ; $(INSTALL_LIB) libsvn_ra-1.la $(DESTDIR)$(libdir)/libsvn_ra-1.la $(INSTALL_DATA) subversion/libsvn_ra/libsvn_ra.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra.pc cd subversion/libsvn_wc ; $(INSTALL_LIB) libsvn_wc-1.la $(DESTDIR)$(libdir)/libsvn_wc-1.la $(INSTALL_DATA) subversion/libsvn_wc/libsvn_wc.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_wc.pc cd subversion/libsvn_client ; $(INSTALL_LIB) libsvn_client-1.la $(DESTDIR)$(libdir)/libsvn_client-1.la $(INSTALL_DATA) subversion/libsvn_client/libsvn_client.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_client.pc install-locale: subversion/po/de.mo subversion/po/es.mo subversion/po/fr.mo subversion/po/it.mo subversion/po/ja.mo subversion/po/ko.mo subversion/po/nb.mo subversion/po/pl.mo subversion/po/pt_BR.mo subversion/po/sv.mo subversion/po/zh_CN.mo subversion/po/zh_TW.mo $(MKDIR) $(DESTDIR)$(localedir) $(MKDIR) $(DESTDIR)$(localedir)/de/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) de.mo $(DESTDIR)$(localedir)/de/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/es/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) es.mo $(DESTDIR)$(localedir)/es/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/fr/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) fr.mo $(DESTDIR)$(localedir)/fr/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/it/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) it.mo $(DESTDIR)$(localedir)/it/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/ja/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) ja.mo $(DESTDIR)$(localedir)/ja/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/ko/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) ko.mo $(DESTDIR)$(localedir)/ko/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/nb/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) nb.mo $(DESTDIR)$(localedir)/nb/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/pl/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) pl.mo $(DESTDIR)$(localedir)/pl/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/pt_BR/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) pt_BR.mo $(DESTDIR)$(localedir)/pt_BR/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/sv/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) sv.mo $(DESTDIR)$(localedir)/sv/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/zh_CN/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) zh_CN.mo $(DESTDIR)$(localedir)/zh_CN/LC_MESSAGES/$(PACKAGE_NAME).mo $(MKDIR) $(DESTDIR)$(localedir)/zh_TW/LC_MESSAGES cd subversion/po ; $(INSTALL_LOCALE) zh_TW.mo $(DESTDIR)$(localedir)/zh_TW/LC_MESSAGES/$(PACKAGE_NAME).mo install-ramod-lib: subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la $(MKDIR) $(DESTDIR)$(ramod_libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_fs ; $(INSTALL_RAMOD_LIB) libsvn_fs-1.la $(DESTDIR)$(ramod_libdir)/libsvn_fs-1.la $(INSTALL_DATA) subversion/libsvn_fs/libsvn_fs.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs.pc cd subversion/libsvn_ra_svn ; $(INSTALL_RAMOD_LIB) libsvn_ra_svn-1.la $(DESTDIR)$(ramod_libdir)/libsvn_ra_svn-1.la $(INSTALL_DATA) subversion/libsvn_ra_svn/libsvn_ra_svn.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra_svn.pc cd subversion/libsvn_repos ; $(INSTALL_RAMOD_LIB) libsvn_repos-1.la $(DESTDIR)$(ramod_libdir)/libsvn_repos-1.la $(INSTALL_DATA) subversion/libsvn_repos/libsvn_repos.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_repos.pc cd subversion/libsvn_ra_local ; $(INSTALL_RAMOD_LIB) libsvn_ra_local-1.la $(DESTDIR)$(ramod_libdir)/libsvn_ra_local-1.la $(INSTALL_DATA) subversion/libsvn_ra_local/libsvn_ra_local.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra_local.pc install-serf-lib: subversion/libsvn_ra_serf/libsvn_ra_serf-1.la $(MKDIR) $(DESTDIR)$(serf_libdir) $(DESTDIR)$(pkgconfig_dir) cd subversion/libsvn_ra_serf ; $(INSTALL_SERF_LIB) libsvn_ra_serf-1.la $(DESTDIR)$(serf_libdir)/libsvn_ra_serf-1.la $(INSTALL_DATA) subversion/libsvn_ra_serf/libsvn_ra_serf.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra_serf.pc install-sub-test: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT) $(MKDIR) $(DESTDIR)$(sub_testdir) cd subversion/tests/libsvn_fs_fs ; $(INSTALL_SUB_TEST) fs-fs-fuzzy-test$(EXEEXT) $(DESTDIR)$(sub_testdir)/fs-fs-fuzzy-test$(EXEEXT) install-svnxx-lib: subversion/bindings/cxx/libsvnxx-1.la $(MKDIR) $(DESTDIR)$(svnxx_libdir) if $(SVN_BUILD_SVNXX) ; then cd subversion/bindings/cxx ; $(INSTALL_SVNXX_LIB) libsvnxx-1.la $(DESTDIR)$(svnxx_libdir)/libsvnxx-1.la ; fi $(INSTALL_EXTRA_SVNXX_LIB) install-svnxx-tests: subversion/bindings/cxx/svnxx-tests$(EXEEXT) $(MKDIR) $(DESTDIR)$(svnxx_testsdir) if $(SVN_BUILD_SVNXX_TESTS) ; then cd subversion/bindings/cxx ; $(INSTALL_SVNXX_TESTS) svnxx-tests$(EXEEXT) $(DESTDIR)$(svnxx_testsdir)/svnxx-tests$(EXEEXT) ; fi $(INSTALL_EXTRA_SVNXX_TESTS) install-swig-pl-lib: subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la $(MKDIR) $(DESTDIR)$(swig_pl_libdir) cd subversion/bindings/swig/perl/libsvn_swig_perl ; $(INSTALL_SWIG_PL_LIB) libsvn_swig_perl-1.la $(DESTDIR)$(swig_pl_libdir)/libsvn_swig_perl-1.la install-swig-py: subversion/bindings/swig/python/_core.la subversion/bindings/swig/python/_client.la subversion/bindings/swig/python/_delta.la subversion/bindings/swig/python/_diff.la subversion/bindings/swig/python/_fs.la subversion/bindings/swig/python/_ra.la subversion/bindings/swig/python/_repos.la subversion/bindings/swig/python/_wc.la $(MKDIR) $(DESTDIR)$(swig_pydir) cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _core.la $(DESTDIR)$(swig_pydir)/_core.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _client.la $(DESTDIR)$(swig_pydir)/_client.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _delta.la $(DESTDIR)$(swig_pydir)/_delta.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _diff.la $(DESTDIR)$(swig_pydir)/_diff.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _fs.la $(DESTDIR)$(swig_pydir)/_fs.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _ra.la $(DESTDIR)$(swig_pydir)/_ra.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _repos.la $(DESTDIR)$(swig_pydir)/_repos.la cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _wc.la $(DESTDIR)$(swig_pydir)/_wc.la $(INSTALL_EXTRA_SWIG_PY) install-swig-py-lib: subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la $(MKDIR) $(DESTDIR)$(swig_py_libdir) cd subversion/bindings/swig/python/libsvn_swig_py ; $(INSTALL_SWIG_PY_LIB) libsvn_swig_py-1.la $(DESTDIR)$(swig_py_libdir)/libsvn_swig_py-1.la install-swig-rb: subversion/bindings/swig/ruby/core.la subversion/bindings/swig/ruby/client.la subversion/bindings/swig/ruby/delta.la subversion/bindings/swig/ruby/diff.la subversion/bindings/swig/ruby/fs.la subversion/bindings/swig/ruby/ra.la subversion/bindings/swig/ruby/repos.la subversion/bindings/swig/ruby/wc.la $(MKDIR) $(DESTDIR)$(swig_rbdir) cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) core.la $(DESTDIR)$(swig_rbdir)/core.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) client.la $(DESTDIR)$(swig_rbdir)/client.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) delta.la $(DESTDIR)$(swig_rbdir)/delta.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) diff.la $(DESTDIR)$(swig_rbdir)/diff.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) fs.la $(DESTDIR)$(swig_rbdir)/fs.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) ra.la $(DESTDIR)$(swig_rbdir)/ra.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) repos.la $(DESTDIR)$(swig_rbdir)/repos.la cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) wc.la $(DESTDIR)$(swig_rbdir)/wc.la $(INSTALL_EXTRA_SWIG_RB) install-swig-rb-lib: subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la $(MKDIR) $(DESTDIR)$(swig_rb_libdir) cd subversion/bindings/swig/ruby/libsvn_swig_ruby ; $(INSTALL_SWIG_RB_LIB) libsvn_swig_ruby-1.la $(DESTDIR)$(swig_rb_libdir)/libsvn_swig_ruby-1.la install-tools: tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/server-side/mod_dontdothat/mod_dontdothat.la tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/x509-parser$(EXEEXT) $(MKDIR) $(DESTDIR)$(toolsdir) cd tools/diff ; $(INSTALL_TOOLS) diff$(EXEEXT) $(DESTDIR)$(toolsdir)/diff$(EXEEXT) cd tools/diff ; $(INSTALL_TOOLS) diff3$(EXEEXT) $(DESTDIR)$(toolsdir)/diff3$(EXEEXT) cd tools/diff ; $(INSTALL_TOOLS) diff4$(EXEEXT) $(DESTDIR)$(toolsdir)/diff4$(EXEEXT) cd tools/dev ; $(INSTALL_TOOLS) fsfs-access-map$(EXEEXT) $(DESTDIR)$(toolsdir)/fsfs-access-map$(EXEEXT) if $(INSTALL_APACHE_MODS) ; then cd tools/server-side/mod_dontdothat ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n dontdothat mod_dontdothat.la ; fi cd tools/client-side/svn-mergeinfo-normalizer ; $(INSTALL_TOOLS) svn-mergeinfo-normalizer$(EXEEXT) $(DESTDIR)$(toolsdir)/svn-mergeinfo-normalizer$(EXEEXT) cd tools/server-side ; $(INSTALL_TOOLS) svn-populate-node-origins-index$(EXEEXT) $(DESTDIR)$(toolsdir)/svn-populate-node-origins-index$(EXEEXT) cd tools/server-side ; $(INSTALL_TOOLS) svnauthz$(EXEEXT) $(DESTDIR)$(toolsdir)/svnauthz$(EXEEXT) cd tools/server-side ; $(INSTALL_TOOLS) svnauthz-validate$(EXEEXT) $(DESTDIR)$(toolsdir)/svnauthz-validate$(EXEEXT) cd tools/client-side/svnconflict ; $(INSTALL_TOOLS) svnconflict$(EXEEXT) $(DESTDIR)$(toolsdir)/svnconflict$(EXEEXT) cd tools/dev/svnmover ; $(INSTALL_TOOLS) svnmover$(EXEEXT) $(DESTDIR)$(toolsdir)/svnmover$(EXEEXT) cd tools/dev/svnraisetreeconflict ; $(INSTALL_TOOLS) svnraisetreeconflict$(EXEEXT) $(DESTDIR)$(toolsdir)/svnraisetreeconflict$(EXEEXT) cd tools/dev ; $(INSTALL_TOOLS) x509-parser$(EXEEXT) $(DESTDIR)$(toolsdir)/x509-parser$(EXEEXT) $(INSTALL_EXTRA_TOOLS) ######################################## # Section 8: The install-include rule ######################################## install-include: subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_md5.h subversion/include/svn_mergeinfo.h subversion/include/svn_nls.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_quoprint.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/include/svn_x509.h subversion/include/svn_xml.h $(MKDIR) $(DESTDIR)$(includedir)/subversion-1 $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/mod_authz_svn.h $(DESTDIR)$(includedir)/subversion-1/mod_authz_svn.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/mod_dav_svn.h $(DESTDIR)$(includedir)/subversion-1/mod_dav_svn.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_auth.h $(DESTDIR)$(includedir)/subversion-1/svn_auth.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_base64.h $(DESTDIR)$(includedir)/subversion-1/svn_base64.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_cache_config.h $(DESTDIR)$(includedir)/subversion-1/svn_cache_config.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_checksum.h $(DESTDIR)$(includedir)/subversion-1/svn_checksum.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_client.h $(DESTDIR)$(includedir)/subversion-1/svn_client.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_cmdline.h $(DESTDIR)$(includedir)/subversion-1/svn_cmdline.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_compat.h $(DESTDIR)$(includedir)/subversion-1/svn_compat.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_config.h $(DESTDIR)$(includedir)/subversion-1/svn_config.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_ctype.h $(DESTDIR)$(includedir)/subversion-1/svn_ctype.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_dav.h $(DESTDIR)$(includedir)/subversion-1/svn_dav.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_delta.h $(DESTDIR)$(includedir)/subversion-1/svn_delta.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_diff.h $(DESTDIR)$(includedir)/subversion-1/svn_diff.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_dirent_uri.h $(DESTDIR)$(includedir)/subversion-1/svn_dirent_uri.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_dso.h $(DESTDIR)$(includedir)/subversion-1/svn_dso.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_error.h $(DESTDIR)$(includedir)/subversion-1/svn_error.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_error_codes.h $(DESTDIR)$(includedir)/subversion-1/svn_error_codes.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_fs.h $(DESTDIR)$(includedir)/subversion-1/svn_fs.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_hash.h $(DESTDIR)$(includedir)/subversion-1/svn_hash.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_io.h $(DESTDIR)$(includedir)/subversion-1/svn_io.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_iter.h $(DESTDIR)$(includedir)/subversion-1/svn_iter.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_md5.h $(DESTDIR)$(includedir)/subversion-1/svn_md5.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_mergeinfo.h $(DESTDIR)$(includedir)/subversion-1/svn_mergeinfo.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_nls.h $(DESTDIR)$(includedir)/subversion-1/svn_nls.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_opt.h $(DESTDIR)$(includedir)/subversion-1/svn_opt.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_opt_impl.h $(DESTDIR)$(includedir)/subversion-1/svn_opt_impl.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_path.h $(DESTDIR)$(includedir)/subversion-1/svn_path.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_pools.h $(DESTDIR)$(includedir)/subversion-1/svn_pools.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_props.h $(DESTDIR)$(includedir)/subversion-1/svn_props.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_quoprint.h $(DESTDIR)$(includedir)/subversion-1/svn_quoprint.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_ra.h $(DESTDIR)$(includedir)/subversion-1/svn_ra.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_ra_svn.h $(DESTDIR)$(includedir)/subversion-1/svn_ra_svn.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_repos.h $(DESTDIR)$(includedir)/subversion-1/svn_repos.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_sorts.h $(DESTDIR)$(includedir)/subversion-1/svn_sorts.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_string.h $(DESTDIR)$(includedir)/subversion-1/svn_string.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_subst.h $(DESTDIR)$(includedir)/subversion-1/svn_subst.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_time.h $(DESTDIR)$(includedir)/subversion-1/svn_time.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_types.h $(DESTDIR)$(includedir)/subversion-1/svn_types.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_types_impl.h $(DESTDIR)$(includedir)/subversion-1/svn_types_impl.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_user.h $(DESTDIR)$(includedir)/subversion-1/svn_user.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_utf.h $(DESTDIR)$(includedir)/subversion-1/svn_utf.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_version.h $(DESTDIR)$(includedir)/subversion-1/svn_version.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_wc.h $(DESTDIR)$(includedir)/subversion-1/svn_wc.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_x509.h $(DESTDIR)$(includedir)/subversion-1/svn_x509.h $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_xml.h $(DESTDIR)$(includedir)/subversion-1/svn_xml.h ######################################## # Section 9: Shortcut targets for manual builds of specific items ######################################## afl-svndiff: subversion/tests/afl/afl-svndiff$(EXEEXT) afl-x509: subversion/tests/afl/afl-x509$(EXEEXT) atomic-ra-revprop-change: subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) auth-test: subversion/tests/libsvn_subr/auth-test$(EXEEXT) authz-test: subversion/tests/libsvn_repos/authz-test$(EXEEXT) bit-array-test: subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) cache-test: subversion/tests/libsvn_subr/cache-test$(EXEEXT) changes-test: subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) checksum-test: subversion/tests/libsvn_subr/checksum-test$(EXEEXT) client-test: subversion/tests/libsvn_client/client-test$(EXEEXT) compat-test: subversion/tests/libsvn_subr/compat-test$(EXEEXT) compress-test: subversion/tests/libsvn_subr/compress-test$(EXEEXT) config-test: subversion/tests/libsvn_subr/config-test$(EXEEXT) conflict-data-test: subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) conflicts-test: subversion/tests/libsvn_client/conflicts-test$(EXEEXT) crypto-test: subversion/tests/libsvn_subr/crypto-test$(EXEEXT) db-test: subversion/tests/libsvn_wc/db-test$(EXEEXT) diff: tools/diff/diff$(EXEEXT) diff-diff3-test: subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) diff3: tools/diff/diff3$(EXEEXT) diff4: tools/diff/diff4$(EXEEXT) dirent_uri-test: subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) dump-load-test: subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) entries-compat-test: subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) entries-dump: subversion/tests/cmdline/entries-dump$(EXEEXT) error-code-test: subversion/tests/libsvn_subr/error-code-test$(EXEEXT) error-test: subversion/tests/libsvn_subr/error-test$(EXEEXT) +filesize-test: subversion/tests/client/filesize-test$(EXEEXT) fs-base-test: subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) fs-fs-fuzzy-test: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT) fs-fs-pack-test: subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) fs-fs-private-test: subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) fs-sequential-test: subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) fs-test: subversion/tests/libsvn_fs/fs-test$(EXEEXT) fs-x-pack-test: subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) fsfs-access-map: tools/dev/fsfs-access-map$(EXEEXT) hashdump-test: subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) io-test: subversion/tests/libsvn_subr/io-test$(EXEEXT) libsvn_auth_gnome_keyring: subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la libsvn_auth_kwallet: subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la libsvn_client: subversion/libsvn_client/libsvn_client-1.la libsvn_delta: subversion/libsvn_delta/libsvn_delta-1.la libsvn_diff: subversion/libsvn_diff/libsvn_diff-1.la libsvn_fs: subversion/libsvn_fs/libsvn_fs-1.la libsvn_fs_base: subversion/libsvn_fs_base/libsvn_fs_base-1.la libsvn_fs_fs: subversion/libsvn_fs_fs/libsvn_fs_fs-1.la libsvn_fs_util: subversion/libsvn_fs_util/libsvn_fs_util-1.la libsvn_fs_x: subversion/libsvn_fs_x/libsvn_fs_x-1.la libsvn_ra: subversion/libsvn_ra/libsvn_ra-1.la libsvn_ra_local: subversion/libsvn_ra_local/libsvn_ra_local-1.la libsvn_ra_serf: subversion/libsvn_ra_serf/libsvn_ra_serf-1.la libsvn_ra_svn: subversion/libsvn_ra_svn/libsvn_ra_svn-1.la libsvn_repos: subversion/libsvn_repos/libsvn_repos-1.la libsvn_subr: subversion/libsvn_subr/libsvn_subr-1.la libsvn_swig_perl: subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la libsvn_swig_py: subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la libsvn_swig_ruby: subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la libsvn_test: subversion/tests/libsvn_test-1.la libsvn_wc: subversion/libsvn_wc/libsvn_wc-1.la libsvnjavahl: subversion/bindings/javahl/native/libsvnjavahl-1.la libsvnxx: subversion/bindings/cxx/libsvnxx-1.la lock-helper: subversion/tests/cmdline/lock-helper$(EXEEXT) locks-test: subversion/tests/libsvn_fs/locks-test$(EXEEXT) mergeinfo-test: subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) mod_authz_svn: subversion/mod_authz_svn/mod_authz_svn.la mod_dav_svn: subversion/mod_dav_svn/mod_dav_svn.la mod_dontdothat: tools/server-side/mod_dontdothat/mod_dontdothat.la mtcc-test: subversion/tests/libsvn_client/mtcc-test$(EXEEXT) op-depth-test: subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) opt-test: subversion/tests/libsvn_subr/opt-test$(EXEEXT) packed-data-test: subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) parse-diff-test: subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) path-test: subversion/tests/libsvn_subr/path-test$(EXEEXT) perl_client: subversion/bindings/swig/perl/native/_Client.la perl_core: subversion/bindings/swig/perl/native/_Core.la perl_delta: subversion/bindings/swig/perl/native/_Delta.la perl_diff: subversion/bindings/swig/perl/native/_Diff.la perl_fs: subversion/bindings/swig/perl/native/_Fs.la perl_ra: subversion/bindings/swig/perl/native/_Ra.la perl_repos: subversion/bindings/swig/perl/native/_Repos.la perl_wc: subversion/bindings/swig/perl/native/_Wc.la prefix-string-test: subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) priority-queue-test: subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) pristine-store-test: subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) python_client: subversion/bindings/swig/python/_client.la python_core: subversion/bindings/swig/python/_core.la python_delta: subversion/bindings/swig/python/_delta.la python_diff: subversion/bindings/swig/python/_diff.la python_fs: subversion/bindings/swig/python/_fs.la python_ra: subversion/bindings/swig/python/_ra.la python_repos: subversion/bindings/swig/python/_repos.la python_wc: subversion/bindings/swig/python/_wc.la ra-local-test: subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) ra-test: subversion/tests/libsvn_ra/ra-test$(EXEEXT) random-test: subversion/tests/libsvn_delta/random-test$(EXEEXT) repos-test: subversion/tests/libsvn_repos/repos-test$(EXEEXT) revision-test: subversion/tests/libsvn_subr/revision-test$(EXEEXT) root-pools-test: subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) ruby_client: subversion/bindings/swig/ruby/client.la ruby_core: subversion/bindings/swig/ruby/core.la ruby_delta: subversion/bindings/swig/ruby/delta.la ruby_diff: subversion/bindings/swig/ruby/diff.la ruby_fs: subversion/bindings/swig/ruby/fs.la ruby_ra: subversion/bindings/swig/ruby/ra.la ruby_repos: subversion/bindings/swig/ruby/repos.la ruby_wc: subversion/bindings/swig/ruby/wc.la skel-test: subversion/tests/libsvn_subr/skel-test$(EXEEXT) spillbuf-test: subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) sqlite-test: subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) stream-test: subversion/tests/libsvn_subr/stream-test$(EXEEXT) string-table-test: subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) string-test: subversion/tests/libsvn_subr/string-test$(EXEEXT) strings-reps-test: subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) subst_translate-test: subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) svn: subversion/svn/svn$(EXEEXT) svn-mergeinfo-normalizer: tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) svn-populate-node-origins-index: tools/server-side/svn-populate-node-origins-index$(EXEEXT) svn-wc-db-tester: tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) svnadmin: subversion/svnadmin/svnadmin$(EXEEXT) svnauthz: tools/server-side/svnauthz$(EXEEXT) svnauthz-validate: tools/server-side/svnauthz-validate$(EXEEXT) svnbench: subversion/svnbench/svnbench$(EXEEXT) svnconflict: tools/client-side/svnconflict/svnconflict$(EXEEXT) svndiff-stream-test: subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) svndiff-test: subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) svndumpfilter: subversion/svndumpfilter/svndumpfilter$(EXEEXT) svnfsfs: subversion/svnfsfs/svnfsfs$(EXEEXT) svnlook: subversion/svnlook/svnlook$(EXEEXT) svnmover: tools/dev/svnmover/svnmover$(EXEEXT) svnmucc: subversion/svnmucc/svnmucc$(EXEEXT) svnraisetreeconflict: tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) svnrdump: subversion/svnrdump/svnrdump$(EXEEXT) svnserve: subversion/svnserve/svnserve$(EXEEXT) svnsync: subversion/svnsync/svnsync$(EXEEXT) svnversion: subversion/svnversion/svnversion$(EXEEXT) svnxx-tests: subversion/bindings/cxx/svnxx-tests$(EXEEXT) time-test: subversion/tests/libsvn_subr/time-test$(EXEEXT) translate-test: subversion/tests/libsvn_subr/translate-test$(EXEEXT) utf-test: subversion/tests/libsvn_subr/utf-test$(EXEEXT) vdelta-test: subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) wc-incomplete-tester: subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) wc-lock-tester: subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) wc-queries-test: subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) wc-test: subversion/tests/libsvn_wc/wc-test$(EXEEXT) window-test: subversion/tests/libsvn_delta/window-test$(EXEEXT) x509-parser: tools/dev/x509-parser$(EXEEXT) x509-test: subversion/tests/libsvn_subr/x509-test$(EXEEXT) xml-test: subversion/tests/libsvn_subr/xml-test$(EXEEXT) ######################################## # Section 10: Rules to build all other kinds of object-like files ######################################## subversion/bindings/cxx/src/aprwrap/impl.lo: subversion/bindings/cxx/src/aprwrap/impl.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/aprwrap/impl.cpp ; else echo "fake" > subversion/bindings/cxx/src/aprwrap/impl.lo ; fi subversion/bindings/cxx/src/client_context.lo: subversion/bindings/cxx/src/client_context.cpp subversion/bindings/cxx/include/svnxx/client/context.hpp subversion/bindings/cxx/include/svnxx/depth.hpp subversion/bindings/cxx/include/svnxx/detail/future.hpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/include/svnxx/revision.hpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private.hpp subversion/bindings/cxx/src/private/client_context_private.hpp subversion/bindings/cxx/src/private/depth_private.hpp subversion/bindings/cxx/src/private/exception_private.hpp subversion/bindings/cxx/src/private/future_private.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/src/private/revision_private.hpp subversion/bindings/cxx/src/private/strings_private.hpp subversion/bindings/cxx/src/private/tristate_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/client_context.cpp ; else echo "fake" > subversion/bindings/cxx/src/client_context.lo ; fi subversion/bindings/cxx/src/client_status.lo: subversion/bindings/cxx/src/client_status.cpp subversion/bindings/cxx/include/svnxx/client/context.hpp subversion/bindings/cxx/include/svnxx/client/status.hpp subversion/bindings/cxx/include/svnxx/depth.hpp subversion/bindings/cxx/include/svnxx/detail/future.hpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/include/svnxx/revision.hpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private.hpp subversion/bindings/cxx/src/private/client_context_private.hpp subversion/bindings/cxx/src/private/depth_private.hpp subversion/bindings/cxx/src/private/exception_private.hpp subversion/bindings/cxx/src/private/future_private.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/src/private/revision_private.hpp subversion/bindings/cxx/src/private/strings_private.hpp subversion/bindings/cxx/src/private/tristate_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/client_status.cpp ; else echo "fake" > subversion/bindings/cxx/src/client_status.lo ; fi subversion/bindings/cxx/src/debug.lo: subversion/bindings/cxx/src/debug.cpp subversion/bindings/cxx/src/private/debug_private.hpp subversion/include/private/svn_debug.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/debug.cpp ; else echo "fake" > subversion/bindings/cxx/src/debug.lo ; fi subversion/bindings/cxx/src/depth.lo: subversion/bindings/cxx/src/depth.cpp subversion/bindings/cxx/include/svnxx/depth.hpp subversion/bindings/cxx/src/private/depth_private.hpp subversion/bindings/cxx/src/private/strings_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/depth.cpp ; else echo "fake" > subversion/bindings/cxx/src/depth.lo ; fi subversion/bindings/cxx/src/exception.lo: subversion/bindings/cxx/src/exception.cpp subversion/bindings/cxx/include/svnxx/client/context.hpp subversion/bindings/cxx/include/svnxx/depth.hpp subversion/bindings/cxx/include/svnxx/detail/future.hpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/include/svnxx/revision.hpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private.hpp subversion/bindings/cxx/src/private/client_context_private.hpp subversion/bindings/cxx/src/private/depth_private.hpp subversion/bindings/cxx/src/private/exception_private.hpp subversion/bindings/cxx/src/private/future_private.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/src/private/revision_private.hpp subversion/bindings/cxx/src/private/strings_private.hpp subversion/bindings/cxx/src/private/tristate_private.hpp subversion/include/private/svn_debug.h subversion/include/private/svn_error_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/exception.cpp ; else echo "fake" > subversion/bindings/cxx/src/exception.lo ; fi subversion/bindings/cxx/src/future.lo: subversion/bindings/cxx/src/future.cpp subversion/bindings/cxx/include/svnxx/detail/future.hpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private/future_private.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/future.cpp ; else echo "fake" > subversion/bindings/cxx/src/future.lo ; fi subversion/bindings/cxx/src/init.lo: subversion/bindings/cxx/src/init.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/private/debug_private.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/init.cpp ; else echo "fake" > subversion/bindings/cxx/src/init.lo ; fi subversion/bindings/cxx/src/revision.lo: subversion/bindings/cxx/src/revision.cpp subversion/bindings/cxx/include/svnxx/revision.hpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/src/private/revision_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX) ; then $(COMPILE_SVNXX) $(canonicalized_srcdir)subversion/bindings/cxx/src/revision.cpp ; else echo "fake" > subversion/bindings/cxx/src/revision.lo ; fi subversion/bindings/cxx/tests/svnxx-tests.lo: subversion/bindings/cxx/tests/svnxx-tests.cpp if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/svnxx-tests.cpp ; else echo "fake" > subversion/bindings/cxx/tests/svnxx-tests.lo ; fi subversion/bindings/cxx/tests/test_aprwrap_arrays.lo: subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/tests/fixture_init.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_aprwrap_arrays.lo ; fi subversion/bindings/cxx/tests/test_aprwrap_hashes.lo: subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/tests/fixture_init.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_aprwrap_hashes.lo ; fi subversion/bindings/cxx/tests/test_aprwrap_pools.lo: subversion/bindings/cxx/tests/test_aprwrap_pools.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/tests/fixture_init.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_aprwrap_pools.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_aprwrap_pools.lo ; fi subversion/bindings/cxx/tests/test_client_status.lo: subversion/bindings/cxx/tests/test_client_status.cpp subversion/bindings/cxx/include/svnxx/client/context.hpp subversion/bindings/cxx/include/svnxx/client/status.hpp subversion/bindings/cxx/include/svnxx/depth.hpp subversion/bindings/cxx/include/svnxx/detail/future.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/include/svnxx/revision.hpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/tests/fixture_init.hpp subversion/include/svn_opt_impl.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_client_status.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_client_status.lo ; fi subversion/bindings/cxx/tests/test_depth.lo: subversion/bindings/cxx/tests/test_depth.cpp subversion/bindings/cxx/include/svnxx/depth.hpp subversion/bindings/cxx/src/private/depth_private.hpp subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_depth.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_depth.lo ; fi subversion/bindings/cxx/tests/test_exceptions.lo: subversion/bindings/cxx/tests/test_exceptions.cpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/private/exception_private.hpp subversion/bindings/cxx/tests/fixture_init.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_exceptions.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_exceptions.lo ; fi subversion/bindings/cxx/tests/test_init.lo: subversion/bindings/cxx/tests/test_init.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/private/init_private.hpp if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_init.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_init.lo ; fi subversion/bindings/cxx/tests/test_revision.lo: subversion/bindings/cxx/tests/test_revision.cpp subversion/bindings/cxx/include/svnxx/revision.hpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/src/private/revision_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_revision.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_revision.lo ; fi subversion/bindings/cxx/tests/test_strings.lo: subversion/bindings/cxx/tests/test_strings.cpp subversion/bindings/cxx/include/svnxx/detail/noncopyable.hpp subversion/bindings/cxx/include/svnxx/exception.hpp subversion/bindings/cxx/include/svnxx/init.hpp subversion/bindings/cxx/src/aprwrap.hpp subversion/bindings/cxx/src/aprwrap/array.hpp subversion/bindings/cxx/src/aprwrap/hash.hpp subversion/bindings/cxx/src/aprwrap/pool.hpp subversion/bindings/cxx/src/private/init_private.hpp subversion/bindings/cxx/src/private/strings_private.hpp subversion/bindings/cxx/tests/fixture_init.hpp subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_strings.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_strings.lo ; fi subversion/bindings/cxx/tests/test_tristate.lo: subversion/bindings/cxx/tests/test_tristate.cpp subversion/bindings/cxx/include/svnxx/tristate.hpp subversion/bindings/cxx/src/private/tristate_private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h if $(SVN_BUILD_SVNXX_TESTS) ; then $(COMPILE_SVNXX_TEST) $(canonicalized_srcdir)subversion/bindings/cxx/tests/test_tristate.cpp ; else echo "fake" > subversion/bindings/cxx/tests/test_tristate.lo ; fi subversion/bindings/javahl/classes/org/apache/subversion/javahl/BasicTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientException.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientNotifyInformation.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitInfo.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItem.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItemStateFlags.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictDescriptor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictResult.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/DiffSummary.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ExceptionTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNClient.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNConfig.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNEditor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRemote.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNReporter.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReporter.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRepos.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIError.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIObject.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeException.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeResources.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/OperationContext.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/OperationContext.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ProgressEvent.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/ReposNotifyInformation.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/RunTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNClient.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRemoteTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRepos.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNReposTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNUtil.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/SubversionException.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SubversionException.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/UtilTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/WC.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/AuthnCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameLineCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameLineCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameRangeCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameRangeCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ChangelistCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ClientNotifyCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ClientNotifyCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitMessageCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitMessageCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConfigEvent.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConfigEvent.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConflictResolverCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConflictResolverCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/DiffSummaryCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ImportFilterCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ImportFilterCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InfoCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InheritedProplistCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListItemCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListItemCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/LogMessageCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/PatchCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProgressCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProgressCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProplistCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteStatus.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteStatus.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposFreezeAction.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposFreezeAction.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposNotifyCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposNotifyCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposVerifyCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposVerifyCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/StatusCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/TunnelAgent.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/UserPasswordCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/CommitEditor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteFactory.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteSession.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RetryOpenSession.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RetryOpenSession.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StateReporter.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StatusEditor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ChangePath.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ChangePath.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Checksum.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Checksum.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ConflictVersion.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/CopySource.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/CopySource.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Depth.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Depth.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DiffOptions.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DiffOptions.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DirEntry.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DirEntry.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ExternalItem.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ExternalItem.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Info.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Lock.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Lock.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/LogDate.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Mergeinfo.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Mergeinfo.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeInputStream.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeInputStream.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeOutputStream.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeOutputStream.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NodeKind.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Property.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Property.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Revision.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRange.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRangeList.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RuntimeVersion.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RuntimeVersion.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Status.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Tristate.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Tristate.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Version.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Version.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/VersionExtended.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigImpl.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/DiffLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/PropLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/RequestChannel.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/RequestChannel.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ResponseChannel.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ResponseChannel.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/SubstLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/SubstLib.java subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/TunnelChannel.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/TunnelChannel.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BasicTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback2.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback3.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallbackImpl.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangePath.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangelistCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ClientException.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItem.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItemStateFlags.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItemStateFlags.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitMessage.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitMessage.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictDescriptor.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResolverCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResolverCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResult.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictVersion.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CopySource.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Depth.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummary.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummaryReceiver.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummaryReceiver.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DirEntry.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ErrorCodes.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ErrorCodes.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InfoCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/InfoCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InputInterface.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ListCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ListCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Lock.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LockStatus.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LockStatus.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogDate.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessage.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessageCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Mergeinfo.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/MergeinfoLogKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NativeException.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeException.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NodeKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify2.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyAction.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyInformation.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyStatus.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyStatus.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Operation.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Operation.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/OutputInterface.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Path.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressEvent.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressListener.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressListener.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword2.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword3.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword3.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PropertyData.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallbackImpl.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Revision.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionKind.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionRange.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RunTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/RunTests.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdmin.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdminTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNAdminTests.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClient.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientInterface.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientLogLevel.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientLogLevel.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientSynchronized.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNInputStream.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNInputStream.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNOutputStream.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNOutputStream.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ScheduleKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ScheduleKind.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Status.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusCallback.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusKind.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SubversionException.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SubversionException.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Version.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java subversion/bindings/javahl/classes/org/tigris/subversion/javahl/WC.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/WC.java subversion/bindings/javahl/include/CommitEditor.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java subversion/bindings/javahl/include/CommitItemStateFlags.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java subversion/bindings/javahl/include/ConfigImpl.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java subversion/bindings/javahl/include/ConfigLib.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java subversion/bindings/javahl/include/DiffLib.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java subversion/bindings/javahl/include/NativeInputStream.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeInputStream.java subversion/bindings/javahl/include/NativeOutputStream.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeOutputStream.java subversion/bindings/javahl/include/NativeResources.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java subversion/bindings/javahl/include/PropLib.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java subversion/bindings/javahl/include/RemoteFactory.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java subversion/bindings/javahl/include/RemoteSession.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java subversion/bindings/javahl/include/RequestChannel.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/RequestChannel.java subversion/bindings/javahl/include/ResponseChannel.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ResponseChannel.java subversion/bindings/javahl/include/Revision.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java subversion/bindings/javahl/include/RevisionRangeList.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java subversion/bindings/javahl/include/RuntimeVersion.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RuntimeVersion.java subversion/bindings/javahl/include/SVNClient.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java subversion/bindings/javahl/include/SVNRepos.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java subversion/bindings/javahl/include/StateReporter.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java subversion/bindings/javahl/include/SubstLib.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/SubstLib.java subversion/bindings/javahl/include/TunnelChannel.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/TunnelChannel.java subversion/bindings/javahl/include/UserPasswordCallback.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java subversion/bindings/javahl/include/Version.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Version.java subversion/bindings/javahl/include/VersionExtended.h: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java subversion/bindings/javahl/native/Array.lo: subversion/bindings/javahl/native/Array.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Array.cpp subversion/bindings/javahl/native/AuthnCallback.lo: subversion/bindings/javahl/native/AuthnCallback.cpp subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_x509.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/AuthnCallback.cpp subversion/bindings/javahl/native/BlameCallback.lo: subversion/bindings/javahl/native/BlameCallback.cpp subversion/bindings/javahl/native/BlameCallback.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/BlameCallback.cpp subversion/bindings/javahl/native/ChangelistCallback.lo: subversion/bindings/javahl/native/ChangelistCallback.cpp subversion/bindings/javahl/native/ChangelistCallback.h subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ChangelistCallback.cpp subversion/bindings/javahl/native/ClientContext.lo: subversion/bindings/javahl/native/ClientContext.cpp subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ClientContext.cpp subversion/bindings/javahl/native/CommitCallback.lo: subversion/bindings/javahl/native/CommitCallback.cpp subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CommitCallback.cpp subversion/bindings/javahl/native/CommitEditor.lo: subversion/bindings/javahl/native/CommitEditor.cpp subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitEditor.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EditorCallbacks.hpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LockTokenTable.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/PropertyTable.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CommitEditor.cpp subversion/bindings/javahl/native/CommitMessage.lo: subversion/bindings/javahl/native/CommitMessage.cpp subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CommitMessage.cpp subversion/bindings/javahl/native/CopySources.lo: subversion/bindings/javahl/native/CopySources.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/CopySources.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CopySources.cpp subversion/bindings/javahl/native/CreateJ.lo: subversion/bindings/javahl/native/CreateJ.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Revision.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/RevisionRangeList.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CreateJ.cpp subversion/bindings/javahl/native/Credential.lo: subversion/bindings/javahl/native/Credential.cpp subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/Credential.hpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Credential.cpp subversion/bindings/javahl/native/DiffOptions.lo: subversion/bindings/javahl/native/DiffOptions.cpp subversion/bindings/javahl/native/DiffOptions.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/DiffOptions.cpp subversion/bindings/javahl/native/DiffSummaryReceiver.lo: subversion/bindings/javahl/native/DiffSummaryReceiver.cpp subversion/bindings/javahl/native/DiffSummaryReceiver.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/DiffSummaryReceiver.cpp subversion/bindings/javahl/native/EditorCallbacks.lo: subversion/bindings/javahl/native/EditorCallbacks.cpp subversion/bindings/javahl/native/EditorCallbacks.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Utility.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/EditorCallbacks.cpp subversion/bindings/javahl/native/EditorProxy.lo: subversion/bindings/javahl/native/EditorProxy.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/NativeStream.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/EditorProxy.cpp subversion/bindings/javahl/native/EnumMapper.lo: subversion/bindings/javahl/native/EnumMapper.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/EnumMapper.cpp subversion/bindings/javahl/native/ExternalItem.lo: subversion/bindings/javahl/native/ExternalItem.cpp subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ExternalItem.cpp subversion/bindings/javahl/native/File.lo: subversion/bindings/javahl/native/File.cpp subversion/bindings/javahl/native/File.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/File.cpp subversion/bindings/javahl/native/ImportFilterCallback.lo: subversion/bindings/javahl/native/ImportFilterCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ImportFilterCallback.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ImportFilterCallback.cpp subversion/bindings/javahl/native/InfoCallback.lo: subversion/bindings/javahl/native/InfoCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/InfoCallback.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/InfoCallback.cpp subversion/bindings/javahl/native/InputStream.lo: subversion/bindings/javahl/native/InputStream.cpp subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/InputStream.cpp subversion/bindings/javahl/native/Iterator.lo: subversion/bindings/javahl/native/Iterator.cpp subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Iterator.cpp subversion/bindings/javahl/native/JNIByteArray.lo: subversion/bindings/javahl/native/JNIByteArray.cpp subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIByteArray.cpp subversion/bindings/javahl/native/JNICriticalSection.lo: subversion/bindings/javahl/native/JNICriticalSection.cpp subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNICriticalSection.cpp subversion/bindings/javahl/native/JNIMutex.lo: subversion/bindings/javahl/native/JNIMutex.cpp subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIMutex.cpp subversion/bindings/javahl/native/JNIStackElement.lo: subversion/bindings/javahl/native/JNIStackElement.cpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIStackElement.cpp subversion/bindings/javahl/native/JNIStringHolder.lo: subversion/bindings/javahl/native/JNIStringHolder.cpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIStringHolder.cpp subversion/bindings/javahl/native/JNIUtil.lo: subversion/bindings/javahl/native/JNIUtil.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIUtil.cpp subversion/bindings/javahl/native/ListCallback.lo: subversion/bindings/javahl/native/ListCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/ListCallback.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ListCallback.cpp subversion/bindings/javahl/native/LockTokenTable.lo: subversion/bindings/javahl/native/LockTokenTable.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LockTokenTable.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/LockTokenTable.cpp subversion/bindings/javahl/native/LogMessageCallback.lo: subversion/bindings/javahl/native/LogMessageCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/LogMessageCallback.cpp subversion/bindings/javahl/native/MessageReceiver.lo: subversion/bindings/javahl/native/MessageReceiver.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/MessageReceiver.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/MessageReceiver.cpp subversion/bindings/javahl/native/NativeStream.lo: subversion/bindings/javahl/native/NativeStream.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeInputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeOutputStream.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/NativeStream.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/NativeStream.cpp subversion/bindings/javahl/native/OperationContext.lo: subversion/bindings/javahl/native/OperationContext.cpp subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/GlobalConfig.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/OperationContext.cpp subversion/bindings/javahl/native/OutputStream.lo: subversion/bindings/javahl/native/OutputStream.cpp subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/OutputStream.cpp subversion/bindings/javahl/native/PatchCallback.lo: subversion/bindings/javahl/native/PatchCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/PatchCallback.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/PatchCallback.cpp subversion/bindings/javahl/native/Path.lo: subversion/bindings/javahl/native/Path.cpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/private/svn_dirent_uri_private.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Path.cpp subversion/bindings/javahl/native/Pool.lo: subversion/bindings/javahl/native/Pool.cpp subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Pool.cpp subversion/bindings/javahl/native/Prompter.lo: subversion/bindings/javahl/native/Prompter.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Prompter.cpp subversion/bindings/javahl/native/PropertyTable.lo: subversion/bindings/javahl/native/PropertyTable.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/PropertyTable.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/PropertyTable.cpp subversion/bindings/javahl/native/ProplistCallback.lo: subversion/bindings/javahl/native/ProplistCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ProplistCallback.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ProplistCallback.cpp subversion/bindings/javahl/native/RemoteSession.lo: subversion/bindings/javahl/native/RemoteSession.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/StateReporter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RemoteSession.cpp subversion/bindings/javahl/native/RemoteSessionContext.lo: subversion/bindings/javahl/native/RemoteSessionContext.cpp subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RemoteSessionContext.cpp subversion/bindings/javahl/native/ReposFreezeAction.lo: subversion/bindings/javahl/native/ReposFreezeAction.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposFreezeAction.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ReposFreezeAction.cpp subversion/bindings/javahl/native/ReposNotifyCallback.lo: subversion/bindings/javahl/native/ReposNotifyCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposNotifyCallback.h subversion/bindings/javahl/native/RevisionRange.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ReposNotifyCallback.cpp subversion/bindings/javahl/native/ReposVerifyCallback.lo: subversion/bindings/javahl/native/ReposVerifyCallback.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposVerifyCallback.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ReposVerifyCallback.cpp subversion/bindings/javahl/native/Revision.lo: subversion/bindings/javahl/native/Revision.cpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Revision.cpp subversion/bindings/javahl/native/RevisionRange.lo: subversion/bindings/javahl/native/RevisionRange.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/RevisionRange.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RevisionRange.cpp subversion/bindings/javahl/native/RevisionRangeList.lo: subversion/bindings/javahl/native/RevisionRangeList.cpp subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/RevisionRangeList.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RevisionRangeList.cpp subversion/bindings/javahl/native/SVNBase.lo: subversion/bindings/javahl/native/SVNBase.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SVNBase.cpp subversion/bindings/javahl/native/SVNClient.lo: subversion/bindings/javahl/native/SVNClient.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/BlameCallback.h subversion/bindings/javahl/native/ChangelistCallback.h subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CopySources.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/DiffOptions.h subversion/bindings/javahl/native/DiffSummaryReceiver.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/ImportFilterCallback.h subversion/bindings/javahl/native/InfoCallback.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/ListCallback.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/PatchCallback.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/PropertyTable.h subversion/bindings/javahl/native/ProplistCallback.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/bindings/javahl/native/StatusCallback.h subversion/bindings/javahl/native/StringArray.h subversion/bindings/javahl/native/Targets.h subversion/bindings/javahl/native/VersionExtended.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SVNClient.cpp subversion/bindings/javahl/native/SVNRepos.lo: subversion/bindings/javahl/native/SVNRepos.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/File.h subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/MessageReceiver.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposFreezeAction.h subversion/bindings/javahl/native/ReposNotifyCallback.h subversion/bindings/javahl/native/ReposVerifyCallback.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNRepos.h subversion/bindings/javahl/native/StringArray.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SVNRepos.cpp subversion/bindings/javahl/native/StateReporter.lo: subversion/bindings/javahl/native/StateReporter.cpp subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/StateReporter.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/StateReporter.cpp subversion/bindings/javahl/native/StatusCallback.lo: subversion/bindings/javahl/native/StatusCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/StatusCallback.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/StatusCallback.cpp subversion/bindings/javahl/native/StringArray.lo: subversion/bindings/javahl/native/StringArray.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/StringArray.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/StringArray.cpp subversion/bindings/javahl/native/SubversionException.lo: subversion/bindings/javahl/native/SubversionException.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SubversionException.cpp subversion/bindings/javahl/native/Targets.lo: subversion/bindings/javahl/native/Targets.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/StringArray.h subversion/bindings/javahl/native/Targets.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Targets.cpp subversion/bindings/javahl/native/Utility.lo: subversion/bindings/javahl/native/Utility.cpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Utility.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Utility.cpp subversion/bindings/javahl/native/VersionExtended.lo: subversion/bindings/javahl/native/VersionExtended.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/VersionExtended.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/VersionExtended.cpp subversion/bindings/javahl/native/deprecated.lo: subversion/bindings/javahl/native/deprecated.cpp subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/deprecated.cpp subversion/bindings/javahl/native/jniwrapper/jni_base.lo: subversion/bindings/javahl/native/jniwrapper/jni_base.cpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_base.cpp subversion/bindings/javahl/native/jniwrapper/jni_channel.lo: subversion/bindings/javahl/native/jniwrapper/jni_channel.cpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_channel.cpp subversion/bindings/javahl/native/jniwrapper/jni_class_cache.lo: subversion/bindings/javahl/native/jniwrapper/jni_class_cache.cpp subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/Credential.hpp subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EditorCallbacks.hpp subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_class_cache.cpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.lo: subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.lo: subversion/bindings/javahl/native/jniwrapper/jni_iterator.cpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_iterator.cpp subversion/bindings/javahl/native/jniwrapper/jni_list.lo: subversion/bindings/javahl/native/jniwrapper/jni_list.cpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_list.cpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.lo: subversion/bindings/javahl/native/jniwrapper/jni_string_map.cpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_string_map.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeResources.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/BlameCallback.h subversion/bindings/javahl/native/ChangelistCallback.h subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CopySources.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/DiffOptions.h subversion/bindings/javahl/native/DiffSummaryReceiver.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ImportFilterCallback.h subversion/bindings/javahl/native/InfoCallback.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/ListCallback.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/PatchCallback.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/PropertyTable.h subversion/bindings/javahl/native/ProplistCallback.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/bindings/javahl/native/StatusCallback.h subversion/bindings/javahl/native/StringArray.h subversion/bindings/javahl/native/Targets.h subversion/bindings/javahl/native/VersionExtended.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/version.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/File.h subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/MessageReceiver.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposFreezeAction.h subversion/bindings/javahl/native/ReposNotifyCallback.h subversion/bindings/javahl/native/ReposVerifyCallback.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNRepos.h subversion/bindings/javahl/native/StringArray.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_CommitEditor.h subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitEditor.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteFactory.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteSession.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_StateReporter.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/StateReporter.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RevisionRangeList.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/RevisionRangeList.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RuntimeVersion.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_wc.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Version.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLibIterator.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLibIterator.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/VersionExtended.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigImpl_Category.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigLib.h subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/Credential.hpp subversion/bindings/javahl/native/GlobalConfig.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_x509.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_DiffLib.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_PropLib.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_SubstLib.h subversion/bindings/javahl/native/CxxCompat.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/NativeStream.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/Utility.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.cpp subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_RequestChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ResponseChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_TunnelChannel.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.cpp subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.lo: subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl__pre_perl.h subversion/bindings/swig/proxy/swig_perl_external_runtime.swg subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_SWIG_PL) $(canonicalized_srcdir)subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c subversion/bindings/swig/perl/native/core.lo: subversion/bindings/swig/perl/native/core.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/core.c subversion/bindings/swig/perl/native/svn_client.lo: subversion/bindings/swig/perl/native/svn_client.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_client.c subversion/bindings/swig/perl/native/svn_delta.lo: subversion/bindings/swig/perl/native/svn_delta.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_delta.c subversion/bindings/swig/perl/native/svn_diff.lo: subversion/bindings/swig/perl/native/svn_diff.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_diff.c subversion/bindings/swig/perl/native/svn_fs.lo: subversion/bindings/swig/perl/native/svn_fs.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_fs.c subversion/bindings/swig/perl/native/svn_ra.lo: subversion/bindings/swig/perl/native/svn_ra.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_ra.c subversion/bindings/swig/perl/native/svn_repos.lo: subversion/bindings/swig/perl/native/svn_repos.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_repos.c subversion/bindings/swig/perl/native/svn_wc.lo: subversion/bindings/swig/perl/native/svn_wc.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_wc.c subversion/bindings/swig/python/core.lo: subversion/bindings/swig/python/core.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/core.c subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.lo: subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c subversion/bindings/swig/proxy/swig_python_external_runtime.swg subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_SWIG_PY) $(canonicalized_srcdir)subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c subversion/bindings/swig/python/svn_client.lo: subversion/bindings/swig/python/svn_client.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_client.c subversion/bindings/swig/python/svn_delta.lo: subversion/bindings/swig/python/svn_delta.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_delta.c subversion/bindings/swig/python/svn_diff.lo: subversion/bindings/swig/python/svn_diff.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_diff.c subversion/bindings/swig/python/svn_fs.lo: subversion/bindings/swig/python/svn_fs.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_fs.c subversion/bindings/swig/python/svn_ra.lo: subversion/bindings/swig/python/svn_ra.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_ra.c subversion/bindings/swig/python/svn_repos.lo: subversion/bindings/swig/python/svn_repos.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_repos.c subversion/bindings/swig/python/svn_wc.lo: subversion/bindings/swig/python/svn_wc.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_wc.c subversion/bindings/swig/ruby/core.lo: subversion/bindings/swig/ruby/core.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/core.c subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.lo: subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c subversion/bindings/swig/proxy/swig_ruby_external_runtime.swg subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_nls.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_SWIG_RB) $(canonicalized_srcdir)subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c subversion/bindings/swig/ruby/svn_client.lo: subversion/bindings/swig/ruby/svn_client.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_client.c subversion/bindings/swig/ruby/svn_delta.lo: subversion/bindings/swig/ruby/svn_delta.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_delta.c subversion/bindings/swig/ruby/svn_diff.lo: subversion/bindings/swig/ruby/svn_diff.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_diff.c subversion/bindings/swig/ruby/svn_fs.lo: subversion/bindings/swig/ruby/svn_fs.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_fs.c subversion/bindings/swig/ruby/svn_ra.lo: subversion/bindings/swig/ruby/svn_ra.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_ra.c subversion/bindings/swig/ruby/svn_repos.lo: subversion/bindings/swig/ruby/svn_repos.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_wc.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_repos.c subversion/bindings/swig/ruby/svn_wc.lo: subversion/bindings/swig/ruby/svn_wc.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py3c.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_wc.c subversion/libsvn_auth_gnome_keyring/gnome_keyring.lo: subversion/libsvn_auth_gnome_keyring/gnome_keyring.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/svn_private_config.h $(COMPILE_SHARED_ONLY_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_gnome_keyring/gnome_keyring.c subversion/libsvn_auth_gnome_keyring/version.lo: subversion/libsvn_auth_gnome_keyring/version.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h $(COMPILE_SHARED_ONLY_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_gnome_keyring/version.c subversion/libsvn_auth_kwallet/kwallet.lo: subversion/libsvn_auth_kwallet/kwallet.cpp subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/svn_private_config.h $(COMPILE_SHARED_ONLY_CXX_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_kwallet/kwallet.cpp subversion/libsvn_auth_kwallet/version.lo: subversion/libsvn_auth_kwallet/version.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h $(COMPILE_SHARED_ONLY_CXX_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_kwallet/version.c subversion/libsvn_client/add.lo: subversion/libsvn_client/add.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/blame.lo: subversion/libsvn_client/blame.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/cat.lo: subversion/libsvn_client/cat.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/changelist.lo: subversion/libsvn_client/changelist.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/checkout.lo: subversion/libsvn_client/checkout.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/cleanup.lo: subversion/libsvn_client/cleanup.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/cmdline.lo: subversion/libsvn_client/cmdline.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/commit.lo: subversion/libsvn_client/commit.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/commit_util.lo: subversion/libsvn_client/commit_util.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/compat_providers.lo: subversion/libsvn_client/compat_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/conflicts.lo: subversion/libsvn_client/conflicts.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/copy.lo: subversion/libsvn_client/copy.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h subversion/libsvn_client/ctx.lo: subversion/libsvn_client/ctx.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/delete.lo: subversion/libsvn_client/delete.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/deprecated.lo: subversion/libsvn_client/deprecated.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h subversion/libsvn_client/diff.lo: subversion/libsvn_client/diff.c subversion/include/private/svn_client_private.h subversion/include/private/svn_client_shelf.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_io_private.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/diff_local.lo: subversion/libsvn_client/diff_local.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/diff_summarize.lo: subversion/libsvn_client/diff_summarize.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/export.lo: subversion/libsvn_client/export.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/externals.lo: subversion/libsvn_client/externals.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/import.lo: subversion/libsvn_client/import.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/info.lo: subversion/libsvn_client/info.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/iprops.lo: subversion/libsvn_client/iprops.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/layout.lo: subversion/libsvn_client/layout.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/list.lo: subversion/libsvn_client/list.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/locking_commands.lo: subversion/libsvn_client/locking_commands.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/log.lo: subversion/libsvn_client/log.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/merge.lo: subversion/libsvn_client/merge.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h subversion/libsvn_client/merge_elements.lo: subversion/libsvn_client/merge_elements.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_magic.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/mergeinfo.lo: subversion/libsvn_client/mergeinfo.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h subversion/libsvn_client/mtcc.lo: subversion/libsvn_client/mtcc.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/patch.lo: subversion/libsvn_client/patch.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/prop_commands.lo: subversion/libsvn_client/prop_commands.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/ra.lo: subversion/libsvn_client/ra.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h subversion/libsvn_client/relocate.lo: subversion/libsvn_client/relocate.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/repos_diff.lo: subversion/libsvn_client/repos_diff.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/resolved.lo: subversion/libsvn_client/resolved.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/revert.lo: subversion/libsvn_client/revert.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/revisions.lo: subversion/libsvn_client/revisions.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/shelf.lo: subversion/libsvn_client/shelf.c subversion/include/private/svn_client_private.h subversion/include/private/svn_client_shelf.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/shelf2.lo: subversion/libsvn_client/shelf2.c subversion/include/private/svn_client_private.h subversion/include/private/svn_client_shelf2.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/status.lo: subversion/libsvn_client/status.c subversion/include/private/svn_client_private.h subversion/include/private/svn_client_shelf.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/switch.lo: subversion/libsvn_client/switch.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/update.lo: subversion/libsvn_client/update.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/upgrade.lo: subversion/libsvn_client/upgrade.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/url.lo: subversion/libsvn_client/url.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/util.lo: subversion/libsvn_client/util.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_client/version.lo: subversion/libsvn_client/version.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_client/wc_editor.lo: subversion/libsvn_client/wc_editor.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h subversion/libsvn_delta/branch.lo: subversion/libsvn_delta/branch.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_impl.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/branch_compat.lo: subversion/libsvn_delta/branch_compat.c 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_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/branch_migrate.lo: subversion/libsvn_delta/branch_migrate.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/branch_nested.lo: subversion/libsvn_delta/branch_nested.c subversion/include/private/svn_branch.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_debug.h subversion/include/private/svn_element.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/branch_repos.lo: subversion/libsvn_delta/branch_repos.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/cancel.lo: subversion/libsvn_delta/cancel.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/compat.lo: subversion/libsvn_delta/compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/compose_delta.lo: subversion/libsvn_delta/compose_delta.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/libsvn_delta/debug_editor.lo: subversion/libsvn_delta/debug_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/default_editor.lo: subversion/libsvn_delta/default_editor.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/deprecated.lo: subversion/libsvn_delta/deprecated.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/depth_filter_editor.lo: subversion/libsvn_delta/depth_filter_editor.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/editor.lo: subversion/libsvn_delta/editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/element.lo: subversion/libsvn_delta/element.c subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/private/svn_sorts_private.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_iter.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_delta/path_driver.lo: subversion/libsvn_delta/path_driver.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/svndiff.lo: subversion/libsvn_delta/svndiff.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_error_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/svn_private_config.h subversion/libsvn_delta/text_delta.lo: subversion/libsvn_delta/text_delta.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/libsvn_delta/version.lo: subversion/libsvn_delta/version.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_delta/xdelta.lo: subversion/libsvn_delta/xdelta.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/libsvn_diff/binary_diff.lo: subversion/libsvn_diff/binary_diff.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h subversion/libsvn_diff/deprecated.lo: subversion/libsvn_diff/deprecated.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/libsvn_diff/diff.lo: subversion/libsvn_diff/diff.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_diff/diff.h subversion/libsvn_diff/diff3.lo: subversion/libsvn_diff/diff3.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_diff/diff.h subversion/libsvn_diff/diff4.lo: subversion/libsvn_diff/diff4.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_diff/diff.h subversion/libsvn_diff/diff_file.lo: subversion/libsvn_diff/diff_file.c subversion/include/private/svn_adler32.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h subversion/libsvn_diff/diff_memory.lo: subversion/libsvn_diff/diff_memory.c subversion/include/private/svn_adler32.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h subversion/libsvn_diff/diff_tree.lo: subversion/libsvn_diff/diff_tree.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_diff/lcs.lo: subversion/libsvn_diff/lcs.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_diff/diff.h subversion/libsvn_diff/parse-diff.lo: subversion/libsvn_diff/parse-diff.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h subversion/libsvn_diff/token.lo: subversion/libsvn_diff/token.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_diff/diff.h subversion/libsvn_diff/util.lo: subversion/libsvn_diff/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h subversion/libsvn_fs/access.lo: subversion/libsvn_fs/access.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs/deprecated.lo: subversion/libsvn_fs/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/editor.lo: subversion/libsvn_fs/editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs/fs-loader.lo: subversion/libsvn_fs/fs-loader.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/bdb-err.lo: subversion/libsvn_fs_base/bdb/bdb-err.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/bdb_compat.lo: subversion/libsvn_fs_base/bdb/bdb_compat.c subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/changes-table.lo: subversion/libsvn_fs_base/bdb/changes-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/checksum-reps-table.lo: subversion/libsvn_fs_base/bdb/checksum-reps-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/checksum-reps-table.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/copies-table.lo: subversion/libsvn_fs_base/bdb/copies-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/dbt.lo: subversion/libsvn_fs_base/bdb/dbt.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/id.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/env.lo: subversion/libsvn_fs_base/bdb/env.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/lock-tokens-table.lo: subversion/libsvn_fs_base/bdb/lock-tokens-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/locks-table.lo: subversion/libsvn_fs_base/bdb/locks-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/miscellaneous-table.lo: subversion/libsvn_fs_base/bdb/miscellaneous-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/miscellaneous-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/node-origins-table.lo: subversion/libsvn_fs_base/bdb/node-origins-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/nodes-table.lo: subversion/libsvn_fs_base/bdb/nodes-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/reps-table.lo: subversion/libsvn_fs_base/bdb/reps-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/rev-table.lo: subversion/libsvn_fs_base/bdb/rev-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/strings-table.lo: subversion/libsvn_fs_base/bdb/strings-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/txn-table.lo: subversion/libsvn_fs_base/bdb/txn-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/bdb/uuids-table.lo: subversion/libsvn_fs_base/bdb/uuids-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/uuids-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/dag.lo: subversion/libsvn_fs_base/dag.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/checksum-reps-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/node-rev.h subversion/libsvn_fs_base/reps-strings.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/err.lo: subversion/libsvn_fs_base/err.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/fs.lo: subversion/libsvn_fs_base/fs.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/checksum-reps-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/bdb/miscellaneous-table.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/bdb/uuids-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/lock.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_base/uuid.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/id.lo: subversion/libsvn_fs_base/id.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_base/key-gen.lo: subversion/libsvn_fs_base/key-gen.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/lock.lo: subversion/libsvn_fs_base/lock.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/lock.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/node-rev.lo: subversion/libsvn_fs_base/node-rev.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/node-rev.h subversion/libsvn_fs_base/reps-strings.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/reps-strings.lo: subversion/libsvn_fs_base/reps-strings.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/reps-strings.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/revs-txns.lo: subversion/libsvn_fs_base/revs-txns.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/trail.lo: subversion/libsvn_fs_base/trail.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/tree.lo: subversion/libsvn_fs_base/tree.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/miscellaneous-table.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/lock.h subversion/libsvn_fs_base/node-rev.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_base/util/fs_skels.lo: subversion/libsvn_fs_base/util/fs_skels.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/util/fs_skels.h subversion/svn_private_config.h subversion/libsvn_fs_base/uuid.lo: subversion/libsvn_fs_base/uuid.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/uuids-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/uuid.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/cached_data.lo: subversion/libsvn_fs_fs/cached_data.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/caching.lo: subversion/libsvn_fs_fs/caching.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/dag.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/dag.lo: subversion/libsvn_fs_fs/dag.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/dag.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/dump-index.lo: subversion/libsvn_fs_fs/dump-index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_fs/fs.lo: subversion/libsvn_fs_fs/fs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/hotcopy.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/recovery.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_fs/verify.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/fs_fs.lo: subversion/libsvn_fs_fs/fs_fs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/hotcopy.lo: subversion/libsvn_fs_fs/hotcopy.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/hotcopy.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/recovery.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/id.lo: subversion/libsvn_fs_fs/id.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_fs/index.lo: subversion/libsvn_fs_fs/index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/load-index.lo: subversion/libsvn_fs_fs/load-index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_fs/lock.lo: subversion/libsvn_fs_fs/lock.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/low_level.lo: subversion/libsvn_fs_fs/low_level.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/pack.lo: subversion/libsvn_fs_fs/pack.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/recovery.lo: subversion/libsvn_fs_fs/recovery.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/recovery.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/rep-cache.lo: subversion/libsvn_fs_fs/rep-cache.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rep-cache-db.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/rev_file.lo: subversion/libsvn_fs_fs/rev_file.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/revprops.lo: subversion/libsvn_fs_fs/revprops.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/stats.lo: subversion/libsvn_fs_fs/stats.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/temp_serializer.lo: subversion/libsvn_fs_fs/temp_serializer.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.lo: subversion/libsvn_fs_fs/transaction.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/tree.lo: subversion/libsvn_fs_fs/tree.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/dag.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/util.lo: subversion/libsvn_fs_fs/util.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_fs/verify.lo: subversion/libsvn_fs_fs/verify.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_fs/verify.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_util/fs-util.lo: subversion/libsvn_fs_util/fs-util.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/libsvn_fs_x/batch_fsync.lo: subversion/libsvn_fs_x/batch_fsync.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/batch_fsync.h subversion/svn_private_config.h subversion/libsvn_fs_x/cached_data.lo: subversion/libsvn_fs_x/cached_data.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/caching.lo: subversion/libsvn_fs_x/caching.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/svn_private_config.h subversion/libsvn_fs_x/changes.lo: subversion/libsvn_fs_x/changes.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/string_table.h subversion/libsvn_fs_x/temp_serializer.h subversion/svn_private_config.h subversion/libsvn_fs_x/dag.lo: subversion/libsvn_fs_x/dag.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/svn_private_config.h subversion/libsvn_fs_x/dag_cache.lo: subversion/libsvn_fs_x/dag_cache.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/fs.lo: subversion/libsvn_fs_x/fs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/hotcopy.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/recovery.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/libsvn_fs_x/verify.h subversion/svn_private_config.h subversion/libsvn_fs_x/fs_id.lo: subversion/libsvn_fs_x/fs_id.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/fs_x.lo: subversion/libsvn_fs_x/fs_x.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/hotcopy.lo: subversion/libsvn_fs_x/hotcopy.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/hotcopy.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/recovery.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/id.lo: subversion/libsvn_fs_x/id.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/libsvn_fs_x/index.lo: subversion/libsvn_fs_x/index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/lock.lo: subversion/libsvn_fs_x/lock.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/low_level.lo: subversion/libsvn_fs_x/low_level.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/noderevs.lo: subversion/libsvn_fs_x/noderevs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/string_table.h subversion/libsvn_fs_x/temp_serializer.h subversion/svn_private_config.h subversion/libsvn_fs_x/pack.lo: subversion/libsvn_fs_x/pack.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/recovery.lo: subversion/libsvn_fs_x/recovery.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/recovery.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/rep-cache.lo: subversion/libsvn_fs_x/rep-cache.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/rep-cache-db.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/reps.lo: subversion/libsvn_fs_x/reps.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/svn_private_config.h subversion/libsvn_fs_x/rev_file.lo: subversion/libsvn_fs_x/rev_file.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/revprops.lo: subversion/libsvn_fs_x/revprops.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/string_table.lo: subversion/libsvn_fs_x/string_table.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/string_table.h subversion/libsvn_fs_x/temp_serializer.lo: subversion/libsvn_fs_x/temp_serializer.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.lo: subversion/libsvn_fs_x/transaction.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/tree.lo: subversion/libsvn_fs_x/tree.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/util.lo: subversion/libsvn_fs_x/util.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h subversion/libsvn_fs_x/verify.lo: subversion/libsvn_fs_x/verify.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/util.h subversion/libsvn_fs_x/verify.h subversion/svn_private_config.h subversion/libsvn_ra/compat.lo: subversion/libsvn_ra/compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h subversion/libsvn_ra/debug_reporter.lo: subversion/libsvn_ra/debug_reporter.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra/debug_reporter.h subversion/libsvn_ra/deprecated.lo: subversion/libsvn_ra/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra/deprecated.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h subversion/libsvn_ra/editor.lo: subversion/libsvn_ra/editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h subversion/libsvn_ra/ra_loader.lo: subversion/libsvn_ra/ra_loader.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/deprecated.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h subversion/libsvn_ra/util.lo: subversion/libsvn_ra/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_ra_local/ra_plugin.lo: subversion/libsvn_ra_local/ra_plugin.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra/wrapper_template.h subversion/libsvn_ra_local/ra_local.h subversion/svn_private_config.h subversion/libsvn_ra_local/split_url.lo: subversion/libsvn_ra_local/split_url.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_local/ra_local.h subversion/svn_private_config.h subversion/libsvn_ra_serf/blame.lo: subversion/libsvn_ra_serf/blame.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/blncache.lo: subversion/libsvn_ra_serf/blncache.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/commit.lo: subversion/libsvn_ra_serf/commit.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/eagain_bucket.lo: subversion/libsvn_ra_serf/eagain_bucket.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/get_deleted_rev.lo: subversion/libsvn_ra_serf/get_deleted_rev.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/get_file.lo: subversion/libsvn_ra_serf/get_file.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/get_lock.lo: subversion/libsvn_ra_serf/get_lock.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/getdate.lo: subversion/libsvn_ra_serf/getdate.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/getlocations.lo: subversion/libsvn_ra_serf/getlocations.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/getlocationsegments.lo: subversion/libsvn_ra_serf/getlocationsegments.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/getlocks.lo: subversion/libsvn_ra_serf/getlocks.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/inherited_props.lo: subversion/libsvn_ra_serf/inherited_props.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/list.lo: subversion/libsvn_ra_serf/list.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/lock.lo: subversion/libsvn_ra_serf/lock.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/log.lo: subversion/libsvn_ra_serf/log.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/merge.lo: subversion/libsvn_ra_serf/merge.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/mergeinfo.lo: subversion/libsvn_ra_serf/mergeinfo.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/multistatus.lo: subversion/libsvn_ra_serf/multistatus.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/options.lo: subversion/libsvn_ra_serf/options.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/property.lo: subversion/libsvn_ra_serf/property.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/replay.lo: subversion/libsvn_ra_serf/replay.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/request_body.lo: subversion/libsvn_ra_serf/request_body.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/libsvn_ra_serf/sb_bucket.lo: subversion/libsvn_ra_serf/sb_bucket.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/serf.lo: subversion/libsvn_ra_serf/serf.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra/wrapper_template.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/stat.lo: subversion/libsvn_ra_serf/stat.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/stream_bucket.lo: subversion/libsvn_ra_serf/stream_bucket.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/libsvn_ra_serf/update.lo: subversion/libsvn_ra_serf/update.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/util.lo: subversion/libsvn_ra_serf/util.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_cert.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_serf/util_error.lo: subversion/libsvn_ra_serf/util_error.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_error_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/libsvn_ra_serf/xml.lo: subversion/libsvn_ra_serf/xml.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h subversion/libsvn_ra_svn/client.lo: subversion/libsvn_ra_svn/client.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra/wrapper_template.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/cram.lo: subversion/libsvn_ra_svn/cram.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/cyrus_auth.lo: subversion/libsvn_ra_svn/cyrus_auth.c subversion/include/private/ra_svn_sasl.h subversion/include/private/ra_svn_wrapped_sasl.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/deprecated.lo: subversion/libsvn_ra_svn/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/editorp.lo: subversion/libsvn_ra_svn/editorp.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/internal_auth.lo: subversion/libsvn_ra_svn/internal_auth.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/marshal.lo: subversion/libsvn_ra_svn/marshal.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_error_private.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/streams.lo: subversion/libsvn_ra_svn/streams.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_io_private.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h subversion/libsvn_ra_svn/version.lo: subversion/libsvn_ra_svn/version.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_ra_svn/wrapped_sasl.lo: subversion/libsvn_ra_svn/wrapped_sasl.c subversion/include/private/ra_svn_wrapped_sasl.h subversion/svn_private_config.h subversion/libsvn_repos/authz.lo: subversion/libsvn_repos/authz.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/authz.h subversion/libsvn_repos/config_file.h subversion/libsvn_repos/repos.h subversion/libsvn_repos/authz_info.lo: subversion/libsvn_repos/authz_info.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/authz.h subversion/svn_private_config.h subversion/libsvn_repos/authz_parse.lo: subversion/libsvn_repos/authz_parse.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/authz.h subversion/svn_private_config.h subversion/libsvn_repos/commit.lo: subversion/libsvn_repos/commit.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/compat.lo: subversion/libsvn_repos/compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/config_file.lo: subversion/libsvn_repos/config_file.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/config_file.h subversion/svn_private_config.h subversion/libsvn_repos/config_pool.lo: subversion/libsvn_repos/config_pool.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/config_file.h subversion/svn_private_config.h subversion/libsvn_repos/delta.lo: subversion/libsvn_repos/delta.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/deprecated.lo: subversion/libsvn_repos/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/dump.lo: subversion/libsvn_repos/dump.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_repos/dump_editor.lo: subversion/libsvn_repos/dump_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/fs-wrap.lo: subversion/libsvn_repos/fs-wrap.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/hooks.lo: subversion/libsvn_repos/hooks.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/list.lo: subversion/libsvn_repos/list.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/load-fs-vtable.lo: subversion/libsvn_repos/load-fs-vtable.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/load.lo: subversion/libsvn_repos/load.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/log.lo: subversion/libsvn_repos/log.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/node_tree.lo: subversion/libsvn_repos/node_tree.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/notify.lo: subversion/libsvn_repos/notify.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/replay.lo: subversion/libsvn_repos/replay.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_repos/reporter.lo: subversion/libsvn_repos/reporter.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_fspath.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/repos.lo: subversion/libsvn_repos/repos.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_repos/rev_hunt.lo: subversion/libsvn_repos/rev_hunt.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h subversion/libsvn_subr/adler32.lo: subversion/libsvn_subr/adler32.c subversion/include/private/svn_adler32.h +subversion/libsvn_subr/apr_escape.lo: subversion/libsvn_subr/apr_escape.c subversion/include/private/svn_dep_compat.h + subversion/libsvn_subr/atomic.lo: subversion/libsvn_subr/atomic.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/auth.lo: subversion/libsvn_subr/auth.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h subversion/libsvn_subr/base64.lo: subversion/libsvn_subr/base64.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/bit_array.lo: subversion/libsvn_subr/bit_array.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/cache-inprocess.lo: subversion/libsvn_subr/cache-inprocess.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/cache.h subversion/svn_private_config.h subversion/libsvn_subr/cache-membuffer.lo: subversion/libsvn_subr/cache-membuffer.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/cache.h subversion/libsvn_subr/fnv1a.h subversion/svn_private_config.h subversion/libsvn_subr/cache-memcache.lo: subversion/libsvn_subr/cache-memcache.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/cache.h subversion/svn_private_config.h subversion/libsvn_subr/cache-null.lo: subversion/libsvn_subr/cache-null.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/cache.h subversion/svn_private_config.h subversion/libsvn_subr/cache.lo: subversion/libsvn_subr/cache.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/cache.h subversion/libsvn_subr/cache_config.lo: subversion/libsvn_subr/cache_config.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/checksum.lo: subversion/libsvn_subr/checksum.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/checksum.h subversion/libsvn_subr/fnv1a.h subversion/svn_private_config.h -subversion/libsvn_subr/cmdline.lo: subversion/libsvn_subr/cmdline.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_nls.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_xml.h subversion/libsvn_subr/win32_crashrpt.h subversion/svn_private_config.h +subversion/libsvn_subr/cmdline.lo: subversion/libsvn_subr/cmdline.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_nls.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_xml.h subversion/libsvn_subr/win32_crashrpt.h subversion/svn_private_config.h subversion/libsvn_subr/compat.lo: subversion/libsvn_subr/compat.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/compress_lz4.lo: subversion/libsvn_subr/compress_lz4.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/lz4/lz4internal.h subversion/svn_private_config.h subversion/libsvn_subr/compress_zlib.lo: subversion/libsvn_subr/compress_zlib.c subversion/include/private/svn_debug.h subversion/include/private/svn_error_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/config.lo: subversion/libsvn_subr/config.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h subversion/libsvn_subr/config_auth.lo: subversion/libsvn_subr/config_auth.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/auth.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h subversion/libsvn_subr/config_file.lo: subversion/libsvn_subr/config_file.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h subversion/libsvn_subr/config_win.lo: subversion/libsvn_subr/config_win.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h subversion/libsvn_subr/crypto.lo: subversion/libsvn_subr/crypto.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/crypto.h subversion/svn_private_config.h subversion/libsvn_subr/ctype.lo: subversion/libsvn_subr/ctype.c subversion/include/svn_ctype.h subversion/libsvn_subr/date.lo: subversion/libsvn_subr/date.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/debug.lo: subversion/libsvn_subr/debug.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/deprecated.lo: subversion/libsvn_subr/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_subr/auth.h subversion/libsvn_subr/opt.h subversion/svn_private_config.h subversion/libsvn_subr/dirent_uri.lo: subversion/libsvn_subr/dirent_uri.c subversion/include/private/svn_cert.h subversion/include/private/svn_debug.h subversion/include/private/svn_dirent_uri_private.h subversion/include/private/svn_fspath.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/dirent_uri.h subversion/svn_private_config.h subversion/libsvn_subr/dso.lo: subversion/libsvn_subr/dso.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/encode.lo: subversion/libsvn_subr/encode.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/eol.lo: subversion/libsvn_subr/eol.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_eol_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/error.lo: subversion/libsvn_subr/error.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_error_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_subr/pools.h subversion/svn_private_config.h subversion/libsvn_subr/fnv1a.lo: subversion/libsvn_subr/fnv1a.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/fnv1a.h subversion/libsvn_subr/gpg_agent.lo: subversion/libsvn_subr/gpg_agent.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h subversion/libsvn_subr/hash.lo: subversion/libsvn_subr/hash.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/io.lo: subversion/libsvn_subr/io.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_io_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/libsvn_subr/iter.lo: subversion/libsvn_subr/iter.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/lock.lo: subversion/libsvn_subr/lock.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/log.lo: subversion/libsvn_subr/log.c subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/lz4/lz4.lo: subversion/libsvn_subr/lz4/lz4.c subversion/libsvn_subr/lz4/lz4internal.h subversion/svn_private_config.h subversion/libsvn_subr/macos_keychain.lo: subversion/libsvn_subr/macos_keychain.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h subversion/libsvn_subr/magic.lo: subversion/libsvn_subr/magic.c subversion/include/private/svn_debug.h subversion/include/private/svn_magic.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/md5.lo: subversion/libsvn_subr/md5.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_md5.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/checksum.h subversion/libsvn_subr/mergeinfo.lo: subversion/libsvn_subr/mergeinfo.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/mutex.lo: subversion/libsvn_subr/mutex.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/nls.lo: subversion/libsvn_subr/nls.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_nls.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/object_pool.lo: subversion/libsvn_subr/object_pool.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/opt.lo: subversion/libsvn_subr/opt.c subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_subr/opt.h subversion/svn_private_config.h subversion/libsvn_subr/packed_data.lo: subversion/libsvn_subr/packed_data.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/path.lo: subversion/libsvn_subr/path.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_subr/dirent_uri.h subversion/svn_private_config.h subversion/libsvn_subr/pool.lo: subversion/libsvn_subr/pool.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/pools.h subversion/libsvn_subr/prefix_string.lo: subversion/libsvn_subr/prefix_string.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/prompt.lo: subversion/libsvn_subr/prompt.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/properties.lo: subversion/libsvn_subr/properties.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/quoprint.lo: subversion/libsvn_subr/quoprint.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_quoprint.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/root_pools.lo: subversion/libsvn_subr/root_pools.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/simple_providers.lo: subversion/libsvn_subr/simple_providers.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h subversion/libsvn_subr/skel.lo: subversion/libsvn_subr/skel.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/private/svn_string_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/sorts.lo: subversion/libsvn_subr/sorts.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/spillbuf.lo: subversion/libsvn_subr/spillbuf.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/sqlite.lo: subversion/libsvn_subr/sqlite.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/internal_statements.h subversion/svn_private_config.h subversion/libsvn_subr/sqlite3wrapper.lo: subversion/libsvn_subr/sqlite3wrapper.c subversion/svn_private_config.h subversion/libsvn_subr/ssl_client_cert_providers.lo: subversion/libsvn_subr/ssl_client_cert_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/ssl_client_cert_pw_providers.lo: subversion/libsvn_subr/ssl_client_cert_pw_providers.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/ssl_server_trust_providers.lo: subversion/libsvn_subr/ssl_server_trust_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/stream.lo: subversion/libsvn_subr/stream.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_error_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/libsvn_subr/string.lo: subversion/libsvn_subr/string.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/subst.lo: subversion/libsvn_subr/subst.c subversion/include/private/svn_debug.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/libsvn_subr/sysinfo.lo: subversion/libsvn_subr/sysinfo.c subversion/include/private/svn_debug.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_subr/sysinfo.h subversion/svn_private_config.h subversion/libsvn_subr/target.lo: subversion/libsvn_subr/target.c subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/temp_serializer.lo: subversion/libsvn_subr/temp_serializer.c subversion/include/private/svn_debug.h subversion/include/private/svn_temp_serializer.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/time.lo: subversion/libsvn_subr/time.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/libsvn_subr/token.lo: subversion/libsvn_subr/token.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/types.lo: subversion/libsvn_subr/types.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/user.lo: subversion/libsvn_subr/user.c subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/username_providers.lo: subversion/libsvn_subr/username_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/utf.lo: subversion/libsvn_subr/utf.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_subr/win32_xlate.h subversion/svn_private_config.h subversion/libsvn_subr/utf8proc.lo: subversion/libsvn_subr/utf8proc.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/utf8proc/utf8proc.c subversion/libsvn_subr/utf8proc/utf8proc_data.c subversion/libsvn_subr/utf8proc/utf8proc_internal.h subversion/svn_private_config.h subversion/libsvn_subr/utf_validate.lo: subversion/libsvn_subr/utf_validate.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/utf_width.lo: subversion/libsvn_subr/utf_width.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/libsvn_subr/validate.lo: subversion/libsvn_subr/validate.c subversion/include/private/svn_debug.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/libsvn_subr/version.lo: subversion/libsvn_subr/version.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_subr/sysinfo.h subversion/svn_private_config.h subversion/libsvn_subr/win32_crashrpt.lo: subversion/libsvn_subr/win32_crashrpt.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_subr/sysinfo.h subversion/libsvn_subr/win32_crashrpt.h subversion/libsvn_subr/win32_crashrpt_dll.h subversion/libsvn_subr/win32_crypto.lo: subversion/libsvn_subr/win32_crypto.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h subversion/libsvn_subr/win32_xlate.lo: subversion/libsvn_subr/win32_xlate.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/libsvn_subr/win32_xlate.h subversion/svn_private_config.h subversion/libsvn_subr/x509info.lo: subversion/libsvn_subr/x509info.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_x509.h subversion/libsvn_subr/x509.h subversion/libsvn_subr/x509parse.lo: subversion/libsvn_subr/x509parse.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_x509.h subversion/libsvn_subr/x509.h subversion/libsvn_subr/xml.lo: subversion/libsvn_subr/xml.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/libsvn_wc/adm_crawler.lo: subversion/libsvn_wc/adm_crawler.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/adm_files.lo: subversion/libsvn_wc/adm_files.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/adm_ops.lo: subversion/libsvn_wc/adm_ops.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/ambient_depth_filter_editor.lo: subversion/libsvn_wc/ambient_depth_filter_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/cleanup.lo: subversion/libsvn_wc/cleanup.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/conflicts.lo: subversion/libsvn_wc/conflicts.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/context.lo: subversion/libsvn_wc/context.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/copy.lo: subversion/libsvn_wc/copy.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/crop.lo: subversion/libsvn_wc/crop.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/delete.lo: subversion/libsvn_wc/delete.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/deprecated.lo: subversion/libsvn_wc/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/diff_editor.lo: subversion/libsvn_wc/diff_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/diff.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/diff_local.lo: subversion/libsvn_wc/diff_local.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/diff.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/entries.lo: subversion/libsvn_wc/entries.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/libsvn_wc/externals.lo: subversion/libsvn_wc/externals.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/info.lo: subversion/libsvn_wc/info.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/lock.lo: subversion/libsvn_wc/lock.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/merge.lo: subversion/libsvn_wc/merge.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/node.lo: subversion/libsvn_wc/node.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/old-and-busted.lo: subversion/libsvn_wc/old-and-busted.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/props.lo: subversion/libsvn_wc/props.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/questions.lo: subversion/libsvn_wc/questions.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/relocate.lo: subversion/libsvn_wc/relocate.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/revert.lo: subversion/libsvn_wc/revert.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/revision_status.lo: subversion/libsvn_wc/revision_status.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/status.lo: subversion/libsvn_wc/status.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/translate.lo: subversion/libsvn_wc/translate.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/tree_conflicts.lo: subversion/libsvn_wc/tree_conflicts.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/update_editor.lo: subversion/libsvn_wc/update_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/upgrade.lo: subversion/libsvn_wc/upgrade.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/util.lo: subversion/libsvn_wc/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/wc_db.lo: subversion/libsvn_wc/wc_db.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/wc_db_pristine.lo: subversion/libsvn_wc/wc_db_pristine.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/libsvn_wc/wc_db_update_move.lo: subversion/libsvn_wc/wc_db_update_move.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/libsvn_wc/wc_db_util.lo: subversion/libsvn_wc/wc_db_util.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/libsvn_wc/wc_db_wcroot.lo: subversion/libsvn_wc/wc_db_wcroot.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/libsvn_wc/wcroot_anchor.lo: subversion/libsvn_wc/wcroot_anchor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/libsvn_wc/workqueue.lo: subversion/libsvn_wc/workqueue.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/mod_authz_svn/mod_authz_svn.lo: subversion/mod_authz_svn/mod_authz_svn.c subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_authz_svn/mod_authz_svn.c ; else echo "fake" > subversion/mod_authz_svn/mod_authz_svn.lo ; fi subversion/mod_dav_svn/activity.lo: subversion/mod_dav_svn/activity.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/activity.c ; else echo "fake" > subversion/mod_dav_svn/activity.lo ; fi subversion/mod_dav_svn/authz.lo: subversion/mod_dav_svn/authz.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/authz.c ; else echo "fake" > subversion/mod_dav_svn/authz.lo ; fi subversion/mod_dav_svn/deadprops.lo: subversion/mod_dav_svn/deadprops.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/deadprops.c ; else echo "fake" > subversion/mod_dav_svn/deadprops.lo ; fi subversion/mod_dav_svn/liveprops.lo: subversion/mod_dav_svn/liveprops.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/liveprops.c ; else echo "fake" > subversion/mod_dav_svn/liveprops.lo ; fi subversion/mod_dav_svn/lock.lo: subversion/mod_dav_svn/lock.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/lock.c ; else echo "fake" > subversion/mod_dav_svn/lock.lo ; fi subversion/mod_dav_svn/merge.lo: subversion/mod_dav_svn/merge.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/merge.c ; else echo "fake" > subversion/mod_dav_svn/merge.lo ; fi subversion/mod_dav_svn/mirror.lo: subversion/mod_dav_svn/mirror.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/mirror.c ; else echo "fake" > subversion/mod_dav_svn/mirror.lo ; fi subversion/mod_dav_svn/mod_dav_svn.lo: subversion/mod_dav_svn/mod_dav_svn.c subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/mod_dav_svn.c ; else echo "fake" > subversion/mod_dav_svn/mod_dav_svn.lo ; fi subversion/mod_dav_svn/posts/create_txn.lo: subversion/mod_dav_svn/posts/create_txn.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/posts/create_txn.c ; else echo "fake" > subversion/mod_dav_svn/posts/create_txn.lo ; fi subversion/mod_dav_svn/reports/dated-rev.lo: subversion/mod_dav_svn/reports/dated-rev.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/dated-rev.c ; else echo "fake" > subversion/mod_dav_svn/reports/dated-rev.lo ; fi subversion/mod_dav_svn/reports/deleted-rev.lo: subversion/mod_dav_svn/reports/deleted-rev.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/deleted-rev.c ; else echo "fake" > subversion/mod_dav_svn/reports/deleted-rev.lo ; fi subversion/mod_dav_svn/reports/file-revs.lo: subversion/mod_dav_svn/reports/file-revs.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/file-revs.c ; else echo "fake" > subversion/mod_dav_svn/reports/file-revs.lo ; fi subversion/mod_dav_svn/reports/get-location-segments.lo: subversion/mod_dav_svn/reports/get-location-segments.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/get-location-segments.c ; else echo "fake" > subversion/mod_dav_svn/reports/get-location-segments.lo ; fi subversion/mod_dav_svn/reports/get-locations.lo: subversion/mod_dav_svn/reports/get-locations.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/get-locations.c ; else echo "fake" > subversion/mod_dav_svn/reports/get-locations.lo ; fi subversion/mod_dav_svn/reports/get-locks.lo: subversion/mod_dav_svn/reports/get-locks.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/get-locks.c ; else echo "fake" > subversion/mod_dav_svn/reports/get-locks.lo ; fi subversion/mod_dav_svn/reports/inherited-props.lo: subversion/mod_dav_svn/reports/inherited-props.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/inherited-props.c ; else echo "fake" > subversion/mod_dav_svn/reports/inherited-props.lo ; fi subversion/mod_dav_svn/reports/list.lo: subversion/mod_dav_svn/reports/list.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/list.c ; else echo "fake" > subversion/mod_dav_svn/reports/list.lo ; fi subversion/mod_dav_svn/reports/log.lo: subversion/mod_dav_svn/reports/log.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/log.c ; else echo "fake" > subversion/mod_dav_svn/reports/log.lo ; fi subversion/mod_dav_svn/reports/mergeinfo.lo: subversion/mod_dav_svn/reports/mergeinfo.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/mergeinfo.c ; else echo "fake" > subversion/mod_dav_svn/reports/mergeinfo.lo ; fi subversion/mod_dav_svn/reports/replay.lo: subversion/mod_dav_svn/reports/replay.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/replay.c ; else echo "fake" > subversion/mod_dav_svn/reports/replay.lo ; fi subversion/mod_dav_svn/reports/update.lo: subversion/mod_dav_svn/reports/update.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/update.c ; else echo "fake" > subversion/mod_dav_svn/reports/update.lo ; fi subversion/mod_dav_svn/repos.lo: subversion/mod_dav_svn/repos.c subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/repos.c ; else echo "fake" > subversion/mod_dav_svn/repos.lo ; fi subversion/mod_dav_svn/status.lo: subversion/mod_dav_svn/status.c subversion/include/mod_authz_svn.h subversion/include/private/svn_cache.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h subversion/svn_private_config.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/status.c ; else echo "fake" > subversion/mod_dav_svn/status.lo ; fi subversion/mod_dav_svn/util.lo: subversion/mod_dav_svn/util.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/private/svn_string_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/util.c ; else echo "fake" > subversion/mod_dav_svn/util.lo ; fi subversion/mod_dav_svn/version.lo: subversion/mod_dav_svn/version.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/version.c ; else echo "fake" > subversion/mod_dav_svn/version.lo ; fi subversion/po/de.mo: subversion/po/de.po subversion/po/es.mo: subversion/po/es.po subversion/po/fr.mo: subversion/po/fr.po subversion/po/it.mo: subversion/po/it.po subversion/po/ja.mo: subversion/po/ja.po subversion/po/ko.mo: subversion/po/ko.po subversion/po/nb.mo: subversion/po/nb.po subversion/po/pl.mo: subversion/po/pl.po subversion/po/pt_BR.mo: subversion/po/pt_BR.po subversion/po/sv.mo: subversion/po/sv.po subversion/po/zh_CN.mo: subversion/po/zh_CN.po subversion/po/zh_TW.mo: subversion/po/zh_TW.po subversion/svn/add-cmd.lo: subversion/svn/add-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/auth-cmd.lo: subversion/svn/auth-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_x509.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/blame-cmd.lo: subversion/svn/blame-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/cat-cmd.lo: subversion/svn/cat-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/changelist-cmd.lo: subversion/svn/changelist-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/checkout-cmd.lo: subversion/svn/checkout-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/cl-conflicts.lo: subversion/svn/cl-conflicts.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/cleanup-cmd.lo: subversion/svn/cleanup-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/commit-cmd.lo: subversion/svn/commit-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/conflict-callbacks.lo: subversion/svn/conflict-callbacks.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/copy-cmd.lo: subversion/svn/copy-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/delete-cmd.lo: subversion/svn/delete-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/deprecated.lo: subversion/svn/deprecated.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn/diff-cmd.lo: subversion/svn/diff-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/export-cmd.lo: subversion/svn/export-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/file-merge.lo: subversion/svn/file-merge.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/filesize.lo: subversion/svn/filesize.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn/help-cmd.lo: subversion/svn/help-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/import-cmd.lo: subversion/svn/import-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/info-cmd.lo: subversion/svn/info-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/list-cmd.lo: subversion/svn/list-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/lock-cmd.lo: subversion/svn/lock-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/log-cmd.lo: subversion/svn/log-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-log.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/merge-cmd.lo: subversion/svn/merge-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/mergeinfo-cmd.lo: subversion/svn/mergeinfo-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl-log.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/mkdir-cmd.lo: subversion/svn/mkdir-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/move-cmd.lo: subversion/svn/move-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/notify.lo: subversion/svn/notify.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/patch-cmd.lo: subversion/svn/patch-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/propdel-cmd.lo: subversion/svn/propdel-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/propedit-cmd.lo: subversion/svn/propedit-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/propget-cmd.lo: subversion/svn/propget-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/proplist-cmd.lo: subversion/svn/proplist-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/props.lo: subversion/svn/props.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/propset-cmd.lo: subversion/svn/propset-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/relocate-cmd.lo: subversion/svn/relocate-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/resolve-cmd.lo: subversion/svn/resolve-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/resolved-cmd.lo: subversion/svn/resolved-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/revert-cmd.lo: subversion/svn/revert-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/shelf-cmd.lo: subversion/svn/shelf-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_client_shelf.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn/shelf-cmd.h subversion/svn_private_config.h subversion/svn/shelf2-cmd.lo: subversion/svn/shelf2-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_client_shelf2.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn/shelf2-cmd.h subversion/svn_private_config.h subversion/svn/similarity.lo: subversion/svn/similarity.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/status-cmd.lo: subversion/svn/status-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/status.lo: subversion/svn/status.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/svn.lo: subversion/svn/svn.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn/shelf-cmd.h subversion/svn/shelf2-cmd.h subversion/svn_private_config.h subversion/svn/switch-cmd.lo: subversion/svn/switch-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/unlock-cmd.lo: subversion/svn/unlock-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/update-cmd.lo: subversion/svn/update-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/upgrade-cmd.lo: subversion/svn/upgrade-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svn/util.lo: subversion/svn/util.c subversion/include/private/svn_client_private.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h subversion/svnadmin/svnadmin.lo: subversion/svnadmin/svnadmin.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/svnbench/help-cmd.lo: subversion/svnbench/help-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/notify.lo: subversion/svnbench/notify.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/null-blame-cmd.lo: subversion/svnbench/null-blame-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/null-export-cmd.lo: subversion/svnbench/null-export-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/null-info-cmd.lo: subversion/svnbench/null-info-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/null-list-cmd.lo: subversion/svnbench/null-list-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/null-log-cmd.lo: subversion/svnbench/null-log-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/svnbench.lo: subversion/svnbench/svnbench.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svnbench/util.lo: subversion/svnbench/util.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h subversion/svndumpfilter/svndumpfilter.lo: subversion/svndumpfilter/svndumpfilter.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dirent_uri_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnfsfs/dump-index-cmd.lo: subversion/svnfsfs/dump-index-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svnfsfs/svnfsfs.h subversion/svnfsfs/load-index-cmd.lo: subversion/svnfsfs/load-index-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/svnfsfs/svnfsfs.h subversion/svnfsfs/stats-cmd.lo: subversion/svnfsfs/stats-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/svnfsfs/svnfsfs.h subversion/svnfsfs/svnfsfs.lo: subversion/svnfsfs/svnfsfs.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnfsfs/svnfsfs.h subversion/svnlook/svnlook.lo: subversion/svnlook/svnlook.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_io_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/svnmucc/svnmucc.lo: subversion/svnmucc/svnmucc.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnrdump/dump_editor.lo: subversion/svnrdump/dump_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svnrdump/svnrdump.h subversion/svnrdump/load_editor.lo: subversion/svnrdump/load_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/svnrdump/svnrdump.h subversion/svnrdump/svnrdump.lo: subversion/svnrdump/svnrdump.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnrdump/svnrdump.h subversion/svnrdump/util.lo: subversion/svnrdump/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svnrdump/svnrdump.h subversion/svnserve/cyrus_auth.lo: subversion/svnserve/cyrus_auth.c subversion/include/private/ra_svn_sasl.h subversion/include/private/ra_svn_wrapped_sasl.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/svnserve/server.h subversion/svnserve/log-escape.lo: subversion/svnserve/log-escape.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svnserve/server.h subversion/svnserve/logger.lo: subversion/svnserve/logger.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/svnserve/logger.h subversion/svnserve/server.h subversion/svnserve/serve.lo: subversion/svnserve/serve.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_user.h subversion/svn_private_config.h subversion/svnserve/logger.h subversion/svnserve/server.h subversion/svnserve/svnserve.lo: subversion/svnserve/svnserve.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnserve/logger.h subversion/svnserve/server.h subversion/svnserve/winservice.h subversion/svnserve/winservice.lo: subversion/svnserve/winservice.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/svnserve/winservice.h subversion/svnsync/svnsync.lo: subversion/svnsync/svnsync.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnsync/sync.h subversion/svnsync/sync.lo: subversion/svnsync/sync.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/svnsync/sync.h subversion/svnversion/svnversion.lo: subversion/svnversion/svnversion.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/tests/afl/afl-svndiff.lo: subversion/tests/afl/afl-svndiff.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/afl/afl-x509.lo: subversion/tests/afl/afl-x509.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_x509.h +subversion/tests/client/filesize-test.lo: subversion/tests/client/filesize-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn/filesize.c subversion/tests/svn_test.h + subversion/tests/cmdline/atomic-ra-revprop-change.lo: subversion/tests/cmdline/atomic-ra-revprop-change.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h -subversion/tests/cmdline/entries-dump.lo: subversion/tests/cmdline/entries-dump.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h +subversion/tests/cmdline/entries-dump.lo: subversion/tests/cmdline/entries-dump.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/cmdline/lock-helper.lo: subversion/tests/cmdline/lock-helper.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_client/client-test.lo: subversion/tests/libsvn_client/client-test.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_client/conflicts-test.lo: subversion/tests/libsvn_client/conflicts-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_client/mtcc-test.lo: subversion/tests/libsvn_client/mtcc-test.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_delta/random-test.lo: subversion/tests/libsvn_delta/random-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/compose_delta.c subversion/libsvn_delta/delta.h subversion/tests/libsvn_delta/delta-window-test.h subversion/tests/libsvn_delta/range-index-test.h subversion/tests/svn_test.h subversion/tests/libsvn_delta/svndiff-stream-test.lo: subversion/tests/libsvn_delta/svndiff-stream-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_delta/svndiff-test.lo: subversion/tests/libsvn_delta/svndiff-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_quoprint.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_delta/vdelta-test.lo: subversion/tests/libsvn_delta/vdelta-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_delta/delta.h subversion/tests/libsvn_delta/delta-window-test.h subversion/tests/svn_test.h subversion/tests/libsvn_delta/window-test.lo: subversion/tests/libsvn_delta/window-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_diff/diff-diff3-test.lo: subversion/tests/libsvn_diff/diff-diff3-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/tests/svn_test.h subversion/tests/libsvn_diff/parse-diff-test.lo: subversion/tests/libsvn_diff/parse-diff-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/tests/svn_test.h subversion/tests/libsvn_fs/fs-sequential-test.lo: subversion/tests/libsvn_fs/fs-sequential-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs/fs-test.lo: subversion/tests/libsvn_fs/fs-test.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs/locks-test.lo: subversion/tests/libsvn_fs/locks-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_base/changes-test.lo: subversion/tests/libsvn_fs_base/changes-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_base/fs-base-test.lo: subversion/tests/libsvn_fs_base/fs-base-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_delta/delta.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_base/strings-reps-test.lo: subversion/tests/libsvn_fs_base/strings-reps-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.lo: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rev_file.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_fs/fs-fs-pack-test.lo: subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_fs/fs-fs-private-test.lo: subversion/tests/libsvn_fs_fs/fs-fs-private-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_x/fs-x-pack-test.lo: subversion/tests/libsvn_fs_x/fs-x-pack-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_fs_x/string-table-test.lo: subversion/tests/libsvn_fs_x/string-table-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_temp_serializer.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_fs_x/string_table.h subversion/tests/svn_test.h subversion/tests/libsvn_ra/ra-test.lo: subversion/tests/libsvn_ra/ra-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_ra_local/ra_local.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_ra_local/ra-local-test.lo: subversion/tests/libsvn_ra_local/ra-local-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_ra_local/ra_local.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_repos/authz-test.lo: subversion/tests/libsvn_repos/authz-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_repos/authz.h subversion/tests/svn_test.h subversion/tests/libsvn_repos/dir-delta-editor.lo: subversion/tests/libsvn_repos/dir-delta-editor.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/libsvn_repos/dir-delta-editor.h subversion/tests/svn_test.h subversion/tests/libsvn_repos/dump-load-test.lo: subversion/tests/libsvn_repos/dump-load-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_repos/repos-test.lo: subversion/tests/libsvn_repos/repos-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/libsvn_subr/config_impl.h subversion/tests/libsvn_repos/dir-delta-editor.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_subr/auth-test.lo: subversion/tests/libsvn_subr/auth-test.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/bit-array-test.lo: subversion/tests/libsvn_subr/bit-array-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/cache-test.lo: subversion/tests/libsvn_subr/cache-test.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/checksum-test.lo: subversion/tests/libsvn_subr/checksum-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/compat-test.lo: subversion/tests/libsvn_subr/compat-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/compress-test.lo: subversion/tests/libsvn_subr/compress-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/config-test.lo: subversion/tests/libsvn_subr/config-test.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/crypto-test.lo: subversion/tests/libsvn_subr/crypto-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_subr/crypto.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/dirent_uri-test.lo: subversion/tests/libsvn_subr/dirent_uri-test.c subversion/include/private/svn_cert.h subversion/include/private/svn_debug.h subversion/include/private/svn_dirent_uri_private.h subversion/include/private/svn_fspath.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/error-code-test.lo: subversion/tests/libsvn_subr/error-code-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/error-test.lo: subversion/tests/libsvn_subr/error-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_error_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/hashdump-test.lo: subversion/tests/libsvn_subr/hashdump-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/io-test.lo: subversion/tests/libsvn_subr/io-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_subr/mergeinfo-test.lo: subversion/tests/libsvn_subr/mergeinfo-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_error_private.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/opt-test.lo: subversion/tests/libsvn_subr/opt-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/packed-data-test.lo: subversion/tests/libsvn_subr/packed-data-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_packed_data.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/path-test.lo: subversion/tests/libsvn_subr/path-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/prefix-string-test.lo: subversion/tests/libsvn_subr/prefix-string-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/priority-queue-test.lo: subversion/tests/libsvn_subr/priority-queue-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/revision-test.lo: subversion/tests/libsvn_subr/revision-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/root-pools-test.lo: subversion/tests/libsvn_subr/root-pools-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/skel-test.lo: subversion/tests/libsvn_subr/skel-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_subr/spillbuf-test.lo: subversion/tests/libsvn_subr/spillbuf-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/sqlite-test.lo: subversion/tests/libsvn_subr/sqlite-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/stream-test.lo: subversion/tests/libsvn_subr/stream-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_io_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/string-test.lo: subversion/tests/libsvn_subr/string-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/subst_translate-test.lo: subversion/tests/libsvn_subr/subst_translate-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/time-test.lo: subversion/tests/libsvn_subr/time-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/translate-test.lo: subversion/tests/libsvn_subr/translate-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/utf-test.lo: subversion/tests/libsvn_subr/utf-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/x509-test.lo: subversion/tests/libsvn_subr/x509-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_x509.h subversion/tests/svn_test.h subversion/tests/libsvn_subr/xml-test.lo: subversion/tests/libsvn_subr/xml-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h subversion/tests/svn_test.h subversion/libsvn_subr/sqlite3wrapper.lo: subversion/libsvn_subr/sqlite3wrapper.c subversion/svn_private_config.h subversion/tests/libsvn_wc/conflict-data-test.lo: subversion/tests/libsvn_wc/conflict-data-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/libsvn_wc/db-test.lo: subversion/tests/libsvn_wc/db-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/libsvn_wc/entries-compat.lo: subversion/tests/libsvn_wc/entries-compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/libsvn_wc/op-depth-test.lo: subversion/tests/libsvn_wc/op-depth-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/libsvn_wc/wc-test-queries.h subversion/tests/svn_test.h subversion/tests/libsvn_wc/pristine-store-test.lo: subversion/tests/libsvn_wc/pristine-store-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/libsvn_wc/wc-incomplete-tester.lo: subversion/tests/libsvn_wc/wc-incomplete-tester.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/wc-lock-tester.lo: subversion/tests/libsvn_wc/wc-lock-tester.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/tests/libsvn_wc/wc-queries-test.lo: subversion/tests/libsvn_wc/wc-queries-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/libsvn_wc/wc-queries.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/libsvn_wc/wc-test.lo: subversion/tests/libsvn_wc/wc-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.lo: subversion/tests/svn_test_fs.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h subversion/tests/svn_test_main.lo: subversion/tests/svn_test_main.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/tests/svn_test.h tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/help-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/help-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/log.lo: tools/client-side/svn-mergeinfo-normalizer/log.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/logic.lo: tools/client-side/svn-mergeinfo-normalizer/logic.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/missing-branches.lo: tools/client-side/svn-mergeinfo-normalizer/missing-branches.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.lo: tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.lo: tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h tools/client-side/svnconflict/svnconflict.lo: tools/client-side/svnconflict/svnconflict.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/fsfs-access-map.lo: tools/dev/fsfs-access-map.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h tools/dev/svnmover/merge3.lo: tools/dev/svnmover/merge3.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_nested.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_element.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/svnmover.h tools/dev/svnmover/ra.lo: tools/dev/svnmover/ra.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/svnmover.h tools/dev/svnmover/scanlog.lo: tools/dev/svnmover/scanlog.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/svnmover.h tools/dev/svnmover/svnmover.lo: tools/dev/svnmover/svnmover.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_nested.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_client_private.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/linenoise/linenoise.h tools/dev/svnmover/svnmover.h tools/dev/svnmover/util.lo: tools/dev/svnmover/util.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_wc.h tools/dev/svnmover/linenoise/linenoise.c tools/dev/svnmover/linenoise/linenoise.h tools/dev/svnmover/svnmover.h tools/dev/svnraisetreeconflict/svnraisetreeconflict.lo: tools/dev/svnraisetreeconflict/svnraisetreeconflict.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/wc-ng/svn-wc-db-tester.lo: tools/dev/wc-ng/svn-wc-db-tester.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h tools/dev/x509-parser.lo: tools/dev/x509-parser.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_x509.h subversion/svn_private_config.h tools/diff/diff.lo: tools/diff/diff.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h tools/diff/diff3.lo: tools/diff/diff3.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h tools/diff/diff4.lo: tools/diff/diff4.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h tools/server-side/mod_dontdothat/mod_dontdothat.lo: tools/server-side/mod_dontdothat/mod_dontdothat.c subversion/include/mod_dav_svn.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_xml.h if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)tools/server-side/mod_dontdothat/mod_dontdothat.c ; else echo "fake" > tools/server-side/mod_dontdothat/mod_dontdothat.lo ; fi tools/server-side/svn-populate-node-origins-index.lo: tools/server-side/svn-populate-node-origins-index.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h tools/server-side/svnauthz.lo: tools/server-side/svnauthz.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h tools/server-side/svnauthz.lo: tools/server-side/svnauthz.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_opt_impl.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_types_impl.h subversion/include/svn_utf.h subversion/svn_private_config.h diff --git a/contrib/subversion/build.conf b/contrib/subversion/build.conf index 1f0d2d8054a6..95875a7ebdb1 100644 --- a/contrib/subversion/build.conf +++ b/contrib/subversion/build.conf @@ -1,1754 +1,1767 @@ # # build.conf -- configuration information for building Subversion # ###################################################################### # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. ###################################################################### # # This file is processed by gen-make.py, creating build-outputs.mk # # ---------------------------------------------------------------------------- # # PREDEFINED SECTION # # This [options] section is global in scope, providing information to the # process, rather than defining a build target, as all other sections do. # [options] includes = subversion/include/*.h include-wildcards = *.h *.i *.swg private-includes = subversion/include/private/*.h subversion/bindings/swig/include/*.swg subversion/libsvn_delta/compose_delta.c subversion/bindings/cxx/include/*.hpp subversion/bindings/cxx/include/svnxx/*.hpp subversion/bindings/cxx/include/svnxx/client/*.hpp subversion/bindings/cxx/include/svnxx/detail/*.hpp subversion/bindings/cxx/src/*.hpp subversion/bindings/cxx/src/aprwrap/*.hpp subversion/bindings/cxx/src/private/*.hpp subversion/bindings/cxx/tests/*.hpp subversion/bindings/javahl/native/*.hpp subversion/bindings/javahl/native/jniwrapper/jni_*.hpp tools/dev/svnmover/linenoise/linenoise.h tools/dev/svnmover/linenoise/linenoise.c subversion/libsvn_subr/utf8proc/utf8proc_internal.h subversion/libsvn_subr/utf8proc/utf8proc.c subversion/libsvn_subr/utf8proc/utf8proc_data.c + subversion/svn/filesize.c private-built-includes = subversion/svn_private_config.h subversion/libsvn_fs_fs/rep-cache-db.h subversion/libsvn_fs_x/rep-cache-db.h subversion/libsvn_wc/wc-metadata.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc-checks.h subversion/libsvn_subr/internal_statements.h subversion/tests/libsvn_wc/wc-test-queries.h subversion/bindings/swig/proxy/swig_python_external_runtime.swg subversion/bindings/swig/proxy/swig_perl_external_runtime.swg subversion/bindings/swig/proxy/swig_ruby_external_runtime.swg subversion/bindings/swig/proxy/rubyhead.swg subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeResources.h subversion/bindings/javahl/include/org_apache_subversion_javahl_Path.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeInputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeOutputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Version.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLibIterator.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLibIterator.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RuntimeVersion.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Revision.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RevisionRangeList.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteSession.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteFactory.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_CommitEditor.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_StateReporter.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigImpl_Category.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_DiffLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_PropLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_SubstLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_TunnelChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_RequestChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ResponseChannel.h test-scripts = subversion/tests/cmdline/*_tests.py bdb-test-scripts = swig-python-opts = $(SWIG_FEATURES) $(SWIG_PY_OPTS) $(SWIG_PY_FEATURES) swig-perl-opts = $(SWIG_FEATURES) -perl $(SWIG_PL_FEATURES) -nopm -noproxy swig-ruby-opts = $(SWIG_FEATURES) -ruby $(SWIG_RB_FEATURES) swig-languages = python perl ruby swig-dirs = subversion/bindings/swig/python subversion/bindings/swig/perl subversion/bindings/swig/ruby subversion/bindings/swig/proxy swig-proxy-dir = subversion/bindings/swig/proxy swig-checkout-files = common.swg swigrun.swg runtime.swg ruby/rubydef.swg ruby/rubyhead.swg ruby/rubytracking.swg perl5/perlrun.swg python/pyrun.swg python/python.swg # ---------------------------------------------------------------------------- # # BUILD TARGETS # # Target parameters: # description - optional build target description # type - the target type, defines how to build it # when - the name of an autoconf-substed variable that muset be # defined to either "true" or "false", that determines # whether this target should be built and installed. # path - relative path to target sources # sources - explicit list of target sources # install - the installation group/type # manpages - the man pages associated with this target # libs - libraries that this target depends on # nonlibs - dependencies that are not linked into the target # lang - bindings for language $(lang) # msvc-libs - additional libraries to link with on Windows # msvc-export - additional list of files to expose in dsp/vc(x)proj # msvc-static - visual studio target produces only a static lib # msvc-force-static- visual studio always uses static libraries for svn libs # add-deps - expands to additional autoconf-defined dependencies # add-install-deps - like add-deps, but for the install step # external-lib - expands to additional autoconf-defined libs # external-project - visual studio project to depend on # # The subversion command-line client [svn] description = Subversion Client type = exe path = subversion/svn libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr apriconv apr manpages = subversion/svn/svn.1 install = bin msvc-libs = setargv.obj # The subversion repository administration tool [svnadmin] description = Subversion Repository Administrator type = exe path = subversion/svnadmin install = bin manpages = subversion/svnadmin/svnadmin.1 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr msvc-libs = setargv.obj # The subversion repository dump filtering tool [svndumpfilter] description = Subversion Dumpfile Filter type = exe path = subversion/svndumpfilter install = bin manpages = subversion/svndumpfilter/svndumpfilter.1 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr # The subversion repository inspection tool [svnlook] description = Subversion Repository Browser type = exe path = subversion/svnlook install = bin manpages = subversion/svnlook/svnlook.1 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_diff libsvn_subr apriconv apr [svnserve] description = Subversion Server type = exe path = subversion/svnserve install = bin manpages = subversion/svnserve/svnserve.8 subversion/svnserve/svnserve.conf.5 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr libsvn_ra_svn apriconv apr sasl msvc-libs = advapi32.lib ws2_32.lib [svnsync] description = Subversion repository replicator type = exe path = subversion/svnsync libs = libsvn_ra libsvn_delta libsvn_subr apr install = bin manpages = subversion/svnsync/svnsync.1 [svnversion] description = Subversion Revision Extractor type = exe path = subversion/svnversion libs = libsvn_wc libsvn_subr apriconv apr install = bin manpages = subversion/svnversion/svnversion.1 [svnrdump] description = Subversion remote repository dumper and loader type = exe path = subversion/svnrdump libs = libsvn_client libsvn_ra libsvn_repos libsvn_delta libsvn_subr aprutil apr install = bin manpages = subversion/svnrdump/svnrdump.1 [svnmucc] description = Subversion Multiple URL Command Client type = exe path = subversion/svnmucc libs = libsvn_client libsvn_ra libsvn_subr libsvn_delta apriconv apr install = bin manpages = subversion/svnmucc/svnmucc.1 # Support for GNOME Keyring [libsvn_auth_gnome_keyring] description = Subversion GNOME Keyring Library type = shared-only-lib install = gnome-keyring-lib path = subversion/libsvn_auth_gnome_keyring libs = libsvn_subr apr gnome-keyring # Support for KWallet [libsvn_auth_kwallet] description = Subversion KWallet Library type = shared-only-cxx-lib install = kwallet-lib path = subversion/libsvn_auth_kwallet libs = libsvn_subr apr kwallet link-cmd = $(LINK_CXX_LIB) # Library needed by all subversion clients [libsvn_client] description = Subversion Client Library type = lib path = subversion/libsvn_client libs = libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr apriconv apr install = lib msvc-export = svn_client.h private/svn_client_mtcc.h private/svn_client_private.h private/svn_client_shelf.h private/svn_client_shelf2.h # Routines for binary diffing and tree-deltas [libsvn_delta] description = Subversion Delta Library type = lib install = fsmod-lib path = subversion/libsvn_delta libs = libsvn_subr aprutil apriconv apr zlib msvc-export = svn_delta.h private/svn_editor.h private/svn_delta_private.h private/svn_element.h private/svn_branch.h private/svn_branch_compat.h private/svn_branch_impl.h private/svn_branch_nested.h private/svn_branch_repos.h # Routines for diffing [libsvn_diff] description = Subversion Diff Library type = lib path = subversion/libsvn_diff libs = libsvn_subr apriconv apr zlib install = lib msvc-export = svn_diff.h private/svn_diff_private.h private/svn_diff_tree.h # The repository filesystem library [libsvn_fs] description = Subversion Repository Filesystem Library type = lib path = subversion/libsvn_fs install = ramod-lib libs = libsvn_fs_util libsvn_delta libsvn_subr fs-libs aprutil apr # conditionally add more dependencies add-deps = $(SVN_FS_LIB_DEPS) add-install-deps = $(SVN_FS_LIB_INSTALL_DEPS) msvc-export = svn_fs.h private/svn_fs_private.h [libsvn_fs_base] description = Subversion Filesystem Base Library type = fs-module path = subversion/libsvn_fs_base sources = *.c bdb/*.c util/*.c install = bdb-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr bdb libsvn_fs_util msvc-export = ../libsvn_fs_base/fs_init.h msvc-delayload = yes [libsvn_fs_fs] description = Subversion FSFS Repository Filesystem Library type = fs-module path = subversion/libsvn_fs_fs install = fsmod-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr libsvn_fs_util msvc-export = private/svn_fs_fs_private.h ../libsvn_fs_fs/fs_init.h msvc-delayload = yes [libsvn_fs_x] description = Subversion FSX Repository Filesystem Library type = fs-module path = subversion/libsvn_fs_x install = fsmod-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr libsvn_fs_util msvc-export = ../libsvn_fs_x/fs_init.h msvc-delayload = yes # Low-level grab bag of utilities [libsvn_fs_util] description = Subversion Filesystem Utility Library type = lib install = fsmod-lib path = subversion/libsvn_fs_util libs = libsvn_subr aprutil apriconv apr msvc-libs = advapi32.lib shfolder.lib msvc-export = private/svn_fs_util.h # General API for accessing repositories [libsvn_ra] description = Subversion General Repository Access Library type = lib path = subversion/libsvn_ra libs = libsvn_delta libsvn_subr ra-libs apriconv apr # conditionally add more dependencies add-deps = $(SVN_RA_LIB_DEPS) add-install-deps = $(SVN_RA_LIB_INSTALL_DEPS) install = lib msvc-export = svn_ra.h private\svn_ra_private.h msvc-delayload = yes # Accessing repositories via DAV through serf [libsvn_ra_serf] description = Subversion HTTP/WebDAV Protocol Repository Access Library type = ra-module path = subversion/libsvn_ra_serf install = serf-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr serf zlib msvc-static = yes # Accessing repositories via SVN [libsvn_ra_svn] description = Subversion SVN Protocol Repository Access Library type = ra-module path = subversion/libsvn_ra_svn install = ramod-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr sasl msvc-static = yes # Accessing repositories via direct libsvn_fs [libsvn_ra_local] description = Subversion Local Repository Access Library type = ra-module path = subversion/libsvn_ra_local install = ramod-lib libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr msvc-static = yes # Routines built on top of libsvn_fs [libsvn_repos] description = Subversion Repository Library type = lib path = subversion/libsvn_repos install = ramod-lib libs = libsvn_fs libsvn_delta libsvn_subr apriconv apr msvc-export = svn_repos.h private/svn_repos_private.h ../libsvn_repos/authz.h # Low-level grab bag of utilities [libsvn_subr] description = Subversion General Utility Library type = lib install = fsmod-lib path = subversion/libsvn_subr sources = *.c lz4/*.c libs = aprutil apriconv apr xml zlib apr_memcache sqlite magic intl lz4 utf8proc macos-plist macos-keychain msvc-libs = kernel32.lib advapi32.lib shfolder.lib ole32.lib crypt32.lib version.lib msvc-export = svn_auth.h svn_base64.h svn_cache_config.h svn_checksum.h svn_cmdline.h svn_compat.h svn_config.h svn_ctype.h svn_dirent_uri.h svn_dso.h svn_error.h svn_hash.h svn_io.h svn_iter.h svn_md5.h svn_mergeinfo.h svn_nls.h svn_opt.h svn_path.h svn_pools.h svn_props.h svn_quoprint.h svn_sorts.h svn_string.h svn_subst.h svn_time.h svn_types.h svn_user.h svn_utf.h svn_version.h svn_xml.h svn_x509.h private\svn_atomic.h private\svn_cache.h private\svn_cmdline_private.h private\svn_debug.h private\svn_error_private.h private\svn_fspath.h private\svn_log.h private\svn_mergeinfo_private.h private\svn_opt_private.h private\svn_skel.h private\svn_sqlite.h private\svn_utf_private.h private\svn_eol_private.h private\svn_token.h private\svn_adler32.h private\svn_temp_serializer.h private\svn_io_private.h private\svn_sorts_private.h private\svn_auth_private.h private\svn_string_private.h private\svn_magic.h private\svn_subr_private.h private\svn_mutex.h private\svn_packed_data.h private\svn_object_pool.h private\svn_cert.h private\svn_config_private.h private\svn_dirent_uri_private.h # Working copy management lib [libsvn_wc] description = Subversion Working Copy Library type = lib path = subversion/libsvn_wc libs = libsvn_delta libsvn_diff libsvn_subr aprutil apriconv apr install = lib msvc-export = svn_wc.h private\svn_wc_private.h # Subversion plugin for Apache's mod_dav [mod_dav_svn] description = Subversion plug-in for the Apache DAV module when = INSTALL_APACHE_MODS type = apache-mod path = subversion/mod_dav_svn sources = *.c reports/*.c posts/*.c libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr libhttpd mod_dav nonlibs = apr aprutil install = apache-mod [mod_authz_svn] description = Subversion path-based authorization module for Apache when = INSTALL_APACHE_MODS type = apache-mod path = subversion/mod_authz_svn nonlibs = mod_dav_svn apr aprutil libs = libsvn_repos libsvn_subr libhttpd install = apache-mod [mod_dontdothat] description = Apache Httpd module to block certain kinds of Apache Subversion requests when = INSTALL_APACHE_MODS type = apache-mod path = tools/server-side/mod_dontdothat nonlibs = mod_dav_svn apr aprutil libs = libsvn_subr libhttpd install = tools # The Subversion FSFS repository manipulation tool [svnfsfs] description = Subversion FSFS Repository Manipulation Tool type = exe path = subversion/svnfsfs install = bin libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # # CONSTRUCTED HEADERS # [rep_cache_fs_fs] description = Schema for the FSFS rep-sharing feature type = sql-header path = subversion/libsvn_fs_fs sources = rep-cache-db.sql [rep_cache_fs_x] description = Schema for the FSX rep-sharing feature type = sql-header path = subversion/libsvn_fs_x sources = rep-cache-db.sql [wc_queries] desription = Queries on the WC database type = sql-header path = subversion/libsvn_wc sources = wc-queries.sql [subr_sqlite] description = Internal statements for SQLite interface type = sql-header path = subversion/libsvn_subr sources = internal_statements.sql [wc_test_queries] description = Queries using working copy tests type = sql-header path = subversion/tests/libsvn_wc sources = wc-test-queries.sql # ---------------------------------------------------------------------------- # # TARGETS FOR I18N SUPPORT # [locale] type = i18n path = subversion/po install = locale external-project = svn_locale # ---------------------------------------------------------------------------- # # TARGETS FOR SWIG SUPPORT # [swig_core] type = swig path = subversion/bindings/swig sources = core.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_diff libsvn_subr apr description = Subversion core library bindings [swig_client] type = swig path = subversion/bindings/swig sources = svn_client.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_client libsvn_subr apr nonlibs = swig_core description = Subversion client library bindings [swig_delta] type = swig path = subversion/bindings/swig sources = svn_delta.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_delta libsvn_subr apr nonlibs = swig_core description = Subversion delta library bindings [swig_diff] type = swig path = subversion/bindings/swig sources = svn_diff.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_diff libsvn_subr apr nonlibs = swig_core description = Subversion diff library bindings [swig_fs] type = swig path = subversion/bindings/swig sources = svn_fs.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_fs libsvn_subr apr nonlibs = swig_core description = Subversion FS library bindings [swig_ra] type = swig path = subversion/bindings/swig sources = svn_ra.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_ra libsvn_subr apr nonlibs = swig_core description = Subversion RA library bindings [swig_repos] type = swig path = subversion/bindings/swig sources = svn_repos.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_repos libsvn_subr apr nonlibs = swig_core description = Subversion repository library bindings [swig_wc] type = swig path = subversion/bindings/swig sources = svn_wc.i libs = libsvn_swig_py libsvn_swig_perl libsvn_swig_ruby libsvn_wc libsvn_subr apr nonlibs = swig_core description = Subversion WC library bindings # SWIG utility library for Python modules [libsvn_swig_py] type = swig_lib lang = python path = subversion/bindings/swig/python/libsvn_swig_py libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_subr apriconv apr python swig link-cmd = $(LINK) install = swig-py-lib # need special build rule to include -DSWIGPYTHON compile-cmd = $(COMPILE_SWIG_PY) msvc-static = no msvc-export = ../bindings/swig/python/libsvn_swig_py/swigutil_py.h description = Subversion utility library for Python bindings # SWIG utility library for Perl modules [libsvn_swig_perl] type = swig_lib lang = perl path = subversion/bindings/swig/perl/libsvn_swig_perl libs = libsvn_delta libsvn_subr apriconv apr perl swig install = swig-pl-lib # need special build rule to include compile-cmd = $(COMPILE_SWIG_PL) msvc-static = no msvc-export = ../bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h # SWIG utility library for Ruby modules [libsvn_swig_ruby] type = swig_lib lang = ruby path = subversion/bindings/swig/ruby/libsvn_swig_ruby libs = libsvn_client libsvn_wc libsvn_delta libsvn_subr apriconv apr ruby swig link-cmd = $(LINK) $(SWIG_RB_LIBS) install = swig-rb-lib # need special build rule to include compile-cmd = $(COMPILE_SWIG_RB) msvc-static = no msvc-export = ../bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h # ---------------------------------------------------------------------------- # # JavaHL targets # [javahl-java] type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl sources = *.java native = CommitItemStateFlags.java NativeResources.java SVNClient.java SVNRepos.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl [javahl-compat-java] type = java path = subversion/bindings/javahl/src/org/tigris/subversion/javahl sources = *.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_COMPAT_JAVAC) classes = subversion/bindings/javahl/classes add-deps = $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) $(javahl_java_DEPS) ### Replace JAR call in INSTALL_EXTRA_JAVAHL_JAVA macro Makefile.in. #jar = svn-javahl.jar package = org.tigris.subversion.javahl [javahl-tests] type = java path = subversion/bindings/javahl/tests/org/apache/subversion/javahl sources = *.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) classes = subversion/bindings/javahl/classes package = org.apache.subversion.javahl ### Java targets don't do up-to-date checks yet. #add-deps = javahl-java add-deps = $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) $(javahl_java_DEPS) [javahl-compat-tests] type = java path = subversion/bindings/javahl/tests/org/tigris/subversion/javahl sources = *.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_COMPAT_JAVAC) classes = subversion/bindings/javahl/classes package = org.tigris.subversion.javahl ### Java targets don't do up-to-date checks yet. #add-deps = javahl-compat-java add-deps = $(javahl_compat_java_DEPS) [javahl-callback-java] type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/callback classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.callback sources = *.java native = UserPasswordCallback.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) [javahl-remote-java] type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/remote classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.remote sources = *.java native = CommitEditor.java RemoteFactory.java RemoteSession.java StateReporter.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) [javahl-types-java] type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/types classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.types sources = *.java native = NativeInputStream.java NativeOutputStream.java Revision.java RevisionRangeList.java RuntimeVersion.java VersionExtended.java Version.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) [javahl-util-java] type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/util classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.util sources = *.java native = ConfigImpl.java ConfigLib.java DiffLib.java PropLib.java RequestChannel.java ResponseChannel.java SubstLib.java TunnelChannel.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) [libsvnjavahl] description = Subversion Java HighLevel binding type = lib path = subversion/bindings/javahl/native libs = libsvn_repos libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr libsvn_fs aprutil apriconv apr java-sdk sources = *.cpp jniwrapper/*.cpp add-deps = $(javahl_java_DEPS) $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) $(javahl_java_DEPS) install = javahl-lib # need special build rule to include -I$(JDK)/include/jni.h compile-cmd = $(COMPILE_JAVAHL_CXX) link-cmd = $(LINK_JAVAHL_CXX) # ---------------------------------------------------------------------------- # # SVN++ targets # [libsvnxx] description = Subversion C++ bindings when = SVN_BUILD_SVNXX type = lib path = subversion/bindings/cxx libs = libsvn_repos libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr libsvn_fs aprutil apriconv apr sources = src/*.cpp src/aprwrap/*.cpp install = svnxx-lib msvc-static = yes compile-cmd = $(COMPILE_SVNXX) link-cmd = $(LINK_CXX_LIB) [svnxx-tests] description = Unit tests for Subversion C++ bindings when = SVN_BUILD_SVNXX_TESTS type = exe path = subversion/bindings/cxx libs = libsvnxx libsvn_repos libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr libsvn_fs aprutil apriconv apr sources = tests/*.cpp install = svnxx-tests compile-cmd = $(COMPILE_SVNXX_TEST) link-cmd = $(LINK_SVNXX_TEST) # ---------------------------------------------------------------------------- # # TESTING TARGETS # # general library: our C testing framework [libsvn_test] type = lib path = subversion/tests install = test libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr aprutil apriconv apr msvc-static = yes undefined-lib-symbols = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs_base [fs-base-test] description = Tests for *public* fs API (svn_fs.h) type = exe path = subversion/tests/libsvn_fs_base sources = fs-base-test.c install = bdb-test libs = libsvn_test libsvn_fs libsvn_fs_base libsvn_delta libsvn_fs_util libsvn_subr apriconv apr msvc-force-static = yes [strings-reps-test] description = Test strings/reps in libsvn_fs_base type = exe path = subversion/tests/libsvn_fs_base sources = strings-reps-test.c install = bdb-test libs = libsvn_test libsvn_fs libsvn_fs_base libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes [changes-test] description = Test changes in libsvn_fs_base type = exe path = subversion/tests/libsvn_fs_base sources = changes-test.c install = bdb-test libs = libsvn_test libsvn_fs libsvn_fs_base libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs_fs [fs-fs-pack-test] description = Test fsfs packing in libsvn_fs_fs type = exe path = subversion/tests/libsvn_fs_fs sources = fs-fs-pack-test.c install = test libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes [fs-fs-fuzzy-test] description = Use fuzzying to test FSFS corruption resilience type = exe path = subversion/tests/libsvn_fs_fs sources = fs-fs-fuzzy-test.c install = sub-test libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta libsvn_repos libsvn_subr apriconv apr msvc-force-static = yes [fs-fs-private-test] description = Test FSSF private API type = exe path = subversion/tests/libsvn_fs_fs sources = fs-fs-private-test.c install = test libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta libsvn_repos libsvn_subr apriconv apr msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs_x [fs-x-pack-test] description = Test fsx packing in libsvn_fs_x type = exe path = subversion/tests/libsvn_fs_x sources = fs-x-pack-test.c install = test libs = libsvn_test libsvn_fs libsvn_fs_x libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes [string-table-test] description = Test fsfs string tables type = exe path = subversion/tests/libsvn_fs_x sources = string-table-test.c install = test libs = libsvn_test libsvn_fs_x libsvn_subr apr msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs [locks-test] description = Test locks in libsvn_fs type = exe path = subversion/tests/libsvn_fs sources = locks-test.c install = test libs = libsvn_test libsvn_fs libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes [fs-test] description = Tests in libsvn_fs type = exe path = subversion/tests/libsvn_fs sources = fs-test.c install = test libs = libsvn_test libsvn_fs libsvn_delta libsvn_fs_util libsvn_subr aprutil apriconv apr [fs-sequential-test] description = Tests in libsvn_fs run sequentially type = exe path = subversion/tests/libsvn_fs sources = fs-sequential-test.c install = test libs = libsvn_test libsvn_fs libsvn_delta libsvn_fs_util libsvn_subr aprutil apriconv apr # ---------------------------------------------------------------------------- # Tests for libsvn_repos [authz-test] description = Test authz parsing in libsvn_repos type = exe path = subversion/tests/libsvn_repos sources = authz-test.c install = test libs = libsvn_test libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr [repos-test] description = Test delta editor in libsvn_repos type = exe path = subversion/tests/libsvn_repos sources = repos-test.c dir-delta-editor.c install = test libs = libsvn_test libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr [dump-load-test] description = Test dumping/loading repositories in libsvn_repos type = exe path = subversion/tests/libsvn_repos sources = dump-load-test.c install = test libs = libsvn_test libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # Tests for libsvn_subr [auth-test] description = Test platform-specific auth provider access type = exe path = subversion/tests/libsvn_subr sources = auth-test.c install = test libs = libsvn_test libsvn_subr apr [bit-array-test] description = Test packed bit arrays type = exe path = subversion/tests/libsvn_subr sources = bit-array-test.c install = test libs = libsvn_test libsvn_subr apr [cache-test] description = Test in-memory cache type = exe path = subversion/tests/libsvn_subr sources = cache-test.c install = test libs = libsvn_test libsvn_subr apr [checksum-test] description = Test checksum functions type = exe path = subversion/tests/libsvn_subr sources = checksum-test.c install = test libs = libsvn_test libsvn_subr apr zlib msvc-force-static = yes [compat-test] description = Test compatibility functions type = exe path = subversion/tests/libsvn_subr sources = compat-test.c install = test libs = libsvn_test libsvn_subr apr [config-test] description = Test svn_config utilities type = exe path = subversion/tests/libsvn_subr sources = config-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [crypto-test] description = Test svn_crypto utilities type = exe path = subversion/tests/libsvn_subr sources = crypto-test.c install = test libs = libsvn_test libsvn_subr aprutil apr msvc-force-static = yes [dirent_uri-test] description = Test dirent_uri library type = exe path = subversion/tests/libsvn_subr sources = dirent_uri-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [error-test] description = Test error library type = exe path = subversion/tests/libsvn_subr sources = error-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [error-code-test] description = Test error library type = exe path = subversion/tests/libsvn_subr sources = error-code-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [hashdump-test] description = Test hashfile format for props type = exe path = subversion/tests/libsvn_subr sources = hashdump-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [io-test] description = Test I/O Operations type = exe path = subversion/tests/libsvn_subr sources = io-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [opt-test] description = Test options library type = exe path = subversion/tests/libsvn_subr sources = opt-test.c install = test libs = libsvn_test libsvn_subr apr [mergeinfo-test] description = Test mergeinfo library type = exe path = subversion/tests/libsvn_subr sources = mergeinfo-test.c install = test libs = libsvn_test libsvn_subr apr [packed-data-test] description = Test path library type = exe path = subversion/tests/libsvn_subr sources = packed-data-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [path-test] description = Test path library type = exe path = subversion/tests/libsvn_subr sources = path-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [prefix-string-test] description = Test path library type = exe path = subversion/tests/libsvn_subr sources = prefix-string-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [priority-queue-test] description = Test path library type = exe path = subversion/tests/libsvn_subr sources = priority-queue-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [revision-test] description = Test revision library type = exe path = subversion/tests/libsvn_subr sources = revision-test.c install = test libs = libsvn_test libsvn_subr apr [root-pools-test] description = Test time functions type = exe path = subversion/tests/libsvn_subr sources = root-pools-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [skel-test] description = Test skels in libsvn_subr type = exe path = subversion/tests/libsvn_subr sources = skel-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [spillbuf-test] description = Test spillbuf in libsvn_subr type = exe path = subversion/tests/libsvn_subr sources = spillbuf-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [stream-test] description = Test stream library type = exe path = subversion/tests/libsvn_subr sources = stream-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [string-test] description = Test svn_stringbuf_t utilities type = exe path = subversion/tests/libsvn_subr sources = string-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [sqlite-test] description = Test stream library type = exe path = subversion/tests/libsvn_subr sources = sqlite-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [time-test] description = Test time functions type = exe path = subversion/tests/libsvn_subr sources = time-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [utf-test] description = Test UTF-8 functions type = exe path = subversion/tests/libsvn_subr sources = utf-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [subst_translate-test] description = Test the svn_subst_translate* functions type = exe path = subversion/tests/libsvn_subr sources = subst_translate-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [translate-test] description = Test eol conversion and keyword substitution routines type = exe path = subversion/tests/libsvn_subr sources = translate-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [x509-test] description = Test x509 parser type = exe path = subversion/tests/libsvn_subr sources = x509-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [xml-test] description = Test XML parser in libsvn_subr type = exe path = subversion/tests/libsvn_subr sources = xml-test.c install = test libs = libsvn_test libsvn_subr apriconv apr [compress-test] description = Test compression functions type = exe path = subversion/tests/libsvn_subr sources = compress-test.c install = test libs = libsvn_test libsvn_subr apr # ---------------------------------------------------------------------------- # Tests for libsvn_delta [random-test] description = Use random data to test delta processing type = exe path = subversion/tests/libsvn_delta sources = random-test.c install = test libs = libsvn_test libsvn_delta libsvn_subr apriconv apr [window-test] description = Test delta window generation type = exe path = subversion/tests/libsvn_delta sources = window-test.c install = test libs = libsvn_test libsvn_delta libsvn_subr apriconv apr [svndiff-stream-test] description = Test svndiff streams type = exe path = subversion/tests/libsvn_delta sources = svndiff-stream-test.c install = test libs = libsvn_test libsvn_delta libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # Tests for libsvn_client [client-test] description = Test low-level functionality in libsvn_client type = exe path = subversion/tests/libsvn_client sources = client-test.c install = test libs = libsvn_test libsvn_client libsvn_wc libsvn_repos libsvn_ra libsvn_fs libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes [mtcc-test] description = Test Multi Command Context type = exe path = subversion/tests/libsvn_client sources = mtcc-test.c install = test libs = libsvn_test libsvn_client libsvn_wc libsvn_repos libsvn_ra libsvn_fs libsvn_delta libsvn_subr apriconv apr [conflicts-test] description = Test libsvn_client conflict resolver type = exe path = subversion/tests/libsvn_client sources = conflicts-test.c ../libsvn_wc/utils.c install = test libs = libsvn_test libsvn_client libsvn_wc libsvn_repos libsvn_ra libsvn_fs libsvn_delta libsvn_subr apriconv apr msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_diff [diff-diff3-test] description = Test the diff/diff3 library type = exe path = subversion/tests/libsvn_diff sources = diff-diff3-test.c install = test libs = libsvn_test libsvn_diff libsvn_subr apriconv apr [parse-diff-test] description = Test unidiff parsing type = exe path = subversion/tests/libsvn_diff sources = parse-diff-test.c install = test libs = libsvn_test libsvn_diff libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # Tests for libsvn_ra [ra-test] description = Test a few things in libsvn_ra type = exe path = subversion/tests/libsvn_ra sources = ra-test.c install = test libs = libsvn_test libsvn_ra libsvn_ra_svn libsvn_fs libsvn_delta libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # Tests for libsvn_ra_local [ra-local-test] description = Test a few things in libsvn_ra_local type = exe path = subversion/tests/libsvn_ra_local sources = ra-local-test.c install = test libs = libsvn_test libsvn_ra_local libsvn_ra libsvn_fs libsvn_delta libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # Tests for libsvn_wc [conflict-data-test] description = Test the storage of tree conflict data type = exe path = subversion/tests/libsvn_wc sources = conflict-data-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes [db-test] description = Test the wc-ng database subsystem type = exe path = subversion/tests/libsvn_wc sources = db-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes [pristine-store-test] description = Test the wc-ng pristine text storage subsystem type = exe path = subversion/tests/libsvn_wc sources = pristine-store-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes [entries-compat-test] description = Test backwards compat for the entry interface type = exe path = subversion/tests/libsvn_wc sources = entries-compat.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes [op-depth-test] description = Test layered tree changes type = exe path = subversion/tests/libsvn_wc sources = op-depth-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes [wc-queries-test] description = Test Sqlite query evaluation type = exe path = subversion/tests/libsvn_wc sources = wc-queries-test.c ../../libsvn_subr/sqlite3wrapper.c install = test libs = libsvn_test libsvn_subr apriconv apr sqlite [wc-test] description = Test the main WC API functions type = exe path = subversion/tests/libsvn_wc sources = wc-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes +# ---------------------------------------------------------------------------- +# Tests for the client's internal functions + +[filesize-test] +description = Test conversion of file sizes to human-readable form +type = exe +path = subversion/tests/client +sources = filesize-test.c +install = test +libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr +msvc-force-static = yes + # ---------------------------------------------------------------------------- # These are not unit tests at all, they are small programs that exercise # parts of the libsvn_delta API from the command line. They are stuck here # because of some historical association with the test-suite, but should # really be put somewhere else. # test our textdelta encoding [svndiff-test] type = exe path = subversion/tests/libsvn_delta sources = svndiff-test.c install = test libs = libsvn_delta libsvn_subr apriconv apr testing = skip # compare two files, print txdelta windows [vdelta-test] type = exe path = subversion/tests/libsvn_delta sources = vdelta-test.c install = test libs = libsvn_delta libsvn_subr apriconv apr testing = skip [entries-dump] type = exe path = subversion/tests/cmdline sources = entries-dump.c install = test libs = libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes testing = skip [atomic-ra-revprop-change] type = exe path = subversion/tests/cmdline sources = atomic-ra-revprop-change.c install = test libs = libsvn_ra libsvn_subr apriconv apr testing = skip [lock-helper] type = exe path = subversion/tests/cmdline sources = lock-helper.c install = test libs = libsvn_fs libsvn_subr apriconv apr testing = skip [wc-lock-tester] type = exe path = subversion/tests/libsvn_wc sources = wc-lock-tester.c install = test libs = libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes testing = skip [wc-incomplete-tester] type = exe path = subversion/tests/libsvn_wc sources = wc-incomplete-tester.c install = test libs = libsvn_wc libsvn_subr apriconv apr msvc-force-static = yes testing = skip [svn-wc-db-tester] type = exe path = tools/dev/wc-ng sources = svn-wc-db-tester.c install = test libs = libsvn_wc libsvn_subr apr msvc-force-static = yes testing = skip # ---------------------------------------------------------------------------- # # EXTERNAL TARGETS (NO BUILD NEEDED) # [apr] type = lib external-lib = $(SVN_APR_LIBS) msvc-libs = ws2_32.lib rpcrt4.lib mswsock.lib pkg-config = apr-@SVN_APR_MAJOR_VERSION@ [aprutil] type = lib external-lib = $(SVN_APRUTIL_LIBS) pkg-config = apr-util-@SVN_APR_MAJOR_VERSION@ [apriconv] type = lib external-lib = $(SVN_APRUTIL_LIBS) [libhttpd] type = lib external-lib = $(SVN_HTTPD_LIBS) [mod_dav] type = lib external-lib = $(SVN_MOD_DAV_LIBS) [bdb] type = lib external-lib = $(SVN_DB_LIBS) [gnome-keyring] type = lib external-lib = $(SVN_GNOME_KEYRING_LIBS) pkg-config = @SVN_GNOME_KEYRING_PCLIBS@ pkg-config-private = yes [kwallet] type = lib external-lib = $(SVN_KWALLET_LIBS) [magic] type = lib external-lib = $(SVN_MAGIC_LIBS) [macos-plist] type = lib external-lib = $(SVN_MACOS_PLIST_LIBS) [macos-keychain] type = lib external-lib = $(SVN_MACOS_KEYCHAIN_LIBS) [sasl] type = lib external-lib = $(SVN_SASL_LIBS) [openssl] type = lib external-lib = $(SVN_OPENSSL_LIBS) $(SVN_LIBCRYPTO_LIBS) [intl] type = lib external-lib = $(SVN_INTL_LIBS) [zlib] type = lib external-lib = $(SVN_ZLIB_LIBS) msvc-static = yes [lz4] type = lib external-lib = $(SVN_LZ4_LIBS) [utf8proc] type = lib external-lib = $(SVN_UTF8PROC_LIBS) [apr_memcache] type = lib external-lib = $(SVN_APR_MEMCACHE_LIBS) [serf] type = lib external-lib = $(SVN_SERF_LIBS) libs = apr aprutil openssl zlib msvc-libs = secur32.lib pkg-config = serf-1 pkg-config-private = yes [sqlite] type = lib external-lib = $(SVN_SQLITE_LIBS) pkg-config = sqlite3 pkg-config-private = yes [xml] type = lib external-lib = $(SVN_XML_LIBS) [swig] type = lib external-lib = $(SVN_SWIG_LIBS) [perl] type = lib external-lib = $(SVN_PERL_LIBS) [python] type = lib external-lib = $(SVN_PYTHON_LIBS) [ruby] type = lib external-lib = $(SVN_RUBY_LIBS) [java-sdk] type = lib external-lib = $(SVN_JAVA_SDK_LIBS) [ra-libs] type = lib external-lib = $(SVN_RA_LIB_LINK) libs = libsvn_ra_serf libsvn_ra_local libsvn_ra_svn [fs-libs] type = lib external-lib = $(SVN_FS_LIB_LINK) libs = libsvn_fs_base libsvn_fs_fs libsvn_fs_x [__ALL__] type = project path = build/win32 libs = svn svnadmin svndumpfilter svnlook svnmucc svnserve svnrdump svnsync svnversion mod_authz_svn mod_dav_svn mod_dontdothat svnauthz svnauthz-validate svnraisetreeconflict svnfsfs svnbench svnmover [__ALL_TESTS__] type = project path = build/win32 libs = __ALL__ fs-test fs-base-test fs-fsfs-test fs-fs-pack-test fs-fs-fuzzy-test fs-fs-private-test fs-x-pack-test string-table-test fs-sequential-test skel-test strings-reps-test changes-test locks-test repos-test authz-test dump-load-test checksum-test compat-test config-test hashdump-test mergeinfo-test opt-test packed-data-test path-test prefix-string-test priority-queue-test root-pools-test stream-test - string-test time-test utf-test bit-array-test + string-test time-test utf-test bit-array-test filesize-test error-test error-code-test cache-test spillbuf-test crypto-test revision-test subst_translate-test io-test translate-test random-test window-test diff-diff3-test ra-test ra-local-test sqlite-test svndiff-test vdelta-test entries-dump atomic-ra-revprop-change wc-lock-tester wc-incomplete-tester lock-helper client-test conflicts-test mtcc-test conflict-data-test db-test pristine-store-test entries-compat-test op-depth-test dirent_uri-test wc-queries-test wc-test auth-test parse-diff-test x509-test xml-test afl-x509 afl-svndiff compress-test svndiff-stream-test [__MORE__] type = project path = build/win32 libs = __ALL_TESTS__ diff diff3 diff4 fsfs-access-map svn-populate-node-origins-index x509-parser svn-wc-db-tester svn-mergeinfo-normalizer svnconflict [__LIBS__] type = project path = build/win32 libs = fs-libs ra-libs libsvn_client libsvn_subr libsvn_wc aprutil apriconv apr [__CONFIG__] type = lib external-project = svn_config [__SWIG_PYTHON__] type = swig_project path = build/win32 libs = swig_client swig_delta swig_diff swig_fs swig_ra swig_repos swig_wc swig_core lang = python [__SWIG_PERL__] type = swig_project path = build/win32 libs = swig_client swig_delta swig_diff swig_fs swig_ra swig_repos swig_wc swig_core lang = perl [__SWIG_RUBY__] type = swig_project path = build/win32 libs = swig_client swig_delta swig_diff swig_fs swig_ra swig_repos swig_wc swig_core lang = ruby [__JAVAHL__] type = project path = build/win32 libs = javahl-java libsvnjavahl [__JAVAHL_TESTS__] type = project path = build/win32 libs = __JAVAHL__ javahl-tests javahl-compat-tests # ---------------------------------------------------------------------------- # Contrib and tools [fsfs-access-map] type = exe path = tools/dev sources = fsfs-access-map.c install = tools libs = libsvn_subr apr [diff] type = exe path = tools/diff sources = diff.c install = tools libs = libsvn_diff libsvn_subr apriconv apr [diff3] type = exe path = tools/diff sources = diff3.c install = tools libs = libsvn_diff libsvn_subr apriconv apr [diff4] type = exe path = tools/diff sources = diff4.c install = tools libs = libsvn_diff libsvn_subr apriconv apr [svnbench] description = Benchmarking and diagnostics tool for the network layer type = exe path = subversion/svnbench install = bin libs = libsvn_client libsvn_wc libsvn_ra libsvn_subr libsvn_delta apriconv apr [svnauthz] description = Authz config file tool type = exe path = tools/server-side sources = svnauthz.c install = tools libs = libsvn_repos libsvn_fs libsvn_subr apr # svnauthz-validate is the compat mode of the new svnauthz tool. It is # exactly the same code as svnauthz. This duplicated target is needed # in order to easily test both commands as part of the build since libtool # does not provide a way to set argv[0] different from the commands actual # name in the wrapper script. [svnauthz-validate] description = Authz config file validator type = exe path = tools/server-side sources = svnauthz.c install = tools libs = libsvn_repos libsvn_fs libsvn_subr apr [svn-populate-node-origins-index] description = Tool to populate the node origins index of a repository type = exe path = tools/server-side sources = svn-populate-node-origins-index.c install = tools libs = libsvn_repos libsvn_fs libsvn_subr apr [svnraisetreeconflict] description = Tool to Flag a Tree Conflict type = exe path = tools/dev/svnraisetreeconflict libs = libsvn_wc libsvn_subr apriconv apr install = tools [svn-mergeinfo-normalizer] type = exe path = tools/client-side/svn-mergeinfo-normalizer install = tools libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr apriconv apr [x509-parser] description = Tool to verify x509 certificates type = exe path = tools/dev sources = x509-parser.c install = tools libs = libsvn_subr apr [svnmover] description = Subversion Mover Command Client type = exe path = tools/dev/svnmover sources = *.c libs = libsvn_client libsvn_ra libsvn_subr libsvn_delta apriconv apr install = tools [svnconflict] type = exe path = tools/client-side/svnconflict install = tools libs = libsvn_client libsvn_wc libsvn_ra libsvn_subr apriconv apr [afl-x509] description = AFL fuzzer for x509 parser type = exe path = subversion/tests/afl sources = afl-x509.c install = test libs = libsvn_subr apr testing = skip [afl-svndiff] description = AFL fuzzer for svndiff to txdelta parser type = exe path = subversion/tests/afl sources = afl-svndiff.c install = test libs = libsvn_delta libsvn_subr apr testing = skip diff --git a/contrib/subversion/configure b/contrib/subversion/configure index 4666c5d0c5fd..76cad5a00cd3 100755 --- a/contrib/subversion/configure +++ b/contrib/subversion/configure @@ -1,30311 +1,30335 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for subversion 1.14.0. +# Generated by GNU Autoconf 2.69 for subversion 1.14.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: http://subversion.apache.org/ about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='subversion' PACKAGE_TARNAME='subversion' -PACKAGE_VERSION='1.14.0' -PACKAGE_STRING='subversion 1.14.0' +PACKAGE_VERSION='1.14.1' +PACKAGE_STRING='subversion 1.14.1' PACKAGE_BUGREPORT='http://subversion.apache.org/' PACKAGE_URL='' ac_unique_file="subversion/include/svn_types.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS SVN_CONFIG_SCRIPT_FILES INCLUDE_OUTPUTS JAVAHL_COMPAT_TESTS_TARGET JAVAHL_TESTS_TARGET JAVA_CLASSPATH LT_CXX_LIBADD FIX_JAVAHL_LIB JAVAHL_OBJDIR INSTALL_EXTRA_JAVAHL_LIB SVN_BUILD_SVNXX_TESTS SVN_BUILD_SVNXX BOOST_LDFLAGS BOOST_CPPFLAGS BOOST_UNIT_TEST_FRAMEWORK_LIB SVN_FS_LIB_LINK SVN_FS_LIB_INSTALL_DEPS SVN_FS_LIB_DEPS SVN_RA_LIB_LINK SVN_RA_LIB_INSTALL_DEPS SVN_RA_LIB_DEPS CTYPESGEN SWIG_PY_FEATURES SWIG_PL_FEATURES SWIG_RB_FEATURES SWIG_FEATURES SWIG_RB_ERRMSG SWIG_RB_TEST_VERBOSE SWIG_RB_SITE_ARCH_DIR SWIG_RB_SITE_LIB_DIR SWIG_RB_COMPILE SWIG_RB_INCLUDES SWIG_RB_LIBS SWIG_RB_LINK SWIG_PL_ERRMSG SWIG_PL_LINK SWIG_PL_INCLUDES SWIG_PY_ERRMSG SWIG_PY_OPTS SWIG_PY_LIBS SWIG_PY_LINK SWIG_PY_COMPILE SWIG_PY_INCLUDES SVN_PY3C_INCLUDES SWIG RUBY_TEENY RUBY_MINOR RUBY_MAJOR RDOC RUBY PERL JNI_INCLUDES JAR JAVAH JAVADOC JAVAC_COMPAT_FLAGS JAVAC_FLAGS JAVAC JAVA JDK PYTHON MOD_ACTIVATION SVN_UTF8PROC_LIBS SVN_UTF8PROC_INCLUDES SVN_LZ4_LIBS SVN_LZ4_INCLUDES SVN_ZLIB_LIBS SVN_ZLIB_INCLUDES shared_only_LDFLAGS libsvn_wc_LDFLAGS libsvn_subr_LDFLAGS libsvn_repos_LDFLAGS libsvn_ra_svn_LDFLAGS libsvn_ra_serf_LDFLAGS libsvn_ra_local_LDFLAGS libsvn_ra_LDFLAGS libsvn_fs_util_LDFLAGS libsvn_fs_fs_LDFLAGS libsvn_fs_base_LDFLAGS libsvn_fs_LDFLAGS libsvn_diff_LDFLAGS libsvn_delta_LDFLAGS libsvn_client_LDFLAGS LIBOBJS BDB_TEST_PROGRAMS BDB_TEST_DEPS INSTALL_RULES INSTALL_STATIC_RULES BUILD_RULES SVN_KWALLET_LIBS SVN_KWALLET_INCLUDES KDE_CONFIG SVN_MAGIC_LIBS SVN_MAGIC_INCLUDES MSGFMTFLAGS NO_GETTEXT_CODESET GETTEXT_CODESET SVN_INTL_LIBS XGETTEXT MSGMERGE MSGFMT SVN_GNOME_KEYRING_PCLIBS SVN_GNOME_KEYRING_LIBS SVN_GNOME_KEYRING_INCLUDES SVN_HAVE_GPG_AGENT SVN_MACOS_KEYCHAIN_LIBS SVN_MACOS_PLIST_LIBS SVN_SASL_LIBS SVN_SASL_INCLUDES SVN_DB_LIBS SVN_DB_INCLUDES SVN_XML_LIBS SVN_XML_INCLUDES DOXYGEN TRANG LT_NO_UNDEFINED TRANSFORM_LIBTOOL_SCRIPTS LT_LDFLAGS LT_CFLAGS SVN_LIBTOOL CXXCPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL AWK RANLIB STRIP ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP LIBTOOL SVN_BINDIR SVN_SQLITE_LIBS SVN_SQLITE_INCLUDES HTTPD_VERSION INSTALL_APACHE_MODS APACHE_LIBEXECDIR APACHE_INCLUDES APACHE_LDFLAGS APXS HTTPD_WHITELIST SVN_APR_MEMCACHE_LIBS SVN_APR_MEMCACHE_INCLUDES SVN_SERF_LIBS SVN_SERF_INCLUDES PKG_CONFIG SVN_LT_SOVERSION SVN_APR_MAJOR_VERSION SVN_APRUTIL_LIBS SVN_APRUTIL_CONFIG SVN_APRUTIL_INCLUDES SVN_APR_SHLIB_PATH_VAR SVN_APR_LIBS SVN_APR_INCLUDES SVN_APR_CONFIG MKDIR INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM LN_S EGREP GREP target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build SED CPP CXXUSERFLAGS CXXMAINTAINERFLAGS CXXNOWARNFLAGS CXXMODEFLAGS ac_ct_CXX CXXFLAGS CXX CUSERFLAGS CMAINTAINERFLAGS CNOWARNFLAGS CMODEFLAGS OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC SWIG_LDFLAGS canonicalized_srcdir abs_builddir abs_srcdir target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_apr with_apr_util with_serf with_apr_memcache enable_apache_whitelist with_apxs with_apache_libexecdir enable_broken_httpd_auth with_sqlite enable_sqlite_compatibility_version enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_experimental_libtool enable_all_static enable_local_library_preloading with_trang with_doxygen with_expat with_berkeley_db enable_bdb6 with_sasl enable_keychain with_gpg_agent with_old_gnome_keyring with_gnome_keyring enable_ev2_impl enable_nls with_libmagic with_kwallet enable_plaintext_password_storage enable_debug enable_optimize enable_disallowing_of_undefined_references enable_maintainer_mode enable_full_version_match with_editor with_zlib with_lz4 with_utf8proc enable_mod_activation enable_gcov enable_gprof with_jdk with_jikes with_swig with_py3c with_ruby_sitedir with_ruby_test_verbose with_ctypesgen enable_runtime_module_search enable_svnxx enable_svnxx_tests with_boost with_boost_libdir with_boost_unit_test_framework enable_javahl with_junit ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CPP LT_SYS_LIBRARY_PATH CXXCPP PYTHON SWIG_FEATURES SWIG_RB_FEATURES SWIG_PL_FEATURES SWIG_PY_FEATURES' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures subversion 1.14.0 to adapt to many kinds of systems. +\`configure' configures subversion 1.14.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/subversion] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of subversion 1.14.0:";; + short | recursive ) echo "Configuration of subversion 1.14.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-apache-whitelist=VER Whitelist a particular Apache version number, typically used to enable the use of a old version patched by a distribution. --enable-broken-httpd-auth Force build against httpd 2.4 with broken auth. (This is not recommended as Subversion will be vulnerable to CVE-2015-3184.) --enable-sqlite-compatibility-version=X.Y.Z Allow binary to run against SQLite as old as ARG --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-experimental-libtool Use APR's libtool --enable-static Build static libraries --enable-shared Build shared libraries --enable-all-static Build completely static (standalone) binaries. --enable-local-library-preloading Enable preloading of locally built libraries in locally built executables. This may be necessary for testing prior to installation on some platforms. It does not work on some platforms (Darwin, OpenBSD, ...). --enable-bdb6 Allow building against BDB 6+. See --with-berkeley-db for specifying the location of the Berkeley DB installation. Using BDB 6 will fail if this option is not used. --disable-keychain Disable use of Mac OS KeyChain for auth credentials --enable-ev2-impl Use Ev2 implementations, where available [EXPERIMENTAL] --disable-nls Disable gettext functionality --enable-plaintext-password-storage Enable on-disk caching of plaintext passwords and passphrases. (Enabling this functionality will not force Subversion to store passwords in plaintext, but does permit users to explicitly allow that behavior via runtime configuration.) --enable-debug Turn on debugging --enable-optimize Turn on optimizations --enable-disallowing-of-undefined-references Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references --enable-maintainer-mode Turn on debugging and very strict compile-time warnings --disable-full-version-match Disable the full version match rules when checking Subversion library compatibility. --enable-mod-activation Enable mod_dav_svn in httpd.conf --enable-gcov Turn on gcov coverage testing (GCC only). --enable-gprof Produce gprof profiling data in 'gmon.out' (GCC only). --enable-runtime-module-search Turn on dynamic loading of RA/FS libraries including third-party FS libraries --enable-svnxx Enable compilation of the C++ bindings (requires C++) --enable-svnxx-tests Enable compilation of tests for the C++ bindings (implies --enable-svnxx, requires Boost and Boost.Test) --enable-javahl Enable compilation of Java high-level bindings (requires C++) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-apr=PATH prefix for installed APR or the full path to apr-config --with-apr-util=PATH prefix for installed APU or the full path to apu-config --with-serf=PREFIX Serf HTTP client library (enabled by default if found) --with-apr_memcache=PREFIX Standalone apr_memcache client library --with-apxs[=FILE] Build shared Apache modules. FILE is the optional pathname to the Apache apxs tool; defaults to "apxs". --with-apache-libexecdir[=PATH] Install Apache modules to Apache's configured modules directory instead of LIBEXECDIR; if PATH is given, install to PATH. --with-sqlite=PREFIX Use installed SQLite library or amalgamation file. --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-trang=PATH Specify the command to run the trang schema converter --with-doxygen=PATH Specify the command to run doxygen --with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS Specify location of Expat --with-berkeley-db[=HEADER:INCLUDES:LIB_SEARCH_DIRS:LIBS] The Subversion Berkeley DB based filesystem library requires Berkeley DB $db_version or $db_alt_version. If you specify `--without-berkeley-db', that library will not be built. If you omit the argument of this option completely, the configure script will use Berkeley DB used by APR-UTIL. --with-sasl=PATH Compile with libsasl2 in PATH --without-gpg-agent Disable support for GPG-Agent --with-old-gnome-keyring Enable old GNOME Keyring for auth credentials (prefer --with-gnome-keyring) --with-gnome-keyring Enable GNOME Keyring for auth credentials (enabled by default if found) --with-libmagic=PREFIX libmagic filetype detection library --with-kwallet[=PATH|INCDIR:LIBDIR] Enable use of KWallet (KDE 5 or 4) for auth credentials. PATH is the KDE install path, alternatively INCDIR:LIBDIR are the header and library install paths. --with-editor=PATH Specify a default editor for the subversion client. --with-zlib=PREFIX zlib compression library --with-lz4=PREFIX|internal look for lz4 in PREFIX or use the internal code --with-utf8proc=PREFIX|internal look for utf8proc in PREFIX or use the internal code --with-jdk=PATH Try to use 'PATH/include' to find the JNI headers. If PATH is not specified, look for a Java Development Kit at JAVA_HOME. --with-jikes=PATH Deprecated. Provided for backward compatibility. --with-swig=PATH Try to use 'PATH/bin/swig' to build the swig bindings. If PATH is not specified, look for a 'swig' binary in your PATH. --with-py3c=PREFIX py3c python extension compatibility library --with-ruby-sitedir=SITEDIR install Ruby bindings in SITEDIR (default is same as ruby's one) --with-ruby-test-verbose=LEVEL how to use output level for Ruby bindings tests (default is normal) --with-ctypesgen=PATH Specify the path to ctypesgen. This can either be the full path to a ctypesgen installation, the full path to a ctypesgen source tree or the full path to ctypesgen.py. --with-boost[=ARG] use Boost library from a standard location (ARG=yes), from the specified location (ARG=), or disable it (ARG=no) [ARG=yes] --with-boost-libdir=LIB_DIR Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located. --with-boost-unit-test-framework[=special-lib] use the Unit_Test_Framework library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-unit-test-framework=boost_unit_test_framework-gcc --with-junit=PATH Specify a path to the junit JAR file. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXXCPP C++ preprocessor PYTHON Python interpreter command SWIG_FEATURES SWIG feature flags common to all bindings SWIG_RB_FEATURES SWIG feature flags specific to Ruby bindings SWIG_PL_FEATURES SWIG feature flags specific to Perl bindings SWIG_PY_FEATURES SWIG feature flags specific to Python bindings Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -subversion configure 1.14.0 +subversion configure 1.14.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------------- ## ## Report this to http://subversion.apache.org/ ## ## -------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by subversion $as_me 1.14.0, which was +It was created by subversion $as_me 1.14.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in build "$srcdir"/build; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in build \"$srcdir\"/build" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.14.0" >&5 -$as_echo "$as_me: Configuring Subversion 1.14.0" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.14.1" >&5 +$as_echo "$as_me: Configuring Subversion 1.14.1" >&6;} abs_srcdir="`cd $srcdir && pwd`" abs_builddir="`pwd`" if test "$abs_srcdir" = "$abs_builddir"; then canonicalized_srcdir="" else canonicalized_srcdir="$srcdir/" fi SWIG_LDFLAGS="$LDFLAGS" # Generate config.nice early (before the arguments are munged) { $as_echo "$as_me:${as_lineno-$LINENO}: creating config.nice" >&5 $as_echo "$as_me: creating config.nice" >&6;} # This little dance satisfies Cygwin, which cannot overwrite in-use files. if test -f "config.nice"; then mv "config.nice" "config.nice.old" fi cat >"config.nice" <&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CFLAGS_KEEP="$CFLAGS" CFLAGS="" if test "$GCC" = "yes"; then _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -std=c90" >&5 $as_echo_n "checking if $CC accepts -std=c90... " >&6; } CFLAGS="-std=c90 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -std=c89" >&5 $as_echo_n "checking if $CC accepts -std=c89... " >&6; } CFLAGS="-std=c89 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -ansi" >&5 $as_echo_n "checking if $CC accepts -ansi... " >&6; } CFLAGS="-ansi $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi CMODEFLAGS="$CFLAGS" CFLAGS="" if test "$GCC" = "yes"; then _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -w" >&5 $as_echo_n "checking if $CC accepts -w... " >&6; } CFLAGS="-w $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi CNOWARNFLAGS="$CFLAGS" CFLAGS="$CFLAGS_KEEP" if test "$GCC" = "yes"; then _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Werror=unknown-warning-option" >&5 $as_echo_n "checking if $CC accepts -Werror=unknown-warning-option... " >&6; } CFLAGS="-Werror=unknown-warning-option $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi # Look for a C++ compiler (before anything can set CXXFLAGS) CXXUSERFLAGS="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS_KEEP="$CXXFLAGS" CXXFLAGS="" if test "$GXX" = "yes"; then _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -std=c++11" >&5 $as_echo_n "checking if $CXX accepts -std=c++11... " >&6; } CXXFLAGS="-std=c++11 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi CXXMODEFLAGS="$CXXFLAGS" CXXFLAGS="" if test "$GXX" = "yes"; then _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -w" >&5 $as_echo_n "checking if $CXX accepts -w... " >&6; } CXXFLAGS="-w $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi CXXNOWARNFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS_KEEP" if test "$GXX" = "yes"; then _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Werror=unknown-warning-option" >&5 $as_echo_n "checking if $CXX accepts -Werror=unknown-warning-option... " >&6; } CXXFLAGS="-Werror=unknown-warning-option $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi # Look for a C pre-processor ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Look for a good sed # AC_PROG_SED was introduced in Autoconf 2.59b { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed # Grab target_cpu, so we can use it in the Solaris pkginfo file # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- # Look for an extended grep { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # If $INSTALL is relative path to our fallback install-sh, then convert # to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool # may try to use it from a changed working directory. if test "$INSTALL" = "build/install-sh -c"; then INSTALL="$abs_srcdir/$INSTALL" fi if test -z "$MKDIR"; then MKDIR="$INSTALL -d" fi # ==== Libraries, for which we may have source to build ====================== -APR_VER_REGEXES="1\.[5-9]\. 2\." +APR_VER_REGEXES="1\.[4-9]\. 2\." APR_WANTED_REGEXES="$APR_VER_REGEXES" { $as_echo "$as_me:${as_lineno-$LINENO}: Apache Portable Runtime (APR) library configuration" >&5 $as_echo "$as_me: Apache Portable Runtime (APR) library configuration" >&6;} apr_found="no" if test "$target_os" = "os2-emx"; then # Scripts don't pass test -x on OS/2 TEST_X="test -f" else TEST_X="test -x" fi acceptable_majors="2 1 0" apr_temp_acceptable_apr_config="" for apr_temp_major in $acceptable_majors do case $apr_temp_major in 0) apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-config" ;; *) apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-$apr_temp_major-config" ;; esac done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for APR" >&5 $as_echo_n "checking for APR... " >&6; } # Check whether --with-apr was given. if test "${with_apr+set}" = set; then : withval=$with_apr; if test "$withval" = "no" || test "$withval" = "yes"; then as_fn_error $? "--with-apr requires a directory or file to be provided" "$LINENO" 5 fi for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config do for lookdir in "$withval/bin" "$withval" do if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then apr_config="$lookdir/$apr_temp_apr_config_file" apr_found="yes" break 2 fi done done if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then apr_config="$withval" apr_found="yes" fi if test "$apr_found" != "yes"; then as_fn_error $? "the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file." "$LINENO" 5 fi else if test -n "1" && test "1" = "1"; then for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config do if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then apr_config="$apr_temp_apr_config_file" apr_found="yes" break else for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then apr_config="$lookdir/bin/$apr_temp_apr_config_file" apr_found="yes" break 2 fi done fi done fi if test "$apr_found" = "no" && test -d """"; then apr_temp_abs_srcdir="`cd \"""\" && pwd`" apr_found="reconfig" apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"""/include/apr_version.h\"`" case $apr_bundled_major in "") as_fn_error $? "failed to find major version of bundled APR" "$LINENO" 5 ;; 0) apr_temp_apr_config_file="apr-config" ;; *) apr_temp_apr_config_file="apr-$apr_bundled_major-config" ;; esac if test -n """"; then apr_config="""/$apr_temp_apr_config_file" else apr_config="""/$apr_temp_apr_config_file" fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_found" >&5 $as_echo "$apr_found" >&6; } if test $apr_found = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: APR not found" >&5 $as_echo "$as_me: WARNING: APR not found" >&2;} echo "The Apache Portable Runtime (APR) library cannot be found." echo "Please install APR on this system and configure Subversion" echo "with the appropriate --with-apr option." echo "" echo "You probably need to do something similar with the Apache" echo "Portable Runtime Utility (APRUTIL) library and then configure" echo "Subversion with both the --with-apr and --with-apr-util options." echo "" as_fn_error $? "no suitable APR found" "$LINENO" 5 fi if test $apr_found = "reconfig"; then as_fn_error $? "Unexpected APR reconfig" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking APR version" >&5 $as_echo_n "checking APR version... " >&6; } apr_version="`$apr_config --version`" if test $? -ne 0; then as_fn_error $? "apr-config --version failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apr_version" >&5 $as_echo "$apr_version" >&6; } APR_WANTED_REGEX_MATCH=0 for apr_wanted_regex in $APR_WANTED_REGEXES; do if test `expr $apr_version : $apr_wanted_regex` -ne 0; then APR_WANTED_REGEX_MATCH=1 break fi done if test $APR_WANTED_REGEX_MATCH -eq 0; then echo "wanted regexes are $APR_WANTED_REGEXES" as_fn_error $? "invalid apr version found" "$LINENO" 5 fi CPPFLAGS="$CPPFLAGS `$apr_config --cppflags`" if test $? -ne 0; then as_fn_error $? "apr-config --cppflags failed" "$LINENO" 5 fi CFLAGS="$CFLAGS `$apr_config --cflags`" if test $? -ne 0; then as_fn_error $? "apr-config --cflags failed" "$LINENO" 5 fi apr_ldflags="`$apr_config --ldflags`" if test $? -ne 0; then as_fn_error $? "apr-config --ldflags failed" "$LINENO" 5 fi LDFLAGS="$LDFLAGS ` input_flags="$apr_ldflags" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SVN_APR_INCLUDES="`$apr_config --includes`" if test $? -ne 0; then as_fn_error $? "apr-config --includes failed" "$LINENO" 5 fi if test "$enable_all_static" = "yes"; then SVN_APR_LIBS="`$apr_config --link-ld --libs`" if test $? -ne 0; then as_fn_error $? "apr-config --link-ld --libs failed" "$LINENO" 5 fi else SVN_APR_LIBS="`$apr_config --link-ld`" if test $? -ne 0; then as_fn_error $? "apr-config --link-ld failed" "$LINENO" 5 fi fi SVN_APR_LIBS="` input_flags="$SVN_APR_LIBS" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SVN_APR_SHLIB_PATH_VAR="`$apr_config --shlib-path-var`" if test $? -ne 0; then as_fn_error $? "apr-config --shlib-path-var failed" "$LINENO" 5 fi SVN_APR_CONFIG="$apr_config" if test `expr $apr_version : 2` -ne 0; then svn_lib_ver=2 apu_config=$apr_config SVN_APRUTIL_CONFIG="$apu_config" SVN_APR_MAJOR_VERSION=2 else svn_lib_ver=0 APU_VER_REGEXES="1\.[3-9]\." APRUTIL_WANTED_REGEXES="$APU_VER_REGEXES" { $as_echo "$as_me:${as_lineno-$LINENO}: Apache Portable Runtime Utility (APRUTIL) library configuration" >&5 $as_echo "$as_me: Apache Portable Runtime Utility (APRUTIL) library configuration" >&6;} apu_found="no" if test "$target_os" = "os2-emx"; then # Scripts don't pass test -x on OS/2 TEST_X="test -f" else TEST_X="test -x" fi acceptable_majors="1 0" apu_temp_acceptable_apu_config="" for apu_temp_major in $acceptable_majors do case $apu_temp_major in 0) apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-config" ;; *) apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-$apu_temp_major-config" ;; esac done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for APR-util" >&5 $as_echo_n "checking for APR-util... " >&6; } # Check whether --with-apr-util was given. if test "${with_apr_util+set}" = set; then : withval=$with_apr_util; if test "$withval" = "no" || test "$withval" = "yes"; then as_fn_error $? "--with-apr-util requires a directory or file to be provided" "$LINENO" 5 fi for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config do for lookdir in "$withval/bin" "$withval" do if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then apu_config="$lookdir/$apu_temp_apu_config_file" apu_found="yes" break 2 fi done done if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then apu_config="$withval" apu_found="yes" fi if test "$apu_found" != "yes"; then as_fn_error $? "the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file." "$LINENO" 5 fi else if test -n "1" && test "1" = "1"; then for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config do if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then apu_config="$apu_temp_apu_config_file" apu_found="yes" break else for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then apu_config="$lookdir/bin/$apu_temp_apu_config_file" apu_found="yes" break 2 fi done fi done fi if test "$apu_found" = "no" && test -d """"; then apu_temp_abs_srcdir="`cd \"""\" && pwd`" apu_found="reconfig" apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"""/include/apu_version.h\"`" case $apu_bundled_major in "") as_fn_error $? "failed to find major version of bundled APU" "$LINENO" 5 ;; 0) apu_temp_apu_config_file="apu-config" ;; *) apu_temp_apu_config_file="apu-$apu_bundled_major-config" ;; esac if test -n """"; then apu_config="""/$apu_temp_apu_config_file" else apu_config="""/$apu_temp_apu_config_file" fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apu_found" >&5 $as_echo "$apu_found" >&6; } if test $apu_found = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: APRUTIL not found" >&5 $as_echo "$as_me: WARNING: APRUTIL not found" >&2;} echo "The Apache Portable Runtime Utility (APRUTIL) library cannot be found." echo "Install APRUTIL on this system and configure Subversion with the" echo " appropriate --with-apr-util option." echo "" as_fn_error $? "no suitable APRUTIL found" "$LINENO" 5 fi if test $apu_found = "reconfig"; then as_fn_error $? "Unexpected APRUTIL reconfig" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking APRUTIL version" >&5 $as_echo_n "checking APRUTIL version... " >&6; } apu_version="`$apu_config --version`" if test $? -ne 0; then # This is a hack as suggested by Ben Collins-Sussman. It can be # removed after apache 2.0.44 has been released. (The apu-config # shipped in 2.0.43 contains a correct version number, but # stupidly doesn't understand the --version switch.) apu_version=`grep "APRUTIL_DOTTED_VERSION=" $(which $apu_config) | tr -d "APRUTIL_DOTTED_VERSION="| tr -d '"'` #AC_MSG_ERROR([ # apu-config --version failed. # Your apu-config doesn't support the --version switch, please upgrade # to APR-UTIL more recent than 2002-Nov-05.]) fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apu_version" >&5 $as_echo "$apu_version" >&6; } APU_WANTED_REGEX_MATCH=0 for apu_wanted_regex in $APRUTIL_WANTED_REGEXES; do if test `expr $apu_version : $apu_wanted_regex` -ne 0; then APU_WANTED_REGEX_MATCH=1 break fi done if test $APU_WANTED_REGEX_MATCH -eq 0; then echo "wanted regexes are $APRUTIL_WANTED_REGEXES" as_fn_error $? "invalid APRUTIL version found" "$LINENO" 5 fi apu_ldflags="`$apu_config --ldflags`" if test $? -ne 0; then as_fn_error $? "apu-config --ldflags failed" "$LINENO" 5 fi LDFLAGS="$LDFLAGS ` input_flags="$apu_ldflags" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SVN_APRUTIL_INCLUDES="`$apu_config --includes`" if test $? -ne 0; then as_fn_error $? "apu-config --includes failed" "$LINENO" 5 fi if test "$enable_all_static" = "yes"; then SVN_APRUTIL_LIBS="`$apu_config --link-ld --libs`" if test $? -ne 0; then as_fn_error $? "apu-config --link-ld --libs failed" "$LINENO" 5 fi else SVN_APRUTIL_LIBS="`$apu_config --link-ld`" if test $? -ne 0; then as_fn_error $? "apu-config --link-ld failed" "$LINENO" 5 fi fi SVN_APRUTIL_LIBS="` input_flags="$SVN_APRUTIL_LIBS" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SVN_APRUTIL_CONFIG="$apu_config" SVN_HAVE_OLD_EXPAT="`$apu_config --old-expat`" if test "$SVN_HAVE_OLD_EXPAT" = "yes"; then $as_echo "#define SVN_HAVE_OLD_EXPAT 1" >>confdefs.h fi SVN_APR_MAJOR_VERSION=1 fi SVN_LT_SOVERSION="-version-info $svn_lib_ver" cat >>confdefs.h <<_ACEOF #define SVN_SOVERSION $svn_lib_ver _ACEOF # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done serf_found=no serf_required=no serf_skip=no serf_check_major="1" serf_check_minor="3" serf_check_patch="4" serf_check_version="1.3.4" # Check whether --with-serf was given. if test "${with_serf+set}" = set; then : withval=$with_serf; if test "$withval" = "yes" ; then serf_required=yes elif test "$withval" = "no" ; then serf_skip=yes else serf_required=yes serf_prefix="$withval" fi fi if test "$serf_skip" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: serf library configuration via pkg-config" >&5 $as_echo "$as_me: serf library configuration via pkg-config" >&6;} if test -n "$PKG_CONFIG"; then for serf_major in serf-2 serf-1; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $serf_major library" >&5 $as_echo_n "checking for $serf_major library... " >&6; } if test -n "$serf_prefix" ; then if test -e "$serf_prefix/$serf_major.pc" ; then serf_pc_arg="$serf_prefix/$serf_major.pc" elif test -e "$serf_prefix/lib/pkgconfig/$serf_major.pc" ; then serf_pc_arg="$serf_prefix/lib/pkgconfig/$serf_major.pc" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } continue fi else serf_pc_arg="$serf_major" fi if $PKG_CONFIG $serf_pc_arg --exists; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking serf library version" >&5 $as_echo_n "checking serf library version... " >&6; } SERF_VERSION=`$PKG_CONFIG $serf_pc_arg --modversion` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SERF_VERSION" >&5 $as_echo "$SERF_VERSION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking serf version is suitable" >&5 $as_echo_n "checking serf version is suitable... " >&6; } if $PKG_CONFIG $serf_pc_arg --atleast-version=$serf_check_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } serf_found=yes SVN_SERF_INCLUDES=`$PKG_CONFIG $serf_pc_arg --cflags-only-I` SVN_SERF_LIBS=`$PKG_CONFIG $serf_pc_arg --libs-only-l` LDFLAGS="$LDFLAGS `$PKG_CONFIG $serf_pc_arg --libs | $SED -e 's/-l[^ ]*//g'`" break else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Serf version too old: need $serf_check_version" >&5 $as_echo "$as_me: WARNING: Serf version too old: need $serf_check_version" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi done fi if test -n "$serf_prefix" && test "$serf_found" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: serf library configuration via prefix" >&5 $as_echo "$as_me: serf library configuration via prefix" >&6;} serf_required=yes for serf_major in serf-2 serf-1; do if ! test -d $serf_prefix/include/$serf_major; then continue; fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$serf_prefix/include/$serf_major" for ac_header in serf.h do : ac_fn_c_check_header_mongrel "$LINENO" "serf.h" "ac_cv_header_serf_h" "$ac_includes_default" if test "x$ac_cv_header_serf_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SERF_H 1 _ACEOF save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS ` input_flags="-L$serf_prefix/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" as_ac_Lib=`$as_echo "ac_cv_lib_$serf_major''_serf_context_create" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for serf_context_create in -l$serf_major" >&5 $as_echo_n "checking for serf_context_create in -l$serf_major... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$serf_major $SVN_APRUTIL_LIBS $SVN_APR_LIBS -lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char serf_context_create (); int main () { return serf_context_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include "serf.h" int main () { #if ! SERF_VERSION_AT_LEAST($serf_check_major, $serf_check_minor, $serf_check_patch) #error Serf version too old: need $serf_check_version #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : serf_found=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Serf version too old: need $serf_check_version" >&5 $as_echo "$as_me: WARNING: Serf version too old: need $serf_check_version" >&2;} serf_found=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi LDFLAGS="$save_ldflags" fi done CPPFLAGS="$save_cppflags" test $serf_found = yes && break done if test $serf_found = "yes"; then SVN_SERF_INCLUDES="-I$serf_prefix/include/$serf_major" if test -e "$serf_prefix/lib/lib$serf_major.la"; then SVN_SERF_LIBS="$serf_prefix/lib/lib$serf_major.la" else SVN_SERF_LIBS="-l$serf_major" LDFLAGS="$LDFLAGS ` input_flags="-L$serf_prefix/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking was serf enabled" >&5 $as_echo_n "checking was serf enabled... " >&6; } if test "$serf_found" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "" echo "An appropriate version of serf could not be found, so libsvn_ra_serf" echo "will not be built. If you want to build libsvn_ra_serf, please" echo "install serf $serf_check_version or newer." echo "" if test "$serf_required" = "yes"; then as_fn_error $? "Serf was explicitly enabled but an appropriate version was not found." "$LINENO" 5 fi fi fi svn_lib_serf=$serf_found if test "$svn_lib_serf" = "yes"; then $as_echo "#define SVN_HAVE_SERF 1" >>confdefs.h fi apr_memcache_found=no # Check whether --with-apr_memcache was given. if test "${with_apr_memcache+set}" = set; then : withval=$with_apr_memcache; if test "$withval" = "yes" ; then as_fn_error $? "--with-apr_memcache requires an argument." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: looking for separate apr_memcache package" >&5 $as_echo "$as_me: looking for separate apr_memcache package" >&6;} apr_memcache_prefix=$withval save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$apr_memcache_prefix/include/apr_memcache-0" ac_fn_c_check_header_mongrel "$LINENO" "apr_memcache.h" "ac_cv_header_apr_memcache_h" "$ac_includes_default" if test "x$ac_cv_header_apr_memcache_h" = xyes; then : save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -L$apr_memcache_prefix/lib" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for apr_memcache_create in -lapr_memcache" >&5 $as_echo_n "checking for apr_memcache_create in -lapr_memcache... " >&6; } if ${ac_cv_lib_apr_memcache_apr_memcache_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lapr_memcache $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char apr_memcache_create (); int main () { return apr_memcache_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_apr_memcache_apr_memcache_create=yes else ac_cv_lib_apr_memcache_apr_memcache_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_apr_memcache_apr_memcache_create" >&5 $as_echo "$ac_cv_lib_apr_memcache_apr_memcache_create" >&6; } if test "x$ac_cv_lib_apr_memcache_apr_memcache_create" = xyes; then : apr_memcache_found="standalone" fi LDFLAGS="$save_ldflags" fi CPPFLAGS="$save_cppflags" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: looking for apr_memcache as part of apr-util" >&5 $as_echo "$as_me: looking for apr_memcache as part of apr-util" >&6;} save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES" ac_fn_c_check_header_mongrel "$LINENO" "apr_memcache.h" "ac_cv_header_apr_memcache_h" "$ac_includes_default" if test "x$ac_cv_header_apr_memcache_h" = xyes; then : save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS $SVN_APRUTIL_LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for apr_memcache_create in -laprutil-1" >&5 $as_echo_n "checking for apr_memcache_create in -laprutil-1... " >&6; } if ${ac_cv_lib_aprutil_1_apr_memcache_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-laprutil-1 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char apr_memcache_create (); int main () { return apr_memcache_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_aprutil_1_apr_memcache_create=yes else ac_cv_lib_aprutil_1_apr_memcache_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aprutil_1_apr_memcache_create" >&5 $as_echo "$ac_cv_lib_aprutil_1_apr_memcache_create" >&6; } if test "x$ac_cv_lib_aprutil_1_apr_memcache_create" = xyes; then : apr_memcache_found="aprutil" fi LDFLAGS="$save_ldflags" fi CPPFLAGS="$save_cppflags" fi if test $apr_memcache_found = "standalone"; then SVN_APR_MEMCACHE_INCLUDES="-I$apr_memcache_prefix/include/apr_memcache-0" SVN_APR_MEMCACHE_LIBS="$apr_memcache_prefix/lib/libapr_memcache.la" svn_lib_apr_memcache=yes elif test $apr_memcache_found = "aprutil"; then SVN_APR_MEMCACHE_INCLUDES="" SVN_APR_MEMCACHE_LIBS="" svn_lib_apr_memcache=yes elif test $apr_memcache_found = "reconfig"; then svn_lib_apr_memcache=yes else svn_lib_apr_memcache=no fi if test "$svn_lib_apr_memcache" = "yes"; then $as_echo "#define SVN_HAVE_MEMCACHE 1" >>confdefs.h fi # Check whether --enable-apache-whitelist was given. if test "${enable_apache_whitelist+set}" = set; then : enableval=$enable_apache_whitelist; apache_whitelist_ver=$enableval else apache_whitelist_ver=no fi HTTPD_WHITELIST="$apache_whitelist_ver" HTTPD_WANTED_MMN="20051115" HTTPD_WHITELIST_VER="$apache_whitelist_ver" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Apache module support via DSO through APXS" >&5 $as_echo_n "checking for Apache module support via DSO through APXS... " >&6; } # Check whether --with-apxs was given. if test "${with_apxs+set}" = set; then : withval=$with_apxs; if test "$withval" = "yes"; then APXS=apxs else APXS="$withval" fi APXS_EXPLICIT=1 fi if test -z "$APXS"; then for i in /usr/local/apache2/bin /usr/local/apache/bin /usr/bin /usr/sbin ; do if test -f "$i/apxs2"; then APXS="$i/apxs2" break fi if test -f "$i/apxs"; then APXS="$i/apxs" break fi done fi if test -n "$APXS" && test "$APXS" != "no"; then APXS_INCLUDE="`$APXS -q INCLUDEDIR`" if test -r $APXS_INCLUDE/mod_dav.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: found at $APXS" >&5 $as_echo "found at $APXS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking httpd version" >&5 $as_echo_n "checking httpd version... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "$APXS_INCLUDE/ap_mmn.h" #if AP_MODULE_MAGIC_AT_LEAST($HTTPD_WANTED_MMN,0) VERSION_OKAY #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "VERSION_OKAY" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: recent enough" >&5 $as_echo "recent enough" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: apache too old: mmn must be at least $HTTPD_WANTED_MMN" >&5 $as_echo "apache too old: mmn must be at least $HTTPD_WANTED_MMN" >&6; } if test "$APXS_EXPLICIT" != ""; then as_fn_error $? "Apache APXS build explicitly requested, but apache version is too old" "$LINENO" 5 fi APXS="" fi rm -f conftest* elif test "$APXS_EXPLICIT" != ""; then as_fn_error $? "no - APXS refers to an old version of Apache Unable to locate $APXS_INCLUDE/mod_dav.h" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - Unable to locate $APXS_INCLUDE/mod_dav.h" >&5 $as_echo "no - Unable to locate $APXS_INCLUDE/mod_dav.h" >&6; } APXS="" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # check for some busted versions of mod_dav # in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are # troublesome for Subversion: # PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304 # PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306 # PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397 if test -n "$APXS" && test "$APXS" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking mod_dav version" >&5 $as_echo_n "checking mod_dav version... " >&6; } HTTPD_MAJOR=`$SED -ne '/^#define AP_SERVER_MAJORVERSION_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'` HTTPD_MINOR=`$SED -ne '/^#define AP_SERVER_MINORVERSION_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'` HTTPD_PATCH=`$SED -ne '/^#define AP_SERVER_PATCHLEVEL_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'` HTTPD_VERSION="${HTTPD_MAJOR}.${HTTPD_MINOR}.${HTTPD_PATCH}" case "$HTTPD_VERSION" in $HTTPD_WHITELIST_VER) { $as_echo "$as_me:${as_lineno-$LINENO}: result: acceptable (whitelist)" >&5 $as_echo "acceptable (whitelist)" >&6; } ;; 2.2.25 | 2.4.[5-6]) { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken" >&5 $as_echo "broken" >&6; } as_fn_error $? "Apache httpd version $HTTPD_VERSION includes a broken mod_dav; use a newer version of httpd" "$LINENO" 5 ;; 2.[0-9]*.[0-9]*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: acceptable" >&5 $as_echo "acceptable" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unrecognised" >&5 $as_echo "unrecognised" >&6; } as_fn_error $? "Apache httpd version $HTTPD_VERSION not recognised" "$LINENO" 5 ;; esac fi if test -n "$APXS" && test "$APXS" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Apache version is compatible with APR version" >&5 $as_echo_n "checking whether Apache version is compatible with APR version... " >&6; } apr_major_version="${apr_version%%.*}" case "$apr_major_version" in 0) apache_minor_version_wanted_regex="0" ;; 1) apache_minor_version_wanted_regex="[1-5]" ;; 2) apache_minor_version_wanted_regex="[3-5]" ;; *) as_fn_error $? "unknown APR version" "$LINENO" 5 ;; esac case $HTTPD_MINOR in $apache_minor_version_wanted_regex) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Apache version $HTTPD_VERSION incompatible with APR version $apr_version" "$LINENO" 5 ;; esac fi # Check whether --with-apache-libexecdir was given. if test "${with_apache_libexecdir+set}" = set; then : withval=$with_apache_libexecdir; APACHE_LIBEXECDIR="$withval" else APACHE_LIBEXECDIR='no' fi INSTALL_APACHE_MODS=false if test -n "$APXS" && test "$APXS" != "no"; then APXS_CC="`$APXS -q CC`" APACHE_INCLUDES="$APACHE_INCLUDES -I$APXS_INCLUDE" if test "$APACHE_LIBEXECDIR" = 'no'; then APACHE_LIBEXECDIR="$libexecdir" elif test "$APACHE_LIBEXECDIR" = 'yes'; then APACHE_LIBEXECDIR="`$APXS -q libexecdir`" fi for ac_header in unistd.h do : ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UNISTD_H 1 _ACEOF for ac_func in getpid do : ac_fn_c_check_func "$LINENO" "getpid" "ac_cv_func_getpid" if test "x$ac_cv_func_getpid" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETPID 1 _ACEOF fi done fi done MMN_MAJOR=`$SED -ne '/^#define MODULE_MAGIC_NUMBER_MAJOR/p' "$APXS_INCLUDE/ap_mmn.h" | $SED -e 's/^.*MAJOR *//'` MMN_MINOR=`$SED -ne '/^#define MODULE_MAGIC_NUMBER_MINOR/p' "$APXS_INCLUDE/ap_mmn.h" | $SED -e 's/^.*MINOR *//' | $SED -e 's/ .*//'` if test "$MMN_MAJOR" = "20120211" && test "$MMN_MINOR" -lt "47" ; then # This is httpd 2.4 and it doesn't appear to have the required # API but the installation may have been patched. # Check whether --enable-broken-httpd-auth was given. if test "${enable_broken_httpd_auth+set}" = set; then : enableval=$enable_broken_httpd_auth; broken_httpd_auth=$enableval else broken_httpd_auth=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ap_some_authn_required" >&5 $as_echo_n "checking for ap_some_authn_required... " >&6; } old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $APACHE_INCLUDES $SVN_APR_INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "http_request.h" _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "int.*\sap_some_authn_required\s*\(" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } working_auth=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f conftest* CPPFLAGS="$old_CPPFLAGS" if test "$working_auth" = "yes" ; then $as_echo "#define SVN_USE_FORCE_AUTHN 1" >>confdefs.h elif test "$enable_broken_httpd_auth" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ==============================================" >&5 $as_echo "$as_me: WARNING: ==============================================" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR" >&5 $as_echo "$as_me: WARNING: Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion will be vulnerable to CVE-2015-3184" >&5 $as_echo "$as_me: WARNING: Subversion will be vulnerable to CVE-2015-3184" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ==============================================" >&5 $as_echo "$as_me: WARNING: ==============================================" >&2;} $as_echo "#define SVN_ALLOW_BROKEN_HTTPD_AUTH 1" >>confdefs.h else as_fn_error $? "Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR has broken auth (CVE-2015-3184)" "$LINENO" 5 fi fi BUILD_APACHE_RULE=apache-mod INSTALL_APACHE_RULE=install-mods-shared INSTALL_APACHE_MODS=true case $host in *-*-cygwin*) APACHE_LDFLAGS="-shrext .so" ;; esac elif test x"$APXS" != x"no"; then echo "==================================================================" echo "WARNING: skipping the build of mod_dav_svn" echo " try using --with-apxs" echo "==================================================================" fi # there aren't any flags that interest us ... #if test -n "$APXS" && test "$APXS" != "no"; then # CFLAGS="$CFLAGS `$APXS -q CFLAGS CFLAGS_SHLIB`" #fi if test -n "$APXS_CC" && test "$APXS_CC" != "$CC" ; then echo "==================================================================" echo "WARNING: You have chosen to compile Subversion with a different" echo " compiler than the one used to compile Apache." echo "" echo " Current compiler: $CC" echo " Apache's compiler: $APXS_CC" echo "" echo "This could cause some problems." echo "==================================================================" fi SQLITE_MINIMUM_VER="3.8.2" SQLITE_RECOMMENDED_VER="3.8.11.1" SQLITE_RECOMMENDED_VER_REL_YEAR="2015" SQLITE_URL="https://www.sqlite.org/$SQLITE_RECOMMENDED_VER_REL_YEAR/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip" SQLITE_MINIMUM_VER="${SQLITE_MINIMUM_VER}" SQLITE_RECOMMENDED_VER="${SQLITE_RECOMMENDED_VER}" SQLITE_URL="${SQLITE_URL}" SQLITE_PKGNAME="sqlite3" version_string="$SQLITE_MINIMUM_VER" major=`expr $version_string : '\([0-9]*\)'` minor=`expr $version_string : '[0-9]*\.\([0-9]*\)'` micro=`expr $version_string : '[0-9]*\.[0-9]*\.\([0-9]*\)'` if test -z "$micro"; then micro=0 fi sqlite_min_ver_num=`expr $major \* 1000000 \ \+ $minor \* 1000 \ \+ $micro` { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite library" >&5 $as_echo "$as_me: checking sqlite library" >&6;} # Check whether --with-sqlite was given. if test "${with_sqlite+set}" = set; then : withval=$with_sqlite; if test "$withval" = "yes" ; then as_fn_error $? "--with-sqlite requires an argument." "$LINENO" 5 else sqlite_dir="$withval" fi if test -d $sqlite_dir; then if test -z "$sqlite_dir"; then sqlite_dir="" sqlite_include="sqlite3.h" else sqlite_dir="$sqlite_dir" sqlite_include="$sqlite_dir/include/sqlite3.h" fi save_CPPFLAGS="$CPPFLAGS" save_LDFLAGS="$LDFLAGS" if test ! -z "$sqlite_dir"; then CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include" LDFLAGS="$LDFLAGS -L$sqlite_dir/lib" fi ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" if test "x$ac_cv_header_sqlite3_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite library version (via header)" >&5 $as_echo_n "checking sqlite library version (via header)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "$sqlite_include" #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num SQLITE_VERSION_OKAY #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "SQLITE_VERSION_OKAY" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: okay" >&5 $as_echo "okay" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_close in -lsqlite3" >&5 $as_echo_n "checking for sqlite3_close in -lsqlite3... " >&6; } if ${ac_cv_lib_sqlite3_sqlite3_close+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsqlite3 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sqlite3_close (); int main () { return sqlite3_close (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_sqlite3_sqlite3_close=yes else ac_cv_lib_sqlite3_sqlite3_close=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_close" >&5 $as_echo "$ac_cv_lib_sqlite3_sqlite3_close" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_close" = xyes; then : svn_lib_sqlite="yes" if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then SVN_SQLITE_LIBS="-lsqlite3" else SVN_SQLITE_INCLUDES="-I$sqlite_dir/include" SVN_SQLITE_LIBS="` input_flags="-L$sqlite_dir/lib -lsqlite3" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported SQLite version" >&5 $as_echo "unsupported SQLite version" >&6; } fi rm -f conftest* fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" else sqlite_amalg="$sqlite_dir" { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite amalgamation" >&5 $as_echo_n "checking sqlite amalgamation... " >&6; } if test ! -e $sqlite_amalg; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite amalgamation file version" >&5 $as_echo_n "checking sqlite amalgamation file version... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "$sqlite_amalg" #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num SQLITE_VERSION_OKAY #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "SQLITE_VERSION_OKAY" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: amalgamation found and is okay" >&5 $as_echo "amalgamation found and is okay" >&6; } case $host_os in beos* | mingw* | pw32* | cegcc* | cygwin*) svn_sqlite_dso_ldflags= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" svn_sqlite_dso_ldflags="-ldl" else svn_sqlite_dso_ldflags= fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : svn_sqlite_dso_ldflags= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : svn_sqlite_dso_ldflags="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : svn_sqlite_dso_ldflags= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : svn_sqlite_dso_ldflags="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : svn_sqlite_dso_ldflags="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : svn_sqlite_dso_ldflags="-ldld" fi fi fi fi fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking additional libraries for sqlite" >&5 $as_echo_n "checking additional libraries for sqlite... " >&6; } if test -n "$svn_sqlite_dso_ldflags"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${svn_sqlite_dso_ldflags}" >&5 $as_echo "${svn_sqlite_dso_ldflags}" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi $as_echo "#define SVN_SQLITE_INLINE 1" >>confdefs.h SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`" if test -n "$svn_sqlite_dso_ldflags"; then SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread" else SVN_SQLITE_LIBS="-lpthread" fi svn_lib_sqlite="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported amalgamation SQLite version" >&5 $as_echo "unsupported amalgamation SQLite version" >&6; } fi rm -f conftest* fi fi if test -z "$svn_lib_sqlite"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no suitable sqlite found in $sqlite_dir" >&5 $as_echo "$as_me: WARNING: no suitable sqlite found in $sqlite_dir" >&2;} echo "" echo "An appropriate version of sqlite could not be found. We recommmend" echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}." echo "Please either install a newer sqlite on this system" echo "" echo "or" echo "" echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:" echo " ${SQLITE_URL}" echo "unpack the archive using unzip and rename the resulting" echo "directory to:" echo "$abs_srcdir/sqlite-amalgamation" if test x"$abs_srcdir" != x"$abs_builddir"; then echo "or to:" echo "$abs_builddir/sqlite-amalgamation" fi echo "" as_fn_error $? "Subversion requires SQLite" "$LINENO" 5 fi else sqlite_amalg="$abs_srcdir/sqlite-amalgamation/sqlite3.c" { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite amalgamation" >&5 $as_echo_n "checking sqlite amalgamation... " >&6; } if test ! -e $sqlite_amalg; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite amalgamation file version" >&5 $as_echo_n "checking sqlite amalgamation file version... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "$sqlite_amalg" #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num SQLITE_VERSION_OKAY #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "SQLITE_VERSION_OKAY" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: amalgamation found and is okay" >&5 $as_echo "amalgamation found and is okay" >&6; } case $host_os in beos* | mingw* | pw32* | cegcc* | cygwin*) svn_sqlite_dso_ldflags= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" svn_sqlite_dso_ldflags="-ldl" else svn_sqlite_dso_ldflags= fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : svn_sqlite_dso_ldflags= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : svn_sqlite_dso_ldflags="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : svn_sqlite_dso_ldflags= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : svn_sqlite_dso_ldflags="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : svn_sqlite_dso_ldflags="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : svn_sqlite_dso_ldflags="-ldld" fi fi fi fi fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking additional libraries for sqlite" >&5 $as_echo_n "checking additional libraries for sqlite... " >&6; } if test -n "$svn_sqlite_dso_ldflags"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${svn_sqlite_dso_ldflags}" >&5 $as_echo "${svn_sqlite_dso_ldflags}" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi $as_echo "#define SVN_SQLITE_INLINE 1" >>confdefs.h SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`" if test -n "$svn_sqlite_dso_ldflags"; then SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread" else SVN_SQLITE_LIBS="-lpthread" fi svn_lib_sqlite="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported amalgamation SQLite version" >&5 $as_echo "unsupported amalgamation SQLite version" >&6; } fi rm -f conftest* fi if test -z "$svn_lib_sqlite"; then sqlite_amalg="$abs_builddir/sqlite-amalgamation/sqlite3.c" { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite amalgamation" >&5 $as_echo_n "checking sqlite amalgamation... " >&6; } if test ! -e $sqlite_amalg; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite amalgamation file version" >&5 $as_echo_n "checking sqlite amalgamation file version... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "$sqlite_amalg" #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num SQLITE_VERSION_OKAY #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "SQLITE_VERSION_OKAY" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: amalgamation found and is okay" >&5 $as_echo "amalgamation found and is okay" >&6; } case $host_os in beos* | mingw* | pw32* | cegcc* | cygwin*) svn_sqlite_dso_ldflags= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" svn_sqlite_dso_ldflags="-ldl" else svn_sqlite_dso_ldflags= fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : svn_sqlite_dso_ldflags= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : svn_sqlite_dso_ldflags="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : svn_sqlite_dso_ldflags= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : svn_sqlite_dso_ldflags="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : svn_sqlite_dso_ldflags="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : svn_sqlite_dso_ldflags="-ldld" fi fi fi fi fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking additional libraries for sqlite" >&5 $as_echo_n "checking additional libraries for sqlite... " >&6; } if test -n "$svn_sqlite_dso_ldflags"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${svn_sqlite_dso_ldflags}" >&5 $as_echo "${svn_sqlite_dso_ldflags}" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi $as_echo "#define SVN_SQLITE_INLINE 1" >>confdefs.h SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`" if test -n "$svn_sqlite_dso_ldflags"; then SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread" else SVN_SQLITE_LIBS="-lpthread" fi svn_lib_sqlite="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported amalgamation SQLite version" >&5 $as_echo "unsupported amalgamation SQLite version" >&6; } fi rm -f conftest* fi fi if test -z "$svn_lib_sqlite"; then if test -z ""; then sqlite_dir="" sqlite_include="sqlite3.h" else sqlite_dir="" sqlite_include="/include/sqlite3.h" fi save_CPPFLAGS="$CPPFLAGS" save_LDFLAGS="$LDFLAGS" if test ! -z ""; then CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include" LDFLAGS="$LDFLAGS -L$sqlite_dir/lib" fi ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" if test "x$ac_cv_header_sqlite3_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite library version (via header)" >&5 $as_echo_n "checking sqlite library version (via header)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "$sqlite_include" #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num SQLITE_VERSION_OKAY #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "SQLITE_VERSION_OKAY" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: okay" >&5 $as_echo "okay" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_close in -lsqlite3" >&5 $as_echo_n "checking for sqlite3_close in -lsqlite3... " >&6; } if ${ac_cv_lib_sqlite3_sqlite3_close+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsqlite3 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sqlite3_close (); int main () { return sqlite3_close (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_sqlite3_sqlite3_close=yes else ac_cv_lib_sqlite3_sqlite3_close=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_close" >&5 $as_echo "$ac_cv_lib_sqlite3_sqlite3_close" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_close" = xyes; then : svn_lib_sqlite="yes" if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then SVN_SQLITE_LIBS="-lsqlite3" else SVN_SQLITE_INCLUDES="-I$sqlite_dir/include" SVN_SQLITE_LIBS="` input_flags="-L$sqlite_dir/lib -lsqlite3" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported SQLite version" >&5 $as_echo "unsupported SQLite version" >&6; } fi rm -f conftest* fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" fi if test -z "$svn_lib_sqlite"; then if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking sqlite library version (via pkg-config)" >&5 $as_echo_n "checking sqlite library version (via pkg-config)... " >&6; } sqlite_version=`$PKG_CONFIG $SQLITE_PKGNAME --modversion --silence-errors` if test -n "$sqlite_version"; then version_string="$sqlite_version" major=`expr $version_string : '\([0-9]*\)'` minor=`expr $version_string : '[0-9]*\.\([0-9]*\)'` micro=`expr $version_string : '[0-9]*\.[0-9]*\.\([0-9]*\)'` if test -z "$micro"; then micro=0 fi sqlite_ver_num=`expr $major \* 1000000 \ \+ $minor \* 1000 \ \+ $micro` if test "$sqlite_ver_num" -ge "$sqlite_min_ver_num"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sqlite_version" >&5 $as_echo "$sqlite_version" >&6; } svn_lib_sqlite="yes" SVN_SQLITE_INCLUDES="`$PKG_CONFIG $SQLITE_PKGNAME --cflags`" SVN_SQLITE_LIBS="`$PKG_CONFIG $SQLITE_PKGNAME --libs`" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none or unsupported $sqlite_version" >&5 $as_echo "none or unsupported $sqlite_version" >&6; } fi fi fi if test -z "$svn_lib_sqlite"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$svn_lib_sqlite"; then echo "" echo "An appropriate version of sqlite could not be found. We recommmend" echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}." echo "Please either install a newer sqlite on this system" echo "" echo "or" echo "" echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:" echo " ${SQLITE_URL}" echo "unpack the archive using unzip and rename the resulting" echo "directory to:" echo "$abs_srcdir/sqlite-amalgamation" if test x"$abs_srcdir" != x"$abs_builddir"; then echo "or to:" echo "$abs_builddir/sqlite-amalgamation" fi echo "" as_fn_error $? "Subversion requires SQLite" "$LINENO" 5 fi fi # Check whether --enable-sqlite-compatibility-version was given. if test "${enable_sqlite_compatibility_version+set}" = set; then : enableval=$enable_sqlite_compatibility_version; sqlite_compat_ver=$enableval else sqlite_compat_ver=no fi if test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then version_string="$sqlite_compat_ver" major=`expr $version_string : '\([0-9]*\)'` minor=`expr $version_string : '[0-9]*\.\([0-9]*\)'` micro=`expr $version_string : '[0-9]*\.[0-9]*\.\([0-9]*\)'` if test -z "$micro"; then micro=0 fi sqlite_compat_ver_num=`expr $major \* 1000000 \ \+ $minor \* 1000 \ \+ $micro` CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS" CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler provides atomic builtins" >&5 $as_echo_n "checking whether the compiler provides atomic builtins... " >&6; } if ${svn_cv_atomic_builtins+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : svn_cv_atomic_builtins=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main() { unsigned long long val = 1010, tmp, *mem = &val; if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020) return 1; tmp = val; if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010) return 1; if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0) return 1; tmp = 3030; if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp) return 1; if (__sync_lock_test_and_set(&val, 4040) != 3030) return 1; mem = &tmp; if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp) return 1; __sync_synchronize(); if (mem != &val) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : svn_cv_atomic_builtins=yes else svn_cv_atomic_builtins=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_atomic_builtins" >&5 $as_echo "$svn_cv_atomic_builtins" >&6; } if test "$svn_cv_atomic_builtins" = "yes"; then $as_echo "#define SVN_HAS_ATOMIC_BUILTINS 1" >>confdefs.h fi if test "${bindir}" = '${exec_prefix}/bin'; then if test "${exec_prefix}" = "NONE"; then if test "${prefix}" = "NONE"; then SVN_BINDIR="${ac_default_prefix}/bin" else SVN_BINDIR="${prefix}/bin" fi else SVN_BINDIR="${exec_prefix}/bin" fi else SVN_BINDIR="${bindir}" fi SVN_BINDIR="`eval echo ${SVN_BINDIR}`" cat >>confdefs.h <<_ACEOF #define SVN_BINDIR "${SVN_BINDIR}" _ACEOF localedir='${datadir}/locale' if test "${prefix}" = "NONE" \ && ( test "${datadir}" = '${prefix}/share' \ || ( test "${datadir}" = '${datarootdir}' \ && test "${datarootdir}" = '${prefix}/share' ) ); then exp_localedir='${ac_default_prefix}/share/locale' else exp_localedir=$localedir fi svn_last= svn_cur=""${exp_localedir}"" while test "x${svn_cur}" != "x${svn_last}"; do svn_last="${svn_cur}" svn_cur=`eval "echo ${svn_cur}"` done svn_localedir="${svn_cur}" cat >>confdefs.h <<_ACEOF #define SVN_LOCALE_DIR "${svn_localedir}" _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: configuring libtool now" >&5 $as_echo "$as_me: configuring libtool now" >&6;} case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Check whether --enable-experimental-libtool was given. if test "${enable_experimental_libtool+set}" = set; then : enableval=$enable_experimental_libtool; experimental_libtool=$enableval else experimental_libtool=no fi if test "$experimental_libtool" = "yes"; then echo "using APR's libtool" sh_libtool="`$apr_config --apr-libtool`" LIBTOOL="$sh_libtool" SVN_LIBTOOL="$sh_libtool" else sh_libtool="$abs_builddir/libtool" SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\"" fi lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'` lt_major_version=`echo $lt_version | cut -d'.' -f 1` svn_enable_static=yes svn_enable_shared=yes # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; svn_enable_static="$enableval" else svn_enable_static="yes" fi # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; svn_enable_shared="$enableval" else svn_enable_shared="yes" fi if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: building both shared and static libraries" >&5 $as_echo "$as_me: building both shared and static libraries" >&6;} elif test "$svn_enable_static" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: building static libraries only" >&5 $as_echo "$as_me: building static libraries only" >&6;} LT_CFLAGS="-static $LT_CFLAGS" LT_LDFLAGS="-static $LT_LDFLAGS" elif test "$svn_enable_shared" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: building shared libraries only" >&5 $as_echo "$as_me: building shared libraries only" >&6;} if test "$lt_major_version" = "1" ; then LT_CFLAGS="-prefer-pic $LT_CFLAGS" elif test "$lt_major_version" = "2" ; then LT_CFLAGS="-shared $LT_CFLAGS" fi LT_LDFLAGS="-shared $LT_LDFLAGS" else as_fn_error $? "cannot disable both shared and static libraries" "$LINENO" 5 fi # Check whether --enable-all-static was given. if test "${enable_all_static+set}" = set; then : enableval=$enable_all_static; if test "$enableval" = "yes" ; then LT_LDFLAGS="-all-static $LT_LDFLAGS" elif test "$enableval" != "no" ; then as_fn_error $? "--enable-all-static doesn't accept argument" "$LINENO" 5 fi fi # Check whether --enable-local-library-preloading was given. if test "${enable_local_library_preloading+set}" = set; then : enableval=$enable_local_library_preloading; if test "$enableval" != "no"; then if test "$svn_enable_shared" = "yes"; then TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts" else as_fn_error $? "--enable-local-library-preloading conflicts with --disable-shared" "$LINENO" 5 fi else TRANSFORM_LIBTOOL_SCRIPTS="" fi else TRANSFORM_LIBTOOL_SCRIPTS="" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libtool needs -no-undefined" >&5 $as_echo_n "checking whether libtool needs -no-undefined... " >&6; } case $host in *-*-cygwin*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } LT_NO_UNDEFINED="-no-undefined" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } LT_NO_UNDEFINED="" ;; esac trang=yes # Check whether --with-trang was given. if test "${with_trang+set}" = set; then : withval=$with_trang; trang="$withval" fi if test "$trang" = "yes"; then # Extract the first word of "trang", so it can be a program name with args. set dummy trang; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TRANG+:} false; then : $as_echo_n "(cached) " >&6 else case $TRANG in [\\/]* | ?:[\\/]*) ac_cv_path_TRANG="$TRANG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TRANG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_TRANG" && ac_cv_path_TRANG="none" ;; esac fi TRANG=$ac_cv_path_TRANG if test -n "$TRANG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRANG" >&5 $as_echo "$TRANG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else TRANG="$trang" fi doxygen=yes # Check whether --with-doxygen was given. if test "${with_doxygen+set}" = set; then : withval=$with_doxygen; doxygen="$withval" fi if test "$doxygen" = "yes"; then # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_DOXYGEN+:} false; then : $as_echo_n "(cached) " >&6 else case $DOXYGEN in [\\/]* | ?:[\\/]*) ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_DOXYGEN" && ac_cv_path_DOXYGEN="none" ;; esac fi DOXYGEN=$ac_cv_path_DOXYGEN if test -n "$DOXYGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 $as_echo "$DOXYGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else DOXYGEN="$doxygen" fi # Check whether --with-expat was given. if test "${with_expat+set}" = set; then : withval=$with_expat; svn_lib_expat="$withval" else svn_lib_expat="::expat" fi # APR-util accepts "builtin" as an argument to this option so if the user # passed "builtin" pretend the user didn't specify the --with-expat option # at all. Expat will (hopefully) be found in apr-util. test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Expat" >&5 $as_echo_n "checking for Expat... " >&6; } if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then SVN_XML_INCLUDES="" for i in `echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`; do SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i" done SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }" for l in `echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`; do LDFLAGS="$LDFLAGS -L$l" done for l in `echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`; do SVN_XML_LIBS="$SVN_XML_LIBS -l$l" done SVN_XML_LIBS="${SVN_XML_LIBS## }" old_CPPFLAGS="$CPPFLAGS" old_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES" LIBS="$LIBS $SVN_XML_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {XML_ParserCreate(NULL);} _ACEOF if ac_fn_c_try_link "$LINENO"; then : svn_lib_expat="yes" else svn_lib_expat="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$old_LIBS" if test "$svn_lib_expat" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else SVN_XML_INCLUDES="" SVN_XML_LIBS="" CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES" if test "$enable_all_static" != "yes"; then SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {XML_ParserCreate(NULL);} _ACEOF if ac_fn_c_try_compile "$LINENO"; then : svn_lib_expat="yes" else svn_lib_expat="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$svn_lib_expat" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Expat found amongst libraries used by APR-Util, but Subversion libraries might be needlessly linked against additional unused libraries. It can be avoided by specifying exact location of Expat in argument of --with-expat option." >&5 $as_echo "$as_me: WARNING: Expat found amongst libraries used by APR-Util, but Subversion libraries might be needlessly linked against additional unused libraries. It can be avoided by specifying exact location of Expat in argument of --with-expat option." >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Expat not found" "$LINENO" 5 fi fi CPPFLAGS="$old_CPPFLAGS" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$svn_lib_expat" = "yes"; then as_fn_error $? "--with-expat option requires argument" "$LINENO" 5 elif test "$svn_lib_expat" = "no"; then as_fn_error $? "Expat is required" "$LINENO" 5 else as_fn_error $? "Invalid syntax of argument of --with-expat option" "$LINENO" 5 fi fi # Berkeley DB on SCO OpenServer needs -lsocket { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 $as_echo_n "checking for socket in -lsocket... " >&6; } if ${ac_cv_lib_socket_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_socket=yes else ac_cv_lib_socket_socket=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 $as_echo "$ac_cv_lib_socket_socket" >&6; } if test "x$ac_cv_lib_socket_socket" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSOCKET 1 _ACEOF LIBS="-lsocket $LIBS" fi # Build the BDB filesystem library only if we have an appropriate # version of Berkeley DB. case "$host" in powerpc-apple-darwin*) # Berkeley DB 4.0 does not work on OS X. SVN_FS_WANT_DB_MAJOR=4 SVN_FS_WANT_DB_MINOR=1 SVN_FS_WANT_DB_PATCH=25 ;; *) SVN_FS_WANT_DB_MAJOR=4 SVN_FS_WANT_DB_MINOR=0 SVN_FS_WANT_DB_PATCH=14 ;; esac db_alt_version="5.x" # Look for libdb4.so first: db_version=$SVN_FS_WANT_DB_MAJOR.$SVN_FS_WANT_DB_MINOR.$SVN_FS_WANT_DB_PATCH # Check whether --with-berkeley-db was given. if test "${with_berkeley_db+set}" = set; then : withval=$with_berkeley_db; if test "$withval" = "no"; then bdb_status=skip elif test "$withval" = "yes"; then apu_db_version="`$apu_config --db-version`" if test $? -ne 0; then as_fn_error $? "Can't determine whether apr-util is linked against a proper version of Berkeley DB." "$LINENO" 5 fi if test "$withval" = "yes"; then if test "$apu_db_version" -lt "4"; then as_fn_error $? "APR-UTIL was linked against Berkeley DB version $apu_db_version, while version 4 or higher is required. Reinstall APR-UTIL with the appropriate options." "$LINENO" 5 fi bdb_status=required elif test "$apu_found" != "reconfig"; then if test "$apu_db_version" -lt 4; then as_fn_error $? "APR-UTIL was installed independently, it won't be possible to use the specified Berkeley DB: $withval" "$LINENO" 5 fi bdb_status=required fi else if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then svn_berkeley_db_header="`echo "$withval" | $SED -e "s/\([^:]*\):.*/\1/"`" SVN_DB_INCLUDES="" for i in `echo "$withval" | $SED -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`; do SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i" done SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }" for l in `echo "$withval" | $SED -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`; do LDFLAGS="$LDFLAGS ` input_flags="-L$l" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" done SVN_DB_LIBS="" for l in `echo "$withval" | $SED -e "s/.*:\([^:]*\)/\1/"`; do SVN_DB_LIBS="$SVN_DB_LIBS -l$l" done SVN_DB_LIBS="${SVN_DB_LIBS## }" bdb_status=required else as_fn_error $? "Invalid syntax of argument of --with-berkeley-db option" "$LINENO" 5 fi fi else # No --with-berkeley-db option: # # Check if APR-UTIL is providing the correct Berkeley DB version # for us. # apu_db_version="`$apu_config --db-version`" if test $? -ne 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Detected older version of APR-UTIL, trying to determine whether apr-util is linked against Berkeley DB $db_version" >&5 $as_echo "$as_me: WARNING: Detected older version of APR-UTIL, trying to determine whether apr-util is linked against Berkeley DB $db_version" >&2;} bdb_status=try-link elif test "$apu_db_version" -lt "4"; then bdb_status=skip else bdb_status=try-link fi fi if test "$bdb_status" = "skip"; then svn_lib_berkeley_db=no else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for availability of Berkeley DB" >&5 $as_echo_n "checking for availability of Berkeley DB... " >&6; } # Check whether --enable-bdb6 was given. if test "${enable_bdb6+set}" = set; then : enableval=$enable_bdb6; enable_bdb6=$enableval else enable_bdb6=unspecified fi svn_lib_berkeley_db_try_save_cppflags="$CPPFLAGS" svn_lib_berkeley_db_try_save_libs="$LIBS" svn_check_berkeley_db_major=$SVN_FS_WANT_DB_MAJOR svn_check_berkeley_db_minor=$SVN_FS_WANT_DB_MINOR svn_check_berkeley_db_patch=$SVN_FS_WANT_DB_PATCH enable_bdb6=$enable_bdb6 if test -z "$SVN_DB_LIBS"; then # We pass --dbm-libs here since Debian has modified apu-config not # to return -ldb unless --dbm-libs is passed. This may also produce # extra output beyond -ldb but since we're only filtering for -ldb # it won't matter to us. However, --dbm-libs was added to apu-config # in 1.3.8 so it's possible the version we have doesn't support it # so fallback without it if we get an error. svn_db_libs_prefiltered="`$apu_config --libs --dbm-libs`" if test $? -ne 0; then svn_db_libs_prefiltered="`$apu_config --libs`" fi # Extract only the -ldb.* flag from the libs supplied by apu-config # Otherwise we get bit by the fact that expat might not be built yet # Or that it resides in a non-standard location which we would have # to compensate with using something like -R`$apu_config --prefix`/lib. # SVN_DB_LIBS="`echo \"$svn_db_libs_prefiltered\" | $SED -e 's/.*\(-ldb[^[:space:]]*\).*/\1/' | $EGREP -- '-ldb[^[:space:]]*'`" fi CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS" LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS" if test -n "$svn_berkeley_db_header"; then SVN_DB_HEADER="#include <$svn_berkeley_db_header>" svn_db_header="#include <$svn_berkeley_db_header>" else SVN_DB_HEADER="#include " svn_db_header="#define APU_WANT_DB #include " fi if test "$cross_compiling" = yes; then : svn_have_berkeley_db=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include $svn_db_header int main () { int major, minor, patch; db_version (&major, &minor, &patch); /* Sanity check: ensure that db.h constants actually match the db library */ if (major != DB_VERSION_MAJOR || minor != DB_VERSION_MINOR || patch != DB_VERSION_PATCH) exit (1); /* Block Berkeley DB 6, because (a) we haven't tested with it, (b) 6.0.20 and newer are under the AGPL, and we want use of AGPL dependencies to be opt-in. */ if (major >= 6 && strcmp("$enable_bdb6", "yes")) exit(2); /* Run-time check: ensure the library claims to be the correct version. */ if (major < $svn_check_berkeley_db_major) exit (1); if (major > $svn_check_berkeley_db_major) exit (0); if (minor < $svn_check_berkeley_db_minor) exit (1); if (minor > $svn_check_berkeley_db_minor) exit (0); if (patch >= $svn_check_berkeley_db_patch) exit (0); else exit (1); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : svn_have_berkeley_db=yes else rc=$? svn_have_berkeley_db=no if test $rc = 2; then svn_have_berkeley_db=no6 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CPPFLAGS="$svn_lib_berkeley_db_try_save_cppflags" LIBS="$svn_lib_berkeley_db_try_save_libs" if test "$svn_have_berkeley_db" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } svn_lib_berkeley_db=yes else if test "$svn_have_berkeley_db" = "no6"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (found version 6, but --enable-bdb6 not specified)" >&5 $as_echo "no (found version 6, but --enable-bdb6 not specified)" >&6; } # A warning will be printed at the end of configure.ac. else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi svn_lib_berkeley_db=no if test "$bdb_status" = "required"; then as_fn_error $? "Berkeley DB $db_version or $db_alt_version wasn't found." "$LINENO" 5 fi fi fi cat >>confdefs.h <<_ACEOF #define SVN_FS_WANT_DB_MAJOR $SVN_FS_WANT_DB_MAJOR _ACEOF cat >>confdefs.h <<_ACEOF #define SVN_FS_WANT_DB_MINOR $SVN_FS_WANT_DB_MINOR _ACEOF cat >>confdefs.h <<_ACEOF #define SVN_FS_WANT_DB_PATCH $SVN_FS_WANT_DB_PATCH _ACEOF # Check whether --with-sasl was given. if test "${with_sasl+set}" = set; then : withval=$with_sasl; with_sasl="$withval" required="yes" else with_sasl="yes" required="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to look for SASL" >&5 $as_echo_n "checking whether to look for SASL... " >&6; } if test "${with_sasl}" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } svn_lib_sasl=no else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } saved_LDFLAGS="$LDFLAGS" saved_CPPFLAGS="$CPPFLAGS" if test "$with_sasl" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Looking in default locations" >&5 $as_echo "$as_me: Looking in default locations" >&6;} ac_fn_c_check_header_mongrel "$LINENO" "sasl/sasl.h" "ac_cv_header_sasl_sasl_h" "$ac_includes_default" if test "x$ac_cv_header_sasl_sasl_h" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "sasl/saslutil.h" "ac_cv_header_sasl_saslutil_h" "$ac_includes_default" if test "x$ac_cv_header_sasl_saslutil_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prop_get in -lsasl2" >&5 $as_echo_n "checking for prop_get in -lsasl2... " >&6; } if ${ac_cv_lib_sasl2_prop_get+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsasl2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char prop_get (); int main () { return prop_get (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_sasl2_prop_get=yes else ac_cv_lib_sasl2_prop_get=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sasl2_prop_get" >&5 $as_echo "$ac_cv_lib_sasl2_prop_get" >&6; } if test "x$ac_cv_lib_sasl2_prop_get" = xyes; then : svn_lib_sasl=yes else svn_lib_sasl=no fi else svn_lib_sasl=no fi else svn_lib_sasl=no fi if test "$svn_lib_sasl" = "no"; then with_sasl="/usr/local" fi else svn_lib_sasl=no fi if test "$svn_lib_sasl" = "no"; then SVN_SASL_INCLUDES="-I${with_sasl}/include" CPPFLAGS="$CPPFLAGS $SVN_SASL_INCLUDES" LDFLAGS="$LDFLAGS ` input_flags="-L${with_sasl}/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" ac_fn_c_check_header_mongrel "$LINENO" "sasl/sasl.h" "ac_cv_header_sasl_sasl_h" "$ac_includes_default" if test "x$ac_cv_header_sasl_sasl_h" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "sasl/saslutil.h" "ac_cv_header_sasl_saslutil_h" "$ac_includes_default" if test "x$ac_cv_header_sasl_saslutil_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prop_get in -lsasl2" >&5 $as_echo_n "checking for prop_get in -lsasl2... " >&6; } if ${ac_cv_lib_sasl2_prop_get+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsasl2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char prop_get (); int main () { return prop_get (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_sasl2_prop_get=yes else ac_cv_lib_sasl2_prop_get=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sasl2_prop_get" >&5 $as_echo "$ac_cv_lib_sasl2_prop_get" >&6; } if test "x$ac_cv_lib_sasl2_prop_get" = xyes; then : svn_lib_sasl=yes else svn_lib_sasl=no fi else svn_lib_sasl=no fi else svn_lib_sasl=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for availability of Cyrus SASL v2" >&5 $as_echo_n "checking for availability of Cyrus SASL v2... " >&6; } if test "$svn_lib_sasl" = "yes"; then SVN_SASL_LIBS="-lsasl2" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$required" = "yes"; then as_fn_error $? "Could not find Cyrus SASL v2" "$LINENO" 5 fi SVN_SASL_INCLUDES="" LDFLAGS="$saved_LDFLAGS" fi CPPFLAGS="$saved_CPPFLAGS" fi if test "$svn_lib_sasl" = "yes"; then $as_echo "#define SVN_HAVE_SASL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mach-O dynamic module iteration functions" >&5 $as_echo_n "checking for Mach-O dynamic module iteration functions... " >&6; } if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { const struct mach_header *header = _dyld_get_image_header(0); const char *name = _dyld_get_image_name(0); if (name && header) return 0; return 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : $as_echo "#define SVN_HAVE_MACHO_ITERATE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS property list utilities" >&5 $as_echo_n "checking for Mac OS property list utilities... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !defined(MAC_OS_X_VERSION_MAX_ALLOWED) \ || !defined(MAC_OS_X_VERSION_10_0) \ || (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_0) #error ProperyList API unavailable. #endif int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : SVN_MACOS_PLIST_LIBS="-framework CoreFoundation" $as_echo "#define SVN_HAVE_MACOS_PLIST 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Check whether --enable-keychain was given. if test "${enable_keychain+set}" = set; then : enableval=$enable_keychain; enable_keychain=$enableval else enable_keychain=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS KeyChain Services" >&5 $as_echo_n "checking for Mac OS KeyChain Services... " >&6; } if test "$enable_keychain" = "yes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !defined(MAC_OS_X_VERSION_MAX_ALLOWED) \ || !defined(MAC_OS_X_VERSION_10_2) \ || (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2) #error KeyChain API unavailable. #endif int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : SVN_MACOS_KEYCHAIN_LIBS="-framework Security -framework CoreServices" $as_echo "#define SVN_HAVE_KEYCHAIN_SERVICES 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else enable_keychain=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether APR has support for DSOs" >&5 $as_echo_n "checking whether APR has support for DSOs... " >&6; } old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !APR_HAS_DSO #error #endif _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : APR_HAS_DSO="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else APR_HAS_DSO="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f conftest.err conftest.i conftest.$ac_ext CPPFLAGS="$old_CPPFLAGS" if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for D-Bus .pc file" >&5 $as_echo_n "checking for D-Bus .pc file... " >&6; } if $PKG_CONFIG --exists dbus-1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } old_CPPFLAGS="$CPPFLAGS" old_LIBS="$LIBS" DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`" { $as_echo "$as_me:${as_lineno-$LINENO}: checking D-Bus version" >&5 $as_echo_n "checking D-Bus version... " >&6; } DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBUS_VERSION" >&5 $as_echo "$DBUS_VERSION" >&6; } # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE if test -n "`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"; then DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE" fi DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`" CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS" LIBS="$LIBS $DBUS_LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for D-Bus" >&5 $as_echo_n "checking for D-Bus... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {dbus_bus_get(DBUS_BUS_SESSION, NULL);} _ACEOF if ac_fn_c_try_link "$LINENO"; then : HAVE_DBUS="yes" else HAVE_DBUS="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$HAVE_DBUS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CPPFLAGS="$old_CPPFLAGS" LIBS="$old_LIBS" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Check whether --with-gpg_agent was given. if test "${with_gpg_agent+set}" = set; then : withval=$with_gpg_agent; else with_gpg_agent=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support GPG-Agent" >&5 $as_echo_n "checking whether to support GPG-Agent... " >&6; } if test "$with_gpg_agent" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define SVN_HAVE_GPG_AGENT 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-old_gnome_keyring was given. if test "${with_old_gnome_keyring+set}" = set; then : withval=$with_old_gnome_keyring; with_old_gnome_keyring="$withval" else with_old_gnome_keyring=no fi found_old_gnome_keyring=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to look for old GNOME Keyring" >&5 $as_echo_n "checking whether to look for old GNOME Keyring... " >&6; } if test "$with_old_gnome_keyring" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } case "$host" in *-*-darwin*) if test "$with_old_gnome_keyring" = "yes"; then as_fn_error $? "--with-old-gnome-keyring is not supported on Mac OS X." "$LINENO" 5 else with_old_gnome_keyring=no fi ;; *) if test "$svn_enable_shared" = "yes"; then if test "$APR_HAS_DSO" = "yes"; then if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLib and GNOME Keyring .pc files" >&5 $as_echo_n "checking for GLib and GNOME Keyring .pc files... " >&6; } if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } old_CPPFLAGS="$CPPFLAGS" SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`" CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES" ac_fn_c_check_header_mongrel "$LINENO" "gnome-keyring.h" "ac_cv_header_gnome_keyring_h" "$ac_includes_default" if test "x$ac_cv_header_gnome_keyring_h" = xyes; then : found_old_gnome_keyring=yes else found_old_gnome_keyring=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME Keyring" >&5 $as_echo_n "checking for GNOME Keyring... " >&6; } if test "$found_old_gnome_keyring" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define SVN_HAVE_GNOME_KEYRING 1" >>confdefs.h CPPFLAGS="$old_CPPFLAGS" SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`" SVN_GNOME_KEYRING_PCLIBS="glib-2.0, gnome-keyring-1" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$with_old_gnome_keyring" = "yes"; then as_fn_error $? "cannot find GNOME Keyring" "$LINENO" 5 fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$with_old_gnome_keyring" = "yes"; then as_fn_error $? "cannot find GLib and GNOME Keyring .pc files." "$LINENO" 5 else with_old_gnome_keyring=no fi fi else if test "$with_old_gnome_keyring" = "yes"; then as_fn_error $? "cannot find pkg-config. GNOME Keyring requires this." "$LINENO" 5 else with_old_gnome_keyring=no fi fi else if test "$with_old_gnome_keyring" = "yes"; then as_fn_error $? "APR does not have support for DSOs. GNOME Keyring requires this." "$LINENO" 5 else with_old_gnome_keyring=no fi fi else if test "$with_old_gnome_keyring" = "yes"; then as_fn_error $? "--with-old-gnome-keyring conflicts with --disable-shared" "$LINENO" 5 else with_old_gnome_keyring=no fi fi ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-gnome_keyring was given. if test "${with_gnome_keyring+set}" = set; then : withval=$with_gnome_keyring; with_gnome_keyring="$withval" else with_gnome_keyring=auto fi found_gnome_keyring="no" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to look for GNOME Keyring" >&5 $as_echo_n "checking whether to look for GNOME Keyring... " >&6; } if test "$found_old_gnome_keyring" = "yes" && test "$with_gnome_keyring" = "auto"; then with_gnome_keyring="no" fi if test "$with_gnome_keyring" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } case "$host" in *-*-darwin*) if test "$with_gnome_keyring" = "yes"; then as_fn_error $? "--with-gnome-keyring is not supported on Mac OS X." "$LINENO" 5 fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME Keyring" >&5 $as_echo_n "checking for GNOME Keyring... " >&6; } if test "$found_old_gnome_keyring" = "no"; then if test "$svn_enable_shared" = "yes"; then if test "$APR_HAS_DSO" = "yes"; then if test -n "$PKG_CONFIG"; then if $PKG_CONFIG --exists libsecret-1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define SVN_HAVE_LIBSECRET 1" >>confdefs.h SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags libsecret-1`" SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs libsecret-1`" SVN_GNOME_KEYRING_PCLIBS="libsecret-1" found_gnome_keyring="yes" else if test "$with_gnome_keyring" = "yes"; then as_fn_error $? "cannot find libsecret" "$LINENO" 5 fi fi else if test "$with_gnome_keyring" = "yes"; then as_fn_error $? "cannot find pkg-config" "$LINENO" 5 fi fi else if test "$with_gnome_keyring" = "yes"; then as_fn_error $? "APR does not support DSOs" "$LINENO" 5 fi fi else if test "$with_gnome_keyring" = "yes"; then as_fn_error $? "--with-gnome-keyring conflicts with --disable-shared" "$LINENO" 5 fi fi else if test "$with_gnome_keyring" = "yes"; then as_fn_error $? "--with-gnome-keyring conflicts with --with-old-gnome-keyring" "$LINENO" 5 fi fi if test "$found_gnome_keyring" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --enable-ev2-impl was given. if test "${enable_ev2_impl+set}" = set; then : enableval=$enable_ev2_impl; enable_ev2_impl=$enableval else enable_ev2_impl=no fi if test "$enable_ev2_impl" = "yes"; then $as_echo "#define ENABLE_EV2_IMPL 1" >>confdefs.h fi # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; enable_nls=$enableval else enable_nls=yes fi USE_NLS="no" SVN_INTL_LIBS="" if test "$enable_nls" = "yes"; then # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="none" ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE="none" ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT="none" ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing bindtextdomain" >&5 $as_echo_n "checking for library containing bindtextdomain... " >&6; } if ${ac_cv_search_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF for ac_lib in '' intl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_bindtextdomain=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_bindtextdomain+:} false; then : break fi done if ${ac_cv_search_bindtextdomain+:} false; then : else ac_cv_search_bindtextdomain=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_bindtextdomain" >&5 $as_echo "$ac_cv_search_bindtextdomain" >&6; } ac_res=$ac_cv_search_bindtextdomain if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" # in case libintl needs to be linked explicitly, # $ac_cv_search_bindtextdomain contains -l linker flags if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null then SVN_INTL_LIBS="$ac_cv_search_bindtextdomain" fi else enable_nls="no" fi if test "$enable_nls" = "no"; then # Destroy the cached result so we can test again unset ac_cv_search_bindtextdomain # On some systems, libintl needs libiconv to link properly, # so try again with -liconv. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing bindtextdomain" >&5 $as_echo_n "checking for library containing bindtextdomain... " >&6; } if ${ac_cv_search_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF for ac_lib in '' intl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib -liconv $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_bindtextdomain=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_bindtextdomain+:} false; then : break fi done if ${ac_cv_search_bindtextdomain+:} false; then : else ac_cv_search_bindtextdomain=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_bindtextdomain" >&5 $as_echo "$ac_cv_search_bindtextdomain" >&6; } ac_res=$ac_cv_search_bindtextdomain if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" enable_nls="yes" if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null then SVN_INTL_LIBS="$ac_cv_search_bindtextdomain" fi # This is here so that -liconv ends up in LIBS # if it worked with -liconv. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libiconv_open in -liconv" >&5 $as_echo_n "checking for libiconv_open in -liconv... " >&6; } if ${ac_cv_lib_iconv_libiconv_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char libiconv_open (); int main () { return libiconv_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_iconv_libiconv_open=yes else ac_cv_lib_iconv_libiconv_open=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_libiconv_open" >&5 $as_echo "$ac_cv_lib_iconv_libiconv_open" >&6; } if test "x$ac_cv_lib_iconv_libiconv_open" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBICONV 1 _ACEOF LIBS="-liconv $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bindtextdomain() not found. Disabling NLS." >&5 $as_echo "$as_me: WARNING: bindtextdomain() not found. Disabling NLS." >&2;} enable_nls="no" fi fi if test "$enable_nls" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h USE_NLS="yes" fi fi fi GETTEXT_CODESET=\# NO_GETTEXT_CODESET=\# if test $USE_NLS = "yes"; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF GETTEXT_CODESET="" else NO_GETTEXT_CODESET="" fi done fi # Check if we are using GNU gettext. GNU_GETTEXT=no MSGFMTFLAGS='' if test $USE_NLS = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we are using GNU gettext" >&5 $as_echo_n "checking if we are using GNU gettext... " >&6; } if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then GNU_GETTEXT=yes MSGFMTFLAGS='-c' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNU_GETTEXT" >&5 $as_echo "$GNU_GETTEXT" >&6; } fi libmagic_found=no # Check whether --with-libmagic was given. if test "${with_libmagic+set}" = set; then : withval=$with_libmagic; if test "$withval" = "yes" ; then ac_fn_c_check_header_mongrel "$LINENO" "magic.h" "ac_cv_header_magic_h" "$ac_includes_default" if test "x$ac_cv_header_magic_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for magic_open in -lmagic" >&5 $as_echo_n "checking for magic_open in -lmagic... " >&6; } if ${ac_cv_lib_magic_magic_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmagic $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char magic_open (); int main () { return magic_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_magic_magic_open=yes else ac_cv_lib_magic_magic_open=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_magic_magic_open" >&5 $as_echo "$ac_cv_lib_magic_magic_open" >&6; } if test "x$ac_cv_lib_magic_magic_open" = xyes; then : libmagic_found="builtin" fi fi libmagic_prefix="the default locations" elif test "$withval" != "no"; then libmagic_prefix=$withval save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include" for ac_header in magic.h do : ac_fn_c_check_header_mongrel "$LINENO" "magic.h" "ac_cv_header_magic_h" "$ac_includes_default" if test "x$ac_cv_header_magic_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MAGIC_H 1 _ACEOF save_ldflags="$LDFLAGS" LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for magic_open in -lmagic" >&5 $as_echo_n "checking for magic_open in -lmagic... " >&6; } if ${ac_cv_lib_magic_magic_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmagic $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char magic_open (); int main () { return magic_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_magic_magic_open=yes else ac_cv_lib_magic_magic_open=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_magic_magic_open" >&5 $as_echo "$ac_cv_lib_magic_magic_open" >&6; } if test "x$ac_cv_lib_magic_magic_open" = xyes; then : libmagic_found="yes" fi LDFLAGS="$save_ldflags" fi done CPPFLAGS="$save_cppflags" fi if test "$withval" != "no" && test "$libmagic_found" = "no"; then as_fn_error $? "--with-libmagic requested, but libmagic not found at $libmagic_prefix" "$LINENO" 5 fi else ac_fn_c_check_header_mongrel "$LINENO" "magic.h" "ac_cv_header_magic_h" "$ac_includes_default" if test "x$ac_cv_header_magic_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for magic_open in -lmagic" >&5 $as_echo_n "checking for magic_open in -lmagic... " >&6; } if ${ac_cv_lib_magic_magic_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmagic $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char magic_open (); int main () { return magic_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_magic_magic_open=yes else ac_cv_lib_magic_magic_open=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_magic_magic_open" >&5 $as_echo "$ac_cv_lib_magic_magic_open" >&6; } if test "x$ac_cv_lib_magic_magic_open" = xyes; then : libmagic_found="builtin" fi fi fi if test "$libmagic_found" != "no"; then $as_echo "#define SVN_HAVE_LIBMAGIC 1" >>confdefs.h SVN_MAGIC_LIBS="-lmagic" fi if test "$libmagic_found" = "yes"; then SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include" LDFLAGS="$LDFLAGS ` input_flags="-L$libmagic_prefix/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" fi # Check whether --with-kwallet was given. if test "${with_kwallet+set}" = set; then : withval=$with_kwallet; svn_lib_kwallet="$withval" else svn_lib_kwallet=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to look for KWallet" >&5 $as_echo_n "checking whether to look for KWallet... " >&6; } if test "$svn_lib_kwallet" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } case "$host" in *-*-darwin*) as_fn_error $? "--with-kwallet is not supported on Mac OS X." "$LINENO" 5 ;; *) if test "$svn_enable_shared" = "yes"; then if test "$APR_HAS_DSO" = "yes"; then if test -n "$PKG_CONFIG"; then if test "$HAVE_DBUS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt" >&5 $as_echo_n "checking for Qt... " >&6; } if $PKG_CONFIG --exists Qt5Core Qt5DBus Qt5Gui; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, Qt5" >&5 $as_echo "yes, Qt5" >&6; } qt_pkg_config_names="Qt5Core Qt5DBus Qt5Gui" kde_config_name="kf5-config" kde_inc_names="KF5/KWallet KF5/KCoreAddons KF5/KI18n" kde_lib_names="-lKF5Wallet -lKF5I18n -lKF5CoreAddons -lQt5Gui -lQt5DBus -lQt5Core" elif $PKG_CONFIG --exists QtCore QtDBus QtGui; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, Qt4" >&5 $as_echo "yes, Qt4" >&6; } qt_pkg_config_names="QtCore QtDBus QtGui" kde_config_name="kde4-config" kde_inc_names="/" kde_lib_names="-lkdeui -lkdecore -lQtGui -lQtDBus -lQtCore" fi if test -n "$qt_pkg_config_names"; then if test "$svn_lib_kwallet" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $kde_config_name" >&5 $as_echo_n "checking for $kde_config_name... " >&6; } KDE_CONFIG="$svn_lib_kwallet/bin/$kde_config_name" if test -f "$KDE_CONFIG" && test -x "$KDE_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else if echo "$svn_lib_kwallet" | $EGREP ":" > /dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: unneeded" >&5 $as_echo "unneeded" >&6; } KDE_CONFIG="unneeded" kde_incdir="`echo "$svn_lib_kwallet" | $SED -e "s/:.*//"`" kde_libdir="`echo "$svn_lib_kwallet" | $SED -e "s/.*://"`" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } KDE_CONFIG="" fi fi else # Extract the first word of "$kde_config_name", so it can be a program name with args. set dummy $kde_config_name; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_KDE_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $KDE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_KDE_CONFIG="$KDE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_KDE_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi KDE_CONFIG=$ac_cv_path_KDE_CONFIG if test -n "$KDE_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KDE_CONFIG" >&5 $as_echo "$KDE_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$KDE_CONFIG"; then kde_incdir="`$KDE_CONFIG --install include`" kde_libdir="`$KDE_CONFIG --install lib`" fi fi if test -n "$KDE_CONFIG"; then old_CXXFLAGS="$CXXFLAGS" old_LDFLAGS="$LDFLAGS" old_LIBS="$LIBS" CXXFLAGS="$CXXFLAGS $CXXMODEFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for KWallet" >&5 $as_echo_n "checking for KWallet... " >&6; } for d in `$PKG_CONFIG --cflags $qt_pkg_config_names`; do if test -n "`echo "$d" | $EGREP -- '^-D[^[:space:]]*'`"; then CPPFLAGS="$CPPFLAGS $d" fi done qt_include_dirs="`$PKG_CONFIG --cflags-only-I $qt_pkg_config_names`" for kde_inc_name in $kde_inc_names; do kde_kwallet_includes="$kde_kwallet_includes -I$kde_incdir/$kde_inc_name" done SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs $kde_kwallet_includes" qt_libs_other_options="`$PKG_CONFIG --libs-only-other $qt_pkg_config_names`" SVN_KWALLET_LIBS="$DBUS_LIBS $kde_lib_names $qt_libs_other_options" CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES -fPIC" LIBS="$LIBS $SVN_KWALLET_LIBS" qt_lib_dirs="`$PKG_CONFIG --libs-only-L $qt_pkg_config_names`" LDFLAGS="$old_LDFLAGS ` input_flags="$qt_lib_dirs -L$kde_libdir" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {KWallet::Wallet::walletList();} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : svn_lib_kwallet="yes" else svn_lib_kwallet="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$svn_lib_kwallet" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } CXXFLAGS="$old_CXXFLAGS" LIBS="$old_LIBS" if test "$kde_config_name" = "kf5-config"; then $as_echo "#define SVN_HAVE_KF5 1" >>confdefs.h fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "cannot find KWallet" "$LINENO" 5 fi else as_fn_error $? "cannot find $kde_config_name" "$LINENO" 5 fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "cannot find Qt" "$LINENO" 5 fi else as_fn_error $? "cannot find D-Bus" "$LINENO" 5 fi else as_fn_error $? "cannot find pkg-config" "$LINENO" 5 fi else as_fn_error $? "APR does not have support for DSOs" "$LINENO" 5 fi else as_fn_error $? "--with-kwallet conflicts with --disable-shared" "$LINENO" 5 fi ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$svn_lib_kwallet" = "yes"; then $as_echo "#define SVN_HAVE_KWALLET 1" >>confdefs.h fi # Check whether --enable-plaintext-password-storage was given. if test "${enable_plaintext_password_storage+set}" = set; then : enableval=$enable_plaintext_password_storage; plaintext_passwordd_storage="$enableval" else plaintext_passwordd_storage="no" fi if test "$plaintext_passwordd_storage" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Enabling plaintext password/passphrase storage" >&5 $as_echo "$as_me: WARNING: Enabling plaintext password/passphrase storage" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling plaintext password/passphrase storage" >&5 $as_echo "$as_me: Disabling plaintext password/passphrase storage" >&6;} $as_echo "#define SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE 1" >>confdefs.h fi INSTALL_STATIC_RULES="install-bin install-docs" INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static" INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE" BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools" if test "$svn_lib_berkeley_db" = "yes"; then BUILD_RULES="$BUILD_RULES bdb-lib bdb-test" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib" BDB_TEST_DEPS="\$(BDB_TEST_DEPS)" BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)" fi if test "$svn_lib_serf" = "yes"; then BUILD_RULES="$BUILD_RULES serf-lib" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib" fi if test "$svn_lib_kwallet" = "yes"; then BUILD_RULES="$BUILD_RULES kwallet-lib" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib" fi if test "$found_old_gnome_keyring" = "yes" || test "$found_gnome_keyring" = "yes"; then BUILD_RULES="$BUILD_RULES gnome-keyring-lib" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" fi if test "$USE_NLS" = "yes"; then BUILD_RULES="$BUILD_RULES locale" INSTALL_RULES="$INSTALL_RULES install-locale" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 $as_echo_n "checking for working memcmp... " >&6; } if ${ac_cv_func_memcmp_working+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = '\100', c1 = '\200', c2 = '\201'; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) return 1; /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) return 1; } return 0; } ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 $as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; esac for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in symlink readlink do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/utsname.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default" if test "x$ac_cv_header_sys_utsname_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_UTSNAME_H 1 _ACEOF for ac_func in uname do : ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" if test "x$ac_cv_func_uname" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UNAME 1 _ACEOF fi done fi done for ac_header in elf.h do : ac_fn_c_check_header_mongrel "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default" if test "x$ac_cv_header_elf_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ELF_H 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" if test "x$ac_cv_header_termios_h" = xyes; then : for ac_func in tcgetattr tcsetattr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_TERMIOS_H 1" >>confdefs.h fi done fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; if test "$enableval" = "yes" ; then enable_debugging="yes" else enable_debugging="no" fi else # Neither --enable-debug nor --disable-debug was passed. enable_debugging="maybe" fi # Check whether --enable-optimize was given. if test "${enable_optimize+set}" = set; then : enableval=$enable_optimize; if test "$enableval" = "yes" ; then enable_optimization="yes" else enable_optimization="no" fi else # Neither --enable-optimize nor --disable-optimize was passed. enable_optimization="maybe" fi # Check whether --enable-disallowing-of-undefined-references was given. if test "${enable_disallowing_of_undefined_references+set}" = set; then : enableval=$enable_disallowing_of_undefined_references; fi if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then enable_disallowing_of_undefined_references="no" fi if test "$enable_disallowing_of_undefined_references" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-undefined" >&5 $as_echo_n "checking for -Wl,--no-undefined... " >&6; } old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--no-undefined" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : svn_wl_no_undefined="yes" else svn_wl_no_undefined="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$old_LDFLAGS" if test "$svn_wl_no_undefined" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } for library_dir in "$abs_srcdir/subversion/libsvn_"*; do eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined" done shared_only_LDFLAGS="-Wl,--no-undefined" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$enable_disallowing_of_undefined_references" = "yes"; then as_fn_error $? "--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported" "$LINENO" 5 fi fi fi # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; if test "$enableval" = "yes" ; then if test "$enable_debugging" = "no" ; then as_fn_error $? "Can't have --disable-debug and --enable-maintainer-mode" "$LINENO" 5 fi enable_debugging=yes if test "$GCC" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: maintainer-mode: adding GCC warning flags" >&5 $as_echo "$as_me: maintainer-mode: adding GCC warning flags" >&6;} CFLAGS_KEEP="$CFLAGS" CFLAGS="" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Werror=implicit-function-declaration" >&5 $as_echo_n "checking if $CC accepts -Werror=implicit-function-declaration... " >&6; } CFLAGS="-Werror=implicit-function-declaration $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Werror=declaration-after-statement" >&5 $as_echo_n "checking if $CC accepts -Werror=declaration-after-statement... " >&6; } CFLAGS="-Werror=declaration-after-statement $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wextra-tokens" >&5 $as_echo_n "checking if $CC accepts -Wextra-tokens... " >&6; } CFLAGS="-Wextra-tokens $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wnewline-eof" >&5 $as_echo_n "checking if $CC accepts -Wnewline-eof... " >&6; } CFLAGS="-Wnewline-eof $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wshorten-64-to-32" >&5 $as_echo_n "checking if $CC accepts -Wshorten-64-to-32... " >&6; } CFLAGS="-Wshorten-64-to-32 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wold-style-definition" >&5 $as_echo_n "checking if $CC accepts -Wold-style-definition... " >&6; } CFLAGS="-Wold-style-definition $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-system-headers" >&5 $as_echo_n "checking if $CC accepts -Wno-system-headers... " >&6; } CFLAGS="-Wno-system-headers $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-format-nonliteral" >&5 $as_echo_n "checking if $CC accepts -Wno-format-nonliteral... " >&6; } CFLAGS="-Wno-format-nonliteral $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wmissing-variable-declarations" >&5 $as_echo_n "checking if $CC accepts -Wmissing-variable-declarations... " >&6; } CFLAGS="-Wmissing-variable-declarations $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-unused-const-variable" >&5 $as_echo_n "checking if $CC accepts -Wno-unused-const-variable... " >&6; } CFLAGS="-Wno-unused-const-variable $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CMAINTAINERFLAGS="$CFLAGS" CFLAGS="$CFLAGS_KEEP" CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wbad-function-cast $CMAINTAINERFLAGS" fi if test "$GXX" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: maintainer-mode: adding G++ warning flags" >&5 $as_echo "$as_me: maintainer-mode: adding G++ warning flags" >&6;} CXXFLAGS_KEEP="$CXXFLAGS" CXXFLAGS="" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wextra-tokens" >&5 $as_echo_n "checking if $CXX accepts -Wextra-tokens... " >&6; } CXXFLAGS="-Wextra-tokens $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wnewline-eof" >&5 $as_echo_n "checking if $CXX accepts -Wnewline-eof... " >&6; } CXXFLAGS="-Wnewline-eof $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wshorten-64-to-32" >&5 $as_echo_n "checking if $CXX accepts -Wshorten-64-to-32... " >&6; } CXXFLAGS="-Wshorten-64-to-32 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wno-system-headers" >&5 $as_echo_n "checking if $CXX accepts -Wno-system-headers... " >&6; } CXXFLAGS="-Wno-system-headers $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXMAINTAINERFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS_KEEP" CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS" fi fi fi if test "$enable_debugging" = "yes" ; then if test "$enable_optimization" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling optimizations for debugging" >&5 $as_echo "$as_me: Disabling optimizations for debugging" >&6;} CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" fi if test -z "`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling debugging for C" >&5 $as_echo "$as_me: Enabling debugging for C" >&6;} CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-inline" >&5 $as_echo_n "checking if $CC accepts -fno-inline... " >&6; } CFLAGS="-fno-inline $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-omit-frame-pointer" >&5 $as_echo_n "checking if $CC accepts -fno-omit-frame-pointer... " >&6; } CFLAGS="-fno-omit-frame-pointer $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -g3" >&5 $as_echo_n "checking if $CC accepts -g3... " >&6; } CFLAGS="-g3 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -g2" >&5 $as_echo_n "checking if $CC accepts -g2... " >&6; } CFLAGS="-g2 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -g" >&5 $as_echo_n "checking if $CC accepts -g... " >&6; } CFLAGS="-g $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if test -z "`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling debugging for C++" >&5 $as_echo "$as_me: Enabling debugging for C++" >&6;} CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -fno-inline" >&5 $as_echo_n "checking if $CXX accepts -fno-inline... " >&6; } CXXFLAGS="-fno-inline $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -fno-omit-frame-pointer" >&5 $as_echo_n "checking if $CXX accepts -fno-omit-frame-pointer... " >&6; } CXXFLAGS="-fno-omit-frame-pointer $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -g3" >&5 $as_echo_n "checking if $CXX accepts -g3... " >&6; } CXXFLAGS="-g3 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -g2" >&5 $as_echo_n "checking if $CXX accepts -g2... " >&6; } CXXFLAGS="-g2 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -g" >&5 $as_echo_n "checking if $CXX accepts -g... " >&6; } CXXFLAGS="-g $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG" CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" elif test "$enable_debugging" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling debugging" >&5 $as_echo "$as_me: Disabling debugging" >&6;} CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`" CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`" CFLAGS="$CFLAGS -DNDEBUG" CXXFLAGS="$CXXFLAGS -DNDEBUG" # elif test "$enable_debugging" = "maybe" ; then # # do nothing fi if test "$enable_optimization" = "yes"; then if test -z "`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"; then CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" if test "$enable_debugging" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling optimizations for C (with debugging enabled)" >&5 $as_echo "$as_me: Enabling optimizations for C (with debugging enabled)" >&6;} _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O1" >&5 $as_echo_n "checking if $CC accepts -O1... " >&6; } CFLAGS="-O1 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O" >&5 $as_echo_n "checking if $CC accepts -O... " >&6; } CFLAGS="-O $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling optimizations for C" >&5 $as_echo "$as_me: Enabling optimizations for C" >&6;} _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O3" >&5 $as_echo_n "checking if $CC accepts -O3... " >&6; } CFLAGS="-O3 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O2" >&5 $as_echo_n "checking if $CC accepts -O2... " >&6; } CFLAGS="-O2 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O1" >&5 $as_echo_n "checking if $CC accepts -O1... " >&6; } CFLAGS="-O1 $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -O" >&5 $as_echo_n "checking if $CC accepts -O... " >&6; } CFLAGS="-O $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -Wno-clobbered" >&5 $as_echo_n "checking if $CC accepts -Wno-clobbered... " >&6; } CFLAGS="-Wno-clobbered $CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi fi if test -z "`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"; then CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" if test "$enable_debugging" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling optimizations for C++ (with debugging enabled)" >&5 $as_echo "$as_me: Enabling optimizations for C++ (with debugging enabled)" >&6;} _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O1" >&5 $as_echo_n "checking if $CXX accepts -O1... " >&6; } CXXFLAGS="-O1 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O" >&5 $as_echo_n "checking if $CXX accepts -O... " >&6; } CXXFLAGS="-O $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling optimizations for C++" >&5 $as_echo "$as_me: Enabling optimizations for C++" >&6;} _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O3" >&5 $as_echo_n "checking if $CXX accepts -O3... " >&6; } CXXFLAGS="-O3 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O2" >&5 $as_echo_n "checking if $CXX accepts -O2... " >&6; } CXXFLAGS="-O2 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O1" >&5 $as_echo_n "checking if $CXX accepts -O1... " >&6; } CXXFLAGS="-O1 $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -O" >&5 $as_echo_n "checking if $CXX accepts -O... " >&6; } CXXFLAGS="-O $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu _svn_xxflags__save="$CXXFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CXX accepts -Wno-clobbered" >&5 $as_echo_n "checking if $CXX accepts -Wno-clobbered... " >&6; } CXXFLAGS="-Wno-clobbered $CXXFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(){} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CXXFLAGS="$_svn_xxflags__save" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi fi elif test "$enable_optimization" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling optimizations" >&5 $as_echo "$as_me: Disabling optimizations" >&6;} CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" # elif test "$enable_optimization" = "maybe" ; then # # do nothing fi { $as_echo "$as_me:${as_lineno-$LINENO}: C compiler flags: $CFLAGS" >&5 $as_echo "$as_me: C compiler flags: $CFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: language-level: $CMODEFLAGS" >&5 $as_echo "$as_me: language-level: $CMODEFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: user-defined: $CUSERFLAGS" >&5 $as_echo "$as_me: user-defined: $CUSERFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: maintainer-mode: $CMAINTAINERFLAGS" >&5 $as_echo "$as_me: maintainer-mode: $CMAINTAINERFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: C++ compiler flags: $CXXFLAGS" >&5 $as_echo "$as_me: C++ compiler flags: $CXXFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: language-level: $CXXMODEFLAGS" >&5 $as_echo "$as_me: language-level: $CXXMODEFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: user-defined: $CXXUSERFLAGS" >&5 $as_echo "$as_me: user-defined: $CXXUSERFLAGS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: maintainer-mode: $CXXMAINTAINERFLAGS" >&5 $as_echo "$as_me: maintainer-mode: $CXXMAINTAINERFLAGS" >&6;} # Check whether --enable-full-version-match was given. if test "${enable_full_version_match+set}" = set; then : enableval=$enable_full_version_match; if test "$enableval" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling svn full version matching" >&5 $as_echo "$as_me: Disabling svn full version matching" >&6;} $as_echo "#define SVN_DISABLE_FULL_VERSION_MATCH 1" >>confdefs.h fi fi # Check whether --with-editor was given. if test "${with_editor+set}" = set; then : withval=$with_editor; if test "$withval" = "yes" ; then as_fn_error $? "--with-editor requires an argument." "$LINENO" 5 else SVN_CLIENT_EDITOR=$withval cat >>confdefs.h <<_ACEOF #define SVN_CLIENT_EDITOR "$SVN_CLIENT_EDITOR" _ACEOF fi fi zlib_found=no zlib_skip=no # Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; if test "$withval" = "yes"; then zlib_skip=no elif test "$withval" = "no"; then zlib_skip=yes else zlib_skip=no zlib_prefix="$withval" fi fi if test "$zlib_skip" = "yes"; then as_fn_error $? "subversion requires zlib" "$LINENO" 5 fi if test -n "$zlib_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: zlib library configuration via prefix" >&5 $as_echo "$as_me: zlib library configuration via prefix" >&6;} save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$zlib_prefix/include" for ac_header in zlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ZLIB_H 1 _ACEOF save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -L$zlib_prefix/lib" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5 $as_echo_n "checking for inflate in -lz... " >&6; } if ${ac_cv_lib_z_inflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inflate (); int main () { return inflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_inflate=yes else ac_cv_lib_z_inflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5 $as_echo "$ac_cv_lib_z_inflate" >&6; } if test "x$ac_cv_lib_z_inflate" = xyes; then : zlib_found="yes" SVN_ZLIB_INCLUDES="-I$zlib_prefix/include" SVN_ZLIB_LIBS="` input_flags="-L$zlib_prefix/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi ` -lz" fi LDFLAGS="$save_ldflags" fi done CPPFLAGS="$save_cppflags" else { $as_echo "$as_me:${as_lineno-$LINENO}: zlib library configuration via pkg-config" >&5 $as_echo "$as_me: zlib library configuration via pkg-config" >&6;} if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib library" >&5 $as_echo_n "checking for zlib library... " >&6; } if $PKG_CONFIG zlib --exists; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } zlib_found=yes SVN_ZLIB_INCLUDES=`$PKG_CONFIG zlib --cflags` SVN_ZLIB_LIBS=`$PKG_CONFIG zlib --libs` SVN_ZLIB_LIBS="` input_flags="$SVN_ZLIB_LIBS" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$zlib_found" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: zlib library configuration" >&5 $as_echo "$as_me: zlib library configuration" >&6;} ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5 $as_echo_n "checking for inflate in -lz... " >&6; } if ${ac_cv_lib_z_inflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inflate (); int main () { return inflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_inflate=yes else ac_cv_lib_z_inflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5 $as_echo "$ac_cv_lib_z_inflate" >&6; } if test "x$ac_cv_lib_z_inflate" = xyes; then : zlib_found="builtin" SVN_ZLIB_LIBS="-lz" fi fi fi fi if test "$zlib_found" = "no"; then as_fn_error $? "subversion requires zlib" "$LINENO" 5 fi # Check whether --with-lz4 was given. if test "${with_lz4+set}" = set; then : withval=$with_lz4; if test "$withval" = internal; then lz4_prefix=internal elif test "$withval" = yes; then lz4_prefix=std else lz4_prefix="$withval" fi else lz4_prefix=std fi if test "$lz4_prefix" = "no"; then as_fn_error $? "Subversion requires LZ4" "$LINENO" 5 fi if test "$lz4_prefix" = "internal"; then { $as_echo "$as_me:${as_lineno-$LINENO}: using internal lz4" >&5 $as_echo "$as_me: using internal lz4" >&6;} $as_echo "#define SVN_INTERNAL_LZ4 1" >>confdefs.h else if test "$lz4_prefix" = "std"; then if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lz4 library via pkg-config" >&5 $as_echo_n "checking for lz4 library via pkg-config... " >&6; } if $PKG_CONFIG liblz4 --atleast-version=129 || $PKG_CONFIG liblz4 --max-version=3; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } lz4_found=yes SVN_LZ4_INCLUDES=`$PKG_CONFIG liblz4 --cflags` SVN_LZ4_LIBS=`$PKG_CONFIG liblz4 --libs` SVN_LZ4_LIBS="` input_flags="$SVN_LZ4_LIBS" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$lz4_found" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: lz4 configuration without pkg-config" >&5 $as_echo "$as_me: lz4 configuration without pkg-config" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LZ4_compress_default in -llz4" >&5 $as_echo_n "checking for LZ4_compress_default in -llz4... " >&6; } if ${ac_cv_lib_lz4_LZ4_compress_default+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llz4 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char LZ4_compress_default (); int main () { return LZ4_compress_default (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lz4_LZ4_compress_default=yes else ac_cv_lib_lz4_LZ4_compress_default=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lz4_LZ4_compress_default" >&5 $as_echo "$ac_cv_lib_lz4_LZ4_compress_default" >&6; } if test "x$ac_cv_lib_lz4_LZ4_compress_default" = xyes; then : lz4_found=yes SVN_LZ4_LIBS="-llz4" fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: lz4 configuration via prefix" >&5 $as_echo "$as_me: lz4 configuration via prefix" >&6;} save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$lz4_prefix/include" save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -L$lz4_prefix/lib" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LZ4_compress_default in -llz4" >&5 $as_echo_n "checking for LZ4_compress_default in -llz4... " >&6; } if ${ac_cv_lib_lz4_LZ4_compress_default+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llz4 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char LZ4_compress_default (); int main () { return LZ4_compress_default (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lz4_LZ4_compress_default=yes else ac_cv_lib_lz4_LZ4_compress_default=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lz4_LZ4_compress_default" >&5 $as_echo "$ac_cv_lib_lz4_LZ4_compress_default" >&6; } if test "x$ac_cv_lib_lz4_LZ4_compress_default" = xyes; then : lz4_found=yes SVN_LZ4_INCLUDES="-I$lz4_prefix/include" SVN_LZ4_LIBS="` input_flags="-L$lz4_prefix/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi ` -llz4" fi LDFLAGS="$save_ldflags" CPPFLAGS="$save_cppflags" fi if test "$lz4_found" != "yes"; then as_fn_error $? "Subversion requires LZ4 >= r129, or use --with-lz4=internal" "$LINENO" 5 fi fi # Check whether --with-utf8proc was given. if test "${with_utf8proc+set}" = set; then : withval=$with_utf8proc; if test "$withval" = internal; then utf8proc_prefix=internal elif test "$withval" = yes; then utf8proc_prefix=std else utf8proc_prefix="$withval" fi else utf8proc_prefix=std fi if test "$utf8proc_prefix" = "no"; then as_fn_error $? "Subversion requires UTF8PROC" "$LINENO" 5 fi if test "$utf8proc_prefix" = "internal"; then { $as_echo "$as_me:${as_lineno-$LINENO}: using internal utf8proc" >&5 $as_echo "$as_me: using internal utf8proc" >&6;} $as_echo "#define SVN_INTERNAL_UTF8PROC 1" >>confdefs.h else if test "$utf8proc_prefix" = "std"; then { $as_echo "$as_me:${as_lineno-$LINENO}: utf8proc configuration without pkg-config" >&5 $as_echo "$as_me: utf8proc configuration without pkg-config" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utf8proc_version in -lutf8proc" >&5 $as_echo_n "checking for utf8proc_version in -lutf8proc... " >&6; } if ${ac_cv_lib_utf8proc_utf8proc_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutf8proc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char utf8proc_version (); int main () { return utf8proc_version (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_utf8proc_utf8proc_version=yes else ac_cv_lib_utf8proc_utf8proc_version=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_utf8proc_utf8proc_version" >&5 $as_echo "$ac_cv_lib_utf8proc_utf8proc_version" >&6; } if test "x$ac_cv_lib_utf8proc_utf8proc_version" = xyes; then : utf8proc_found=yes SVN_UTF8PROC_LIBS="-lutf8proc" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: utf8proc configuration via prefix" >&5 $as_echo "$as_me: utf8proc configuration via prefix" >&6;} save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$utf8proc_prefix/include" save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -L$utf8proc_prefix/lib" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utf8proc_version in -lutf8proc" >&5 $as_echo_n "checking for utf8proc_version in -lutf8proc... " >&6; } if ${ac_cv_lib_utf8proc_utf8proc_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutf8proc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char utf8proc_version (); int main () { return utf8proc_version (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_utf8proc_utf8proc_version=yes else ac_cv_lib_utf8proc_utf8proc_version=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_utf8proc_utf8proc_version" >&5 $as_echo "$ac_cv_lib_utf8proc_utf8proc_version" >&6; } if test "x$ac_cv_lib_utf8proc_utf8proc_version" = xyes; then : utf8proc_found=yes SVN_UTF8PROC_INCLUDES="-I$utf8proc_prefix/include" SVN_UTF8PROC_LIBS="` input_flags="-L$utf8proc_prefix/lib" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi ` -lutf8proc" fi LDFLAGS="$save_ldflags" CPPFLAGS="$save_cppflags" fi if test "$utf8proc_found" != "yes"; then as_fn_error $? "Subversion requires UTF8PROC; install it or re-run configure with \"--with-utf8proc=internal\"" "$LINENO" 5 fi fi MOD_ACTIVATION="" # Check whether --enable-mod-activation was given. if test "${enable_mod_activation+set}" = set; then : enableval=$enable_mod_activation; if test "$enableval" = "yes" ; then MOD_ACTIVATION="-a" { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling apache module activation" >&5 $as_echo "$as_me: Enabling apache module activation" >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling apache module activation" >&5 $as_echo "$as_me: Disabling apache module activation" >&6;} fi fi # Check whether --enable-gcov was given. if test "${enable_gcov+set}" = set; then : enableval=$enable_gcov; if test "$enableval" = "yes" ; then if test "$GCC" = "yes"; then if test "$svn_enable_shared" = "yes" ; then as_fn_error $? "Can't have --enable-gcov without --disable-shared (we recommend also using --enable-all-static)." "$LINENO" 5 fi if test ! "$enable_all_static" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: We recommend --enable-all-static with --enable-gcov." >&5 $as_echo "$as_me: WARNING: We recommend --enable-all-static with --enable-gcov." >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling gcov coverage testing." >&5 $as_echo "$as_me: Enabling gcov coverage testing." >&6;} CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage" else as_fn_error $? "We only support --enable-gcov with GCC right now." "$LINENO" 5 fi fi fi # Check whether --enable-gprof was given. if test "${enable_gprof+set}" = set; then : enableval=$enable_gprof; if test "$enableval" = "yes" ; then if test "$GCC" = "yes"; then if test "$svn_enable_shared" = "yes" ; then as_fn_error $? "Can't have --enable-gprof without --disable-shared (we recommend also using --enable-all-static)." "$LINENO" 5 fi if test ! "$enable_all_static" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: We recommend --enable-all-static with --enable-gprof." >&5 $as_echo "$as_me: WARNING: We recommend --enable-all-static with --enable-gprof." >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling gprof profiling data (to gmon.out)." >&5 $as_echo "$as_me: Enabling gprof profiling data (to gmon.out)." >&6;} CFLAGS="$CFLAGS -pg" CXXFLAGS="$CXXFLAGS -pg" LT_LDFLAGS="$LT_LDFLAGS -pg" else as_fn_error $? "We only support --enable-gprof with GCC right now." "$LINENO" 5 fi fi fi # Scripting and Bindings languages # Python: Used for testsuite, and bindings PYTHON="`$abs_srcdir/build/find_python.sh`" if test -z "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python 2.7 or later is required to run the testsuite" >&5 $as_echo "$as_me: WARNING: Python 2.7 or later is required to run the testsuite" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: or to use the Subversion Python bindings" >&5 $as_echo "$as_me: WARNING: or to use the Subversion Python bindings" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5 $as_echo "$as_me: WARNING: " >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: If you have a suitable Python installed, but not on the" >&5 $as_echo "$as_me: WARNING: If you have a suitable Python installed, but not on the" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PATH, set the environment variable PYTHON to the full path" >&5 $as_echo "$as_me: WARNING: PATH, set the environment variable PYTHON to the full path" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: to the Python executable, and re-run configure" >&5 $as_echo "$as_me: WARNING: to the Python executable, and re-run configure" >&2;} fi for ac_prog in "$PYTHON" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PYTHON" && break done test -n "$PYTHON" || PYTHON="none" # The minimum version for the JVM runtime for our Java bytecode. JAVA_OLDEST_WORKING_VER='1.8' # SVN_CHECK_JDK sets $JAVA_CLASSPATH JAVA_OLDEST_WORKING_VER="$JAVA_OLDEST_WORKING_VER" # Check whether --with-jdk was given. if test "${with_jdk+set}" = set; then : withval=$with_jdk; case "$withval" in "no") JDK_SUITABLE=no ;; "yes") where=check JAVA_OLDEST_WORKING_VER="$JAVA_OLDEST_WORKING_VER" JDK=none JAVA_BIN=none JAVADOC=none JAVAC=none JAVAH=none JAR=none JNI_INCLUDES=none JDK_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JDK" >&5 $as_echo_n "checking for JDK... " >&6; } if test $where = check; then if test -x "$JAVA_HOME/bin/java"; then JDK="$JAVA_HOME" elif test -x "/usr/libexec/java_home"; then JDK=`/usr/libexec/java_home` elif test -x "/Library/Java/Home/bin/java"; then JDK="/Library/Java/Home" elif test -x "/usr/bin/java"; then JDK="/usr" elif test -x "/usr/local/bin/java"; then JDK="/usr/local" fi else JDK=$where fi os_arch="`uname`" if test "$os_arch" = "Darwin"; then OSX_VER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2` if test "$OSX_VER" = "10.4"; then OSX_VER="10.4u" fi OSX_SYS_JAVA_FRAMEWORK="/System/Library/Frameworks/JavaVM.framework" OSX_SDK_JAVA_FRAMEWORK="/Developer/SDKs/MacOSX$OSX_VER.sdk/System/Library" OSX_SDK_JAVA_FRAMEWORK="$OSX_SDK_JAVA_FRAMEWORK/Frameworks/JavaVM.framework" fi if test "$os_arch" = "Darwin" && test "$JDK" = "/usr" && test -d "/Library/Java/Home"; then JDK="/Library/Java/Home" fi if test "$os_arch" = "Darwin" && test "$JDK" = "/Library/Java/Home"; then JRE_LIB_DIR="$OSX_SYS_JAVA_FRAMEWORK/Classes" else JRE_LIB_DIR="$JDK/jre/lib" fi if test -f "$JDK/include/jni.h"; then JNI_INCLUDEDIR="$JDK/include" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$JDK/Headers/jni.h"; then JNI_INCLUDEDIR="$JDK/Headers" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$OSX_SYS_JAVA_FRAMEWORK/Headers/jni.h"; then JNI_INCLUDEDIR="$OSX_SYS_JAVA_FRAMEWORK/Headers" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$OSX_SDK_JAVA_FRAMEWORK/Headers/jni.h"; then JNI_INCLUDEDIR="$OSX_SDK_JAVA_FRAMEWORK/Headers" JDK_SUITABLE=yes else JDK_SUITABLE=no fi if test "$JDK_SUITABLE" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JNI_INCLUDEDIR/jni.h" >&5 $as_echo "$JNI_INCLUDEDIR/jni.h" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$where" != "check"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no JNI header files found." >&5 $as_echo "$as_me: WARNING: no JNI header files found." >&2;} if test "$os_arch" = "Darwin"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates." >&5 $as_echo "$as_me: WARNING: You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates." >&2;} fi fi fi if test "$JDK_SUITABLE" = "yes"; then JAVA_BIN='$(JDK)/bin' JAVA="$JAVA_BIN/java" JAVAC="$JAVA_BIN/javac" JAVAH="$JAVA_BIN/javah" JAVADOC="$JAVA_BIN/javadoc" JAR="$JAVA_BIN/jar" # Check whether --with-jikes was given. if test "${with_jikes+set}" = set; then : withval=$with_jikes; if test "$withval" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The --with-jikes option was ignored" >&5 $as_echo "$as_me: WARNING: The --with-jikes option was ignored" >&2;} fi fi # The release for "-source" could actually be greater than that # of "-target", if we want to cross-compile for lesser JVMs. if test -z "$JAVAC_FLAGS"; then JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.8" if test "$enable_debugging" = "yes"; then JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS" if test -z "$JAVAC_COMPAT_FLAGS"; then JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann -Xlint:-rawtypes" fi fi fi JNI_INCLUDES="-I$JNI_INCLUDEDIR" list="`find "$JNI_INCLUDEDIR" -type d -print`" for dir in $list; do JNI_INCLUDES="$JNI_INCLUDES -I$dir" done fi ;; *) where=$withval JAVA_OLDEST_WORKING_VER="$JAVA_OLDEST_WORKING_VER" JDK=none JAVA_BIN=none JAVADOC=none JAVAC=none JAVAH=none JAR=none JNI_INCLUDES=none JDK_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JDK" >&5 $as_echo_n "checking for JDK... " >&6; } if test $where = check; then if test -x "$JAVA_HOME/bin/java"; then JDK="$JAVA_HOME" elif test -x "/usr/libexec/java_home"; then JDK=`/usr/libexec/java_home` elif test -x "/Library/Java/Home/bin/java"; then JDK="/Library/Java/Home" elif test -x "/usr/bin/java"; then JDK="/usr" elif test -x "/usr/local/bin/java"; then JDK="/usr/local" fi else JDK=$where fi os_arch="`uname`" if test "$os_arch" = "Darwin"; then OSX_VER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2` if test "$OSX_VER" = "10.4"; then OSX_VER="10.4u" fi OSX_SYS_JAVA_FRAMEWORK="/System/Library/Frameworks/JavaVM.framework" OSX_SDK_JAVA_FRAMEWORK="/Developer/SDKs/MacOSX$OSX_VER.sdk/System/Library" OSX_SDK_JAVA_FRAMEWORK="$OSX_SDK_JAVA_FRAMEWORK/Frameworks/JavaVM.framework" fi if test "$os_arch" = "Darwin" && test "$JDK" = "/usr" && test -d "/Library/Java/Home"; then JDK="/Library/Java/Home" fi if test "$os_arch" = "Darwin" && test "$JDK" = "/Library/Java/Home"; then JRE_LIB_DIR="$OSX_SYS_JAVA_FRAMEWORK/Classes" else JRE_LIB_DIR="$JDK/jre/lib" fi if test -f "$JDK/include/jni.h"; then JNI_INCLUDEDIR="$JDK/include" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$JDK/Headers/jni.h"; then JNI_INCLUDEDIR="$JDK/Headers" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$OSX_SYS_JAVA_FRAMEWORK/Headers/jni.h"; then JNI_INCLUDEDIR="$OSX_SYS_JAVA_FRAMEWORK/Headers" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$OSX_SDK_JAVA_FRAMEWORK/Headers/jni.h"; then JNI_INCLUDEDIR="$OSX_SDK_JAVA_FRAMEWORK/Headers" JDK_SUITABLE=yes else JDK_SUITABLE=no fi if test "$JDK_SUITABLE" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JNI_INCLUDEDIR/jni.h" >&5 $as_echo "$JNI_INCLUDEDIR/jni.h" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$where" != "check"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no JNI header files found." >&5 $as_echo "$as_me: WARNING: no JNI header files found." >&2;} if test "$os_arch" = "Darwin"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates." >&5 $as_echo "$as_me: WARNING: You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates." >&2;} fi fi fi if test "$JDK_SUITABLE" = "yes"; then JAVA_BIN='$(JDK)/bin' JAVA="$JAVA_BIN/java" JAVAC="$JAVA_BIN/javac" JAVAH="$JAVA_BIN/javah" JAVADOC="$JAVA_BIN/javadoc" JAR="$JAVA_BIN/jar" # Check whether --with-jikes was given. if test "${with_jikes+set}" = set; then : withval=$with_jikes; if test "$withval" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The --with-jikes option was ignored" >&5 $as_echo "$as_me: WARNING: The --with-jikes option was ignored" >&2;} fi fi # The release for "-source" could actually be greater than that # of "-target", if we want to cross-compile for lesser JVMs. if test -z "$JAVAC_FLAGS"; then JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.8" if test "$enable_debugging" = "yes"; then JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS" if test -z "$JAVAC_COMPAT_FLAGS"; then JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann -Xlint:-rawtypes" fi fi fi JNI_INCLUDES="-I$JNI_INCLUDEDIR" list="`find "$JNI_INCLUDEDIR" -type d -print`" for dir in $list; do JNI_INCLUDES="$JNI_INCLUDES -I$dir" done fi ;; esac else where=check JAVA_OLDEST_WORKING_VER="$JAVA_OLDEST_WORKING_VER" JDK=none JAVA_BIN=none JAVADOC=none JAVAC=none JAVAH=none JAR=none JNI_INCLUDES=none JDK_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JDK" >&5 $as_echo_n "checking for JDK... " >&6; } if test $where = check; then if test -x "$JAVA_HOME/bin/java"; then JDK="$JAVA_HOME" elif test -x "/usr/libexec/java_home"; then JDK=`/usr/libexec/java_home` elif test -x "/Library/Java/Home/bin/java"; then JDK="/Library/Java/Home" elif test -x "/usr/bin/java"; then JDK="/usr" elif test -x "/usr/local/bin/java"; then JDK="/usr/local" fi else JDK=$where fi os_arch="`uname`" if test "$os_arch" = "Darwin"; then OSX_VER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2` if test "$OSX_VER" = "10.4"; then OSX_VER="10.4u" fi OSX_SYS_JAVA_FRAMEWORK="/System/Library/Frameworks/JavaVM.framework" OSX_SDK_JAVA_FRAMEWORK="/Developer/SDKs/MacOSX$OSX_VER.sdk/System/Library" OSX_SDK_JAVA_FRAMEWORK="$OSX_SDK_JAVA_FRAMEWORK/Frameworks/JavaVM.framework" fi if test "$os_arch" = "Darwin" && test "$JDK" = "/usr" && test -d "/Library/Java/Home"; then JDK="/Library/Java/Home" fi if test "$os_arch" = "Darwin" && test "$JDK" = "/Library/Java/Home"; then JRE_LIB_DIR="$OSX_SYS_JAVA_FRAMEWORK/Classes" else JRE_LIB_DIR="$JDK/jre/lib" fi if test -f "$JDK/include/jni.h"; then JNI_INCLUDEDIR="$JDK/include" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$JDK/Headers/jni.h"; then JNI_INCLUDEDIR="$JDK/Headers" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$OSX_SYS_JAVA_FRAMEWORK/Headers/jni.h"; then JNI_INCLUDEDIR="$OSX_SYS_JAVA_FRAMEWORK/Headers" JDK_SUITABLE=yes elif test "$os_arch" = "Darwin" && test -e "$OSX_SDK_JAVA_FRAMEWORK/Headers/jni.h"; then JNI_INCLUDEDIR="$OSX_SDK_JAVA_FRAMEWORK/Headers" JDK_SUITABLE=yes else JDK_SUITABLE=no fi if test "$JDK_SUITABLE" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JNI_INCLUDEDIR/jni.h" >&5 $as_echo "$JNI_INCLUDEDIR/jni.h" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$where" != "check"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no JNI header files found." >&5 $as_echo "$as_me: WARNING: no JNI header files found." >&2;} if test "$os_arch" = "Darwin"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates." >&5 $as_echo "$as_me: WARNING: You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates." >&2;} fi fi fi if test "$JDK_SUITABLE" = "yes"; then JAVA_BIN='$(JDK)/bin' JAVA="$JAVA_BIN/java" JAVAC="$JAVA_BIN/javac" JAVAH="$JAVA_BIN/javah" JAVADOC="$JAVA_BIN/javadoc" JAR="$JAVA_BIN/jar" # Check whether --with-jikes was given. if test "${with_jikes+set}" = set; then : withval=$with_jikes; if test "$withval" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The --with-jikes option was ignored" >&5 $as_echo "$as_me: WARNING: The --with-jikes option was ignored" >&2;} fi fi # The release for "-source" could actually be greater than that # of "-target", if we want to cross-compile for lesser JVMs. if test -z "$JAVAC_FLAGS"; then JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.8" if test "$enable_debugging" = "yes"; then JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS" if test -z "$JAVAC_COMPAT_FLAGS"; then JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann -Xlint:-rawtypes" fi fi fi JNI_INCLUDES="-I$JNI_INCLUDEDIR" list="`find "$JNI_INCLUDEDIR" -type d -print`" for dir in $list; do JNI_INCLUDES="$JNI_INCLUDES -I$dir" done fi fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="none" ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$RUBY"; then # Extract the first word of ""$RUBY"", so it can be a program name with args. set dummy "$RUBY"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_RUBY+:} false; then : $as_echo_n "(cached) " >&6 else case $RUBY in [\\/]* | ?:[\\/]*) ac_cv_path_RUBY="$RUBY" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_RUBY="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_RUBY" && ac_cv_path_RUBY="none" ;; esac fi RUBY=$ac_cv_path_RUBY if test -n "$RUBY"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY" >&5 $as_echo "$RUBY" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else for ac_prog in ruby ruby1 ruby1.8 ruby18 ruby1.9 ruby19 ruby1.9.3 ruby193 ruby2 ruby2.0 ruby20 ruby2.1 ruby21 ruby2.2 ruby22 ruby2.3 ruby23 ruby2.4 ruby24 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_RUBY+:} false; then : $as_echo_n "(cached) " >&6 else case $RUBY in [\\/]* | ?:[\\/]*) ac_cv_path_RUBY="$RUBY" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_RUBY="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi RUBY=$ac_cv_path_RUBY if test -n "$RUBY"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY" >&5 $as_echo "$RUBY" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$RUBY" && break done test -n "$RUBY" || RUBY="none" fi if test "$RUBY" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking rb_hash_foreach" >&5 $as_echo_n "checking rb_hash_foreach... " >&6; } if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } if test -n "$RDOC"; then # Extract the first word of ""$RDOC"", so it can be a program name with args. set dummy "$RDOC"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_RDOC+:} false; then : $as_echo_n "(cached) " >&6 else case $RDOC in [\\/]* | ?:[\\/]*) ac_cv_path_RDOC="$RDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_RDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_RDOC" && ac_cv_path_RDOC="none" ;; esac fi RDOC=$ac_cv_path_RDOC if test -n "$RDOC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RDOC" >&5 $as_echo "$RDOC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else for ac_prog in rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_RDOC+:} false; then : $as_echo_n "(cached) " >&6 else case $RDOC in [\\/]* | ?:[\\/]*) ac_cv_path_RDOC="$RDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_RDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi RDOC=$ac_cv_path_RDOC if test -n "$RDOC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RDOC" >&5 $as_echo "$RDOC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$RDOC" && break done test -n "$RDOC" || RDOC="none" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby major version" >&5 $as_echo_n "checking for Ruby major version... " >&6; } if ${svn_cv_ruby_major+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_major" >&5 $as_echo "$svn_cv_ruby_major" >&6; } RUBY_MAJOR="$svn_cv_ruby_major" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby minor version" >&5 $as_echo_n "checking for Ruby minor version... " >&6; } if ${svn_cv_ruby_minor+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_minor" >&5 $as_echo "$svn_cv_ruby_minor" >&6; } RUBY_MINOR="$svn_cv_ruby_minor" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby teeny version" >&5 $as_echo_n "checking for Ruby teeny version... " >&6; } if ${svn_cv_ruby_teeny+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_teeny" >&5 $as_echo "$svn_cv_ruby_teeny" >&6; } RUBY_TEENY="$svn_cv_ruby_teeny" if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then # Disallow Ruby between 1.8.7 and 1.9.3 RUBY="none" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The detected Ruby is between 1.9 and 1.9.3" >&5 $as_echo "$as_me: WARNING: The detected Ruby is between 1.9 and 1.9.3" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Only 1.8.x and 1.9.3 or later are supported at this time" >&5 $as_echo "$as_me: WARNING: Only 1.8.x and 1.9.3 or later are supported at this time" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } RUBY="none" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The detected Ruby is too old for Subversion to use" >&5 $as_echo "$as_me: WARNING: The detected Ruby is too old for Subversion to use" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: A Ruby which has rb_hash_foreach is required to use the" >&5 $as_echo "$as_me: WARNING: A Ruby which has rb_hash_foreach is required to use the" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Ruby bindings" >&5 $as_echo "$as_me: WARNING: Subversion Ruby bindings" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Upgrade to the official 1.8.2 release, or later" >&5 $as_echo "$as_me: WARNING: Upgrade to the official 1.8.2 release, or later" >&2;} fi fi # Check whether --with-swig was given. if test "${with_swig+set}" = set; then : withval=$with_swig; case "$withval" in "no") SWIG_SUITABLE=no where=no if test $where = no; then SWIG=none elif test $where = required || test $where = check; then # Extract the first word of "swig", so it can be a program name with args. set dummy swig; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SWIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SWIG" && ac_cv_path_SWIG="none" ;; esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 $as_echo "$SWIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$SWIG" = "none" && test $where = required; then as_fn_error $? "SWIG required, but not found" "$LINENO" 5 fi else if test -f "$where"; then SWIG="$where" else SWIG="$where/bin/swig" fi if test ! -f "$SWIG" || test ! -x "$SWIG"; then as_fn_error $? "Could not find swig binary at $SWIG" "$LINENO" 5 fi fi if test "$SWIG" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking swig version" >&5 $as_echo_n "checking swig version... " >&6; } SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ $SED -ne 's/^.*Version \(.*\)$/\1/p'`" # We want the version as an integer so we can test against # which version we're using. SWIG doesn't provide this # to us so we have to come up with it on our own. # The major is passed straight through, # the minor is zero padded to two places, # and the patch level is zero padded to three places. # e.g. 1.3.24 becomes 103024 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ $SED -e 's/[^0-9\.].*$//' \ -e 's/\.\([0-9]\)$/.0\1/' \ -e 's/\.\([0-9][0-9]\)$/.0\1/' \ -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_VERSION_RAW" >&5 $as_echo "$SWIG_VERSION_RAW" >&6; } # If you change the required swig version number, don't forget to update: # subversion/bindings/swig/INSTALL if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "103024"; then SWIG_SUITABLE=yes else SWIG_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&5 $as_echo "$as_me: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion requires SWIG >= 1.3.24" >&5 $as_echo "$as_me: WARNING: Subversion requires SWIG >= 1.3.24" >&2;} fi fi SWIG_PY_COMPILE="none" SWIG_PY_LINK="none" SWIG_PY_OPTS="none" SWIG_PY_ERRMSG="check config.log for details" if test "$PYTHON" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring python swig binding" >&5 $as_echo "$as_me: Configuring python swig binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python includes" >&5 $as_echo_n "checking for Python includes... " >&6; } if ${ac_cv_python_includes+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_includes" >&5 $as_echo "$ac_cv_python_includes" >&6; } SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes" if test "$ac_cv_python_includes" = "none"; then SWIG_PY_ERRMSG="no distutils found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python bindings cannot be built without distutils module" >&5 $as_echo "$as_me: WARNING: python bindings cannot be built without distutils module" >&2;} else python_header_found="no" save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default" if test "x$ac_cv_header_Python_h" = xyes; then : python_header_found="yes" fi CPPFLAGS="$save_cppflags" if test "$python_header_found" = "no"; then SWIG_PY_ERRMSG="no Python.h found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python.h not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: Python.h not found; disabling python swig bindings" >&2;} else py3c_found=no py3c_skip=no # Check whether --with-py3c was given. if test "${with_py3c+set}" = set; then : withval=$with_py3c; if test "$withval" = "yes"; then py3c_skip=no elif test "$withval" = "no"; then py3c_skip=yes else py3c_skip=no py3c_prefix="$withval" fi fi if test "$py3c_skip" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Skipping configure of py3c" >&5 $as_echo "$as_me: Skipping configure of py3c" >&6;} else if test -n "$py3c_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via prefix $py3c_prefix" >&5 $as_echo "$as_me: py3c library configuration via prefix $py3c_prefix" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes -I$py3c_prefix/include" for ac_header in py3c.h do : ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PY3C_H 1 _ACEOF py3c_found="yes" SVN_PY3C_INCLUDES="-I$py3c_prefix/include" fi done CPPFLAGS="$save_cppflags" else { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via pkg-config" >&5 $as_echo "$as_me: py3c library configuration via pkg-config" >&6;} if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for py3c library" >&5 $as_echo_n "checking for py3c library... " >&6; } if $PKG_CONFIG py3c --exists; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } py3c_found=yes SVN_PY3C_INCLUDES=`$PKG_CONFIG py3c --cflags` else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$py3c_found" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration without pkg-config" >&5 $as_echo "$as_me: py3c library configuration without pkg-config" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : py3c_found="yes" fi CPPFLAGS="$save_cppflags" fi fi fi if test "$py3c_found" = "no"; then SWIG_PY_ERRMSG="py3c library not found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c library not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: py3c library not found; disabling python swig bindings" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiling Python extensions" >&5 $as_echo_n "checking for compiling Python extensions... " >&6; } if ${ac_cv_python_compile+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_compile" >&5 $as_echo "$ac_cv_python_compile" >&6; } SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python extensions" >&5 $as_echo_n "checking for linking Python extensions... " >&6; } if ${ac_cv_python_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_link" >&5 $as_echo "$ac_cv_python_link" >&6; } SWIG_PY_LINK="$ac_cv_python_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python libraries" >&5 $as_echo_n "checking for linking Python libraries... " >&6; } if ${ac_cv_python_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_libs" >&5 $as_echo "$ac_cv_python_libs" >&6; } SWIG_PY_LIBS="` input_flags="$ac_cv_python_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 + if test "$SWIG" = "none"; then + SWIG_PY_ERRMSG="" + else + # Look more closely at the SWIG and Python versions to + # determine SWIG_PY_OPTS. We can skip this if we already + # have the SWIG-generated files. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 $as_echo_n "checking for Python >= 3... " >&6; } if ${ac_cv_python_is_py3+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_python_is_py3="no" - $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ - ac_cv_python_is_py3="yes" + ac_cv_python_is_py3="no" + $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ + ac_cv_python_is_py3="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_is_py3" >&5 $as_echo "$ac_cv_python_is_py3" >&6; } - if test "$ac_cv_python_is_py3" = "yes"; then - if test "$SWIG_VERSION" -ge "300010"; then - SWIG_PY_ERRMSG="" - else - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 + if test "$ac_cv_python_is_py3" = "yes"; then + if test "$SWIG_VERSION" -ge "300010"; then + SWIG_PY_ERRMSG="" + else + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&2;} - fi - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" - else - SWIG_PY_OPTS="-python -py3 -nofastunpack" - fi - else - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -classic" - SWIG_PY_ERRMSG="" + fi + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" + else + SWIG_PY_OPTS="-python -py3 -nofastunpack" + fi else - SWIG_PY_OPTS="-python -nofastunpack" - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -classic" + SWIG_PY_ERRMSG="" + else + SWIG_PY_OPTS="-python -nofastunpack" + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&2;} + fi fi fi fi - fi fi fi SWIG_PL_ERRMSG="check config.log for details" if test "$PERL" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking perl version" >&5 $as_echo_n "checking perl version... " >&6; } PERL_VERSION="`$PERL -e 'q([); print $] * 1000000,$/;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_VERSION" >&5 $as_echo "$PERL_VERSION" >&6; } if test "$PERL_VERSION" -ge "5008000"; then SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`" SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`" SWIG_PL_LINK="` input_flags="$SWIG_PL_LINK" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SWIG_PL_ERRMSG="" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl bindings require perl 5.8.0 or newer." >&5 $as_echo "$as_me: WARNING: perl bindings require perl 5.8.0 or newer." >&2;} fi fi SWIG_RB_COMPILE="none" SWIG_RB_LINK="none" SWIG_RB_ERRMSG="check config.log for details" if test "$RUBY" != "none"; then if test x"$SWIG_VERSION" = x"3""00""008"; then # Use a local variable to escape the '#' sign. ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602' { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&5 $as_echo "$as_me: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&2;} fi rbconfig="$RUBY -rrbconfig -e " for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \ rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir do rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG['$var_name']"` eval "rbconfig_$var_name=\"$rbconfig_tmp\"" done { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Ruby SWIG binding" >&5 $as_echo "$as_me: Configuring Ruby SWIG binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby include path" >&5 $as_echo_n "checking for Ruby include path... " >&6; } if ${svn_cv_ruby_includes+:} false; then : $as_echo_n "(cached) " >&6 else if test -d "$rbconfig_rubyhdrdir"; then svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir" if test -d "$rbconfig_rubyarchhdrdir"; then svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir" else svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch" fi else svn_cv_ruby_includes="-I. -I$rbconfig_archdir" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_includes" >&5 $as_echo "$svn_cv_ruby_includes" >&6; } SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to compile Ruby extensions" >&5 $as_echo_n "checking how to compile Ruby extensions... " >&6; } if ${svn_cv_ruby_compile+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_compile="$rbconfig_CC $CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_compile" >&5 $as_echo "$svn_cv_ruby_compile" >&6; } SWIG_RB_COMPILE="$svn_cv_ruby_compile" SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-ansi//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c89//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c90//'` SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby extensions" >&5 $as_echo_n "checking how to link Ruby extensions... " >&6; } if ${svn_cv_ruby_link+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \ $rbconfig_LDSHARED`" svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link" svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_link" >&5 $as_echo "$svn_cv_ruby_link" >&6; } SWIG_RB_LINK="$svn_cv_ruby_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby libraries" >&5 $as_echo_n "checking how to link Ruby libraries... " >&6; } if ${ac_cv_ruby_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ruby_libs" >&5 $as_echo "$ac_cv_ruby_libs" >&6; } SWIG_RB_LIBS="` input_flags="$ac_cv_ruby_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rb_errinfo" >&5 $as_echo_n "checking for rb_errinfo... " >&6; } old_CFLAGS="$CFLAGS" old_LIBS="$LIBS" CFLAGS="$CFLAGS $svn_cv_ruby_includes" CFLAGS=`echo "$CFLAGS" | $SED -e 's/-ansi//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c89//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c90//'` LIBS="$SWIG_RB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {rb_errinfo();} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_rb_errinfo="yes" else have_rb_errinfo="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$have_rb_errinfo" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_RB_ERRINFO 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CFLAGS="$old_CFLAGS" LIBS="$old_LIBS" if ${svn_cv_ruby_sitedir+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir="$rbconfig_sitedir" fi # Check whether --with-ruby-sitedir was given. if test "${with_ruby_sitedir+set}" = set; then : withval=$with_ruby_sitedir; svn_ruby_installdir="$withval" else svn_ruby_installdir="$svn_cv_ruby_sitedir" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby scripts" >&5 $as_echo_n "checking where to install Ruby scripts... " >&6; } if ${svn_cv_ruby_sitedir_libsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_LIB_DIR" >&5 $as_echo "$SWIG_RB_SITE_LIB_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby extensions" >&5 $as_echo_n "checking where to install Ruby extensions... " >&6; } if ${svn_cv_ruby_sitedir_archsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_ARCH_DIR" >&5 $as_echo "$SWIG_RB_SITE_ARCH_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to use output level for Ruby bindings tests" >&5 $as_echo_n "checking how to use output level for Ruby bindings tests... " >&6; } if ${svn_cv_ruby_test_verbose+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_test_verbose="normal" fi # Check whether --with-ruby-test-verbose was given. if test "${with_ruby_test_verbose+set}" = set; then : withval=$with_ruby_test_verbose; svn_ruby_test_verbose="$withval" else svn_ruby_test_verbose="$svn_cv_ruby_test_verbose" fi SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_TEST_VERBOSE" >&5 $as_echo "$SWIG_RB_TEST_VERBOSE" >&6; } SWIG_RB_ERRMSG="" fi ;; "yes") where=required if test $where = no; then SWIG=none elif test $where = required || test $where = check; then # Extract the first word of "swig", so it can be a program name with args. set dummy swig; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SWIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SWIG" && ac_cv_path_SWIG="none" ;; esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 $as_echo "$SWIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$SWIG" = "none" && test $where = required; then as_fn_error $? "SWIG required, but not found" "$LINENO" 5 fi else if test -f "$where"; then SWIG="$where" else SWIG="$where/bin/swig" fi if test ! -f "$SWIG" || test ! -x "$SWIG"; then as_fn_error $? "Could not find swig binary at $SWIG" "$LINENO" 5 fi fi if test "$SWIG" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking swig version" >&5 $as_echo_n "checking swig version... " >&6; } SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ $SED -ne 's/^.*Version \(.*\)$/\1/p'`" # We want the version as an integer so we can test against # which version we're using. SWIG doesn't provide this # to us so we have to come up with it on our own. # The major is passed straight through, # the minor is zero padded to two places, # and the patch level is zero padded to three places. # e.g. 1.3.24 becomes 103024 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ $SED -e 's/[^0-9\.].*$//' \ -e 's/\.\([0-9]\)$/.0\1/' \ -e 's/\.\([0-9][0-9]\)$/.0\1/' \ -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_VERSION_RAW" >&5 $as_echo "$SWIG_VERSION_RAW" >&6; } # If you change the required swig version number, don't forget to update: # subversion/bindings/swig/INSTALL if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "103024"; then SWIG_SUITABLE=yes else SWIG_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&5 $as_echo "$as_me: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion requires SWIG >= 1.3.24" >&5 $as_echo "$as_me: WARNING: Subversion requires SWIG >= 1.3.24" >&2;} fi fi SWIG_PY_COMPILE="none" SWIG_PY_LINK="none" SWIG_PY_OPTS="none" SWIG_PY_ERRMSG="check config.log for details" if test "$PYTHON" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring python swig binding" >&5 $as_echo "$as_me: Configuring python swig binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python includes" >&5 $as_echo_n "checking for Python includes... " >&6; } if ${ac_cv_python_includes+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_includes" >&5 $as_echo "$ac_cv_python_includes" >&6; } SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes" if test "$ac_cv_python_includes" = "none"; then SWIG_PY_ERRMSG="no distutils found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python bindings cannot be built without distutils module" >&5 $as_echo "$as_me: WARNING: python bindings cannot be built without distutils module" >&2;} else python_header_found="no" save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default" if test "x$ac_cv_header_Python_h" = xyes; then : python_header_found="yes" fi CPPFLAGS="$save_cppflags" if test "$python_header_found" = "no"; then SWIG_PY_ERRMSG="no Python.h found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python.h not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: Python.h not found; disabling python swig bindings" >&2;} else py3c_found=no py3c_skip=no # Check whether --with-py3c was given. if test "${with_py3c+set}" = set; then : withval=$with_py3c; if test "$withval" = "yes"; then py3c_skip=no elif test "$withval" = "no"; then py3c_skip=yes else py3c_skip=no py3c_prefix="$withval" fi fi if test "$py3c_skip" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Skipping configure of py3c" >&5 $as_echo "$as_me: Skipping configure of py3c" >&6;} else if test -n "$py3c_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via prefix $py3c_prefix" >&5 $as_echo "$as_me: py3c library configuration via prefix $py3c_prefix" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes -I$py3c_prefix/include" for ac_header in py3c.h do : ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PY3C_H 1 _ACEOF py3c_found="yes" SVN_PY3C_INCLUDES="-I$py3c_prefix/include" fi done CPPFLAGS="$save_cppflags" else { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via pkg-config" >&5 $as_echo "$as_me: py3c library configuration via pkg-config" >&6;} if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for py3c library" >&5 $as_echo_n "checking for py3c library... " >&6; } if $PKG_CONFIG py3c --exists; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } py3c_found=yes SVN_PY3C_INCLUDES=`$PKG_CONFIG py3c --cflags` else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$py3c_found" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration without pkg-config" >&5 $as_echo "$as_me: py3c library configuration without pkg-config" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : py3c_found="yes" fi CPPFLAGS="$save_cppflags" fi fi fi if test "$py3c_found" = "no"; then SWIG_PY_ERRMSG="py3c library not found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c library not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: py3c library not found; disabling python swig bindings" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiling Python extensions" >&5 $as_echo_n "checking for compiling Python extensions... " >&6; } if ${ac_cv_python_compile+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_compile" >&5 $as_echo "$ac_cv_python_compile" >&6; } SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python extensions" >&5 $as_echo_n "checking for linking Python extensions... " >&6; } if ${ac_cv_python_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_link" >&5 $as_echo "$ac_cv_python_link" >&6; } SWIG_PY_LINK="$ac_cv_python_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python libraries" >&5 $as_echo_n "checking for linking Python libraries... " >&6; } if ${ac_cv_python_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_libs" >&5 $as_echo "$ac_cv_python_libs" >&6; } SWIG_PY_LIBS="` input_flags="$ac_cv_python_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 + if test "$SWIG" = "none"; then + SWIG_PY_ERRMSG="" + else + # Look more closely at the SWIG and Python versions to + # determine SWIG_PY_OPTS. We can skip this if we already + # have the SWIG-generated files. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 $as_echo_n "checking for Python >= 3... " >&6; } if ${ac_cv_python_is_py3+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_python_is_py3="no" - $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ - ac_cv_python_is_py3="yes" + ac_cv_python_is_py3="no" + $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ + ac_cv_python_is_py3="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_is_py3" >&5 $as_echo "$ac_cv_python_is_py3" >&6; } - if test "$ac_cv_python_is_py3" = "yes"; then - if test "$SWIG_VERSION" -ge "300010"; then - SWIG_PY_ERRMSG="" - else - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 + if test "$ac_cv_python_is_py3" = "yes"; then + if test "$SWIG_VERSION" -ge "300010"; then + SWIG_PY_ERRMSG="" + else + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&2;} - fi - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" - else - SWIG_PY_OPTS="-python -py3 -nofastunpack" - fi - else - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -classic" - SWIG_PY_ERRMSG="" + fi + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" + else + SWIG_PY_OPTS="-python -py3 -nofastunpack" + fi else - SWIG_PY_OPTS="-python -nofastunpack" - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -classic" + SWIG_PY_ERRMSG="" + else + SWIG_PY_OPTS="-python -nofastunpack" + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&2;} + fi fi fi fi - fi fi fi SWIG_PL_ERRMSG="check config.log for details" if test "$PERL" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking perl version" >&5 $as_echo_n "checking perl version... " >&6; } PERL_VERSION="`$PERL -e 'q([); print $] * 1000000,$/;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_VERSION" >&5 $as_echo "$PERL_VERSION" >&6; } if test "$PERL_VERSION" -ge "5008000"; then SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`" SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`" SWIG_PL_LINK="` input_flags="$SWIG_PL_LINK" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SWIG_PL_ERRMSG="" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl bindings require perl 5.8.0 or newer." >&5 $as_echo "$as_me: WARNING: perl bindings require perl 5.8.0 or newer." >&2;} fi fi SWIG_RB_COMPILE="none" SWIG_RB_LINK="none" SWIG_RB_ERRMSG="check config.log for details" if test "$RUBY" != "none"; then if test x"$SWIG_VERSION" = x"3""00""008"; then # Use a local variable to escape the '#' sign. ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602' { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&5 $as_echo "$as_me: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&2;} fi rbconfig="$RUBY -rrbconfig -e " for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \ rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir do rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG['$var_name']"` eval "rbconfig_$var_name=\"$rbconfig_tmp\"" done { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Ruby SWIG binding" >&5 $as_echo "$as_me: Configuring Ruby SWIG binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby include path" >&5 $as_echo_n "checking for Ruby include path... " >&6; } if ${svn_cv_ruby_includes+:} false; then : $as_echo_n "(cached) " >&6 else if test -d "$rbconfig_rubyhdrdir"; then svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir" if test -d "$rbconfig_rubyarchhdrdir"; then svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir" else svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch" fi else svn_cv_ruby_includes="-I. -I$rbconfig_archdir" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_includes" >&5 $as_echo "$svn_cv_ruby_includes" >&6; } SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to compile Ruby extensions" >&5 $as_echo_n "checking how to compile Ruby extensions... " >&6; } if ${svn_cv_ruby_compile+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_compile="$rbconfig_CC $CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_compile" >&5 $as_echo "$svn_cv_ruby_compile" >&6; } SWIG_RB_COMPILE="$svn_cv_ruby_compile" SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-ansi//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c89//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c90//'` SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby extensions" >&5 $as_echo_n "checking how to link Ruby extensions... " >&6; } if ${svn_cv_ruby_link+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \ $rbconfig_LDSHARED`" svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link" svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_link" >&5 $as_echo "$svn_cv_ruby_link" >&6; } SWIG_RB_LINK="$svn_cv_ruby_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby libraries" >&5 $as_echo_n "checking how to link Ruby libraries... " >&6; } if ${ac_cv_ruby_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ruby_libs" >&5 $as_echo "$ac_cv_ruby_libs" >&6; } SWIG_RB_LIBS="` input_flags="$ac_cv_ruby_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rb_errinfo" >&5 $as_echo_n "checking for rb_errinfo... " >&6; } old_CFLAGS="$CFLAGS" old_LIBS="$LIBS" CFLAGS="$CFLAGS $svn_cv_ruby_includes" CFLAGS=`echo "$CFLAGS" | $SED -e 's/-ansi//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c89//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c90//'` LIBS="$SWIG_RB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {rb_errinfo();} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_rb_errinfo="yes" else have_rb_errinfo="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$have_rb_errinfo" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_RB_ERRINFO 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CFLAGS="$old_CFLAGS" LIBS="$old_LIBS" if ${svn_cv_ruby_sitedir+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir="$rbconfig_sitedir" fi # Check whether --with-ruby-sitedir was given. if test "${with_ruby_sitedir+set}" = set; then : withval=$with_ruby_sitedir; svn_ruby_installdir="$withval" else svn_ruby_installdir="$svn_cv_ruby_sitedir" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby scripts" >&5 $as_echo_n "checking where to install Ruby scripts... " >&6; } if ${svn_cv_ruby_sitedir_libsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_LIB_DIR" >&5 $as_echo "$SWIG_RB_SITE_LIB_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby extensions" >&5 $as_echo_n "checking where to install Ruby extensions... " >&6; } if ${svn_cv_ruby_sitedir_archsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_ARCH_DIR" >&5 $as_echo "$SWIG_RB_SITE_ARCH_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to use output level for Ruby bindings tests" >&5 $as_echo_n "checking how to use output level for Ruby bindings tests... " >&6; } if ${svn_cv_ruby_test_verbose+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_test_verbose="normal" fi # Check whether --with-ruby-test-verbose was given. if test "${with_ruby_test_verbose+set}" = set; then : withval=$with_ruby_test_verbose; svn_ruby_test_verbose="$withval" else svn_ruby_test_verbose="$svn_cv_ruby_test_verbose" fi SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_TEST_VERBOSE" >&5 $as_echo "$SWIG_RB_TEST_VERBOSE" >&6; } SWIG_RB_ERRMSG="" fi ;; *) where=$withval if test $where = no; then SWIG=none elif test $where = required || test $where = check; then # Extract the first word of "swig", so it can be a program name with args. set dummy swig; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SWIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SWIG" && ac_cv_path_SWIG="none" ;; esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 $as_echo "$SWIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$SWIG" = "none" && test $where = required; then as_fn_error $? "SWIG required, but not found" "$LINENO" 5 fi else if test -f "$where"; then SWIG="$where" else SWIG="$where/bin/swig" fi if test ! -f "$SWIG" || test ! -x "$SWIG"; then as_fn_error $? "Could not find swig binary at $SWIG" "$LINENO" 5 fi fi if test "$SWIG" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking swig version" >&5 $as_echo_n "checking swig version... " >&6; } SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ $SED -ne 's/^.*Version \(.*\)$/\1/p'`" # We want the version as an integer so we can test against # which version we're using. SWIG doesn't provide this # to us so we have to come up with it on our own. # The major is passed straight through, # the minor is zero padded to two places, # and the patch level is zero padded to three places. # e.g. 1.3.24 becomes 103024 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ $SED -e 's/[^0-9\.].*$//' \ -e 's/\.\([0-9]\)$/.0\1/' \ -e 's/\.\([0-9][0-9]\)$/.0\1/' \ -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_VERSION_RAW" >&5 $as_echo "$SWIG_VERSION_RAW" >&6; } # If you change the required swig version number, don't forget to update: # subversion/bindings/swig/INSTALL if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "103024"; then SWIG_SUITABLE=yes else SWIG_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&5 $as_echo "$as_me: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion requires SWIG >= 1.3.24" >&5 $as_echo "$as_me: WARNING: Subversion requires SWIG >= 1.3.24" >&2;} fi fi SWIG_PY_COMPILE="none" SWIG_PY_LINK="none" SWIG_PY_OPTS="none" SWIG_PY_ERRMSG="check config.log for details" if test "$PYTHON" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring python swig binding" >&5 $as_echo "$as_me: Configuring python swig binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python includes" >&5 $as_echo_n "checking for Python includes... " >&6; } if ${ac_cv_python_includes+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_includes" >&5 $as_echo "$ac_cv_python_includes" >&6; } SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes" if test "$ac_cv_python_includes" = "none"; then SWIG_PY_ERRMSG="no distutils found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python bindings cannot be built without distutils module" >&5 $as_echo "$as_me: WARNING: python bindings cannot be built without distutils module" >&2;} else python_header_found="no" save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default" if test "x$ac_cv_header_Python_h" = xyes; then : python_header_found="yes" fi CPPFLAGS="$save_cppflags" if test "$python_header_found" = "no"; then SWIG_PY_ERRMSG="no Python.h found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python.h not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: Python.h not found; disabling python swig bindings" >&2;} else py3c_found=no py3c_skip=no # Check whether --with-py3c was given. if test "${with_py3c+set}" = set; then : withval=$with_py3c; if test "$withval" = "yes"; then py3c_skip=no elif test "$withval" = "no"; then py3c_skip=yes else py3c_skip=no py3c_prefix="$withval" fi fi if test "$py3c_skip" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Skipping configure of py3c" >&5 $as_echo "$as_me: Skipping configure of py3c" >&6;} else if test -n "$py3c_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via prefix $py3c_prefix" >&5 $as_echo "$as_me: py3c library configuration via prefix $py3c_prefix" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes -I$py3c_prefix/include" for ac_header in py3c.h do : ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PY3C_H 1 _ACEOF py3c_found="yes" SVN_PY3C_INCLUDES="-I$py3c_prefix/include" fi done CPPFLAGS="$save_cppflags" else { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via pkg-config" >&5 $as_echo "$as_me: py3c library configuration via pkg-config" >&6;} if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for py3c library" >&5 $as_echo_n "checking for py3c library... " >&6; } if $PKG_CONFIG py3c --exists; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } py3c_found=yes SVN_PY3C_INCLUDES=`$PKG_CONFIG py3c --cflags` else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$py3c_found" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration without pkg-config" >&5 $as_echo "$as_me: py3c library configuration without pkg-config" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : py3c_found="yes" fi CPPFLAGS="$save_cppflags" fi fi fi if test "$py3c_found" = "no"; then SWIG_PY_ERRMSG="py3c library not found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c library not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: py3c library not found; disabling python swig bindings" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiling Python extensions" >&5 $as_echo_n "checking for compiling Python extensions... " >&6; } if ${ac_cv_python_compile+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_compile" >&5 $as_echo "$ac_cv_python_compile" >&6; } SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python extensions" >&5 $as_echo_n "checking for linking Python extensions... " >&6; } if ${ac_cv_python_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_link" >&5 $as_echo "$ac_cv_python_link" >&6; } SWIG_PY_LINK="$ac_cv_python_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python libraries" >&5 $as_echo_n "checking for linking Python libraries... " >&6; } if ${ac_cv_python_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_libs" >&5 $as_echo "$ac_cv_python_libs" >&6; } SWIG_PY_LIBS="` input_flags="$ac_cv_python_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 + if test "$SWIG" = "none"; then + SWIG_PY_ERRMSG="" + else + # Look more closely at the SWIG and Python versions to + # determine SWIG_PY_OPTS. We can skip this if we already + # have the SWIG-generated files. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 $as_echo_n "checking for Python >= 3... " >&6; } if ${ac_cv_python_is_py3+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_python_is_py3="no" - $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ - ac_cv_python_is_py3="yes" + ac_cv_python_is_py3="no" + $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ + ac_cv_python_is_py3="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_is_py3" >&5 $as_echo "$ac_cv_python_is_py3" >&6; } - if test "$ac_cv_python_is_py3" = "yes"; then - if test "$SWIG_VERSION" -ge "300010"; then - SWIG_PY_ERRMSG="" - else - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 + if test "$ac_cv_python_is_py3" = "yes"; then + if test "$SWIG_VERSION" -ge "300010"; then + SWIG_PY_ERRMSG="" + else + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&2;} - fi - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" - else - SWIG_PY_OPTS="-python -py3 -nofastunpack" - fi - else - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -classic" - SWIG_PY_ERRMSG="" + fi + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" + else + SWIG_PY_OPTS="-python -py3 -nofastunpack" + fi else - SWIG_PY_OPTS="-python -nofastunpack" - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -classic" + SWIG_PY_ERRMSG="" + else + SWIG_PY_OPTS="-python -nofastunpack" + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&2;} + fi fi fi fi - fi fi fi SWIG_PL_ERRMSG="check config.log for details" if test "$PERL" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking perl version" >&5 $as_echo_n "checking perl version... " >&6; } PERL_VERSION="`$PERL -e 'q([); print $] * 1000000,$/;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_VERSION" >&5 $as_echo "$PERL_VERSION" >&6; } if test "$PERL_VERSION" -ge "5008000"; then SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`" SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`" SWIG_PL_LINK="` input_flags="$SWIG_PL_LINK" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SWIG_PL_ERRMSG="" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl bindings require perl 5.8.0 or newer." >&5 $as_echo "$as_me: WARNING: perl bindings require perl 5.8.0 or newer." >&2;} fi fi SWIG_RB_COMPILE="none" SWIG_RB_LINK="none" SWIG_RB_ERRMSG="check config.log for details" if test "$RUBY" != "none"; then if test x"$SWIG_VERSION" = x"3""00""008"; then # Use a local variable to escape the '#' sign. ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602' { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&5 $as_echo "$as_me: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&2;} fi rbconfig="$RUBY -rrbconfig -e " for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \ rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir do rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG['$var_name']"` eval "rbconfig_$var_name=\"$rbconfig_tmp\"" done { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Ruby SWIG binding" >&5 $as_echo "$as_me: Configuring Ruby SWIG binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby include path" >&5 $as_echo_n "checking for Ruby include path... " >&6; } if ${svn_cv_ruby_includes+:} false; then : $as_echo_n "(cached) " >&6 else if test -d "$rbconfig_rubyhdrdir"; then svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir" if test -d "$rbconfig_rubyarchhdrdir"; then svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir" else svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch" fi else svn_cv_ruby_includes="-I. -I$rbconfig_archdir" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_includes" >&5 $as_echo "$svn_cv_ruby_includes" >&6; } SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to compile Ruby extensions" >&5 $as_echo_n "checking how to compile Ruby extensions... " >&6; } if ${svn_cv_ruby_compile+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_compile="$rbconfig_CC $CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_compile" >&5 $as_echo "$svn_cv_ruby_compile" >&6; } SWIG_RB_COMPILE="$svn_cv_ruby_compile" SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-ansi//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c89//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c90//'` SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby extensions" >&5 $as_echo_n "checking how to link Ruby extensions... " >&6; } if ${svn_cv_ruby_link+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \ $rbconfig_LDSHARED`" svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link" svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_link" >&5 $as_echo "$svn_cv_ruby_link" >&6; } SWIG_RB_LINK="$svn_cv_ruby_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby libraries" >&5 $as_echo_n "checking how to link Ruby libraries... " >&6; } if ${ac_cv_ruby_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ruby_libs" >&5 $as_echo "$ac_cv_ruby_libs" >&6; } SWIG_RB_LIBS="` input_flags="$ac_cv_ruby_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rb_errinfo" >&5 $as_echo_n "checking for rb_errinfo... " >&6; } old_CFLAGS="$CFLAGS" old_LIBS="$LIBS" CFLAGS="$CFLAGS $svn_cv_ruby_includes" CFLAGS=`echo "$CFLAGS" | $SED -e 's/-ansi//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c89//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c90//'` LIBS="$SWIG_RB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {rb_errinfo();} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_rb_errinfo="yes" else have_rb_errinfo="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$have_rb_errinfo" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_RB_ERRINFO 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CFLAGS="$old_CFLAGS" LIBS="$old_LIBS" if ${svn_cv_ruby_sitedir+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir="$rbconfig_sitedir" fi # Check whether --with-ruby-sitedir was given. if test "${with_ruby_sitedir+set}" = set; then : withval=$with_ruby_sitedir; svn_ruby_installdir="$withval" else svn_ruby_installdir="$svn_cv_ruby_sitedir" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby scripts" >&5 $as_echo_n "checking where to install Ruby scripts... " >&6; } if ${svn_cv_ruby_sitedir_libsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_LIB_DIR" >&5 $as_echo "$SWIG_RB_SITE_LIB_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby extensions" >&5 $as_echo_n "checking where to install Ruby extensions... " >&6; } if ${svn_cv_ruby_sitedir_archsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_ARCH_DIR" >&5 $as_echo "$SWIG_RB_SITE_ARCH_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to use output level for Ruby bindings tests" >&5 $as_echo_n "checking how to use output level for Ruby bindings tests... " >&6; } if ${svn_cv_ruby_test_verbose+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_test_verbose="normal" fi # Check whether --with-ruby-test-verbose was given. if test "${with_ruby_test_verbose+set}" = set; then : withval=$with_ruby_test_verbose; svn_ruby_test_verbose="$withval" else svn_ruby_test_verbose="$svn_cv_ruby_test_verbose" fi SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_TEST_VERBOSE" >&5 $as_echo "$SWIG_RB_TEST_VERBOSE" >&6; } SWIG_RB_ERRMSG="" fi ;; esac else where=check if test $where = no; then SWIG=none elif test $where = required || test $where = check; then # Extract the first word of "swig", so it can be a program name with args. set dummy swig; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SWIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SWIG" && ac_cv_path_SWIG="none" ;; esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 $as_echo "$SWIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$SWIG" = "none" && test $where = required; then as_fn_error $? "SWIG required, but not found" "$LINENO" 5 fi else if test -f "$where"; then SWIG="$where" else SWIG="$where/bin/swig" fi if test ! -f "$SWIG" || test ! -x "$SWIG"; then as_fn_error $? "Could not find swig binary at $SWIG" "$LINENO" 5 fi fi if test "$SWIG" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking swig version" >&5 $as_echo_n "checking swig version... " >&6; } SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ $SED -ne 's/^.*Version \(.*\)$/\1/p'`" # We want the version as an integer so we can test against # which version we're using. SWIG doesn't provide this # to us so we have to come up with it on our own. # The major is passed straight through, # the minor is zero padded to two places, # and the patch level is zero padded to three places. # e.g. 1.3.24 becomes 103024 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ $SED -e 's/[^0-9\.].*$//' \ -e 's/\.\([0-9]\)$/.0\1/' \ -e 's/\.\([0-9][0-9]\)$/.0\1/' \ -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_VERSION_RAW" >&5 $as_echo "$SWIG_VERSION_RAW" >&6; } # If you change the required swig version number, don't forget to update: # subversion/bindings/swig/INSTALL if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "103024"; then SWIG_SUITABLE=yes else SWIG_SUITABLE=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&5 $as_echo "$as_me: WARNING: Detected SWIG version $SWIG_VERSION_RAW" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion requires SWIG >= 1.3.24" >&5 $as_echo "$as_me: WARNING: Subversion requires SWIG >= 1.3.24" >&2;} fi fi SWIG_PY_COMPILE="none" SWIG_PY_LINK="none" SWIG_PY_OPTS="none" SWIG_PY_ERRMSG="check config.log for details" if test "$PYTHON" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring python swig binding" >&5 $as_echo "$as_me: Configuring python swig binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python includes" >&5 $as_echo_n "checking for Python includes... " >&6; } if ${ac_cv_python_includes+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_includes" >&5 $as_echo "$ac_cv_python_includes" >&6; } SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes" if test "$ac_cv_python_includes" = "none"; then SWIG_PY_ERRMSG="no distutils found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python bindings cannot be built without distutils module" >&5 $as_echo "$as_me: WARNING: python bindings cannot be built without distutils module" >&2;} else python_header_found="no" save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default" if test "x$ac_cv_header_Python_h" = xyes; then : python_header_found="yes" fi CPPFLAGS="$save_cppflags" if test "$python_header_found" = "no"; then SWIG_PY_ERRMSG="no Python.h found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python.h not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: Python.h not found; disabling python swig bindings" >&2;} else py3c_found=no py3c_skip=no # Check whether --with-py3c was given. if test "${with_py3c+set}" = set; then : withval=$with_py3c; if test "$withval" = "yes"; then py3c_skip=no elif test "$withval" = "no"; then py3c_skip=yes else py3c_skip=no py3c_prefix="$withval" fi fi if test "$py3c_skip" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Skipping configure of py3c" >&5 $as_echo "$as_me: Skipping configure of py3c" >&6;} else if test -n "$py3c_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via prefix $py3c_prefix" >&5 $as_echo "$as_me: py3c library configuration via prefix $py3c_prefix" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes -I$py3c_prefix/include" for ac_header in py3c.h do : ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PY3C_H 1 _ACEOF py3c_found="yes" SVN_PY3C_INCLUDES="-I$py3c_prefix/include" fi done CPPFLAGS="$save_cppflags" else { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration via pkg-config" >&5 $as_echo "$as_me: py3c library configuration via pkg-config" >&6;} if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for py3c library" >&5 $as_echo_n "checking for py3c library... " >&6; } if $PKG_CONFIG py3c --exists; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } py3c_found=yes SVN_PY3C_INCLUDES=`$PKG_CONFIG py3c --cflags` else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$py3c_found" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: py3c library configuration without pkg-config" >&5 $as_echo "$as_me: py3c library configuration without pkg-config" >&6;} if test "$ac_cv_python_includes" = "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c cannot be used without distutils module" >&5 $as_echo "$as_me: WARNING: py3c cannot be used without distutils module" >&2;} fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" ac_fn_c_check_header_mongrel "$LINENO" "py3c.h" "ac_cv_header_py3c_h" "$ac_includes_default" if test "x$ac_cv_header_py3c_h" = xyes; then : py3c_found="yes" fi CPPFLAGS="$save_cppflags" fi fi fi if test "$py3c_found" = "no"; then SWIG_PY_ERRMSG="py3c library not found" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: py3c library not found; disabling python swig bindings" >&5 $as_echo "$as_me: WARNING: py3c library not found; disabling python swig bindings" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiling Python extensions" >&5 $as_echo_n "checking for compiling Python extensions... " >&6; } if ${ac_cv_python_compile+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_compile" >&5 $as_echo "$ac_cv_python_compile" >&6; } SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python extensions" >&5 $as_echo_n "checking for linking Python extensions... " >&6; } if ${ac_cv_python_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_link" >&5 $as_echo "$ac_cv_python_link" >&6; } SWIG_PY_LINK="$ac_cv_python_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking Python libraries" >&5 $as_echo_n "checking for linking Python libraries... " >&6; } if ${ac_cv_python_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_libs" >&5 $as_echo "$ac_cv_python_libs" >&6; } SWIG_PY_LIBS="` input_flags="$ac_cv_python_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 + if test "$SWIG" = "none"; then + SWIG_PY_ERRMSG="" + else + # Look more closely at the SWIG and Python versions to + # determine SWIG_PY_OPTS. We can skip this if we already + # have the SWIG-generated files. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python >= 3" >&5 $as_echo_n "checking for Python >= 3... " >&6; } if ${ac_cv_python_is_py3+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_python_is_py3="no" - $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ - ac_cv_python_is_py3="yes" + ac_cv_python_is_py3="no" + $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ + ac_cv_python_is_py3="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_is_py3" >&5 $as_echo "$ac_cv_python_is_py3" >&6; } - if test "$ac_cv_python_is_py3" = "yes"; then - if test "$SWIG_VERSION" -ge "300010"; then - SWIG_PY_ERRMSG="" - else - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 + if test "$ac_cv_python_is_py3" = "yes"; then + if test "$SWIG_VERSION" -ge "300010"; then + SWIG_PY_ERRMSG="" + else + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer" >&2;} - fi - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" - else - SWIG_PY_OPTS="-python -py3 -nofastunpack" - fi - else - if test "$SWIG_VERSION" -lt "400000"; then - SWIG_PY_OPTS="-python -classic" - SWIG_PY_ERRMSG="" + fi + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" + else + SWIG_PY_OPTS="-python -py3 -nofastunpack" + fi else - SWIG_PY_OPTS="-python -nofastunpack" - SWIG_PY_ERRMSG="SWIG version is not suitable" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -classic" + SWIG_PY_ERRMSG="" + else + SWIG_PY_OPTS="-python -nofastunpack" + SWIG_PY_ERRMSG="SWIG version is not suitable" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&5 $as_echo "$as_me: WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0" >&2;} + fi fi fi fi - fi fi fi SWIG_PL_ERRMSG="check config.log for details" if test "$PERL" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking perl version" >&5 $as_echo_n "checking perl version... " >&6; } PERL_VERSION="`$PERL -e 'q([); print $] * 1000000,$/;'`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_VERSION" >&5 $as_echo "$PERL_VERSION" >&6; } if test "$PERL_VERSION" -ge "5008000"; then SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`" SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`" SWIG_PL_LINK="` input_flags="$SWIG_PL_LINK" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" SWIG_PL_ERRMSG="" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl bindings require perl 5.8.0 or newer." >&5 $as_echo "$as_me: WARNING: perl bindings require perl 5.8.0 or newer." >&2;} fi fi SWIG_RB_COMPILE="none" SWIG_RB_LINK="none" SWIG_RB_ERRMSG="check config.log for details" if test "$RUBY" != "none"; then if test x"$SWIG_VERSION" = x"3""00""008"; then # Use a local variable to escape the '#' sign. ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602' { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&5 $as_echo "$as_me: WARNING: Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602" >&2;} fi rbconfig="$RUBY -rrbconfig -e " for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \ rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir do rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG['$var_name']"` eval "rbconfig_$var_name=\"$rbconfig_tmp\"" done { $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Ruby SWIG binding" >&5 $as_echo "$as_me: Configuring Ruby SWIG binding" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ruby include path" >&5 $as_echo_n "checking for Ruby include path... " >&6; } if ${svn_cv_ruby_includes+:} false; then : $as_echo_n "(cached) " >&6 else if test -d "$rbconfig_rubyhdrdir"; then svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir" if test -d "$rbconfig_rubyarchhdrdir"; then svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir" else svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch" fi else svn_cv_ruby_includes="-I. -I$rbconfig_archdir" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_includes" >&5 $as_echo "$svn_cv_ruby_includes" >&6; } SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to compile Ruby extensions" >&5 $as_echo_n "checking how to compile Ruby extensions... " >&6; } if ${svn_cv_ruby_compile+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_compile="$rbconfig_CC $CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_compile" >&5 $as_echo "$svn_cv_ruby_compile" >&6; } SWIG_RB_COMPILE="$svn_cv_ruby_compile" SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-ansi//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c89//'` SWIG_RB_COMPILE=`echo "$SWIG_RB_COMPILE" | $SED -e 's/-std=c90//'` SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby extensions" >&5 $as_echo_n "checking how to link Ruby extensions... " >&6; } if ${svn_cv_ruby_link+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \ $rbconfig_LDSHARED`" svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link" svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $svn_cv_ruby_link" >&5 $as_echo "$svn_cv_ruby_link" >&6; } SWIG_RB_LINK="$svn_cv_ruby_link" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link Ruby libraries" >&5 $as_echo_n "checking how to link Ruby libraries... " >&6; } if ${ac_cv_ruby_libs+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ruby_libs" >&5 $as_echo "$ac_cv_ruby_libs" >&6; } SWIG_RB_LIBS="` input_flags="$ac_cv_ruby_libs" output_flags="" filtered_dirs="/lib /lib64 /usr/lib /usr/lib64" for flag in $input_flags; do filter="no" for dir in $filtered_dirs; do if test "$flag" = "-L$dir" || test "$flag" = "-L$dir/"; then filter="yes" break fi done if test "$filter" = "no"; then output_flags="$output_flags $flag" fi done if test -n "$output_flags"; then printf "%s" "${output_flags# }" fi `" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rb_errinfo" >&5 $as_echo_n "checking for rb_errinfo... " >&6; } old_CFLAGS="$CFLAGS" old_LIBS="$LIBS" CFLAGS="$CFLAGS $svn_cv_ruby_includes" CFLAGS=`echo "$CFLAGS" | $SED -e 's/-ansi//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c89//'` CFLAGS=`echo "$CFLAGS" | $SED -e 's/-std=c90//'` LIBS="$SWIG_RB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main() {rb_errinfo();} _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_rb_errinfo="yes" else have_rb_errinfo="no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$have_rb_errinfo" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_RB_ERRINFO 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CFLAGS="$old_CFLAGS" LIBS="$old_LIBS" if ${svn_cv_ruby_sitedir+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir="$rbconfig_sitedir" fi # Check whether --with-ruby-sitedir was given. if test "${with_ruby_sitedir+set}" = set; then : withval=$with_ruby_sitedir; svn_ruby_installdir="$withval" else svn_ruby_installdir="$svn_cv_ruby_sitedir" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby scripts" >&5 $as_echo_n "checking where to install Ruby scripts... " >&6; } if ${svn_cv_ruby_sitedir_libsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_LIB_DIR" >&5 $as_echo "$SWIG_RB_SITE_LIB_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install Ruby extensions" >&5 $as_echo_n "checking where to install Ruby extensions... " >&6; } if ${svn_cv_ruby_sitedir_archsuffix+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ $SED -e "s,^$rbconfig_sitedir,,"`" fi SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_SITE_ARCH_DIR" >&5 $as_echo "$SWIG_RB_SITE_ARCH_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to use output level for Ruby bindings tests" >&5 $as_echo_n "checking how to use output level for Ruby bindings tests... " >&6; } if ${svn_cv_ruby_test_verbose+:} false; then : $as_echo_n "(cached) " >&6 else svn_cv_ruby_test_verbose="normal" fi # Check whether --with-ruby-test-verbose was given. if test "${with_ruby_test_verbose+set}" = set; then : withval=$with_ruby_test_verbose; svn_ruby_test_verbose="$withval" else svn_ruby_test_verbose="$svn_cv_ruby_test_verbose" fi SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_RB_TEST_VERBOSE" >&5 $as_echo "$SWIG_RB_TEST_VERBOSE" >&6; } SWIG_RB_ERRMSG="" fi fi # Check whether --with-ctypesgen was given. if test "${with_ctypesgen+set}" = set; then : withval=$with_ctypesgen; case "$withval" in "no") where=no CTYPESGEN=none if test $where = check; then # Extract the first word of ""ctypesgen.py"", so it can be a program name with args. set dummy "ctypesgen.py"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CTYPESGEN+:} false; then : $as_echo_n "(cached) " >&6 else case $CTYPESGEN in [\\/]* | ?:[\\/]*) ac_cv_path_CTYPESGEN="$CTYPESGEN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CTYPESGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CTYPESGEN" && ac_cv_path_CTYPESGEN="none" ;; esac fi CTYPESGEN=$ac_cv_path_CTYPESGEN if test -n "$CTYPESGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi elif test $where != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ctypesgen.py" >&5 $as_echo_n "checking for ctypesgen.py... " >&6; } if test -f "$where"; then CTYPESGEN="$where" elif test -f "$where/bin/ctypesgen.py"; then CTYPESGEN="$where/bin/ctypesgen.py" else CTYPESGEN="$where/ctypesgen.py" fi if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then as_fn_error $? "Could not find ctypesgen at $where/ctypesgen.py or at $where/bin/ctypesgen.py" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } fi fi ;; "yes") where=check CTYPESGEN=none if test $where = check; then # Extract the first word of ""ctypesgen.py"", so it can be a program name with args. set dummy "ctypesgen.py"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CTYPESGEN+:} false; then : $as_echo_n "(cached) " >&6 else case $CTYPESGEN in [\\/]* | ?:[\\/]*) ac_cv_path_CTYPESGEN="$CTYPESGEN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CTYPESGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CTYPESGEN" && ac_cv_path_CTYPESGEN="none" ;; esac fi CTYPESGEN=$ac_cv_path_CTYPESGEN if test -n "$CTYPESGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi elif test $where != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ctypesgen.py" >&5 $as_echo_n "checking for ctypesgen.py... " >&6; } if test -f "$where"; then CTYPESGEN="$where" elif test -f "$where/bin/ctypesgen.py"; then CTYPESGEN="$where/bin/ctypesgen.py" else CTYPESGEN="$where/ctypesgen.py" fi if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then as_fn_error $? "Could not find ctypesgen at $where/ctypesgen.py or at $where/bin/ctypesgen.py" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } fi fi ;; *) where=$withval CTYPESGEN=none if test $where = check; then # Extract the first word of ""ctypesgen.py"", so it can be a program name with args. set dummy "ctypesgen.py"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CTYPESGEN+:} false; then : $as_echo_n "(cached) " >&6 else case $CTYPESGEN in [\\/]* | ?:[\\/]*) ac_cv_path_CTYPESGEN="$CTYPESGEN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CTYPESGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CTYPESGEN" && ac_cv_path_CTYPESGEN="none" ;; esac fi CTYPESGEN=$ac_cv_path_CTYPESGEN if test -n "$CTYPESGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi elif test $where != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ctypesgen.py" >&5 $as_echo_n "checking for ctypesgen.py... " >&6; } if test -f "$where"; then CTYPESGEN="$where" elif test -f "$where/bin/ctypesgen.py"; then CTYPESGEN="$where/bin/ctypesgen.py" else CTYPESGEN="$where/ctypesgen.py" fi if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then as_fn_error $? "Could not find ctypesgen at $where/ctypesgen.py or at $where/bin/ctypesgen.py" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } fi fi ;; esac else where=check CTYPESGEN=none if test $where = check; then # Extract the first word of ""ctypesgen.py"", so it can be a program name with args. set dummy "ctypesgen.py"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CTYPESGEN+:} false; then : $as_echo_n "(cached) " >&6 else case $CTYPESGEN in [\\/]* | ?:[\\/]*) ac_cv_path_CTYPESGEN="$CTYPESGEN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CTYPESGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CTYPESGEN" && ac_cv_path_CTYPESGEN="none" ;; esac fi CTYPESGEN=$ac_cv_path_CTYPESGEN if test -n "$CTYPESGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi elif test $where != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ctypesgen.py" >&5 $as_echo_n "checking for ctypesgen.py... " >&6; } if test -f "$where"; then CTYPESGEN="$where" elif test -f "$where/bin/ctypesgen.py"; then CTYPESGEN="$where/bin/ctypesgen.py" else CTYPESGEN="$where/ctypesgen.py" fi if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then as_fn_error $? "Could not find ctypesgen at $where/ctypesgen.py or at $where/bin/ctypesgen.py" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CTYPESGEN" >&5 $as_echo "$CTYPESGEN" >&6; } fi fi fi # Check whether --enable-runtime-module-search was given. if test "${enable_runtime_module_search+set}" = set; then : enableval=$enable_runtime_module_search; if test "$enableval" = "yes"; then use_dso=yes if test "$svn_enable_shared" = "no"; then as_fn_error $? "--enable-runtime-module-search conflicts with --disable-shared" "$LINENO" 5 fi $as_echo "#define SVN_USE_DSO 1" >>confdefs.h case "$host" in *-*-darwin*) $as_echo "#define SVN_DSO_SUFFIX_FMT \"%d.%d.dylib\"" >>confdefs.h ;; *) $as_echo "#define SVN_DSO_SUFFIX_FMT \"%d.so.%d\"" >>confdefs.h ;; esac fi fi if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then $as_echo "#define SVN_LIBSVN_RA_LINKS_RA_LOCAL 1" >>confdefs.h svn_ra_lib_deps="\$(RA_LOCAL_DEPS)" svn_ra_lib_install_deps="install-ramod-lib" svn_ra_lib_link="\$(RA_LOCAL_LINK)" $as_echo "#define SVN_LIBSVN_RA_LINKS_RA_SVN 1" >>confdefs.h svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)" svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)" if test "$svn_lib_serf" = "yes"; then $as_echo "#define SVN_LIBSVN_RA_LINKS_RA_SERF 1" >>confdefs.h svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)" svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib" svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)" fi SVN_RA_LIB_DEPS=$svn_ra_lib_deps SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps SVN_RA_LIB_LINK=$svn_ra_lib_link $as_echo "#define SVN_LIBSVN_FS_LINKS_FS_FS 1" >>confdefs.h svn_fs_lib_deps="\$(FS_FS_DEPS)" svn_fs_lib_install_deps="install-fsmod-lib" svn_fs_lib_link="\$(FS_FS_LINK)" $as_echo "#define SVN_LIBSVN_FS_LINKS_FS_X 1" >>confdefs.h svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)" svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)" if test "$svn_lib_berkeley_db" = "yes"; then $as_echo "#define SVN_LIBSVN_FS_LINKS_FS_BASE 1" >>confdefs.h svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)" svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib" svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)" fi SVN_FS_LIB_DEPS=$svn_fs_lib_deps SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps SVN_FS_LIB_LINK=$svn_fs_lib_link fi # ==== SVN++ ================================================================= do_svnxx_build=no # Check whether --enable-svnxx was given. if test "${enable_svnxx+set}" = set; then : enableval=$enable_svnxx; if test "$enableval" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling the C++ bindings" >&5 $as_echo "$as_me: Enabling the C++ bindings" >&6;} do_svnxx_build=yes fi fi do_svnxx_test_build=no # Check whether --enable-svnxx-tests was given. if test "${enable_svnxx_tests+set}" = set; then : enableval=$enable_svnxx_tests; if test "$enableval" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling tests for the C++ bindings" >&5 $as_echo "$as_me: Enabling tests for the C++ bindings" >&6;} do_svnxx_test_build=yes fi fi # Check whether --with-boost was given. if test "${with_boost+set}" = set; then : withval=$with_boost; case $withval in #( no) : want_boost="no";_AX_BOOST_BASE_boost_path="" ;; #( yes) : want_boost="yes";_AX_BOOST_BASE_boost_path="" ;; #( *) : want_boost="yes";_AX_BOOST_BASE_boost_path="$withval" ;; esac else want_boost="yes" fi # Check whether --with-boost-libdir was given. if test "${with_boost_libdir+set}" = set; then : withval=$with_boost_libdir; if test -d "$withval"; then : _AX_BOOST_BASE_boost_lib_path="$withval" else as_fn_error $? "--with-boost-libdir expected directory name" "$LINENO" 5 fi else _AX_BOOST_BASE_boost_lib_path="" fi BOOST_LDFLAGS="" BOOST_CPPFLAGS="" if test "x$want_boost" = "xyes"; then : if test "x1.58" = "x"; then : _AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0" else _AX_BOOST_BASE_TONUMERICVERSION_req="1.58" fi _AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([0-9]*\.[0-9]*\)'` _AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([0-9]*\)'` if test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"; then : as_fn_error $? "You should at least specify libboost major version" "$LINENO" 5 fi _AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[0-9]*\.\([0-9]*\)'` if test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"; then : _AX_BOOST_BASE_TONUMERICVERSION_req_minor="0" fi _AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'` if test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"; then : _AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0" fi _AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor` WANT_BOOST_VERSION=$_AX_BOOST_BASE_TONUMERICVERSION_RET succeeded=no case ${host_cpu} in #( x86_64) : libsubdirs="lib64 libx32 lib lib64" ;; #( ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64) : libsubdirs="lib64 lib lib64" ;; #( *) : libsubdirs="lib" ;; esac case ${host_cpu} in #( i?86) : multiarch_libsubdir="lib/i386-${host_os}" ;; #( *) : multiarch_libsubdir="lib/${host_cpu}-${host_os}" ;; esac if test "x$_AX_BOOST_BASE_boost_path" != "x"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boostlib >= 1.58 ($WANT_BOOST_VERSION) includes in \"$_AX_BOOST_BASE_boost_path/include\"" >&5 $as_echo_n "checking for boostlib >= 1.58 ($WANT_BOOST_VERSION) includes in \"$_AX_BOOST_BASE_boost_path/include\"... " >&6; } if test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include" for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boostlib >= 1.58 ($WANT_BOOST_VERSION) lib path in \"$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp\"" >&5 $as_echo_n "checking for boostlib >= 1.58 ($WANT_BOOST_VERSION) lib path in \"$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp\"... " >&6; } if test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" ; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"; break; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi done else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else if test X"$cross_compiling" = Xyes; then search_libsubdirs=$multiarch_libsubdir else search_libsubdirs="$multiarch_libsubdir $libsubdirs" fi for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then for libsubdir in $search_libsubdirs ; do if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir" BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include" break; fi done fi if test "x$_AX_BOOST_BASE_boost_lib_path" != "x"; then : BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boostlib >= 1.58 ($WANT_BOOST_VERSION)" >&5 $as_echo_n "checking for boostlib >= 1.58 ($WANT_BOOST_VERSION)... " >&6; } CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { (void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($WANT_BOOST_VERSION))])); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } succeeded=yes found_system=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x$succeeded" != "xyes" ; then CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" BOOST_CPPFLAGS= if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then BOOST_LDFLAGS= fi _version=0 if test -n "$_AX_BOOST_BASE_boost_path" ; then if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "x$V_CHECK" = "x1" ; then _version=$_version_tmp fi VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE" done if test -z "$BOOST_CPPFLAGS"; then if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path" fi fi if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then for libsubdir in $libsubdirs ; do if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir" fi fi else if test "x$cross_compiling" != "xyes" ; then for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local ; do if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "x$V_CHECK" = "x1" ; then _version=$_version_tmp best_path=$_AX_BOOST_BASE_boost_path fi done fi done VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE" if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then for libsubdir in $libsubdirs ; do if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$best_path/$libsubdir" fi fi if test -n "$BOOST_ROOT" ; then for libsubdir in $libsubdirs ; do if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'` stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'` stage_version_shorten=`expr $stage_version : '\([0-9]*\.[0-9]*\)'` V_CHECK=`expr $stage_version_shorten \>\= $_version` if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: We will use a staged boost library from $BOOST_ROOT" >&5 $as_echo "$as_me: We will use a staged boost library from $BOOST_ROOT" >&6;} BOOST_CPPFLAGS="-I$BOOST_ROOT" BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir" fi fi fi fi CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { (void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($WANT_BOOST_VERSION))])); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } succeeded=yes found_system=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if test "x$succeeded" != "xyes" ; then if test "x$_version" = "x0" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: We could not detect the boost libraries (version 1.58 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in . See http://randspringer.de/boost for more documentation." >&5 $as_echo "$as_me: We could not detect the boost libraries (version 1.58 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in . See http://randspringer.de/boost for more documentation." >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: Your boost libraries seems to old (version $_version)." >&5 $as_echo "$as_me: Your boost libraries seems to old (version $_version)." >&6;} fi # execute ACTION-IF-NOT-FOUND (if present): if test "$do_svnxx_test_build" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Tests for the C++ bindings require Boost and Boost.Test" >&5 $as_echo "$as_me: WARNING: Tests for the C++ bindings require Boost and Boost.Test" >&2;} do_svnxx_test_build=no fi else $as_echo "#define HAVE_BOOST /**/" >>confdefs.h # execute ACTION-IF-FOUND (if present): if test "$do_svnxx_test_build" = "yes"; then # Check whether --with-boost-unit-test-framework was given. if test "${with_boost_unit_test_framework+set}" = set; then : withval=$with_boost_unit_test_framework; if test "$withval" = "no"; then want_boost="no" elif test "$withval" = "yes"; then want_boost="yes" ax_boost_user_unit_test_framework_lib="" else want_boost="yes" ax_boost_user_unit_test_framework_lib="$withval" fi else want_boost="yes" fi if test "x$want_boost" = "xyes"; then CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Unit_Test_Framework library is available" >&5 $as_echo_n "checking whether the Boost::Unit_Test_Framework library is available... " >&6; } if ${ax_cv_boost_unit_test_framework+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { using boost::unit_test::test_suite; test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); if (test == NULL) { return 1; } else { return 0; } ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_boost_unit_test_framework=yes else ax_cv_boost_unit_test_framework=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_unit_test_framework" >&5 $as_echo "$ax_cv_boost_unit_test_framework" >&6; } if test "x$ax_cv_boost_unit_test_framework" = "xyes"; then $as_echo "#define HAVE_BOOST_UNIT_TEST_FRAMEWORK /**/" >>confdefs.h BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'` if test "x$ax_boost_user_unit_test_framework_lib" = "x"; then saved_ldflags="${LDFLAGS}" for monitor_library in `ls $BOOSTLIBDIR/libboost_unit_test_framework*.so* $BOOSTLIBDIR/libboost_unit_test_framework*.dylib* $BOOSTLIBDIR/libboost_unit_test_framework*.a* 2>/dev/null` ; do if test -r $monitor_library ; then libextension=`echo $monitor_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a.*$;\1;'` ax_lib=${libextension} link_unit_test_framework="yes" else link_unit_test_framework="no" fi if test "x$link_unit_test_framework" = "xyes"; then BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib" break fi done if test "x$link_unit_test_framework" != "xyes"; then for libextension in `ls $BOOSTLIBDIR/boost_unit_test_framework*.dll* $BOOSTLIBDIR/boost_unit_test_framework*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_unit_test_framework.*\)\.dll.*$;\1;' -e 's;^\(boost_unit_test_framework.*\)\.a.*$;\1;'` ; do ax_lib=${libextension} as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 $as_echo_n "checking for exit in -l$ax_lib... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char exit (); int main () { return exit (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"; link_unit_test_framework="yes"; break else link_unit_test_framework="no" fi done fi else link_unit_test_framework="no" saved_ldflags="${LDFLAGS}" for ax_lib in boost_unit_test_framework-$ax_boost_user_unit_test_framework_lib $ax_boost_user_unit_test_framework_lib ; do if test "x$link_unit_test_framework" = "xyes"; then break; fi for unittest_library in `ls $BOOSTLIBDIR/lib${ax_lib}.so* $BOOSTLIBDIR/lib${ax_lib}.a* 2>/dev/null` ; do if test -r $unittest_library ; then libextension=`echo $unittest_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a*$;\1;'` ax_lib=${libextension} link_unit_test_framework="yes" else link_unit_test_framework="no" fi if test "x$link_unit_test_framework" = "xyes"; then BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib" break fi done done fi if test "x$ax_lib" = "x"; then as_fn_error $? "Could not find a version of the library!" "$LINENO" 5 fi if test "x$link_unit_test_framework" != "xyes"; then as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5 fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi if test "$do_svnxx_test_build" = "yes"; then if test "$want_boost" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Tests for the C++ bindings require Boost and Boost.Test" >&5 $as_echo "$as_me: WARNING: Tests for the C++ bindings require Boost and Boost.Test" >&2;} do_svnxx_test_build=no SVN_BUILD_SVNXX_TESTS=false else if test "$do_svnxx_build" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Enabling the C++ bindings because their tests are enabled" >&5 $as_echo "$as_me: WARNING: Enabling the C++ bindings because their tests are enabled" >&2;} do_svnxx_build=yes fi SVN_BUILD_SVNXX_TESTS=true fi else SVN_BUILD_SVNXX_TESTS=false fi if test "$do_svnxx_build" = "yes"; then SVN_BUILD_SVNXX=true else SVN_BUILD_SVNXX=false fi # ==== JavaHL ================================================================ do_javahl_build=no # Check whether --enable-javahl was given. if test "${enable_javahl+set}" = set; then : enableval=$enable_javahl; if test "$enableval" = "yes" ; then do_javahl_build="yes" fi fi JAVAHL_OBJDIR="" INSTALL_EXTRA_JAVAHL_LIB="" FIX_JAVAHL_LIB="" JAVAHL_TESTS_TARGET="" JAVAHL_COMPAT_TESTS_TARGET="" LT_CXX_LIBADD="" if test "$do_javahl_build" = "yes"; then if test "$JDK_SUITABLE" = "no"; then as_fn_error $? "Cannot compile JavaHL without a suitable JDK. Please specify a suitable JDK using the --with-jdk option." "$LINENO" 5 fi JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs' os_arch=`uname` if test "$os_arch" = "Darwin"; then INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib' FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib" fi # This segment (and the rest of r10800) is very likely unnecessary # with libtool 1.5, which automatically adds libstdc++ as a # dependency to the C++ libraries it builds. So at some future time # when autogen.sh requires libtool 1.5 or higher, we can get rid of # it. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for additional flags to link C++ libraries" >&5 $as_echo_n "checking for additional flags to link C++ libraries... " >&6; } if test "x$ac_compiler_gnu" = "xyes"; then case "$host" in *freebsd10*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; *) LT_CXX_LIBADD="-lstdc++" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LT_CXX_LIBADD" >&5 $as_echo "$LT_CXX_LIBADD" >&6; } ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } fi fi # Check whether --with-junit was given. if test "${with_junit+set}" = set; then : withval=$with_junit; if test "$withval" != "no"; then if test -n "$JAVA_CLASSPATH"; then JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH" else JAVA_CLASSPATH="$withval" fi JAVAHL_TESTS_TARGET="javahl-tests" JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests" fi fi # ==== Miscellaneous bits ==================================================== for ac_header in stdbool.h stdint.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler ### I think we get this flag from APR, so the fix probably belongs there if test "$CC" = "clang"; then CPPFLAGS=`echo "$CPPFLAGS" | $SED -e 's/-no-cpp-precomp //'` fi cat >>confdefs.h <<_ACEOF #define SVN_PATH_LOCAL_SEPARATOR '/' _ACEOF cat >>confdefs.h <<_ACEOF #define SVN_NULL_DEVICE_NAME "/dev/null" _ACEOF DEFAULT_FS_TYPE="fsfs" cat >>confdefs.h <<_ACEOF #define DEFAULT_FS_TYPE "$DEFAULT_FS_TYPE" _ACEOF DEFAULT_HTTP_LIBRARY="serf" cat >>confdefs.h <<_ACEOF #define DEFAULT_HTTP_LIBRARY "$DEFAULT_HTTP_LIBRARY" _ACEOF # BSD/OS (BSDi) needs to use a different include syntax in Makefile INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk" case "$host" in *bsdi*) # Check whether they've installed GNU make if ! make --version > /dev/null 2>&1; then # BSDi make INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\"" fi ;; esac # ==== Detection complete - output and run config.status ===================== ac_config_headers="$ac_config_headers subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in" ac_config_commands="$ac_config_commands svn_private_config.h.tmp" ac_config_files="$ac_config_files Makefile" # Create pkg-config .pc files from .pc.in files for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do pc_file=${pc_in_file#${abs_srcdir}/} pc_file=${pc_file%.in} ac_config_files="$ac_config_files ${pc_file}" done SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES tools/backup/hot-backup.py" ac_config_files="$ac_config_files tools/backup/hot-backup.py" SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES tools/hook-scripts/commit-access-control.pl" ac_config_files="$ac_config_files tools/hook-scripts/commit-access-control.pl" SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES subversion/bindings/swig/perl/native/Makefile.PL" ac_config_files="$ac_config_files subversion/bindings/swig/perl/native/Makefile.PL" if test -e packages/solaris/pkginfo.in; then SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES packages/solaris/pkginfo" ac_config_files="$ac_config_files packages/solaris/pkginfo" fi # Ensure that SWIG is checked after reconfiguration. rm -f .swig_checked .swig_pl_checked .swig_py_checked .swig_rb_checked cat >>confdefs.h <<_ACEOF #define SVN_BUILD_HOST "${host}" _ACEOF cat >>confdefs.h <<_ACEOF #define SVN_BUILD_TARGET "${target}" _ACEOF cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by subversion $as_me 1.14.0, which was +This file was extended by subversion $as_me 1.14.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -subversion config.status 1.14.0 +subversion config.status 1.14.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' SED="$SED" SVN_DB_HEADER="$SVN_DB_HEADER" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "subversion/svn_private_config.h.tmp") CONFIG_HEADERS="$CONFIG_HEADERS subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in" ;; "svn_private_config.h.tmp") CONFIG_COMMANDS="$CONFIG_COMMANDS svn_private_config.h.tmp" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "${pc_file}") CONFIG_FILES="$CONFIG_FILES ${pc_file}" ;; "tools/backup/hot-backup.py") CONFIG_FILES="$CONFIG_FILES tools/backup/hot-backup.py" ;; "tools/hook-scripts/commit-access-control.pl") CONFIG_FILES="$CONFIG_FILES tools/hook-scripts/commit-access-control.pl" ;; "subversion/bindings/swig/perl/native/Makefile.PL") CONFIG_FILES="$CONFIG_FILES subversion/bindings/swig/perl/native/Makefile.PL" ;; "packages/solaris/pkginfo") CONFIG_FILES="$CONFIG_FILES packages/solaris/pkginfo" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "svn_private_config.h.tmp":C) svn_cf=subversion/svn_private_config.h; $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf rm -f $svn_cf.tmp.new $svn_cf.tmp ;; "tools/backup/hot-backup.py":F) chmod +x tools/backup/hot-backup.py ;; "tools/hook-scripts/commit-access-control.pl":F) chmod +x tools/hook-scripts/commit-access-control.pl ;; "subversion/bindings/swig/perl/native/Makefile.PL":F) chmod +x subversion/bindings/swig/perl/native/Makefile.PL ;; "packages/solaris/pkginfo":F) chmod +x packages/solaris/pkginfo ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # ==== Print final messages to user ========================================== if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: We have configured without BDB filesystem support Berkeley DB 6 was found, but not used. Please re-run configure (see ./config.nice) with the '--enable-bdb6' flag to use it, or explicitly specify '--disable-bdb6' or '--without-berkeley-db' to silence this warning. Please note that some versions of Berkeley DB 6+ are under the GNU Affero General Public License, version 3: https://oss.oracle.com/pipermail/bdb/2013-June/000056.html The AGPL-3.0 licence may impose special requirements for making available source code of server-side software. The text of the licence is: https://www.gnu.org/licenses/agpl-3.0.html http://opensource.org/licenses/AGPL-3.0 The Berkeley DB backend to Subversion is deprecated; see http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated The Subversion developers have not tested Subversion with Berkeley DB 6 for technical problems or bugs. " >&5 $as_echo "$as_me: WARNING: We have configured without BDB filesystem support Berkeley DB 6 was found, but not used. Please re-run configure (see ./config.nice) with the '--enable-bdb6' flag to use it, or explicitly specify '--disable-bdb6' or '--without-berkeley-db' to silence this warning. Please note that some versions of Berkeley DB 6+ are under the GNU Affero General Public License, version 3: https://oss.oracle.com/pipermail/bdb/2013-June/000056.html The AGPL-3.0 licence may impose special requirements for making available source code of server-side software. The text of the licence is: https://www.gnu.org/licenses/agpl-3.0.html http://opensource.org/licenses/AGPL-3.0 The Berkeley DB backend to Subversion is deprecated; see http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated The Subversion developers have not tested Subversion with Berkeley DB 6 for technical problems or bugs. " >&2;} fi diff --git a/contrib/subversion/configure.ac b/contrib/subversion/configure.ac index 07103e550a81..42a9f14e8fb5 100644 --- a/contrib/subversion/configure.ac +++ b/contrib/subversion/configure.ac @@ -1,1686 +1,1686 @@ dnl Licensed to the Apache Software Foundation (ASF) under one dnl or more contributor license agreements. See the NOTICE file dnl distributed with this work for additional information dnl regarding copyright ownership. The ASF licenses this file dnl to you under the Apache License, Version 2.0 (the dnl "License"); you may not use this file except in compliance dnl with the License. You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl dnl Unless required by applicable law or agreed to in writing, dnl software distributed under the License is distributed on an dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY dnl KIND, either express or implied. See the License for the dnl specific language governing permissions and limitations dnl under the License. dnl configure.ac: Autoconfiscation for Subversion dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) dnl Get the version of Subversion, using m4's esyscmd() command to do this dnl at m4-time, since AC_INIT() requires it then. AC_INIT([subversion], [esyscmd($PYTHON build/getversion.py SVN subversion/include/svn_version.h)], [http://subversion.apache.org/]) AC_CONFIG_SRCDIR(subversion/include/svn_types.h) AC_CONFIG_AUX_DIR([build]) AC_MSG_NOTICE([Configuring Subversion ]AC_PACKAGE_VERSION) AC_SUBST([abs_srcdir], ["`cd $srcdir && pwd`"]) AC_SUBST([abs_builddir], ["`pwd`"]) if test "$abs_srcdir" = "$abs_builddir"; then canonicalized_srcdir="" else canonicalized_srcdir="$srcdir/" fi AC_SUBST([canonicalized_srcdir]) SWIG_LDFLAGS="$LDFLAGS" AC_SUBST([SWIG_LDFLAGS]) # Generate config.nice early (before the arguments are munged) SVN_CONFIG_NICE(config.nice) # ==== Check for programs ==================================================== # Look for a C compiler (before anything can set CFLAGS) CUSERFLAGS="$CFLAGS" AC_PROG_CC SVN_CC_MODE_SETUP # Look for a C++ compiler (before anything can set CXXFLAGS) CXXUSERFLAGS="$CXXFLAGS" AC_PROG_CXX SVN_CXX_MODE_SETUP # Look for a C pre-processor AC_PROG_CPP # Look for a good sed # AC_PROG_SED was introduced in Autoconf 2.59b m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"]) # Grab target_cpu, so we can use it in the Solaris pkginfo file AC_CANONICAL_TARGET # Look for an extended grep AC_PROG_EGREP AC_PROG_LN_S AC_PROG_INSTALL # If $INSTALL is relative path to our fallback install-sh, then convert # to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool # may try to use it from a changed working directory. if test "$INSTALL" = "build/install-sh -c"; then INSTALL="$abs_srcdir/$INSTALL" fi if test -z "$MKDIR"; then MKDIR="$INSTALL -d" fi AC_SUBST([MKDIR]) # ==== Libraries, for which we may have source to build ====================== dnl verify apr version and set apr flags dnl These regular expressions should not contain "\(" and "\)". -APR_VER_REGEXES=["1\.[5-9]\. 2\."] +APR_VER_REGEXES=["1\.[4-9]\. 2\."] SVN_LIB_APR($APR_VER_REGEXES) if test `expr $apr_version : 2` -ne 0; then dnl Bump the library so-version to 2 if using APR-2 dnl (Debian uses so-version 1 for APR-1-with-largefile) svn_lib_ver=2 dnl APR-2 provides APRUTIL apu_config=$apr_config AC_SUBST(SVN_APRUTIL_INCLUDES) AC_SUBST(SVN_APRUTIL_CONFIG, ["$apu_config"]) AC_SUBST(SVN_APRUTIL_LIBS) SVN_APR_MAJOR_VERSION=2 else svn_lib_ver=0 APU_VER_REGEXES=["1\.[3-9]\."] SVN_LIB_APRUTIL($APU_VER_REGEXES) SVN_APR_MAJOR_VERSION=1 fi AC_SUBST(SVN_APR_MAJOR_VERSION) SVN_LT_SOVERSION="-version-info $svn_lib_ver" AC_SUBST(SVN_LT_SOVERSION) AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver, [Subversion library major verson]) dnl Search for pkg-config AC_PATH_PROG(PKG_CONFIG, pkg-config) dnl Search for serf SVN_LIB_SERF(1,3,4) if test "$svn_lib_serf" = "yes"; then AC_DEFINE([SVN_HAVE_SERF], 1, [Defined if support for Serf is enabled]) fi dnl Search for apr_memcache (only affects fs_fs) SVN_LIB_APR_MEMCACHE if test "$svn_lib_apr_memcache" = "yes"; then AC_DEFINE(SVN_HAVE_MEMCACHE, 1, [Defined if apr_memcache (standalone or in apr-util) is present]) fi AC_ARG_ENABLE(apache-whitelist, AS_HELP_STRING([--enable-apache-whitelist=VER], [Whitelist a particular Apache version number, typically used to enable the use of a old version patched by a distribution.]), [apache_whitelist_ver=$enableval], [apache_whitelist_ver=no]) HTTPD_WHITELIST="$apache_whitelist_ver" AC_SUBST(HTTPD_WHITELIST) dnl Find Apache with a recent-enough magic module number SVN_FIND_APACHE(20051115, $apache_whitelist_ver) dnl Search for SQLite. If you change SQLITE_URL from a .zip to dnl something else also update build/ac-macros/sqlite.m4 to reflect dnl the correct command to unpack the downloaded file. SQLITE_MINIMUM_VER="3.8.2" SQLITE_RECOMMENDED_VER="3.8.11.1" dnl Used to construct the SQLite download URL. SQLITE_RECOMMENDED_VER_REL_YEAR="2015" SQLITE_URL="https://www.sqlite.org/$SQLITE_RECOMMENDED_VER_REL_YEAR/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip" SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER}, ${SQLITE_URL}) AC_ARG_ENABLE(sqlite-compatibility-version, AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z], [Allow binary to run against SQLite as old as ARG]), [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no]) if test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver], [sqlite_compat_ver_num]) CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS" CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS" fi SVN_CHECK_FOR_ATOMIC_BUILTINS if test "$svn_cv_atomic_builtins" = "yes"; then AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins]) fi dnl Set up a number of directories --------------------- dnl Create SVN_BINDIR for proper substitution if test "${bindir}" = '${exec_prefix}/bin'; then if test "${exec_prefix}" = "NONE"; then if test "${prefix}" = "NONE"; then SVN_BINDIR="${ac_default_prefix}/bin" else SVN_BINDIR="${prefix}/bin" fi else SVN_BINDIR="${exec_prefix}/bin" fi else SVN_BINDIR="${bindir}" fi dnl fully evaluate this value. when we substitute it into our tool scripts, dnl they will not have things such as ${bindir} available SVN_BINDIR="`eval echo ${SVN_BINDIR}`" AC_SUBST(SVN_BINDIR) dnl provide ${bindir} in svn_private_config.h for use in compiled code AC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}", [Defined to be the path to the installed binaries]) dnl This purposely does *not* allow for multiple parallel installs. dnl However, it is compatible with most gettext usages. localedir='${datadir}/locale' AC_SUBST(localedir) dnl For SVN_LOCALE_DIR, we have to expand it to something. See SVN_BINDIR. if test "${prefix}" = "NONE" \ && ( test "${datadir}" = '${prefix}/share' \ || ( test "${datadir}" = '${datarootdir}' \ && test "${datarootdir}" = '${prefix}/share' ) ); then exp_localedir='${ac_default_prefix}/share/locale' else exp_localedir=$localedir fi SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}") AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}", [Defined to be the path to the installed locale dirs]) dnl Check for libtool -- we'll definitely need it for all our shared libs! AC_MSG_NOTICE([configuring libtool now]) ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL]) AC_ARG_ENABLE(experimental-libtool, AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]), [experimental_libtool=$enableval],[experimental_libtool=no]) if test "$experimental_libtool" = "yes"; then echo "using APR's libtool" sh_libtool="`$apr_config --apr-libtool`" LIBTOOL="$sh_libtool" SVN_LIBTOOL="$sh_libtool" else sh_libtool="$abs_builddir/libtool" SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\"" fi AC_SUBST(SVN_LIBTOOL) dnl Determine the libtool version changequote(, )dnl lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'` lt_major_version=`echo $lt_version | cut -d'.' -f 1` changequote([, ])dnl dnl set the default parameters svn_enable_static=yes svn_enable_shared=yes dnl check for --enable-static option AC_ARG_ENABLE(static, AS_HELP_STRING([--enable-static], [Build static libraries]), [svn_enable_static="$enableval"], [svn_enable_static="yes"]) dnl check for --enable-shared option AC_ARG_ENABLE(shared, AS_HELP_STRING([--enable-shared], [Build shared libraries]), [svn_enable_shared="$enableval"], [svn_enable_shared="yes"]) if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then AC_MSG_NOTICE([building both shared and static libraries]) elif test "$svn_enable_static" = "yes" ; then AC_MSG_NOTICE([building static libraries only]) LT_CFLAGS="-static $LT_CFLAGS" LT_LDFLAGS="-static $LT_LDFLAGS" elif test "$svn_enable_shared" = "yes" ; then AC_MSG_NOTICE([building shared libraries only]) if test "$lt_major_version" = "1" ; then LT_CFLAGS="-prefer-pic $LT_CFLAGS" elif test "$lt_major_version" = "2" ; then LT_CFLAGS="-shared $LT_CFLAGS" fi LT_LDFLAGS="-shared $LT_LDFLAGS" else AC_MSG_ERROR([cannot disable both shared and static libraries]) fi dnl Check for --enable-all-static option AC_ARG_ENABLE(all-static, AS_HELP_STRING([--enable-all-static], [Build completely static (standalone) binaries.]), [ if test "$enableval" = "yes" ; then LT_LDFLAGS="-all-static $LT_LDFLAGS" elif test "$enableval" != "no" ; then AC_MSG_ERROR([--enable-all-static doesn't accept argument]) fi ]) AC_SUBST(LT_CFLAGS) AC_SUBST(LT_LDFLAGS) AC_ARG_ENABLE(local-library-preloading, AS_HELP_STRING([--enable-local-library-preloading], [Enable preloading of locally built libraries in locally built executables. This may be necessary for testing prior to installation on some platforms. It does not work on some platforms (Darwin, OpenBSD, ...).]), [ if test "$enableval" != "no"; then if test "$svn_enable_shared" = "yes"; then TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts" else AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared]) fi else TRANSFORM_LIBTOOL_SCRIPTS="" fi ], [ TRANSFORM_LIBTOOL_SCRIPTS="" ]) AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS) dnl Check if -no-undefined is needed for the platform. dnl It should always work but with libtool 1.4.3 on OS X it breaks the build. dnl So we only turn it on for platforms where we know we really need it. AC_MSG_CHECKING([whether libtool needs -no-undefined]) case $host in *-*-cygwin*) AC_MSG_RESULT([yes]) LT_NO_UNDEFINED="-no-undefined" ;; *) AC_MSG_RESULT([no]) LT_NO_UNDEFINED="" ;; esac AC_SUBST(LT_NO_UNDEFINED) dnl Check for trang. trang=yes AC_ARG_WITH(trang, AS_HELP_STRING([--with-trang=PATH], [Specify the command to run the trang schema converter]), [ trang="$withval" ]) if test "$trang" = "yes"; then AC_PATH_PROG(TRANG, trang, none) else TRANG="$trang" AC_SUBST(TRANG) fi dnl Check for doxygen doxygen=yes AC_ARG_WITH(doxygen, AC_HELP_STRING([--with-doxygen=PATH], [Specify the command to run doxygen]), [ doxygen="$withval" ]) if test "$doxygen" = "yes"; then AC_PATH_PROG(DOXYGEN, doxygen, none) else DOXYGEN="$doxygen" AC_SUBST(DOXYGEN) fi dnl Check for libraries -------------------- dnl Expat ------------------- AC_ARG_WITH(expat, AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS], [Specify location of Expat]), [svn_lib_expat="$withval"], [svn_lib_expat="::expat"]) # APR-util accepts "builtin" as an argument to this option so if the user # passed "builtin" pretend the user didn't specify the --with-expat option # at all. Expat will (hopefully) be found in apr-util. test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat" AC_MSG_CHECKING([for Expat]) if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then SVN_XML_INCLUDES="" for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i" done SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }" for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do LDFLAGS="$LDFLAGS -L$l" done for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do SVN_XML_LIBS="$SVN_XML_LIBS -l$l" done SVN_XML_LIBS="${SVN_XML_LIBS## }" old_CPPFLAGS="$CPPFLAGS" old_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES" LIBS="$LIBS $SVN_XML_LIBS" AC_LINK_IFELSE([AC_LANG_SOURCE([[ #include int main() {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no") LIBS="$old_LIBS" if test "$svn_lib_expat" = "yes"; then AC_MSG_RESULT([yes]) else SVN_XML_INCLUDES="" SVN_XML_LIBS="" CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES" if test "$enable_all_static" != "yes"; then SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`" fi AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #include int main() {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no") if test "$svn_lib_expat" = "yes"; then AC_MSG_RESULT([yes]) AC_MSG_WARN([Expat found amongst libraries used by APR-Util, but Subversion libraries might be needlessly linked against additional unused libraries. It can be avoided by specifying exact location of Expat in argument of --with-expat option.]) else AC_MSG_RESULT([no]) AC_MSG_ERROR([Expat not found]) fi fi CPPFLAGS="$old_CPPFLAGS" else AC_MSG_RESULT([no]) if test "$svn_lib_expat" = "yes"; then AC_MSG_ERROR([--with-expat option requires argument]) elif test "$svn_lib_expat" = "no"; then AC_MSG_ERROR([Expat is required]) else AC_MSG_ERROR([Invalid syntax of argument of --with-expat option]) fi fi AC_SUBST(SVN_XML_INCLUDES) AC_SUBST(SVN_XML_LIBS) dnl Berkeley DB ------------------- # Berkeley DB on SCO OpenServer needs -lsocket AC_CHECK_LIB(socket, socket) # Build the BDB filesystem library only if we have an appropriate # version of Berkeley DB. case "$host" in powerpc-apple-darwin*) # Berkeley DB 4.0 does not work on OS X. SVN_FS_WANT_DB_MAJOR=4 SVN_FS_WANT_DB_MINOR=1 SVN_FS_WANT_DB_PATCH=25 ;; *) SVN_FS_WANT_DB_MAJOR=4 SVN_FS_WANT_DB_MINOR=0 SVN_FS_WANT_DB_PATCH=14 ;; esac db_alt_version="5.x" # Look for libdb4.so first: SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_PATCH, [db4 db]) AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR, [The desired major version for the Berkeley DB]) AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR, [The desired minor version for the Berkeley DB]) AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH, [The desired patch version for the Berkeley DB]) AC_SUBST(SVN_DB_INCLUDES) AC_SUBST(SVN_DB_LIBS) SVN_LIB_SASL if test "$svn_lib_sasl" = "yes"; then AC_DEFINE(SVN_HAVE_SASL, 1, [Defined if Cyrus SASL v2 is present on the system]) fi dnl Mac OS specific features ------------------- SVN_LIB_MACHO_ITERATE SVN_LIB_MACOS_PLIST SVN_LIB_MACOS_KEYCHAIN dnl APR_HAS_DSO ------------------- AC_MSG_CHECKING([whether APR has support for DSOs]) old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ #include #if !APR_HAS_DSO #error #endif]])], APR_HAS_DSO="yes" AC_MSG_RESULT([yes]), APR_HAS_DSO="no" AC_MSG_RESULT([no])) CPPFLAGS="$old_CPPFLAGS" dnl D-Bus (required for support for KWallet) ------------------- if test -n "$PKG_CONFIG"; then AC_MSG_CHECKING([for D-Bus .pc file]) if $PKG_CONFIG --exists dbus-1; then AC_MSG_RESULT([yes]) old_CPPFLAGS="$CPPFLAGS" old_LIBS="$LIBS" DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`" AC_MSG_CHECKING([D-Bus version]) DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`" AC_MSG_RESULT([$DBUS_VERSION]) # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE" fi DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`" CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS" LIBS="$LIBS $DBUS_LIBS" AC_MSG_CHECKING([for D-Bus]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ #include int main() {dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no") if test "$HAVE_DBUS" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi CPPFLAGS="$old_CPPFLAGS" LIBS="$old_LIBS" else AC_MSG_RESULT([no]) fi fi dnl GPG Agent ------------------- AC_ARG_WITH(gpg_agent, AS_HELP_STRING([--without-gpg-agent], [Disable support for GPG-Agent]), [], [with_gpg_agent=yes]) AC_MSG_CHECKING([whether to support GPG-Agent]) if test "$with_gpg_agent" = "yes"; then AC_MSG_RESULT([yes]) AC_DEFINE([SVN_HAVE_GPG_AGENT], [1], [Is GPG Agent support enabled?]) else AC_MSG_RESULT([no]) fi AC_SUBST(SVN_HAVE_GPG_AGENT) dnl GNOME Keyring ------------------- AC_ARG_WITH(old_gnome_keyring, AS_HELP_STRING([--with-old-gnome-keyring], [Enable old GNOME Keyring for auth credentials (prefer --with-gnome-keyring)]), [with_old_gnome_keyring="$withval"], [with_old_gnome_keyring=no]) found_old_gnome_keyring=no AC_MSG_CHECKING([whether to look for old GNOME Keyring]) if test "$with_old_gnome_keyring" != "no"; then AC_MSG_RESULT([yes]) case "$host" in *-*-darwin*) if test "$with_old_gnome_keyring" = "yes"; then AC_MSG_ERROR([--with-old-gnome-keyring is not supported on Mac OS X.]) else with_old_gnome_keyring=no fi ;; *) if test "$svn_enable_shared" = "yes"; then if test "$APR_HAS_DSO" = "yes"; then if test -n "$PKG_CONFIG"; then AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files]) if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then AC_MSG_RESULT([yes]) old_CPPFLAGS="$CPPFLAGS" SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`" CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES" AC_CHECK_HEADER(gnome-keyring.h, found_old_gnome_keyring=yes, found_old_gnome_keyring=no) AC_MSG_CHECKING([for GNOME Keyring]) if test "$found_old_gnome_keyring" = "yes"; then AC_MSG_RESULT([yes]) AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1], [Is GNOME Keyring support enabled?]) CPPFLAGS="$old_CPPFLAGS" SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`" SVN_GNOME_KEYRING_PCLIBS="glib-2.0, gnome-keyring-1" else AC_MSG_RESULT([no]) if test "$with_old_gnome_keyring" = "yes"; then AC_MSG_ERROR([cannot find GNOME Keyring]) fi fi else AC_MSG_RESULT([no]) if test "$with_old_gnome_keyring" = "yes"; then AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.]) else with_old_gnome_keyring=no fi fi else if test "$with_old_gnome_keyring" = "yes"; then AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.]) else with_old_gnome_keyring=no fi fi else if test "$with_old_gnome_keyring" = "yes"; then AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.]) else with_old_gnome_keyring=no fi fi else if test "$with_old_gnome_keyring" = "yes"; then AC_MSG_ERROR([--with-old-gnome-keyring conflicts with --disable-shared]) else with_old_gnome_keyring=no fi fi ;; esac else AC_MSG_RESULT([no]) fi AC_SUBST(SVN_GNOME_KEYRING_INCLUDES) AC_SUBST(SVN_GNOME_KEYRING_LIBS) dnl LibSecret ------------------- SVN_LIB_SECRET dnl Ev2 experimental features ---------------------- dnl Note: The Ev2 implementations will be built unconditionally, but by dnl providing this flag, users can choose to use the currently-shimmed Ev2 dnl editor implementations for various operations. This will probably dnl negatively impact performance, but is useful for testing. AC_ARG_ENABLE(ev2-impl, AS_HELP_STRING([--enable-ev2-impl], [Use Ev2 implementations, where available [EXPERIMENTAL]]), [enable_ev2_impl=$enableval],[enable_ev2_impl=no]) if test "$enable_ev2_impl" = "yes"; then AC_DEFINE(ENABLE_EV2_IMPL, 1, [Define to 1 if Ev2 implementations should be used.]) fi dnl I18n ------------------- AC_ARG_ENABLE(nls, AS_HELP_STRING([--disable-nls],[Disable gettext functionality]), [enable_nls=$enableval],[enable_nls=yes]) USE_NLS="no" SVN_INTL_LIBS="" if test "$enable_nls" = "yes"; then dnl First, check to see if there is a working msgfmt. AC_PATH_PROG(MSGFMT, msgfmt, none) AC_PATH_PROG(MSGMERGE, msgmerge, none) AC_PATH_PROG(XGETTEXT, xgettext, none) if test "$MSGFMT" != "none"; then AC_SEARCH_LIBS(bindtextdomain, [intl], [ # in case libintl needs to be linked explicitly, # $ac_cv_search_bindtextdomain contains -l linker flags if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null then SVN_INTL_LIBS="$ac_cv_search_bindtextdomain" fi ], [ enable_nls="no" ]) if test "$enable_nls" = "no"; then # Destroy the cached result so we can test again unset ac_cv_search_bindtextdomain # On some systems, libintl needs libiconv to link properly, # so try again with -liconv. AC_SEARCH_LIBS(bindtextdomain, [intl], [ enable_nls="yes" if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null then SVN_INTL_LIBS="$ac_cv_search_bindtextdomain" fi # This is here so that -liconv ends up in LIBS # if it worked with -liconv. AC_CHECK_LIB(iconv, libiconv_open) ], [ AC_MSG_WARN([bindtextdomain() not found. Disabling NLS.]) enable_nls="no" ], -liconv) fi if test "$enable_nls" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) USE_NLS="yes" fi fi fi AC_SUBST(SVN_INTL_LIBS) AH_BOTTOM([ /* Indicate to translators that string X should be translated. Do not look up the translation at run time; just expand to X. This macro is suitable for use where a constant string is required at compile time. */ #define N_(x) x /* Indicate to translators that we have decided the string X should not be translated. Expand to X. */ #define U_(x) x #ifdef ENABLE_NLS #include #include /* Indicate to translators that string X should be translated. At run time, look up and return the translation of X. */ #define _(x) dgettext(PACKAGE_NAME, x) /* Indicate to translators that strings X1 and X2 are singular and plural forms of the same message, and should be translated. At run time, return an appropriate translation depending on the number N. */ #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n) #else #define _(x) (x) #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2) #define gettext(x) (x) #define dgettext(domain, x) (x) #endif /* compiler hints */ #if defined(__GNUC__) && (__GNUC__ >= 3) # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0)) # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) #else # define SVN__PREDICT_FALSE(x) (x) # define SVN__PREDICT_TRUE(x) (x) #endif #if defined(SVN_DEBUG) # define SVN__FORCE_INLINE # define SVN__PREVENT_INLINE #elif defined(__GNUC__) # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline)) # define SVN__PREVENT_INLINE __attribute__ ((noinline)) #else # define SVN__FORCE_INLINE APR_INLINE # define SVN__PREVENT_INLINE #endif /* Macro used to specify that a variable is intentionally left unused. Supresses compiler warnings about the variable being unused. */ #define SVN_UNUSED(v) ( (void)(v) ) ]) dnl Used to simulate makefile conditionals. GETTEXT_CODESET=\# NO_GETTEXT_CODESET=\# if test $USE_NLS = "yes"; then AC_CHECK_FUNCS(bind_textdomain_codeset, [ GETTEXT_CODESET="" ], [ NO_GETTEXT_CODESET="" ]) fi AC_SUBST(GETTEXT_CODESET) AC_SUBST(NO_GETTEXT_CODESET) # Check if we are using GNU gettext. GNU_GETTEXT=no MSGFMTFLAGS='' if test $USE_NLS = "yes"; then AC_MSG_CHECKING(if we are using GNU gettext) if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then GNU_GETTEXT=yes MSGFMTFLAGS='-c' fi AC_MSG_RESULT($GNU_GETTEXT) fi AC_SUBST(MSGFMTFLAGS) dnl libmagic ------------------- libmagic_found=no AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX], [libmagic filetype detection library]), [ if test "$withval" = "yes" ; then AC_CHECK_HEADER(magic.h, [ AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"]) ]) libmagic_prefix="the default locations" elif test "$withval" != "no"; then libmagic_prefix=$withval save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include" AC_CHECK_HEADERS(magic.h,[ save_ldflags="$LDFLAGS" LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS" AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"]) LDFLAGS="$save_ldflags" ]) CPPFLAGS="$save_cppflags" fi if test "$withval" != "no" && test "$libmagic_found" = "no"; then AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]]) fi ], [ AC_CHECK_HEADER(magic.h, [ AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"]) ]) ]) if test "$libmagic_found" != "no"; then AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled]) SVN_MAGIC_LIBS="-lmagic" fi if test "$libmagic_found" = "yes"; then SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include" LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`" fi AC_SUBST(SVN_MAGIC_INCLUDES) AC_SUBST(SVN_MAGIC_LIBS) dnl KWallet ------------------- SVN_LIB_KWALLET if test "$svn_lib_kwallet" = "yes"; then AC_DEFINE([SVN_HAVE_KWALLET], 1, [Defined if KWallet support is enabled]) fi dnl plaintext passwords ------------------- AC_ARG_ENABLE(plaintext-password-storage, AS_HELP_STRING([--enable-plaintext-password-storage], [Enable on-disk caching of plaintext passwords and passphrases. (Enabling this functionality will not force Subversion to store passwords in plaintext, but does permit users to explicitly allow that behavior via runtime configuration.)]), [plaintext_passwordd_storage="$enableval"], [plaintext_passwordd_storage="no"]) if test "$plaintext_passwordd_storage" = "yes"; then AC_MSG_WARN([Enabling plaintext password/passphrase storage]) else AC_MSG_NOTICE([Disabling plaintext password/passphrase storage]) AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1, [Defined if plaintext password/passphrase storage is disabled]) fi dnl Build and install rules ------------------- INSTALL_STATIC_RULES="install-bin install-docs" INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static" INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE" BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools" if test "$svn_lib_berkeley_db" = "yes"; then BUILD_RULES="$BUILD_RULES bdb-lib bdb-test" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib" BDB_TEST_DEPS="\$(BDB_TEST_DEPS)" BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)" fi if test "$svn_lib_serf" = "yes"; then BUILD_RULES="$BUILD_RULES serf-lib" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib" fi if test "$svn_lib_kwallet" = "yes"; then BUILD_RULES="$BUILD_RULES kwallet-lib" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib" fi if test "$found_old_gnome_keyring" = "yes" || test "$found_gnome_keyring" = "yes"; then BUILD_RULES="$BUILD_RULES gnome-keyring-lib" INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`" INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" fi if test "$USE_NLS" = "yes"; then BUILD_RULES="$BUILD_RULES locale" INSTALL_RULES="$INSTALL_RULES install-locale" fi AC_SUBST(BUILD_RULES) AC_SUBST(INSTALL_STATIC_RULES) AC_SUBST(INSTALL_RULES) AC_SUBST(BDB_TEST_DEPS) AC_SUBST(BDB_TEST_PROGRAMS) dnl Check for header files ---------------- dnl Standard C headers AC_HEADER_STDC dnl Check for typedefs, structures, and compiler characteristics ---------- dnl if compiler doesn't understand `const', then define it empty AC_C_CONST dnl if non-existent, define size_t to be `unsigned' AC_TYPE_SIZE_T dnl Check for library functions ---------- AC_FUNC_MEMCMP dnl svn_error's default warning handler uses vfprintf() AC_FUNC_VPRINTF dnl check for functions needed in special file handling AC_CHECK_FUNCS(symlink readlink) dnl check for uname and ELF headers AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], []) AC_CHECK_HEADERS(elf.h) dnl check for termios AC_CHECK_HEADER(termios.h,[ AC_CHECK_FUNCS(tcgetattr tcsetattr,[ AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.]) ]) ]) dnl Process some configuration options ---------- AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [Turn on debugging]), [ if test "$enableval" = "yes" ; then enable_debugging="yes" else enable_debugging="no" fi ], [ # Neither --enable-debug nor --disable-debug was passed. enable_debugging="maybe" ]) AC_ARG_ENABLE(optimize, AS_HELP_STRING([--enable-optimize], [Turn on optimizations]), [ if test "$enableval" = "yes" ; then enable_optimization="yes" else enable_optimization="no" fi ], [ # Neither --enable-optimize nor --disable-optimize was passed. enable_optimization="maybe" ]) dnl Use -Wl,--no-undefined during linking of some libraries AC_ARG_ENABLE(disallowing-of-undefined-references, [AS_HELP_STRING([--enable-disallowing-of-undefined-references], [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])]) if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then enable_disallowing_of_undefined_references="no" fi if test "$enable_disallowing_of_undefined_references" != "no"; then AC_MSG_CHECKING([for -Wl,--no-undefined]) old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--no-undefined" AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"]) LDFLAGS="$old_LDFLAGS" if test "$svn_wl_no_undefined" = "yes"; then AC_MSG_RESULT([yes]) for library_dir in "$abs_srcdir/subversion/libsvn_"*; do eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined" done shared_only_LDFLAGS="-Wl,--no-undefined" else AC_MSG_RESULT([no]) if test "$enable_disallowing_of_undefined_references" = "yes"; then AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported]) fi fi fi AC_SUBST([libsvn_client_LDFLAGS]) AC_SUBST([libsvn_delta_LDFLAGS]) AC_SUBST([libsvn_diff_LDFLAGS]) AC_SUBST([libsvn_fs_LDFLAGS]) AC_SUBST([libsvn_fs_base_LDFLAGS]) AC_SUBST([libsvn_fs_fs_LDFLAGS]) AC_SUBST([libsvn_fs_util_LDFLAGS]) AC_SUBST([libsvn_ra_LDFLAGS]) AC_SUBST([libsvn_ra_local_LDFLAGS]) AC_SUBST([libsvn_ra_serf_LDFLAGS]) AC_SUBST([libsvn_ra_svn_LDFLAGS]) AC_SUBST([libsvn_repos_LDFLAGS]) AC_SUBST([libsvn_subr_LDFLAGS]) AC_SUBST([libsvn_wc_LDFLAGS]) AC_SUBST([shared_only_LDFLAGS]) AC_ARG_ENABLE(maintainer-mode, AS_HELP_STRING([--enable-maintainer-mode], [Turn on debugging and very strict compile-time warnings]), [ if test "$enableval" = "yes" ; then if test "$enable_debugging" = "no" ; then AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode]) fi enable_debugging=yes dnl Enable some extra warnings. Put these before the user's flags dnl so the user can specify flags that override these. if test "$GCC" = "yes"; then AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags]) dnl some additional flags that can be handy for an occasional review, dnl but throw too many warnings in svn code, of too little importance, dnl to keep these enabled. Remove the "dnl" to do a run with these dnl switches enabled. dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default" dnl Add each of the following flags only if the C compiler accepts it. CFLAGS_KEEP="$CFLAGS" CFLAGS="" SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration]) SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement]) SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens]) SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof]) SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32]) SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition]) SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers]) SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral]) SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations]) SVN_CFLAGS_ADD_IFELSE([-Wno-unused-const-variable]) CMAINTAINERFLAGS="$CFLAGS" CFLAGS="$CFLAGS_KEEP" dnl Add flags that all versions of GCC (should) support CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wbad-function-cast $CMAINTAINERFLAGS" fi if test "$GXX" = "yes"; then AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags]) dnl Add each of the following flags only if the C++ compiler accepts it. CXXFLAGS_KEEP="$CXXFLAGS" CXXFLAGS="" SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens]) SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof]) SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32]) SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers]) CXXMAINTAINERFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS_KEEP" dnl Add flags that all versions of G++ (should) support CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS" fi fi ]) if test "$enable_debugging" = "yes" ; then dnl At the moment, we don't want optimization, because we're dnl debugging. Unless optiization was explicitly enabled. if test "$enable_optimization" != "yes"; then AC_MSG_NOTICE([Disabling optimizations for debugging]) CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] fi dnl Add debugging flags, unless they were set by the user if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then AC_MSG_NOTICE([Enabling debugging for C]) CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"] SVN_CFLAGS_ADD_IFELSE([-fno-inline]) SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer]) SVN_CFLAGS_ADD_IFELSE([-g3],[],[ SVN_CFLAGS_ADD_IFELSE([-g2],[],[ SVN_CFLAGS_ADD_IFELSE([-g])])]) fi if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then AC_MSG_NOTICE([Enabling debugging for C++]) CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"] SVN_CXXFLAGS_ADD_IFELSE([-fno-inline]) SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer]) SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[ SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[ SVN_CXXFLAGS_ADD_IFELSE([-g])])]) fi dnl SVN_DEBUG enables specific features for developer builds dnl AP_DEBUG enables specific (Apache) features for developer builds CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG" CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" elif test "$enable_debugging" = "no" ; then AC_MSG_NOTICE([Disabling debugging]) CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"] CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"] dnl Compile with NDEBUG to get rid of assertions CFLAGS="$CFLAGS -DNDEBUG" CXXFLAGS="$CXXFLAGS -DNDEBUG" # elif test "$enable_debugging" = "maybe" ; then # # do nothing fi if test "$enable_optimization" = "yes"; then dnl Add optimization flags, unless they were set by the user if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] if test "$enable_debugging" = "yes"; then AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)]) SVN_CFLAGS_ADD_IFELSE([-O1],[],[ SVN_CFLAGS_ADD_IFELSE([-O])]) else AC_MSG_NOTICE([Enabling optimizations for C]) SVN_CFLAGS_ADD_IFELSE([-O3],[],[ SVN_CFLAGS_ADD_IFELSE([-O2],[],[ SVN_CFLAGS_ADD_IFELSE([-O1],[],[ SVN_CFLAGS_ADD_IFELSE([-O])])])]) SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered]) fi fi if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] if test "$enable_debugging" = "yes"; then AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)]) SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[ SVN_CXXFLAGS_ADD_IFELSE([-O])]) else AC_MSG_NOTICE([Enabling optimizations for C++]) SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[ SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[ SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[ SVN_CXXFLAGS_ADD_IFELSE([-O])])])]) SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered]) fi fi elif test "$enable_optimization" = "no"; then dnl Remove all optimization flags AC_MSG_NOTICE([Disabling optimizations]) CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] # elif test "$enable_optimization" = "maybe" ; then # # do nothing fi dnl Dump the current compiler options AC_MSG_NOTICE([C compiler flags: $CFLAGS]) AC_MSG_NOTICE([ language-level: $CMODEFLAGS]) AC_MSG_NOTICE([ user-defined: $CUSERFLAGS]) AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS]) AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS]) AC_MSG_NOTICE([ language-level: $CXXMODEFLAGS]) AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS]) AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS]) AC_ARG_ENABLE(full-version-match, AS_HELP_STRING([--disable-full-version-match], [Disable the full version match rules when checking Subversion library compatibility.]), [ if test "$enableval" = "no" ; then AC_MSG_NOTICE([Disabling svn full version matching]) AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1, [Defined if the full version matching rules are disabled]) fi ]) AC_ARG_WITH(editor, AS_HELP_STRING([--with-editor=PATH], [Specify a default editor for the subversion client.]), [ if test "$withval" = "yes" ; then AC_MSG_ERROR([--with-editor requires an argument.]) else SVN_CLIENT_EDITOR=$withval AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR", [The path of a default editor for the client.]) fi ]) SVN_LIB_Z SVN_LZ4 SVN_UTF8PROC MOD_ACTIVATION="" AC_ARG_ENABLE(mod-activation, AS_HELP_STRING([--enable-mod-activation], [Enable mod_dav_svn in httpd.conf]), [ if test "$enableval" = "yes" ; then MOD_ACTIVATION="-a" AC_MSG_NOTICE([Enabling apache module activation]) else AC_MSG_NOTICE([Disabling apache module activation]) fi ]) AC_SUBST(MOD_ACTIVATION) AC_ARG_ENABLE(gcov, AC_HELP_STRING([--enable-gcov], [Turn on gcov coverage testing (GCC only).]), [ if test "$enableval" = "yes" ; then dnl Probably other compilers support something similar; dnl feel free to extend this to include them. if test "$GCC" = "yes"; then if test "$svn_enable_shared" = "yes" ; then AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we recommend also using --enable-all-static).]) fi if test ! "$enable_all_static" = "yes" ; then AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.) fi AC_MSG_NOTICE([Enabling gcov coverage testing.]) CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage" else AC_MSG_ERROR([We only support --enable-gcov with GCC right now.]) fi fi ]) AC_ARG_ENABLE(gprof, AS_HELP_STRING([--enable-gprof], [Produce gprof profiling data in 'gmon.out' (GCC only).]), [ if test "$enableval" = "yes" ; then dnl Probably other compilers support -pg or something similar; dnl feel free to extend this to include them. if test "$GCC" = "yes"; then if test "$svn_enable_shared" = "yes" ; then AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we recommend also using --enable-all-static).]) fi if test ! "$enable_all_static" = "yes" ; then AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.) fi AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).]) CFLAGS="$CFLAGS -pg" CXXFLAGS="$CXXFLAGS -pg" LT_LDFLAGS="$LT_LDFLAGS -pg" else AC_MSG_ERROR([We only support --enable-gprof with GCC right now.]) fi fi ]) # Scripting and Bindings languages # Python: Used for testsuite, and bindings AC_ARG_VAR([PYTHON], [Python interpreter command]) PYTHON="`$abs_srcdir/build/find_python.sh`" if test -z "$PYTHON"; then AC_MSG_WARN([Python 2.7 or later is required to run the testsuite]) AC_MSG_WARN([or to use the Subversion Python bindings]) AC_MSG_WARN([]) AC_MSG_WARN([If you have a suitable Python installed, but not on the]) AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path]) AC_MSG_WARN([to the Python executable, and re-run configure]) fi AC_PATH_PROGS(PYTHON, "$PYTHON", none) # The minimum version for the JVM runtime for our Java bytecode. JAVA_OLDEST_WORKING_VER='1.8' # SVN_CHECK_JDK sets $JAVA_CLASSPATH SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER) AC_PATH_PROG(PERL, perl, none) if test -n "$RUBY"; then AC_PATH_PROG(RUBY, "$RUBY", none) else AC_PATH_PROGS(RUBY, ruby ruby1 ruby1.8 ruby18 ruby1.9 ruby19 ruby1.9.3 ruby193 ruby2 ruby2.0 ruby20 ruby2.1 ruby21 ruby2.2 ruby22 ruby2.3 ruby23 ruby2.4 ruby24, none) fi if test "$RUBY" != "none"; then AC_MSG_CHECKING([rb_hash_foreach]) if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then AC_MSG_RESULT([yes]) if test -n "$RDOC"; then AC_PATH_PROG(RDOC, "$RDOC", none) else AC_PATH_PROGS(RDOC, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24, none) fi AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[ svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`" ]) RUBY_MAJOR="$svn_cv_ruby_major" AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[ svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`" ]) RUBY_MINOR="$svn_cv_ruby_minor" AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[ svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`" ]) RUBY_TEENY="$svn_cv_ruby_teeny" AC_SUBST(RUBY_MAJOR) AC_SUBST(RUBY_MINOR) AC_SUBST(RUBY_TEENY) if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then # Disallow Ruby between 1.8.7 and 1.9.3 RUBY="none" AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3]) AC_MSG_WARN([Only 1.8.x and 1.9.3 or later are supported at this time]) fi else AC_MSG_RESULT([no]) RUBY="none" AC_MSG_WARN([The detected Ruby is too old for Subversion to use]) AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the]) AC_MSG_WARN([Subversion Ruby bindings]) AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later]) fi fi SVN_CHECK_SWIG AC_ARG_VAR(SWIG_FEATURES, [SWIG feature flags common to all bindings]) AC_ARG_VAR(SWIG_RB_FEATURES, [SWIG feature flags specific to Ruby bindings]) AC_ARG_VAR(SWIG_PL_FEATURES, [SWIG feature flags specific to Perl bindings]) AC_ARG_VAR(SWIG_PY_FEATURES, [SWIG feature flags specific to Python bindings]) SVN_CHECK_CTYPESGEN dnl decide whether we want to link against the RA/FS libraries AC_ARG_ENABLE(runtime-module-search, AS_HELP_STRING([--enable-runtime-module-search], [Turn on dynamic loading of RA/FS libraries including third-party FS libraries]), [ if test "$enableval" = "yes"; then use_dso=yes if test "$svn_enable_shared" = "no"; then AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared]) fi AC_DEFINE(SVN_USE_DSO, 1, [Defined if svn should try to load DSOs]) dnl Mac OS X uses libname.MAJOR.SOVERSION.dylib dnl Most other unixes use libname.MAJOR.so.SOVERSION case "$host" in *-*-darwin*) AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.%d.dylib"], [Shared library file name suffix format]) ;; *) AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.so.%d"], [Shared library file name suffix format]) ;; esac fi ]) if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_LOCAL, 1, [Defined if libsvn_ra should link against libsvn_ra_local]) svn_ra_lib_deps="\$(RA_LOCAL_DEPS)" svn_ra_lib_install_deps="install-ramod-lib" svn_ra_lib_link="\$(RA_LOCAL_LINK)" AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SVN, 1, [Defined if libsvn_ra should link against libsvn_ra_svn]) svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)" svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)" if test "$svn_lib_serf" = "yes"; then AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SERF, 1, [Defined if libsvn_ra should link against libsvn_ra_serf]) svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)" svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib" svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)" fi SVN_RA_LIB_DEPS=$svn_ra_lib_deps SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps SVN_RA_LIB_LINK=$svn_ra_lib_link AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1, [Defined if libsvn_fs should link against libsvn_fs_fs]) svn_fs_lib_deps="\$(FS_FS_DEPS)" svn_fs_lib_install_deps="install-fsmod-lib" svn_fs_lib_link="\$(FS_FS_LINK)" AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1, [Defined if libsvn_fs should link against libsvn_fs_x]) svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)" svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)" dnl FSFS already installs fsmod dnl svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib" if test "$svn_lib_berkeley_db" = "yes"; then AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1, [Defined if libsvn_fs should link against libsvn_fs_base]) svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)" svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib" svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)" fi SVN_FS_LIB_DEPS=$svn_fs_lib_deps SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps SVN_FS_LIB_LINK=$svn_fs_lib_link fi AC_SUBST(SVN_RA_LIB_DEPS) AC_SUBST(SVN_RA_LIB_INSTALL_DEPS) AC_SUBST(SVN_RA_LIB_LINK) AC_SUBST(SVN_FS_LIB_DEPS) AC_SUBST(SVN_FS_LIB_INSTALL_DEPS) AC_SUBST(SVN_FS_LIB_LINK) # ==== SVN++ ================================================================= dnl Possibly compile SVN++ do_svnxx_build=no AC_ARG_ENABLE(svnxx, AS_HELP_STRING([--enable-svnxx], [Enable compilation of the C++ bindings (requires C++)]), [ if test "$enableval" = "yes" ; then AC_MSG_NOTICE([Enabling the C++ bindings]) do_svnxx_build=yes fi ]) dnl Possibly compile SVN++ tests do_svnxx_test_build=no AC_ARG_ENABLE(svnxx-tests, AS_HELP_STRING([--enable-svnxx-tests], [Enable compilation of tests for the C++ bindings (implies --enable-svnxx, requires Boost and Boost.Test)]), [ if test "$enableval" = "yes" ; then AC_MSG_NOTICE([Enabling tests for the C++ bindings]) do_svnxx_test_build=yes fi ]) AX_BOOST_BASE([1.58], [ if test "$do_svnxx_test_build" = "yes"; then AX_BOOST_UNIT_TEST_FRAMEWORK fi ], [ if test "$do_svnxx_test_build" = "yes"; then AC_MSG_WARN([Tests for the C++ bindings require Boost and Boost.Test]) do_svnxx_test_build=no fi ]) if test "$do_svnxx_test_build" = "yes"; then if test "$want_boost" != "yes"; then AC_MSG_WARN([Tests for the C++ bindings require Boost and Boost.Test]) do_svnxx_test_build=no SVN_BUILD_SVNXX_TESTS=false else if test "$do_svnxx_build" != "yes"; then AC_MSG_WARN([Enabling the C++ bindings because their tests are enabled]) do_svnxx_build=yes fi SVN_BUILD_SVNXX_TESTS=true fi else SVN_BUILD_SVNXX_TESTS=false fi if test "$do_svnxx_build" = "yes"; then SVN_BUILD_SVNXX=true else SVN_BUILD_SVNXX=false fi AC_SUBST(SVN_BUILD_SVNXX) AC_SUBST(SVN_BUILD_SVNXX_TESTS) # ==== JavaHL ================================================================ dnl Possibly compile JavaHL do_javahl_build=no AC_ARG_ENABLE(javahl, AS_HELP_STRING([--enable-javahl], [Enable compilation of Java high-level bindings (requires C++)]), [ if test "$enableval" = "yes" ; then do_javahl_build="yes" fi ]) JAVAHL_OBJDIR="" INSTALL_EXTRA_JAVAHL_LIB="" FIX_JAVAHL_LIB="" JAVAHL_TESTS_TARGET="" JAVAHL_COMPAT_TESTS_TARGET="" LT_CXX_LIBADD="" if test "$do_javahl_build" = "yes"; then dnl Check for suitable JDK if test "$JDK_SUITABLE" = "no"; then AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK. Please specify a suitable JDK using the --with-jdk option.]) fi dnl The temporary directory where libtool compiles libsvnjavahl. JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs' os_arch=`uname` if test "$os_arch" = "Darwin"; then dnl On Darwin, JNI libs must be installed as .jnilib INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib' FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib" fi # This segment (and the rest of r10800) is very likely unnecessary # with libtool 1.5, which automatically adds libstdc++ as a # dependency to the C++ libraries it builds. So at some future time # when autogen.sh requires libtool 1.5 or higher, we can get rid of # it. AC_MSG_CHECKING([for additional flags to link C++ libraries]) if test "x$ac_compiler_gnu" = "xyes"; then case "$host" in *freebsd10*) AC_MSG_RESULT([none needed]) ;; *) LT_CXX_LIBADD="-lstdc++" AC_MSG_RESULT([$LT_CXX_LIBADD]) ;; esac else AC_MSG_RESULT([none needed]) fi fi AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB) AC_SUBST(JAVAHL_OBJDIR) AC_SUBST(FIX_JAVAHL_LIB) AC_SUBST(LT_CXX_LIBADD) AC_ARG_WITH(junit, AS_HELP_STRING([--with-junit=PATH], [Specify a path to the junit JAR file.]), [ if test "$withval" != "no"; then if test -n "$JAVA_CLASSPATH"; then JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH" else JAVA_CLASSPATH="$withval" fi JAVAHL_TESTS_TARGET="javahl-tests" JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests" fi ]) AC_SUBST(JAVA_CLASSPATH) AC_SUBST(JAVAHL_TESTS_TARGET) AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET) # ==== Miscellaneous bits ==================================================== AC_CHECK_HEADERS([stdbool.h stdint.h]) # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler ### I think we get this flag from APR, so the fix probably belongs there if test "$CC" = "clang"; then SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ]) fi dnl Since this is used only on Unix-y systems, define the path separator as '/' AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/', [Defined to be the path separator used on your local filesystem]) AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null", [Defined to be the null device for the system]) DEFAULT_FS_TYPE="fsfs" AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE", [The fs type to use by default]) DEFAULT_HTTP_LIBRARY="serf" AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY", [The http library to use by default]) # BSD/OS (BSDi) needs to use a different include syntax in Makefile INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk" case "$host" in *bsdi*) # Check whether they've installed GNU make if ! make --version > /dev/null 2>&1; then # BSDi make INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\"" fi ;; esac AC_SUBST(INCLUDE_OUTPUTS) # ==== Detection complete - output and run config.status ===================== AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in) AC_CONFIG_COMMANDS([svn_private_config.h.tmp], [svn_cf=subversion/svn_private_config.h; $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf rm -f $svn_cf.tmp.new $svn_cf.tmp], [SED="$SED" SVN_DB_HEADER="$SVN_DB_HEADER"]) AC_CONFIG_FILES([Makefile]) # Create pkg-config .pc files from .pc.in files for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do pc_file=${pc_in_file#${abs_srcdir}/} pc_file=${pc_file%.in} AC_CONFIG_FILES([${pc_file}]) done SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py) SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl) SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL) if test -e packages/solaris/pkginfo.in; then SVN_CONFIG_SCRIPT(packages/solaris/pkginfo) fi AC_SUBST(SVN_CONFIG_SCRIPT_FILES) # Ensure that SWIG is checked after reconfiguration. rm -f .swig_checked .swig_pl_checked .swig_py_checked .swig_rb_checked dnl Provide ${host} for use in compiled code (for svn --version) AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}", [Defined to the config.guess name of the build system]) dnl Provide ${target} for use in compiled code (for user-agent string) AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}", [Defined to the config.guess name of the build target]) AC_OUTPUT # ==== Print final messages to user ========================================== dnl Configure is long - users tend to miss warnings printed during it. dnl Hence, print a warnings about what we did and didn't configure at the dnl end, where people will actually see them. if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then AC_MSG_WARN([We have configured without BDB filesystem support Berkeley DB 6 was found, but not used. Please re-run configure (see ./config.nice) with the '--enable-bdb6' flag to use it, or explicitly specify '--disable-bdb6' or '--without-berkeley-db' to silence this warning. Please note that some versions of Berkeley DB 6+ are under the GNU Affero General Public License, version 3: https://oss.oracle.com/pipermail/bdb/2013-June/000056.html The AGPL-3.0 licence may impose special requirements for making available source code of server-side software. The text of the licence is: https://www.gnu.org/licenses/agpl-3.0.html http://opensource.org/licenses/AGPL-3.0 The Berkeley DB backend to Subversion is deprecated; see http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated The Subversion developers have not tested Subversion with Berkeley DB 6 for technical problems or bugs. ]) fi diff --git a/contrib/subversion/gen-make.py b/contrib/subversion/gen-make.py index bdb359394e1c..5811705322cc 100755 --- a/contrib/subversion/gen-make.py +++ b/contrib/subversion/gen-make.py @@ -1,329 +1,329 @@ #!/usr/bin/env python # # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # # # gen-make.py -- generate makefiles for building Subversion # import os import traceback import sys import getopt try: my_getopt = getopt.gnu_getopt except AttributeError: my_getopt = getopt.getopt try: # Python >=3.0 import configparser except ImportError: # Python <3.0 import ConfigParser as configparser # for the generator modules sys.path.insert(0, os.path.join('build', 'generator')) # for getversion sys.path.insert(1, 'build') gen_modules = { 'make' : ('gen_make', 'Makefiles for POSIX systems'), 'vcproj' : ('gen_vcnet_vcproj', 'VC.Net project files'), } def main(fname, gentype, verfname=None, skip_depends=0, other_options=None): if verfname is None: verfname = os.path.join('subversion', 'include', 'svn_version.h') gen_module = __import__(gen_modules[gentype][0]) generator = gen_module.Generator(fname, verfname, other_options) if not skip_depends: generator.compute_hdr_deps() generator.write() generator.write_sqlite_headers() generator.write_errno_table() generator.write_config_keys() if ('--debug', '') in other_options: for dep_type, target_dict in generator.graph.deps.items(): - sorted_targets = list(target_dict.keys()); sorted_targets.sort() + sorted_targets = sorted(target_dict.keys(), key=str) for target in sorted_targets: print(dep_type + ": " + _objinfo(target)) for source in target_dict[target]: print(" " + _objinfo(source)) print("=" * 72) gen_keys = sorted(generator.__dict__.keys()) for name in gen_keys: value = generator.__dict__[name] if isinstance(value, list): print(name + ": ") for i in value: print(" " + _objinfo(i)) print("=" * 72) def _objinfo(o): if isinstance(o, str): return repr(o) else: t = o.__class__.__name__ n = getattr(o, 'name', '-') f = getattr(o, 'filename', '-') return "%s: %s %s" % (t,n,f) def _usage_exit(err=None): "print ERR (if any), print usage, then exit the script" if err: print("ERROR: %s\n" % (err)) print("USAGE: gen-make.py [options...] [conf-file]") print(" -s skip dependency generation") print(" --debug print lots of stuff only developers care about") print(" --release release mode") print(" --reload reuse all options from the previous invocation") print(" of the script, except -s, -t, --debug and --reload") print(" -t TYPE use the TYPE generator; can be one of:") items = sorted(gen_modules.items()) for name, (module, desc) in items: print(' %-12s %s' % (name, desc)) print("") print(" The default generator type is 'make'") print("") print(" Makefile-specific options:") print("") print(" --assume-shared-libs") print(" omit dependencies on libraries, on the assumption that") print(" shared libraries will be built, so that it is unnecessary") print(" to relink executables when the libraries that they depend") print(" on change. This is an option for developers who want to") print(" increase the speed of frequent rebuilds.") print(" *** Do not use unless you understand the consequences. ***") print("") print(" UNIX-specific options:") print("") print(" --installed-libs") print(" Comma-separated list of Subversion libraries to find") print(" pre-installed instead of building (probably only") print(" useful for packagers)") print("") print(" Windows-specific options:") print("") print(" --with-apr=DIR") print(" the APR sources are in DIR") print("") print(" --with-apr-util=DIR") print(" the APR-Util sources are in DIR") print("") print(" --with-apr-iconv=DIR") print(" the APR-Iconv sources are in DIR") print("") print(" --with-berkeley-db=DIR") print(" look for Berkeley DB headers and libs in") print(" DIR") print("") print(" --with-serf=DIR") print(" the Serf sources are in DIR") print("") print(" --with-httpd=DIR") print(" the httpd sources and binaries required") print(" for building mod_dav_svn are in DIR;") print(" implies --with-apr{-util, -iconv}, but") print(" you can override them") print("") print(" --with-libintl=DIR") print(" look for GNU libintl headers and libs in DIR;") print(" implies --enable-nls") print("") print(" --with-openssl=DIR") print(" tell serf to look for OpenSSL headers") print(" and libs in DIR") print("") print(" --with-zlib=DIR") print(" tell Subversion to look for ZLib headers and") print(" libs in DIR") print("") print(" --with-jdk=DIR") print(" look for the java development kit here") print("") print(" --with-junit=DIR") print(" look for the junit jar here") print(" junit is for testing the java bindings") print("") print(" --with-swig=DIR") print(" look for the swig program in DIR") print(" --with-py3c=DIR") print(" look for the py3c library in DIR") print("") print(" --with-sqlite=DIR") print(" look for sqlite in DIR") print("") print(" --with-sasl=DIR") print(" look for the sasl headers and libs in DIR") print("") print(" --enable-pool-debug") print(" turn on APR pool debugging") print("") print(" --enable-purify") print(" add support for Purify instrumentation;") print(" implies --enable-pool-debug") print("") print(" --enable-quantify") print(" add support for Quantify instrumentation") print("") print(" --enable-nls") print(" add support for gettext localization") print("") print(" --disable-shared") print(" only build static libraries") print("") print(" --with-static-apr") print(" Use static apr and apr-util") print("") print(" --with-static-openssl") print(" Use static openssl") print("") print(" --vsnet-version=VER") print(" generate for VS.NET version VER (2005-2017 or 9.0-15.0)") print(" [implies '-t vcproj']") print("") print(" -D NAME[=value]") print(" define NAME macro during compilation") print(" [only valid in combination with '-t vcproj']") print("") print(" --with-apr_memcache=DIR") print(" the apr_memcache sources are in DIR") sys.exit(1) class Options: def __init__(self): self.list = [] self.dict = {} def add(self, opt, val, overwrite=True): if opt in self.dict: if overwrite: self.list[self.dict[opt]] = (opt, val) else: self.dict[opt] = len(self.list) self.list.append((opt, val)) if __name__ == '__main__': try: opts, args = my_getopt(sys.argv[1:], 'st:D:', ['debug', 'release', 'reload', 'assume-shared-libs', 'with-apr=', 'with-apr-util=', 'with-apr-iconv=', 'with-berkeley-db=', 'with-serf=', 'with-httpd=', 'with-libintl=', 'with-openssl=', 'with-zlib=', 'with-jdk=', 'with-junit=', 'with-swig=', 'with-py3c=', 'with-sqlite=', 'with-sasl=', 'with-apr_memcache=', 'with-static-apr', 'with-static-openssl', 'enable-pool-debug', 'enable-purify', 'enable-quantify', 'enable-nls', 'disable-shared', 'installed-libs=', 'vsnet-version=', ]) if len(args) > 1: _usage_exit("Too many arguments") except getopt.GetoptError: typ, val, tb = sys.exc_info() msg = ''.join(traceback.format_exception_only(typ, val)) _usage_exit(msg) conf = 'build.conf' skip = 0 gentype = 'make' rest = Options() if args: conf = args[0] # First merge options with previously saved to gen-make.opts if --reload # options used for opt, val in opts: if opt == '--reload': prev_conf = configparser.ConfigParser() prev_conf.read('gen-make.opts') for opt, val in prev_conf.items('options'): if opt != '--debug': rest.add(opt, val) del prev_conf elif opt == '--with-neon' or opt == '--without-neon': # Provide a warning that we ignored these arguments print("Ignoring no longer supported argument '%s'" % opt) else: rest.add(opt, val) # Parse options list for opt, val in rest.list: if opt == '-s': skip = 1 elif opt == '-t': gentype = val elif opt == '--vsnet-version': gentype = 'vcproj' else: if opt == '--with-httpd': rest.add('--with-apr', os.path.join(val, 'srclib', 'apr'), overwrite=False) rest.add('--with-apr-util', os.path.join(val, 'srclib', 'apr-util'), overwrite=False) rest.add('--with-apr-iconv', os.path.join(val, 'srclib', 'apr-iconv'), overwrite=False) # Remember all options so that --reload and other scripts can use them opt_conf = open('gen-make.opts', 'w') opt_conf.write('[options]\n') for opt, val in rest.list: opt_conf.write(opt + ' = ' + val + '\n') opt_conf.close() if gentype not in gen_modules.keys(): _usage_exit("Unknown module type '%s'" % (gentype)) main(conf, gentype, skip_depends=skip, other_options=rest.list) ### End of file. diff --git a/contrib/subversion/subversion/include/private/svn_dep_compat.h b/contrib/subversion/subversion/include/private/svn_dep_compat.h index 7e6603826135..9a2e49a19cba 100644 --- a/contrib/subversion/subversion/include/private/svn_dep_compat.h +++ b/contrib/subversion/subversion/include/private/svn_dep_compat.h @@ -1,200 +1,211 @@ /** * @copyright * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * @endcopyright * * @file svn_dep_compat.h * @brief Compatibility macros and functions. * @since New in 1.5.0. */ #ifndef SVN_DEP_COMPAT_H #define SVN_DEP_COMPAT_H #include +#include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * We assume that 'int' and 'unsigned' are at least 32 bits wide. * This also implies that long (rev numbers) is 32 bits or wider. * * @since New in 1.9. */ #if defined(APR_HAVE_LIMITS_H) \ && !defined(SVN_ALLOW_SHORT_INTS) \ && (INT_MAX < 0x7FFFFFFFl) #error int is shorter than 32 bits and may break Subversion. Define SVN_ALLOW_SHORT_INTS to skip this check. #endif /** * We assume that 'char' is 8 bits wide. The critical interfaces are * our repository formats and RA encodings. E.g. a 32 bit wide char may * mess up UTF8 parsing, how we interpret size values etc. * * @since New in 1.9. */ #if defined(CHAR_BIT) \ && !defined(SVN_ALLOW_NON_8_BIT_CHARS) \ && (CHAR_BIT != 8) #error char is not 8 bits and may break Subversion. Define SVN_ALLOW_NON_8_BIT_CHARS to skip this check. #endif /** * Work around a platform dependency issue. apr_thread_rwlock_trywrlock() * will make APR_STATUS_IS_EBUSY() return TRUE if the lock could not be * acquired under Unix. Under Windows, this will not work. So, provide * a more portable substitute. * * @since New in 1.8. */ #ifdef WIN32 #define SVN_LOCK_IS_BUSY(x) \ (APR_STATUS_IS_EBUSY(x) || (x) == APR_FROM_OS_ERROR(WAIT_TIMEOUT)) #else #define SVN_LOCK_IS_BUSY(x) APR_STATUS_IS_EBUSY(x) #endif /** * Indicate whether we are running on a POSIX platform. This has * implications on the way e.g. fsync() works. * * For details on this check, see * http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system#POSIX * * @since New in 1.10. */ #ifndef SVN_ON_POSIX #if !defined(_WIN32) \ && ( defined(__unix__) \ || defined(__unix) \ || (defined(__APPLE__) && defined(__MACH__))) /* UNIX-style OS? */ # include # if defined(_POSIX_VERSION) # define SVN_ON_POSIX # endif #endif #endif /** * APR keeps a few interesting defines hidden away in its private * headers apr_arch_file_io.h, so we redefined them here. * * @since New in 1.9 */ #ifndef APR_FREADONLY #define APR_FREADONLY 0x10000000 #endif #ifndef APR_OPENINFO #define APR_OPENINFO 0x00100000 #endif /** * APR 1 has volatile qualifier bugs in some atomic prototypes that * are fixed in APR 2: * https://issues.apache.org/bugzilla/show_bug.cgi?id=50731 * Subversion code should put the volatile qualifier in the correct * place when declaring variables which means that casting at the call * site is necessary when using APR 1. No casts should be used with * APR 2 as this allows the compiler to check that the variable has * the correct volatile qualifier. */ #if APR_VERSION_AT_LEAST(2,0,0) #define svn_atomic_casptr(mem, with, cmp) \ apr_atomic_casptr((mem), (with), (cmp)) #define svn_atomic_xchgptr(mem, val) \ apr_atomic_xchgptr((mem), (val)) #else #define svn_atomic_casptr(mem, with, cmp) \ apr_atomic_casptr((void volatile **)(mem), (with), (cmp)) #define svn_atomic_xchgptr(mem, val) \ apr_atomic_xchgptr((void volatile **)(mem), (val)) #endif /** * Check at compile time if the Serf version is at least a certain * level. * @param major The major version component of the version checked * for (e.g., the "1" of "1.3.0"). * @param minor The minor version component of the version checked * for (e.g., the "3" of "1.3.0"). * @param patch The patch level component of the version checked * for (e.g., the "0" of "1.3.0"). * * @since New in 1.5. */ #ifndef SERF_VERSION_AT_LEAST /* Introduced in Serf 0.1.1 */ #define SERF_VERSION_AT_LEAST(major,minor,patch) \ (((major) < SERF_MAJOR_VERSION) \ || ((major) == SERF_MAJOR_VERSION && (minor) < SERF_MINOR_VERSION) \ || ((major) == SERF_MAJOR_VERSION && (minor) == SERF_MINOR_VERSION && \ (patch) <= SERF_PATCH_VERSION)) #endif /* SERF_VERSION_AT_LEAST */ /** * By default, if libsvn is built against one version of SQLite * and then run using an older version, svn will error out: * * svn: Couldn't perform atomic initialization * svn: SQLite compiled for 3.7.4, but running with 3.7.3 * * That can be annoying when building on a modern system in order * to deploy on a less modern one. So these constants allow one * to specify how old the system being deployed on might be. * For example, * * EXTRA_CFLAGS += -DSVN_SQLITE_MIN_VERSION_NUMBER=3007003 * EXTRA_CFLAGS += '-DSVN_SQLITE_MIN_VERSION="3.7.3"' * * turns on code that works around infelicities in older versions * as far back as 3.7.3 and relaxes the check at initialization time * to permit them. * * @since New in 1.8. */ #ifndef SVN_SQLITE_MIN_VERSION_NUMBER #define SVN_SQLITE_MIN_VERSION_NUMBER SQLITE_VERSION_NUMBER #define SVN_SQLITE_MIN_VERSION SQLITE_VERSION #endif /* SVN_SQLITE_MIN_VERSION_NUMBER */ /** * Check at compile time if the SQLite version is at least a certain * level. * @param major The major version component of the version checked * for (e.g., the "1" of "1.3.0"). * @param minor The minor version component of the version checked * for (e.g., the "3" of "1.3.0"). * @param patch The patch level component of the version checked * for (e.g., the "0" of "1.3.0"). * * @since New in 1.6. */ #ifndef SQLITE_VERSION_AT_LEAST #define SQLITE_VERSION_AT_LEAST(major,minor,patch) \ ((major*1000000 + minor*1000 + patch) <= SVN_SQLITE_MIN_VERSION_NUMBER) #endif /* SQLITE_VERSION_AT_LEAST */ +/** + * Support for 'apr_escape_shell() which was introduced in APR 1.5. + */ +#if !APR_VERSION_AT_LEAST(1,5,0) +/* from apr_escape.h */ +#define APR_ESCAPE_STRING (-1) +APR_DECLARE(apr_status_t) apr_escape_shell(char *escaped, const char *str, + apr_ssize_t slen, apr_size_t *len); +#endif + #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* SVN_DEP_COMPAT_H */ diff --git a/contrib/subversion/subversion/include/private/svn_sorts_private.h b/contrib/subversion/subversion/include/private/svn_sorts_private.h index d0fddc0c6488..d11ebbe1a992 100644 --- a/contrib/subversion/subversion/include/private/svn_sorts_private.h +++ b/contrib/subversion/subversion/include/private/svn_sorts_private.h @@ -1,230 +1,230 @@ /** * @copyright * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * @endcopyright * * @file svn_sorts_private.h * @brief all sorts of sorts. */ #ifndef SVN_SORTS_PRIVATE_H #define SVN_SORTS_PRIVATE_H #include "../svn_sorts.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** This structure is used to hold a key/value from a hash table. * @note Private. For use by Subversion's own code only. See issue #1644. */ struct svn_sort__item_t { /** pointer to the key */ const void *key; /** size of the key */ apr_ssize_t klen; /** pointer to the value */ void *value; }; /** Sort @a ht according to its keys, return an @c apr_array_header_t * containing @c svn_sort__item_t structures holding those keys and values * (i.e. for each @c svn_sort__item_t @a item in the returned array, * @a item.key and @a item.size are the hash key, and @a item.value points to * the hash value). * * Storage is shared with the original hash, not copied. * * @a comparison_func should take pointers to two items and return an * integer greater than, equal to, or less than 0, according as the first item * is greater than, equal to, or less than the second. * * @note Private. For use by Subversion's own code only. See issue #1644. * * @note This function and the @c svn_sort__item_t should go over to APR. */ apr_array_header_t * svn_sort__hash(apr_hash_t *ht, int (*comparison_func)(const svn_sort__item_t *, const svn_sort__item_t *), apr_pool_t *pool); /* Sort APR array @a array using ordering defined by @a comparison_func. * @a comparison_func is defined as for the C stdlib function qsort(). */ void svn_sort__array(apr_array_header_t *array, int (*comparison_func)(const void *, const void *)); -/* Return the lowest index at which the element @a *key should be inserted into +/** Return the lowest index at which the element @a *key should be inserted into * the array @a array, according to the ordering defined by @a compare_func. * The array must already be sorted in the ordering defined by @a compare_func. * @a compare_func is defined as for the C stdlib function bsearch(); the * @a key will always passed to it as the second parameter. * * @note Private. For use by Subversion's own code only. */ int svn_sort__bsearch_lower_bound(const apr_array_header_t *array, const void *key, int (*compare_func)(const void *, const void *)); -/* Find the lowest index at which the element @a *key should be inserted into +/** Find the lowest index at which the element @a *key should be inserted into * the array @a array, according to the ordering defined by @a compare_func. * The array must already be sorted in the ordering defined by @a compare_func. * @a compare_func is defined as for the C stdlib function bsearch(); the * @a key will always passed to it as the second parameter. * * Returns a reference to the array element at the insertion location if * that matches @a key and return NULL otherwise. If you call this function * multiple times for the same array and expect the results to often be * consecutive array elements, provide @a hint. It should be initialized * with -1 for the first call and receives the array index if the returned * element. If the return value is NULL, @a *hint is the location where * the respective key would be inserted. * * @note Private. For use by Subversion's own code only. */ void * svn_sort__array_lookup(const apr_array_header_t *array, const void *key, int *hint, int (*compare_func)(const void *, const void *)); -/* Insert a shallow copy of @a *new_element into the array @a array at the index +/** Insert a shallow copy of @a *new_element into the array @a array at the index * @a insert_index, growing the array and shuffling existing elements along to * make room. * * Raise an error if @a insert_index is less than 0 or greater than the length * of the array. * * @note Private. For use by Subversion's own code only. */ svn_error_t * svn_sort__array_insert2(apr_array_header_t *array, const void *new_element, int insert_index); -/* Remove @a elements_to_delete elements starting at @a delete_index from the +/** Remove @a elements_to_delete elements starting at @a delete_index from the * array @a arr. * * Raise an error if the indexes to delete extends outside the array bounds * or if @a elements_to_delete is not greater than zero. * * @note Private. For use by Subversion's own code only. */ svn_error_t * svn_sort__array_delete2(apr_array_header_t *arr, int delete_index, int elements_to_delete); -/* Reverse the order of elements in @a array, in place. +/** Reverse the order of elements in @a array, in place. * * @note Private. For use by Subversion's own code only. */ void svn_sort__array_reverse(apr_array_header_t *array, apr_pool_t *scratch_pool); /** Priority queues. * * @defgroup svn_priority_queue__t Priority Queues * @{ */ /** * We implement priority queues on top of existing ELEMENTS arrays. They * provide us with memory management and very basic element type information. * * The extraction order is being defined by a comparison function similar * to the ones used with qsort. The first element in the queue is always * on with COMPARISON_FUNC(first,element) <= 0, for all elements in the * queue. */ /** * Opaque data type for priority queues. */ typedef struct svn_priority_queue__t svn_priority_queue__t; /** * Return a priority queue containing all provided @a elements and prioritize * them according to @a compare_func. * * @note The priority queue will use the existing @a elements array for data * storage. So, you must not manipulate that array while using the queue. * Also, the lifetime of the queue is bound to that of the array. */ svn_priority_queue__t * svn_priority_queue__create(apr_array_header_t *elements, int (*compare_func)(const void *, const void *)); /** * Returns the number of elements in the @a queue. */ apr_size_t svn_priority_queue__size(svn_priority_queue__t *queue); /** * Returns a reference to the first element in the @a queue. The queue * contents remains unchanged. If the @a queue is empty, NULL will be * returned. */ void * svn_priority_queue__peek(svn_priority_queue__t *queue); /** * Notify the @a queue after modifying the first item as returned by * #svn_priority_queue__peek. */ void svn_priority_queue__update(svn_priority_queue__t *queue); /** * Remove the first element from the @a queue. This is a no-op for empty * queues. */ void svn_priority_queue__pop(svn_priority_queue__t *queue); /** * Append the new @a element to the @a queue. @a element must neither be * NULL nor the first element as returned by #svn_priority_queue__peek. */ void svn_priority_queue__push(svn_priority_queue__t *queue, const void *element); /** @} */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* SVN_SORTS_PRIVATE_H */ diff --git a/contrib/subversion/subversion/include/svn_ra.h b/contrib/subversion/subversion/include/svn_ra.h index 4c71520dd1ff..d534ab70caa1 100644 --- a/contrib/subversion/subversion/include/svn_ra.h +++ b/contrib/subversion/subversion/include/svn_ra.h @@ -1,2657 +1,2657 @@ /** * @copyright * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * @endcopyright * * @file svn_ra.h * @brief Repository Access */ #ifndef SVN_RA_H #define SVN_RA_H #include #include #include #include #include #include /* for apr_file_t */ #include "svn_types.h" #include "svn_string.h" #include "svn_delta.h" #include "svn_auth.h" #include "svn_mergeinfo.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Misc. declarations */ /** * Get libsvn_ra version information. * * @since New in 1.1. */ const svn_version_t * svn_ra_version(void); /** This is a function type which allows the RA layer to fetch working * copy (WC) properties. * * The @a baton is provided along with the function pointer and should * be passed back in. This will be the @a callback_baton or the * @a close_baton as appropriate. * * @a path is relative to the "root" of the session, defined by the * @a repos_URL passed to svn_ra_open5() vtable call. * * @a name is the name of the property to fetch. If the property is present, * then it is returned in @a value. Otherwise, @a *value is set to @c NULL. */ typedef svn_error_t *(*svn_ra_get_wc_prop_func_t)(void *baton, const char *path, const char *name, const svn_string_t **value, apr_pool_t *pool); /** This is a function type which allows the RA layer to store new * working copy properties during update-like operations. See the * comments for @c svn_ra_get_wc_prop_func_t for @a baton, @a path, and * @a name. The @a value is the value that will be stored for the property; * a NULL @a value means the property will be deleted. */ typedef svn_error_t *(*svn_ra_set_wc_prop_func_t)(void *baton, const char *path, const char *name, const svn_string_t *value, apr_pool_t *pool); /** This is a function type which allows the RA layer to store new * working copy properties as part of a commit. See the comments for * @c svn_ra_get_wc_prop_func_t for @a baton, @a path, and @a name. * The @a value is the value that will be stored for the property; a * @c NULL @a value means the property will be deleted. * * Note that this might not actually store the new property before * returning, but instead schedule it to be changed as part of * post-commit processing (in which case a successful commit means the * properties got written). Thus, during the commit, it is possible * to invoke this function to set a new value for a wc prop, then read * the wc prop back from the working copy and get the *old* value. * Callers beware. */ typedef svn_error_t *(*svn_ra_push_wc_prop_func_t)(void *baton, const char *path, const char *name, const svn_string_t *value, apr_pool_t *pool); /** This is a function type which allows the RA layer to invalidate * (i.e., remove) wcprops recursively. See the documentation for * @c svn_ra_get_wc_prop_func_t for @a baton, @a path, and @a name. * * Unlike @c svn_ra_push_wc_prop_func_t, this has immediate effect. If * it returns success, the wcprops have been removed. */ typedef svn_error_t *(*svn_ra_invalidate_wc_props_func_t)(void *baton, const char *path, const char *name, apr_pool_t *pool); /** This is a function type which allows the RA layer to fetch the * cached pristine file contents whose checksum is @a checksum, if * any. @a *contents will be a read stream containing those contents * if they are found; NULL otherwise. * * @since New in 1.8. */ typedef svn_error_t * (*svn_ra_get_wc_contents_func_t)(void *baton, svn_stream_t **contents, const svn_checksum_t *checksum, apr_pool_t *pool); /** A function type for retrieving the youngest revision from a repos. * @deprecated Provided for backward compatibility with the 1.8 API. */ /* ### It seems this type was never used by the API, since 1.0.0. */ typedef svn_error_t *(*svn_ra_get_latest_revnum_func_t)( void *session_baton, svn_revnum_t *latest_revnum); /** A function type which allows the RA layer to ask about any * customizations to the client name string. This is primarily used * by HTTP-based RA layers wishing to extend the string reported to * Apache/mod_dav_svn via the User-agent HTTP header. * * @since New in 1.5. */ typedef svn_error_t *(*svn_ra_get_client_string_func_t)(void *baton, const char **name, apr_pool_t *pool); /** * A callback function type for use in @c get_file_revs. * @a baton is provided by the caller, @a path is the pathname of the file * in revision @a rev and @a rev_props are the revision properties. * If @a delta_handler and @a delta_baton are non-NULL, they may be set to a * handler/baton which will be called with the delta between the previous * revision and this one after the return of this callback. They may be * left as NULL/NULL. * @a prop_diffs is an array of svn_prop_t elements indicating the property * delta for this and the previous revision. * @a pool may be used for temporary allocations, but you can't rely * on objects allocated to live outside of this particular call and the * immediately following calls to @a *delta_handler, if any. * * @since New in 1.1. */ typedef svn_error_t *(*svn_ra_file_rev_handler_t)( void *baton, const char *path, svn_revnum_t rev, apr_hash_t *rev_props, svn_txdelta_window_handler_t *delta_handler, void **delta_baton, apr_array_header_t *prop_diffs, apr_pool_t *pool); /** * Callback function type for locking and unlocking actions. * * @since New in 1.2. * * @a do_lock is TRUE when locking @a path, and FALSE * otherwise. * * @a lock is a lock for @a path or NULL if @a do_lock is FALSE or @a ra_err is * non-NULL. * * @a ra_err is NULL unless the ra layer encounters a locking related * error which it passes back for notification purposes. The caller * is responsible for clearing @a ra_err after the callback is run. * * @a baton is a closure object; it should be provided by the * implementation, and passed by the caller. @a pool may be used for * temporary allocation. */ typedef svn_error_t *(*svn_ra_lock_callback_t)(void *baton, const char *path, svn_boolean_t do_lock, const svn_lock_t *lock, svn_error_t *ra_err, apr_pool_t *pool); /** * Callback function type for progress notification. * * @a progress is the number of bytes already transferred, @a total is * the total number of bytes to transfer or -1 if it's not known, @a * baton is the callback baton. * * @since New in 1.3. */ typedef void (*svn_ra_progress_notify_func_t)(apr_off_t progress, apr_off_t total, void *baton, apr_pool_t *pool); /** * Callback function type for replay_range actions. * * This callback function should provide replay_range with an editor which * will be driven with the received replay reports from the master repository. * * @a revision is the target revision number of the received replay report. * * @a *editor and @a *edit_baton should provided by the callback implementation. * * @a replay_baton is the baton as originally passed to replay_range. * * @a revprops contains key/value pairs for each revision properties for this * revision. * * @since New in 1.5. */ typedef svn_error_t *(*svn_ra_replay_revstart_callback_t)( svn_revnum_t revision, void *replay_baton, const svn_delta_editor_t **editor, void **edit_baton, apr_hash_t *rev_props, apr_pool_t *pool); /** * Callback function type for replay_range actions. * * This callback function should close the editor. * * @a revision is the target revision number of the received replay report. * * @a editor and @a edit_baton are the values provided by the REVSTART callback. * * @a replay_baton is the baton as originally passed to replay_range. * * @a revprops contains key/value pairs for each revision properties for this * revision. * * @since New in 1.5. */ typedef svn_error_t *(*svn_ra_replay_revfinish_callback_t)( svn_revnum_t revision, void *replay_baton, const svn_delta_editor_t *editor, void *edit_baton, apr_hash_t *rev_props, apr_pool_t *pool); /** * Callback function that checks if an ra_svn tunnel called * @a tunnel_name is handled by the callbakcs or the default * implementation. * * @a tunnel_baton is the baton as originally passed to ra_open. * * @since New in 1.9. */ typedef svn_boolean_t (*svn_ra_check_tunnel_func_t)( void *tunnel_baton, const char *tunnel_name); /** * Callback function for closing a tunnel in ra_svn. * * This function will be called when the pool that owns the tunnel * connection is cleared or destroyed. * * @a close_baton is the baton as returned from the * svn_ra_open_tunnel_func_t. * * @a tunnel_baton was returned by the open-tunnel callback. * * @since New in 1.9. */ typedef void (*svn_ra_close_tunnel_func_t)( void *close_baton, void *tunnel_baton); /** * Callback function for opening a tunnel in ra_svn. * * Given the @a tunnel_name, tunnel @a user and server @a hostname and * @a port, open a tunnel to the server and return its file handles, * which are owned by @a pool, in @a request and @a response. * * @a request and @a response represent the standard input and output, * respectively, of the process on the other end of the tunnel. * * If @a *close_func is set it will be called with @a close_baton when * the tunnel is closed. * * The optional @a cancel_func callback can be invoked as usual to allow * the user to preempt potentially lengthy operations. * * @a tunnel_baton is the baton as set in the callbacks. * * @since New in 1.9. */ typedef svn_error_t *(*svn_ra_open_tunnel_func_t)( svn_stream_t **request, svn_stream_t **response, svn_ra_close_tunnel_func_t *close_func, void **close_baton, void *tunnel_baton, const char *tunnel_name, const char *user, const char *hostname, int port, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool); /** * The update Reporter. * * A vtable structure which allows a working copy to describe a subset * (or possibly all) of its working-copy to an RA layer, for the * purposes of an update, switch, status, or diff operation. * * Paths for report calls are relative to the target (not the anchor) * of the operation. Report calls must be made in depth-first order: * parents before children, all children of a parent before any * siblings of the parent. The first report call must be a set_path * with a @a path argument of "" and a valid revision. (If the target * of the operation is locally deleted or missing, use the anchor's * revision.) If the target of the operation is deleted or switched * relative to the anchor, follow up the initial set_path call with a * link_path or delete_path call with a @a path argument of "" to * indicate that. In no other case may there be two report * descriptions for the same path. If the target of the operation is * a locally added file or directory (which previously did not exist), * it may be reported as having revision 0 or as having the parent * directory's revision. * * @since New in 1.5. */ typedef struct svn_ra_reporter3_t { /** Describe a working copy @a path as being at a particular * @a revision and having depth @a depth. * * @a revision may be SVN_INVALID_REVNUM if (for example) @a path * represents a locally-added path with no revision number, or @a * depth is @c svn_depth_exclude. * * @a path may not be underneath a path on which set_path() was * previously called with @c svn_depth_exclude in this report. * * If @a start_empty is set and @a path is a directory, the * implementor should assume the directory has no entries or props. * * This will *override* any previous set_path() calls made on parent * paths. @a path is relative to the URL specified in svn_ra_open5(). * * If @a lock_token is non-NULL, it is the lock token for @a path in the WC. * * All temporary allocations are done in @a pool. */ svn_error_t *(*set_path)(void *report_baton, const char *path, svn_revnum_t revision, svn_depth_t depth, svn_boolean_t start_empty, const char *lock_token, apr_pool_t *pool); /** Describing a working copy @a path as missing. * * @a path may not be underneath a path on which set_path() was * previously called with @c svn_depth_exclude in this report. * * All temporary allocations are done in @a pool. */ svn_error_t *(*delete_path)(void *report_baton, const char *path, apr_pool_t *pool); /** Like set_path(), but differs in that @a path in the working copy * (relative to the root of the report driver) isn't a reflection of * @a path in the repository (relative to the URL specified when * opening the RA layer), but is instead a reflection of a different * repository @a url at @a revision, and has depth @a depth. * * @a path may not be underneath a path on which set_path() was * previously called with @c svn_depth_exclude in this report. * * If @a start_empty is set and @a path is a directory, * the implementor should assume the directory has no entries or props. * * If @a lock_token is non-NULL, it is the lock token for @a path in the WC. * * All temporary allocations are done in @a pool. */ svn_error_t *(*link_path)(void *report_baton, const char *path, const char *url, svn_revnum_t revision, svn_depth_t depth, svn_boolean_t start_empty, const char *lock_token, apr_pool_t *pool); /** WC calls this when the state report is finished; any directories * or files not explicitly `set' are assumed to be at the * baseline revision originally passed into do_update(). No other * reporting functions, including abort_report, should be called after * calling this function. */ svn_error_t *(*finish_report)(void *report_baton, apr_pool_t *pool); /** If an error occurs during a report, this routine should cause the * filesystem transaction to be aborted & cleaned up. No other reporting * functions should be called after calling this function. */ svn_error_t *(*abort_report)(void *report_baton, apr_pool_t *pool); } svn_ra_reporter3_t; /** * Similar to @c svn_ra_reporter3_t, but without support for depths. * * @deprecated Provided for backward compatibility with the 1.4 API. */ typedef struct svn_ra_reporter2_t { /** Similar to the corresponding field in @c svn_ra_reporter3_t, but * with @a depth always set to @c svn_depth_infinity. */ svn_error_t *(*set_path)(void *report_baton, const char *path, svn_revnum_t revision, svn_boolean_t start_empty, const char *lock_token, apr_pool_t *pool); /** Same as the corresponding field in @c svn_ra_reporter3_t. */ svn_error_t *(*delete_path)(void *report_baton, const char *path, apr_pool_t *pool); /** Similar to the corresponding field in @c svn_ra_reporter3_t, but * with @a depth always set to @c svn_depth_infinity. */ svn_error_t *(*link_path)(void *report_baton, const char *path, const char *url, svn_revnum_t revision, svn_boolean_t start_empty, const char *lock_token, apr_pool_t *pool); /** Same as the corresponding field in @c svn_ra_reporter3_t. */ svn_error_t *(*finish_report)(void *report_baton, apr_pool_t *pool); /** Same as the corresponding field in @c svn_ra_reporter3_t. */ svn_error_t *(*abort_report)(void *report_baton, apr_pool_t *pool); } svn_ra_reporter2_t; /** * Similar to @c svn_ra_reporter2_t, but without support for lock tokens. * * @deprecated Provided for backward compatibility with the 1.1 API. */ typedef struct svn_ra_reporter_t { /** Similar to the corresponding field in @c svn_ra_reporter2_t, but * with @a lock_token always set to NULL. */ svn_error_t *(*set_path)(void *report_baton, const char *path, svn_revnum_t revision, svn_boolean_t start_empty, apr_pool_t *pool); /** Same as the corresponding field in @c svn_ra_reporter2_t. */ svn_error_t *(*delete_path)(void *report_baton, const char *path, apr_pool_t *pool); /** Similar to the corresponding field in @c svn_ra_reporter2_t, but * with @a lock_token always set to NULL. */ svn_error_t *(*link_path)(void *report_baton, const char *path, const char *url, svn_revnum_t revision, svn_boolean_t start_empty, apr_pool_t *pool); /** Same as the corresponding field in @c svn_ra_reporter2_t. */ svn_error_t *(*finish_report)(void *report_baton, apr_pool_t *pool); /** Same as the corresponding field in @c svn_ra_reporter2_t. */ svn_error_t *(*abort_report)(void *report_baton, apr_pool_t *pool); } svn_ra_reporter_t; /** A collection of callbacks implemented by libsvn_client which allows * an RA layer to "pull" information from the client application, or * possibly store information. libsvn_client passes this vtable to * svn_ra_open5(). * * Each routine takes a @a callback_baton originally provided with the * vtable. * * Clients must use svn_ra_create_callbacks() to allocate and * initialize this structure. * * @since New in 1.3. */ typedef struct svn_ra_callbacks2_t { /** Open a unique temporary file for writing in the working copy. * This file will be automatically deleted when @a fp is closed. * * @deprecated This callback should no longer be used by RA layers. */ svn_error_t *(*open_tmp_file)(apr_file_t **fp, void *callback_baton, apr_pool_t *pool); /** An authentication baton, created by the application, which is * capable of retrieving all known types of credentials. */ svn_auth_baton_t *auth_baton; /*** The following items may be set to NULL to disallow the RA layer to perform the respective operations of the vtable functions. Perhaps WC props are not defined or are in invalid for this session, or perhaps the commit operation this RA session will perform is a server-side only one that shouldn't do post-commit processing on a working copy path. ***/ /** Fetch working copy properties. * * @note we might have a problem if the RA layer ever wants a property * that corresponds to a different revision of the file than * what is in the WC. we'll cross that bridge one day... */ svn_ra_get_wc_prop_func_t get_wc_prop; /** Immediately set new values for working copy properties. */ svn_ra_set_wc_prop_func_t set_wc_prop; /** Schedule new values for working copy properties. */ svn_ra_push_wc_prop_func_t push_wc_prop; /** Invalidate working copy properties. */ svn_ra_invalidate_wc_props_func_t invalidate_wc_props; /** Notification callback used for progress information. * May be NULL if not used. */ svn_ra_progress_notify_func_t progress_func; /** Notification callback baton, used with progress_func. */ void *progress_baton; /** Cancellation function * * As its baton, the general callback baton is used * * @since New in 1.5 */ svn_cancel_func_t cancel_func; /** Client string customization callback function * @since New in 1.5 */ svn_ra_get_client_string_func_t get_client_string; /** Working copy file content fetching function. * @since New in 1.8. */ svn_ra_get_wc_contents_func_t get_wc_contents; /** Check-tunnel callback * * If not @c NULL, and open_tunnel_func is also not @c NULL, this * callback will be invoked to check if open_tunnel_func should be * used to create a specific tunnel, or if the default tunnel * implementation (either built-in or configured in the client * configuration file) should be used instead. * @since New in 1.9. */ svn_ra_check_tunnel_func_t check_tunnel_func; /** Open-tunnel callback * * If not @c NULL, this callback will be invoked to create a tunnel * for a ra_svn connection that needs one, overriding any tunnel * definitions in the client config file. This callback is used only * for ra_svn and ignored by the other RA modules. * @since New in 1.9. */ svn_ra_open_tunnel_func_t open_tunnel_func; /** A baton used with open_tunnel_func and close_tunnel_func. * @since New in 1.9. */ void *tunnel_baton; } svn_ra_callbacks2_t; /** Similar to svn_ra_callbacks2_t, except that the progress * notification function and baton is missing. * * @deprecated Provided for backward compatibility with the 1.2 API. */ typedef struct svn_ra_callbacks_t { svn_error_t *(*open_tmp_file)(apr_file_t **fp, void *callback_baton, apr_pool_t *pool); svn_auth_baton_t *auth_baton; svn_ra_get_wc_prop_func_t get_wc_prop; svn_ra_set_wc_prop_func_t set_wc_prop; svn_ra_push_wc_prop_func_t push_wc_prop; svn_ra_invalidate_wc_props_func_t invalidate_wc_props; } svn_ra_callbacks_t; /*----------------------------------------------------------------------*/ /* Public Interfaces. */ /** * Initialize the RA library. This function must be called before using * any function in this header, except the deprecated APIs based on * @c svn_ra_plugin_t, or svn_ra_version(). This function must not be called * simultaneously in multiple threads. @a pool must live * longer than any open RA sessions. * * @since New in 1.2. */ svn_error_t * svn_ra_initialize(apr_pool_t *pool); /** Initialize a callback structure. * Set @a *callbacks to a ra callbacks object, allocated in @a pool. * * Clients must use this function to allocate and initialize @c * svn_ra_callbacks2_t structures. * * @since New in 1.3. */ svn_error_t * svn_ra_create_callbacks(svn_ra_callbacks2_t **callbacks, apr_pool_t *pool); /** * A repository access session. This object is used to perform requests * to a repository, identified by a URL. * * @since New in 1.2. */ typedef struct svn_ra_session_t svn_ra_session_t; /** * Open a repository access session to the repository at @a repos_URL, * or inform the caller regarding a correct URL by which to access * that repository. * * If @a repos_URL can be used successfully to access the repository, * set @a *session_p to an opaque object representing a repository * session for the repository and (if @a corrected_url is non-NULL) * set @a *corrected_url to NULL. If there's a better URL that the * caller should try and @a corrected_url is non-NULL, set * @a *session_p to NULL and @a *corrected_url to the corrected URL. If * there's a better URL that the caller should try, and @a * corrected_url is NULL, return an #SVN_ERR_RA_SESSION_URL_MISMATCH * error. Allocate all returned items in @a pool. * * The @a repos_URL need not point to the root of the repository: subject * to authorization, it may point to any path within the repository, even * a path at which no node exists in the repository. The session will * remember this URL as its "session URL" (also called "session root URL"), * until changed by svn_ra_reparent(). Many RA functions take or return * paths that are relative to the session URL. * * If a @a corrected_url is returned, it will point to the same path * within the new repository root URL that @a repos_URL pointed to within * the old repository root URL. * * If @a redirect_url is not NULL and a @corrected_url is returned, then * @a redirect_url contains a non-canonicalized version of @a corrected_url, * as communicated in the network protocol used by the RA provider. * THe @a redirect_url should be used for to detect redirection loops. * Canonicalization may change the protocol-level URL in a way that * makes detection of redirect loops impossible in some cases since URLs which * are different at the protocol layer could map to the same canonicalized URL. * * Return @c SVN_ERR_RA_UUID_MISMATCH if @a uuid is non-NULL and not equal * to the UUID of the repository at @c repos_URL. * * @a callbacks/@a callback_baton is a table of callbacks provided by the * client; see @c svn_ra_callbacks2_t. * * @a config is a hash mapping const char * keys to * @c svn_config_t * values. For example, the @c svn_config_t for the * "~/.subversion/config" file is under the key "config". @a config may * be NULL. This function examines some config settings under the * "servers" key (if present) before loading the required RA module, and * the RA module may also examine any config settings. * * All RA requests require a session; they will continue to * use @a pool for memory allocation. * * @see svn_client_open_ra_session(). * * @since New in 1.14. */ svn_error_t * svn_ra_open5(svn_ra_session_t **session_p, const char **corrected_url, const char **redirect_url, const char *repos_URL, const char *uuid, const svn_ra_callbacks2_t *callbacks, void *callback_baton, apr_hash_t *config, apr_pool_t *pool); /** Similar to svn_ra_open5(), but with @a redirect_url always passed * as @c NULL. * * @since New in 1.7. * @deprecated Provided for backward compatibility with the 1.13 API. */ SVN_DEPRECATED svn_error_t * svn_ra_open4(svn_ra_session_t **session_p, const char **corrected_url, const char *repos_URL, const char *uuid, const svn_ra_callbacks2_t *callbacks, void *callback_baton, apr_hash_t *config, apr_pool_t *pool); /** Similar to svn_ra_open4(), but with @a corrected_url always passed * as @c NULL. * * @since New in 1.5. * @deprecated Provided for backward compatibility with the 1.6 API. */ SVN_DEPRECATED svn_error_t * svn_ra_open3(svn_ra_session_t **session_p, const char *repos_URL, const char *uuid, const svn_ra_callbacks2_t *callbacks, void *callback_baton, apr_hash_t *config, apr_pool_t *pool); /** * Similar to svn_ra_open3(), but with @a uuid set to @c NULL. * * @since New in 1.3. * @deprecated Provided for backward compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_open2(svn_ra_session_t **session_p, const char *repos_URL, const svn_ra_callbacks2_t *callbacks, void *callback_baton, apr_hash_t *config, apr_pool_t *pool); /** * @see svn_ra_open2(). * @since New in 1.2. * @deprecated Provided for backward compatibility with the 1.2 API. */ SVN_DEPRECATED svn_error_t * svn_ra_open(svn_ra_session_t **session_p, const char *repos_URL, const svn_ra_callbacks_t *callbacks, void *callback_baton, apr_hash_t *config, apr_pool_t *pool); /** Change the root URL of an open @a ra_session to point to a new path in the * same repository. @a url is the new root URL. Use @a pool for * temporary allocations. * * If @a url has a different repository root than the current session * URL, return @c SVN_ERR_RA_ILLEGAL_URL. * * @since New in 1.4. */ svn_error_t * svn_ra_reparent(svn_ra_session_t *ra_session, const char *url, apr_pool_t *pool); /** Set @a *url to the session URL -- the URL to which @a ra_session was * opened or most recently reparented. * * @since New in 1.5. */ svn_error_t * svn_ra_get_session_url(svn_ra_session_t *ra_session, const char **url, apr_pool_t *pool); /** Convert @a url into a path relative to the session URL of @a ra_session, * setting @a *rel_path to that value. If @a url is not * a child of the session URL, return @c SVN_ERR_RA_ILLEGAL_URL. * * The returned path is uri decoded to allow using it with the ra or other * apis as a valid relpath. * * @since New in 1.7. */ svn_error_t * svn_ra_get_path_relative_to_session(svn_ra_session_t *ra_session, const char **rel_path, const char *url, apr_pool_t *pool); /** Convert @a url into a path relative to the repository root URL of * the repository with which @a ra_session is associated, setting @a * *rel_path to that value. If @a url is not a child of repository * root URL, return @c SVN_ERR_RA_ILLEGAL_URL. * * The returned path is uri decoded to allow using it with the ra or other * apis as a valid relpath. * * @since New in 1.7. */ svn_error_t * svn_ra_get_path_relative_to_root(svn_ra_session_t *ra_session, const char **rel_path, const char *url, apr_pool_t *pool); /** * Get the latest revision number from the repository of @a session. * * Use @a pool for memory allocation. * * @since New in 1.2. */ svn_error_t * svn_ra_get_latest_revnum(svn_ra_session_t *session, svn_revnum_t *latest_revnum, apr_pool_t *pool); /** * Get the latest revision number at time @a tm in the repository of * @a session. * * Use @a pool for memory allocation. * * @since New in 1.2. */ svn_error_t * svn_ra_get_dated_revision(svn_ra_session_t *session, svn_revnum_t *revision, apr_time_t tm, apr_pool_t *pool); /** * Set the property @a name to @a value on revision @a rev in the repository * of @a session. * * If @a value is @c NULL, delete the named revision property. * * If the server advertises the #SVN_RA_CAPABILITY_ATOMIC_REVPROPS capability * and @a old_value_p is not @c NULL, then changing the property will fail with * an error chain that contains #SVN_ERR_FS_PROP_BASEVALUE_MISMATCH if the * present value of the property is not @a *old_value_p. (This is an atomic * test-and-set). * @a *old_value_p may be @c NULL, representing that the property must be not * already set. * * If the capability is not advertised, then @a old_value_p MUST be @c NULL. * * Please note that properties attached to revisions are @em unversioned. * * Use @a pool for memory allocation. * * @see svn_fs_change_rev_prop2(), svn_error_find_cause(). * * @since New in 1.7. */ svn_error_t * svn_ra_change_rev_prop2(svn_ra_session_t *session, svn_revnum_t rev, const char *name, const svn_string_t *const *old_value_p, const svn_string_t *value, apr_pool_t *pool); /** * Similar to svn_ra_change_rev_prop2(), but with @a old_value_p set * to @c NULL. * * @since New in 1.2. * @deprecated Provided for backward compatibility with the 1.6 API. */ SVN_DEPRECATED svn_error_t * svn_ra_change_rev_prop(svn_ra_session_t *session, svn_revnum_t rev, const char *name, const svn_string_t *value, apr_pool_t *pool); /** * Set @a *props to the list of unversioned properties attached to revision * @a rev in the repository of @a session. The hash maps * (const char *) names to (@c svn_string_t *) values. * * Use @a pool for memory allocation. * * @since New in 1.2. */ svn_error_t * svn_ra_rev_proplist(svn_ra_session_t *session, svn_revnum_t rev, apr_hash_t **props, apr_pool_t *pool); /** * Set @a *value to the value of unversioned property @a name attached to * revision @a rev in the repository of @a session. If @a rev has no * property by that name, set @a *value to @c NULL. * * Use @a pool for memory allocation. * * @since New in 1.2. */ svn_error_t * svn_ra_rev_prop(svn_ra_session_t *session, svn_revnum_t rev, const char *name, svn_string_t **value, apr_pool_t *pool); /** * Set @a *editor and @a *edit_baton to an editor for committing * changes to the repository of @a session, setting the revision * properties from @a revprop_table. The revisions being committed * against are passed to the editor functions, starting with the rev * argument to @c open_root. The path root of the commit is the @a * session's URL. * * @a revprop_table is a hash mapping const char * property * names to @c svn_string_t property values. The commit log message * is expected to be in the @c SVN_PROP_REVISION_LOG element. @a * revprop_table can not contain either of @c SVN_PROP_REVISION_DATE * or @c SVN_PROP_REVISION_AUTHOR. * * Before @c close_edit returns, but after the commit has succeeded, * it will invoke @a commit_callback (if non-NULL) with filled-in * #svn_commit_info_t *, @a commit_baton, and @a pool or some subpool * thereof as arguments. If @a commit_callback returns an error, that error * will be returned from @c * close_edit, otherwise @c close_edit will return * successfully (unless it encountered an error before invoking * @a commit_callback). * * The callback will not be called if the commit was a no-op * (i.e. nothing was committed); * * @a lock_tokens, if non-NULL, is a hash mapping const char * * paths (relative to the URL of @a session) to * const char * lock tokens. The server checks that the * correct token is provided for each committed, locked path. @a lock_tokens * must live during the whole commit operation. * * If @a keep_locks is @c TRUE, then do not release locks on * committed objects. Else, automatically release such locks. * * The caller may not perform any RA operations using @a session before * finishing the edit. * * Use @a pool for memory allocation. * * @since New in 1.5. * * @note Like most commit editors, the returned editor requires that the * @c copyfrom_path parameter passed to its @c add_file and @c add_directory * methods is a URL, not a relative path. */ svn_error_t * svn_ra_get_commit_editor3(svn_ra_session_t *session, const svn_delta_editor_t **editor, void **edit_baton, apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, apr_pool_t *pool); /** * Same as svn_ra_get_commit_editor3(), but with @c revprop_table set * to a hash containing the @c SVN_PROP_REVISION_LOG property set * to the value of @a log_msg. * * @since New in 1.4. * * @deprecated Provided for backward compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_commit_editor2(svn_ra_session_t *session, const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, svn_commit_callback2_t commit_callback, void *commit_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, apr_pool_t *pool); /** * Same as svn_ra_get_commit_editor2(), but uses @c svn_commit_callback_t. * * @since New in 1.2. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_commit_editor(svn_ra_session_t *session, const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, svn_commit_callback_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, apr_pool_t *pool); /** * Fetch the contents and properties of file @a path at @a revision. * @a revision may be SVN_INVALID_REVNUM, indicating that the HEAD * revision should be used. Interpret @a path relative to the URL in * @a session. Use @a pool for all allocations. * * If @a revision is @c SVN_INVALID_REVNUM and @a fetched_rev is not * @c NULL, then set @a *fetched_rev to the actual revision that was * retrieved. * * If @a stream is non @c NULL, push the contents of the file at @a * stream, do not call svn_stream_close() when finished. * * If @a props is non @c NULL, set @a *props to contain the properties of * the file. This means @em all properties: not just ones controlled by * the user and stored in the repository fs, but non-tweakable ones * generated by the SCM system itself (e.g. 'wcprops', 'entryprops', * etc.) The keys are const char *, values are * @c svn_string_t *. * * The stream handlers for @a stream may not perform any RA * operations using @a session. * * @since New in 1.2. */ svn_error_t * svn_ra_get_file(svn_ra_session_t *session, const char *path, svn_revnum_t revision, svn_stream_t *stream, svn_revnum_t *fetched_rev, apr_hash_t **props, apr_pool_t *pool); /** * If @a dirents is non @c NULL, set @a *dirents to contain all the entries * of directory @a path at @a revision. The keys of @a dirents will be * entry names (const char *), and the values dirents * (@c svn_dirent_t *). Use @a pool for all allocations. * * @a dirent_fields controls which portions of the @c svn_dirent_t * objects are filled in. To have them completely filled in just pass * @c SVN_DIRENT_ALL, otherwise pass the bitwise OR of all the @c SVN_DIRENT_ * fields you would like to have returned to you. * * @a path is interpreted relative to the URL in @a session. * * If @a revision is @c SVN_INVALID_REVNUM (meaning 'head') and * @a fetched_rev is not @c NULL, then this function will set * @a *fetched_rev to the actual revision that was retrieved. (Some * callers want to know, and some don't.) * * If @a props is non @c NULL, set @a *props to contain the properties of * the directory, including properties that are non-tweakable and * generated by the SCM system itself (such as #svn_prop_wc_kind and * #svn_prop_entry_kind properties). The keys are const char *, * values are @c svn_string_t *. * * @since New in 1.4. */ svn_error_t * svn_ra_get_dir2(svn_ra_session_t *session, apr_hash_t **dirents, svn_revnum_t *fetched_rev, apr_hash_t **props, const char *path, svn_revnum_t revision, apr_uint32_t dirent_fields, apr_pool_t *pool); /** * Similar to @c svn_ra_get_dir2, but with @c SVN_DIRENT_ALL for the * @a dirent_fields parameter. * * @since New in 1.2. * * @deprecated Provided for compatibility with the 1.3 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_dir(svn_ra_session_t *session, const char *path, svn_revnum_t revision, apr_hash_t **dirents, svn_revnum_t *fetched_rev, apr_hash_t **props, apr_pool_t *pool); /** * Callback type to be used with svn_ra_list(). It will be invoked for * every directory entry found. * * The full path of the entry is given in @a rel_path and @a dirent contains * various additional information. Only the elements of @a dirent specified * by the @a dirent_fields argument to svn_ra_list() will be valid. * * @a baton is the user-provided receiver baton. @a scratch_pool may be * used for temporary allocations. * * @since New in 1.10. */ typedef svn_error_t *(* svn_ra_dirent_receiver_t)(const char *rel_path, svn_dirent_t *dirent, void *baton, apr_pool_t *scratch_pool); /** * Efficiently list everything within a sub-tree. Specify a glob pattern * to search for specific files and folders. * * In @a session, walk the sub-tree starting at @a path at @a revision down * to the given @a depth. For each directory entry found, @a receiver will * be called with @a receiver_baton. The starting @a path will be reported * as well. Because retrieving elements of a #svn_dirent_t can be * expensive, you need to select them individually via flags set in * @a dirent_fields. * * @a patterns is an optional array of const char *. If it is * not @c NULL, only those directory entries will be reported whose last * path segment matches at least one of these patterns. This feature uses * apr_fnmatch() for glob matching and requiring '.' to matched by dots * in the path. * * @a path must point to a directory and @a depth must be at least * #svn_depth_empty. * * If the server doesn't support the 'list' command, return * #SVN_ERR_UNSUPPORTED_FEATURE in preference to any other error that * might otherwise be returned. * * Use @a scratch_pool for temporary memory allocation. * * @since New in 1.10. */ svn_error_t * svn_ra_list(svn_ra_session_t *session, const char *path, svn_revnum_t revision, const apr_array_header_t *patterns, svn_depth_t depth, apr_uint32_t dirent_fields, svn_ra_dirent_receiver_t receiver, void *receiver_baton, apr_pool_t *scratch_pool); /** * Set @a *catalog to a mergeinfo catalog for the paths in @a paths. * If no mergeinfo is available, set @a *catalog to @c NULL. The * requested mergeinfo hashes are for @a paths (which are relative to * @a session's URL) in @a revision. If one of the paths does not exist * in that revision, return SVN_ERR_FS_NOT_FOUND. * * @a inherit indicates whether explicit, explicit or inherited, or * only inherited mergeinfo for @a paths is retrieved. * * If @a include_descendants is TRUE, then additionally return the * mergeinfo for any descendant of any element of @a paths which has * the @c SVN_PROP_MERGEINFO property explicitly set on it. (Note * that inheritance is only taken into account for the elements in @a * paths; descendants of the elements in @a paths which get their * mergeinfo via inheritance are not included in @a *catalog.) * * Allocate the returned values in @a pool. * * If @a revision is @c SVN_INVALID_REVNUM, it defaults to youngest. * * If the server doesn't support retrieval of mergeinfo (which can * happen even for file:// URLs, if the repository itself hasn't been * upgraded), return @c SVN_ERR_UNSUPPORTED_FEATURE in preference to * any other error that might otherwise be returned. * * @since New in 1.5. */ svn_error_t * svn_ra_get_mergeinfo(svn_ra_session_t *session, svn_mergeinfo_catalog_t *catalog, const apr_array_header_t *paths, svn_revnum_t revision, svn_mergeinfo_inheritance_t inherit, svn_boolean_t include_descendants, apr_pool_t *pool); /** * Ask the RA layer to update a working copy to a new revision. * * The client initially provides an @a update_editor/@a update_baton to the * RA layer; this editor contains knowledge of where the change will * begin in the working copy (when @c open_root() is called). * * In return, the client receives a @a reporter/@a report_baton. The * client then describes its working copy by making calls into the * @a reporter. * * When finished, the client calls @a reporter->finish_report(). The * RA layer then does a complete drive of @a update_editor, ending with * @a update_editor->close_edit(), to update the working copy. * * @a update_target is an optional single path component to restrict * the scope of the update to just that entry (in the directory * represented by the @a session's URL). If @a update_target is the * empty string, the entire directory is updated. * * Update the target only as deeply as @a depth indicates. * * If @a send_copyfrom_args is TRUE, then ask the server to send * copyfrom arguments to add_file() and add_directory() when possible. * (Note: this means that any subsequent txdeltas coming from the * server are presumed to apply against the copied file!) * * Use @a ignore_ancestry to control whether or not items being * updated will be checked for relatedness first. Unrelated items * are typically transmitted to the editor as a deletion of one thing * and the addition of another, but if this flag is @c TRUE, * unrelated items will be diffed as if they were related. * * The working copy will be updated to @a revision_to_update_to, or the * "latest" revision if this arg is invalid. * * The caller may not perform any RA operations using @a session before * finishing the report, and may not perform any RA operations using * @a session from within the editing operations of @a update_editor. * * Allocate @a *reporter and @a *report_baton in @a result_pool. Use * @a scratch_pool for temporary allocations. * * @note The reporter provided by this function does NOT supply copy- * from information to the diff editor callbacks. * * @note In order to prevent pre-1.5 servers from doing more work than * needed, and sending too much data back, a pre-1.5 'recurse' * directive may be sent to the server, based on @a depth. * * @note Pre Subversion 1.8 svnserve based servers never ignore ancestry. * * @note This differs from calling svn_ra_do_switch3() with the current * URL of the target node. Update changes only the revision numbers, * leaving any switched subtrees still switched, whereas switch changes * every node in the tree to a child of the same URL. * * @since New in 1.8. */ svn_error_t * svn_ra_do_update3(svn_ra_session_t *session, const svn_ra_reporter3_t **reporter, void **report_baton, svn_revnum_t revision_to_update_to, const char *update_target, svn_depth_t depth, svn_boolean_t send_copyfrom_args, svn_boolean_t ignore_ancestry, const svn_delta_editor_t *update_editor, void *update_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /** * Similar to svn_ra_do_update3(), but always ignoring ancestry. * * @since New in 1.5. * @deprecated Provided for compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_update2(svn_ra_session_t *session, const svn_ra_reporter3_t **reporter, void **report_baton, svn_revnum_t revision_to_update_to, const char *update_target, svn_depth_t depth, svn_boolean_t send_copyfrom_args, const svn_delta_editor_t *update_editor, void *update_baton, apr_pool_t *pool); /** * Similar to svn_ra_do_update2(), but taking @c svn_ra_reporter2_t * instead of @c svn_ra_reporter3_t; if @a recurse is true, pass @c * svn_depth_infinity for @a depth, else pass @c svn_depth_files; and * with @a send_copyfrom_args always false. * * @deprecated Provided for compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_update(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision_to_update_to, const char *update_target, svn_boolean_t recurse, const svn_delta_editor_t *update_editor, void *update_baton, apr_pool_t *pool); /** * Ask the RA layer to switch a working copy to a new revision and URL. * * This is similar to svn_ra_do_update3(), but also changes the URL of * every node in the target tree to a child of the @a switch_url. In * contrast, update changes only the revision numbers, leaving any * switched subtrees still switched. * * @note Pre Subversion 1.8 svnserve based servers always ignore ancestry * and never send copyfrom data. * * @since New in 1.8. */ svn_error_t * svn_ra_do_switch3(svn_ra_session_t *session, const svn_ra_reporter3_t **reporter, void **report_baton, svn_revnum_t revision_to_switch_to, const char *switch_target, svn_depth_t depth, const char *switch_url, svn_boolean_t send_copyfrom_args, svn_boolean_t ignore_ancestry, const svn_delta_editor_t *switch_editor, void *switch_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /** * Similar to svn_ra_do_switch3(), but always ignoring ancestry and * never sending copyfrom_args. * * @since New in 1.5. * @deprecated Provided for compatibility with the 1.7 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_switch2(svn_ra_session_t *session, const svn_ra_reporter3_t **reporter, void **report_baton, svn_revnum_t revision_to_switch_to, const char *switch_target, svn_depth_t depth, const char *switch_url, const svn_delta_editor_t *switch_editor, void *switch_baton, apr_pool_t *pool); /** * Similar to svn_ra_do_switch2(), but taking @c svn_ra_reporter2_t * instead of @c svn_ra_reporter3_t, and therefore only able to report * @c svn_depth_infinity for depths. The switch itself is performed * according to @a recurse: if TRUE, then use @c svn_depth_infinity * for @a depth, else use @c svn_depth_files. * * @deprecated Provided for compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_switch(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision_to_switch_to, const char *switch_target, svn_boolean_t recurse, const char *switch_url, const svn_delta_editor_t *switch_editor, void *switch_baton, apr_pool_t *pool); /** * Ask the RA layer to describe the status of a working copy with respect * to @a revision of the repository (or HEAD, if @a revision is invalid). * * The client initially provides a @a status_editor/@a status_baton to the RA * layer; this editor contains knowledge of where the change will * begin in the working copy (when open_root() is called). * * In return, the client receives a @a reporter/@a report_baton. The * client then describes its working copy by making calls into the * @a reporter. * * When finished, the client calls @a reporter->finish_report(). The RA * layer then does a complete drive of @a status_editor, ending with * close_edit(), to report, essentially, what would be modified in * the working copy were the client to call do_update(). * @a status_target is an optional single path component will restrict * the scope of the status report to an entry in the directory * represented by the @a session's URL, or empty if the entire directory * is meant to be examined. * * Get status as deeply as @a depth indicates. If @a depth is * #svn_depth_unknown, get the status down to the ambient depth of the * working copy. If @a depth is deeper than the working copy, include changes * that would be needed to populate the working copy to that depth. * * The caller may not perform any RA operations using @a session * before finishing the report, and may not perform any RA operations * using @a session from within the editing operations of @a status_editor. * * Use @a pool for memory allocation. * * @note The reporter provided by this function does NOT supply copy- * from information to the diff editor callbacks. * * @note In order to prevent pre-1.5 servers from doing more work than * needed, and sending too much data back, a pre-1.5 'recurse' * directive may be sent to the server, based on @a depth. * * @since New in 1.5. */ svn_error_t * svn_ra_do_status2(svn_ra_session_t *session, const svn_ra_reporter3_t **reporter, void **report_baton, const char *status_target, svn_revnum_t revision, svn_depth_t depth, const svn_delta_editor_t *status_editor, void *status_baton, apr_pool_t *pool); /** * Similar to svn_ra_do_status2(), but taking @c svn_ra_reporter2_t * instead of @c svn_ra_reporter3_t, and therefore only able to report * @c svn_depth_infinity for depths. The status operation itself is * performed according to @a recurse: if TRUE, then @a depth is * @c svn_depth_infinity, else it is @c svn_depth_immediates. * * @deprecated Provided for compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_status(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, const char *status_target, svn_revnum_t revision, svn_boolean_t recurse, const svn_delta_editor_t *status_editor, void *status_baton, apr_pool_t *pool); /** * Ask the RA layer to 'diff' a working copy against @a versus_url; * it's another form of svn_ra_do_update2(). * * @note This function cannot be used to diff a single file, only a * working copy directory. See the svn_ra_do_switch3() function * for more details. * * The client initially provides a @a diff_editor/@a diff_baton to the RA * layer; this editor contains knowledge of where the common diff * root is in the working copy (when open_root() is called). * * In return, the client receives a @a reporter/@a report_baton. The * client then describes its working copy by making calls into the * @a reporter. * * When finished, the client calls @a reporter->finish_report(). The * RA layer then does a complete drive of @a diff_editor, ending with * close_edit(), to transmit the diff. * * @a diff_target is an optional single path component will restrict * the scope of the diff to an entry in the directory represented by * the @a session's URL, or empty if the entire directory is meant to be * one of the diff paths. * * The working copy will be diffed against @a versus_url as it exists * in revision @a revision, or as it is in head if @a revision is * @c SVN_INVALID_REVNUM. * * Use @a ignore_ancestry to control whether or not items being * diffed will be checked for relatedness first. Unrelated items * are typically transmitted to the editor as a deletion of one thing * and the addition of another, but if this flag is @c TRUE, * unrelated items will be diffed as if they were related. * * Diff only as deeply as @a depth indicates. * * The caller may not perform any RA operations using @a session before * finishing the report, and may not perform any RA operations using * @a session from within the editing operations of @a diff_editor. * * @a text_deltas instructs the driver of the @a diff_editor to enable * the generation of text deltas. If @a text_deltas is FALSE the window * handler returned by apply_textdelta will be called once with a NULL * @c svn_txdelta_window_t pointer. * * Use @a pool for memory allocation. * * @note The reporter provided by this function does NOT supply copy- * from information to the diff editor callbacks. * * @note In order to prevent pre-1.5 servers from doing more work than * needed, and sending too much data back, a pre-1.5 'recurse' * directive may be sent to the server, based on @a depth. * * @since New in 1.5. */ svn_error_t * svn_ra_do_diff3(svn_ra_session_t *session, const svn_ra_reporter3_t **reporter, void **report_baton, svn_revnum_t revision, const char *diff_target, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t text_deltas, const char *versus_url, const svn_delta_editor_t *diff_editor, void *diff_baton, apr_pool_t *pool); /** * Similar to svn_ra_do_diff3(), but taking @c svn_ra_reporter2_t * instead of @c svn_ra_reporter3_t, and therefore only able to report * @c svn_depth_infinity for depths. Perform the diff according to * @a recurse: if TRUE, then @a depth is @c svn_depth_infinity, else * it is @c svn_depth_files. * * @deprecated Provided for compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_diff2(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision, const char *diff_target, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t text_deltas, const char *versus_url, const svn_delta_editor_t *diff_editor, void *diff_baton, apr_pool_t *pool); /** * Similar to svn_ra_do_diff2(), but with @a text_deltas set to @c TRUE. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED svn_error_t * svn_ra_do_diff(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision, const char *diff_target, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, const char *versus_url, const svn_delta_editor_t *diff_editor, void *diff_baton, apr_pool_t *pool); /** * Invoke @a receiver with @a receiver_baton on each log message from * @a start to @a end. @a start may be greater or less than @a end; * this just controls whether the log messages are processed in descending * or ascending revision number order. * * If @a start or @a end is @c SVN_INVALID_REVNUM, it defaults to youngest. * * If @a paths is non-NULL and has one or more elements, then only show * revisions in which at least one of @a paths was changed (i.e., if * file, text or props changed; if dir, props changed or an entry * was added or deleted). Each path is an const char *, relative * to the repository root of @a session. * * If @a limit is greater than zero only invoke @a receiver on the first * @a limit logs. * * If @a discover_changed_paths, then each call to @a receiver passes a * const apr_hash_t * for the receiver's @a changed_paths argument; * the hash's keys are all the paths committed in that revision, the hash's * values are const svn_log_changed_path2_t * for each committed * path. Otherwise, each call to receiver passes NULL for @a changed_paths. * * If @a strict_node_history is set, copy history will not be traversed * (if any exists) when harvesting the revision logs for each path. * * If @a include_merged_revisions is set, log information for revisions * which have been merged to @a targets will also be returned. * * If @a revprops is NULL, retrieve all revision properties; else, retrieve * only the revision properties named by the (const char *) array elements * (i.e. retrieve none if the array is empty). * * If any invocation of @a receiver returns error, return that error * immediately and without wrapping it. * * If @a start or @a end is a non-existent revision, return the error * @c SVN_ERR_FS_NO_SUCH_REVISION, without ever invoking @a receiver. * * See also the documentation for @c svn_log_message_receiver_t. * * The caller may not invoke any RA operations using @a session from * within @a receiver. * * Use @a pool for memory allocation. * * @note If @a paths is NULL or empty, the result depends on the * server. Pre-1.5 servers will send nothing; 1.5 servers will * effectively perform the log operation on the root of the * repository. This behavior may be changed in the future to ensure * consistency across all pedigrees of server. * * @note Pre-1.5 servers do not support custom revprop retrieval; if @a * revprops is NULL or contains a revprop other than svn:author, svn:date, * or svn:log, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is returned. * * @since New in 1.5. */ svn_error_t * svn_ra_get_log2(svn_ra_session_t *session, const apr_array_header_t *paths, svn_revnum_t start, svn_revnum_t end, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_boolean_t include_merged_revisions, const apr_array_header_t *revprops, svn_log_entry_receiver_t receiver, void *receiver_baton, apr_pool_t *pool); /** * Similar to svn_ra_get_log2(), but uses @c svn_log_message_receiver_t * instead of @c svn_log_entry_receiver_t. Also, @a * include_merged_revisions is set to @c FALSE and @a revprops is * svn:author, svn:date, and svn:log. * * @since New in 1.2. * @deprecated Provided for backward compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_log(svn_ra_session_t *session, const apr_array_header_t *paths, svn_revnum_t start, svn_revnum_t end, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_log_message_receiver_t receiver, void *receiver_baton, apr_pool_t *pool); /** * Set @a *kind to the node kind associated with @a path at @a revision. * If @a path does not exist under @a revision, set @a *kind to * @c svn_node_none. @a path is relative to the @a session's parent URL. * * Use @a pool for memory allocation. * * @since New in 1.2. */ svn_error_t * svn_ra_check_path(svn_ra_session_t *session, const char *path, svn_revnum_t revision, svn_node_kind_t *kind, apr_pool_t *pool); /** * Set @a *dirent to an @c svn_dirent_t associated with @a path at @a * revision. @a path is relative to the @a session's parent's URL. * If @a path does not exist in @a revision, set @a *dirent to NULL. * * Use @a pool for memory allocation. * * @since New in 1.2. */ svn_error_t * svn_ra_stat(svn_ra_session_t *session, const char *path, svn_revnum_t revision, svn_dirent_t **dirent, apr_pool_t *pool); /** * Set @a *uuid to the repository's UUID, allocated in @a pool. * * @since New in 1.5. */ svn_error_t * svn_ra_get_uuid2(svn_ra_session_t *session, const char **uuid, apr_pool_t *pool); /** * Similar to svn_ra_get_uuid2(), but returns the value allocated in * @a session's pool. * * @deprecated Provided for backward compatibility with the 1.4 API. * @since New in 1.2. */ SVN_DEPRECATED svn_error_t * svn_ra_get_uuid(svn_ra_session_t *session, const char **uuid, apr_pool_t *pool); /** * Set @a *url to the repository's root URL, allocated in @a pool. * The value will not include a trailing '/'. The returned URL is * guaranteed to be a prefix of the @a session's URL. * * @since New in 1.5. */ svn_error_t * svn_ra_get_repos_root2(svn_ra_session_t *session, const char **url, apr_pool_t *pool); /** * Similar to svn_ra_get_repos_root2(), but returns the value * allocated in @a session's pool. * * @deprecated Provided for backward compatibility with the 1.4 API. * @since New in 1.2. */ SVN_DEPRECATED svn_error_t * svn_ra_get_repos_root(svn_ra_session_t *session, const char **url, apr_pool_t *pool); /** * Set @a *locations to the locations (at the repository revisions * @a location_revisions) of the file identified by @a path in * @a peg_revision (passing @c SVN_INVALID_REVNUM is an error). * @a path is relative to the URL to which @a session was opened. * @a location_revisions is an array of @c svn_revnum_t's. * @a *locations will be a mapping from the revisions to * their appropriate absolute paths. If the file doesn't exist in a * location_revision, that revision will be ignored. * * Use @a pool for all allocations. * * @since New in 1.2. */ svn_error_t * svn_ra_get_locations(svn_ra_session_t *session, apr_hash_t **locations, const char *path, svn_revnum_t peg_revision, const apr_array_header_t *location_revisions, apr_pool_t *pool); /** * Call @a receiver (with @a receiver_baton) for each segment in the * location history of @a path in @a peg_revision, working backwards in * time from @a start_rev to @a end_rev. * * @a end_rev may be @c SVN_INVALID_REVNUM to indicate that you want * to trace the history of the object to its origin. * * @a start_rev may be @c SVN_INVALID_REVNUM to indicate "the HEAD * revision". Otherwise, @a start_rev must be younger than @a end_rev * (unless @a end_rev is @c SVN_INVALID_REVNUM). * * @a peg_revision may be @c SVN_INVALID_REVNUM to indicate "the HEAD * revision", and must evaluate to be at least as young as @a start_rev. * * Use @a pool for all allocations. * * @since New in 1.5. */ svn_error_t * svn_ra_get_location_segments(svn_ra_session_t *session, const char *path, svn_revnum_t peg_revision, svn_revnum_t start_rev, svn_revnum_t end_rev, svn_location_segment_receiver_t receiver, void *receiver_baton, apr_pool_t *pool); /** * Retrieve a subset of the interesting revisions of a file @a path * as seen in revision @a end (see svn_fs_history_prev() for a * definition of "interesting revisions"). Invoke @a handler with * @a handler_baton as its first argument for each such revision. * @a session is an open RA session. Use @a pool for all allocations. * * If there is an interesting revision of the file that is less than or * equal to @a start, the iteration will begin at that revision. * Else, the iteration will begin at the first revision of the file in * the repository, which has to be less than or equal to @a end. Note * that if the function succeeds, @a handler will have been called at * least once. * * In a series of calls to @a handler, the file contents for the first * interesting revision will be provided as a text delta against the * empty file. In the following calls, the delta will be against the * fulltext contents for the previous call. * * If @a include_merged_revisions is TRUE, revisions which are * included as a result of a merge between @a start and @a end will be * included. * * @note This functionality is not available in pre-1.1 servers. If the * server doesn't implement it, an alternative (but much slower) * implementation based on svn_ra_get_log2() is used. * * On subversion 1.8 and newer servers this function has been enabled * to support reversion of the revision range for @a include_merged_revision * @c FALSE reporting by switching @a end with @a start. * * @note Prior to Subversion 1.9, this function may request delta handlers * from @a handler even for empty text deltas. Starting with 1.9, the * delta handler / baton return arguments passed to @a handler will be * NULL unless there is an actual difference in the file contents between * the current and the previous call. * * @since New in 1.5. */ svn_error_t * svn_ra_get_file_revs2(svn_ra_session_t *session, const char *path, svn_revnum_t start, svn_revnum_t end, svn_boolean_t include_merged_revisions, svn_file_rev_handler_t handler, void *handler_baton, apr_pool_t *pool); /** * Similar to svn_ra_get_file_revs2(), but with @a include_merged_revisions * set to FALSE. * * @since New in 1.2. * @deprecated Provided for backward compatibility with the 1.4 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_file_revs(svn_ra_session_t *session, const char *path, svn_revnum_t start, svn_revnum_t end, svn_ra_file_rev_handler_t handler, void *handler_baton, apr_pool_t *pool); /** * Lock each path in @a path_revs, which is a hash whose keys are the * paths to be locked, and whose values are the corresponding base * revisions for each path. The keys are (const char *) and the * revisions are (svn_revnum_t *). * * Note that locking is never anonymous, so any server implementing * this function will have to "pull" a username from the client, if * it hasn't done so already. * * @a comment is optional: it's either an xml-escapable string * which describes the lock, or it is NULL. * * If any path is already locked by a different user, then call @a * lock_func/@a lock_baton with an error. If @a steal_lock is TRUE, * then "steal" the existing lock(s) anyway, even if the RA username * does not match the current lock's owner. Delete any lock on the * path, and unconditionally create a new lock. * * For each path, if its base revision (in @a path_revs) is a valid * revnum, then do an out-of-dateness check. If the revnum is less * than the last-changed-revision of any path (or if a path doesn't * exist in HEAD), call @a lock_func/@a lock_baton with an * SVN_ERR_RA_OUT_OF_DATE error. * * After successfully locking a file, @a lock_func is called with the * @a lock_baton. * * Use @a pool for temporary allocations. * * @since New in 1.2. */ svn_error_t * svn_ra_lock(svn_ra_session_t *session, apr_hash_t *path_revs, const char *comment, svn_boolean_t steal_lock, svn_ra_lock_callback_t lock_func, void *lock_baton, apr_pool_t *pool); /** * Remove the repository lock for each path in @a path_tokens. * @a path_tokens is a hash whose keys are the paths to be locked, and * whose values are the corresponding lock tokens for each path. If * the path has no corresponding lock token, or if @a break_lock is TRUE, * then the corresponding value shall be "". * * Note that unlocking is never anonymous, so any server * implementing this function will have to "pull" a username from * the client, if it hasn't done so already. * * If @a token points to a lock, but the RA username doesn't match the * lock's owner, call @a lock_func/@a lock_baton with an error. If @a * break_lock is TRUE, however, instead allow the lock to be "broken" * by the RA user. * * After successfully unlocking a path, @a lock_func is called with * the @a lock_baton. * * Use @a pool for temporary allocations. * * @since New in 1.2. */ svn_error_t * svn_ra_unlock(svn_ra_session_t *session, apr_hash_t *path_tokens, svn_boolean_t break_lock, svn_ra_lock_callback_t lock_func, void *lock_baton, apr_pool_t *pool); /** * If @a path is locked, set @a *lock to an svn_lock_t which * represents the lock, allocated in @a pool. * * If @a path is not locked or does not exist in HEAD, set @a *lock to NULL. * * @note Before 1.9, this function could return SVN_ERR_FS_NOT_FOUND * when @a path didn't exist in HEAD on specific ra layers. * * @since New in 1.2. */ svn_error_t * svn_ra_get_lock(svn_ra_session_t *session, svn_lock_t **lock, const char *path, apr_pool_t *pool); /** * Set @a *locks to a hashtable which represents all locks on or * below @a path. * * @a depth limits the returned locks to those associated with paths * within the specified depth of @a path, and must be one of the * following values: #svn_depth_empty, #svn_depth_files, * #svn_depth_immediates, or #svn_depth_infinity. * * The hashtable maps (const char *) absolute fs paths to (const * svn_lock_t *) structures. The hashtable -- and all keys and * values -- are allocated in @a pool. * * @note It is not considered an error for @a path to not exist in HEAD. * Such a search will simply return no locks. * * @note This functionality is not available in pre-1.2 servers. If the * server doesn't implement it, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is * returned. * * @since New in 1.7. */ svn_error_t * svn_ra_get_locks2(svn_ra_session_t *session, apr_hash_t **locks, const char *path, svn_depth_t depth, apr_pool_t *pool); /** * Similar to svn_ra_get_locks2(), but with @a depth always passed as * #svn_depth_infinity. * * @since New in 1.2. * @deprecated Provided for backward compatibility with the 1.6 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_locks(svn_ra_session_t *session, apr_hash_t **locks, const char *path, apr_pool_t *pool); /** * Replay the changes from a range of revisions between @a start_revision * and @a end_revision (inclusive). * * When receiving information for one revision, a callback @a revstart_func is * called; this callback will provide an editor and baton through which the * revision will be replayed. * When replaying the revision is finished, callback @a revfinish_func will be * called so the editor can be closed. * * Changes will be limited to those that occur under @a session's URL, and * the server will assume that the client has no knowledge of revisions * prior to @a low_water_mark. These two limiting factors define the portion * of the tree that the server will assume the client already has knowledge of, * and thus any copies of data from outside that part of the tree will be * sent in their entirety, not as simple copies or deltas against a previous * version. * * If @a send_deltas is @c TRUE, the actual text and property changes in * the revision will be sent, otherwise dummy text deltas and NULL property * changes will be sent instead. * * @a pool is used for all allocation. * * @since New in 1.5. */ svn_error_t * svn_ra_replay_range(svn_ra_session_t *session, svn_revnum_t start_revision, svn_revnum_t end_revision, svn_revnum_t low_water_mark, svn_boolean_t send_deltas, svn_ra_replay_revstart_callback_t revstart_func, svn_ra_replay_revfinish_callback_t revfinish_func, void *replay_baton, apr_pool_t *pool); /** * Replay the changes from @a revision through @a editor and @a edit_baton. * * Changes will be limited to those that occur under @a session's URL, and * the server will assume that the client has no knowledge of revisions * prior to @a low_water_mark. These two limiting factors define the portion * of the tree that the server will assume the client already has knowledge of, * and thus any copies of data from outside that part of the tree will be * sent in their entirety, not as simple copies or deltas against a previous * version. * * If @a send_deltas is @c TRUE, the actual text and property changes in * the revision will be sent, otherwise dummy text deltas and null property * changes will be sent instead. * * @a pool is used for all allocation. * * @since New in 1.4. */ svn_error_t * svn_ra_replay(svn_ra_session_t *session, svn_revnum_t revision, svn_revnum_t low_water_mark, svn_boolean_t send_deltas, const svn_delta_editor_t *editor, void *edit_baton, apr_pool_t *pool); /** * Given @a path at revision @a peg_revision, set @a *revision_deleted to the * revision @a path was first deleted, within the inclusive revision range * defined by @a peg_revision and @a end_revision. @a path is relative * to the URL in @a session. * * If @a path does not exist at @a peg_revision or was not deleted within * the specified range, then set @a *revision_deleted to @c SVN_INVALID_REVNUM. * If @a peg_revision or @a end_revision are invalid or if @a peg_revision is * greater than @a end_revision, then return @c SVN_ERR_CLIENT_BAD_REVISION. * * Use @a pool for all allocations. * * @since New in 1.6. */ svn_error_t * svn_ra_get_deleted_rev(svn_ra_session_t *session, const char *path, svn_revnum_t peg_revision, svn_revnum_t end_revision, svn_revnum_t *revision_deleted, apr_pool_t *pool); /** * Set @a *inherited_props to a depth-first ordered array of * #svn_prop_inherited_item_t * structures representing the properties * inherited by @a path at @a revision (or the 'head' revision if * @a revision is @c SVN_INVALID_REVNUM). Interpret @a path relative to * the URL in @a session. Use @a pool for all allocations. If no * inheritable properties are found, then set @a *inherited_props to * an empty array. * * The #svn_prop_inherited_item_t->path_or_url members of the * #svn_prop_inherited_item_t * structures in @a *inherited_props are * paths relative to the repository root URL (of the repository which * @a ra_session is associated). * * Allocate @a *inherited_props in @a result_pool. Use @a scratch_pool * for temporary allocations. * * @since New in 1.8. */ svn_error_t * svn_ra_get_inherited_props(svn_ra_session_t *session, apr_array_header_t **inherited_props, const char *path, svn_revnum_t revision, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /** * @defgroup Capabilities Dynamically query the server's capabilities. * * @{ */ /** * Set @a *has to TRUE if the server represented by @a session has * @a capability (one of the capabilities beginning with * @c "SVN_RA_CAPABILITY_"), else set @a *has to FALSE. * * If @a capability isn't recognized, throw @c SVN_ERR_UNKNOWN_CAPABILITY, * with the effect on @a *has undefined. * * Use @a pool for all allocation. * * @since New in 1.5. */ svn_error_t * svn_ra_has_capability(svn_ra_session_t *session, svn_boolean_t *has, const char *capability, apr_pool_t *pool); /** * The capability of understanding @c svn_depth_t (e.g., the server * understands what the client means when the client describes the * depth of a working copy to the server.) * * @since New in 1.5. */ #define SVN_RA_CAPABILITY_DEPTH "depth" /** * The capability of doing the right thing with merge-tracking * information. This capability should be reported bidirectionally, * because some repositories may want to reject clients that do not * self-report as knowing how to handle merge-tracking. * * @since New in 1.5. */ #define SVN_RA_CAPABILITY_MERGEINFO "mergeinfo" /** * The capability of retrieving arbitrary revprops in svn_ra_get_log2. * * @since New in 1.5. */ #define SVN_RA_CAPABILITY_LOG_REVPROPS "log-revprops" /** * The capability of replaying a directory in the repository (partial replay). * * @since New in 1.5. */ #define SVN_RA_CAPABILITY_PARTIAL_REPLAY "partial-replay" /** * The capability of including revision properties in a commit. * * @since New in 1.5. */ #define SVN_RA_CAPABILITY_COMMIT_REVPROPS "commit-revprops" /** * The capability of specifying (and atomically verifying) expected * preexisting values when modifying revprops. * * @since New in 1.7. */ #define SVN_RA_CAPABILITY_ATOMIC_REVPROPS "atomic-revprops" /** * The capability to get inherited properties. * * @since New in 1.8. */ #define SVN_RA_CAPABILITY_INHERITED_PROPS "inherited-props" /** * The capability of a server to automatically remove transaction - * properties prefixed with SVN_PROP_EPHEMERAL_PREFIX. + * properties prefixed with #SVN_PROP_TXN_PREFIX. * * @since New in 1.8. */ #define SVN_RA_CAPABILITY_EPHEMERAL_TXNPROPS "ephemeral-txnprops" /** * The capability of a server to walk revisions backwards in * svn_ra_get_file_revs2 * * @since New in 1.8. */ #define SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE "get-file-revs-reversed" /** * The capability of a server to understand the list command. * * @since New in 1.10. */ #define SVN_RA_CAPABILITY_LIST "list" /* *** PLEASE READ THIS IF YOU ADD A NEW CAPABILITY *** * * RA layers generally fetch all capabilities when asked about any * capability, to save future round trips. So if you add a new * capability here, make sure to update the RA layers to remember * it after any capabilities query. * * Also note that capability strings should not include colons, * because we pass a list of client capabilities to the start-commit * hook as a single, colon-separated string. */ /** @} */ /** * Append a textual list of all available RA modules to the stringbuf * @a output. * * @since New in 1.2. */ svn_error_t * svn_ra_print_modules(svn_stringbuf_t *output, apr_pool_t *pool); /** * Similar to svn_ra_print_modules(). * @a ra_baton is ignored. * * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_print_ra_libraries(svn_stringbuf_t **descriptions, void *ra_baton, apr_pool_t *pool); /** * Using this callback struct is similar to calling the newer public * interface that is based on @c svn_ra_session_t. * * @deprecated Provided for backward compatibility with the 1.1 API. */ typedef struct svn_ra_plugin_t { /** The proper name of the RA library, (like "ra_serf" or "ra_local") */ const char *name; /** Short doc string printed out by `svn --version` */ const char *description; /* The vtable hooks */ /** Call svn_ra_open() and set @a session_baton to an object representing * the new session. All other arguments are passed to svn_ra_open(). */ svn_error_t *(*open)(void **session_baton, const char *repos_URL, const svn_ra_callbacks_t *callbacks, void *callback_baton, apr_hash_t *config, apr_pool_t *pool); /** Call svn_ra_get_latest_revnum() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*get_latest_revnum)(void *session_baton, svn_revnum_t *latest_revnum, apr_pool_t *pool); /** Call svn_ra_get_dated_revision() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*get_dated_revision)(void *session_baton, svn_revnum_t *revision, apr_time_t tm, apr_pool_t *pool); /** Call svn_ra_change_rev_prop() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*change_rev_prop)(void *session_baton, svn_revnum_t rev, const char *name, const svn_string_t *value, apr_pool_t *pool); /** Call svn_ra_rev_proplist() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*rev_proplist)(void *session_baton, svn_revnum_t rev, apr_hash_t **props, apr_pool_t *pool); /** Call svn_ra_rev_prop() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*rev_prop)(void *session_baton, svn_revnum_t rev, const char *name, svn_string_t **value, apr_pool_t *pool); /** Call svn_ra_get_commit_editor() with the session associated with * @a session_baton and all other arguments plus @a lock_tokens set to * @c NULL and @a keep_locks set to @c TRUE. */ svn_error_t *(*get_commit_editor)(void *session_baton, const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, svn_commit_callback_t callback, void *callback_baton, apr_pool_t *pool); /** Call svn_ra_get_file() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*get_file)(void *session_baton, const char *path, svn_revnum_t revision, svn_stream_t *stream, svn_revnum_t *fetched_rev, apr_hash_t **props, apr_pool_t *pool); /** Call svn_ra_get_dir() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*get_dir)(void *session_baton, const char *path, svn_revnum_t revision, apr_hash_t **dirents, svn_revnum_t *fetched_rev, apr_hash_t **props, apr_pool_t *pool); /** Call svn_ra_do_update() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*do_update)(void *session_baton, const svn_ra_reporter_t **reporter, void **report_baton, svn_revnum_t revision_to_update_to, const char *update_target, svn_boolean_t recurse, const svn_delta_editor_t *update_editor, void *update_baton, apr_pool_t *pool); /** Call svn_ra_do_switch() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*do_switch)(void *session_baton, const svn_ra_reporter_t **reporter, void **report_baton, svn_revnum_t revision_to_switch_to, const char *switch_target, svn_boolean_t recurse, const char *switch_url, const svn_delta_editor_t *switch_editor, void *switch_baton, apr_pool_t *pool); /** Call svn_ra_do_status() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*do_status)(void *session_baton, const svn_ra_reporter_t **reporter, void **report_baton, const char *status_target, svn_revnum_t revision, svn_boolean_t recurse, const svn_delta_editor_t *status_editor, void *status_baton, apr_pool_t *pool); /** Call svn_ra_do_diff() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*do_diff)(void *session_baton, const svn_ra_reporter_t **reporter, void **report_baton, svn_revnum_t revision, const char *diff_target, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, const char *versus_url, const svn_delta_editor_t *diff_editor, void *diff_baton, apr_pool_t *pool); /** Call svn_ra_get_log() with the session associated with * @a session_baton and all other arguments. @a limit is set to 0. */ svn_error_t *(*get_log)(void *session_baton, const apr_array_header_t *paths, svn_revnum_t start, svn_revnum_t end, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_log_message_receiver_t receiver, void *receiver_baton, apr_pool_t *pool); /** Call svn_ra_check_path() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*check_path)(void *session_baton, const char *path, svn_revnum_t revision, svn_node_kind_t *kind, apr_pool_t *pool); /** Call svn_ra_get_uuid() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*get_uuid)(void *session_baton, const char **uuid, apr_pool_t *pool); /** Call svn_ra_get_repos_root() with the session associated with * @a session_baton and all other arguments. */ svn_error_t *(*get_repos_root)(void *session_baton, const char **url, apr_pool_t *pool); /** * Call svn_ra_get_locations() with the session associated with * @a session_baton and all other arguments. * * @since New in 1.1. */ svn_error_t *(*get_locations)(void *session_baton, apr_hash_t **locations, const char *path, svn_revnum_t peg_revision, apr_array_header_t *location_revisions, apr_pool_t *pool); /** * Call svn_ra_get_file_revs() with the session associated with * @a session_baton and all other arguments. * * @since New in 1.1. */ svn_error_t *(*get_file_revs)(void *session_baton, const char *path, svn_revnum_t start, svn_revnum_t end, svn_ra_file_rev_handler_t handler, void *handler_baton, apr_pool_t *pool); /** * Return the plugin's version information. * * @since New in 1.1. */ const svn_version_t *(*get_version)(void); } svn_ra_plugin_t; /** * All "ra_FOO" implementations *must* export a function named * svn_ra_FOO_init() of type @c svn_ra_init_func_t. * * When called by libsvn_client, this routine adds an entry (or * entries) to the hash table for any URL schemes it handles. The hash * value must be of type (@c svn_ra_plugin_t *). @a pool is a * pool for allocating configuration / one-time data. * * This type is defined to use the "C Calling Conventions" to ensure that * abi_version is the first parameter. The RA plugin must check that value * before accessing the other parameters. * * ### need to force this to be __cdecl on Windows... how?? * * @deprecated Provided for backward compatibility with the 1.1 API. */ typedef svn_error_t *(*svn_ra_init_func_t)(int abi_version, apr_pool_t *pool, apr_hash_t *hash); /** * The current ABI (Application Binary Interface) version for the * RA plugin model. This version number will change when the ABI * between the SVN core (e.g. libsvn_client) and the RA plugin changes. * * An RA plugin should verify that the passed version number is acceptable * before accessing the rest of the parameters, and before returning any * information. * * It is entirely acceptable for an RA plugin to accept multiple ABI * versions. It can simply interpret the parameters based on the version, * and it can return different plugin structures. * * *
  * VSN  DATE        REASON FOR CHANGE
  * ---  ----------  ------------------------------------------------
  *   1  2001-02-17  Initial revision.
  *   2  2004-06-29  Preparing for svn 1.1, which adds new RA vtable funcs.
  *      2005-01-19  Rework the plugin interface and don't provide the vtable
  *                  to the client.  Separate ABI versions are no longer used.
  * 
* * @deprecated Provided for backward compatibility with the 1.0 API. */ #define SVN_RA_ABI_VERSION 2 /* Public RA implementations. */ /** Initialize libsvn_ra_serf. * * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_dav_init(int abi_version, apr_pool_t *pool, apr_hash_t *hash); /** Initialize libsvn_ra_local. * * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_local_init(int abi_version, apr_pool_t *pool, apr_hash_t *hash); /** Initialize libsvn_ra_svn. * * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_svn_init(int abi_version, apr_pool_t *pool, apr_hash_t *hash); /** Initialize libsvn_ra_serf. * * @since New in 1.4. * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_serf_init(int abi_version, apr_pool_t *pool, apr_hash_t *hash); /** * Initialize the compatibility wrapper, using @a pool for any allocations. * The caller must hold on to @a ra_baton as long as the RA library is used. * * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_init_ra_libs(void **ra_baton, apr_pool_t *pool); /** * Return an RA vtable-@a library which can handle URL. A number of * svn_client_* routines will call this internally, but client apps might * use it too. $a ra_baton is a baton obtained by a call to * svn_ra_init_ra_libs(). * * @deprecated Provided for backward compatibility with the 1.1 API. */ SVN_DEPRECATED svn_error_t * svn_ra_get_ra_library(svn_ra_plugin_t **library, void *ra_baton, const char *url, apr_pool_t *pool); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* SVN_RA_H */ diff --git a/contrib/subversion/subversion/include/svn_types.h b/contrib/subversion/subversion/include/svn_types.h index 418d6ac9cc84..d9f98f23150a 100644 --- a/contrib/subversion/subversion/include/svn_types.h +++ b/contrib/subversion/subversion/include/svn_types.h @@ -1,1255 +1,1284 @@ /** * @copyright * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * @endcopyright * * @file svn_types.h * @brief Subversion's data types */ #ifndef SVN_TYPES_H #define SVN_TYPES_H #include "svn_types_impl.h" /* ### this should go away, but it causes too much breakage right now */ #include #include /* for ULONG_MAX */ #include /* for apr_size_t, apr_int64_t, ... */ #include #include /* for apr_status_t */ #include /* for apr_pool_t */ #include /* for apr_hash_t */ #include /* for apr_array_push() */ #include /* for apr_time_t */ #include /* for apr_atoi64() */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** Macro used to mark deprecated functions. * * @since New in 1.6. */ #ifndef SVN_DEPRECATED # if !defined(SWIGPERL) && !defined(SWIGPYTHON) && !defined(SWIGRUBY) # if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__==3 && __GNUC_MINOR__>=1)) # define SVN_DEPRECATED __attribute__((deprecated)) # elif defined(_MSC_VER) && _MSC_VER >= 1300 # define SVN_DEPRECATED __declspec(deprecated) # else # define SVN_DEPRECATED # endif # else # define SVN_DEPRECATED # endif #endif /** Macro used to mark experimental functions. * * @since New in 1.9. */ #ifndef SVN_EXPERIMENTAL # if !defined(SWIGPERL) && !defined(SWIGPYTHON) && !defined(SWIGRUBY) # if defined(__has_attribute) # if __has_attribute(__warning__) # define SVN_EXPERIMENTAL __attribute__((warning("experimental function used"))) # else # define SVN_EXPERIMENTAL # endif # elif !defined(__llvm__) && defined(__GNUC__) \ && (__GNUC__ >= 4 || (__GNUC__==3 && __GNUC_MINOR__>=1)) # define SVN_EXPERIMENTAL __attribute__((warning("experimental function used"))) # elif defined(_MSC_VER) && _MSC_VER >= 1300 # define SVN_EXPERIMENTAL __declspec(deprecated("experimental function used")) # else # define SVN_EXPERIMENTAL # endif # else # define SVN_EXPERIMENTAL # endif #endif /** Macro used to mark functions that require a final null sentinel argument. * * @since New in 1.9. */ #ifndef SVN_NEEDS_SENTINEL_NULL # if defined(__has_attribute) # if __has_attribute(__sentinel__) # define SVN_NEEDS_SENTINEL_NULL __attribute__((sentinel)) # else # define SVN_NEEDS_SENTINEL_NULL # endif # elif defined(__GNUC__) && (__GNUC__ >= 4) # define SVN_NEEDS_SENTINEL_NULL __attribute__((sentinel)) # else # define SVN_NEEDS_SENTINEL_NULL # endif #endif /** Indicate whether the current platform supports unaligned data access. * * On the majority of machines running SVN (x86 / x64), unaligned access * is much cheaper than repeated aligned access. Define this macro to 1 * on those machines. * Unaligned access on other machines (e.g. IA64) will trigger memory * access faults or simply misbehave. * * Note: Some platforms may only support unaligned access for integers * (PowerPC). As a result this macro should only be used to determine * if unaligned access is supported for integers. * * @since New in 1.7. */ #ifndef SVN_UNALIGNED_ACCESS_IS_OK # if defined(_M_IX86) || defined(i386) \ || defined(_M_X64) || defined(__x86_64) \ || defined(__powerpc__) || defined(__ppc__) # define SVN_UNALIGNED_ACCESS_IS_OK 1 # else # define SVN_UNALIGNED_ACCESS_IS_OK 0 # endif #endif /** YABT: Yet Another Boolean Type */ typedef int svn_boolean_t; #ifndef TRUE /** uhh... true */ #define TRUE 1 #endif /* TRUE */ #ifndef FALSE /** uhh... false */ #define FALSE 0 #endif /* FALSE */ /* Declaration of a unique type, never defined, for the SVN_VA_NULL macro. * * NOTE: Private. Not for direct use by third-party code. */ struct svn__null_pointer_constant_stdarg_sentinel_t; /** Null pointer constant used as a sentinel in variable argument lists. * * Use of this macro ensures that the argument is of the correct size when a * pointer is expected. (The macro @c NULL is not defined as a pointer on * all systems, and the arguments to variadic functions are not converted * automatically to the expected type.) * * @since New in 1.9. */ #define SVN_VA_NULL ((struct svn__null_pointer_constant_stdarg_sentinel_t*)0) /* See? (char*)NULL -- They have the same length, but the cast looks ugly. */ /** Subversion error object. * * Defined here, rather than in svn_error.h, to avoid a recursive @#include * situation. */ typedef struct svn_error_t { /** APR error value; possibly an SVN_ custom error code (see * `svn_error_codes.h' for a full listing). */ apr_status_t apr_err; /** Details from the producer of error. * * Note that if this error was generated by Subversion's API, you'll * probably want to use svn_err_best_message() to get a single * descriptive string for this error chain (see the @a child member) * or svn_handle_error2() to print the error chain in full. This is * because Subversion's API functions sometimes add many links to * the error chain that lack details (used only to produce virtual * stack traces). (Use svn_error_purge_tracing() to remove those * trace-only links from the error chain.) */ const char *message; /** Pointer to the error we "wrap" (may be @c NULL). Via this * member, individual error object can be strung together into an * "error chain". */ struct svn_error_t *child; /** The pool in which this error object is allocated. (If * Subversion's APIs are used to manage error chains, then this pool * will contain the whole error chain of which this object is a * member.) */ apr_pool_t *pool; /** Source file where the error originated (iff @c SVN_DEBUG; * undefined otherwise). */ const char *file; /** Source line where the error originated (iff @c SVN_DEBUG; * undefined otherwise). */ long line; } svn_error_t; /* See svn_version.h. Defined here to avoid including svn_version.h from all public headers. */ typedef struct svn_version_t svn_version_t; /** @defgroup APR_ARRAY_compat_macros APR Array Compatibility Helper Macros * These macros are provided by APR itself from version 1.3. * Definitions are provided here for when using older versions of APR. * @{ */ /** index into an apr_array_header_t */ #ifndef APR_ARRAY_IDX #define APR_ARRAY_IDX(ary,i,type) (((type *)(ary)->elts)[i]) #endif /** easier array-pushing syntax */ #ifndef APR_ARRAY_PUSH #define APR_ARRAY_PUSH(ary,type) (*((type *)apr_array_push(ary))) #endif /** @} */ + +/** @defgroup apr_hash_utilities APR Hash Table Helpers + * These functions enable the caller to dereference an APR hash table index + * without type casts or temporary variables. + * + * These functions are provided by APR itself from version 1.5. + * Definitions are provided here for when using older versions of APR. + * @{ + */ + +#if !APR_VERSION_AT_LEAST(1, 5, 0) + +/** Return the key of the hash table entry indexed by @a hi. */ +const void * +apr_hash_this_key(apr_hash_index_t *hi); + +/** Return the key length of the hash table entry indexed by @a hi. */ +apr_ssize_t +apr_hash_this_key_len(apr_hash_index_t *hi); + +/** Return the value of the hash table entry indexed by @a hi. */ +void * +apr_hash_this_val(apr_hash_index_t *hi); + +#endif + +/** @} */ + + /** On Windows, APR_STATUS_IS_ENOTDIR includes several kinds of * invalid-pathname error but not ERROR_INVALID_NAME, so we include it. * We also include ERROR_DIRECTORY as that was not included in apr versions * before 1.4.0 and this fix is not backported */ /* ### These fixes should go into APR. */ #ifndef WIN32 #define SVN__APR_STATUS_IS_ENOTDIR(s) APR_STATUS_IS_ENOTDIR(s) #else #define SVN__APR_STATUS_IS_ENOTDIR(s) (APR_STATUS_IS_ENOTDIR(s) \ || ((s) == APR_OS_START_SYSERR + ERROR_DIRECTORY) \ || ((s) == APR_OS_START_SYSERR + ERROR_INVALID_NAME)) #endif /** On Windows, APR_STATUS_IS_EPIPE does not include ERROR_NO_DATA error. * So we include it.*/ /* ### These fixes should go into APR. */ #ifndef WIN32 #define SVN__APR_STATUS_IS_EPIPE(s) APR_STATUS_IS_EPIPE(s) #else #define SVN__APR_STATUS_IS_EPIPE(s) (APR_STATUS_IS_EPIPE(s) \ || ((s) == APR_OS_START_SYSERR + ERROR_NO_DATA)) #endif /** @} */ /* NOTE: svn_node_kind_t is defined in svn_types_impl.h */ /** Return a constant string expressing @a kind as an English word, e.g., * "file", "dir", etc. The string is not localized, as it may be used for * client<->server communications. If the kind is not recognized, return * "unknown". * * @since New in 1.6. */ const char * svn_node_kind_to_word(svn_node_kind_t kind); /** Return the appropriate node_kind for @a word. @a word is as * returned from svn_node_kind_to_word(). If @a word does not * represent a recognized kind or is @c NULL, return #svn_node_unknown. * * @since New in 1.6. */ svn_node_kind_t svn_node_kind_from_word(const char *word); /* NOTE: svn_tristate_t is defined in svn_types_impl.h */ /** Return a constant string "true", "false" or NULL representing the value of * @a tristate. * * @since New in 1.7. */ const char * svn_tristate__to_word(svn_tristate_t tristate); /** Return the appropriate tristate for @a word. If @a word is "true", returns * #svn_tristate_true; if @a word is "false", returns #svn_tristate_false, * for all other values (including NULL) returns #svn_tristate_unknown. * * @since New in 1.7. */ svn_tristate_t svn_tristate__from_word(const char * word); /** About Special Files in Subversion * * Subversion denotes files that cannot be portably created or * modified as "special" files (svn_node_special). It stores these * files in the repository as a plain text file with the svn:special * property set. The file contents contain: a platform-specific type * string, a space character, then any information necessary to create * the file on a supported platform. For example, if a symbolic link * were being represented, the repository file would have the * following contents: * * "link /path/to/link/target" * * Where 'link' is the identifier string showing that this special * file should be a symbolic link and '/path/to/link/target' is the * destination of the symbolic link. * * Special files are stored in the text-base exactly as they are * stored in the repository. The platform specific files are created * in the working copy at EOL/keyword translation time using * svn_subst_copy_and_translate2(). If the current platform does not * support a specific special file type, the file is copied into the * working copy as it is seen in the repository. Because of this, * users of other platforms can still view and modify the special * files, even if they do not have their unique properties. * * New types of special files can be added by: * 1. Implementing a platform-dependent routine to create a uniquely * named special file and one to read the special file in * libsvn_subr/io.c. * 2. Creating a new textual name similar to * SVN_SUBST__SPECIAL_LINK_STR in libsvn_subr/subst.c. * 3. Handling the translation/detranslation case for the new type in * create_special_file_from_stream and detranslate_special_file, using the * routines from 1. */ /* NOTE: svn_revnum_t and SVN_INVALID_REVNUM are defined in svn_types_impl.h */ /** Valid revision numbers begin at 0 */ #define SVN_IS_VALID_REVNUM(n) ((n) >= 0) /** Not really invalid...just unimportant -- one day, this can be its * own unique value, for now, just make it the same as * #SVN_INVALID_REVNUM. */ #define SVN_IGNORED_REVNUM ((svn_revnum_t) -1) /** Convert NULL-terminated C string @a str to a revision number. */ #define SVN_STR_TO_REV(str) ((svn_revnum_t) atol(str)) /** * Parse NULL-terminated C string @a str as a revision number and * store its value in @a rev. If @a endptr is non-NULL, then the * address of the first non-numeric character in @a str is stored in * it. If there are no digits in @a str, then @a endptr is set (if * non-NULL), and the error #SVN_ERR_REVNUM_PARSE_FAILURE error is * returned. Negative numbers parsed from @a str are considered * invalid, and result in the same error. * * @since New in 1.5. */ svn_error_t * svn_revnum_parse(svn_revnum_t *rev, const char *str, const char **endptr); /** Originally intended to be used in printf()-style functions to format * revision numbers. Deprecated due to incompatibilities with language * translation tools (e.g. gettext). * * New code should use a bare "%ld" format specifier for formatting revision * numbers. * * @deprecated Provided for backward compatibility with the 1.0 API. */ #define SVN_REVNUM_T_FMT "ld" /** The size of a file in the Subversion FS. */ typedef apr_int64_t svn_filesize_t; /** The 'official' invalid file size constant. */ #define SVN_INVALID_FILESIZE ((svn_filesize_t) -1) /** In printf()-style functions, format file sizes using this. */ #define SVN_FILESIZE_T_FMT APR_INT64_T_FMT #ifndef DOXYGEN_SHOULD_SKIP_THIS /* Parse a base-10 numeric string into a 64-bit unsigned numeric value. */ /* NOTE: Private. For use by Subversion's own code only. See issue #1644. */ /* FIXME: APR should supply a function to do this, such as "apr_atoui64". */ #define svn__atoui64(X) ((apr_uint64_t) apr_atoi64(X)) #endif /** An enum to indicate whether recursion is needed. */ enum svn_recurse_kind { svn_nonrecursive = 1, svn_recursive }; /* NOTE: svn_depth_t is defined in svn_types_impl.h */ /** Return a constant string expressing @a depth as an English word, * e.g., "infinity", "immediates", etc. The string is not localized, * as it may be used for client<->server communications. * * @since New in 1.5. */ const char * svn_depth_to_word(svn_depth_t depth); /** Return the appropriate depth for @a depth_str. @a word is as * returned from svn_depth_to_word(). If @a depth_str does not * represent a recognized depth, return #svn_depth_unknown. * * @since New in 1.5. */ svn_depth_t svn_depth_from_word(const char *word); /** Return #svn_depth_infinity if boolean @a recurse is TRUE, else * return #svn_depth_files. * * @note New code should never need to use this, it is called only * from pre-depth APIs, for compatibility. * * @since New in 1.5. */ #define SVN_DEPTH_INFINITY_OR_FILES(recurse) \ ((recurse) ? svn_depth_infinity : svn_depth_files) /** Return #svn_depth_infinity if boolean @a recurse is TRUE, else * return #svn_depth_immediates. * * @note New code should never need to use this, it is called only * from pre-depth APIs, for compatibility. * * @since New in 1.5. */ #define SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse) \ ((recurse) ? svn_depth_infinity : svn_depth_immediates) /** Return #svn_depth_infinity if boolean @a recurse is TRUE, else * return #svn_depth_empty. * * @note New code should never need to use this, it is called only * from pre-depth APIs, for compatibility. * * @since New in 1.5. */ #define SVN_DEPTH_INFINITY_OR_EMPTY(recurse) \ ((recurse) ? svn_depth_infinity : svn_depth_empty) /** Return a recursion boolean based on @a depth. * * Although much code has been converted to use depth, some code still * takes a recurse boolean. In most cases, it makes sense to treat * unknown or infinite depth as recursive, and any other depth as * non-recursive (which in turn usually translates to #svn_depth_files). */ #define SVN_DEPTH_IS_RECURSIVE(depth) \ ((depth) == svn_depth_infinity || (depth) == svn_depth_unknown) /** * It is sometimes convenient to indicate which parts of an #svn_dirent_t * object you are actually interested in, so that calculating and sending * the data corresponding to the other fields can be avoided. These values * can be used for that purpose. * * @defgroup svn_dirent_fields Dirent fields * @{ */ /** An indication that you are interested in the @c kind field */ #define SVN_DIRENT_KIND 0x00001 /** An indication that you are interested in the @c size field */ #define SVN_DIRENT_SIZE 0x00002 /** An indication that you are interested in the @c has_props field */ #define SVN_DIRENT_HAS_PROPS 0x00004 /** An indication that you are interested in the @c created_rev field */ #define SVN_DIRENT_CREATED_REV 0x00008 /** An indication that you are interested in the @c time field */ #define SVN_DIRENT_TIME 0x00010 /** An indication that you are interested in the @c last_author field */ #define SVN_DIRENT_LAST_AUTHOR 0x00020 /** A combination of all the dirent fields */ #define SVN_DIRENT_ALL ~((apr_uint32_t ) 0) /** @} */ /** A general subversion directory entry. * * @note To allow for extending the #svn_dirent_t structure in future * releases, always use svn_dirent_create() to allocate the stucture. * * @since New in 1.6. */ typedef struct svn_dirent_t { /** node kind */ svn_node_kind_t kind; /** length of file text, otherwise SVN_INVALID_FILESIZE */ svn_filesize_t size; /** does the node have props? */ svn_boolean_t has_props; /** last rev in which this node changed */ svn_revnum_t created_rev; /** time of created_rev (mod-time) */ apr_time_t time; /** author of created_rev */ const char *last_author; /* IMPORTANT: If you extend this struct, check svn_dirent_dup(). */ } svn_dirent_t; /** Return a deep copy of @a dirent, allocated in @a pool. * * @since New in 1.4. */ svn_dirent_t * svn_dirent_dup(const svn_dirent_t *dirent, apr_pool_t *pool); /** * Create a new svn_dirent_t instance with all values initialized to their * not-available values. * * @since New in 1.8. */ svn_dirent_t * svn_dirent_create(apr_pool_t *result_pool); /** Keyword substitution. * * All the keywords Subversion recognizes. * * Note that there is a better, more general proposal out there, which * would take care of both internationalization issues and custom * keywords (e.g., $NetBSD$). See * * @verbatim http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=8921 ===== From: "Jonathan M. Manning" To: dev@subversion.tigris.org Date: Fri, 14 Dec 2001 11:56:54 -0500 Message-ID: <87970000.1008349014@bdldevel.bl.bdx.com> Subject: Re: keywords @endverbatim * * and Eric Gillespie's support of same: * * @verbatim http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=8757 ===== From: "Eric Gillespie, Jr." To: dev@subversion.tigris.org Date: Wed, 12 Dec 2001 09:48:42 -0500 Message-ID: <87k7vsebp1.fsf@vger.pretzelnet.org> Subject: Re: Customizable Keywords @endverbatim * * However, it is considerably more complex than the scheme below. * For now we're going with simplicity, hopefully the more general * solution can be done post-1.0. * * @defgroup svn_types_keywords Keyword definitions * @{ */ /** The maximum size of an expanded or un-expanded keyword. */ #define SVN_KEYWORD_MAX_LEN 255 /** The most recent revision in which this file was changed. */ #define SVN_KEYWORD_REVISION_LONG "LastChangedRevision" /** Short version of LastChangedRevision */ #define SVN_KEYWORD_REVISION_SHORT "Rev" /** Medium version of LastChangedRevision, matching the one CVS uses. * @since New in 1.1. */ #define SVN_KEYWORD_REVISION_MEDIUM "Revision" /** The most recent date (repository time) when this file was changed. */ #define SVN_KEYWORD_DATE_LONG "LastChangedDate" /** Short version of LastChangedDate */ #define SVN_KEYWORD_DATE_SHORT "Date" /** Who most recently committed to this file. */ #define SVN_KEYWORD_AUTHOR_LONG "LastChangedBy" /** Short version of LastChangedBy */ #define SVN_KEYWORD_AUTHOR_SHORT "Author" /** The URL for the head revision of this file. */ #define SVN_KEYWORD_URL_LONG "HeadURL" /** Short version of HeadURL */ #define SVN_KEYWORD_URL_SHORT "URL" /** A compressed combination of the other four keywords. */ #define SVN_KEYWORD_ID "Id" /** A full combination of the first four keywords. * @since New in 1.6. */ #define SVN_KEYWORD_HEADER "Header" /** @} */ /** All information about a commit. * * @note Objects of this type should always be created using the * svn_create_commit_info() function. * * @since New in 1.3. */ typedef struct svn_commit_info_t { /** just-committed revision. */ svn_revnum_t revision; /** server-side date of the commit. */ const char *date; /** author of the commit. */ const char *author; /** error message from post-commit hook, or NULL. */ const char *post_commit_err; /** repository root, may be @c NULL if unknown. @since New in 1.7. */ const char *repos_root; } svn_commit_info_t; /** * Allocate an object of type #svn_commit_info_t in @a pool and * return it. * * The @c revision field of the new struct is set to #SVN_INVALID_REVNUM. * All other fields are initialized to @c NULL. * * @note Any object of the type #svn_commit_info_t should * be created using this function. * This is to provide for extending the svn_commit_info_t in * the future. * * @since New in 1.3. */ svn_commit_info_t * svn_create_commit_info(apr_pool_t *pool); /** * Return a deep copy @a src_commit_info allocated in @a pool. * * @since New in 1.4. */ svn_commit_info_t * svn_commit_info_dup(const svn_commit_info_t *src_commit_info, apr_pool_t *pool); /** * A structure to represent a path that changed for a log entry. * * @note To allow for extending the #svn_log_changed_path2_t structure in * future releases, always use svn_log_changed_path2_create() to allocate * the structure. * * @since New in 1.6. */ typedef struct svn_log_changed_path2_t { /** 'A'dd, 'D'elete, 'R'eplace, 'M'odify */ char action; /** Source path of copy (if any). */ const char *copyfrom_path; /** Source revision of copy (if any). */ svn_revnum_t copyfrom_rev; /** The type of the node, may be svn_node_unknown. */ svn_node_kind_t node_kind; /** Is the text modified, may be svn_tristate_unknown. * @since New in 1.7. */ svn_tristate_t text_modified; /** Are properties modified, may be svn_tristate_unknown. * @since New in 1.7. */ svn_tristate_t props_modified; /* NOTE: Add new fields at the end to preserve binary compatibility. Also, if you add fields here, you have to update svn_log_changed_path2_dup(). */ } svn_log_changed_path2_t; /** * Returns an #svn_log_changed_path2_t, allocated in @a pool with all fields * initialized to NULL, None or empty values. * * @note To allow for extending the #svn_log_changed_path2_t structure in * future releases, this function should always be used to allocate the * structure. * * @since New in 1.6. */ svn_log_changed_path2_t * svn_log_changed_path2_create(apr_pool_t *pool); /** * Return a deep copy of @a changed_path, allocated in @a pool. * * @since New in 1.6. */ svn_log_changed_path2_t * svn_log_changed_path2_dup(const svn_log_changed_path2_t *changed_path, apr_pool_t *pool); /** * A structure to represent a path that changed for a log entry. Same as * the first three fields of #svn_log_changed_path2_t. * * @deprecated Provided for backward compatibility with the 1.5 API. */ typedef struct svn_log_changed_path_t { /** 'A'dd, 'D'elete, 'R'eplace, 'M'odify */ char action; /** Source path of copy (if any). */ const char *copyfrom_path; /** Source revision of copy (if any). */ svn_revnum_t copyfrom_rev; } svn_log_changed_path_t; /** * Return a deep copy of @a changed_path, allocated in @a pool. * * @since New in 1.3. * @deprecated Provided for backward compatibility with the 1.5 API. */ SVN_DEPRECATED svn_log_changed_path_t * svn_log_changed_path_dup(const svn_log_changed_path_t *changed_path, apr_pool_t *pool); /** * A structure to represent all the information about a particular log entry. * * @note To allow for extending the #svn_log_entry_t structure in future * releases, always use svn_log_entry_create() to allocate the structure. * * @since New in 1.5. */ typedef struct svn_log_entry_t { /** A hash containing as keys every path committed in @a revision; the * values are (#svn_log_changed_path_t *) structures. * * The subversion core libraries will always set this field to the same * value as changed_paths2 for compatibility reasons. * * @deprecated Provided for backward compatibility with the 1.5 API. */ apr_hash_t *changed_paths; /** The revision of the commit. */ svn_revnum_t revision; /** The hash of requested revision properties, which may be NULL if it * would contain no revprops. Maps (const char *) property name to * (svn_string_t *) property value. */ apr_hash_t *revprops; /** * Whether or not this message has children. * * When a log operation requests additional merge information, extra log * entries may be returned as a result of this entry. The new entries, are * considered children of the original entry, and will follow it. When * the HAS_CHILDREN flag is set, the receiver should increment its stack * depth, and wait until an entry is provided with SVN_INVALID_REVNUM which * indicates the end of the children. * * For log operations which do not request additional merge information, the * HAS_CHILDREN flag is always FALSE. * * For more information see: * https://svn.apache.org/repos/asf/subversion/trunk/notes/merge-tracking/design.html#commutative-reporting */ svn_boolean_t has_children; /** A hash containing as keys every path committed in @a revision; the * values are (#svn_log_changed_path2_t *) structures. * * If this value is not @c NULL, it MUST have the same value as * changed_paths or svn_log_entry_dup() will not create an identical copy. * * The subversion core libraries will always set this field to the same * value as changed_paths for compatibility with users assuming an older * version. * * @note See http://svn.haxx.se/dev/archive-2010-08/0362.shtml for * further explanation. * * @since New in 1.6. */ apr_hash_t *changed_paths2; /** * Whether @a revision should be interpreted as non-inheritable in the * same sense of #svn_merge_range_t. * * Only set when this #svn_log_entry_t instance is returned by the * libsvn_client mergeinfo apis. Currently always FALSE when the * #svn_log_entry_t instance is reported by the ra layer. * * @since New in 1.7. */ svn_boolean_t non_inheritable; /** * Whether @a revision is a merged revision resulting from a reverse merge. * * @since New in 1.7. */ svn_boolean_t subtractive_merge; /* NOTE: Add new fields at the end to preserve binary compatibility. Also, if you add fields here, you have to update svn_log_entry_dup(). */ } svn_log_entry_t; /** * Returns an #svn_log_entry_t, allocated in @a pool with all fields * initialized to NULL values. * * @note To allow for extending the #svn_log_entry_t structure in future * releases, this function should always be used to allocate the structure. * * @since New in 1.5. */ svn_log_entry_t * svn_log_entry_create(apr_pool_t *pool); /** Return a deep copy of @a log_entry, allocated in @a pool. * * The resulting svn_log_entry_t has @c changed_paths set to the same * value as @c changed_path2. @c changed_paths will be @c NULL if * @c changed_paths2 was @c NULL. * * @since New in 1.6. */ svn_log_entry_t * svn_log_entry_dup(const svn_log_entry_t *log_entry, apr_pool_t *pool); /** The callback invoked by log message loopers, such as * #svn_ra_plugin_t.get_log() and svn_repos_get_logs(). * * This function is invoked once on each log message, in the order * determined by the caller (see above-mentioned functions). * * @a baton is what you think it is, and @a log_entry contains relevant * information for the log message. Any of @a log_entry->author, * @a log_entry->date, or @a log_entry->message may be @c NULL. * * If @a log_entry->date is neither NULL nor the empty string, it was * generated by svn_time_to_cstring() and can be converted to * @c apr_time_t with svn_time_from_cstring(). * * If @a log_entry->changed_paths is non-@c NULL, then it contains as keys * every path committed in @a log_entry->revision; the values are * (#svn_log_changed_path_t *) structures. * * If @a log_entry->has_children is @c TRUE, the message will be followed * immediately by any number of merged revisions (child messages), which are * terminated by an invocation with SVN_INVALID_REVNUM. This usage may * be recursive. * * Use @a pool for temporary allocation. If the caller is iterating * over log messages, invoking this receiver on each, we recommend the * standard pool loop recipe: create a subpool, pass it as @a pool to * each call, clear it after each iteration, destroy it after the loop * is done. (For allocation that must last beyond the lifetime of a * given receiver call, use a pool in @a baton.) * * @since New in 1.5. */ typedef svn_error_t *(*svn_log_entry_receiver_t)( void *baton, svn_log_entry_t *log_entry, apr_pool_t *pool); /** * Similar to #svn_log_entry_receiver_t, except this uses separate * parameters for each part of the log entry. * * @deprecated Provided for backward compatibility with the 1.4 API. */ typedef svn_error_t *(*svn_log_message_receiver_t)( void *baton, apr_hash_t *changed_paths, svn_revnum_t revision, const char *author, const char *date, /* use svn_time_from_cstring() if need apr_time_t */ const char *message, apr_pool_t *pool); /** Callback function type for commits. * * When a commit succeeds, an instance of this is invoked with the * @a commit_info, along with the @a baton closure. * @a pool can be used for temporary allocations. * * @note Implementers of this callback that pass this callback to * svn_ra_get_commit_editor3() should be careful with returning errors * as these might be returned as commit errors. See the documentation * of svn_ra_get_commit_editor3() for more details. * * @since New in 1.4. */ typedef svn_error_t *(*svn_commit_callback2_t)( const svn_commit_info_t *commit_info, void *baton, apr_pool_t *pool); /** Same as #svn_commit_callback2_t, but uses individual * data elements instead of the #svn_commit_info_t structure * * @deprecated Provided for backward compatibility with the 1.3 API. */ typedef svn_error_t *(*svn_commit_callback_t)( svn_revnum_t new_revision, const char *date, const char *author, void *baton); /** A buffer size that may be used when processing a stream of data. * * @note We don't use this constant any longer, since it is considered to be * unnecessarily large. * * @deprecated Provided for backwards compatibility with the 1.3 API. */ #define SVN_STREAM_CHUNK_SIZE 102400 #ifndef DOXYGEN_SHOULD_SKIP_THIS /* * The maximum amount we (ideally) hold in memory at a time when * processing a stream of data. * * For example, when copying data from one stream to another, do it in * blocks of this size. * * NOTE: This is an internal macro, put here for convenience. * No public API may depend on the particular value of this macro. */ #define SVN__STREAM_CHUNK_SIZE 16384 #endif /** The maximum amount we can ever hold in memory. */ /* FIXME: Should this be the same as SVN_STREAM_CHUNK_SIZE? */ #define SVN_MAX_OBJECT_SIZE (((apr_size_t) -1) / 2) /* ### Note: despite being about mime-TYPES, these probably don't * ### belong in svn_types.h. However, no other header is more * ### appropriate, and didn't feel like creating svn_validate.h for * ### so little. */ /** Validate @a mime_type. * * If @a mime_type does not contain a "/", or ends with non-alphanumeric * data, return #SVN_ERR_BAD_MIME_TYPE, else return success. * * Use @a pool only to find error allocation. * * Goal: to match both "foo/bar" and "foo/bar; charset=blah", without * being too strict about it, but to disallow mime types that have * quotes, newlines, or other garbage on the end, such as might be * unsafe in an HTTP header. */ svn_error_t * svn_mime_type_validate(const char *mime_type, apr_pool_t *pool); /** Return FALSE iff @a mime_type is a textual type. * * All mime types that start with "text/" are textual, plus some special * cases (for example, "image/x-xbitmap"). */ svn_boolean_t svn_mime_type_is_binary(const char *mime_type); /** A user defined callback that subversion will call with a user defined * baton to see if the current operation should be continued. If the operation * should continue, the function should return #SVN_NO_ERROR, if not, it * should return #SVN_ERR_CANCELLED. */ typedef svn_error_t *(*svn_cancel_func_t)(void *cancel_baton); /** * A lock object, for client & server to share. * * A lock represents the exclusive right to add, delete, or modify a * path. A lock is created in a repository, wholly controlled by the * repository. A "lock-token" is the lock's UUID, and can be used to * learn more about a lock's fields, and or/make use of the lock. * Because a lock is immutable, a client is free to not only cache the * lock-token, but the lock's fields too, for convenience. * * Note that the 'is_dav_comment' field is wholly ignored by every * library except for mod_dav_svn. The field isn't even marshalled * over the network to the client. Assuming lock structures are * created with apr_pcalloc(), a default value of 0 is universally safe. * * @note in the current implementation, only files are lockable. * * @since New in 1.2. */ typedef struct svn_lock_t { const char *path; /**< the path this lock applies to */ const char *token; /**< unique URI representing lock */ const char *owner; /**< the username which owns the lock */ const char *comment; /**< (optional) description of lock */ svn_boolean_t is_dav_comment; /**< was comment made by generic DAV client? */ apr_time_t creation_date; /**< when lock was made */ apr_time_t expiration_date; /**< (optional) when lock will expire; If value is 0, lock will never expire. */ } svn_lock_t; /** * Returns an #svn_lock_t, allocated in @a pool with all fields initialized * to NULL values. * * @note To allow for extending the #svn_lock_t structure in the future * releases, this function should always be used to allocate the structure. * * @since New in 1.2. */ svn_lock_t * svn_lock_create(apr_pool_t *pool); /** * Return a deep copy of @a lock, allocated in @a pool. * * @since New in 1.2. */ svn_lock_t * svn_lock_dup(const svn_lock_t *lock, apr_pool_t *pool); /** * Return a formatted Universal Unique IDentifier (UUID) string. * * @since New in 1.4. */ const char * svn_uuid_generate(apr_pool_t *pool); /** * Mergeinfo representing a merge of a range of revisions. * * @since New in 1.5 */ typedef struct svn_merge_range_t { /** * If the 'start' field is less than the 'end' field then 'start' is * exclusive and 'end' inclusive of the range described. This is termed * a forward merge range. If 'start' is greater than 'end' then the * opposite is true. This is termed a reverse merge range. If 'start' * equals 'end' the meaning of the range is not defined. */ svn_revnum_t start; svn_revnum_t end; /** * Whether this merge range should be inherited by treewise * descendants of the path to which the range applies. */ svn_boolean_t inheritable; } svn_merge_range_t; /** * Return a copy of @a range, allocated in @a pool. * * @since New in 1.5. */ svn_merge_range_t * svn_merge_range_dup(const svn_merge_range_t *range, apr_pool_t *pool); /** * Returns true if the changeset committed in revision @a rev is one * of the changesets in the range @a range. * * @since New in 1.5. */ svn_boolean_t svn_merge_range_contains_rev(const svn_merge_range_t *range, svn_revnum_t rev); /** @defgroup node_location_seg_reporting Node location segment reporting. * @{ */ /** * A representation of a segment of an object's version history with an * emphasis on the object's location in the repository as of various * revisions. * * @since New in 1.5. */ typedef struct svn_location_segment_t { /** The beginning (oldest) and ending (youngest) revisions for this segment, both inclusive. */ svn_revnum_t range_start; svn_revnum_t range_end; /** The absolute (sans leading slash) path for this segment. May be NULL to indicate gaps in an object's history. */ const char *path; } svn_location_segment_t; /** * A callback invoked by generators of #svn_location_segment_t * objects, used to report information about a versioned object's * history in terms of its location in the repository filesystem over * time. */ typedef svn_error_t *(*svn_location_segment_receiver_t)( svn_location_segment_t *segment, void *baton, apr_pool_t *pool); /** * Return a deep copy of @a segment, allocated in @a pool. * * @since New in 1.5. */ svn_location_segment_t * svn_location_segment_dup(const svn_location_segment_t *segment, apr_pool_t *pool); /** @} */ /** A line number, such as in a file or a stream. * * @since New in 1.7. */ typedef unsigned long svn_linenum_t; /** The maximum value of an svn_linenum_t. * * @since New in 1.7. */ #define SVN_LINENUM_MAX_VALUE ULONG_MAX #ifdef __cplusplus } #endif /* __cplusplus */ /* * Everybody and their brother needs to deal with svn_error_t, the error * codes, and whatever else. While they *should* go and include svn_error.h * in order to do that... bah. Let's just help everybody out and include * that header whenever somebody grabs svn_types.h. * * Note that we do this at the END of this header so that its contents * are available to svn_error.h (our guards will prevent the circular * include). We also need to do the include *outside* of the cplusplus * guard. */ #include "svn_error.h" /* * Subversion developers may want to use some additional debugging facilities * while working on the code. We'll pull that in here, so individual source * files don't have to include this header manually. */ #ifdef SVN_DEBUG #include "private/svn_debug.h" #endif #endif /* SVN_TYPES_H */ diff --git a/contrib/subversion/subversion/include/svn_version.h b/contrib/subversion/subversion/include/svn_version.h index 25bbe542df5b..69e886cc5437 100644 --- a/contrib/subversion/subversion/include/svn_version.h +++ b/contrib/subversion/subversion/include/svn_version.h @@ -1,452 +1,452 @@ /** * @copyright * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * @endcopyright * * @file svn_version.h * @brief Version information. */ #ifndef SVN_VERSION_H #define SVN_VERSION_H /* Hack to prevent the resource compiler from including apr and other headers. */ #ifndef SVN_WIN32_RESOURCE_COMPILATION #include #include #include "svn_types.h" #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Symbols that define the version number. */ /* Version numbers: .. * * The version numbers in this file follow the rules established by: * * http://apr.apache.org/versioning.html */ /** Major version number. * * Modify when incompatible changes are made to published interfaces. */ #define SVN_VER_MAJOR 1 /** Minor version number. * * Modify when new functionality is added or new interfaces are * defined, but all changes are backward compatible. */ #define SVN_VER_MINOR 14 /** * Patch number. * * Modify for every released patch. * * @since New in 1.1. */ -#define SVN_VER_PATCH 0 +#define SVN_VER_PATCH 1 /** @deprecated Provided for backward compatibility with the 1.0 API. */ #define SVN_VER_MICRO SVN_VER_PATCH /** @deprecated Provided for backward compatibility with the 1.0 API. */ #define SVN_VER_LIBRARY SVN_VER_MAJOR /** Version tag: a string describing the version. * * This tag remains " (under development)" in the repository so that we can * always see from "svn --version" that the software has been built * from the repository rather than a "blessed" distribution. * * When rolling a tarball, we automatically replace this text with " (r1234)" * (where 1234 is the last revision on the branch prior to the release) * for final releases; in prereleases, it becomes " (Alpha 1)", * " (Beta 1)", etc., as appropriate. * * Always change this at the same time as SVN_VER_NUMTAG. */ -#define SVN_VER_TAG " (r1876290)" +#define SVN_VER_TAG " (r1886195)" /** Number tag: a string describing the version. * * This tag is used to generate a version number string to identify * the client and server in HTTP requests, for example. It must not * contain any spaces. This value remains "-dev" in the repository. * * When rolling a tarball, we automatically replace this text with "" * for final releases; in prereleases, it becomes "-alpha1, "-beta1", * etc., as appropriate. * * Always change this at the same time as SVN_VER_TAG. */ #define SVN_VER_NUMTAG "" /** Revision number: The repository revision number of this release. * * This constant is used to generate the build number part of the Windows * file version. Its value remains 0 in the repository except in release * tags where it is the revision from which the tag was created. */ -#define SVN_VER_REVISION 1876290 +#define SVN_VER_REVISION 1886195 /* Version strings composed from the above definitions. */ /** Version number */ #define SVN_VER_NUM APR_STRINGIFY(SVN_VER_MAJOR) \ "." APR_STRINGIFY(SVN_VER_MINOR) \ "." APR_STRINGIFY(SVN_VER_PATCH) /** Version number with tag (contains no whitespace) */ #define SVN_VER_NUMBER SVN_VER_NUM SVN_VER_NUMTAG /** Complete version string */ #define SVN_VERSION SVN_VER_NUMBER SVN_VER_TAG /* Version queries and compatibility checks */ /** * Version information. Each library contains a function called * svn_libname_version() that returns a pointer to a statically * allocated object of this type. * * @since New in 1.1. */ struct svn_version_t { int major; /**< Major version number */ int minor; /**< Minor version number */ int patch; /**< Patch number */ /** * The version tag (#SVN_VER_NUMTAG). Must always point to a * statically allocated string. */ const char *tag; }; /** * Define a static svn_version_t object. * * @since New in 1.1. */ #define SVN_VERSION_DEFINE(name) \ static const svn_version_t name = \ { \ SVN_VER_MAJOR, \ SVN_VER_MINOR, \ SVN_VER_PATCH, \ SVN_VER_NUMTAG \ } \ /** * Generate the implementation of a version query function. * * @since New in 1.1. * @since Since 1.9, embeds a string into the compiled object * file that can be queried with the 'what' utility. */ #define SVN_VERSION_BODY \ static struct versioninfo_t \ { \ const char *const str; \ const svn_version_t num; \ } const versioninfo = \ { \ "@(#)" SVN_VERSION, \ { \ SVN_VER_MAJOR, \ SVN_VER_MINOR, \ SVN_VER_PATCH, \ SVN_VER_NUMTAG \ } \ }; \ return &versioninfo.num /** * Check library version compatibility. Return #TRUE if the client's * version, given in @a my_version, is compatible with the library * version, provided in @a lib_version. * * This function checks for version compatibility as per our * guarantees, but requires an exact match when linking to an * unreleased library. A development client is always compatible with * a previous released library. * * @note Implements the #svn_ver_check_list2.@a comparator interface. * * @since New in 1.1. */ svn_boolean_t svn_ver_compatible(const svn_version_t *my_version, const svn_version_t *lib_version); /** * Check if @a my_version and @a lib_version encode the same version number. * * @note Implements the #svn_ver_check_list2.@a comparator interface. * * @since New in 1.2. */ svn_boolean_t svn_ver_equal(const svn_version_t *my_version, const svn_version_t *lib_version); /** * An entry in the compatibility checklist. * @see svn_ver_check_list() * * @since New in 1.1. */ typedef struct svn_version_checklist_t { const char *label; /**< Entry label */ /** Version query function for this entry */ const svn_version_t *(*version_query)(void); } svn_version_checklist_t; /** * Perform a series of version compatibility checks. Checks if @a * my_version is compatible with each entry in @a checklist. @a * checklist must end with an entry whose label is @c NULL. * * @a my_version is considered to be compatible with a version in @a checklist * if @a comparator returns #TRUE when called with @a my_version as the first * parammeter and the @a checklist version as the second parameter. * * @see svn_ver_compatible(), svn_ver_equal() * * @note Subversion's own code invariably uses svn_ver_equal() as @a comparator, * since the cmdline tools sometimes use non-public APIs (such as utility * functions that haven't been promoted to svn_cmdline.h). Third-party code * SHOULD use svn_ver_compatible() as @a comparator. * * @since New in 1.9. */ svn_error_t * svn_ver_check_list2(const svn_version_t *my_version, const svn_version_checklist_t *checklist, svn_boolean_t (*comparator)(const svn_version_t *, const svn_version_t *)); /** Similar to svn_ver_check_list2(), with @a comparator set to * #svn_ver_compatible. * * @deprecated Provided for backward compatibility with 1.8 API. */ SVN_DEPRECATED svn_error_t * svn_ver_check_list(const svn_version_t *my_version, const svn_version_checklist_t *checklist); /** * Type of function returning library version. * * @since New in 1.6. */ typedef const svn_version_t *(*svn_version_func_t)(void); /* libsvn_subr doesn't have an svn_subr header, so put the prototype here. */ /** * Get libsvn_subr version information. * * @since New in 1.1. */ const svn_version_t * svn_subr_version(void); /** * Extended version information, including info about the running system. * * @since New in 1.8. */ typedef struct svn_version_extended_t svn_version_extended_t; /** * Return version information for the running program. If @a verbose * is #TRUE, collect extra information that may be expensive to * retrieve (for example, the OS release name, list of shared * libraries, etc.). Use @a pool for all allocations. * * @note This function may allocate significant auxiliary resources * (memory and file descriptors) in @a pool. It is recommended to * copy the returned data to suitable longer-lived memory and clear * @a pool after calling this function. * * @since New in 1.8. */ const svn_version_extended_t * svn_version_extended(svn_boolean_t verbose, apr_pool_t *pool); /** * Accessor for svn_version_extended_t. * * @return The date when the libsvn_subr library was compiled, in the * format defined by the C standard macro @c __DATE__. * * @since New in 1.8. */ const char * svn_version_ext_build_date(const svn_version_extended_t *ext_info); /** * Accessor for svn_version_extended_t. * * @return The time when the libsvn_subr library was compiled, in the * format defined by the C standard macro @c __TIME__. * * @since New in 1.8. */ const char * svn_version_ext_build_time(const svn_version_extended_t *ext_info); /** * Accessor for svn_version_extended_t. * * @return The canonical host triplet (arch-vendor-osname) of the * system where libsvn_subr was compiled. * * @note On Unix-like systems (includng Mac OS X), this string is the * same as the output of the config.guess script. * * @since New in 1.8. */ const char * svn_version_ext_build_host(const svn_version_extended_t *ext_info); /** * Accessor for svn_version_extended_t. * * @return The localized copyright notice. * * @since New in 1.8. */ const char * svn_version_ext_copyright(const svn_version_extended_t *ext_info); /** * Accessor for svn_version_extended_t. * * @return The canonical host triplet (arch-vendor-osname) of the * system where the current process is running. * * @note This string may not be the same as the output of config.guess * on the same system. * * @since New in 1.8. */ const char * svn_version_ext_runtime_host(const svn_version_extended_t *ext_info); /** * Accessor for svn_version_extended_t. * * @return The "commercial" release name of the running operating * system, if available. Not to be confused with, e.g., the output of * "uname -v" or "uname -r". The returned value may be @c NULL. * * @since New in 1.8. */ const char * svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info); /** * Dependent library information. * Describes the name and versions of known dependencies * used by libsvn_subr. * * @since New in 1.8. */ typedef struct svn_version_ext_linked_lib_t { const char *name; /**< Library name */ const char *compiled_version; /**< Compile-time version string */ const char *runtime_version; /**< Run-time version string (optional) */ } svn_version_ext_linked_lib_t; /** * Accessor for svn_version_extended_t. * * @return Array of svn_version_ext_linked_lib_t describing dependent * libraries. The returned value may be @c NULL. * * @since New in 1.8. */ const apr_array_header_t * svn_version_ext_linked_libs(const svn_version_extended_t *ext_info); /** * Loaded shared library information. * Describes the name and, where available, version of the shared libraries * loaded by the running program. * * @since New in 1.8. */ typedef struct svn_version_ext_loaded_lib_t { const char *name; /**< Library name */ const char *version; /**< Library version (optional) */ } svn_version_ext_loaded_lib_t; /** * Accessor for svn_version_extended_t. * * @return Array of svn_version_ext_loaded_lib_t describing loaded * shared libraries. The returned value may be @c NULL. * * @note On Mac OS X, the loaded frameworks, private frameworks and * system libraries will not be listed. * * @since New in 1.8. */ const apr_array_header_t * svn_version_ext_loaded_libs(const svn_version_extended_t *ext_info); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* SVN_VERSION_H */ diff --git a/contrib/subversion/subversion/libsvn_client/merge.c b/contrib/subversion/subversion/libsvn_client/merge.c index 9d9a1c300a10..e535647d8649 100644 --- a/contrib/subversion/subversion/libsvn_client/merge.c +++ b/contrib/subversion/subversion/libsvn_client/merge.c @@ -1,12922 +1,12946 @@ /* * merge.c: merging * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ /* ==================================================================== */ /*** Includes ***/ #include #include #include #include #include "svn_types.h" #include "svn_hash.h" #include "svn_wc.h" #include "svn_delta.h" #include "svn_diff.h" #include "svn_mergeinfo.h" #include "svn_client.h" #include "svn_string.h" #include "svn_error.h" #include "svn_dirent_uri.h" #include "svn_path.h" #include "svn_io.h" #include "svn_utf.h" #include "svn_pools.h" #include "svn_config.h" #include "svn_props.h" #include "svn_time.h" #include "svn_sorts.h" #include "svn_subst.h" #include "svn_ra.h" #include "client.h" #include "mergeinfo.h" #include "private/svn_fspath.h" #include "private/svn_mergeinfo_private.h" #include "private/svn_client_private.h" #include "private/svn_sorts_private.h" #include "private/svn_subr_private.h" #include "private/svn_wc_private.h" #include "svn_private_config.h" /*-----------------------------------------------------------------------*/ /* MERGEINFO MERGE SOURCE NORMALIZATION * * Nearly any helper function herein that accepts two URL/revision * pairs (or equivalent struct merge_source_t) expects one of two things * to be true: * * 1. that mergeinfo is not being recorded at all for this * operation, or * * 2. that the pairs represent two locations along a single line * of version history such that there are no copies in the * history of the object between the locations when treating * the oldest of the two locations as non-inclusive. In other * words, if there is a copy at all between them, there is only * one copy and its source was the oldest of the two locations. * * We use svn_ra_get_location_segments() to split a given range of * revisions across an object's history into several which obey these * rules. For example, an extract from the log of Subversion's own * /subversion/tags/1.4.5 directory shows the following copies between * r859500 and r866500 (omitting the '/subversion' prefix for clarity): * * r859598: * A /branches/1.4.x (from /trunk:859597) * * r865417: * A /tags/1.4.4 (from /branches/1.4.x:865262) * # Notice that this copy leaves a gap between 865262 and 865417. * * r866420: * A /branches/1.4.5 (from /tags/1.4.4:866419) * * r866425: * D /branches/1.4.5 * A /tags/1.4.5 (from /branches/1.4.5:866424) * * In graphical form: * * 859500 859597 865262 866419 866424 866500 * . . . . . . * trunk ------------------------------------------------ * \ . . . * branches/1.4.x A------------------------------------- * . \______ . . * . \ . . * tags/1.4.4 . A----------------------- * . . \ . * branches/1.4.5 . . A------D * . . . \. * tags/1.4.5 . . . A--------- * . . . . * 859598 865417 866420 866425 * * A merge of the difference between r859500 and r866500 of this directory * gets split into sequential merges of the following location pairs. * * 859500 859597 865262 865416 866419 866424 866500 * . . . . . . . * trunk (======] . . . . . * . . . . . * trunk ( . . . . . * branches/1.4.x ======] . . . . * . . . . * branches/1.4.x ( . . . . * tags/1.4.4 =============] . . * implicit_src_gap (======] . . . * . . . * tags/1.4.4 ( . . * branches/1.4.5 ======] . * . . * branches/1.4.5 ( . * tags/1.4.5 ======] * * which are represented in merge_source_t as: * * [/trunk:859500, /trunk:859597] * (recorded in svn:mergeinfo as /trunk:859501-859597) * * [/trunk:859597, /branches/1.4.x:865262] * (recorded in svn:mergeinfo as /branches/1.4.x:859598-865262) * * [/branches/1.4.x:865262, /tags/1.4.4@866419] * (recorded in svn:mergeinfo as /tags/1.4.4:865263-866419) * (and there is a gap, the revision range [865262, 865416]) * * [/tags/1.4.4@866419, /branches/1.4.5@866424] * (recorded in svn:mergeinfo as /branches/1.4.5:866420-866424) * * [/branches/1.4.5@866424, /tags/1.4.5@866500] * (recorded in svn:mergeinfo as /tags/1.4.5:866425-866500) * * Our helper functions would then operate on one of these location * pairs at a time. */ /* WHICH SVN_CLIENT_MERGE* API DO I WANT? * * libsvn_client has three public merge APIs; they are all wrappers * around the do_merge engine. Which one to use depends on the number * of URLs passed as arguments and whether or not specific merge * ranges (-c/-r) are specified. * * 1 URL 2 URLs * +----+--------------------------------+---------------------+ * | -c | mergeinfo-driven | | * | or | cherrypicking | | * | -r | (svn_client_merge_peg) | | * |----+--------------------------------+ | * | | mergeinfo-driven | unsupported | * | | 'cherry harvest', i.e. merge | | * | | all revisions from URL that | | * | no | have not already been merged | | * | -c | (svn_client_merge_peg) | | * | or +--------------------------------+---------------------+ * | -r | mergeinfo-driven | mergeinfo-writing | * | | whole-branch | diff-and-apply | * | | heuristic merge | (svn_client_merge) | * | | (svn_client_merge_reintegrate) | | * +----+--------------------------------+---------------------+ * * */ /* THE CHILDREN_WITH_MERGEINFO ARRAY * * Many of the helper functions in this file pass around an * apr_array_header_t *CHILDREN_WITH_MERGEINFO. This is a depth first * sorted array filled with svn_client__merge_path_t * describing the * merge target and any of its subtrees which have explicit mergeinfo * or otherwise need special attention during a merge. * * During mergeinfo unaware merges, CHILDREN_WITH_MERGEINFO contains * contains only one element (added by do_mergeinfo_unaware_dir_merge) * describing a contiguous range to be merged to the WC merge target. * * During mergeinfo aware merges CHILDREN_WITH_MERGEINFO is created * by get_mergeinfo_paths() and outside of that function and its helpers * should always meet the criteria dictated in get_mergeinfo_paths()'s doc * string. The elements of CHILDREN_WITH_MERGEINFO should never be NULL. * * For clarification on mergeinfo aware vs. mergeinfo unaware merges, see * the doc string for HONOR_MERGEINFO(). */ /*-----------------------------------------------------------------------*/ /*** Repos-Diff Editor Callbacks ***/ struct merge_cmd_baton_t; struct notify_begin_state_t { /* Cache of which abspath was last notified. */ const char *last_abspath; /* Reference to the main merge baton */ struct merge_cmd_baton_t *merge_b; /* the wrapped notification callback */ svn_wc_notify_func2_t notify_func2; void *notify_baton2; }; typedef struct merge_cmd_baton_t { svn_boolean_t force_delete; /* Delete a file/dir even if modified */ svn_boolean_t dry_run; svn_boolean_t record_only; /* Whether to merge only mergeinfo differences. */ svn_boolean_t same_repos; /* Whether the merge source repository is the same repository as the target. Defaults to FALSE if DRY_RUN is TRUE.*/ svn_boolean_t mergeinfo_capable; /* Whether the merge source server is capable of Merge Tracking. */ svn_boolean_t ignore_mergeinfo; /* Don't honor mergeinfo; see doc string of do_merge(). FALSE if MERGE_SOURCE->ancestral is FALSE. */ svn_boolean_t diff_ignore_ancestry; /* Diff unrelated nodes as if related; see doc string of do_merge(). FALSE if MERGE_SOURCE->ancestral is FALSE. */ svn_boolean_t reintegrate_merge; /* Whether this is a --reintegrate merge or not. */ const merge_target_t *target; /* Description of merge target node */ /* The left and right URLs and revs. The value of this field changes to reflect the merge_source_t *currently* being merged by do_merge(). */ merge_source_t merge_source; /* Rangelist containing single range which describes the gap, if any, in the natural history of the merge source currently being processed. See https://issues.apache.org/jira/browse/SVN-3432. Updated during each call to do_directory_merge(). May be NULL if there is no gap. */ svn_rangelist_t *implicit_src_gap; /* Reference to the one-and-only CHILDREN_WITH_MERGEINFO (see global comment) or a similar list for single-file-merges */ - const apr_array_header_t *children_with_mergeinfo; + apr_array_header_t *children_with_mergeinfo; svn_client_ctx_t *ctx; /* Client context for callbacks, etc. */ /* The list of any paths which remained in conflict after a resolution attempt was made. We track this in-memory, rather than just using WC entry state, since the latter doesn't help us when in dry_run mode. ### And because we only want to resolve conflicts that were generated by this merge, not pre-existing ones? */ apr_hash_t *conflicted_paths; /* A list of absolute paths which had no explicit mergeinfo prior to the merge but got explicit mergeinfo added by the merge. This is populated by merge_change_props() and is allocated in POOL so it is subject to the lifetime limitations of POOL. Is NULL if no paths are found which meet the criteria or DRY_RUN is true. */ apr_hash_t *paths_with_new_mergeinfo; /* A list of absolute paths whose mergeinfo doesn't need updating after the merge. This can be caused by the removal of mergeinfo by the merge or by deleting the node itself. This is populated by merge_change_props() and the delete callbacks and is allocated in POOL so it is subject to the lifetime limitations of POOL. Is NULL if no paths are found which meet the criteria or DRY_RUN is true. */ apr_hash_t *paths_with_deleted_mergeinfo; /* The list of absolute skipped paths, which should be examined and cleared after each invocation of the callback. The paths are absolute. Is NULL if MERGE_B->MERGE_SOURCE->ancestral and MERGE_B->REINTEGRATE_MERGE are both false. */ apr_hash_t *skipped_abspaths; /* The list of absolute merged paths. Unused if MERGE_B->MERGE_SOURCE->ancestral and MERGE_B->REINTEGRATE_MERGE are both false. */ apr_hash_t *merged_abspaths; /* A hash of (const char *) absolute WC paths mapped to the same which represent the roots of subtrees added by the merge. */ apr_hash_t *added_abspaths; /* A list of tree conflict victim absolute paths which may be NULL. */ apr_hash_t *tree_conflicted_abspaths; /* The diff3_cmd in ctx->config, if any, else null. We could just extract this as needed, but since more than one caller uses it, we just set it up when this baton is created. */ const char *diff3_cmd; const apr_array_header_t *merge_options; /* Array of file extension patterns to preserve as extensions in generated conflict files. */ const apr_array_header_t *ext_patterns; /* RA sessions used throughout a merge operation. Opened/re-parented as needed. NOTE: During the actual merge editor drive, RA_SESSION1 is used for the primary editing and RA_SESSION2 for fetching additional information -- as necessary -- from the repository. So during this phase of the merge, you *must not* reparent RA_SESSION1; use (temporarily reparenting if you must) RA_SESSION2 instead. */ svn_ra_session_t *ra_session1; svn_ra_session_t *ra_session2; /* During the merge, *USE_SLEEP is set to TRUE if a sleep will be required afterwards to ensure timestamp integrity, or unchanged if not. */ svn_boolean_t *use_sleep; /* Pool which has a lifetime limited to one iteration over a given merge source, i.e. it is cleared on every call to do_directory_merge() or do_file_merge() in do_merge(). */ apr_pool_t *pool; /* Our notification callback, that adds a 'begin' notification */ svn_wc_notify_func2_t notify_func; void *notify_baton; struct notify_begin_state_t notify_begin; } merge_cmd_baton_t; /* Return TRUE iff we should be taking account of mergeinfo in deciding what changes to merge, for the merge described by MERGE_B. Specifically, that is if the merge source server is capable of merge tracking, the left-side merge source is an ancestor of the right-side (or vice-versa), the merge source is in the same repository as the merge target, and we are not ignoring mergeinfo. */ static svn_boolean_t HONOR_MERGEINFO(const merge_cmd_baton_t *merge_b) { return (merge_b->mergeinfo_capable && merge_b->merge_source.ancestral && merge_b->same_repos && (!merge_b->ignore_mergeinfo)); } /* Return TRUE iff we should be recording mergeinfo for the merge described by MERGE_B. Specifically, that is if we are honoring mergeinfo and the merge is not a dry run. */ static svn_boolean_t RECORD_MERGEINFO(const merge_cmd_baton_t *merge_b) { return (HONOR_MERGEINFO(merge_b) && !merge_b->dry_run); } /*-----------------------------------------------------------------------*/ /*** Utilities ***/ /* Return TRUE iff the session URL of RA_SESSION is equal to URL. Useful in * asserting preconditions. */ static svn_boolean_t session_url_is(svn_ra_session_t *ra_session, const char *url, apr_pool_t *scratch_pool) { const char *session_url; svn_error_t *err = svn_ra_get_session_url(ra_session, &session_url, scratch_pool); SVN_ERR_ASSERT_NO_RETURN(! err); return strcmp(url, session_url) == 0; } /* Return a new merge_source_t structure, allocated in RESULT_POOL, * initialized with deep copies of LOC1 and LOC2 and ANCESTRAL. */ static merge_source_t * merge_source_create(const svn_client__pathrev_t *loc1, const svn_client__pathrev_t *loc2, svn_boolean_t ancestral, apr_pool_t *result_pool) { merge_source_t *s = apr_palloc(result_pool, sizeof(*s)); s->loc1 = svn_client__pathrev_dup(loc1, result_pool); s->loc2 = svn_client__pathrev_dup(loc2, result_pool); s->ancestral = ancestral; return s; } /* Return a deep copy of SOURCE, allocated in RESULT_POOL. */ static merge_source_t * merge_source_dup(const merge_source_t *source, apr_pool_t *result_pool) { merge_source_t *s = apr_palloc(result_pool, sizeof(*s)); s->loc1 = svn_client__pathrev_dup(source->loc1, result_pool); s->loc2 = svn_client__pathrev_dup(source->loc2, result_pool); s->ancestral = source->ancestral; return s; } /* Return SVN_ERR_UNSUPPORTED_FEATURE if URL is not inside the repository of LOCAL_ABSPATH. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * check_repos_match(const merge_target_t *target, const char *local_abspath, const char *url, apr_pool_t *scratch_pool) { if (!svn_uri__is_ancestor(target->loc.repos_root_url, url)) return svn_error_createf( SVN_ERR_UNSUPPORTED_FEATURE, NULL, _("URL '%s' of '%s' is not in repository '%s'"), url, svn_dirent_local_style(local_abspath, scratch_pool), target->loc.repos_root_url); return SVN_NO_ERROR; } /* Return TRUE iff the repository of LOCATION1 is the same as * that of LOCATION2. If STRICT_URLS is true, the URLs must * match (and the UUIDs, just to be sure), otherwise just the UUIDs must * match and the URLs can differ (a common case is http versus https). */ static svn_boolean_t is_same_repos(const svn_client__pathrev_t *location1, const svn_client__pathrev_t *location2, svn_boolean_t strict_urls) { if (strict_urls) return (strcmp(location1->repos_root_url, location2->repos_root_url) == 0 && strcmp(location1->repos_uuid, location2->repos_uuid) == 0); else return (strcmp(location1->repos_uuid, location2->repos_uuid) == 0); } /* If the repository identified of LOCATION1 is not the same as that * of LOCATION2, throw a SVN_ERR_CLIENT_UNRELATED_RESOURCES * error mentioning PATH1 and PATH2. For STRICT_URLS, see is_same_repos(). */ static svn_error_t * check_same_repos(const svn_client__pathrev_t *location1, const char *path1, const svn_client__pathrev_t *location2, const char *path2, svn_boolean_t strict_urls, apr_pool_t *scratch_pool) { if (! is_same_repos(location1, location2, strict_urls)) return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL, _("'%s' must be from the same repository as " "'%s'"), path1, path2); return SVN_NO_ERROR; } /* Store LOCAL_ABSPATH in PATH_HASH after duplicating it into the pool containing PATH_HASH. */ static APR_INLINE void store_path(apr_hash_t *path_hash, const char *local_abspath) { const char *dup_path = apr_pstrdup(apr_hash_pool_get(path_hash), local_abspath); svn_hash_sets(path_hash, dup_path, dup_path); } /* Store LOCAL_ABSPATH in *PATH_HASH_P after duplicating it into the pool containing *PATH_HASH_P. If *PATH_HASH_P is NULL, then first set *PATH_HASH_P to a new hash allocated from POOL. */ static APR_INLINE void alloc_and_store_path(apr_hash_t **path_hash_p, const char *local_abspath, apr_pool_t *pool) { if (! *path_hash_p) *path_hash_p = apr_hash_make(pool); store_path(*path_hash_p, local_abspath); } /* Return whether any WC path was put in conflict by the merge operation corresponding to MERGE_B. */ static APR_INLINE svn_boolean_t is_path_conflicted_by_merge(merge_cmd_baton_t *merge_b) { return (merge_b->conflicted_paths && apr_hash_count(merge_b->conflicted_paths) > 0); } /* Return a state indicating whether the WC metadata matches the * node kind on disk of the local path LOCAL_ABSPATH. * Use MERGE_B to determine the dry-run details; particularly, if a dry run * noted that it deleted this path, assume matching node kinds (as if both * kinds were svn_node_none). * * - Return svn_wc_notify_state_inapplicable if the node kind matches. * - Return 'obstructed' if there is a node on disk where none or a * different kind is expected, or if the disk node cannot be read. * - Return 'missing' if there is no node on disk but one is expected. * Also return 'missing' for server-excluded nodes (not here due to * authz or other reasons determined by the server). * * Optionally return a bit more info for interested users. **/ static svn_error_t * perform_obstruction_check(svn_wc_notify_state_t *obstruction_state, svn_boolean_t *deleted, svn_boolean_t *excluded, svn_node_kind_t *kind, svn_depth_t *parent_depth, const merge_cmd_baton_t *merge_b, const char *local_abspath, apr_pool_t *scratch_pool) { svn_wc_context_t *wc_ctx = merge_b->ctx->wc_ctx; svn_node_kind_t wc_kind; svn_boolean_t check_root; SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); *obstruction_state = svn_wc_notify_state_inapplicable; if (deleted) *deleted = FALSE; if (kind) *kind = svn_node_none; if (kind == NULL) kind = &wc_kind; check_root = ! strcmp(local_abspath, merge_b->target->abspath); SVN_ERR(svn_wc__check_for_obstructions(obstruction_state, kind, deleted, excluded, parent_depth, wc_ctx, local_abspath, check_root, scratch_pool)); return SVN_NO_ERROR; } /* Create *LEFT and *RIGHT conflict versions for conflict victim * at VICTIM_ABSPATH, with merge-left node kind MERGE_LEFT_NODE_KIND * and merge-right node kind MERGE_RIGHT_NODE_KIND, using information * obtained from MERGE_SOURCE and TARGET. * Allocate returned conflict versions in RESULT_POOL. */ static svn_error_t * make_conflict_versions(const svn_wc_conflict_version_t **left, const svn_wc_conflict_version_t **right, const char *victim_abspath, svn_node_kind_t merge_left_node_kind, svn_node_kind_t merge_right_node_kind, const merge_source_t *merge_source, const merge_target_t *target, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *child = svn_dirent_skip_ancestor(target->abspath, victim_abspath); const char *left_relpath, *right_relpath; SVN_ERR_ASSERT(child != NULL); left_relpath = svn_client__pathrev_relpath(merge_source->loc1, scratch_pool); right_relpath = svn_client__pathrev_relpath(merge_source->loc2, scratch_pool); *left = svn_wc_conflict_version_create2( merge_source->loc1->repos_root_url, merge_source->loc1->repos_uuid, svn_relpath_join(left_relpath, child, scratch_pool), merge_source->loc1->rev, merge_left_node_kind, result_pool); *right = svn_wc_conflict_version_create2( merge_source->loc2->repos_root_url, merge_source->loc2->repos_uuid, svn_relpath_join(right_relpath, child, scratch_pool), merge_source->loc2->rev, merge_right_node_kind, result_pool); return SVN_NO_ERROR; } /* Helper for filter_self_referential_mergeinfo() *MERGEINFO is a non-empty, non-null collection of mergeinfo. Remove all mergeinfo from *MERGEINFO that describes revision ranges greater than REVISION. Put a copy of any removed mergeinfo, allocated in POOL, into *YOUNGER_MERGEINFO. If no mergeinfo is removed from *MERGEINFO then *YOUNGER_MERGEINFO is set to NULL. If all mergeinfo is removed from *MERGEINFO then *MERGEINFO is set to NULL. */ static svn_error_t* split_mergeinfo_on_revision(svn_mergeinfo_t *younger_mergeinfo, svn_mergeinfo_t *mergeinfo, svn_revnum_t revision, apr_pool_t *pool) { apr_hash_index_t *hi; apr_pool_t *iterpool = svn_pool_create(pool); *younger_mergeinfo = NULL; for (hi = apr_hash_first(pool, *mergeinfo); hi; hi = apr_hash_next(hi)) { int i; const char *merge_source_path = apr_hash_this_key(hi); svn_rangelist_t *rangelist = apr_hash_this_val(hi); svn_pool_clear(iterpool); for (i = 0; i < rangelist->nelts; i++) { svn_merge_range_t *range = APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *); if (range->end <= revision) { /* This entirely of this range is as old or older than REVISION, so leave it in *MERGEINFO. */ continue; } else { /* Since the rangelists in svn_mergeinfo_t's are sorted in increasing order we know that part or all of *this* range and *all* of the remaining ranges in *RANGELIST are younger than REVISION. Remove the younger rangelists from *MERGEINFO and put them in *YOUNGER_MERGEINFO. */ int j; svn_rangelist_t *younger_rangelist = apr_array_make(pool, 1, sizeof(svn_merge_range_t *)); for (j = i; j < rangelist->nelts; j++) { svn_merge_range_t *younger_range = svn_merge_range_dup( APR_ARRAY_IDX(rangelist, j, svn_merge_range_t *), pool); /* REVISION might intersect with the first range where range->end > REVISION. If that is the case then split the current range into two, putting the younger half into *YOUNGER_MERGEINFO and leaving the older half in *MERGEINFO. */ if (j == i && range->start + 1 <= revision) younger_range->start = range->end = revision; APR_ARRAY_PUSH(younger_rangelist, svn_merge_range_t *) = younger_range; } /* So far we've only been manipulating rangelists, now we actually create *YOUNGER_MERGEINFO and then remove the older ranges from *MERGEINFO */ if (!(*younger_mergeinfo)) *younger_mergeinfo = apr_hash_make(pool); svn_hash_sets(*younger_mergeinfo, merge_source_path, younger_rangelist); SVN_ERR(svn_mergeinfo_remove2(mergeinfo, *younger_mergeinfo, *mergeinfo, TRUE, pool, iterpool)); break; /* ...out of for (i = 0; i < rangelist->nelts; i++) */ } } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Make a copy of PROPCHANGES (array of svn_prop_t) into *TRIMMED_PROPCHANGES, omitting any svn:mergeinfo changes. */ static svn_error_t * omit_mergeinfo_changes(apr_array_header_t **trimmed_propchanges, const apr_array_header_t *propchanges, apr_pool_t *result_pool) { int i; *trimmed_propchanges = apr_array_make(result_pool, propchanges->nelts, sizeof(svn_prop_t)); for (i = 0; i < propchanges->nelts; ++i) { const svn_prop_t *change = &APR_ARRAY_IDX(propchanges, i, svn_prop_t); /* If this property is not svn:mergeinfo, then copy it. */ if (strcmp(change->name, SVN_PROP_MERGEINFO) != 0) APR_ARRAY_PUSH(*trimmed_propchanges, svn_prop_t) = *change; } return SVN_NO_ERROR; } /* Helper for merge_props_changed(). *PROPS is an array of svn_prop_t structures representing regular properties to be added to the working copy TARGET_ABSPATH. The merge source and target are assumed to be in the same repository. Filter out mergeinfo property additions to TARGET_ABSPATH when those additions refer to the same line of history as TARGET_ABSPATH as described below. Examine the added mergeinfo, looking at each range (or single rev) of each source path. If a source_path/range refers to the same line of history as TARGET_ABSPATH (pegged at its base revision), then filter out that range. If the entire rangelist for a given path is filtered then filter out the path as well. RA_SESSION is an open RA session to the repository in which both the source and target live, else RA_SESSION is not used. It may be temporarily reparented as needed by this function. Use CTX for any further client operations. If any filtering occurs, set outgoing *PROPS to a shallow copy (allocated in POOL) of incoming *PROPS minus the filtered mergeinfo. */ static svn_error_t * filter_self_referential_mergeinfo(apr_array_header_t **props, const char *target_abspath, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *pool) { apr_array_header_t *adjusted_props; int i; apr_pool_t *iterpool; svn_boolean_t is_copy; const char *repos_relpath; svn_client__pathrev_t target_base; /* If PATH itself has been added there is no need to filter. */ SVN_ERR(svn_wc__node_get_origin(&is_copy, &target_base.rev, &repos_relpath, &target_base.repos_root_url, &target_base.repos_uuid, NULL, NULL, ctx->wc_ctx, target_abspath, FALSE, pool, pool)); if (is_copy || !repos_relpath) return SVN_NO_ERROR; /* A copy or a local addition */ target_base.url = svn_path_url_add_component2(target_base.repos_root_url, repos_relpath, pool); adjusted_props = apr_array_make(pool, (*props)->nelts, sizeof(svn_prop_t)); iterpool = svn_pool_create(pool); for (i = 0; i < (*props)->nelts; ++i) { svn_prop_t *prop = &APR_ARRAY_IDX((*props), i, svn_prop_t); svn_mergeinfo_t mergeinfo, younger_mergeinfo; svn_mergeinfo_t filtered_mergeinfo = NULL; svn_mergeinfo_t filtered_younger_mergeinfo = NULL; svn_error_t *err; /* If this property isn't mergeinfo or is NULL valued (i.e. prop removal) or empty mergeinfo it does not require any special handling. There is nothing to filter out of empty mergeinfo and the concept of filtering doesn't apply if we are trying to remove mergeinfo entirely. */ if ((strcmp(prop->name, SVN_PROP_MERGEINFO) != 0) || (! prop->value) /* Removal of mergeinfo */ || (! prop->value->len)) /* Empty mergeinfo */ { APR_ARRAY_PUSH(adjusted_props, svn_prop_t) = *prop; continue; } svn_pool_clear(iterpool); /* Non-empty mergeinfo; filter self-referential mergeinfo out. */ /* Parse the incoming mergeinfo to allow easier manipulation. */ err = svn_mergeinfo_parse(&mergeinfo, prop->value->data, iterpool); if (err) { /* Issue #3896: If we can't parse it, we certainly can't filter it. */ if (err->apr_err == SVN_ERR_MERGEINFO_PARSE_ERROR) { svn_error_clear(err); APR_ARRAY_PUSH(adjusted_props, svn_prop_t) = *prop; continue; } else { return svn_error_trace(err); } } /* The working copy target PATH is at BASE_REVISION. Divide the incoming mergeinfo into two groups. One where all revision ranges are as old or older than BASE_REVISION and one where all revision ranges are younger. Note: You may be wondering why we do this. For the incoming mergeinfo "older" than target's base revision we can filter out self-referential mergeinfo efficiently using svn_client__get_history_as_mergeinfo(). We simply look at PATH's natural history as mergeinfo and remove that from any incoming mergeinfo. For mergeinfo "younger" than the base revision we can't use svn_ra_get_location_segments() to look into PATH's future history. Instead we must use svn_client__repos_locations() and look at each incoming source/range individually and see if PATH at its base revision and PATH at the start of the incoming range exist on the same line of history. If they do then we can filter out the incoming range. But since we have to do this for each range there is a substantial performance penalty to pay if the incoming ranges are not contiguous, i.e. we call svn_client__repos_locations for each discrete range and incur the cost of a roundtrip communication with the repository. */ SVN_ERR(split_mergeinfo_on_revision(&younger_mergeinfo, &mergeinfo, target_base.rev, iterpool)); /* Filter self-referential mergeinfo from younger_mergeinfo. */ if (younger_mergeinfo) { apr_hash_index_t *hi; const char *merge_source_root_url; SVN_ERR(svn_ra_get_repos_root2(ra_session, &merge_source_root_url, iterpool)); for (hi = apr_hash_first(iterpool, younger_mergeinfo); hi; hi = apr_hash_next(hi)) { int j; const char *source_path = apr_hash_this_key(hi); svn_rangelist_t *rangelist = apr_hash_this_val(hi); const char *merge_source_url; svn_rangelist_t *adjusted_rangelist = apr_array_make(iterpool, 0, sizeof(svn_merge_range_t *)); merge_source_url = svn_path_url_add_component2(merge_source_root_url, source_path + 1, iterpool); for (j = 0; j < rangelist->nelts; j++) { svn_error_t *err2; svn_client__pathrev_t *start_loc; svn_merge_range_t *range = APR_ARRAY_IDX(rangelist, j, svn_merge_range_t *); /* Because the merge source normalization code ensures mergeinfo refers to real locations on the same line of history, there's no need to look at the whole range, just the start. */ /* Check if PATH@BASE_REVISION exists at RANGE->START on the same line of history. (start+1 because RANGE->start is not inclusive.) */ err2 = svn_client__repos_location(&start_loc, ra_session, &target_base, range->start + 1, ctx, iterpool, iterpool); if (err2) { if (err2->apr_err == SVN_ERR_CLIENT_UNRELATED_RESOURCES || err2->apr_err == SVN_ERR_FS_NOT_FOUND || err2->apr_err == SVN_ERR_FS_NO_SUCH_REVISION) { /* PATH@BASE_REVISION didn't exist at RANGE->START + 1 or is unrelated to the resource PATH@RANGE->START. Some of the requested revisions may not even exist in the repository; a real possibility since mergeinfo is hand editable. In all of these cases clear and ignore the error and don't do any filtering. Note: In this last case it is possible that we will allow self-referential mergeinfo to be applied, but fixing it here is potentially very costly in terms of finding what part of a range is actually valid. Simply allowing the merge to proceed without filtering the offending range seems the least worst option. */ svn_error_clear(err2); err2 = NULL; APR_ARRAY_PUSH(adjusted_rangelist, svn_merge_range_t *) = range; } else { return svn_error_trace(err2); } } else { /* PATH@BASE_REVISION exists on the same line of history at RANGE->START and RANGE->END. Now check that PATH@BASE_REVISION's path names at RANGE->START and RANGE->END are the same. If the names are not the same then the mergeinfo describing PATH@RANGE->START through PATH@RANGE->END actually belong to some other line of history and we want to record this mergeinfo, not filter it. */ if (strcmp(start_loc->url, merge_source_url) != 0) { APR_ARRAY_PUSH(adjusted_rangelist, svn_merge_range_t *) = range; } } /* else no need to add, this mergeinfo is all on the same line of history. */ } /* for (j = 0; j < rangelist->nelts; j++) */ /* Add any rangelists for source_path that are not self-referential. */ if (adjusted_rangelist->nelts) { if (!filtered_younger_mergeinfo) filtered_younger_mergeinfo = apr_hash_make(iterpool); svn_hash_sets(filtered_younger_mergeinfo, source_path, adjusted_rangelist); } } /* Iteration over each merge source in younger_mergeinfo. */ } /* if (younger_mergeinfo) */ /* Filter self-referential mergeinfo from "older" mergeinfo. */ if (mergeinfo) { svn_mergeinfo_t implicit_mergeinfo; SVN_ERR(svn_client__get_history_as_mergeinfo( &implicit_mergeinfo, NULL, &target_base, target_base.rev, SVN_INVALID_REVNUM, ra_session, ctx, iterpool)); /* Remove PATH's implicit mergeinfo from the incoming mergeinfo. */ SVN_ERR(svn_mergeinfo_remove2(&filtered_mergeinfo, implicit_mergeinfo, mergeinfo, TRUE, iterpool, iterpool)); } /* Combine whatever older and younger filtered mergeinfo exists into filtered_mergeinfo. */ if (filtered_mergeinfo && filtered_younger_mergeinfo) SVN_ERR(svn_mergeinfo_merge2(filtered_mergeinfo, filtered_younger_mergeinfo, iterpool, iterpool)); else if (filtered_younger_mergeinfo) filtered_mergeinfo = filtered_younger_mergeinfo; /* If there is any incoming mergeinfo remaining after filtering then put it in adjusted_props. */ if (filtered_mergeinfo && apr_hash_count(filtered_mergeinfo)) { /* Convert filtered_mergeinfo to a svn_prop_t and put it back in the array. */ svn_string_t *filtered_mergeinfo_str; svn_prop_t *adjusted_prop = apr_pcalloc(pool, sizeof(*adjusted_prop)); SVN_ERR(svn_mergeinfo_to_string(&filtered_mergeinfo_str, filtered_mergeinfo, pool)); adjusted_prop->name = SVN_PROP_MERGEINFO; adjusted_prop->value = filtered_mergeinfo_str; APR_ARRAY_PUSH(adjusted_props, svn_prop_t) = *adjusted_prop; } } svn_pool_destroy(iterpool); *props = adjusted_props; return SVN_NO_ERROR; } /* Prepare a set of property changes PROPCHANGES to be used for a merge operation on LOCAL_ABSPATH. Remove all non-regular prop-changes (entry-props and WC-props). Remove all non-mergeinfo prop-changes if it's a record-only merge. Remove self-referential mergeinfo (### in some cases...) Remove foreign-repository mergeinfo (### in some cases...) Store the resulting property changes in *PROP_UPDATES. Store information on where mergeinfo is updated in MERGE_B. Used for both file and directory property merges. */ static svn_error_t * prepare_merge_props_changed(const apr_array_header_t **prop_updates, const char *local_abspath, const apr_array_header_t *propchanges, merge_cmd_baton_t *merge_b, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_array_header_t *props; SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); /* We only want to merge "regular" version properties: by definition, 'svn merge' shouldn't touch any data within .svn/ */ SVN_ERR(svn_categorize_props(propchanges, NULL, NULL, &props, result_pool)); /* If we are only applying mergeinfo changes then we need to do additional filtering of PROPS so it contains only mergeinfo changes. */ if (merge_b->record_only && props->nelts) { apr_array_header_t *mergeinfo_props = apr_array_make(result_pool, 1, sizeof(svn_prop_t)); int i; for (i = 0; i < props->nelts; i++) { svn_prop_t *prop = &APR_ARRAY_IDX(props, i, svn_prop_t); if (strcmp(prop->name, SVN_PROP_MERGEINFO) == 0) { APR_ARRAY_PUSH(mergeinfo_props, svn_prop_t) = *prop; break; } } props = mergeinfo_props; } if (props->nelts) { /* Issue #3383: We don't want mergeinfo from a foreign repos. If this is a merge from a foreign repository we must strip all incoming mergeinfo (including mergeinfo deletions). */ if (! merge_b->same_repos) SVN_ERR(omit_mergeinfo_changes(&props, props, result_pool)); /* If this is a forward merge then don't add new mergeinfo to PATH that is already part of PATH's own history, see http://svn.haxx.se/dev/archive-2008-09/0006.shtml. If the merge sources are not ancestral then there is no concept of a 'forward' or 'reverse' merge and we filter unconditionally. */ if (merge_b->merge_source.loc1->rev < merge_b->merge_source.loc2->rev || !merge_b->merge_source.ancestral) { if (HONOR_MERGEINFO(merge_b) || merge_b->reintegrate_merge) SVN_ERR(filter_self_referential_mergeinfo(&props, local_abspath, merge_b->ra_session2, merge_b->ctx, result_pool)); } } *prop_updates = props; /* Make a record in BATON if we find a PATH where mergeinfo is added where none existed previously or PATH is having its existing mergeinfo deleted. */ if (props->nelts) { int i; for (i = 0; i < props->nelts; ++i) { svn_prop_t *prop = &APR_ARRAY_IDX(props, i, svn_prop_t); if (strcmp(prop->name, SVN_PROP_MERGEINFO) == 0) { /* Does LOCAL_ABSPATH have any pristine mergeinfo? */ svn_boolean_t has_pristine_mergeinfo = FALSE; apr_hash_t *pristine_props; SVN_ERR(svn_wc_get_pristine_props(&pristine_props, merge_b->ctx->wc_ctx, local_abspath, scratch_pool, scratch_pool)); if (pristine_props && svn_hash_gets(pristine_props, SVN_PROP_MERGEINFO)) has_pristine_mergeinfo = TRUE; if (!has_pristine_mergeinfo && prop->value) { alloc_and_store_path(&merge_b->paths_with_new_mergeinfo, local_abspath, merge_b->pool); } else if (has_pristine_mergeinfo && !prop->value) { alloc_and_store_path(&merge_b->paths_with_deleted_mergeinfo, local_abspath, merge_b->pool); } } } } return SVN_NO_ERROR; } #define CONFLICT_REASON_NONE ((svn_wc_conflict_reason_t)-1) #define CONFLICT_REASON_SKIP ((svn_wc_conflict_reason_t)-2) #define CONFLICT_REASON_SKIP_WC ((svn_wc_conflict_reason_t)-3) /* Baton used for testing trees for being editted while performing tree conflict detection for incoming deletes */ struct dir_delete_baton_t { /* Reference to dir baton of directory that is the root of the deletion */ struct merge_dir_baton_t *del_root; /* Boolean indicating that some edit is found. Allows avoiding more work */ svn_boolean_t found_edit; /* A list of paths that are compared. Kept up to date until FOUND_EDIT is set to TRUE */ apr_hash_t *compared_abspaths; }; /* Baton for the merge_dir_*() functions. Initialized in merge_dir_opened() */ struct merge_dir_baton_t { /* Reference to the parent baton, unless the parent is the anchor, in which case PARENT_BATON is NULL */ struct merge_dir_baton_t *parent_baton; /* The pool containing this baton. Use for RESULT_POOL for storing in this baton */ apr_pool_t *pool; /* This directory doesn't have a representation in the working copy, so any operation on it will be skipped and possibly cause a tree conflict on the shadow root */ svn_boolean_t shadowed; /* This node or one of its descendants received operational changes from the merge. If this node is the shadow root its tree conflict status has been applied */ svn_boolean_t edited; /* If a tree conflict will be installed once edited, it's reason. If a skip should be produced its reason. Otherwise CONFLICT_REASON_NONE for no tree conflict. Special values: CONFLICT_REASON_SKIP: The node will be skipped with content and property state as stored in SKIP_REASON. CONFLICT_REASON_SKIP_WC: The node will be skipped as an obstructing working copy. */ svn_wc_conflict_reason_t tree_conflict_reason; svn_wc_conflict_action_t tree_conflict_action; svn_node_kind_t tree_conflict_local_node_kind; svn_node_kind_t tree_conflict_merge_left_node_kind; svn_node_kind_t tree_conflict_merge_right_node_kind; /* When TREE_CONFLICT_REASON is CONFLICT_REASON_SKIP, the skip state to add to the notification */ svn_wc_notify_state_t skip_reason; /* TRUE if the node was added by this merge. Otherwise FALSE */ svn_boolean_t added; svn_boolean_t add_is_replace; /* Add is second part of replace */ /* TRUE if we are taking over an existing directory as addition, otherwise FALSE. */ svn_boolean_t add_existing; /* NULL, or an hashtable mapping const char * local_abspaths to const char *kind mapping, containing deleted nodes that still need a delete notification (which may be a replaced notification if the node is not just deleted) */ apr_hash_t *pending_deletes; /* NULL, or an hashtable mapping const char * LOCAL_ABSPATHs to a const svn_wc_conflict_description2_t * instance, describing the just installed conflict */ apr_hash_t *new_tree_conflicts; /* If not NULL, a reference to the information of the delete test that is currently in progress. Allocated in the root-directory baton, referenced from all descendants */ struct dir_delete_baton_t *delete_state; }; /* Baton for the merge_dir_*() functions. Initialized in merge_file_opened() */ struct merge_file_baton_t { /* Reference to the parent baton, unless the parent is the anchor, in which case PARENT_BATON is NULL */ struct merge_dir_baton_t *parent_baton; /* This file doesn't have a representation in the working copy, so any operation on it will be skipped and possibly cause a tree conflict on the shadow root */ svn_boolean_t shadowed; /* This node received operational changes from the merge. If this node is the shadow root its tree conflict status has been applied */ svn_boolean_t edited; /* If a tree conflict will be installed once edited, it's reason. If a skip should be produced its reason. Some special values are defined. See the merge_dir_baton_t for an explanation. */ svn_wc_conflict_reason_t tree_conflict_reason; svn_wc_conflict_action_t tree_conflict_action; svn_node_kind_t tree_conflict_local_node_kind; svn_node_kind_t tree_conflict_merge_left_node_kind; svn_node_kind_t tree_conflict_merge_right_node_kind; /* When TREE_CONFLICT_REASON is CONFLICT_REASON_SKIP, the skip state to add to the notification */ svn_wc_notify_state_t skip_reason; /* TRUE if the node was added by this merge. Otherwise FALSE */ svn_boolean_t added; svn_boolean_t add_is_replace; /* Add is second part of replace */ }; /* Record the skip for future processing and (later) produce the skip notification */ static svn_error_t * record_skip(merge_cmd_baton_t *merge_b, const char *local_abspath, svn_node_kind_t kind, svn_wc_notify_action_t action, svn_wc_notify_state_t state, struct merge_dir_baton_t *pdb, apr_pool_t *scratch_pool) { if (merge_b->record_only) return SVN_NO_ERROR; /* ### Why? - Legacy compatibility */ if ((merge_b->merge_source.ancestral || merge_b->reintegrate_merge) && !(pdb && pdb->shadowed)) { store_path(merge_b->skipped_abspaths, local_abspath); } if (merge_b->notify_func) { svn_wc_notify_t *notify; notify = svn_wc_create_notify(local_abspath, action, scratch_pool); notify->kind = kind; notify->content_state = notify->prop_state = state; merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } return SVN_NO_ERROR; } /* Forward declaration */ static svn_client__merge_path_t * find_nearest_ancestor_with_intersecting_ranges( svn_revnum_t *start, svn_revnum_t *end, const apr_array_header_t *children_with_mergeinfo, svn_boolean_t path_is_own_ancestor, const char *local_abspath); /* Record a tree conflict in the WC, unless this is a dry run or a record- * only merge, or if a tree conflict is already flagged for the VICTIM_PATH. * (The latter can happen if a merge-tracking-aware merge is doing multiple * editor drives because of a gap in the range of eligible revisions.) * * The tree conflict, with its victim specified by VICTIM_PATH, is * assumed to have happened during a merge using merge baton MERGE_B. * * ACTION and REASON correspond to the fields * of the same names in svn_wc_tree_conflict_description_t. */ static svn_error_t * record_tree_conflict(merge_cmd_baton_t *merge_b, const char *local_abspath, struct merge_dir_baton_t *parent_baton, svn_node_kind_t local_node_kind, svn_node_kind_t merge_left_node_kind, svn_node_kind_t merge_right_node_kind, svn_wc_conflict_action_t action, svn_wc_conflict_reason_t reason, const svn_wc_conflict_description2_t *existing_conflict, svn_boolean_t notify_tc, apr_pool_t *scratch_pool) { svn_wc_context_t *wc_ctx = merge_b->ctx->wc_ctx; if (merge_b->record_only) return SVN_NO_ERROR; if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge) { store_path(merge_b->tree_conflicted_abspaths, local_abspath); } alloc_and_store_path(&merge_b->conflicted_paths, local_abspath, merge_b->pool); if (!merge_b->dry_run) { svn_wc_conflict_description2_t *conflict; const svn_wc_conflict_version_t *left; const svn_wc_conflict_version_t *right; apr_pool_t *result_pool = parent_baton ? parent_baton->pool : scratch_pool; if (reason == svn_wc_conflict_reason_deleted) { const char *moved_to_abspath; SVN_ERR(svn_wc__node_was_moved_away(&moved_to_abspath, NULL, wc_ctx, local_abspath, scratch_pool, scratch_pool)); if (moved_to_abspath) { /* Local abspath itself has been moved away. If only a descendant is moved away, we call the node itself deleted */ reason = svn_wc_conflict_reason_moved_away; } } else if (reason == svn_wc_conflict_reason_added) { const char *moved_from_abspath; SVN_ERR(svn_wc__node_was_moved_here(&moved_from_abspath, NULL, wc_ctx, local_abspath, scratch_pool, scratch_pool)); if (moved_from_abspath) reason = svn_wc_conflict_reason_moved_here; } if (HONOR_MERGEINFO(merge_b) && merge_b->merge_source.ancestral) { struct merge_source_t *source; svn_client__pathrev_t *loc1; svn_client__pathrev_t *loc2; svn_merge_range_t range = {SVN_INVALID_REVNUM, SVN_INVALID_REVNUM, TRUE}; /* We are honoring mergeinfo so do not blindly record * a conflict describing the merge of * SOURCE->LOC1->URL@SOURCE->LOC1->REV through * SOURCE->LOC2->URL@SOURCE->LOC2->REV * but figure out the actual revision range merged. */ (void)find_nearest_ancestor_with_intersecting_ranges( &(range.start), &(range.end), merge_b->children_with_mergeinfo, action != svn_wc_conflict_action_delete, local_abspath); loc1 = svn_client__pathrev_dup(merge_b->merge_source.loc1, scratch_pool); loc2 = svn_client__pathrev_dup(merge_b->merge_source.loc2, scratch_pool); loc1->rev = range.start; loc2->rev = range.end; source = merge_source_create(loc1, loc2, merge_b->merge_source.ancestral, scratch_pool); SVN_ERR(make_conflict_versions(&left, &right, local_abspath, merge_left_node_kind, merge_right_node_kind, source, merge_b->target, result_pool, scratch_pool)); } else SVN_ERR(make_conflict_versions(&left, &right, local_abspath, merge_left_node_kind, merge_right_node_kind, &merge_b->merge_source, merge_b->target, result_pool, scratch_pool)); /* Fix up delete of file, add of dir replacement (or other way around) */ if (existing_conflict != NULL && existing_conflict->src_left_version) left = existing_conflict->src_left_version; conflict = svn_wc_conflict_description_create_tree2( local_abspath, local_node_kind, svn_wc_operation_merge, left, right, result_pool); conflict->action = action; conflict->reason = reason; /* May return SVN_ERR_WC_PATH_UNEXPECTED_STATUS */ if (existing_conflict) SVN_ERR(svn_wc__del_tree_conflict(wc_ctx, local_abspath, scratch_pool)); SVN_ERR(svn_wc__add_tree_conflict(merge_b->ctx->wc_ctx, conflict, scratch_pool)); if (parent_baton) { if (! parent_baton->new_tree_conflicts) parent_baton->new_tree_conflicts = apr_hash_make(result_pool); svn_hash_sets(parent_baton->new_tree_conflicts, apr_pstrdup(result_pool, local_abspath), conflict); } /* ### TODO: Store in parent baton */ } /* On a replacement we currently get two tree conflicts */ if (merge_b->notify_func && notify_tc) { svn_wc_notify_t *notify; notify = svn_wc_create_notify(local_abspath, svn_wc_notify_tree_conflict, scratch_pool); notify->kind = local_node_kind; merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } return SVN_NO_ERROR; } /* Record the add for future processing and produce the update_add notification */ static svn_error_t * record_update_add(merge_cmd_baton_t *merge_b, const char *local_abspath, svn_node_kind_t kind, svn_boolean_t notify_replaced, apr_pool_t *scratch_pool) { if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge) { store_path(merge_b->merged_abspaths, local_abspath); } if (merge_b->notify_func) { svn_wc_notify_t *notify; svn_wc_notify_action_t action = svn_wc_notify_update_add; if (notify_replaced) action = svn_wc_notify_update_replace; notify = svn_wc_create_notify(local_abspath, action, scratch_pool); notify->kind = kind; merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } return SVN_NO_ERROR; } /* Record the update for future processing and produce the update_update notification */ static svn_error_t * record_update_update(merge_cmd_baton_t *merge_b, const char *local_abspath, svn_node_kind_t kind, svn_wc_notify_state_t content_state, svn_wc_notify_state_t prop_state, apr_pool_t *scratch_pool) { if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge) { store_path(merge_b->merged_abspaths, local_abspath); } if (merge_b->notify_func) { svn_wc_notify_t *notify; notify = svn_wc_create_notify(local_abspath, svn_wc_notify_update_update, scratch_pool); notify->kind = kind; notify->content_state = content_state; notify->prop_state = prop_state; merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } return SVN_NO_ERROR; } /* Record the delete for future processing and for (later) producing the update_delete notification */ static svn_error_t * record_update_delete(merge_cmd_baton_t *merge_b, struct merge_dir_baton_t *parent_db, const char *local_abspath, svn_node_kind_t kind, apr_pool_t *scratch_pool) { /* Update the lists of merged, skipped, tree-conflicted and added paths. */ if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge) { /* Issue #4166: If a previous merge added NOTIFY_ABSPATH, but we are now deleting it, then remove it from the list of added paths. */ svn_hash_sets(merge_b->added_abspaths, local_abspath, NULL); store_path(merge_b->merged_abspaths, local_abspath); } if (parent_db) { const char *dup_abspath = apr_pstrdup(parent_db->pool, local_abspath); if (!parent_db->pending_deletes) parent_db->pending_deletes = apr_hash_make(parent_db->pool); svn_hash_sets(parent_db->pending_deletes, dup_abspath, svn_node_kind_to_word(kind)); } + /* Note in children_with_mergeinfo that all paths in this subtree are + * being deleted, to avoid trying to set mergeinfo on them later. */ + if (merge_b->children_with_mergeinfo) + { + int i; + + for (i = 0; i < merge_b->children_with_mergeinfo->nelts; i++) + { + svn_client__merge_path_t *child + = APR_ARRAY_IDX(merge_b->children_with_mergeinfo, i, + svn_client__merge_path_t *); + + if (svn_dirent_is_ancestor(local_abspath, child->abspath)) + { + SVN_ERR(svn_sort__array_delete2(merge_b->children_with_mergeinfo, i--, 1)); + } + } + } + return SVN_NO_ERROR; } /* Notify the pending 'D'eletes, that were waiting to see if a matching 'A'dd might make them a 'R'eplace. */ static svn_error_t * handle_pending_notifications(merge_cmd_baton_t *merge_b, struct merge_dir_baton_t *db, apr_pool_t *scratch_pool) { if (merge_b->notify_func && db->pending_deletes) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, db->pending_deletes); hi; hi = apr_hash_next(hi)) { const char *del_abspath = apr_hash_this_key(hi); svn_wc_notify_t *notify; notify = svn_wc_create_notify(del_abspath, svn_wc_notify_update_delete, scratch_pool); notify->kind = svn_node_kind_from_word( apr_hash_this_val(hi)); merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } db->pending_deletes = NULL; } return SVN_NO_ERROR; } /* Helper function for the merge_dir_*() and merge_file_*() functions. Installs and notifies pre-recorded tree conflicts and skips for ancestors of operational merges */ static svn_error_t * mark_dir_edited(merge_cmd_baton_t *merge_b, struct merge_dir_baton_t *db, const char *local_abspath, apr_pool_t *scratch_pool) { /* ### Too much common code with mark_file_edited */ if (db->edited) return SVN_NO_ERROR; if (db->parent_baton && !db->parent_baton->edited) { const char *dir_abspath = svn_dirent_dirname(local_abspath, scratch_pool); SVN_ERR(mark_dir_edited(merge_b, db->parent_baton, dir_abspath, scratch_pool)); } db->edited = TRUE; if (! db->shadowed) return SVN_NO_ERROR; /* Easy out */ if (db->parent_baton && db->parent_baton->delete_state && db->tree_conflict_reason != CONFLICT_REASON_NONE) { db->parent_baton->delete_state->found_edit = TRUE; } else if (db->tree_conflict_reason == CONFLICT_REASON_SKIP || db->tree_conflict_reason == CONFLICT_REASON_SKIP_WC) { /* open_directory() decided not to flag a tree conflict, but for clarity we produce a skip for this node that most likely isn't touched by the merge itself */ if (merge_b->notify_func) { svn_wc_notify_t *notify; notify = svn_wc_create_notify( local_abspath, (db->tree_conflict_reason == CONFLICT_REASON_SKIP) ? svn_wc_notify_skip : svn_wc_notify_update_skip_obstruction, scratch_pool); notify->kind = svn_node_dir; notify->content_state = notify->prop_state = db->skip_reason; merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge) { store_path(merge_b->skipped_abspaths, local_abspath); } } else if (db->tree_conflict_reason != CONFLICT_REASON_NONE) { /* open_directory() decided that a tree conflict should be raised */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, db->parent_baton, db->tree_conflict_local_node_kind, db->tree_conflict_merge_left_node_kind, db->tree_conflict_merge_right_node_kind, db->tree_conflict_action, db->tree_conflict_reason, NULL, TRUE, scratch_pool)); } return SVN_NO_ERROR; } /* Helper function for the merge_file_*() functions. Installs and notifies pre-recorded tree conflicts and skips for ancestors of operational merges */ static svn_error_t * mark_file_edited(merge_cmd_baton_t *merge_b, struct merge_file_baton_t *fb, const char *local_abspath, apr_pool_t *scratch_pool) { /* ### Too much common code with mark_dir_edited */ if (fb->edited) return SVN_NO_ERROR; if (fb->parent_baton && !fb->parent_baton->edited) { const char *dir_abspath = svn_dirent_dirname(local_abspath, scratch_pool); SVN_ERR(mark_dir_edited(merge_b, fb->parent_baton, dir_abspath, scratch_pool)); } fb->edited = TRUE; if (! fb->shadowed) return SVN_NO_ERROR; /* Easy out */ if (fb->parent_baton && fb->parent_baton->delete_state && fb->tree_conflict_reason != CONFLICT_REASON_NONE) { fb->parent_baton->delete_state->found_edit = TRUE; } else if (fb->tree_conflict_reason == CONFLICT_REASON_SKIP || fb->tree_conflict_reason == CONFLICT_REASON_SKIP_WC) { /* open_directory() decided not to flag a tree conflict, but for clarity we produce a skip for this node that most likely isn't touched by the merge itself */ if (merge_b->notify_func) { svn_wc_notify_t *notify; notify = svn_wc_create_notify(local_abspath, svn_wc_notify_skip, scratch_pool); notify->kind = svn_node_file; notify->content_state = notify->prop_state = fb->skip_reason; merge_b->notify_func(merge_b->notify_baton, notify, scratch_pool); } if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge) { store_path(merge_b->skipped_abspaths, local_abspath); } } else if (fb->tree_conflict_reason != CONFLICT_REASON_NONE) { /* open_file() decided that a tree conflict should be raised */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, fb->parent_baton, fb->tree_conflict_local_node_kind, fb->tree_conflict_merge_left_node_kind, fb->tree_conflict_merge_right_node_kind, fb->tree_conflict_action, fb->tree_conflict_reason, NULL, TRUE, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. Called before either merge_file_changed(), merge_file_added(), merge_file_deleted() or merge_file_closed(), unless it sets *SKIP to TRUE. When *SKIP is TRUE, the diff driver avoids work on getting the details for the closing callbacks. */ static svn_error_t * merge_file_opened(void **new_file_baton, svn_boolean_t *skip, const char *relpath, const svn_diff_source_t *left_source, const svn_diff_source_t *right_source, const svn_diff_source_t *copyfrom_source, void *dir_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *pdb = dir_baton; struct merge_file_baton_t *fb; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); fb = apr_pcalloc(result_pool, sizeof(*fb)); fb->tree_conflict_reason = CONFLICT_REASON_NONE; fb->tree_conflict_action = svn_wc_conflict_action_edit; fb->skip_reason = svn_wc_notify_state_unknown; if (left_source) fb->tree_conflict_merge_left_node_kind = svn_node_file; else fb->tree_conflict_merge_left_node_kind = svn_node_none; if (right_source) fb->tree_conflict_merge_right_node_kind = svn_node_file; else fb->tree_conflict_merge_right_node_kind = svn_node_none; *new_file_baton = fb; if (pdb) { fb->parent_baton = pdb; fb->shadowed = pdb->shadowed; fb->skip_reason = pdb->skip_reason; } if (fb->shadowed) { /* An ancestor is tree conflicted. Nothing to do here. */ } else if (left_source != NULL) { /* Node is expected to be a file, which will be changed or deleted. */ svn_boolean_t is_deleted; svn_boolean_t excluded; svn_depth_t parent_depth; if (! right_source) fb->tree_conflict_action = svn_wc_conflict_action_delete; { svn_wc_notify_state_t obstr_state; SVN_ERR(perform_obstruction_check(&obstr_state, &is_deleted, &excluded, &fb->tree_conflict_local_node_kind, &parent_depth, merge_b, local_abspath, scratch_pool)); if (obstr_state != svn_wc_notify_state_inapplicable) { fb->shadowed = TRUE; fb->tree_conflict_reason = CONFLICT_REASON_SKIP; fb->skip_reason = obstr_state; return SVN_NO_ERROR; } if (is_deleted) fb->tree_conflict_local_node_kind = svn_node_none; } if (fb->tree_conflict_local_node_kind == svn_node_none) { fb->shadowed = TRUE; /* If this is not the merge target and the parent is too shallow to contain this directory, and the directory is not present via exclusion or depth filtering, skip it instead of recording a tree conflict. Non-inheritable mergeinfo will be recorded, allowing future merges into non-shallow working copies to merge changes we missed this time around. */ if (pdb && (excluded || (parent_depth != svn_depth_unknown && parent_depth < svn_depth_files))) { fb->shadowed = TRUE; fb->tree_conflict_reason = CONFLICT_REASON_SKIP; fb->skip_reason = svn_wc_notify_state_missing; return SVN_NO_ERROR; } if (is_deleted) fb->tree_conflict_reason = svn_wc_conflict_reason_deleted; else fb->tree_conflict_reason = svn_wc_conflict_reason_missing; /* ### Similar to directory */ *skip = TRUE; SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); return SVN_NO_ERROR; /* ### /Similar */ } else if (fb->tree_conflict_local_node_kind != svn_node_file) { svn_boolean_t added; fb->shadowed = TRUE; SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx, local_abspath, scratch_pool)); fb->tree_conflict_reason = added ? svn_wc_conflict_reason_added : svn_wc_conflict_reason_obstructed; /* ### Similar to directory */ *skip = TRUE; SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); return SVN_NO_ERROR; /* ### /Similar */ } if (! right_source) { /* We want to delete the directory */ fb->tree_conflict_action = svn_wc_conflict_action_delete; SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); if (fb->shadowed) { return SVN_NO_ERROR; /* Already set a tree conflict */ } /* Comparison mode to verify for delete tree conflicts? */ if (pdb && pdb->delete_state && pdb->delete_state->found_edit) { /* Earlier nodes found a conflict. Done. */ *skip = TRUE; } } } else { const svn_wc_conflict_description2_t *old_tc = NULL; /* The node doesn't exist pre-merge: We have an addition */ fb->added = TRUE; fb->tree_conflict_action = svn_wc_conflict_action_add; if (pdb && pdb->pending_deletes && svn_hash_gets(pdb->pending_deletes, local_abspath)) { fb->add_is_replace = TRUE; fb->tree_conflict_action = svn_wc_conflict_action_replace; svn_hash_sets(pdb->pending_deletes, local_abspath, NULL); } if (pdb && pdb->new_tree_conflicts && (old_tc = svn_hash_gets(pdb->new_tree_conflicts, local_abspath))) { fb->tree_conflict_action = svn_wc_conflict_action_replace; fb->tree_conflict_reason = old_tc->reason; /* Update the tree conflict to store that this is a replace */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, pdb, old_tc->node_kind, old_tc->src_left_version->node_kind, svn_node_file, fb->tree_conflict_action, fb->tree_conflict_reason, old_tc, FALSE, scratch_pool)); if (old_tc->reason == svn_wc_conflict_reason_deleted || old_tc->reason == svn_wc_conflict_reason_moved_away) { /* Issue #3806: Incoming replacements on local deletes produce inconsistent result. In this specific case we can continue applying the add part of the replacement. */ } else { *skip = TRUE; return SVN_NO_ERROR; } } else if (! (merge_b->dry_run && ((pdb && pdb->added) || fb->add_is_replace))) { svn_wc_notify_state_t obstr_state; svn_boolean_t is_deleted; SVN_ERR(perform_obstruction_check(&obstr_state, &is_deleted, NULL, &fb->tree_conflict_local_node_kind, NULL, merge_b, local_abspath, scratch_pool)); if (obstr_state != svn_wc_notify_state_inapplicable) { /* Skip the obstruction */ fb->shadowed = TRUE; fb->tree_conflict_reason = CONFLICT_REASON_SKIP; fb->skip_reason = obstr_state; } else if (fb->tree_conflict_local_node_kind != svn_node_none && !is_deleted) { /* Set a tree conflict */ svn_boolean_t added; fb->shadowed = TRUE; SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx, local_abspath, scratch_pool)); fb->tree_conflict_reason = added ? svn_wc_conflict_reason_added : svn_wc_conflict_reason_obstructed; } } /* Handle pending conflicts */ SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. * * Called after merge_file_opened() when a node receives only text and/or * property changes between LEFT_SOURCE and RIGHT_SOURCE. * * left_file and right_file can be NULL when the file is not modified. * left_props and right_props are always available. */ static svn_error_t * merge_file_changed(const char *relpath, const svn_diff_source_t *left_source, const svn_diff_source_t *right_source, const char *left_file, const char *right_file, /*const*/ apr_hash_t *left_props, /*const*/ apr_hash_t *right_props, svn_boolean_t file_modified, const apr_array_header_t *prop_changes, void *file_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_file_baton_t *fb = file_baton; svn_client_ctx_t *ctx = merge_b->ctx; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); const svn_wc_conflict_version_t *left; const svn_wc_conflict_version_t *right; svn_wc_notify_state_t text_state; svn_wc_notify_state_t property_state; SVN_ERR_ASSERT(local_abspath && svn_dirent_is_absolute(local_abspath)); SVN_ERR_ASSERT(!left_file || svn_dirent_is_absolute(left_file)); SVN_ERR_ASSERT(!right_file || svn_dirent_is_absolute(right_file)); SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); if (fb->shadowed) { if (fb->tree_conflict_reason == CONFLICT_REASON_NONE) { /* We haven't notified for this node yet: report a skip */ SVN_ERR(record_skip(merge_b, local_abspath, svn_node_file, svn_wc_notify_update_shadowed_update, fb->skip_reason, fb->parent_baton, scratch_pool)); } return SVN_NO_ERROR; } /* This callback is essentially no more than a wrapper around svn_wc_merge5(). Thank goodness that all the diff-editor-mechanisms are doing the hard work of getting the fulltexts! */ property_state = svn_wc_notify_state_unchanged; text_state = svn_wc_notify_state_unchanged; SVN_ERR(prepare_merge_props_changed(&prop_changes, local_abspath, prop_changes, merge_b, scratch_pool, scratch_pool)); SVN_ERR(make_conflict_versions(&left, &right, local_abspath, svn_node_file, svn_node_file, &merge_b->merge_source, merge_b->target, scratch_pool, scratch_pool)); /* Do property merge now, if we are not going to perform a text merge */ if ((merge_b->record_only || !left_file) && prop_changes->nelts) { SVN_ERR(svn_wc_merge_props3(&property_state, ctx->wc_ctx, local_abspath, left, right, left_props, prop_changes, merge_b->dry_run, NULL, NULL, ctx->cancel_func, ctx->cancel_baton, scratch_pool)); if (property_state == svn_wc_notify_state_conflicted) { alloc_and_store_path(&merge_b->conflicted_paths, local_abspath, merge_b->pool); } } /* Easy out: We are only applying mergeinfo differences. */ if (merge_b->record_only) { /* NO-OP */ } else if (left_file) { svn_boolean_t has_local_mods; enum svn_wc_merge_outcome_t content_outcome; const char *target_label; const char *left_label; const char *right_label; const char *path_ext = ""; if (merge_b->ext_patterns && merge_b->ext_patterns->nelts) { svn_path_splitext(NULL, &path_ext, local_abspath, scratch_pool); if (! (*path_ext && svn_cstring_match_glob_list(path_ext, merge_b->ext_patterns))) { path_ext = ""; } } /* xgettext: the '.working', '.merge-left.r%ld' and '.merge-right.r%ld' strings are used to tag onto a file name in case of a merge conflict */ target_label = apr_psprintf(scratch_pool, _(".working%s%s"), *path_ext ? "." : "", path_ext); left_label = apr_psprintf(scratch_pool, _(".merge-left.r%ld%s%s"), left_source->revision, *path_ext ? "." : "", path_ext); right_label = apr_psprintf(scratch_pool, _(".merge-right.r%ld%s%s"), right_source->revision, *path_ext ? "." : "", path_ext); SVN_ERR(svn_wc_text_modified_p2(&has_local_mods, ctx->wc_ctx, local_abspath, FALSE, scratch_pool)); /* Do property merge and text merge in one step so that keyword expansion takes into account the new property values. */ SVN_ERR(svn_wc_merge5(&content_outcome, &property_state, ctx->wc_ctx, left_file, right_file, local_abspath, left_label, right_label, target_label, left, right, merge_b->dry_run, merge_b->diff3_cmd, merge_b->merge_options, left_props, prop_changes, NULL, NULL, ctx->cancel_func, ctx->cancel_baton, scratch_pool)); if (content_outcome == svn_wc_merge_conflict || property_state == svn_wc_notify_state_conflicted) { alloc_and_store_path(&merge_b->conflicted_paths, local_abspath, merge_b->pool); } if (content_outcome == svn_wc_merge_conflict) text_state = svn_wc_notify_state_conflicted; else if (has_local_mods && content_outcome != svn_wc_merge_unchanged) text_state = svn_wc_notify_state_merged; else if (content_outcome == svn_wc_merge_merged) text_state = svn_wc_notify_state_changed; else if (content_outcome == svn_wc_merge_no_merge) text_state = svn_wc_notify_state_missing; else /* merge_outcome == svn_wc_merge_unchanged */ text_state = svn_wc_notify_state_unchanged; } if (text_state == svn_wc_notify_state_conflicted || text_state == svn_wc_notify_state_merged || text_state == svn_wc_notify_state_changed || property_state == svn_wc_notify_state_conflicted || property_state == svn_wc_notify_state_merged || property_state == svn_wc_notify_state_changed) { SVN_ERR(record_update_update(merge_b, local_abspath, svn_node_file, text_state, property_state, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. * * Called after merge_file_opened() when a node doesn't exist in LEFT_SOURCE, * but does in RIGHT_SOURCE. * * When a node is replaced instead of just added a separate opened+deleted will * be invoked before the current open+added. */ static svn_error_t * merge_file_added(const char *relpath, const svn_diff_source_t *copyfrom_source, const svn_diff_source_t *right_source, const char *copyfrom_file, const char *right_file, /*const*/ apr_hash_t *copyfrom_props, /*const*/ apr_hash_t *right_props, void *file_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_file_baton_t *fb = file_baton; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); apr_hash_t *pristine_props; apr_hash_t *new_props; SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath)); SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); if (fb->shadowed) { if (fb->tree_conflict_reason == CONFLICT_REASON_NONE) { /* We haven't notified for this node yet: report a skip */ SVN_ERR(record_skip(merge_b, local_abspath, svn_node_file, svn_wc_notify_update_shadowed_add, fb->skip_reason, fb->parent_baton, scratch_pool)); } return SVN_NO_ERROR; } /* Easy out: We are only applying mergeinfo differences. */ if (merge_b->record_only) { return SVN_NO_ERROR; } if ((merge_b->merge_source.ancestral || merge_b->reintegrate_merge) && ( !fb->parent_baton || !fb->parent_baton->added)) { /* Store the roots of added subtrees */ store_path(merge_b->added_abspaths, local_abspath); } if (!merge_b->dry_run) { const char *copyfrom_url; svn_revnum_t copyfrom_rev; svn_stream_t *new_contents, *pristine_contents; /* If this is a merge from the same repository as our working copy, we handle adds as add-with-history. Otherwise, we'll use a pure add. */ if (merge_b->same_repos) { copyfrom_url = svn_path_url_add_component2( merge_b->merge_source.loc2->url, relpath, scratch_pool); copyfrom_rev = right_source->revision; SVN_ERR(check_repos_match(merge_b->target, local_abspath, copyfrom_url, scratch_pool)); SVN_ERR(svn_stream_open_readonly(&pristine_contents, right_file, scratch_pool, scratch_pool)); new_contents = NULL; /* inherit from new_base_contents */ pristine_props = right_props; /* Includes last_* information */ new_props = NULL; /* No local changes */ if (svn_hash_gets(pristine_props, SVN_PROP_MERGEINFO)) { alloc_and_store_path(&merge_b->paths_with_new_mergeinfo, local_abspath, merge_b->pool); } } else { apr_array_header_t *regular_props; copyfrom_url = NULL; copyfrom_rev = SVN_INVALID_REVNUM; pristine_contents = svn_stream_empty(scratch_pool); SVN_ERR(svn_stream_open_readonly(&new_contents, right_file, scratch_pool, scratch_pool)); pristine_props = apr_hash_make(scratch_pool); /* Local addition */ /* We don't want any foreign properties */ SVN_ERR(svn_categorize_props(svn_prop_hash_to_array(right_props, scratch_pool), NULL, NULL, ®ular_props, scratch_pool)); new_props = svn_prop_array_to_hash(regular_props, scratch_pool); /* Issue #3383: We don't want mergeinfo from a foreign repository. */ svn_hash_sets(new_props, SVN_PROP_MERGEINFO, NULL); } /* Do everything like if we had called 'svn cp PATH1 PATH2'. */ SVN_ERR(svn_wc_add_repos_file4(merge_b->ctx->wc_ctx, local_abspath, pristine_contents, new_contents, pristine_props, new_props, copyfrom_url, copyfrom_rev, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, scratch_pool)); /* Caller must call svn_sleep_for_timestamps() */ *merge_b->use_sleep = TRUE; } SVN_ERR(record_update_add(merge_b, local_abspath, svn_node_file, fb->add_is_replace, scratch_pool)); return SVN_NO_ERROR; } /* Compare the two sets of properties PROPS1 and PROPS2, ignoring the * "svn:mergeinfo" property, and noticing only "normal" props. Set *SAME to * true if the rest of the properties are identical or false if they differ. */ static svn_error_t * properties_same_p(svn_boolean_t *same, apr_hash_t *props1, apr_hash_t *props2, apr_pool_t *scratch_pool) { apr_array_header_t *prop_changes; int i, diffs; /* Examine the properties that differ */ SVN_ERR(svn_prop_diffs(&prop_changes, props1, props2, scratch_pool)); diffs = 0; for (i = 0; i < prop_changes->nelts; i++) { const char *pname = APR_ARRAY_IDX(prop_changes, i, svn_prop_t).name; /* Count the properties we're interested in; ignore the rest */ if (svn_wc_is_normal_prop(pname) && strcmp(pname, SVN_PROP_MERGEINFO) != 0) diffs++; } *same = (diffs == 0); return SVN_NO_ERROR; } /* Compare the file OLDER_ABSPATH (together with its normal properties in * ORIGINAL_PROPS which may also contain WC props and entry props) with the * versioned file MINE_ABSPATH (together with its versioned properties). * Set *SAME to true if they are the same or false if they differ, ignoring * the "svn:mergeinfo" property, and ignoring differences in keyword * expansion and end-of-line style. */ static svn_error_t * files_same_p(svn_boolean_t *same, const char *older_abspath, apr_hash_t *original_props, const char *mine_abspath, svn_wc_context_t *wc_ctx, apr_pool_t *scratch_pool) { apr_hash_t *working_props; SVN_ERR(svn_wc_prop_list2(&working_props, wc_ctx, mine_abspath, scratch_pool, scratch_pool)); /* Compare the properties */ SVN_ERR(properties_same_p(same, original_props, working_props, scratch_pool)); if (*same) { svn_stream_t *mine_stream; svn_stream_t *older_stream; svn_string_t *special = svn_hash_gets(working_props, SVN_PROP_SPECIAL); svn_string_t *eol_style = svn_hash_gets(working_props, SVN_PROP_EOL_STYLE); svn_string_t *keywords = svn_hash_gets(working_props, SVN_PROP_KEYWORDS); /* Compare the file content, translating 'mine' to 'normal' form. */ if (special != NULL) SVN_ERR(svn_subst_read_specialfile(&mine_stream, mine_abspath, scratch_pool, scratch_pool)); else SVN_ERR(svn_stream_open_readonly(&mine_stream, mine_abspath, scratch_pool, scratch_pool)); if (!special && (eol_style || keywords)) { apr_hash_t *kw = NULL; const char *eol = NULL; svn_subst_eol_style_t style; /* We used to use svn_client__get_normalized_stream() here, but that doesn't work in 100% of the cases because it doesn't convert EOLs to the repository form; just to '\n'. */ if (eol_style) { svn_subst_eol_style_from_value(&style, &eol, eol_style->data); if (style == svn_subst_eol_style_native) eol = SVN_SUBST_NATIVE_EOL_STR; else if (style != svn_subst_eol_style_fixed && style != svn_subst_eol_style_none) return svn_error_create(SVN_ERR_IO_UNKNOWN_EOL, NULL, NULL); } if (keywords) SVN_ERR(svn_subst_build_keywords3(&kw, keywords->data, "", "", "", 0, "", scratch_pool)); mine_stream = svn_subst_stream_translated( mine_stream, eol, FALSE, kw, FALSE, scratch_pool); } SVN_ERR(svn_stream_open_readonly(&older_stream, older_abspath, scratch_pool, scratch_pool)); SVN_ERR(svn_stream_contents_same2(same, mine_stream, older_stream, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. * * Called after merge_file_opened() when a node does exist in LEFT_SOURCE, but * no longer exists (or is replaced) in RIGHT_SOURCE. * * When a node is replaced instead of just added a separate opened+added will * be invoked after the current open+deleted. */ static svn_error_t * merge_file_deleted(const char *relpath, const svn_diff_source_t *left_source, const char *left_file, /*const*/ apr_hash_t *left_props, void *file_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_file_baton_t *fb = file_baton; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); svn_boolean_t same; SVN_ERR(mark_file_edited(merge_b, fb, local_abspath, scratch_pool)); if (fb->shadowed) { if (fb->tree_conflict_reason == CONFLICT_REASON_NONE) { /* We haven't notified for this node yet: report a skip */ SVN_ERR(record_skip(merge_b, local_abspath, svn_node_file, svn_wc_notify_update_shadowed_delete, fb->skip_reason, fb->parent_baton, scratch_pool)); } return SVN_NO_ERROR; } /* Easy out: We are only applying mergeinfo differences. */ if (merge_b->record_only) { return SVN_NO_ERROR; } /* If the files are identical, attempt deletion */ if (merge_b->force_delete) same = TRUE; else SVN_ERR(files_same_p(&same, left_file, left_props, local_abspath, merge_b->ctx->wc_ctx, scratch_pool)); if (fb->parent_baton && fb->parent_baton->delete_state) { if (same) { /* Note that we checked this file */ store_path(fb->parent_baton->delete_state->compared_abspaths, local_abspath); } else { /* We found some modification. Parent should raise a tree conflict */ fb->parent_baton->delete_state->found_edit = TRUE; } return SVN_NO_ERROR; } else if (same) { if (!merge_b->dry_run) SVN_ERR(svn_wc_delete4(merge_b->ctx->wc_ctx, local_abspath, FALSE /* keep_local */, FALSE /* unversioned */, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, NULL, NULL /* no notify */, scratch_pool)); /* Record that we might have deleted mergeinfo */ alloc_and_store_path(&merge_b->paths_with_deleted_mergeinfo, local_abspath, merge_b->pool); /* And notify the deletion */ SVN_ERR(record_update_delete(merge_b, fb->parent_baton, local_abspath, svn_node_file, scratch_pool)); } else { /* The files differ, so raise a conflict instead of deleting */ /* This is use case 5 described in the paper attached to issue * #2282. See also notes/tree-conflicts/detection.txt */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, fb->parent_baton, svn_node_file, svn_node_file, svn_node_none, svn_wc_conflict_action_delete, svn_wc_conflict_reason_edited, NULL, TRUE, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. Called before either merge_dir_changed(), merge_dir_added(), merge_dir_deleted() or merge_dir_closed(), unless it sets *SKIP to TRUE. After this call and before the close call, all descendants will receive their changes, unless *SKIP_CHILDREN is set to TRUE. When *SKIP is TRUE, the diff driver avoids work on getting the details for the closing callbacks. The SKIP and SKIP_DESCENDANTS work independently. */ static svn_error_t * merge_dir_opened(void **new_dir_baton, svn_boolean_t *skip, svn_boolean_t *skip_children, const char *relpath, const svn_diff_source_t *left_source, const svn_diff_source_t *right_source, const svn_diff_source_t *copyfrom_source, void *parent_dir_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *db; struct merge_dir_baton_t *pdb = parent_dir_baton; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); db = apr_pcalloc(result_pool, sizeof(*db)); db->pool = result_pool; db->tree_conflict_reason = CONFLICT_REASON_NONE; db->tree_conflict_action = svn_wc_conflict_action_edit; db->skip_reason = svn_wc_notify_state_unknown; *new_dir_baton = db; if (left_source) db->tree_conflict_merge_left_node_kind = svn_node_dir; else db->tree_conflict_merge_left_node_kind = svn_node_none; if (right_source) db->tree_conflict_merge_right_node_kind = svn_node_dir; else db->tree_conflict_merge_right_node_kind = svn_node_none; if (pdb) { db->parent_baton = pdb; db->shadowed = pdb->shadowed; db->skip_reason = pdb->skip_reason; } if (db->shadowed) { /* An ancestor is tree conflicted. Nothing to do here. */ if (! left_source) db->added = TRUE; } else if (left_source != NULL) { /* Node is expected to be a directory. */ svn_boolean_t is_deleted; svn_boolean_t excluded; svn_depth_t parent_depth; if (! right_source) db->tree_conflict_action = svn_wc_conflict_action_delete; /* Check for an obstructed or missing node on disk. */ { svn_wc_notify_state_t obstr_state; SVN_ERR(perform_obstruction_check(&obstr_state, &is_deleted, &excluded, &db->tree_conflict_local_node_kind, &parent_depth, merge_b, local_abspath, scratch_pool)); if (obstr_state != svn_wc_notify_state_inapplicable) { db->shadowed = TRUE; if (obstr_state == svn_wc_notify_state_obstructed) { svn_boolean_t is_wcroot; SVN_ERR(svn_wc_check_root(&is_wcroot, NULL, NULL, merge_b->ctx->wc_ctx, local_abspath, scratch_pool)); if (is_wcroot) { db->tree_conflict_reason = CONFLICT_REASON_SKIP_WC; return SVN_NO_ERROR; } } db->tree_conflict_reason = CONFLICT_REASON_SKIP; db->skip_reason = obstr_state; if (! right_source) { *skip = *skip_children = TRUE; SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); } return SVN_NO_ERROR; } if (is_deleted) db->tree_conflict_local_node_kind = svn_node_none; } if (db->tree_conflict_local_node_kind == svn_node_none) { db->shadowed = TRUE; /* If this is not the merge target and the parent is too shallow to contain this directory, and the directory is not presen via exclusion or depth filtering, skip it instead of recording a tree conflict. Non-inheritable mergeinfo will be recorded, allowing future merges into non-shallow working copies to merge changes we missed this time around. */ if (pdb && (excluded || (parent_depth != svn_depth_unknown && parent_depth < svn_depth_immediates))) { db->shadowed = TRUE; db->tree_conflict_reason = CONFLICT_REASON_SKIP; db->skip_reason = svn_wc_notify_state_missing; return SVN_NO_ERROR; } if (is_deleted) db->tree_conflict_reason = svn_wc_conflict_reason_deleted; else db->tree_conflict_reason = svn_wc_conflict_reason_missing; /* ### To avoid breaking tests */ *skip = TRUE; *skip_children = TRUE; SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); return SVN_NO_ERROR; /* ### /avoid breaking tests */ } else if (db->tree_conflict_local_node_kind != svn_node_dir) { svn_boolean_t added; db->shadowed = TRUE; SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx, local_abspath, scratch_pool)); db->tree_conflict_reason = added ? svn_wc_conflict_reason_added : svn_wc_conflict_reason_obstructed; /* ### To avoid breaking tests */ *skip = TRUE; *skip_children = TRUE; SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); return SVN_NO_ERROR; /* ### /avoid breaking tests */ } if (! right_source) { /* We want to delete the directory */ /* Mark PB edited now? */ db->tree_conflict_action = svn_wc_conflict_action_delete; SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); if (db->shadowed) { *skip_children = TRUE; return SVN_NO_ERROR; /* Already set a tree conflict */ } db->delete_state = (pdb != NULL) ? pdb->delete_state : NULL; if (db->delete_state && db->delete_state->found_edit) { /* A sibling found a conflict. Done. */ *skip = TRUE; *skip_children = TRUE; } else if (merge_b->force_delete) { /* No comparison necessary */ *skip_children = TRUE; } else if (! db->delete_state) { /* Start descendant comparison */ db->delete_state = apr_pcalloc(db->pool, sizeof(*db->delete_state)); db->delete_state->del_root = db; db->delete_state->compared_abspaths = apr_hash_make(db->pool); } } } else { const svn_wc_conflict_description2_t *old_tc = NULL; /* The node doesn't exist pre-merge: We have an addition */ db->added = TRUE; db->tree_conflict_action = svn_wc_conflict_action_add; if (pdb && pdb->pending_deletes && svn_hash_gets(pdb->pending_deletes, local_abspath)) { db->add_is_replace = TRUE; db->tree_conflict_action = svn_wc_conflict_action_replace; svn_hash_sets(pdb->pending_deletes, local_abspath, NULL); } if (pdb && pdb->new_tree_conflicts && (old_tc = svn_hash_gets(pdb->new_tree_conflicts, local_abspath))) { db->tree_conflict_action = svn_wc_conflict_action_replace; db->tree_conflict_reason = old_tc->reason; if (old_tc->reason == svn_wc_conflict_reason_deleted || old_tc->reason == svn_wc_conflict_reason_moved_away) { /* Issue #3806: Incoming replacements on local deletes produce inconsistent result. In this specific case we can continue applying the add part of the replacement. */ } else { *skip = TRUE; *skip_children = TRUE; /* Update the tree conflict to store that this is a replace */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, pdb, old_tc->node_kind, old_tc->src_left_version->node_kind, svn_node_dir, db->tree_conflict_action, db->tree_conflict_reason, old_tc, FALSE, scratch_pool)); return SVN_NO_ERROR; } } if (! (merge_b->dry_run && ((pdb && pdb->added) || db->add_is_replace))) { svn_wc_notify_state_t obstr_state; svn_boolean_t is_deleted; SVN_ERR(perform_obstruction_check(&obstr_state, &is_deleted, NULL, &db->tree_conflict_local_node_kind, NULL, merge_b, local_abspath, scratch_pool)); /* In this case of adding a directory, we have an exception to the * usual "skip if it's inconsistent" rule. If the directory exists * on disk unexpectedly, we simply make it versioned, because we can * do so without risk of destroying data. Only skip if it is * versioned but unexpectedly missing from disk, or is unversioned * but obstructed by a node of the wrong kind. */ if (obstr_state == svn_wc_notify_state_obstructed && (is_deleted || db->tree_conflict_local_node_kind == svn_node_none)) { svn_node_kind_t disk_kind; SVN_ERR(svn_io_check_path(local_abspath, &disk_kind, scratch_pool)); if (disk_kind == svn_node_dir) { obstr_state = svn_wc_notify_state_inapplicable; db->add_existing = TRUE; /* Take over existing directory */ } } if (obstr_state != svn_wc_notify_state_inapplicable) { /* Skip the obstruction */ db->shadowed = TRUE; db->tree_conflict_reason = CONFLICT_REASON_SKIP; db->skip_reason = obstr_state; } else if (db->tree_conflict_local_node_kind != svn_node_none && !is_deleted) { /* Set a tree conflict */ svn_boolean_t added; db->shadowed = TRUE; SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx, local_abspath, scratch_pool)); db->tree_conflict_reason = added ? svn_wc_conflict_reason_added : svn_wc_conflict_reason_obstructed; } } /* Handle pending conflicts */ SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); if (db->shadowed) { /* Notified and done. Skip children? */ } else if (merge_b->record_only) { /* Ok, we are done for this node and its descendants */ *skip = TRUE; *skip_children = TRUE; } else if (! merge_b->dry_run) { /* Create the directory on disk, to allow descendants to be added */ if (! db->add_existing) SVN_ERR(svn_io_dir_make(local_abspath, APR_OS_DEFAULT, scratch_pool)); if (old_tc) { /* svn_wc_add4 and svn_wc_add_from_disk3 can't add a node over an existing tree conflict */ /* ### These functions should take some tree conflict argument and allow overwriting the tc when one is passed */ SVN_ERR(svn_wc__del_tree_conflict(merge_b->ctx->wc_ctx, local_abspath, scratch_pool)); } if (merge_b->same_repos) { const char *original_url; original_url = svn_path_url_add_component2( merge_b->merge_source.loc2->url, relpath, scratch_pool); /* Limitation (aka HACK): We create a newly added directory with an original URL and revision as that in the repository, but without its properties and children. When the merge is cancelled before the final dir_added(), the copy won't really represent the in-repository state of the node. */ SVN_ERR(svn_wc_add4(merge_b->ctx->wc_ctx, local_abspath, svn_depth_infinity, original_url, right_source->revision, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, NULL, NULL /* no notify! */, scratch_pool)); } else { SVN_ERR(svn_wc_add_from_disk3(merge_b->ctx->wc_ctx, local_abspath, apr_hash_make(scratch_pool), FALSE /* skip checks */, NULL, NULL /* no notify! */, scratch_pool)); } if (old_tc != NULL) { /* ### Should be atomic with svn_wc_add(4|_from_disk2)() */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, pdb, old_tc->node_kind, svn_node_none, svn_node_dir, db->tree_conflict_action, db->tree_conflict_reason, old_tc, FALSE, scratch_pool)); } } if (! db->shadowed && !merge_b->record_only) SVN_ERR(record_update_add(merge_b, local_abspath, svn_node_dir, db->add_is_replace, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. * * Called after merge_dir_opened() when a node exists in both the left and * right source, but has its properties changed inbetween. * * After the merge_dir_opened() but before the call to this merge_dir_changed() * function all descendants will have been updated. */ static svn_error_t * merge_dir_changed(const char *relpath, const svn_diff_source_t *left_source, const svn_diff_source_t *right_source, /*const*/ apr_hash_t *left_props, /*const*/ apr_hash_t *right_props, const apr_array_header_t *prop_changes, void *dir_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *db = dir_baton; const apr_array_header_t *props; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); SVN_ERR(handle_pending_notifications(merge_b, db, scratch_pool)); SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); if (db->shadowed) { if (db->tree_conflict_reason == CONFLICT_REASON_NONE) { /* We haven't notified for this node yet: report a skip */ SVN_ERR(record_skip(merge_b, local_abspath, svn_node_dir, svn_wc_notify_update_shadowed_update, db->skip_reason, db->parent_baton, scratch_pool)); } return SVN_NO_ERROR; } SVN_ERR(prepare_merge_props_changed(&props, local_abspath, prop_changes, merge_b, scratch_pool, scratch_pool)); if (props->nelts) { const svn_wc_conflict_version_t *left; const svn_wc_conflict_version_t *right; svn_client_ctx_t *ctx = merge_b->ctx; svn_wc_notify_state_t prop_state; SVN_ERR(make_conflict_versions(&left, &right, local_abspath, svn_node_dir, svn_node_dir, &merge_b->merge_source, merge_b->target, scratch_pool, scratch_pool)); SVN_ERR(svn_wc_merge_props3(&prop_state, ctx->wc_ctx, local_abspath, left, right, left_props, props, merge_b->dry_run, NULL, NULL, ctx->cancel_func, ctx->cancel_baton, scratch_pool)); if (prop_state == svn_wc_notify_state_conflicted) { alloc_and_store_path(&merge_b->conflicted_paths, local_abspath, merge_b->pool); } if (prop_state == svn_wc_notify_state_conflicted || prop_state == svn_wc_notify_state_merged || prop_state == svn_wc_notify_state_changed) { SVN_ERR(record_update_update(merge_b, local_abspath, svn_node_file, svn_wc_notify_state_inapplicable, prop_state, scratch_pool)); } } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. * * Called after merge_dir_opened() when a node doesn't exist in LEFT_SOURCE, * but does in RIGHT_SOURCE. After the merge_dir_opened() but before the call * to this merge_dir_added() function all descendants will have been added. * * When a node is replaced instead of just added a separate opened+deleted will * be invoked before the current open+added. */ static svn_error_t * merge_dir_added(const char *relpath, const svn_diff_source_t *copyfrom_source, const svn_diff_source_t *right_source, /*const*/ apr_hash_t *copyfrom_props, /*const*/ apr_hash_t *right_props, void *dir_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *db = dir_baton; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); /* For consistency; usually a no-op from _dir_added() */ SVN_ERR(handle_pending_notifications(merge_b, db, scratch_pool)); SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); if (db->shadowed) { if (db->tree_conflict_reason == CONFLICT_REASON_NONE) { /* We haven't notified for this node yet: report a skip */ SVN_ERR(record_skip(merge_b, local_abspath, svn_node_dir, svn_wc_notify_update_shadowed_add, db->skip_reason, db->parent_baton, scratch_pool)); } return SVN_NO_ERROR; } SVN_ERR_ASSERT( db->edited /* Marked edited from merge_open_dir() */ && ! merge_b->record_only /* Skip details from merge_open_dir() */ ); if ((merge_b->merge_source.ancestral || merge_b->reintegrate_merge) && ( !db->parent_baton || !db->parent_baton->added)) { /* Store the roots of added subtrees */ store_path(merge_b->added_abspaths, local_abspath); } if (merge_b->same_repos) { /* When the directory was added in merge_dir_added() we didn't update its pristine properties. Instead we receive the property changes later and apply them in this function. If we would apply them as changes (such as before fixing issue #3405), we would see the unmodified properties as local changes, and the pristine properties would be out of sync with what the repository expects for this directory. Instead of doing that we now simply set the properties as the pristine properties via a private libsvn_wc api. */ const char *copyfrom_url; svn_revnum_t copyfrom_rev; const char *parent_abspath; const char *child; /* Creating a hash containing regular and entry props */ apr_hash_t *new_pristine_props = right_props; parent_abspath = svn_dirent_dirname(local_abspath, scratch_pool); child = svn_dirent_is_child(merge_b->target->abspath, local_abspath, NULL); SVN_ERR_ASSERT(child != NULL); copyfrom_url = svn_path_url_add_component2(merge_b->merge_source.loc2->url, child, scratch_pool); copyfrom_rev = right_source->revision; SVN_ERR(check_repos_match(merge_b->target, parent_abspath, copyfrom_url, scratch_pool)); if (!merge_b->dry_run) { SVN_ERR(svn_wc__complete_directory_add(merge_b->ctx->wc_ctx, local_abspath, new_pristine_props, copyfrom_url, copyfrom_rev, scratch_pool)); } if (svn_hash_gets(new_pristine_props, SVN_PROP_MERGEINFO)) { alloc_and_store_path(&merge_b->paths_with_new_mergeinfo, local_abspath, merge_b->pool); } } else { apr_array_header_t *regular_props; apr_hash_t *new_props; svn_wc_notify_state_t prop_state; SVN_ERR(svn_categorize_props(svn_prop_hash_to_array(right_props, scratch_pool), NULL, NULL, ®ular_props, scratch_pool)); new_props = svn_prop_array_to_hash(regular_props, scratch_pool); svn_hash_sets(new_props, SVN_PROP_MERGEINFO, NULL); /* ### What is the easiest way to set new_props on LOCAL_ABSPATH? ### This doesn't need a merge as we just added the node ### (or installed a tree conflict and skipped this node)*/ SVN_ERR(svn_wc_merge_props3(&prop_state, merge_b->ctx->wc_ctx, local_abspath, NULL, NULL, apr_hash_make(scratch_pool), svn_prop_hash_to_array(new_props, scratch_pool), merge_b->dry_run, NULL, NULL, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, scratch_pool)); if (prop_state == svn_wc_notify_state_conflicted) { alloc_and_store_path(&merge_b->conflicted_paths, local_abspath, merge_b->pool); } } return SVN_NO_ERROR; } /* Helper for merge_dir_deleted. Implement svn_wc_status_func4_t */ static svn_error_t * verify_touched_by_del_check(void *baton, const char *local_abspath, const svn_wc_status3_t *status, apr_pool_t *scratch_pool) { struct dir_delete_baton_t *delb = baton; if (svn_hash_gets(delb->compared_abspaths, local_abspath)) return SVN_NO_ERROR; switch (status->node_status) { case svn_wc_status_deleted: case svn_wc_status_ignored: case svn_wc_status_none: return SVN_NO_ERROR; default: delb->found_edit = TRUE; return svn_error_create(SVN_ERR_CEASE_INVOCATION, NULL, NULL); } } /* An svn_diff_tree_processor_t function. * * Called after merge_dir_opened() when a node existed only in the left source. * * After the merge_dir_opened() but before the call to this merge_dir_deleted() * function all descendants that existed in left_source will have been deleted. * * If this node is replaced, an _opened() followed by a matching _add() will * be invoked after this function. */ static svn_error_t * merge_dir_deleted(const char *relpath, const svn_diff_source_t *left_source, /*const*/ apr_hash_t *left_props, void *dir_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *db = dir_baton; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); svn_boolean_t same; apr_hash_t *working_props; SVN_ERR(handle_pending_notifications(merge_b, db, scratch_pool)); SVN_ERR(mark_dir_edited(merge_b, db, local_abspath, scratch_pool)); if (db->shadowed) { if (db->tree_conflict_reason == CONFLICT_REASON_NONE) { /* We haven't notified for this node yet: report a skip */ SVN_ERR(record_skip(merge_b, local_abspath, svn_node_dir, svn_wc_notify_update_shadowed_delete, db->skip_reason, db->parent_baton, scratch_pool)); } return SVN_NO_ERROR; } /* Easy out: We are only applying mergeinfo differences. */ if (merge_b->record_only) { return SVN_NO_ERROR; } SVN_ERR(svn_wc_prop_list2(&working_props, merge_b->ctx->wc_ctx, local_abspath, scratch_pool, scratch_pool)); if (merge_b->force_delete) { /* In this legacy mode we just assume that a directory delete matches any directory. db->delete_state is NULL */ same = TRUE; } else { struct dir_delete_baton_t *delb; /* Compare the properties */ SVN_ERR(properties_same_p(&same, left_props, working_props, scratch_pool)); delb = db->delete_state; assert(delb != NULL); if (! same) { delb->found_edit = TRUE; } else { store_path(delb->compared_abspaths, local_abspath); } if (delb->del_root != db) return SVN_NO_ERROR; if (delb->found_edit) same = FALSE; else { apr_array_header_t *ignores; svn_error_t *err; same = TRUE; SVN_ERR(svn_wc_get_default_ignores(&ignores, merge_b->ctx->config, scratch_pool)); /* None of the descendants was modified, but maybe there are descendants we haven't walked? Note that we aren't interested in changes, as we already verified changes in the paths touched by the merge. And the existence of other paths is enough to mark the directory edited */ err = svn_wc_walk_status(merge_b->ctx->wc_ctx, local_abspath, svn_depth_infinity, TRUE /* get-all */, FALSE /* no-ignore */, TRUE /* ignore-text-mods */, ignores, verify_touched_by_del_check, delb, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, scratch_pool); if (err) { if (err->apr_err != SVN_ERR_CEASE_INVOCATION) return svn_error_trace(err); svn_error_clear(err); } same = ! delb->found_edit; } } if (same && !merge_b->dry_run) { svn_error_t *err; err = svn_wc_delete4(merge_b->ctx->wc_ctx, local_abspath, FALSE /* keep_local */, FALSE /* unversioned */, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, NULL, NULL /* no notify */, scratch_pool); if (err) { if (err->apr_err != SVN_ERR_WC_LEFT_LOCAL_MOD) return svn_error_trace(err); svn_error_clear(err); same = FALSE; } } if (! same) { /* If the attempt to delete an existing directory failed, * the directory has local modifications (e.g. locally added * files, or property changes). Flag a tree conflict. */ /* This handles use case 5 described in the paper attached to issue * #2282. See also notes/tree-conflicts/detection.txt */ SVN_ERR(record_tree_conflict(merge_b, local_abspath, db->parent_baton, svn_node_dir, svn_node_dir, svn_node_none, svn_wc_conflict_action_delete, svn_wc_conflict_reason_edited, NULL, TRUE, scratch_pool)); } else { /* Record that we might have deleted mergeinfo */ if (working_props && svn_hash_gets(working_props, SVN_PROP_MERGEINFO)) { alloc_and_store_path(&merge_b->paths_with_deleted_mergeinfo, local_abspath, merge_b->pool); } SVN_ERR(record_update_delete(merge_b, db->parent_baton, local_abspath, svn_node_dir, scratch_pool)); } return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. * * Called after merge_dir_opened() when a node itself didn't change between * the left and right source. * * After the merge_dir_opened() but before the call to this merge_dir_closed() * function all descendants will have been processed. */ static svn_error_t * merge_dir_closed(const char *relpath, const svn_diff_source_t *left_source, const svn_diff_source_t *right_source, void *dir_baton, const struct svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *db = dir_baton; SVN_ERR(handle_pending_notifications(merge_b, db, scratch_pool)); return SVN_NO_ERROR; } /* An svn_diff_tree_processor_t function. Called when the diff driver wants to report an absent path. In case of merges this happens when the diff encounters a server-excluded path. We register a skipped path, which will make parent mergeinfo non- inheritable. This ensures that a future merge might see these skipped changes as eligable for merging. For legacy reasons we also notify the path as skipped. */ static svn_error_t * merge_node_absent(const char *relpath, void *dir_baton, const svn_diff_tree_processor_t *processor, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = processor->baton; struct merge_dir_baton_t *db = dir_baton; const char *local_abspath = svn_dirent_join(merge_b->target->abspath, relpath, scratch_pool); SVN_ERR(record_skip(merge_b, local_abspath, svn_node_unknown, svn_wc_notify_skip, svn_wc_notify_state_missing, db, scratch_pool)); return SVN_NO_ERROR; } /* Return a diff processor that will apply the merge to the WC. */ static svn_diff_tree_processor_t * merge_apply_processor(merge_cmd_baton_t *merge_cmd_baton, apr_pool_t *result_pool) { svn_diff_tree_processor_t *merge_processor; merge_processor = svn_diff__tree_processor_create(merge_cmd_baton, result_pool); merge_processor->dir_opened = merge_dir_opened; merge_processor->dir_changed = merge_dir_changed; merge_processor->dir_added = merge_dir_added; merge_processor->dir_deleted = merge_dir_deleted; merge_processor->dir_closed = merge_dir_closed; merge_processor->file_opened = merge_file_opened; merge_processor->file_changed = merge_file_changed; merge_processor->file_added = merge_file_added; merge_processor->file_deleted = merge_file_deleted; /* Not interested in file_closed() */ merge_processor->node_absent = merge_node_absent; return merge_processor; } /* Initialize minimal dir baton to allow calculating 'R'eplace from 'D'elete + 'A'dd. */ static void * open_dir_for_replace_single_file(apr_pool_t *result_pool) { struct merge_dir_baton_t *dir_baton = apr_pcalloc(result_pool, sizeof(*dir_baton)); dir_baton->pool = result_pool; dir_baton->tree_conflict_reason = CONFLICT_REASON_NONE; dir_baton->tree_conflict_action = svn_wc_conflict_action_edit; dir_baton->skip_reason = svn_wc_notify_state_unknown; return dir_baton; } /*-----------------------------------------------------------------------*/ /*** Merge Notification ***/ /* Finds a nearest ancestor in CHILDREN_WITH_MERGEINFO for LOCAL_ABSPATH. If PATH_IS_OWN_ANCESTOR is TRUE then a child in CHILDREN_WITH_MERGEINFO where child->abspath == PATH is considered PATH's ancestor. If FALSE, then child->abspath must be a proper ancestor of PATH. CHILDREN_WITH_MERGEINFO is expected to be sorted in Depth first order of path. */ static svn_client__merge_path_t * find_nearest_ancestor(const apr_array_header_t *children_with_mergeinfo, svn_boolean_t path_is_own_ancestor, const char *local_abspath) { int i; SVN_ERR_ASSERT_NO_RETURN(children_with_mergeinfo != NULL); for (i = children_with_mergeinfo->nelts - 1; i >= 0 ; i--) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); if (svn_dirent_is_ancestor(child->abspath, local_abspath) && (path_is_own_ancestor || strcmp(child->abspath, local_abspath) != 0)) return child; } return NULL; } /* Find the highest level path in a merge target (possibly the merge target itself) to use in a merge notification header. Return the svn_client__merge_path_t * representing the most distant ancestor in CHILDREN_WITH_MERGEINFO of LOCAL_ABSPATH where said ancestor's first remaining ranges element (per the REMAINING_RANGES member of the ancestor) intersect with the first remaining ranges element for every intermediate ancestor svn_client__merge_path_t * of LOCAL_ABSPATH. If no such ancestor is found return NULL. If the remaining ranges of the elements in CHILDREN_WITH_MERGEINFO represent a forward merge, then set *START to the oldest revision found in any of the intersecting ancestors and *END to the youngest revision found. If the remaining ranges of the elements in CHILDREN_WITH_MERGEINFO represent a reverse merge, then set *START to the youngest revision found and *END to the oldest revision found. If no ancestors are found then set *START and *END to SVN_INVALID_REVNUM. If PATH_IS_OWN_ANCESTOR is TRUE then a child in CHILDREN_WITH_MERGEINFO where child->abspath == PATH is considered PATH's ancestor. If FALSE, then child->abspath must be a proper ancestor of PATH. See the CHILDREN_WITH_MERGEINFO ARRAY global comment for more information. */ static svn_client__merge_path_t * find_nearest_ancestor_with_intersecting_ranges( svn_revnum_t *start, svn_revnum_t *end, const apr_array_header_t *children_with_mergeinfo, svn_boolean_t path_is_own_ancestor, const char *local_abspath) { int i; svn_client__merge_path_t *nearest_ancestor = NULL; *start = SVN_INVALID_REVNUM; *end = SVN_INVALID_REVNUM; SVN_ERR_ASSERT_NO_RETURN(children_with_mergeinfo != NULL); for (i = children_with_mergeinfo->nelts - 1; i >= 0 ; i--) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); if (svn_dirent_is_ancestor(child->abspath, local_abspath) && (path_is_own_ancestor || strcmp(child->abspath, local_abspath) != 0)) { if (nearest_ancestor == NULL) { /* Found an ancestor. */ nearest_ancestor = child; if (child->remaining_ranges) { svn_merge_range_t *r1 = APR_ARRAY_IDX( child->remaining_ranges, 0, svn_merge_range_t *); *start = r1->start; *end = r1->end; } else { /* If CHILD->REMAINING_RANGES is null then LOCAL_ABSPATH is inside an absent subtree in the merge target. */ *start = SVN_INVALID_REVNUM; *end = SVN_INVALID_REVNUM; break; } } else { /* We'e found another ancestor for LOCAL_ABSPATH. Do its first remaining range intersect with the previously found ancestor? */ svn_merge_range_t *r1 = APR_ARRAY_IDX(nearest_ancestor->remaining_ranges, 0, svn_merge_range_t *); svn_merge_range_t *r2 = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); if (r1 && r2) { svn_merge_range_t range1; svn_merge_range_t range2; svn_boolean_t reverse_merge = r1->start > r2->end; /* Flip endpoints if this is a reverse merge. */ if (reverse_merge) { range1.start = r1->end; range1.end = r1->start; range2.start = r2->end; range2.end = r2->start; } else { range1.start = r1->start; range1.end = r1->end; range2.start = r2->start; range2.end = r2->end; } if (range1.start < range2.end && range2.start < range1.end) { *start = reverse_merge ? MAX(r1->start, r2->start) : MIN(r1->start, r2->start); *end = reverse_merge ? MIN(r1->end, r2->end) : MAX(r1->end, r2->end); nearest_ancestor = child; } } } } } return nearest_ancestor; } /* Notify that we're starting to record mergeinfo for the merge of the * revision range RANGE into TARGET_ABSPATH. RANGE should be null if the * merge sources are not from the same URL. * * This calls the client's notification receiver (as found in the client * context), with a WC abspath. */ static void notify_mergeinfo_recording(const char *target_abspath, const svn_merge_range_t *range, svn_client_ctx_t *ctx, apr_pool_t *pool) { if (ctx->notify_func2) { svn_wc_notify_t *n = svn_wc_create_notify( target_abspath, svn_wc_notify_merge_record_info_begin, pool); n->merge_range = range ? svn_merge_range_dup(range, pool) : NULL; ctx->notify_func2(ctx->notify_baton2, n, pool); } } /* Notify that we're completing the merge into TARGET_ABSPATH. * * This calls the client's notification receiver (as found in the client * context), with a WC abspath. */ static void notify_merge_completed(const char *target_abspath, svn_client_ctx_t *ctx, apr_pool_t *pool) { if (ctx->notify_func2) { svn_wc_notify_t *n = svn_wc_create_notify(target_abspath, svn_wc_notify_merge_completed, pool); ctx->notify_func2(ctx->notify_baton2, n, pool); } } /* Remove merge source gaps from range used for merge notifications. See https://issues.apache.org/jira/browse/SVN-4138 If IMPLICIT_SRC_GAP is not NULL then it is a rangelist containing a single range (see the implicit_src_gap member of merge_cmd_baton_t). RANGE describes a (possibly reverse) merge. If IMPLICIT_SRC_GAP is not NULL and it's sole range intersects with the older revision in *RANGE, then remove IMPLICIT_SRC_GAP's range from *RANGE. */ static void remove_source_gap(svn_merge_range_t *range, apr_array_header_t *implicit_src_gap) { if (implicit_src_gap) { svn_merge_range_t *gap_range = APR_ARRAY_IDX(implicit_src_gap, 0, svn_merge_range_t *); if (range->start < range->end) { if (gap_range->start == range->start) range->start = gap_range->end; } else /* Reverse merge */ { if (gap_range->start == range->end) range->end = gap_range->end; } } } /* Notify that we're starting a merge * * This calls the client's notification receiver (as found in the client * context), with a WC abspath. */ static void notify_merge_begin(struct notify_begin_state_t *notify_begin_state, const char *local_abspath, svn_boolean_t delete_action, apr_pool_t *scratch_pool) { merge_cmd_baton_t *merge_b = notify_begin_state->merge_b; svn_wc_notify_t *notify; svn_merge_range_t n_range = {SVN_INVALID_REVNUM, SVN_INVALID_REVNUM, TRUE}; const char *notify_abspath; if (! notify_begin_state->notify_func2) return; /* If our merge sources are ancestors of one another... */ if (merge_b->merge_source.ancestral) { const svn_client__merge_path_t *child; /* Find LOCAL_ABSPATH's nearest ancestor in CHILDREN_WITH_MERGEINFO. Normally we consider a child in CHILDREN_WITH_MERGEINFO representing PATH to be an ancestor of PATH, but if this is a deletion of PATH then the notification must be for a proper ancestor of PATH. This ensures we don't get notifications like: --- Merging rX into 'PARENT/CHILD' D PARENT/CHILD But rather: --- Merging rX into 'PARENT' D PARENT/CHILD */ child = find_nearest_ancestor_with_intersecting_ranges( &(n_range.start), &(n_range.end), merge_b->children_with_mergeinfo, ! delete_action, local_abspath); if (!child && delete_action) { /* Triggered by file replace in single-file-merge */ child = find_nearest_ancestor(merge_b->children_with_mergeinfo, TRUE, local_abspath); } assert(child != NULL); /* Should always find the merge anchor */ if (! child) return; if (notify_begin_state->last_abspath != NULL && strcmp(child->abspath, notify_begin_state->last_abspath) == 0) { /* Don't notify the same merge again */ return; } notify_begin_state->last_abspath = child->abspath; if (child->absent || child->remaining_ranges->nelts == 0 || !SVN_IS_VALID_REVNUM(n_range.start)) { /* No valid information for an header */ return; } notify_abspath = child->abspath; } else { if (notify_begin_state->last_abspath) return; /* already notified */ notify_abspath = merge_b->target->abspath; /* Store something in last_abspath. Any value would do */ notify_begin_state->last_abspath = merge_b->target->abspath; } notify = svn_wc_create_notify(notify_abspath, merge_b->same_repos ? svn_wc_notify_merge_begin : svn_wc_notify_foreign_merge_begin, scratch_pool); if (SVN_IS_VALID_REVNUM(n_range.start)) { /* If the merge source has a gap, then don't mention those gap revisions in the notification. */ remove_source_gap(&n_range, merge_b->implicit_src_gap); notify->merge_range = &n_range; } else { notify->merge_range = NULL; } notify_begin_state->notify_func2(notify_begin_state->notify_baton2, notify, scratch_pool); } /* Our notification callback, that adds a 'begin' notification */ static void notify_merging(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool) { struct notify_begin_state_t *b = baton; notify_merge_begin(b, notify->path, notify->action == svn_wc_notify_update_delete, pool); b->notify_func2(b->notify_baton2, notify, pool); } /* Set *OUT_RANGELIST to the intersection of IN_RANGELIST with the simple * (inheritable) revision range REV1:REV2, according to CONSIDER_INHERITANCE. * If REV1 is equal to REV2, the result is an empty rangelist, otherwise * REV1 must be less than REV2. * * Note: If CONSIDER_INHERITANCE is FALSE, the effect is to treat any non- * inheritable input ranges as if they were inheritable. If it is TRUE, the * effect is to discard any non-inheritable input ranges. Therefore the * ranges in *OUT_RANGELIST will always be inheritable. */ static svn_error_t * rangelist_intersect_range(svn_rangelist_t **out_rangelist, const svn_rangelist_t *in_rangelist, svn_revnum_t rev1, svn_revnum_t rev2, svn_boolean_t consider_inheritance, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { SVN_ERR_ASSERT(rev1 <= rev2); if (rev1 < rev2) { svn_rangelist_t *simple_rangelist = svn_rangelist__initialize(rev1, rev2, TRUE, scratch_pool); SVN_ERR(svn_rangelist_intersect(out_rangelist, simple_rangelist, in_rangelist, consider_inheritance, result_pool)); } else { *out_rangelist = apr_array_make(result_pool, 0, sizeof(svn_merge_range_t *)); } return SVN_NO_ERROR; } /* Helper for fix_deleted_subtree_ranges(). Like fix_deleted_subtree_ranges() this function should only be called when honoring mergeinfo. CHILD, PARENT, REVISION1, REVISION2, and RA_SESSION are all cascaded from fix_deleted_subtree_ranges() -- see that function for more information on each. If PARENT is not the merge target then PARENT must have already have been processed by this function as a child. Specifically, this means that PARENT->REMAINING_RANGES must already be populated -- it can be an empty rangelist but cannot be NULL. PRIMARY_URL is the merge source url of CHILD at the younger of REVISION1 and REVISION2. Since this function is only invoked for subtrees of the merge target, the guarantees afforded by normalize_merge_sources() don't apply - see the 'MERGEINFO MERGE SOURCE NORMALIZATION' comment at the top of this file. Therefore it is possible that PRIMARY_URL@REVISION1 and PRIMARY_URL@REVISION2 don't describe the endpoints of an unbroken line of history. The purpose of this helper is to identify these cases of broken history and adjust CHILD->REMAINING_RANGES in such a way we don't later try to describe nonexistent path/revisions to the merge report editor -- see drive_merge_report_editor(). If PRIMARY_URL@REVISION1 and PRIMARY_URL@REVISION2 describe an unbroken line of history then do nothing and leave CHILD->REMAINING_RANGES as-is. If neither PRIMARY_URL@REVISION1 nor PRIMARY_URL@REVISION2 exist then there is nothing to merge to CHILD->ABSPATH so set CHILD->REMAINING_RANGES equal to PARENT->REMAINING_RANGES. This will cause the subtree to effectively ignore CHILD -- see 'Note: If the first svn_merge_range_t...' in drive_merge_report_editor()'s doc string. If PRIMARY_URL@REVISION1 *xor* PRIMARY_URL@REVISION2 exist then we take the subset of REVISION1:REVISION2 in CHILD->REMAINING_RANGES at which PRIMARY_URL doesn't exist and set that subset equal to PARENT->REMAINING_RANGES' intersection with that non-existent range. Why? Because this causes CHILD->REMAINING_RANGES to be identical to PARENT->REMAINING_RANGES for revisions between REVISION1 and REVISION2 at which PRIMARY_URL doesn't exist. As mentioned above this means that drive_merge_report_editor() won't attempt to describe these non-existent subtree path/ranges to the reporter (which would break the merge). If the preceding paragraph wasn't terribly clear then what follows spells out this function's behavior a bit more explicitly: For forward merges (REVISION1 < REVISION2) If PRIMARY_URL@REVISION1 exists but PRIMARY_URL@REVISION2 doesn't, then find the revision 'N' in which PRIMARY_URL@REVISION1 was deleted. Leave the subset of CHILD->REMAINING_RANGES that intersects with REVISION1:(N - 1) as-is and set the subset of CHILD->REMAINING_RANGES that intersects with (N - 1):REVISION2 equal to PARENT->REMAINING_RANGES' intersection with (N - 1):REVISION2. If PRIMARY_URL@REVISION1 doesn't exist but PRIMARY_URL@REVISION2 does, then find the revision 'M' in which PRIMARY_URL@REVISION2 came into existence. Leave the subset of CHILD->REMAINING_RANGES that intersects with (M - 1):REVISION2 as-is and set the subset of CHILD->REMAINING_RANGES that intersects with REVISION1:(M - 1) equal to PARENT->REMAINING_RANGES' intersection with REVISION1:(M - 1). For reverse merges (REVISION1 > REVISION2) If PRIMARY_URL@REVISION1 exists but PRIMARY_URL@REVISION2 doesn't, then find the revision 'N' in which PRIMARY_URL@REVISION1 came into existence. Leave the subset of CHILD->REMAINING_RANGES that intersects with REVISION2:(N - 1) as-is and set the subset of CHILD->REMAINING_RANGES that intersects with (N - 1):REVISION1 equal to PARENT->REMAINING_RANGES' intersection with (N - 1):REVISION1. If PRIMARY_URL@REVISION1 doesn't exist but PRIMARY_URL@REVISION2 does, then find the revision 'M' in which PRIMARY_URL@REVISION2 came into existence. Leave the subset of CHILD->REMAINING_RANGES that intersects with REVISION2:(M - 1) as-is and set the subset of CHILD->REMAINING_RANGES that intersects with (M - 1):REVISION1 equal to PARENT->REMAINING_RANGES' intersection with REVISION1:(M - 1). SCRATCH_POOL is used for all temporary allocations. Changes to CHILD are allocated in RESULT_POOL. */ static svn_error_t * adjust_deleted_subtree_ranges(svn_client__merge_path_t *child, svn_client__merge_path_t *parent, svn_revnum_t revision1, svn_revnum_t revision2, const char *primary_url, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_boolean_t is_rollback = revision2 < revision1; svn_revnum_t younger_rev = is_rollback ? revision1 : revision2; svn_revnum_t peg_rev = younger_rev; svn_revnum_t older_rev = is_rollback ? revision2 : revision1; apr_array_header_t *segments; svn_error_t *err; SVN_ERR_ASSERT(parent->remaining_ranges); err = svn_client__repos_location_segments(&segments, ra_session, primary_url, peg_rev, younger_rev, older_rev, ctx, scratch_pool); if (err) { const char *rel_source_path; /* PRIMARY_URL relative to RA_SESSION */ svn_node_kind_t kind; if (err->apr_err != SVN_ERR_FS_NOT_FOUND) return svn_error_trace(err); svn_error_clear(err); /* PRIMARY_URL@peg_rev doesn't exist. Check if PRIMARY_URL@older_rev exists, if neither exist then the editor can simply ignore this subtree. */ SVN_ERR(svn_ra_get_path_relative_to_session( ra_session, &rel_source_path, primary_url, scratch_pool)); SVN_ERR(svn_ra_check_path(ra_session, rel_source_path, older_rev, &kind, scratch_pool)); if (kind == svn_node_none) { /* Neither PRIMARY_URL@peg_rev nor PRIMARY_URL@older_rev exist, so there is nothing to merge. Set CHILD->REMAINING_RANGES identical to PARENT's. */ child->remaining_ranges = svn_rangelist_dup(parent->remaining_ranges, scratch_pool); } else { svn_rangelist_t *deleted_rangelist; svn_revnum_t rev_primary_url_deleted; /* PRIMARY_URL@older_rev exists, so it was deleted at some revision prior to peg_rev, find that revision. */ SVN_ERR(svn_ra_get_deleted_rev(ra_session, rel_source_path, older_rev, younger_rev, &rev_primary_url_deleted, scratch_pool)); /* PRIMARY_URL@older_rev exists and PRIMARY_URL@peg_rev doesn't, so svn_ra_get_deleted_rev() should always find the revision PRIMARY_URL@older_rev was deleted. */ SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(rev_primary_url_deleted)); /* If this is a reverse merge reorder CHILD->REMAINING_RANGES and PARENT->REMAINING_RANGES so both will work with the svn_rangelist_* APIs below. */ if (is_rollback) { /* svn_rangelist_reverse operates in place so it's safe to use our scratch_pool. */ SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, scratch_pool)); SVN_ERR(svn_rangelist_reverse(parent->remaining_ranges, scratch_pool)); } /* Find the intersection of CHILD->REMAINING_RANGES with the range over which PRIMARY_URL@older_rev exists (ending at the youngest revision at which it still exists). */ SVN_ERR(rangelist_intersect_range(&child->remaining_ranges, child->remaining_ranges, older_rev, rev_primary_url_deleted - 1, FALSE, scratch_pool, scratch_pool)); /* Merge into CHILD->REMAINING_RANGES the intersection of PARENT->REMAINING_RANGES with the range beginning when PRIMARY_URL@older_rev was deleted until younger_rev. */ SVN_ERR(rangelist_intersect_range(&deleted_rangelist, parent->remaining_ranges, rev_primary_url_deleted - 1, peg_rev, FALSE, scratch_pool, scratch_pool)); SVN_ERR(svn_rangelist_merge2(child->remaining_ranges, deleted_rangelist, scratch_pool, scratch_pool)); /* Return CHILD->REMAINING_RANGES and PARENT->REMAINING_RANGES to reverse order if necessary. */ if (is_rollback) { SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, scratch_pool)); SVN_ERR(svn_rangelist_reverse(parent->remaining_ranges, scratch_pool)); } } } else /* PRIMARY_URL@peg_rev exists. */ { svn_rangelist_t *non_existent_rangelist; svn_location_segment_t *segment = APR_ARRAY_IDX(segments, (segments->nelts - 1), svn_location_segment_t *); /* We know PRIMARY_URL@peg_rev exists as the call to svn_client__repos_location_segments() succeeded. If there is only one segment that starts at oldest_rev then we know that PRIMARY_URL@oldest_rev:PRIMARY_URL@peg_rev describes an unbroken line of history, so there is nothing more to adjust in CHILD->REMAINING_RANGES. */ if (segment->range_start == older_rev) { return SVN_NO_ERROR; } /* If this is a reverse merge reorder CHILD->REMAINING_RANGES and PARENT->REMAINING_RANGES so both will work with the svn_rangelist_* APIs below. */ if (is_rollback) { SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, scratch_pool)); SVN_ERR(svn_rangelist_reverse(parent->remaining_ranges, scratch_pool)); } /* Intersect CHILD->REMAINING_RANGES with the range where PRIMARY_URL exists. Since segment doesn't span older_rev:peg_rev we know PRIMARY_URL@peg_rev didn't come into existence until segment->range_start + 1. */ SVN_ERR(rangelist_intersect_range(&child->remaining_ranges, child->remaining_ranges, segment->range_start, peg_rev, FALSE, scratch_pool, scratch_pool)); /* Merge into CHILD->REMAINING_RANGES the intersection of PARENT->REMAINING_RANGES with the range before PRIMARY_URL@peg_rev came into existence. */ SVN_ERR(rangelist_intersect_range(&non_existent_rangelist, parent->remaining_ranges, older_rev, segment->range_start, FALSE, scratch_pool, scratch_pool)); SVN_ERR(svn_rangelist_merge2(child->remaining_ranges, non_existent_rangelist, scratch_pool, scratch_pool)); /* Return CHILD->REMAINING_RANGES and PARENT->REMAINING_RANGES to reverse order if necessary. */ if (is_rollback) { SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, scratch_pool)); SVN_ERR(svn_rangelist_reverse(parent->remaining_ranges, scratch_pool)); } } /* Make a lasting copy of CHILD->REMAINING_RANGES using POOL. */ child->remaining_ranges = svn_rangelist_dup(child->remaining_ranges, result_pool); return SVN_NO_ERROR; } /* Helper for do_directory_merge(). SOURCE is cascaded from the argument of the same name in do_directory_merge(). TARGET is the merge target. RA_SESSION is the session for the younger of SOURCE->loc1 and SOURCE->loc2. Adjust the subtrees in CHILDREN_WITH_MERGEINFO so that we don't later try to describe invalid paths in drive_merge_report_editor(). This function is just a thin wrapper around adjust_deleted_subtree_ranges(), which see for further details. SCRATCH_POOL is used for all temporary allocations. Changes to CHILDREN_WITH_MERGEINFO are allocated in RESULT_POOL. */ static svn_error_t * fix_deleted_subtree_ranges(const merge_source_t *source, const merge_target_t *target, svn_ra_session_t *ra_session, apr_array_header_t *children_with_mergeinfo, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { int i; apr_pool_t *iterpool = svn_pool_create(scratch_pool); svn_boolean_t is_rollback = source->loc2->rev < source->loc1->rev; assert(session_url_is(ra_session, (is_rollback ? source->loc1 : source->loc2)->url, scratch_pool)); /* CHILDREN_WITH_MERGEINFO is sorted in depth-first order, so start at index 1 to examine only subtrees. */ for (i = 1; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); svn_client__merge_path_t *parent; svn_rangelist_t *deleted_rangelist, *added_rangelist; SVN_ERR_ASSERT(child); if (child->absent) continue; svn_pool_clear(iterpool); /* Find CHILD's parent. */ parent = find_nearest_ancestor(children_with_mergeinfo, FALSE, child->abspath); /* Since CHILD is a subtree then its parent must be in CHILDREN_WITH_MERGEINFO, see the global comment 'THE CHILDREN_WITH_MERGEINFO ARRAY'. */ SVN_ERR_ASSERT(parent); /* If this is a reverse merge reorder CHILD->REMAINING_RANGES so it will work with the svn_rangelist_diff API. */ if (is_rollback) { SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, iterpool)); SVN_ERR(svn_rangelist_reverse(parent->remaining_ranges, iterpool)); } SVN_ERR(svn_rangelist_diff(&deleted_rangelist, &added_rangelist, child->remaining_ranges, parent->remaining_ranges, TRUE, iterpool)); if (is_rollback) { SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, iterpool)); SVN_ERR(svn_rangelist_reverse(parent->remaining_ranges, iterpool)); } /* If CHILD is the merge target we then know that SOURCE is provided by normalize_merge_sources() -- see 'MERGEINFO MERGE SOURCE NORMALIZATION'. Due to this normalization we know that SOURCE describes an unbroken line of history such that the entire range described by SOURCE can potentially be merged to CHILD. But if CHILD is a subtree we don't have the same guarantees about SOURCE as we do for the merge target. SOURCE->loc1 and/or SOURCE->loc2 might not exist. If one or both doesn't exist, then adjust CHILD->REMAINING_RANGES such that we don't later try to describe invalid subtrees in drive_merge_report_editor(), as that will break the merge. If CHILD has the same remaining ranges as PARENT however, then there is no need to make these adjustments, since drive_merge_report_editor() won't attempt to describe CHILD in this case, see the 'Note' in drive_merge_report_editor's docstring. */ if (deleted_rangelist->nelts || added_rangelist->nelts) { const char *child_primary_source_url; const char *child_repos_src_path = svn_dirent_is_child(target->abspath, child->abspath, iterpool); /* This loop is only processing subtrees, so CHILD->ABSPATH better be a proper child of the merge target. */ SVN_ERR_ASSERT(child_repos_src_path); child_primary_source_url = svn_path_url_add_component2((source->loc1->rev < source->loc2->rev) ? source->loc2->url : source->loc1->url, child_repos_src_path, iterpool); SVN_ERR(adjust_deleted_subtree_ranges(child, parent, source->loc1->rev, source->loc2->rev, child_primary_source_url, ra_session, ctx, result_pool, iterpool)); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /*-----------------------------------------------------------------------*/ /*** Determining What Remains To Be Merged ***/ /* Get explicit and/or implicit mergeinfo for the working copy path TARGET_ABSPATH. If RECORDED_MERGEINFO is not NULL then set *RECORDED_MERGEINFO to TARGET_ABSPATH's explicit or inherited mergeinfo as dictated by INHERIT. If IMPLICIT_MERGEINFO is not NULL then set *IMPLICIT_MERGEINFO to TARGET_ABSPATH's implicit mergeinfo (a.k.a. natural history). If both RECORDED_MERGEINFO and IMPLICIT_MERGEINFO are not NULL and *RECORDED_MERGEINFO is inherited, then *IMPLICIT_MERGEINFO will be removed from *RECORDED_MERGEINFO. If INHERITED is not NULL set *INHERITED to TRUE if *RECORDED_MERGEINFO is inherited rather than explicit. If RECORDED_MERGEINFO is NULL then INHERITED is ignored. If IMPLICIT_MERGEINFO is not NULL then START and END are limits on the natural history sought, must both be valid revision numbers, and START must be greater than END. If TARGET_ABSPATH's base revision is older than START, then the base revision is used as the younger bound in place of START. RA_SESSION is an RA session open to the repository in which TARGET_ABSPATH lives. It may be temporarily reparented as needed by this function. Allocate *RECORDED_MERGEINFO and *IMPLICIT_MERGEINFO in RESULT_POOL. Use SCRATCH_POOL for any temporary allocations. */ static svn_error_t * get_full_mergeinfo(svn_mergeinfo_t *recorded_mergeinfo, svn_mergeinfo_t *implicit_mergeinfo, svn_boolean_t *inherited, svn_mergeinfo_inheritance_t inherit, svn_ra_session_t *ra_session, const char *target_abspath, svn_revnum_t start, svn_revnum_t end, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { /* First, we get the real mergeinfo. */ if (recorded_mergeinfo) { SVN_ERR(svn_client__get_wc_or_repos_mergeinfo(recorded_mergeinfo, inherited, NULL /* from_repos */, FALSE, inherit, ra_session, target_abspath, ctx, result_pool)); } if (implicit_mergeinfo) { svn_client__pathrev_t *target; /* Assert that we have sane input. */ SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(start) && SVN_IS_VALID_REVNUM(end) && (start > end)); /* Retrieve the origin (original_*) of the node, or just the url if the node was not copied. */ SVN_ERR(svn_client__wc_node_get_origin(&target, target_abspath, ctx, scratch_pool, scratch_pool)); if (! target) { /* We've been asked to operate on a locally added target, so its * implicit mergeinfo is empty. */ *implicit_mergeinfo = apr_hash_make(result_pool); } else if (target->rev <= end) { /* We're asking about a range outside our natural history altogether. That means our implicit mergeinfo is empty. */ *implicit_mergeinfo = apr_hash_make(result_pool); } else { /* Fetch so-called "implicit mergeinfo" (that is, natural history). */ /* Do not ask for implicit mergeinfo from TARGET_ABSPATH's future. TARGET_ABSPATH might not even exist, and even if it does the working copy is *at* TARGET_REV so its implicit history ends at TARGET_REV! */ if (target->rev < start) start = target->rev; /* Fetch the implicit mergeinfo. */ SVN_ERR(svn_client__get_history_as_mergeinfo(implicit_mergeinfo, NULL, target, start, end, ra_session, ctx, result_pool)); } } /*if (implicit_mergeinfo) */ return SVN_NO_ERROR; } /* Helper for ensure_implicit_mergeinfo(). PARENT, CHILD, REVISION1, REVISION2 and CTX are all cascaded from the arguments of the same names in ensure_implicit_mergeinfo(). PARENT and CHILD must both exist, i.e. this function should never be called where CHILD is the merge target. If PARENT->IMPLICIT_MERGEINFO is NULL, obtain it from the server. Set CHILD->IMPLICIT_MERGEINFO to the mergeinfo inherited from PARENT->IMPLICIT_MERGEINFO. CHILD->IMPLICIT_MERGEINFO is allocated in RESULT_POOL. RA_SESSION is an RA session open to the repository that contains CHILD. It may be temporarily reparented by this function. */ static svn_error_t * inherit_implicit_mergeinfo_from_parent(svn_client__merge_path_t *parent, svn_client__merge_path_t *child, svn_revnum_t revision1, svn_revnum_t revision2, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *path_diff; /* This only works on subtrees! */ SVN_ERR_ASSERT(parent); SVN_ERR_ASSERT(child); /* While PARENT must exist, it is possible we've deferred getting its implicit mergeinfo. If so get it now. */ if (!parent->implicit_mergeinfo) SVN_ERR(get_full_mergeinfo(NULL, &(parent->implicit_mergeinfo), NULL, svn_mergeinfo_inherited, ra_session, child->abspath, MAX(revision1, revision2), MIN(revision1, revision2), ctx, result_pool, scratch_pool)); /* Let CHILD inherit PARENT's implicit mergeinfo. */ path_diff = svn_dirent_is_child(parent->abspath, child->abspath, scratch_pool); /* PARENT->PATH better be an ancestor of CHILD->ABSPATH! */ SVN_ERR_ASSERT(path_diff); SVN_ERR(svn_mergeinfo__add_suffix_to_mergeinfo( &child->implicit_mergeinfo, parent->implicit_mergeinfo, path_diff, result_pool, scratch_pool)); child->implicit_mergeinfo = svn_mergeinfo_dup(child->implicit_mergeinfo, result_pool); return SVN_NO_ERROR; } /* Helper of filter_merged_revisions(). If we have deferred obtaining CHILD->IMPLICIT_MERGEINFO, then get it now, allocating it in RESULT_POOL. If CHILD_INHERITS_PARENT is true then set CHILD->IMPLICIT_MERGEINFO to the mergeinfo inherited from PARENT->IMPLICIT_MERGEINFO, otherwise contact the repository. Use SCRATCH_POOL for all temporary allocations. RA_SESSION is an RA session open to the repository that contains CHILD. It may be temporarily reparented by this function. PARENT, CHILD, REVISION1, REVISION2 and CTX are all cascaded from the arguments of the same name in filter_merged_revisions() and the same conditions for that function hold here. */ static svn_error_t * ensure_implicit_mergeinfo(svn_client__merge_path_t *parent, svn_client__merge_path_t *child, svn_boolean_t child_inherits_parent, svn_revnum_t revision1, svn_revnum_t revision2, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { /* If we haven't already found CHILD->IMPLICIT_MERGEINFO then contact the server to get it. */ if (child->implicit_mergeinfo) return SVN_NO_ERROR; if (child_inherits_parent) SVN_ERR(inherit_implicit_mergeinfo_from_parent(parent, child, revision1, revision2, ra_session, ctx, result_pool, scratch_pool)); else SVN_ERR(get_full_mergeinfo(NULL, &(child->implicit_mergeinfo), NULL, svn_mergeinfo_inherited, ra_session, child->abspath, MAX(revision1, revision2), MIN(revision1, revision2), ctx, result_pool, scratch_pool)); return SVN_NO_ERROR; } /* Helper for calculate_remaining_ranges(). Initialize CHILD->REMAINING_RANGES to a rangelist representing the requested merge of REVISION1:REVISION2 from MERGEINFO_PATH to CHILD->ABSPATH. For forward merges remove any ranges from CHILD->REMAINING_RANGES that have already been merged to CHILD->ABSPATH per TARGET_MERGEINFO or CHILD->IMPLICIT_MERGEINFO. For reverse merges remove any ranges from CHILD->REMAINING_RANGES that have not already been merged to CHILD->ABSPATH per TARGET_MERGEINFO or CHILD->IMPLICIT_MERGEINFO. If we have deferred obtaining CHILD->IMPLICIT_MERGEINFO and it is necessary to use it for these calculations, then get it from the server, allocating it in RESULT_POOL. CHILD represents a working copy path which is the merge target or one of the target's subtrees. If not NULL, PARENT is CHILD's nearest path-wise ancestor - see 'THE CHILDREN_WITH_MERGEINFO ARRAY'. If the function needs to consider CHILD->IMPLICIT_MERGEINFO and CHILD_INHERITS_IMPLICIT is true, then set CHILD->IMPLICIT_MERGEINFO to the mergeinfo inherited from PARENT->IMPLICIT_MERGEINFO. Otherwise contact the repository for CHILD->IMPLICIT_MERGEINFO. NOTE: If PARENT is present then this function must have previously been called for PARENT, i.e. if populate_remaining_ranges() is calling this function for a set of svn_client__merge_path_t* the calls must be made in depth-first order. MERGEINFO_PATH is the merge source relative to the repository root. REVISION1 and REVISION2 describe the merge range requested from MERGEINFO_PATH. TARGET_RANGELIST is the portion of CHILD->ABSPATH's explicit or inherited mergeinfo that intersects with the merge history described by MERGEINFO_PATH@REVISION1:MERGEINFO_PATH@REVISION2. TARGET_RANGELIST should be NULL if there is no explicit or inherited mergeinfo on CHILD->ABSPATH or an empty list if CHILD->ABSPATH has empty mergeinfo or explicit mergeinfo that exclusively describes non-intersecting history with MERGEINFO_PATH@REVISION1:MERGEINFO_PATH@REVISION2. SCRATCH_POOL is used for all temporary allocations. NOTE: This should only be called when honoring mergeinfo. NOTE: Like calculate_remaining_ranges() if PARENT is present then this function must have previously been called for PARENT. */ static svn_error_t * filter_merged_revisions(svn_client__merge_path_t *parent, svn_client__merge_path_t *child, const char *mergeinfo_path, svn_rangelist_t *target_rangelist, svn_revnum_t revision1, svn_revnum_t revision2, svn_boolean_t child_inherits_implicit, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_rangelist_t *requested_rangelist, *target_implicit_rangelist, *explicit_rangelist; /* Convert REVISION1 and REVISION2 to a rangelist. Note: Talking about a requested merge range's inheritability doesn't make much sense, but as we are using svn_merge_range_t to describe it we need to pick *something*. Since all the rangelist manipulations in this function either don't consider inheritance by default or we are requesting that they don't (i.e. svn_rangelist_remove and svn_rangelist_intersect) then we could set the inheritability as FALSE, it won't matter either way. */ requested_rangelist = svn_rangelist__initialize(revision1, revision2, TRUE, scratch_pool); /* Now filter out revisions that have already been merged to CHILD. */ if (revision1 > revision2) /* This is a reverse merge. */ { svn_rangelist_t *added_rangelist, *deleted_rangelist; /* The revert range and will need to be reversed for our svn_rangelist_* APIs to work properly. */ SVN_ERR(svn_rangelist_reverse(requested_rangelist, scratch_pool)); /* Set EXPLICIT_RANGELIST to the list of source-range revs that are already recorded as merged to target. */ if (target_rangelist) { /* Return the intersection of the revs which are both already represented by CHILD's explicit or inherited mergeinfo. We don't consider inheritance when determining intersecting ranges. If we *did* consider inheritance, then our calculation would be wrong. For example, if the CHILD->REMAINING_RANGES is 5:3 and TARGET_RANGELIST is r5* (non-inheritable) then the intersection would be r4. And that would be wrong as we clearly want to reverse merge both r4 and r5 in this case. Ignoring the ranges' inheritance results in an intersection of r4-5. You might be wondering about CHILD's children, doesn't the above imply that we will reverse merge r4-5 from them? Nope, this is safe to do because any path whose parent has non-inheritable ranges is always considered a subtree with differing mergeinfo even if that path has no explicit mergeinfo prior to the merge -- See condition 3 in the doc string for merge.c:get_mergeinfo_paths(). */ SVN_ERR(svn_rangelist_intersect(&explicit_rangelist, target_rangelist, requested_rangelist, FALSE, scratch_pool)); } else { explicit_rangelist = apr_array_make(result_pool, 0, sizeof(svn_merge_range_t *)); } /* Was any part of the requested reverse merge not accounted for in CHILD's explicit or inherited mergeinfo? */ SVN_ERR(svn_rangelist_diff(&deleted_rangelist, &added_rangelist, requested_rangelist, explicit_rangelist, FALSE, scratch_pool)); if (deleted_rangelist->nelts == 0) { /* The whole of REVISION1:REVISION2 was represented in CHILD's explicit/inherited mergeinfo, allocate CHILD's remaining ranges in POOL and then we are done. */ SVN_ERR(svn_rangelist_reverse(requested_rangelist, scratch_pool)); child->remaining_ranges = svn_rangelist_dup(requested_rangelist, result_pool); } else /* We need to check CHILD's implicit mergeinfo. */ { svn_rangelist_t *implicit_rangelist; SVN_ERR(ensure_implicit_mergeinfo(parent, child, child_inherits_implicit, revision1, revision2, ra_session, ctx, result_pool, scratch_pool)); target_implicit_rangelist = svn_hash_gets(child->implicit_mergeinfo, mergeinfo_path); if (target_implicit_rangelist) SVN_ERR(svn_rangelist_intersect(&implicit_rangelist, target_implicit_rangelist, requested_rangelist, FALSE, scratch_pool)); else implicit_rangelist = apr_array_make(scratch_pool, 0, sizeof(svn_merge_range_t *)); SVN_ERR(svn_rangelist_merge2(implicit_rangelist, explicit_rangelist, scratch_pool, scratch_pool)); SVN_ERR(svn_rangelist_reverse(implicit_rangelist, scratch_pool)); child->remaining_ranges = svn_rangelist_dup(implicit_rangelist, result_pool); } } else /* This is a forward merge */ { /* Set EXPLICIT_RANGELIST to the list of source-range revs that are NOT already recorded as merged to target. */ if (target_rangelist) { /* See earlier comment preceding svn_rangelist_intersect() for why we don't consider inheritance here. */ SVN_ERR(svn_rangelist_remove(&explicit_rangelist, target_rangelist, requested_rangelist, FALSE, scratch_pool)); } else { explicit_rangelist = svn_rangelist_dup(requested_rangelist, scratch_pool); } if (explicit_rangelist->nelts == 0) { child->remaining_ranges = apr_array_make(result_pool, 0, sizeof(svn_merge_range_t *)); } else /* ### TODO: Which evil shall we choose? ### ### If we allow all forward-merges not already found in recorded ### mergeinfo, we destroy the ability to, say, merge the whole of a ### branch to the trunk while automatically ignoring the revisions ### common to both. That's bad. ### ### If we allow only forward-merges not found in either recorded ### mergeinfo or implicit mergeinfo (natural history), then the ### previous scenario works great, but we can't reverse-merge a ### previous change made to our line of history and then remake it ### (because the reverse-merge will leave no mergeinfo trace, and ### the remake-it attempt will still find the original change in ### natural mergeinfo. But you know, that we happen to use 'merge' ### for revision undoing is somewhat unnatural anyway, so I'm ### finding myself having little interest in caring too much about ### this. That said, if we had a way of storing reverse merge ### ranges, we'd be in good shape either way. */ #ifdef SVN_MERGE__ALLOW_ALL_FORWARD_MERGES_FROM_SELF { /* ### Don't consider implicit mergeinfo. */ child->remaining_ranges = svn_rangelist_dup(explicit_rangelist, pool); } #else { /* Based on CHILD's TARGET_MERGEINFO there are ranges to merge. Check CHILD's implicit mergeinfo to see if these remaining ranges are represented there. */ SVN_ERR(ensure_implicit_mergeinfo(parent, child, child_inherits_implicit, revision1, revision2, ra_session, ctx, result_pool, scratch_pool)); target_implicit_rangelist = svn_hash_gets(child->implicit_mergeinfo, mergeinfo_path); if (target_implicit_rangelist) SVN_ERR(svn_rangelist_remove(&(child->remaining_ranges), target_implicit_rangelist, explicit_rangelist, FALSE, result_pool)); else child->remaining_ranges = svn_rangelist_dup(explicit_rangelist, result_pool); } #endif } return SVN_NO_ERROR; } /* Helper for do_file_merge and do_directory_merge (by way of populate_remaining_ranges() for the latter). Determine what portions of SOURCE have already been merged to CHILD->ABSPATH and populate CHILD->REMAINING_RANGES with the ranges that still need merging. SOURCE and CTX are all cascaded from the caller's arguments of the same names. Note that this means SOURCE adheres to the requirements noted in `MERGEINFO MERGE SOURCE NORMALIZATION'. CHILD represents a working copy path which is the merge target or one of the target's subtrees. If not NULL, PARENT is CHILD's nearest path-wise ancestor - see 'THE CHILDREN_WITH_MERGEINFO ARRAY'. TARGET_MERGEINFO is the working mergeinfo on CHILD. RA_SESSION is the session for the younger of SOURCE->loc1 and SOURCE->loc2. If the function needs to consider CHILD->IMPLICIT_MERGEINFO and CHILD_INHERITS_IMPLICIT is true, then set CHILD->IMPLICIT_MERGEINFO to the mergeinfo inherited from PARENT->IMPLICIT_MERGEINFO. Otherwise contact the repository for CHILD->IMPLICIT_MERGEINFO. If not null, IMPLICIT_SRC_GAP is the gap, if any, in the natural history of SOURCE, see merge_cmd_baton_t.implicit_src_gap. SCRATCH_POOL is used for all temporary allocations. Changes to CHILD and PARENT are made in RESULT_POOL. NOTE: This should only be called when honoring mergeinfo. NOTE: If PARENT is present then this function must have previously been called for PARENT, i.e. if populate_remaining_ranges() is calling this function for a set of svn_client__merge_path_t* the calls must be made in depth-first order. NOTE: When performing reverse merges, return SVN_ERR_CLIENT_NOT_READY_TO_MERGE if both locations in SOURCE and CHILD->ABSPATH are all on the same line of history but CHILD->ABSPATH's base revision is older than the SOURCE->rev1:rev2 range, see comment re issue #2973 below. */ static svn_error_t * calculate_remaining_ranges(svn_client__merge_path_t *parent, svn_client__merge_path_t *child, const merge_source_t *source, svn_mergeinfo_t target_mergeinfo, const apr_array_header_t *implicit_src_gap, svn_boolean_t child_inherits_implicit, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const svn_client__pathrev_t *primary_src = (source->loc1->rev < source->loc2->rev) ? source->loc2 : source->loc1; const char *mergeinfo_path = svn_client__pathrev_fspath(primary_src, scratch_pool); /* Intersection of TARGET_MERGEINFO and the merge history described by SOURCE. */ svn_rangelist_t *target_rangelist; svn_revnum_t child_base_revision; /* Since this function should only be called when honoring mergeinfo and * SOURCE adheres to the requirements noted in 'MERGEINFO MERGE SOURCE * NORMALIZATION', SOURCE must be 'ancestral'. */ SVN_ERR_ASSERT(source->ancestral); /* Determine which of the requested ranges to consider merging... */ /* Set TARGET_RANGELIST to the portion of TARGET_MERGEINFO that refers to SOURCE (excluding any gap in SOURCE): first get all ranges from TARGET_MERGEINFO that refer to the path of SOURCE, and then prune any ranges that lie in the gap in SOURCE. ### [JAF] In fact, that may still leave some ranges that lie entirely outside the range of SOURCE; it seems we don't care about that. */ if (target_mergeinfo) target_rangelist = svn_hash_gets(target_mergeinfo, mergeinfo_path); else target_rangelist = NULL; if (implicit_src_gap && target_rangelist) { /* Remove any mergeinfo referring to the 'gap' in SOURCE, as that mergeinfo doesn't really refer to SOURCE at all but instead refers to locations that are non-existent or on a different line of history. (Issue #3242.) */ SVN_ERR(svn_rangelist_remove(&target_rangelist, implicit_src_gap, target_rangelist, FALSE, result_pool)); } /* Initialize CHILD->REMAINING_RANGES and filter out revisions already merged (or, in the case of reverse merges, ranges not yet merged). */ SVN_ERR(filter_merged_revisions(parent, child, mergeinfo_path, target_rangelist, source->loc1->rev, source->loc2->rev, child_inherits_implicit, ra_session, ctx, result_pool, scratch_pool)); /* Issue #2973 -- from the continuing series of "Why, since the advent of merge tracking, allowing merges into mixed rev and locally modified working copies isn't simple and could be considered downright evil". If reverse merging a range to the WC path represented by CHILD, from that path's own history, where the path inherits no locally modified mergeinfo from its WC parents (i.e. there is no uncommitted merge to the WC), and the path's base revision is older than the range, then the merge will always be a no-op. This is because we only allow reverse merges of ranges in the path's explicit or natural mergeinfo and a reverse merge from the path's future history obviously isn't going to be in either, hence the no-op. The problem is two-fold. First, in a mixed rev WC, the change we want to revert might actually be to some child of the target path which is at a younger base revision. Sure, we can merge directly to that child or update the WC or even use --ignore-ancestry and then successfully run the reverse merge, but that gets to the second problem: Those courses of action are not very obvious. Before 1.5 if a user committed a change that didn't touch the commit target, then immediately decided to revert that change via a reverse merge it would just DTRT. But with the advent of merge tracking the user gets a no-op. So in the name of user friendliness, return an error suggesting a helpful course of action. */ SVN_ERR(svn_wc__node_get_base(NULL, &child_base_revision, NULL, NULL, NULL, NULL, ctx->wc_ctx, child->abspath, TRUE /* ignore_enoent */, scratch_pool, scratch_pool)); /* If CHILD has no base revision then it hasn't been committed yet, so it can't have any "future" history. */ if (SVN_IS_VALID_REVNUM(child_base_revision) && ((child->remaining_ranges)->nelts == 0) /* Inoperative merge */ && (source->loc2->rev < source->loc1->rev) /* Reverse merge */ && (child_base_revision <= source->loc2->rev)) /* From CHILD's future */ { /* Hmmm, an inoperative reverse merge from the "future". If it is from our own future return a helpful error. */ svn_error_t *err; svn_client__pathrev_t *start_loc; err = svn_client__repos_location(&start_loc, ra_session, source->loc1, child_base_revision, ctx, scratch_pool, scratch_pool); if (err) { if (err->apr_err == SVN_ERR_FS_NOT_FOUND || err->apr_err == SVN_ERR_CLIENT_UNRELATED_RESOURCES) svn_error_clear(err); else return svn_error_trace(err); } else { const char *url; SVN_ERR(svn_wc__node_get_url(&url, ctx->wc_ctx, child->abspath, scratch_pool, scratch_pool)); if (strcmp(start_loc->url, url) == 0) return svn_error_create(SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED, NULL, _("Cannot reverse-merge a range from a " "path's own future history; try " "updating first")); } } return SVN_NO_ERROR; } /* Helper for populate_remaining_ranges(). SOURCE is cascaded from the arguments of the same name in populate_remaining_ranges(). Note: The following comments assume a forward merge, i.e. SOURCE->loc1->rev < SOURCE->loc2->rev. If this is a reverse merge then all the following comments still apply, but with SOURCE->loc1 switched with SOURCE->loc2. Like populate_remaining_ranges(), SOURCE must adhere to the restrictions documented in 'MERGEINFO MERGE SOURCE NORMALIZATION'. These restrictions allow for a *single* gap in SOURCE, GAP_REV1:GAP_REV2 exclusive:inclusive (where SOURCE->loc1->rev == GAP_REV1 <= GAP_REV2 < SOURCE->loc2->rev), if SOURCE->loc2->url@(GAP_REV2+1) was copied from SOURCE->loc1. If such a gap exists, set *GAP_START and *GAP_END to the starting and ending revisions of the gap. Otherwise set both to SVN_INVALID_REVNUM. For example, if the natural history of URL@2:URL@9 is 'trunk/:2,7-9' this would indicate that trunk@7 was copied from trunk@2. This function would return GAP_START:GAP_END of 2:6 in this case. Note that a path 'trunk' might exist at r3-6, but it would not be on the same line of history as trunk@9. ### GAP_START is basically redundant, as (if there is a gap at all) it is necessarily the older revision of SOURCE. RA_SESSION is an open RA session to the repository in which SOURCE lives. */ static svn_error_t * find_gaps_in_merge_source_history(svn_revnum_t *gap_start, svn_revnum_t *gap_end, const merge_source_t *source, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool) { svn_mergeinfo_t implicit_src_mergeinfo; svn_revnum_t old_rev = MIN(source->loc1->rev, source->loc2->rev); const svn_client__pathrev_t *primary_src = (source->loc1->rev < source->loc2->rev) ? source->loc2 : source->loc1; const char *merge_src_fspath = svn_client__pathrev_fspath(primary_src, scratch_pool); svn_rangelist_t *rangelist; SVN_ERR_ASSERT(source->ancestral); /* Start by assuming there is no gap. */ *gap_start = *gap_end = SVN_INVALID_REVNUM; /* Easy out: There can't be a gap between adjacent revisions. */ if (labs(source->loc1->rev - source->loc2->rev) == 1) return SVN_NO_ERROR; /* Get SOURCE as mergeinfo. */ SVN_ERR(svn_client__get_history_as_mergeinfo(&implicit_src_mergeinfo, NULL, primary_src, primary_src->rev, old_rev, ra_session, ctx, scratch_pool)); rangelist = svn_hash_gets(implicit_src_mergeinfo, merge_src_fspath); if (!rangelist) /* ### Can we ever not find a rangelist? */ return SVN_NO_ERROR; /* A gap in natural history can result from either a copy or a rename. If from a copy then history as mergeinfo will look something like this: '/trunk:X,Y-Z' If from a rename it will look like this: '/trunk_old_name:X' '/trunk_new_name:Y-Z' In both cases the gap, if it exists, is M-N, where M = X + 1 and N = Y - 1. Note that per the rules of 'MERGEINFO MERGE SOURCE NORMALIZATION' we should never have multiple gaps, e.g. if we see anything like the following then something is quite wrong: '/trunk_old_name:A,B-C' '/trunk_new_name:D-E' */ if (rangelist->nelts > 1) /* Copy */ { const svn_merge_range_t *gap; /* As mentioned above, multiple gaps *shouldn't* be possible. */ SVN_ERR_ASSERT(apr_hash_count(implicit_src_mergeinfo) == 1); gap = APR_ARRAY_IDX(rangelist, rangelist->nelts - 1, const svn_merge_range_t *); *gap_start = MIN(source->loc1->rev, source->loc2->rev); *gap_end = gap->start; /* ### Issue #4132: ### This assertion triggers in merge_tests.py svnmucc_abuse_1() ### when a node is replaced by an older copy of itself. BH: I think we should review this and the 'rename' case to find out which behavior we really want, and if we can really determine what happened this way. */ SVN_ERR_ASSERT(*gap_start < *gap_end); } else if (apr_hash_count(implicit_src_mergeinfo) > 1) /* Rename */ { svn_rangelist_t *requested_rangelist = svn_rangelist__initialize(MIN(source->loc1->rev, source->loc2->rev), MAX(source->loc1->rev, source->loc2->rev), TRUE, scratch_pool); svn_rangelist_t *implicit_rangelist = apr_array_make(scratch_pool, 2, sizeof(svn_merge_range_t *)); svn_rangelist_t *gap_rangelist; SVN_ERR(svn_rangelist__merge_many(implicit_rangelist, implicit_src_mergeinfo, scratch_pool, scratch_pool)); SVN_ERR(svn_rangelist_remove(&gap_rangelist, implicit_rangelist, requested_rangelist, FALSE, scratch_pool)); /* If there is anything left it is the gap. */ if (gap_rangelist->nelts) { svn_merge_range_t *gap_range = APR_ARRAY_IDX(gap_rangelist, 0, svn_merge_range_t *); *gap_start = gap_range->start; *gap_end = gap_range->end; } } SVN_ERR_ASSERT(*gap_start == MIN(source->loc1->rev, source->loc2->rev) || (*gap_start == SVN_INVALID_REVNUM && *gap_end == SVN_INVALID_REVNUM)); return SVN_NO_ERROR; } /* Helper for do_directory_merge(). For each (svn_client__merge_path_t *) child in CHILDREN_WITH_MERGEINFO, populate that child's 'remaining_ranges' list with (### ... what?), and populate that child's 'implicit_mergeinfo' with its implicit mergeinfo (natural history). CHILDREN_WITH_MERGEINFO is expected to be sorted in depth first order and each child must be processed in that order. The inheritability of all calculated ranges is TRUE. If mergeinfo is being honored (based on MERGE_B -- see HONOR_MERGEINFO() for how this is determined), this function will actually try to be intelligent about populating remaining_ranges list. Otherwise, it will claim that each child has a single remaining range, from SOURCE->rev1, to SOURCE->rev2. ### We also take the short-cut if doing record-only. Why? SCRATCH_POOL is used for all temporary allocations. Changes to CHILDREN_WITH_MERGEINFO are made in RESULT_POOL. Note that if SOURCE->rev1 > SOURCE->rev2, then each child's remaining_ranges member does not adhere to the API rules for rangelists described in svn_mergeinfo.h -- See svn_client__merge_path_t. See `MERGEINFO MERGE SOURCE NORMALIZATION' for more requirements around SOURCE. */ static svn_error_t * populate_remaining_ranges(apr_array_header_t *children_with_mergeinfo, const merge_source_t *source, svn_ra_session_t *ra_session, merge_cmd_baton_t *merge_b, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_pool_t *iterpool = svn_pool_create(scratch_pool); int i; svn_revnum_t gap_start, gap_end; /* If we aren't honoring mergeinfo or this is a --record-only merge, we'll make quick work of this by simply adding dummy SOURCE->rev1:rev2 ranges for all children. */ if (! HONOR_MERGEINFO(merge_b) || merge_b->record_only) { for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); svn_pool_clear(iterpool); /* Issue #3646 'record-only merges create self-referential mergeinfo'. Get the merge target's implicit mergeinfo (natural history). We'll use it later to avoid setting self-referential mergeinfo -- see filter_natural_history_from_mergeinfo(). */ if (i == 0) /* First item is always the merge target. */ { SVN_ERR(get_full_mergeinfo(NULL, /* child->pre_merge_mergeinfo */ &(child->implicit_mergeinfo), NULL, /* child->inherited_mergeinfo */ svn_mergeinfo_inherited, ra_session, child->abspath, MAX(source->loc1->rev, source->loc2->rev), MIN(source->loc1->rev, source->loc2->rev), merge_b->ctx, result_pool, iterpool)); } else { /* Issue #3443 - Subtrees of the merge target can inherit their parent's implicit mergeinfo in most cases. */ svn_client__merge_path_t *parent = find_nearest_ancestor(children_with_mergeinfo, FALSE, child->abspath); svn_boolean_t child_inherits_implicit; /* If CHILD is a subtree then its parent must be in CHILDREN_WITH_MERGEINFO, see the global comment 'THE CHILDREN_WITH_MERGEINFO ARRAY'. */ SVN_ERR_ASSERT(parent); child_inherits_implicit = (parent && !child->switched); SVN_ERR(ensure_implicit_mergeinfo(parent, child, child_inherits_implicit, source->loc1->rev, source->loc2->rev, ra_session, merge_b->ctx, result_pool, iterpool)); } child->remaining_ranges = svn_rangelist__initialize(source->loc1->rev, source->loc2->rev, TRUE, result_pool); } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* If, in the merge source's history, there was a copy from an older revision, then SOURCE->loc2->url won't exist at some range M:N, where SOURCE->loc1->rev < M < N < SOURCE->loc2->rev. The rules of 'MERGEINFO MERGE SOURCE NORMALIZATION' allow this, but we must ignore these gaps when calculating what ranges remain to be merged from SOURCE. If we don't and try to merge any part of SOURCE->loc2->url@M:N we would break the editor since no part of that actually exists. See http://svn.haxx.se/dev/archive-2008-11/0618.shtml. Find the gaps in the merge target's history, if any. Eventually we will adjust CHILD->REMAINING_RANGES such that we don't describe non-existent paths to the editor. */ SVN_ERR(find_gaps_in_merge_source_history(&gap_start, &gap_end, source, ra_session, merge_b->ctx, iterpool)); /* Stash any gap in the merge command baton, we'll need it later when recording mergeinfo describing this merge. */ if (SVN_IS_VALID_REVNUM(gap_start) && SVN_IS_VALID_REVNUM(gap_end)) merge_b->implicit_src_gap = svn_rangelist__initialize(gap_start, gap_end, TRUE, result_pool); for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); const char *child_repos_path = svn_dirent_skip_ancestor(merge_b->target->abspath, child->abspath); merge_source_t child_source; svn_client__merge_path_t *parent = NULL; svn_boolean_t child_inherits_implicit; svn_pool_clear(iterpool); /* If the path is absent don't do subtree merge either. */ SVN_ERR_ASSERT(child); if (child->absent) continue; SVN_ERR_ASSERT(child_repos_path != NULL); child_source.loc1 = svn_client__pathrev_join_relpath( source->loc1, child_repos_path, iterpool); child_source.loc2 = svn_client__pathrev_join_relpath( source->loc2, child_repos_path, iterpool); /* ### Is the child 'ancestral' over the same revision range? It's * not necessarily true that a child is 'ancestral' if the parent is, * nor that it's not if the parent is not. However, here we claim * that it is. Before we had this 'ancestral' field that we need to * set explicitly, the claim was implicit. Either way, the impact is * that we might pass calculate_remaining_ranges() a source that is * not in fact 'ancestral' (despite its 'ancestral' field being true), * contrary to its doc-string. */ child_source.ancestral = source->ancestral; /* Get the explicit/inherited mergeinfo for CHILD. If CHILD is the merge target then also get its implicit mergeinfo. Otherwise defer this until we know it is absolutely necessary, since it requires an expensive round trip communication with the server. */ SVN_ERR(get_full_mergeinfo( child->pre_merge_mergeinfo ? NULL : &(child->pre_merge_mergeinfo), /* Get implicit only for merge target. */ (i == 0) ? &(child->implicit_mergeinfo) : NULL, &(child->inherited_mergeinfo), svn_mergeinfo_inherited, ra_session, child->abspath, MAX(source->loc1->rev, source->loc2->rev), MIN(source->loc1->rev, source->loc2->rev), merge_b->ctx, result_pool, iterpool)); /* If CHILD isn't the merge target find its parent. */ if (i > 0) { parent = find_nearest_ancestor(children_with_mergeinfo, FALSE, child->abspath); /* If CHILD is a subtree then its parent must be in CHILDREN_WITH_MERGEINFO, see the global comment 'THE CHILDREN_WITH_MERGEINFO ARRAY'. */ SVN_ERR_ASSERT(parent); } /* Issue #3443 - Can CHILD inherit PARENT's implicit mergeinfo, saving us from having to ask the repos? The only time we can't do this is if CHILD is the merge target and so there is no PARENT to inherit from or if CHILD is the root of a switched subtree, in which case PARENT exists but is not CHILD's repository parent. */ child_inherits_implicit = (parent && !child->switched); SVN_ERR(calculate_remaining_ranges(parent, child, &child_source, child->pre_merge_mergeinfo, merge_b->implicit_src_gap, child_inherits_implicit, ra_session, merge_b->ctx, result_pool, iterpool)); /* Deal with any gap in SOURCE's natural history. If the gap is a proper subset of CHILD->REMAINING_RANGES then we can safely ignore it since we won't describe this path/rev pair. If the gap exactly matches or is a superset of a range in CHILD->REMAINING_RANGES then we must remove that range so we don't attempt to describe non-existent paths via the reporter, this will break the editor and our merge. If the gap adjoins or overlaps a range in CHILD->REMAINING_RANGES then we must *add* the gap so we span the missing revisions. */ if (child->remaining_ranges->nelts && merge_b->implicit_src_gap) { int j; svn_boolean_t proper_subset = FALSE; svn_boolean_t overlaps_or_adjoins = FALSE; /* If this is a reverse merge reorder CHILD->REMAINING_RANGES so it will work with the svn_rangelist_* APIs below. */ if (source->loc1->rev > source->loc2->rev) SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, iterpool)); for (j = 0; j < child->remaining_ranges->nelts; j++) { svn_merge_range_t *range = APR_ARRAY_IDX(child->remaining_ranges, j, svn_merge_range_t *); if ((range->start <= gap_start && gap_end < range->end) || (range->start < gap_start && gap_end <= range->end)) { proper_subset = TRUE; break; } else if ((gap_start == range->start) && (range->end == gap_end)) { break; } else if (gap_start <= range->end && range->start <= gap_end) /* intersect */ { overlaps_or_adjoins = TRUE; break; } } if (!proper_subset) { /* We need to make adjustments. Remove from, or add the gap to, CHILD->REMAINING_RANGES as appropriate. */ if (overlaps_or_adjoins) SVN_ERR(svn_rangelist_merge2(child->remaining_ranges, merge_b->implicit_src_gap, result_pool, iterpool)); else /* equals == TRUE */ SVN_ERR(svn_rangelist_remove(&(child->remaining_ranges), merge_b->implicit_src_gap, child->remaining_ranges, FALSE, result_pool)); } if (source->loc1->rev > source->loc2->rev) /* Reverse merge */ SVN_ERR(svn_rangelist_reverse(child->remaining_ranges, iterpool)); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /*-----------------------------------------------------------------------*/ /*** Other Helper Functions ***/ /* Calculate the new mergeinfo for the target tree rooted at TARGET_ABSPATH based on MERGES (a mapping of absolute WC paths to rangelists representing a merge from the source SOURCE_FSPATH). If RESULT_CATALOG is NULL, then record the new mergeinfo in the WC (at, and possibly below, TARGET_ABSPATH). If RESULT_CATALOG is not NULL, then don't record the new mergeinfo on the WC, but instead record it in RESULT_CATALOG, where the keys are absolute working copy paths and the values are the new mergeinfos for each. Allocate additions to RESULT_CATALOG in pool which RESULT_CATALOG was created in. */ static svn_error_t * update_wc_mergeinfo(svn_mergeinfo_catalog_t result_catalog, const char *target_abspath, const char *source_fspath, apr_hash_t *merges, svn_boolean_t is_rollback, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool) { apr_pool_t *iterpool = svn_pool_create(scratch_pool); apr_hash_index_t *hi; /* Combine the mergeinfo for the revision range just merged into the WC with its on-disk mergeinfo. */ for (hi = apr_hash_first(scratch_pool, merges); hi; hi = apr_hash_next(hi)) { const char *local_abspath = apr_hash_this_key(hi); svn_rangelist_t *ranges = apr_hash_this_val(hi); svn_rangelist_t *rangelist; svn_error_t *err; const char *local_abspath_rel_to_target; const char *fspath; svn_mergeinfo_t mergeinfo; svn_pool_clear(iterpool); /* As some of the merges may've changed the WC's mergeinfo, get a fresh copy before using it to update the WC's mergeinfo. */ err = svn_client__parse_mergeinfo(&mergeinfo, ctx->wc_ctx, local_abspath, iterpool, iterpool); /* If a directory PATH was skipped because it is missing or was obstructed by an unversioned item then there's nothing we can do with that, so skip it. */ if (err) { if (err->apr_err == SVN_ERR_WC_NOT_LOCKED || err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND) { svn_error_clear(err); continue; } else { return svn_error_trace(err); } } /* If we are attempting to set empty revision range override mergeinfo on a path with no explicit mergeinfo, we first need the mergeinfo that path inherits. */ if (mergeinfo == NULL && ranges->nelts == 0) { SVN_ERR(svn_client__get_wc_mergeinfo(&mergeinfo, NULL, svn_mergeinfo_nearest_ancestor, local_abspath, NULL, NULL, FALSE, ctx, iterpool, iterpool)); } if (mergeinfo == NULL) mergeinfo = apr_hash_make(iterpool); local_abspath_rel_to_target = svn_dirent_skip_ancestor(target_abspath, local_abspath); SVN_ERR_ASSERT(local_abspath_rel_to_target != NULL); fspath = svn_fspath__join(source_fspath, local_abspath_rel_to_target, iterpool); rangelist = svn_hash_gets(mergeinfo, fspath); if (rangelist == NULL) rangelist = apr_array_make(iterpool, 0, sizeof(svn_merge_range_t *)); if (is_rollback) { ranges = svn_rangelist_dup(ranges, iterpool); SVN_ERR(svn_rangelist_reverse(ranges, iterpool)); SVN_ERR(svn_rangelist_remove(&rangelist, ranges, rangelist, FALSE, iterpool)); } else { SVN_ERR(svn_rangelist_merge2(rangelist, ranges, iterpool, iterpool)); } /* Update the mergeinfo by adjusting the path's rangelist. */ svn_hash_sets(mergeinfo, fspath, rangelist); if (is_rollback && apr_hash_count(mergeinfo) == 0) mergeinfo = NULL; svn_mergeinfo__remove_empty_rangelists(mergeinfo, scratch_pool); if (result_catalog) { svn_mergeinfo_t existing_mergeinfo = svn_hash_gets(result_catalog, local_abspath); apr_pool_t *result_catalog_pool = apr_hash_pool_get(result_catalog); if (existing_mergeinfo) SVN_ERR(svn_mergeinfo_merge2(mergeinfo, existing_mergeinfo, result_catalog_pool, scratch_pool)); svn_hash_sets(result_catalog, apr_pstrdup(result_catalog_pool, local_abspath), svn_mergeinfo_dup(mergeinfo, result_catalog_pool)); } else { err = svn_client__record_wc_mergeinfo(local_abspath, mergeinfo, TRUE, ctx, iterpool); if (err && err->apr_err == SVN_ERR_ENTRY_NOT_FOUND) { /* PATH isn't just missing, it's not even versioned as far as this working copy knows. But it was included in MERGES, which means that the server knows about it. Likely we don't have access to the source due to authz restrictions. For now just clear the error and continue... ### TODO: Set non-inheritable mergeinfo on PATH's immediate ### parent and normal mergeinfo on PATH's siblings which we ### do have access to. */ svn_error_clear(err); } else SVN_ERR(err); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Helper for record_mergeinfo_for_dir_merge(). Record override mergeinfo on any paths skipped during a merge. Set empty mergeinfo on each path in MERGE_B->SKIPPED_ABSPATHS so the path does not incorrectly inherit mergeinfo that will later be describing the merge. MERGEINFO_PATH and MERGE_B are cascaded from arguments of the same name in the caller. IS_ROLLBACK is true if the caller is recording a reverse merge and false otherwise. RANGELIST is the set of revisions being merged from MERGEINFO_PATH to MERGE_B->target. */ static svn_error_t * record_skips_in_mergeinfo(const char *mergeinfo_path, const svn_rangelist_t *rangelist, svn_boolean_t is_rollback, merge_cmd_baton_t *merge_b, apr_pool_t *scratch_pool) { apr_hash_index_t *hi; apr_hash_t *merges; apr_size_t nbr_skips = apr_hash_count(merge_b->skipped_abspaths); apr_pool_t *iterpool = svn_pool_create(scratch_pool); if (nbr_skips == 0) return SVN_NO_ERROR; merges = apr_hash_make(scratch_pool); /* Override the mergeinfo for child paths which weren't actually merged. */ for (hi = apr_hash_first(scratch_pool, merge_b->skipped_abspaths); hi; hi = apr_hash_next(hi)) { const char *skipped_abspath = apr_hash_this_key(hi); svn_wc_notify_state_t obstruction_state; svn_pool_clear(iterpool); /* Before we override, make sure this is a versioned path, it might be an external or missing from disk due to authz restrictions. */ SVN_ERR(perform_obstruction_check(&obstruction_state, NULL, NULL, NULL, NULL, merge_b, skipped_abspath, iterpool)); if (obstruction_state == svn_wc_notify_state_obstructed || obstruction_state == svn_wc_notify_state_missing) continue; /* Add an empty range list for this path. ### TODO: This works fine for a file path skipped because it is ### missing as long as the file's parent directory is present. ### But missing directory paths skipped are not handled yet, ### see issue #2915. ### TODO: An empty range is fine if the skipped path doesn't ### inherit any mergeinfo from a parent, but if it does ### we need to account for that. See issue #3440 ### https://issues.apache.org/jira/browse/SVN-3440. */ svn_hash_sets(merges, skipped_abspath, apr_array_make(scratch_pool, 0, sizeof(svn_merge_range_t *))); /* if (nbr_skips < notify_b->nbr_notifications) ### Use RANGELIST as the mergeinfo for all children of ### this path which were not also explicitly ### skipped? */ } SVN_ERR(update_wc_mergeinfo(NULL, merge_b->target->abspath, mergeinfo_path, merges, is_rollback, merge_b->ctx, iterpool)); svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Data for reporting when a merge aborted because of raising conflicts. */ typedef struct single_range_conflict_report_t { /* What sub-range of the requested source raised conflicts? * The 'inheritable' flag is ignored. */ merge_source_t *conflicted_range; /* What sub-range of the requested source remains to be merged? * NULL if no more. The 'inheritable' flag is ignored. */ merge_source_t *remaining_source; } single_range_conflict_report_t; /* Create a single_range_conflict_report_t, containing deep copies of * CONFLICTED_RANGE and REMAINING_SOURCE, allocated in RESULT_POOL. */ static single_range_conflict_report_t * single_range_conflict_report_create(const merge_source_t *conflicted_range, const merge_source_t *remaining_source, apr_pool_t *result_pool) { single_range_conflict_report_t *report = apr_palloc(result_pool, sizeof(*report)); assert(conflicted_range != NULL); report->conflicted_range = merge_source_dup(conflicted_range, result_pool); report->remaining_source = remaining_source ? merge_source_dup(remaining_source, result_pool) : NULL; return report; } /* Return a new svn_client__conflict_report_t containing deep copies of the * parameters, allocated in RESULT_POOL. */ static svn_client__conflict_report_t * conflict_report_create(const char *target_abspath, const merge_source_t *conflicted_range, svn_boolean_t was_last_range, apr_pool_t *result_pool) { svn_client__conflict_report_t *report = apr_palloc(result_pool, sizeof(*report)); report->target_abspath = apr_pstrdup(result_pool, target_abspath); report->conflicted_range = merge_source_dup(conflicted_range, result_pool); report->was_last_range = was_last_range; return report; } /* Return a deep copy of REPORT, allocated in RESULT_POOL. */ static svn_client__conflict_report_t * conflict_report_dup(const svn_client__conflict_report_t *report, apr_pool_t *result_pool) { svn_client__conflict_report_t *new = apr_pmemdup(result_pool, report, sizeof(*new)); new->target_abspath = apr_pstrdup(result_pool, report->target_abspath); new->conflicted_range = merge_source_dup(report->conflicted_range, result_pool); return new; } svn_error_t * svn_client__make_merge_conflict_error(svn_client__conflict_report_t *report, apr_pool_t *scratch_pool) { assert(!report || svn_dirent_is_absolute(report->target_abspath)); if (report && ! report->was_last_range) { svn_error_t *err = svn_error_createf(SVN_ERR_WC_FOUND_CONFLICT, NULL, _("One or more conflicts were produced while merging r%ld:%ld into\n" "'%s' --\n" "resolve all conflicts and rerun the merge to apply the remaining\n" "unmerged revisions"), report->conflicted_range->loc1->rev, report->conflicted_range->loc2->rev, svn_dirent_local_style(report->target_abspath, scratch_pool)); assert(report->conflicted_range->loc1->rev != report->conflicted_range->loc2->rev); /* ### is a valid case in a 2-URL merge */ return err; } return SVN_NO_ERROR; } /* Helper for do_directory_merge(). TARGET_WCPATH is a directory and CHILDREN_WITH_MERGEINFO is filled with paths (svn_client__merge_path_t *) arranged in depth first order, which have mergeinfo set on them or meet one of the other criteria defined in get_mergeinfo_paths(). Remove any paths absent from disk - or scheduled for deletion from CHILDREN_WITH_MERGEINFO which are equal to + from CHILDREN_WITH_MERGEINFO which are equal to or are descendants of TARGET_WCPATH by setting those children to NULL. */ static svn_error_t * remove_absent_children(const char *target_wcpath, apr_array_header_t *children_with_mergeinfo) { /* Before we try to override mergeinfo for skipped paths, make sure the path isn't absent due to authz restrictions, because there's nothing we can do about those. */ int i; for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); - if ((child->absent || child->scheduled_for_deletion) + if (child->absent && svn_dirent_is_ancestor(target_wcpath, child->abspath)) { SVN_ERR(svn_sort__array_delete2(children_with_mergeinfo, i--, 1)); } } return SVN_NO_ERROR; } /* Helper for do_directory_merge() to handle the case where a merge editor drive removes explicit mergeinfo from a subtree of the merge target. MERGE_B is cascaded from the argument of the same name in do_directory_merge(). For each path (if any) in MERGE_B->PATHS_WITH_DELETED_MERGEINFO remove that path from CHILDREN_WITH_MERGEINFO. The one exception is for the merge target itself, MERGE_B->target->abspath, this must always be present in CHILDREN_WITH_MERGEINFO so this is never removed by this function. */ static svn_error_t * remove_children_with_deleted_mergeinfo(merge_cmd_baton_t *merge_b, apr_array_header_t *children_with_mergeinfo) { int i; if (!merge_b->paths_with_deleted_mergeinfo) return SVN_NO_ERROR; /* CHILDREN_WITH_MERGEINFO[0] is the always the merge target so start at the first child. */ for (i = 1; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); if (svn_hash_gets(merge_b->paths_with_deleted_mergeinfo, child->abspath)) { SVN_ERR(svn_sort__array_delete2(children_with_mergeinfo, i--, 1)); } } return SVN_NO_ERROR; } /* Helper for do_directory_merge(). Set up the diff editor report to merge the SOURCE diff into TARGET_ABSPATH and drive it. If mergeinfo is not being honored (based on MERGE_B -- see the doc string for HONOR_MERGEINFO() for how this is determined), then ignore CHILDREN_WITH_MERGEINFO and merge the SOURCE diff to TARGET_ABSPATH. If mergeinfo is being honored then perform a history-aware merge, describing TARGET_ABSPATH and its subtrees to the reporter in such as way as to avoid repeating merges already performed per the mergeinfo and natural history of TARGET_ABSPATH and its subtrees. The ranges that still need to be merged to the TARGET_ABSPATH and its subtrees are described in CHILDREN_WITH_MERGEINFO, an array of svn_client__merge_path_t * -- see 'THE CHILDREN_WITH_MERGEINFO ARRAY' comment at the top of this file for more info. Note that it is possible TARGET_ABSPATH and/or some of its subtrees need only a subset, or no part, of SOURCE to be merged. Though there is little point to calling this function if TARGET_ABSPATH and all its subtrees have already had SOURCE merged, this will work but is a no-op. SOURCE->rev1 and SOURCE->rev2 must be bound by the set of remaining_ranges fields in CHILDREN_WITH_MERGEINFO's elements, specifically: For forward merges (SOURCE->rev1 < SOURCE->rev2): 1) The first svn_merge_range_t * element of each child's remaining_ranges array must meet one of the following conditions: a) The range's start field is greater than or equal to SOURCE->rev2. b) The range's end field is SOURCE->rev2. 2) Among all the ranges that meet condition 'b' the oldest start revision must equal SOURCE->rev1. For reverse merges (SOURCE->rev1 > SOURCE->rev2): 1) The first svn_merge_range_t * element of each child's remaining_ranges array must meet one of the following conditions: a) The range's start field is less than or equal to SOURCE->rev2. b) The range's end field is SOURCE->rev2. 2) Among all the ranges that meet condition 'b' the youngest start revision must equal SOURCE->rev1. Note: If the first svn_merge_range_t * element of some subtree child's remaining_ranges array is the same as the first range of that child's nearest path-wise ancestor, then the subtree child *will not* be described to the reporter. DEPTH, NOTIFY_B, and MERGE_B are cascaded from do_directory_merge(), see that function for more info. MERGE_B->ra_session1 and MERGE_B->ra_session2 are RA sessions open to any URL in the repository of SOURCE; they may be temporarily reparented within this function. If SOURCE->ancestral is set, then SOURCE->loc1 must be a historical ancestor of SOURCE->loc2, or vice-versa (see `MERGEINFO MERGE SOURCE NORMALIZATION' for more requirements around SOURCE in this case). */ static svn_error_t * drive_merge_report_editor(const char *target_abspath, const merge_source_t *source, const apr_array_header_t *children_with_mergeinfo, const svn_diff_tree_processor_t *processor, svn_depth_t depth, merge_cmd_baton_t *merge_b, apr_pool_t *scratch_pool) { const svn_ra_reporter3_t *reporter; const svn_delta_editor_t *diff_editor; void *diff_edit_baton; void *report_baton; svn_revnum_t target_start; svn_boolean_t honor_mergeinfo = HONOR_MERGEINFO(merge_b); const char *old_sess1_url, *old_sess2_url; svn_boolean_t is_rollback = source->loc1->rev > source->loc2->rev; /* Start with a safe default starting revision for the editor and the merge target. */ target_start = source->loc1->rev; /* If we are honoring mergeinfo the starting revision for the merge target might not be SOURCE->rev1, in fact the merge target might not need *any* part of SOURCE merged -- Instead some subtree of the target needs SOURCE -- So get the right starting revision for the target. */ if (honor_mergeinfo) { svn_client__merge_path_t *child; /* CHILDREN_WITH_MERGEINFO must always exist if we are honoring mergeinfo and must have at least one element (describing the merge target). */ SVN_ERR_ASSERT(children_with_mergeinfo); SVN_ERR_ASSERT(children_with_mergeinfo->nelts); /* Get the merge target's svn_client__merge_path_t, which is always the first in the array due to depth first sorting requirement, see 'THE CHILDREN_WITH_MERGEINFO ARRAY'. */ child = APR_ARRAY_IDX(children_with_mergeinfo, 0, svn_client__merge_path_t *); SVN_ERR_ASSERT(child); if (child->remaining_ranges->nelts == 0) { /* The merge target doesn't need anything merged. */ target_start = source->loc2->rev; } else { /* The merge target has remaining revisions to merge. These ranges may fully or partially overlap the range described by SOURCE->rev1:rev2 or may not intersect that range at all. */ svn_merge_range_t *range = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); if ((!is_rollback && range->start > source->loc2->rev) || (is_rollback && range->start < source->loc2->rev)) { /* Merge target's first remaining range doesn't intersect. */ target_start = source->loc2->rev; } else { /* Merge target's first remaining range partially or fully overlaps. */ target_start = range->start; } } } SVN_ERR(svn_client__ensure_ra_session_url(&old_sess1_url, merge_b->ra_session1, source->loc1->url, scratch_pool)); /* Temporarily point our second RA session to SOURCE->loc1->url, too. We use this to request individual file contents. */ SVN_ERR(svn_client__ensure_ra_session_url(&old_sess2_url, merge_b->ra_session2, source->loc1->url, scratch_pool)); /* Get the diff editor and a reporter with which to, ultimately, drive it. */ SVN_ERR(svn_client__get_diff_editor2(&diff_editor, &diff_edit_baton, merge_b->ra_session2, depth, source->loc1->rev, TRUE /* text_deltas */, processor, merge_b->ctx->cancel_func, merge_b->ctx->cancel_baton, scratch_pool)); SVN_ERR(svn_ra_do_diff3(merge_b->ra_session1, &reporter, &report_baton, source->loc2->rev, "", depth, merge_b->diff_ignore_ancestry, TRUE, /* text_deltas */ source->loc2->url, diff_editor, diff_edit_baton, scratch_pool)); /* Drive the reporter. */ SVN_ERR(reporter->set_path(report_baton, "", target_start, depth, FALSE, NULL, scratch_pool)); if (honor_mergeinfo && children_with_mergeinfo) { /* Describe children with mergeinfo overlapping this merge operation such that no repeated diff is retrieved for them from the repository. */ int i; apr_pool_t *iterpool = svn_pool_create(scratch_pool); /* Start with CHILDREN_WITH_MERGEINFO[1], CHILDREN_WITH_MERGEINFO[0] is always the merge target (TARGET_ABSPATH). */ for (i = 1; i < children_with_mergeinfo->nelts; i++) { svn_merge_range_t *range; const char *child_repos_path; const svn_client__merge_path_t *parent; const svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); SVN_ERR_ASSERT(child); if (child->absent) continue; svn_pool_clear(iterpool); /* Find this child's nearest wc ancestor with mergeinfo. */ parent = find_nearest_ancestor(children_with_mergeinfo, FALSE, child->abspath); /* If a subtree needs the same range applied as its nearest parent with mergeinfo or neither the subtree nor this parent need SOURCE->rev1:rev2 merged, then we don't need to describe the subtree separately. In the latter case this could break the editor if child->abspath didn't exist at SOURCE->rev2 and we attempt to describe it via a reporter set_path call. */ if (child->remaining_ranges->nelts) { range = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); if ((!is_rollback && range->start > source->loc2->rev) || (is_rollback && range->start < source->loc2->rev)) { /* This child's first remaining range comes after the range we are currently merging, so skip it. We expect to get to it in a subsequent call to this function. */ continue; } else if (parent->remaining_ranges->nelts) { svn_merge_range_t *parent_range = APR_ARRAY_IDX(parent->remaining_ranges, 0, svn_merge_range_t *); svn_merge_range_t *child_range = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); if (parent_range->start == child_range->start) continue; /* Subtree needs same range as parent. */ } } else /* child->remaining_ranges->nelts == 0*/ { /* If both the subtree and its parent need no ranges applied consider that as the "same ranges" and don't describe the subtree. */ if (parent->remaining_ranges->nelts == 0) continue; } /* Ok, we really need to describe this subtree as it needs different ranges applied than its nearest working copy parent. */ child_repos_path = svn_dirent_is_child(target_abspath, child->abspath, iterpool); /* This loop is only processing subtrees, so CHILD->ABSPATH better be a proper child of the merge target. */ SVN_ERR_ASSERT(child_repos_path); if ((child->remaining_ranges->nelts == 0) || (is_rollback && (range->start < source->loc2->rev)) || (!is_rollback && (range->start > source->loc2->rev))) { /* Nothing to merge to this child. We'll claim we have it up to date so the server doesn't send us anything. */ SVN_ERR(reporter->set_path(report_baton, child_repos_path, source->loc2->rev, depth, FALSE, NULL, iterpool)); } else { SVN_ERR(reporter->set_path(report_baton, child_repos_path, range->start, depth, FALSE, NULL, iterpool)); } } svn_pool_destroy(iterpool); } SVN_ERR(reporter->finish_report(report_baton, scratch_pool)); /* Point the merge baton's RA sessions back where they were. */ SVN_ERR(svn_ra_reparent(merge_b->ra_session1, old_sess1_url, scratch_pool)); SVN_ERR(svn_ra_reparent(merge_b->ra_session2, old_sess2_url, scratch_pool)); return SVN_NO_ERROR; } /* Iterate over each svn_client__merge_path_t * element in CHILDREN_WITH_MERGEINFO and, if START_REV is true, find the most inclusive start revision among those element's first remaining_ranges element. If START_REV is false, then look for the most inclusive end revision. If IS_ROLLBACK is true the youngest start or end (as per START_REV) revision is considered the "most inclusive" otherwise the oldest revision is. If none of CHILDREN_WITH_MERGEINFO's elements have any remaining ranges return SVN_INVALID_REVNUM. */ static svn_revnum_t get_most_inclusive_rev(const apr_array_header_t *children_with_mergeinfo, svn_boolean_t is_rollback, svn_boolean_t start_rev) { int i; svn_revnum_t most_inclusive_rev = SVN_INVALID_REVNUM; for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); if ((! child) || child->absent) continue; if (child->remaining_ranges->nelts > 0) { svn_merge_range_t *range = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); /* Are we looking for the most inclusive start or end rev? */ svn_revnum_t rev = start_rev ? range->start : range->end; if ((most_inclusive_rev == SVN_INVALID_REVNUM) || (is_rollback && (rev > most_inclusive_rev)) || ((! is_rollback) && (rev < most_inclusive_rev))) most_inclusive_rev = rev; } } return most_inclusive_rev; } /* If first item in each child of CHILDREN_WITH_MERGEINFO's remaining_ranges is inclusive of END_REV, Slice the first range in to two at END_REV. All the allocations are persistent and allocated from POOL. */ static svn_error_t * slice_remaining_ranges(apr_array_header_t *children_with_mergeinfo, svn_boolean_t is_rollback, svn_revnum_t end_rev, apr_pool_t *pool) { int i; for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); if (!child || child->absent) continue; if (child->remaining_ranges->nelts > 0) { svn_merge_range_t *range = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); if ((is_rollback && (range->start > end_rev) && (range->end < end_rev)) || (!is_rollback && (range->start < end_rev) && (range->end > end_rev))) { svn_merge_range_t *split_range1, *split_range2; split_range1 = svn_merge_range_dup(range, pool); split_range2 = svn_merge_range_dup(range, pool); split_range1->end = end_rev; split_range2->start = end_rev; APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *) = split_range1; SVN_ERR(svn_sort__array_insert2(child->remaining_ranges, &split_range2, 1)); } } } return SVN_NO_ERROR; } /* Helper for do_directory_merge(). For each child in CHILDREN_WITH_MERGEINFO remove the first remaining_ranges svn_merge_range_t *element of the child if that range has an end revision equal to REVISION. If a range is removed from a child's remaining_ranges array, allocate the new remaining_ranges array in POOL. */ static svn_error_t * remove_first_range_from_remaining_ranges(svn_revnum_t revision, apr_array_header_t *children_with_mergeinfo, apr_pool_t *pool) { int i; for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); if (!child || child->absent) continue; if (child->remaining_ranges->nelts > 0) { svn_merge_range_t *first_range = APR_ARRAY_IDX(child->remaining_ranges, 0, svn_merge_range_t *); if (first_range->end == revision) { SVN_ERR(svn_sort__array_delete2(child->remaining_ranges, 0, 1)); } } } return SVN_NO_ERROR; } /* Get a file's content and properties from the repository. Set *FILENAME to the local path to a new temporary file holding its text, and set *PROPS to a new hash of its properties. RA_SESSION is a session open to the correct repository, which will be temporarily reparented to the URL of the file itself. LOCATION is the repository location of the file. The resulting file and the return values live as long as RESULT_POOL, all other allocations occur in SCRATCH_POOL. */ static svn_error_t * single_file_merge_get_file(const char **filename, apr_hash_t **props, svn_ra_session_t *ra_session, const svn_client__pathrev_t *location, const char *wc_target, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_stream_t *stream; const char *old_sess_url; svn_error_t *err; SVN_ERR(svn_stream_open_unique(&stream, filename, NULL, svn_io_file_del_on_pool_cleanup, result_pool, scratch_pool)); SVN_ERR(svn_client__ensure_ra_session_url(&old_sess_url, ra_session, location->url, scratch_pool)); err = svn_ra_get_file(ra_session, "", location->rev, stream, NULL, props, scratch_pool); SVN_ERR(svn_error_compose_create( err, svn_ra_reparent(ra_session, old_sess_url, scratch_pool))); return svn_error_trace(svn_stream_close(stream)); } /* Compare two svn_client__merge_path_t elements **A and **B, given the addresses of pointers to them. Return an integer less than, equal to, or greater than zero if A sorts before, the same as, or after B, respectively. This is a helper for qsort() and bsearch() on an array of such elements. */ static int compare_merge_path_t_as_paths(const void *a, const void *b) { const svn_client__merge_path_t *child1 = *((const svn_client__merge_path_t * const *) a); const svn_client__merge_path_t *child2 = *((const svn_client__merge_path_t * const *) b); return svn_path_compare_paths(child1->abspath, child2->abspath); } /* Return a pointer to the element of CHILDREN_WITH_MERGEINFO whose path * is PATH, or return NULL if there is no such element. */ static svn_client__merge_path_t * get_child_with_mergeinfo(const apr_array_header_t *children_with_mergeinfo, const char *abspath) { svn_client__merge_path_t merge_path; svn_client__merge_path_t *key; svn_client__merge_path_t **pchild; merge_path.abspath = abspath; key = &merge_path; pchild = bsearch(&key, children_with_mergeinfo->elts, children_with_mergeinfo->nelts, children_with_mergeinfo->elt_size, compare_merge_path_t_as_paths); return pchild ? *pchild : NULL; } /* Insert a deep copy of INSERT_ELEMENT into the CHILDREN_WITH_MERGEINFO array at its correct position. Allocate the new storage in POOL. CHILDREN_WITH_MERGEINFO is a depth first sorted array of (svn_client__merge_path_t *). ### Most callers don't need this to deep-copy the new element. ### It may be more efficient for some callers to insert a bunch of items out of order and then sort afterwards. (One caller is doing a qsort after calling this anyway.) */ static svn_error_t * insert_child_to_merge(apr_array_header_t *children_with_mergeinfo, const svn_client__merge_path_t *insert_element, apr_pool_t *pool) { int insert_index; const svn_client__merge_path_t *new_element; /* Find where to insert the new element */ insert_index = svn_sort__bsearch_lower_bound(children_with_mergeinfo, &insert_element, compare_merge_path_t_as_paths); new_element = svn_client__merge_path_dup(insert_element, pool); SVN_ERR(svn_sort__array_insert2(children_with_mergeinfo, &new_element, insert_index)); return SVN_NO_ERROR; } /* Helper for get_mergeinfo_paths(). CHILDREN_WITH_MERGEINFO, DEPTH, and POOL are all cascaded from the arguments of the same name to get_mergeinfo_paths(). TARGET is the merge target. *CHILD is the element in in CHILDREN_WITH_MERGEINFO that get_mergeinfo_paths() is iterating over and *CURR_INDEX is index for *CHILD. If CHILD->ABSPATH is equal to MERGE_CMD_BATON->target->abspath do nothing. Else if CHILD->ABSPATH is switched or absent then make sure its immediate (as opposed to nearest) parent in CHILDREN_WITH_MERGEINFO is marked as missing a child. If the immediate parent does not exist in CHILDREN_WITH_MERGEINFO then create it (and increment *CURR_INDEX so that caller doesn't process the inserted element). Also ensure that CHILD->ABSPATH's siblings which are not already present in CHILDREN_WITH_MERGEINFO are also added to the array, limited by DEPTH (e.g. don't add directory siblings of a switched file). Use POOL for temporary allocations only, any new CHILDREN_WITH_MERGEINFO elements are allocated in POOL. */ static svn_error_t * insert_parent_and_sibs_of_sw_absent_del_subtree( apr_array_header_t *children_with_mergeinfo, const merge_target_t *target, int *curr_index, svn_client__merge_path_t *child, svn_depth_t depth, svn_client_ctx_t *ctx, apr_pool_t *pool) { svn_client__merge_path_t *parent; const char *parent_abspath; apr_pool_t *iterpool; const apr_array_header_t *children; int i; if (!(child->absent || (child->switched && strcmp(target->abspath, child->abspath) != 0))) return SVN_NO_ERROR; parent_abspath = svn_dirent_dirname(child->abspath, pool); parent = get_child_with_mergeinfo(children_with_mergeinfo, parent_abspath); if (parent) { parent->missing_child = child->absent; parent->switched_child = child->switched; } else { /* Create a new element to insert into CHILDREN_WITH_MERGEINFO. */ parent = svn_client__merge_path_create(parent_abspath, pool); parent->missing_child = child->absent; parent->switched_child = child->switched; /* Insert PARENT into CHILDREN_WITH_MERGEINFO. */ SVN_ERR(insert_child_to_merge(children_with_mergeinfo, parent, pool)); /* Increment for loop index so we don't process the inserted element. */ (*curr_index)++; } /*(parent == NULL) */ /* Add all of PARENT's non-missing children that are not already present.*/ SVN_ERR(svn_wc__node_get_children_of_working_node(&children, ctx->wc_ctx, parent_abspath, pool, pool)); iterpool = svn_pool_create(pool); for (i = 0; i < children->nelts; i++) { const char *child_abspath = APR_ARRAY_IDX(children, i, const char *); svn_client__merge_path_t *sibling_of_missing; svn_pool_clear(iterpool); /* Does this child already exist in CHILDREN_WITH_MERGEINFO? */ sibling_of_missing = get_child_with_mergeinfo(children_with_mergeinfo, child_abspath); /* Create the missing child and insert it into CHILDREN_WITH_MERGEINFO.*/ if (!sibling_of_missing) { /* Don't add directory children if DEPTH is svn_depth_files. */ if (depth == svn_depth_files) { svn_node_kind_t child_kind; SVN_ERR(svn_wc_read_kind2(&child_kind, ctx->wc_ctx, child_abspath, FALSE, FALSE, iterpool)); if (child_kind != svn_node_file) continue; } sibling_of_missing = svn_client__merge_path_create(child_abspath, pool); SVN_ERR(insert_child_to_merge(children_with_mergeinfo, sibling_of_missing, pool)); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* pre_merge_status_cb's baton */ struct pre_merge_status_baton_t { svn_wc_context_t *wc_ctx; /* const char *absolute_wc_path to svn_depth_t * mapping for depths of empty, immediates, and files. */ apr_hash_t *shallow_subtrees; /* const char *absolute_wc_path to the same, for all paths missing from the working copy. */ apr_hash_t *missing_subtrees; /* const char *absolute_wc_path const char * repos relative path, describing the root of each switched subtree in the working copy and the repository relative path it is switched to. */ apr_hash_t *switched_subtrees; /* A pool to allocate additions to the above hashes in. */ apr_pool_t *pool; }; /* A svn_wc_status_func4_t callback used by get_mergeinfo_paths to gather all switched, depth filtered and missing subtrees under a merge target. Note that this doesn't see server and user excluded trees. */ static svn_error_t * pre_merge_status_cb(void *baton, const char *local_abspath, const svn_wc_status3_t *status, apr_pool_t *scratch_pool) { struct pre_merge_status_baton_t *pmsb = baton; if (status->switched && !status->file_external) { store_path(pmsb->switched_subtrees, local_abspath); } if (status->depth == svn_depth_empty || status->depth == svn_depth_files) { const char *dup_abspath; svn_depth_t *depth = apr_pmemdup(pmsb->pool, &status->depth, sizeof *depth); dup_abspath = apr_pstrdup(pmsb->pool, local_abspath); svn_hash_sets(pmsb->shallow_subtrees, dup_abspath, depth); } if (status->node_status == svn_wc_status_missing) { svn_boolean_t new_missing_root = TRUE; apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, pmsb->missing_subtrees); hi; hi = apr_hash_next(hi)) { const char *missing_root_path = apr_hash_this_key(hi); if (svn_dirent_is_ancestor(missing_root_path, local_abspath)) { new_missing_root = FALSE; break; } } if (new_missing_root) store_path(pmsb->missing_subtrees, local_abspath); } return SVN_NO_ERROR; } /* Find all the subtrees in the working copy tree rooted at TARGET_ABSPATH * that have explicit mergeinfo. * Set *SUBTREES_WITH_MERGEINFO to a hash mapping (const char *) absolute * WC path to (svn_mergeinfo_t *) mergeinfo. * * ### Is this function equivalent to: * * svn_client__get_wc_mergeinfo_catalog( * subtrees_with_mergeinfo, inherited=NULL, include_descendants=TRUE, * svn_mergeinfo_explicit, target_abspath, limit_path=NULL, * walked_path=NULL, ignore_invalid_mergeinfo=FALSE, ...) * * except for the catalog keys being abspaths instead of repo-relpaths? */ static svn_error_t * get_wc_explicit_mergeinfo_catalog(apr_hash_t **subtrees_with_mergeinfo, const char *target_abspath, svn_depth_t depth, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_opt_revision_t working_revision = { svn_opt_revision_working, { 0 } }; apr_pool_t *iterpool = svn_pool_create(scratch_pool); apr_hash_index_t *hi; apr_hash_t *externals; SVN_ERR(svn_client_propget5(subtrees_with_mergeinfo, NULL, SVN_PROP_MERGEINFO, target_abspath, &working_revision, &working_revision, NULL, depth, NULL, ctx, result_pool, scratch_pool)); SVN_ERR(svn_wc__externals_defined_below(&externals, ctx->wc_ctx, target_abspath, scratch_pool, scratch_pool)); /* Convert property values to svn_mergeinfo_t. */ for (hi = apr_hash_first(scratch_pool, *subtrees_with_mergeinfo); hi; hi = apr_hash_next(hi)) { const char *wc_path = apr_hash_this_key(hi); svn_string_t *mergeinfo_string = apr_hash_this_val(hi); svn_mergeinfo_t mergeinfo; svn_error_t *err; /* svn_client_propget5 picks up file externals with mergeinfo, but we don't want those. */ if (svn_hash_gets(externals, wc_path)) { svn_hash_sets(*subtrees_with_mergeinfo, wc_path, NULL); continue; } svn_pool_clear(iterpool); err = svn_mergeinfo_parse(&mergeinfo, mergeinfo_string->data, result_pool); if (err) { if (err->apr_err == SVN_ERR_MERGEINFO_PARSE_ERROR) { err = svn_error_createf( SVN_ERR_CLIENT_INVALID_MERGEINFO_NO_MERGETRACKING, err, _("Invalid mergeinfo detected on '%s', " "merge tracking not possible"), svn_dirent_local_style(wc_path, scratch_pool)); } return svn_error_trace(err); } svn_hash_sets(*subtrees_with_mergeinfo, wc_path, mergeinfo); } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Helper for do_directory_merge() when performing merge-tracking aware merges. Walk of the working copy tree rooted at TARGET->abspath to depth DEPTH. Create an svn_client__merge_path_t * for any path which meets one or more of the following criteria: 1) Path has working svn:mergeinfo. 2) Path is switched. 3) Path is a subtree of the merge target (i.e. is not equal to TARGET->abspath) and has no mergeinfo of its own but its immediate parent has mergeinfo with non-inheritable ranges. If this isn't a dry-run and the merge is between differences in the same repository, then this function will set working mergeinfo on the path equal to the mergeinfo inheritable from its parent. 4) Path has an immediate child (or children) missing from the WC because the child is switched or absent from the WC, or due to a sparse checkout. 5) Path has a sibling (or siblings) missing from the WC because the sibling is switched, absent, scheduled for deletion, or missing due to a sparse checkout. 6) Path is absent from disk due to an authz restriction. 7) Path is equal to TARGET->abspath. 8) Path is an immediate *directory* child of TARGET->abspath and DEPTH is svn_depth_immediates. 9) Path is an immediate *file* child of TARGET->abspath and DEPTH is svn_depth_files. 10) Path is at a depth of 'empty' or 'files'. 11) Path is missing from disk (e.g. due to an OS-level deletion). If subtrees within the requested DEPTH are unexpectedly missing disk, then raise SVN_ERR_CLIENT_NOT_READY_TO_MERGE. Store the svn_client__merge_path_t *'s in *CHILDREN_WITH_MERGEINFO in depth-first order based on the svn_client__merge_path_t *s path member as sorted by svn_path_compare_paths(). Set the remaining_ranges field of each element to NULL. Note: Since the walk is rooted at TARGET->abspath, the latter is guaranteed to be in *CHILDREN_WITH_MERGEINFO and due to the depth-first ordering it is guaranteed to be the first element in *CHILDREN_WITH_MERGEINFO. MERGE_CMD_BATON is cascaded from the argument of the same name in do_directory_merge(). */ static svn_error_t * get_mergeinfo_paths(apr_array_header_t *children_with_mergeinfo, const merge_target_t *target, svn_depth_t depth, svn_boolean_t dry_run, svn_boolean_t same_repos, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { int i; apr_pool_t *iterpool = svn_pool_create(scratch_pool); apr_pool_t *swmi_pool; apr_hash_t *subtrees_with_mergeinfo; apr_hash_t *excluded_subtrees; apr_hash_t *switched_subtrees; apr_hash_t *shallow_subtrees; apr_hash_t *missing_subtrees; struct pre_merge_status_baton_t pre_merge_status_baton; /* Case 1: Subtrees with explicit mergeinfo. */ /* Use a subpool for subtrees_with_mergeinfo, as it can be very large and is temporary. */ swmi_pool = svn_pool_create(scratch_pool); SVN_ERR(get_wc_explicit_mergeinfo_catalog(&subtrees_with_mergeinfo, target->abspath, depth, ctx, swmi_pool, swmi_pool)); if (subtrees_with_mergeinfo) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, subtrees_with_mergeinfo); hi; hi = apr_hash_next(hi)) { const char *wc_path = apr_hash_this_key(hi); svn_mergeinfo_t mergeinfo = apr_hash_this_val(hi); svn_client__merge_path_t *mergeinfo_child = svn_client__merge_path_create(wc_path, result_pool); svn_pool_clear(iterpool); /* Stash this child's pre-existing mergeinfo. */ mergeinfo_child->pre_merge_mergeinfo = mergeinfo; /* Note if this child has non-inheritable mergeinfo */ mergeinfo_child->has_noninheritable = svn_mergeinfo__is_noninheritable( mergeinfo_child->pre_merge_mergeinfo, iterpool); /* Append it. We'll sort below. */ APR_ARRAY_PUSH(children_with_mergeinfo, svn_client__merge_path_t *) = svn_client__merge_path_dup(mergeinfo_child, result_pool); } /* Sort CHILDREN_WITH_MERGEINFO by each child's path (i.e. as per compare_merge_path_t_as_paths). Any subsequent insertions of new children with insert_child_to_merge() require this ordering. */ svn_sort__array(children_with_mergeinfo, compare_merge_path_t_as_paths); } svn_pool_destroy(swmi_pool); /* Case 2: Switched subtrees Case 10: Paths at depths of 'empty' or 'files' Case 11: Paths missing from disk */ pre_merge_status_baton.wc_ctx = ctx->wc_ctx; switched_subtrees = apr_hash_make(scratch_pool); pre_merge_status_baton.switched_subtrees = switched_subtrees; shallow_subtrees = apr_hash_make(scratch_pool); pre_merge_status_baton.shallow_subtrees = shallow_subtrees; missing_subtrees = apr_hash_make(scratch_pool); pre_merge_status_baton.missing_subtrees = missing_subtrees; pre_merge_status_baton.pool = scratch_pool; SVN_ERR(svn_wc_walk_status(ctx->wc_ctx, target->abspath, depth, TRUE /* get_all */, FALSE /* no_ignore */, TRUE /* ignore_text_mods */, NULL /* ingore_patterns */, pre_merge_status_cb, &pre_merge_status_baton, ctx->cancel_func, ctx->cancel_baton, scratch_pool)); /* Issue #2915: Raise an error describing the roots of any missing subtrees, i.e. those that the WC thinks are on disk but have been removed outside of Subversion. */ if (apr_hash_count(missing_subtrees)) { apr_hash_index_t *hi; svn_stringbuf_t *missing_subtree_err_buf = svn_stringbuf_create(_("Merge tracking not allowed with missing " "subtrees; try restoring these items " "first:\n"), scratch_pool); for (hi = apr_hash_first(scratch_pool, missing_subtrees); hi; hi = apr_hash_next(hi)) { svn_pool_clear(iterpool); svn_stringbuf_appendcstr(missing_subtree_err_buf, svn_dirent_local_style( apr_hash_this_key(hi), iterpool)); svn_stringbuf_appendcstr(missing_subtree_err_buf, "\n"); } return svn_error_create(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, missing_subtree_err_buf->data); } if (apr_hash_count(switched_subtrees)) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, switched_subtrees); hi; hi = apr_hash_next(hi)) { const char *wc_path = apr_hash_this_key(hi); svn_client__merge_path_t *child = get_child_with_mergeinfo( children_with_mergeinfo, wc_path); if (child) { child->switched = TRUE; } else { svn_client__merge_path_t *switched_child = svn_client__merge_path_create(wc_path, result_pool); switched_child->switched = TRUE; SVN_ERR(insert_child_to_merge(children_with_mergeinfo, switched_child, result_pool)); } } } if (apr_hash_count(shallow_subtrees)) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, shallow_subtrees); hi; hi = apr_hash_next(hi)) { svn_boolean_t new_shallow_child = FALSE; const char *wc_path = apr_hash_this_key(hi); svn_depth_t *child_depth = apr_hash_this_val(hi); svn_client__merge_path_t *shallow_child = get_child_with_mergeinfo( children_with_mergeinfo, wc_path); if (shallow_child) { if (*child_depth == svn_depth_empty || *child_depth == svn_depth_files) shallow_child->missing_child = TRUE; } else { shallow_child = svn_client__merge_path_create(wc_path, result_pool); new_shallow_child = TRUE; if (*child_depth == svn_depth_empty || *child_depth == svn_depth_files) shallow_child->missing_child = TRUE; } /* A little trickery: If PATH doesn't have any mergeinfo or has only inheritable mergeinfo, we still describe it as having non-inheritable mergeinfo if it is missing a child due to a shallow depth. Why? Because the mergeinfo we'll add to PATH to describe the merge must be non-inheritable, so PATH's missing children don't inherit it. Marking these PATHs as non- inheritable allows the logic for case 3 to properly account for PATH's children. */ if (!shallow_child->has_noninheritable && (*child_depth == svn_depth_empty || *child_depth == svn_depth_files)) { shallow_child->has_noninheritable = TRUE; } if (new_shallow_child) SVN_ERR(insert_child_to_merge(children_with_mergeinfo, shallow_child, result_pool)); } } /* Case 6: Paths absent from disk due to server or user exclusion. */ SVN_ERR(svn_wc__get_excluded_subtrees(&excluded_subtrees, ctx->wc_ctx, target->abspath, result_pool, scratch_pool)); if (excluded_subtrees) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, excluded_subtrees); hi; hi = apr_hash_next(hi)) { const char *wc_path = apr_hash_this_key(hi); svn_client__merge_path_t *child = get_child_with_mergeinfo( children_with_mergeinfo, wc_path); if (child) { child->absent = TRUE; } else { svn_client__merge_path_t *absent_child = svn_client__merge_path_create(wc_path, result_pool); absent_child->absent = TRUE; SVN_ERR(insert_child_to_merge(children_with_mergeinfo, absent_child, result_pool)); } } } /* Case 7: The merge target MERGE_CMD_BATON->target->abspath is always present. */ if (!get_child_with_mergeinfo(children_with_mergeinfo, target->abspath)) { svn_client__merge_path_t *target_child = svn_client__merge_path_create(target->abspath, result_pool); SVN_ERR(insert_child_to_merge(children_with_mergeinfo, target_child, result_pool)); } /* Case 8: Path is an immediate *directory* child of MERGE_CMD_BATON->target->abspath and DEPTH is svn_depth_immediates. Case 9: Path is an immediate *file* child of MERGE_CMD_BATON->target->abspath and DEPTH is svn_depth_files. */ if (depth == svn_depth_immediates || depth == svn_depth_files) { int j; const apr_array_header_t *immediate_children; SVN_ERR(svn_wc__node_get_children_of_working_node( &immediate_children, ctx->wc_ctx, target->abspath, scratch_pool, scratch_pool)); for (j = 0; j < immediate_children->nelts; j++) { const char *immediate_child_abspath = APR_ARRAY_IDX(immediate_children, j, const char *); svn_node_kind_t immediate_child_kind; svn_pool_clear(iterpool); SVN_ERR(svn_wc_read_kind2(&immediate_child_kind, ctx->wc_ctx, immediate_child_abspath, FALSE, FALSE, iterpool)); if ((immediate_child_kind == svn_node_dir && depth == svn_depth_immediates) || (immediate_child_kind == svn_node_file && depth == svn_depth_files)) { if (!get_child_with_mergeinfo(children_with_mergeinfo, immediate_child_abspath)) { svn_client__merge_path_t *immediate_child = svn_client__merge_path_create(immediate_child_abspath, result_pool); if (immediate_child_kind == svn_node_dir && depth == svn_depth_immediates) immediate_child->immediate_child_dir = TRUE; SVN_ERR(insert_child_to_merge(children_with_mergeinfo, immediate_child, result_pool)); } } } } /* If DEPTH isn't empty then cover cases 3), 4), and 5), possibly adding elements to CHILDREN_WITH_MERGEINFO. */ if (depth <= svn_depth_empty) return SVN_NO_ERROR; for (i = 0; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); svn_pool_clear(iterpool); /* Case 3) Where merging to a path with a switched child the path gets non-inheritable mergeinfo for the merge range performed and the child gets its own set of mergeinfo. If the switched child later "returns", e.g. a switched path is unswitched, the child may not have any explicit mergeinfo. If the initial merge is repeated we don't want to repeat the merge for the path, but we do want to repeat it for the previously switched child. To ensure this we check if all of CHILD's non-missing children have explicit mergeinfo (they should already be present in CHILDREN_WITH_MERGEINFO if they do). If not, add the children without mergeinfo to CHILDREN_WITH_MERGEINFO so do_directory_merge() will merge them independently. But that's not enough! Since do_directory_merge() performs the merges on the paths in CHILDREN_WITH_MERGEINFO in a depth first manner it will merge the previously switched path's parent first. As part of this merge it will update the parent's previously non-inheritable mergeinfo and make it inheritable (since it notices the path has no missing children), then when do_directory_merge() finally merges the previously missing child it needs to get mergeinfo from the child's nearest ancestor, but since do_directory_merge() already tweaked that mergeinfo, removing the non-inheritable flag, it appears that the child already has been merged to. To prevent this we set override mergeinfo on the child now, before any merging is done, so it has explicit mergeinfo that reflects only CHILD's inheritable mergeinfo. */ /* If depth is immediates or files then don't add new children if CHILD is a subtree of the merge target; those children are below the operational depth of the merge. */ if (child->has_noninheritable && (i == 0 || depth == svn_depth_infinity)) { const apr_array_header_t *children; int j; SVN_ERR(svn_wc__node_get_children_of_working_node( &children, ctx->wc_ctx, child->abspath, iterpool, iterpool)); for (j = 0; j < children->nelts; j++) { svn_client__merge_path_t *child_of_noninheritable; const char *child_abspath = APR_ARRAY_IDX(children, j, const char*); /* Does this child already exist in CHILDREN_WITH_MERGEINFO? If not, create it and insert it into CHILDREN_WITH_MERGEINFO and set override mergeinfo on it. */ child_of_noninheritable = get_child_with_mergeinfo(children_with_mergeinfo, child_abspath); if (!child_of_noninheritable) { /* Don't add directory children if DEPTH is svn_depth_files. */ if (depth == svn_depth_files) { svn_node_kind_t child_kind; SVN_ERR(svn_wc_read_kind2(&child_kind, ctx->wc_ctx, child_abspath, FALSE, FALSE, iterpool)); if (child_kind != svn_node_file) continue; } /* else DEPTH is infinity or immediates so we want both directory and file children. */ child_of_noninheritable = svn_client__merge_path_create(child_abspath, result_pool); child_of_noninheritable->child_of_noninheritable = TRUE; SVN_ERR(insert_child_to_merge(children_with_mergeinfo, child_of_noninheritable, result_pool)); if (!dry_run && same_repos) { svn_mergeinfo_t mergeinfo; SVN_ERR(svn_client__get_wc_mergeinfo( &mergeinfo, NULL, svn_mergeinfo_nearest_ancestor, child_of_noninheritable->abspath, target->abspath, NULL, FALSE, ctx, iterpool, iterpool)); SVN_ERR(svn_client__record_wc_mergeinfo( child_of_noninheritable->abspath, mergeinfo, FALSE, ctx, iterpool)); } } } } /* Case 4 and 5 are handled by the following function. */ SVN_ERR(insert_parent_and_sibs_of_sw_absent_del_subtree( children_with_mergeinfo, target, &i, child, depth, ctx, result_pool)); } /* i < children_with_mergeinfo->nelts */ svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Implements the svn_log_entry_receiver_t interface. * * BATON is an 'apr_array_header_t *' array of 'svn_revnum_t'. * Push a copy of LOG_ENTRY->revision onto BATON. Thus, a * series of invocations of this callback accumulates the * corresponding set of revisions into BATON. */ static svn_error_t * log_changed_revs(void *baton, svn_log_entry_t *log_entry, apr_pool_t *pool) { apr_array_header_t *revs = baton; APR_ARRAY_PUSH(revs, svn_revnum_t) = log_entry->revision; return SVN_NO_ERROR; } /* Set *MIN_REV_P to the oldest and *MAX_REV_P to the youngest start or end * revision occurring in RANGELIST, or to SVN_INVALID_REVNUM if RANGELIST * is empty. */ static void merge_range_find_extremes(svn_revnum_t *min_rev_p, svn_revnum_t *max_rev_p, const svn_rangelist_t *rangelist) { int i; *min_rev_p = SVN_INVALID_REVNUM; *max_rev_p = SVN_INVALID_REVNUM; for (i = 0; i < rangelist->nelts; i++) { svn_merge_range_t *range = APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *); svn_revnum_t range_min = MIN(range->start, range->end); svn_revnum_t range_max = MAX(range->start, range->end); if ((! SVN_IS_VALID_REVNUM(*min_rev_p)) || (range_min < *min_rev_p)) *min_rev_p = range_min; if ((! SVN_IS_VALID_REVNUM(*max_rev_p)) || (range_max > *max_rev_p)) *max_rev_p = range_max; } } /* Wrapper around svn_ra_get_log2(). Invoke RECEIVER with RECEIVER_BATON * on each commit from YOUNGEST_REV to OLDEST_REV in which TARGET_RELPATH * changed. TARGET_RELPATH is relative to RA_SESSION's URL. * Important: Revision properties are not retrieved by this function for * performance reasons. */ static svn_error_t * get_log(svn_ra_session_t *ra_session, const char *target_relpath, svn_revnum_t youngest_rev, svn_revnum_t oldest_rev, svn_boolean_t discover_changed_paths, svn_log_entry_receiver_t receiver, void *receiver_baton, apr_pool_t *pool) { apr_array_header_t *log_targets; apr_array_header_t *revprops; log_targets = apr_array_make(pool, 1, sizeof(const char *)); APR_ARRAY_PUSH(log_targets, const char *) = target_relpath; revprops = apr_array_make(pool, 0, sizeof(const char *)); SVN_ERR(svn_ra_get_log2(ra_session, log_targets, youngest_rev, oldest_rev, 0 /* limit */, discover_changed_paths, FALSE /* strict_node_history */, FALSE /* include_merged_revisions */, revprops, receiver, receiver_baton, pool)); return SVN_NO_ERROR; } /* Set *OPERATIVE_RANGES_P to an array of svn_merge_range_t * merge range objects copied wholesale from RANGES which have the property that in some revision within that range the object identified by RA_SESSION was modified (if by "modified" we mean "'svn log' would return that revision). *OPERATIVE_RANGES_P is allocated from the same pool as RANGES, and the ranges within it are shared with RANGES, too. *OPERATIVE_RANGES_P may be the same as RANGES (that is, the output parameter is set only after the input is no longer used). Use POOL for temporary allocations. */ static svn_error_t * remove_noop_merge_ranges(svn_rangelist_t **operative_ranges_p, svn_ra_session_t *ra_session, const svn_rangelist_t *ranges, apr_pool_t *pool) { int i; svn_revnum_t oldest_rev, youngest_rev; apr_array_header_t *changed_revs = apr_array_make(pool, ranges->nelts, sizeof(svn_revnum_t)); svn_rangelist_t *operative_ranges = apr_array_make(ranges->pool, ranges->nelts, ranges->elt_size); /* Find the revision extremes of the RANGES we have. */ merge_range_find_extremes(&oldest_rev, &youngest_rev, ranges); if (SVN_IS_VALID_REVNUM(oldest_rev)) oldest_rev++; /* make it inclusive */ /* Get logs across those ranges, recording which revisions hold changes to our object's history. */ SVN_ERR(get_log(ra_session, "", youngest_rev, oldest_rev, FALSE, log_changed_revs, changed_revs, pool)); /* Are there *any* changes? */ if (changed_revs->nelts) { /* Our list of changed revisions should be in youngest-to-oldest order. */ svn_revnum_t youngest_changed_rev = APR_ARRAY_IDX(changed_revs, 0, svn_revnum_t); svn_revnum_t oldest_changed_rev = APR_ARRAY_IDX(changed_revs, changed_revs->nelts - 1, svn_revnum_t); /* Now, copy from RANGES to *OPERATIVE_RANGES, filtering out ranges that aren't operative (by virtue of not having any revisions represented in the CHANGED_REVS array). */ for (i = 0; i < ranges->nelts; i++) { svn_merge_range_t *range = APR_ARRAY_IDX(ranges, i, svn_merge_range_t *); svn_revnum_t range_min = MIN(range->start, range->end) + 1; svn_revnum_t range_max = MAX(range->start, range->end); int j; /* If the merge range is entirely outside the range of changed revisions, we've no use for it. */ if ((range_min > youngest_changed_rev) || (range_max < oldest_changed_rev)) continue; /* Walk through the changed_revs to see if any of them fall inside our current range. */ for (j = 0; j < changed_revs->nelts; j++) { svn_revnum_t changed_rev = APR_ARRAY_IDX(changed_revs, j, svn_revnum_t); if ((changed_rev >= range_min) && (changed_rev <= range_max)) { APR_ARRAY_PUSH(operative_ranges, svn_merge_range_t *) = range; break; } } } } *operative_ranges_p = operative_ranges; return SVN_NO_ERROR; } /*-----------------------------------------------------------------------*/ /*** Merge Source Normalization ***/ /* qsort-compatible sort routine, rating merge_source_t * objects to be in descending (youngest-to-oldest) order based on their ->loc1->rev component. */ static int compare_merge_source_ts(const void *a, const void *b) { svn_revnum_t a_rev = (*(const merge_source_t *const *)a)->loc1->rev; svn_revnum_t b_rev = (*(const merge_source_t *const *)b)->loc1->rev; if (a_rev == b_rev) return 0; return a_rev < b_rev ? 1 : -1; } /* Set *MERGE_SOURCE_TS_P to a list of merge sources generated by slicing history location SEGMENTS with a given requested merge RANGE. Use SOURCE_LOC for full source URL calculation. Order the merge sources in *MERGE_SOURCE_TS_P from oldest to youngest. */ static svn_error_t * combine_range_with_segments(apr_array_header_t **merge_source_ts_p, const svn_merge_range_t *range, const apr_array_header_t *segments, const svn_client__pathrev_t *source_loc, apr_pool_t *pool) { apr_array_header_t *merge_source_ts = apr_array_make(pool, 1, sizeof(merge_source_t *)); svn_revnum_t minrev = MIN(range->start, range->end) + 1; svn_revnum_t maxrev = MAX(range->start, range->end); svn_boolean_t subtractive = (range->start > range->end); int i; for (i = 0; i < segments->nelts; i++) { svn_location_segment_t *segment = APR_ARRAY_IDX(segments, i, svn_location_segment_t *); svn_client__pathrev_t *loc1, *loc2; merge_source_t *merge_source; const char *path1 = NULL; svn_revnum_t rev1; /* If this segment doesn't overlap our range at all, or represents a gap, ignore it. */ if ((segment->range_end < minrev) || (segment->range_start > maxrev) || (! segment->path)) continue; /* If our range spans a segment boundary, we have to point our merge_source_t's path1 to the path of the immediately older segment, else it points to the same location as its path2. */ rev1 = MAX(segment->range_start, minrev) - 1; if (minrev <= segment->range_start) { if (i > 0) { path1 = (APR_ARRAY_IDX(segments, i - 1, svn_location_segment_t *))->path; } /* If we've backed PATH1 up into a segment gap, let's back it up further still to the segment before the gap. We'll have to adjust rev1, too. */ if ((! path1) && (i > 1)) { path1 = (APR_ARRAY_IDX(segments, i - 2, svn_location_segment_t *))->path; rev1 = (APR_ARRAY_IDX(segments, i - 2, svn_location_segment_t *))->range_end; } } else { path1 = apr_pstrdup(pool, segment->path); } /* If we don't have two valid paths, we won't know what to do when merging. This could happen if someone requested a merge where the source didn't exist in a particular revision or something. The merge code would probably bomb out anyway, so we'll just *not* create a merge source in this case. */ if (! (path1 && segment->path)) continue; /* Build our merge source structure. */ loc1 = svn_client__pathrev_create_with_relpath( source_loc->repos_root_url, source_loc->repos_uuid, rev1, path1, pool); loc2 = svn_client__pathrev_create_with_relpath( source_loc->repos_root_url, source_loc->repos_uuid, MIN(segment->range_end, maxrev), segment->path, pool); /* If this is subtractive, reverse the whole calculation. */ if (subtractive) merge_source = merge_source_create(loc2, loc1, TRUE /* ancestral */, pool); else merge_source = merge_source_create(loc1, loc2, TRUE /* ancestral */, pool); APR_ARRAY_PUSH(merge_source_ts, merge_source_t *) = merge_source; } /* If this was a subtractive merge, and we created more than one merge source, we need to reverse the sort ordering of our sources. */ if (subtractive && (merge_source_ts->nelts > 1)) svn_sort__array(merge_source_ts, compare_merge_source_ts); *merge_source_ts_p = merge_source_ts; return SVN_NO_ERROR; } /* Similar to normalize_merge_sources() except the input MERGE_RANGE_TS is a * rangelist. */ static svn_error_t * normalize_merge_sources_internal(apr_array_header_t **merge_sources_p, const svn_client__pathrev_t *source_loc, const svn_rangelist_t *merge_range_ts, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_revnum_t source_peg_revnum = source_loc->rev; svn_revnum_t oldest_requested, youngest_requested; svn_revnum_t trim_revision = SVN_INVALID_REVNUM; apr_array_header_t *segments; int i; /* Initialize our return variable. */ *merge_sources_p = apr_array_make(result_pool, 1, sizeof(merge_source_t *)); /* No ranges to merge? No problem. */ if (merge_range_ts->nelts == 0) return SVN_NO_ERROR; /* Find the extremes of the revisions across our set of ranges. */ merge_range_find_extremes(&oldest_requested, &youngest_requested, merge_range_ts); /* ### FIXME: Our underlying APIs can't yet handle the case where the peg revision isn't the youngest of the three revisions. So we'll just verify that the source in the peg revision is related to the source in the youngest requested revision (which is all the underlying APIs would do in this case right now anyway). */ if (source_peg_revnum < youngest_requested) { svn_client__pathrev_t *start_loc; SVN_ERR(svn_client__repos_location(&start_loc, ra_session, source_loc, youngest_requested, ctx, scratch_pool, scratch_pool)); source_peg_revnum = youngest_requested; } /* Fetch the locations for our merge range span. */ SVN_ERR(svn_client__repos_location_segments(&segments, ra_session, source_loc->url, source_peg_revnum, youngest_requested, oldest_requested, ctx, result_pool)); /* See if we fetched enough history to do the job. "Surely we did," you say. "After all, we covered the entire requested merge range." Yes, that's true, but if our first segment doesn't extend back to the oldest request revision, we've got a special case to deal with. Or if the first segment represents a gap, that's another special case. */ trim_revision = SVN_INVALID_REVNUM; if (segments->nelts) { svn_location_segment_t *first_segment = APR_ARRAY_IDX(segments, 0, svn_location_segment_t *); /* If the first segment doesn't start with the OLDEST_REQUESTED revision, we'll need to pass a trim revision to our range cruncher. */ if (first_segment->range_start != oldest_requested) { trim_revision = first_segment->range_start; } /* Else, if the first segment has no path (and therefore is a gap), then we'll fetch the copy source revision from the second segment (provided there is one, of course) and use it to prepend an extra pathful segment to our list. ### We could avoid this bit entirely if we'd passed ### SVN_INVALID_REVNUM instead of OLDEST_REQUESTED to ### svn_client__repos_location_segments(), but that would ### really penalize clients hitting pre-1.5 repositories with ### the typical small merge range request (because of the ### lack of a node-origins cache in the repository). */ else if (! first_segment->path) { if (segments->nelts > 1) { svn_location_segment_t *second_segment = APR_ARRAY_IDX(segments, 1, svn_location_segment_t *); const char *segment_url; const char *original_repos_relpath; svn_revnum_t original_revision; svn_opt_revision_t range_start_rev; range_start_rev.kind = svn_opt_revision_number; range_start_rev.value.number = second_segment->range_start; segment_url = svn_path_url_add_component2( source_loc->repos_root_url, second_segment->path, scratch_pool); SVN_ERR(svn_client__get_copy_source(&original_repos_relpath, &original_revision, segment_url, &range_start_rev, ra_session, ctx, result_pool, scratch_pool)); /* Got copyfrom data? Fix up the first segment to cover back to COPYFROM_REV + 1, and then prepend a new segment covering just COPYFROM_REV. */ if (original_repos_relpath) { svn_location_segment_t *new_segment = apr_pcalloc(result_pool, sizeof(*new_segment)); new_segment->path = original_repos_relpath; new_segment->range_start = original_revision; new_segment->range_end = original_revision; SVN_ERR(svn_sort__array_insert2(segments, &new_segment, 0)); } } } } /* For each range in our requested range set, try to determine the path(s) associated with that range. */ for (i = 0; i < merge_range_ts->nelts; i++) { svn_merge_range_t *range = APR_ARRAY_IDX(merge_range_ts, i, svn_merge_range_t *); apr_array_header_t *merge_sources; if (SVN_IS_VALID_REVNUM(trim_revision)) { /* If the range predates the trim revision, discard it. */ if (MAX(range->start, range->end) < trim_revision) continue; /* If the range overlaps the trim revision, trim it. */ if (range->start < trim_revision) range->start = trim_revision; if (range->end < trim_revision) range->end = trim_revision; } /* Copy the resulting merge sources into master list thereof. */ SVN_ERR(combine_range_with_segments(&merge_sources, range, segments, source_loc, result_pool)); apr_array_cat(*merge_sources_p, merge_sources); } return SVN_NO_ERROR; } /* Determine the normalized ranges to merge from a given line of history. Calculate the result by intersecting the list of location segments at which SOURCE_LOC existed along its line of history with the requested revision ranges in RANGES_TO_MERGE. RANGES_TO_MERGE is an array of (svn_opt_revision_range_t *) revision ranges. Use SOURCE_PATH_OR_URL to resolve any WC-relative revision specifiers (such as 'base') in RANGES_TO_MERGE. Set *MERGE_SOURCES_P to an array of merge_source_t * objects, each describing a normalized range of revisions to be merged from the line history of SOURCE_LOC. Order the objects from oldest to youngest. RA_SESSION is an RA session open to the repository of SOURCE_LOC; it may be temporarily reparented within this function. Use RA_SESSION to find the location segments along the line of history of SOURCE_LOC. Allocate MERGE_SOURCES_P and its contents in RESULT_POOL. See `MERGEINFO MERGE SOURCE NORMALIZATION' for more on the background of this function. */ static svn_error_t * normalize_merge_sources(apr_array_header_t **merge_sources_p, const char *source_path_or_url, const svn_client__pathrev_t *source_loc, const apr_array_header_t *ranges_to_merge, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *source_abspath_or_url; svn_revnum_t youngest_rev = SVN_INVALID_REVNUM; svn_rangelist_t *merge_range_ts; int i; apr_pool_t *iterpool = svn_pool_create(scratch_pool); if(!svn_path_is_url(source_path_or_url)) SVN_ERR(svn_dirent_get_absolute(&source_abspath_or_url, source_path_or_url, scratch_pool)); else source_abspath_or_url = source_path_or_url; /* Create a list to hold svn_merge_range_t's. */ merge_range_ts = apr_array_make(scratch_pool, ranges_to_merge->nelts, sizeof(svn_merge_range_t *)); for (i = 0; i < ranges_to_merge->nelts; i++) { svn_opt_revision_range_t *range = APR_ARRAY_IDX(ranges_to_merge, i, svn_opt_revision_range_t *); svn_merge_range_t mrange; svn_pool_clear(iterpool); /* Resolve revisions to real numbers, validating as we go. */ if ((range->start.kind == svn_opt_revision_unspecified) || (range->end.kind == svn_opt_revision_unspecified)) return svn_error_create(SVN_ERR_CLIENT_BAD_REVISION, NULL, _("Not all required revisions are specified")); SVN_ERR(svn_client__get_revision_number(&mrange.start, &youngest_rev, ctx->wc_ctx, source_abspath_or_url, ra_session, &range->start, iterpool)); SVN_ERR(svn_client__get_revision_number(&mrange.end, &youngest_rev, ctx->wc_ctx, source_abspath_or_url, ra_session, &range->end, iterpool)); /* If this isn't a no-op range... */ if (mrange.start != mrange.end) { /* ...then add it to the list. */ mrange.inheritable = TRUE; APR_ARRAY_PUSH(merge_range_ts, svn_merge_range_t *) = svn_merge_range_dup(&mrange, scratch_pool); } } SVN_ERR(normalize_merge_sources_internal( merge_sources_p, source_loc, merge_range_ts, ra_session, ctx, result_pool, scratch_pool)); svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /*-----------------------------------------------------------------------*/ /*** Merge Workhorse Functions ***/ /* Helper for do_directory_merge() and do_file_merge() which filters out a path's own natural history from the mergeinfo describing a merge. Given the natural history IMPLICIT_MERGEINFO of some wc merge target path, the repository-relative merge source path SOURCE_REL_PATH, and the requested merge range REQUESTED_RANGE from SOURCE_REL_PATH, remove any portion of REQUESTED_RANGE which is already described in IMPLICIT_MERGEINFO. Store the result in *FILTERED_RANGELIST. This function only filters natural history for mergeinfo that will be *added* during a forward merge. Removing natural history from explicit mergeinfo is harmless. If REQUESTED_RANGE describes a reverse merge, then *FILTERED_RANGELIST is simply populated with one range described by REQUESTED_RANGE. *FILTERED_RANGELIST is never NULL. Allocate *FILTERED_RANGELIST in POOL. */ static svn_error_t * filter_natural_history_from_mergeinfo(svn_rangelist_t **filtered_rangelist, const char *source_rel_path, svn_mergeinfo_t implicit_mergeinfo, svn_merge_range_t *requested_range, apr_pool_t *pool) { /* Make the REQUESTED_RANGE into a rangelist. */ svn_rangelist_t *requested_rangelist = svn_rangelist__initialize(requested_range->start, requested_range->end, requested_range->inheritable, pool); *filtered_rangelist = NULL; /* For forward merges: If the IMPLICIT_MERGEINFO already describes ranges associated with SOURCE_REL_PATH then filter those ranges out. */ if (implicit_mergeinfo && (requested_range->start < requested_range->end)) { svn_rangelist_t *implied_rangelist = svn_hash_gets(implicit_mergeinfo, source_rel_path); if (implied_rangelist) SVN_ERR(svn_rangelist_remove(filtered_rangelist, implied_rangelist, requested_rangelist, FALSE, pool)); } /* If no filtering was performed the filtered rangelist is simply the requested rangelist.*/ if (! (*filtered_rangelist)) *filtered_rangelist = requested_rangelist; return SVN_NO_ERROR; } /* Return a merge source representing the sub-range from START_REV to END_REV of SOURCE. SOURCE obeys the rules described in the 'MERGEINFO MERGE SOURCE NORMALIZATION' comment at the top of this file. The younger of START_REV and END_REV is inclusive while the older is exclusive. Allocate the result structure in POOL but leave the URLs in it as shallow copies of the URLs in SOURCE. */ static merge_source_t * subrange_source(const merge_source_t *source, svn_revnum_t start_rev, svn_revnum_t end_rev, apr_pool_t *pool) { svn_boolean_t is_rollback = (source->loc1->rev > source->loc2->rev); svn_boolean_t same_urls = (strcmp(source->loc1->url, source->loc2->url) == 0); svn_client__pathrev_t loc1 = *source->loc1; svn_client__pathrev_t loc2 = *source->loc2; /* For this function we require that the input source is 'ancestral'. */ SVN_ERR_ASSERT_NO_RETURN(source->ancestral); SVN_ERR_ASSERT_NO_RETURN(start_rev != end_rev); loc1.rev = start_rev; loc2.rev = end_rev; if (! same_urls) { if (is_rollback && (end_rev != source->loc2->rev)) { loc2.url = source->loc1->url; } if ((! is_rollback) && (start_rev != source->loc1->rev)) { loc1.url = source->loc2->url; } } return merge_source_create(&loc1, &loc2, source->ancestral, pool); } /* The single-file, simplified version of do_directory_merge(), which see for parameter descriptions. Additional parameters: If SOURCES_RELATED is set, the "left" and "right" sides of SOURCE are historically related (ancestors, uncles, second cousins thrice removed, etc...). (This is used to simulate the history checks that the repository logic does in the directory case.) If mergeinfo is being recorded to describe this merge, and RESULT_CATALOG is not NULL, then don't record the new mergeinfo on the TARGET_ABSPATH, but instead record it in RESULT_CATALOG, where the key is TARGET_ABSPATH and the value is the new mergeinfo for that path. Allocate additions to RESULT_CATALOG in pool which RESULT_CATALOG was created in. CONFLICTED_RANGE is as documented for do_directory_merge(). Note: MERGE_B->RA_SESSION1 must be associated with SOURCE->loc1->url and MERGE_B->RA_SESSION2 with SOURCE->loc2->url. */ static svn_error_t * do_file_merge(svn_mergeinfo_catalog_t result_catalog, single_range_conflict_report_t **conflict_report, const merge_source_t *source, const char *target_abspath, const svn_diff_tree_processor_t *processor, svn_boolean_t sources_related, svn_boolean_t squelch_mergeinfo_notifications, merge_cmd_baton_t *merge_b, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_rangelist_t *remaining_ranges; svn_client_ctx_t *ctx = merge_b->ctx; svn_merge_range_t range; svn_mergeinfo_t target_mergeinfo; svn_boolean_t inherited = FALSE; svn_boolean_t is_rollback = (source->loc1->rev > source->loc2->rev); const svn_client__pathrev_t *primary_src = is_rollback ? source->loc1 : source->loc2; svn_boolean_t honor_mergeinfo = HONOR_MERGEINFO(merge_b); svn_client__merge_path_t *merge_target = NULL; apr_pool_t *iterpool = svn_pool_create(scratch_pool); SVN_ERR_ASSERT(svn_dirent_is_absolute(target_abspath)); *conflict_report = NULL; /* Note that this is a single-file merge. */ range.start = source->loc1->rev; range.end = source->loc2->rev; range.inheritable = TRUE; merge_target = svn_client__merge_path_create(target_abspath, scratch_pool); if (honor_mergeinfo) { svn_error_t *err; /* Fetch mergeinfo. */ err = get_full_mergeinfo(&target_mergeinfo, &(merge_target->implicit_mergeinfo), &inherited, svn_mergeinfo_inherited, merge_b->ra_session1, target_abspath, MAX(source->loc1->rev, source->loc2->rev), MIN(source->loc1->rev, source->loc2->rev), ctx, scratch_pool, iterpool); if (err) { if (err->apr_err == SVN_ERR_MERGEINFO_PARSE_ERROR) { err = svn_error_createf( SVN_ERR_CLIENT_INVALID_MERGEINFO_NO_MERGETRACKING, err, _("Invalid mergeinfo detected on merge target '%s', " "merge tracking not possible"), svn_dirent_local_style(target_abspath, scratch_pool)); } return svn_error_trace(err); } /* Calculate remaining merges unless this is a record only merge. In that case the remaining range is the whole range described by SOURCE->rev1:rev2. */ if (!merge_b->record_only) { /* ### Bug? calculate_remaining_ranges() needs 'source' to adhere * to the requirements of 'MERGEINFO MERGE SOURCE NORMALIZATION' * here, but it doesn't appear to be guaranteed so. */ SVN_ERR(calculate_remaining_ranges(NULL, merge_target, source, target_mergeinfo, merge_b->implicit_src_gap, FALSE, merge_b->ra_session1, ctx, scratch_pool, iterpool)); remaining_ranges = merge_target->remaining_ranges; /* We are honoring mergeinfo and this is not a simple record only merge which blindly records mergeinfo describing the merge of SOURCE->LOC1->URL@SOURCE->LOC1->REV through SOURCE->LOC2->URL@SOURCE->LOC2->REV. This means that the oldest and youngest revisions merged (as determined above by calculate_remaining_ranges) might differ from those described in SOURCE. To keep the '--- Merging *' notifications consistent with the '--- Recording mergeinfo *' notifications, we adjust RANGE to account for such changes. */ if (remaining_ranges->nelts) { svn_merge_range_t *adj_start_range = APR_ARRAY_IDX(remaining_ranges, 0, svn_merge_range_t *); svn_merge_range_t *adj_end_range = APR_ARRAY_IDX(remaining_ranges, remaining_ranges->nelts - 1, svn_merge_range_t *); range.start = adj_start_range->start; range.end = adj_end_range->end; } } } /* The simple cases where our remaining range is SOURCE->rev1:rev2. */ if (!honor_mergeinfo || merge_b->record_only) { remaining_ranges = apr_array_make(scratch_pool, 1, sizeof(&range)); APR_ARRAY_PUSH(remaining_ranges, svn_merge_range_t *) = ⦥ } if (!merge_b->record_only) { svn_rangelist_t *ranges_to_merge = apr_array_copy(scratch_pool, remaining_ranges); const char *target_relpath = ""; /* relative to root of merge */ if (source->ancestral) { apr_array_header_t *child_with_mergeinfo; svn_client__merge_path_t *target_info; /* If we have ancestrally related sources and more than one range to merge, eliminate no-op ranges before going through the effort of downloading the many copies of the file required to do these merges (two copies per range). */ if (remaining_ranges->nelts > 1) { const char *old_sess_url; svn_error_t *err; SVN_ERR(svn_client__ensure_ra_session_url(&old_sess_url, merge_b->ra_session1, primary_src->url, iterpool)); err = remove_noop_merge_ranges(&ranges_to_merge, merge_b->ra_session1, remaining_ranges, scratch_pool); SVN_ERR(svn_error_compose_create( err, svn_ra_reparent(merge_b->ra_session1, old_sess_url, iterpool))); } /* To support notify_merge_begin() initialize our CHILD_WITH_MERGEINFO. See the comment 'THE CHILDREN_WITH_MERGEINFO ARRAY' at the start of this file. */ child_with_mergeinfo = apr_array_make(scratch_pool, 1, sizeof(svn_client__merge_path_t *)); /* ### Create a fake copy of merge_target as we don't keep remaining_ranges in sync (yet). */ target_info = svn_client__merge_path_create(merge_target->abspath, scratch_pool); target_info->remaining_ranges = ranges_to_merge; APR_ARRAY_PUSH(child_with_mergeinfo, svn_client__merge_path_t *) = target_info; /* And store in baton to allow using it from notify_merge_begin() */ merge_b->children_with_mergeinfo = child_with_mergeinfo; } while (ranges_to_merge->nelts > 0) { svn_merge_range_t *r = APR_ARRAY_IDX(ranges_to_merge, 0, svn_merge_range_t *); const merge_source_t *real_source; const char *left_file, *right_file; apr_hash_t *left_props, *right_props; const svn_diff_source_t *left_source; const svn_diff_source_t *right_source; svn_pool_clear(iterpool); /* Ensure any subsequent drives gets their own notification. */ merge_b->notify_begin.last_abspath = NULL; /* While we currently don't allow it, in theory we could be fetching two fulltexts from two different repositories here. */ if (source->ancestral) real_source = subrange_source(source, r->start, r->end, iterpool); else real_source = source; SVN_ERR(single_file_merge_get_file(&left_file, &left_props, merge_b->ra_session1, real_source->loc1, target_abspath, iterpool, iterpool)); SVN_ERR(single_file_merge_get_file(&right_file, &right_props, merge_b->ra_session2, real_source->loc2, target_abspath, iterpool, iterpool)); /* Calculate sources for the diff processor */ left_source = svn_diff__source_create(r->start, iterpool); right_source = svn_diff__source_create(r->end, iterpool); /* If the sources are related or we're ignoring ancestry in diffs, do a text-n-props merge; otherwise, do a delete-n-add merge. */ if (! (merge_b->diff_ignore_ancestry || sources_related)) { void *dir_baton = open_dir_for_replace_single_file(iterpool); void *file_baton; svn_boolean_t skip; /* Delete... */ file_baton = NULL; skip = FALSE; SVN_ERR(processor->file_opened(&file_baton, &skip, target_relpath, left_source, NULL /* right_source */, NULL /* copyfrom_source */, dir_baton, processor, iterpool, iterpool)); if (! skip) SVN_ERR(processor->file_deleted(target_relpath, left_source, left_file, left_props, file_baton, processor, iterpool)); /* ...plus add... */ file_baton = NULL; skip = FALSE; SVN_ERR(processor->file_opened(&file_baton, &skip, target_relpath, NULL /* left_source */, right_source, NULL /* copyfrom_source */, dir_baton, processor, iterpool, iterpool)); if (! skip) SVN_ERR(processor->file_added(target_relpath, NULL /* copyfrom_source */, right_source, NULL /* copyfrom_file */, right_file, NULL /* copyfrom_props */, right_props, file_baton, processor, iterpool)); /* ... equals replace. */ } else { void *file_baton = NULL; svn_boolean_t skip = FALSE; apr_array_header_t *propchanges; /* Deduce property diffs. */ SVN_ERR(svn_prop_diffs(&propchanges, right_props, left_props, iterpool)); SVN_ERR(processor->file_opened(&file_baton, &skip, target_relpath, left_source, right_source, NULL /* copyfrom_source */, NULL /* dir_baton */, processor, iterpool, iterpool)); if (! skip) SVN_ERR(processor->file_changed(target_relpath, left_source, right_source, left_file, right_file, left_props, right_props, TRUE /* file changed */, propchanges, file_baton, processor, iterpool)); } if (is_path_conflicted_by_merge(merge_b)) { merge_source_t *remaining_range = NULL; if (real_source->loc2->rev != source->loc2->rev) remaining_range = subrange_source(source, real_source->loc2->rev, source->loc2->rev, scratch_pool); *conflict_report = single_range_conflict_report_create( real_source, remaining_range, result_pool); /* Only record partial mergeinfo if only a partial merge was performed before a conflict was encountered. */ range.end = r->end; break; } /* Now delete the just merged range from the hash (This list is used from notify_merge_begin) Directory merges use remove_first_range_from_remaining_ranges() */ SVN_ERR(svn_sort__array_delete2(ranges_to_merge, 0, 1)); } merge_b->notify_begin.last_abspath = NULL; } /* !merge_b->record_only */ /* Record updated WC mergeinfo to account for our new merges, minus any unresolved conflicts and skips. We use the original REMAINING_RANGES here because we want to record all the requested merge ranges, include the noop ones. */ if (RECORD_MERGEINFO(merge_b) && remaining_ranges->nelts) { const char *mergeinfo_path = svn_client__pathrev_fspath(primary_src, scratch_pool); svn_rangelist_t *filtered_rangelist; /* Filter any ranges from TARGET_WCPATH's own history, there is no need to record this explicitly in mergeinfo, it is already part of TARGET_WCPATH's natural history (implicit mergeinfo). */ SVN_ERR(filter_natural_history_from_mergeinfo( &filtered_rangelist, mergeinfo_path, merge_target->implicit_mergeinfo, &range, iterpool)); /* Only record mergeinfo if there is something other than self-referential mergeinfo, but don't record mergeinfo if TARGET_WCPATH was skipped. */ if (filtered_rangelist->nelts && (apr_hash_count(merge_b->skipped_abspaths) == 0)) { apr_hash_t *merges = apr_hash_make(iterpool); /* If merge target has inherited mergeinfo set it before recording the first merge range. */ if (inherited) SVN_ERR(svn_client__record_wc_mergeinfo(target_abspath, target_mergeinfo, FALSE, ctx, iterpool)); svn_hash_sets(merges, target_abspath, filtered_rangelist); if (!squelch_mergeinfo_notifications) { /* Notify that we are recording mergeinfo describing a merge. */ svn_merge_range_t n_range; SVN_ERR(svn_mergeinfo__get_range_endpoints( &n_range.end, &n_range.start, merges, iterpool)); n_range.inheritable = TRUE; notify_mergeinfo_recording(target_abspath, &n_range, merge_b->ctx, iterpool); } SVN_ERR(update_wc_mergeinfo(result_catalog, target_abspath, mergeinfo_path, merges, is_rollback, ctx, iterpool)); } } merge_b->children_with_mergeinfo = NULL; svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Helper for do_directory_merge() to handle the case where a merge editor drive adds explicit mergeinfo to a path which didn't have any explicit mergeinfo previously. MERGE_B is cascaded from the argument of the same name in do_directory_merge(). Should be called only after do_directory_merge() has called populate_remaining_ranges() and populated the remaining_ranges field of each child in CHILDREN_WITH_MERGEINFO (i.e. the remaining_ranges fields can be empty but never NULL). If MERGE_B->DRY_RUN is true do nothing, if it is false then for each path (if any) in MERGE_B->PATHS_WITH_NEW_MERGEINFO merge that path's inherited mergeinfo (if any) with its working explicit mergeinfo and set that as the path's new explicit mergeinfo. Then add an svn_client__merge_path_t * element representing the path to CHILDREN_WITH_MERGEINFO if it isn't already present. All fields in any elements added to CHILDREN_WITH_MERGEINFO are initialized to FALSE/NULL with the exception of 'path' and 'remaining_ranges'. The latter is set to a rangelist equal to the remaining_ranges of the path's nearest path-wise ancestor in CHILDREN_WITH_MERGEINFO. Any elements added to CHILDREN_WITH_MERGEINFO are allocated in POOL. */ static svn_error_t * process_children_with_new_mergeinfo(merge_cmd_baton_t *merge_b, apr_array_header_t *children_with_mergeinfo, apr_pool_t *pool) { apr_pool_t *iterpool; - apr_hash_index_t *hi; + apr_array_header_t *a; + int i; if (!merge_b->paths_with_new_mergeinfo || merge_b->dry_run) return SVN_NO_ERROR; /* Iterate over each path with explicit mergeinfo added by the merge. */ + /* Iterate over the paths in a parent-to-child order so that inherited + * mergeinfo is propagated consistently from each parent path to its + * children. (Issue #4862) */ + a = svn_sort__hash(merge_b->paths_with_new_mergeinfo, + svn_sort_compare_items_as_paths, pool); iterpool = svn_pool_create(pool); - for (hi = apr_hash_first(pool, merge_b->paths_with_new_mergeinfo); - hi; - hi = apr_hash_next(hi)) + for (i = 0; i < a->nelts; i++) { - const char *abspath_with_new_mergeinfo = apr_hash_this_key(hi); + svn_sort__item_t *item = &APR_ARRAY_IDX(a, i, svn_sort__item_t); + const char *abspath_with_new_mergeinfo = item->key; svn_mergeinfo_t path_inherited_mergeinfo; svn_mergeinfo_t path_explicit_mergeinfo; svn_client__merge_path_t *new_child; svn_pool_clear(iterpool); /* Note: We could skip recording inherited mergeinfo here if this path was added (with preexisting mergeinfo) by the merge. That's actually more correct, since the inherited mergeinfo likely describes non-existent or unrelated merge history, but it's not quite so simple as that, see https://issues.apache.org/jira/browse/SVN-4309 */ /* Get the path's new explicit mergeinfo... */ SVN_ERR(svn_client__get_wc_mergeinfo(&path_explicit_mergeinfo, NULL, svn_mergeinfo_explicit, abspath_with_new_mergeinfo, NULL, NULL, FALSE, merge_b->ctx, iterpool, iterpool)); /* ...there *should* always be explicit mergeinfo at this point but you can't be too careful. */ if (path_explicit_mergeinfo) { /* Get the mergeinfo the path would have inherited before the merge. */ SVN_ERR(svn_client__get_wc_or_repos_mergeinfo( &path_inherited_mergeinfo, NULL, NULL, FALSE, svn_mergeinfo_nearest_ancestor, /* We only want inherited MI */ merge_b->ra_session2, abspath_with_new_mergeinfo, merge_b->ctx, iterpool)); /* If the path inherited any mergeinfo then merge that with the explicit mergeinfo and record the result as the path's new explicit mergeinfo. */ if (path_inherited_mergeinfo) { SVN_ERR(svn_mergeinfo_merge2(path_explicit_mergeinfo, path_inherited_mergeinfo, iterpool, iterpool)); SVN_ERR(svn_client__record_wc_mergeinfo( abspath_with_new_mergeinfo, path_explicit_mergeinfo, FALSE, merge_b->ctx, iterpool)); } /* If the path is not in CHILDREN_WITH_MERGEINFO then add it. */ new_child = get_child_with_mergeinfo(children_with_mergeinfo, abspath_with_new_mergeinfo); if (!new_child) { const svn_client__merge_path_t *parent = find_nearest_ancestor(children_with_mergeinfo, FALSE, abspath_with_new_mergeinfo); new_child = svn_client__merge_path_create(abspath_with_new_mergeinfo, pool); /* If path_with_new_mergeinfo is the merge target itself then it should already be in CHILDREN_WITH_MERGEINFO per the criteria of get_mergeinfo_paths() and we shouldn't be in this block. If path_with_new_mergeinfo is a subtree then it must have a parent in CHILDREN_WITH_MERGEINFO if only the merge target itself...so if we don't find a parent the caller has done something quite wrong. */ SVN_ERR_ASSERT(parent); SVN_ERR_ASSERT(parent->remaining_ranges); /* Set the path's remaining_ranges equal to its parent's. */ new_child->remaining_ranges = svn_rangelist_dup( parent->remaining_ranges, pool); SVN_ERR(insert_child_to_merge(children_with_mergeinfo, new_child, pool)); } } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Return true if any path in SUBTREES is equal to, or is a subtree of, LOCAL_ABSPATH. Return false otherwise. The keys of SUBTREES are (const char *) absolute paths and its values are irrelevant. If SUBTREES is NULL return false. */ static svn_boolean_t path_is_subtree(const char *local_abspath, apr_hash_t *subtrees, apr_pool_t *pool) { if (subtrees) { apr_hash_index_t *hi; for (hi = apr_hash_first(pool, subtrees); hi; hi = apr_hash_next(hi)) { const char *path_touched_by_merge = apr_hash_this_key(hi); if (svn_dirent_is_ancestor(local_abspath, path_touched_by_merge)) return TRUE; } } return FALSE; } /* Return true if any merged, skipped, added or tree-conflicted path recorded in MERGE_B is equal to, or is a subtree of LOCAL_ABSPATH. Return false otherwise. ### Why not text- or prop-conflicted paths? Are such paths guaranteed to be recorded as 'merged' or 'skipped' or 'added', perhaps? */ static svn_boolean_t subtree_touched_by_merge(const char *local_abspath, merge_cmd_baton_t *merge_b, apr_pool_t *pool) { return (path_is_subtree(local_abspath, merge_b->merged_abspaths, pool) || path_is_subtree(local_abspath, merge_b->skipped_abspaths, pool) || path_is_subtree(local_abspath, merge_b->added_abspaths, pool) || path_is_subtree(local_abspath, merge_b->tree_conflicted_abspaths, pool)); } /* Helper for do_directory_merge() when performing mergeinfo unaware merges. Merge the SOURCE diff into TARGET_DIR_WCPATH. SOURCE, DEPTH, NOTIFY_B, and MERGE_B are all cascaded from do_directory_merge's arguments of the same names. CONFLICT_REPORT is as documented for do_directory_merge(). NOTE: This is a very thin wrapper around drive_merge_report_editor() and exists only to populate CHILDREN_WITH_MERGEINFO with the single element expected during mergeinfo unaware merges. */ static svn_error_t * do_mergeinfo_unaware_dir_merge(single_range_conflict_report_t **conflict_report, const merge_source_t *source, const char *target_dir_wcpath, apr_array_header_t *children_with_mergeinfo, const svn_diff_tree_processor_t *processor, svn_depth_t depth, merge_cmd_baton_t *merge_b, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { /* Initialize CHILDREN_WITH_MERGEINFO and populate it with one element describing the merge of SOURCE->rev1:rev2 to TARGET_DIR_WCPATH. */ svn_client__merge_path_t *item = svn_client__merge_path_create(target_dir_wcpath, scratch_pool); *conflict_report = NULL; item->remaining_ranges = svn_rangelist__initialize(source->loc1->rev, source->loc2->rev, TRUE, scratch_pool); APR_ARRAY_PUSH(children_with_mergeinfo, svn_client__merge_path_t *) = item; SVN_ERR(drive_merge_report_editor(target_dir_wcpath, source, NULL, processor, depth, merge_b, scratch_pool)); if (is_path_conflicted_by_merge(merge_b)) { *conflict_report = single_range_conflict_report_create( source, NULL, result_pool); } return SVN_NO_ERROR; } /* A svn_log_entry_receiver_t baton for log_find_operative_subtree_revs(). */ typedef struct log_find_operative_subtree_baton_t { /* Mapping of const char * absolute working copy paths to those path's const char * repos absolute paths. */ apr_hash_t *operative_children; /* As per the arguments of the same name to get_operative_immediate_children(). */ const char *merge_source_fspath; const char *merge_target_abspath; svn_depth_t depth; svn_wc_context_t *wc_ctx; /* A pool to allocate additions to the hashes in. */ apr_pool_t *result_pool; } log_find_operative_subtree_baton_t; /* A svn_log_entry_receiver_t callback for get_inoperative_immediate_children(). */ static svn_error_t * log_find_operative_subtree_revs(void *baton, svn_log_entry_t *log_entry, apr_pool_t *pool) { log_find_operative_subtree_baton_t *log_baton = baton; apr_hash_index_t *hi; apr_pool_t *iterpool; /* It's possible that authz restrictions on the merge source prevent us from knowing about any of the changes for LOG_ENTRY->REVISION. */ if (!log_entry->changed_paths2) return SVN_NO_ERROR; iterpool = svn_pool_create(pool); for (hi = apr_hash_first(pool, log_entry->changed_paths2); hi; hi = apr_hash_next(hi)) { const char *path = apr_hash_this_key(hi); svn_log_changed_path2_t *change = apr_hash_this_val(hi); { const char *child; const char *potential_child; const char *rel_path = svn_fspath__skip_ancestor(log_baton->merge_source_fspath, path); /* Some affected paths might be the root of the merge source or entirely outside our subtree of interest. In either case they are not operative *immediate* children. */ if (rel_path == NULL || rel_path[0] == '\0') continue; svn_pool_clear(iterpool); child = svn_relpath_dirname(rel_path, iterpool); if (child[0] == '\0') { /* The svn_log_changed_path2_t.node_kind members in LOG_ENTRY->CHANGED_PATHS2 may be set to svn_node_unknown, see svn_log_changed_path2_t and svn_fs_paths_changed2. In that case we check the type of the corresponding subtree in the merge target. */ svn_node_kind_t node_kind; if (change->node_kind == svn_node_unknown) { const char *wc_child_abspath = svn_dirent_join(log_baton->merge_target_abspath, rel_path, iterpool); SVN_ERR(svn_wc_read_kind2(&node_kind, log_baton->wc_ctx, wc_child_abspath, FALSE, FALSE, iterpool)); } else { node_kind = change->node_kind; } /* We only care about immediate directory children if DEPTH is svn_depth_files. */ if (log_baton->depth == svn_depth_files && node_kind != svn_node_dir) continue; /* If depth is svn_depth_immediates, then we only care about changes to proper subtrees of PATH. If the change is to PATH itself then PATH is within the operational depth of the merge. */ if (log_baton->depth == svn_depth_immediates) continue; child = rel_path; } potential_child = svn_dirent_join(log_baton->merge_target_abspath, child, iterpool); if (change->action == 'A' || !svn_hash_gets(log_baton->operative_children, potential_child)) { svn_hash_sets(log_baton->operative_children, apr_pstrdup(log_baton->result_pool, potential_child), apr_pstrdup(log_baton->result_pool, path)); } } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Find immediate subtrees of MERGE_TARGET_ABSPATH which would have additional differences applied if record_mergeinfo_for_dir_merge() were recording mergeinfo describing a merge at svn_depth_infinity, rather than at DEPTH (which is assumed to be shallow; if DEPTH == svn_depth_infinity then this function does nothing beyond setting *OPERATIVE_CHILDREN to an empty hash). MERGE_SOURCE_FSPATH is the absolute repository path of the merge source. OLDEST_REV and YOUNGEST_REV are the revisions merged from MERGE_SOURCE_FSPATH to MERGE_TARGET_ABSPATH. RA_SESSION points to MERGE_SOURCE_FSPATH. Set *OPERATIVE_CHILDREN to a hash (mapping const char * absolute working copy paths to those path's const char * repos absolute paths) containing all the immediate subtrees of MERGE_TARGET_ABSPATH which would have a different diff applied if MERGE_SOURCE_FSPATH -r(OLDEST_REV - 1):YOUNGEST_REV were merged to MERGE_TARGET_ABSPATH at svn_depth_infinity rather than DEPTH. RESULT_POOL is used to allocate the contents of *OPERATIVE_CHILDREN. SCRATCH_POOL is used for temporary allocations. */ static svn_error_t * get_operative_immediate_children(apr_hash_t **operative_children, const char *merge_source_fspath, svn_revnum_t oldest_rev, svn_revnum_t youngest_rev, const char *merge_target_abspath, svn_depth_t depth, svn_wc_context_t *wc_ctx, svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { log_find_operative_subtree_baton_t log_baton; SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(oldest_rev)); SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev)); SVN_ERR_ASSERT(oldest_rev <= youngest_rev); *operative_children = apr_hash_make(result_pool); if (depth == svn_depth_infinity) return SVN_NO_ERROR; /* Now remove any paths from *OPERATIVE_CHILDREN that are inoperative when merging MERGE_SOURCE_REPOS_PATH -r(OLDEST_REV - 1):YOUNGEST_REV to MERGE_TARGET_ABSPATH at --depth infinity. */ log_baton.operative_children = *operative_children; log_baton.merge_source_fspath = merge_source_fspath; log_baton.merge_target_abspath = merge_target_abspath; log_baton.depth = depth; log_baton.wc_ctx = wc_ctx; log_baton.result_pool = result_pool; SVN_ERR(get_log(ra_session, "", youngest_rev, oldest_rev, TRUE, /* discover_changed_paths */ log_find_operative_subtree_revs, &log_baton, scratch_pool)); return SVN_NO_ERROR; } /* Helper for record_mergeinfo_for_dir_merge(): Identify which elements of CHILDREN_WITH_MERGEINFO need new mergeinfo set to accurately describe a merge, what inheritance type such new mergeinfo should have, and what subtrees can be ignored altogether. For each svn_client__merge_path_t CHILD in CHILDREN_WITH_MERGEINFO, set CHILD->RECORD_MERGEINFO and CHILD->RECORD_NONINHERITABLE to true if the subtree needs mergeinfo to describe the merge and if that mergeinfo should be non-inheritable respectively. If OPERATIVE_MERGE is true, then the merge being described is operative as per subtree_touched_by_merge(). OPERATIVE_MERGE is false otherwise. MERGED_RANGE, MERGEINFO_FSPATH, DEPTH, NOTIFY_B, and MERGE_B are all cascaded from record_mergeinfo_for_dir_merge's arguments of the same names. SCRATCH_POOL is used for temporary allocations. */ static svn_error_t * flag_subtrees_needing_mergeinfo(svn_boolean_t operative_merge, const svn_merge_range_t *merged_range, apr_array_header_t *children_with_mergeinfo, const char *mergeinfo_fspath, svn_depth_t depth, merge_cmd_baton_t *merge_b, apr_pool_t *scratch_pool) { apr_pool_t *iterpool = svn_pool_create(scratch_pool); int i; apr_hash_t *operative_immediate_children = NULL; assert(! merge_b->dry_run); if (!merge_b->record_only && merged_range->start <= merged_range->end && (depth < svn_depth_infinity)) SVN_ERR(get_operative_immediate_children( &operative_immediate_children, mergeinfo_fspath, merged_range->start + 1, merged_range->end, merge_b->target->abspath, depth, merge_b->ctx->wc_ctx, merge_b->ra_session1, scratch_pool, iterpool)); /* Issue #4056: Walk CHILDREN_WITH_MERGEINFO reverse depth-first order. This way each child knows if it has operative missing/switched children which necessitates non-inheritable mergeinfo. */ for (i = children_with_mergeinfo->nelts - 1; i >= 0; i--) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); /* Can't record mergeinfo on something that isn't here. */ if (child->absent) continue; /* Verify that remove_children_with_deleted_mergeinfo() did its job */ assert((i == 0) ||! merge_b->paths_with_deleted_mergeinfo || !svn_hash_gets(merge_b->paths_with_deleted_mergeinfo, child->abspath)); /* Don't record mergeinfo on skipped paths. */ if (svn_hash_gets(merge_b->skipped_abspaths, child->abspath)) continue; /* ### ptb: Yes, we could combine the following into a single ### conditional, but clarity would suffer (even more than ### it does now). */ if (i == 0) { /* Always record mergeinfo on the merge target. */ child->record_mergeinfo = TRUE; } else if (merge_b->record_only && !merge_b->reintegrate_merge) { /* Always record mergeinfo for --record-only merges. */ child->record_mergeinfo = TRUE; } else if (child->immediate_child_dir && !child->pre_merge_mergeinfo && operative_immediate_children && svn_hash_gets(operative_immediate_children, child->abspath)) { /* We must record mergeinfo on those issue #3642 children that are operative at a greater depth. */ child->record_mergeinfo = TRUE; } if (operative_merge && subtree_touched_by_merge(child->abspath, merge_b, iterpool)) { svn_pool_clear(iterpool); /* This subtree was affected by the merge. */ child->record_mergeinfo = TRUE; /* Were any CHILD's missing children skipped by the merge? If not, then CHILD's missing children don't need to be considered when recording mergeinfo describing the merge. */ if (! merge_b->reintegrate_merge && child->missing_child && !path_is_subtree(child->abspath, merge_b->skipped_abspaths, iterpool)) { child->missing_child = FALSE; } /* If CHILD has an immediate switched child or children and none of these were touched by the merge, then we don't need need to do any special handling of those switched subtrees (e.g. record non-inheritable mergeinfo) when recording mergeinfo describing the merge. */ if (child->switched_child) { int j; svn_boolean_t operative_switched_child = FALSE; for (j = i + 1; j < children_with_mergeinfo->nelts; j++) { svn_client__merge_path_t *potential_child = APR_ARRAY_IDX(children_with_mergeinfo, j, svn_client__merge_path_t *); if (!svn_dirent_is_ancestor(child->abspath, potential_child->abspath)) break; /* POTENTIAL_CHILD is a subtree of CHILD, but is it an immediate child? */ if (strcmp(child->abspath, svn_dirent_dirname(potential_child->abspath, iterpool))) continue; if (potential_child->switched && potential_child->record_mergeinfo) { operative_switched_child = TRUE; break; } } /* Can we treat CHILD as if it has no switched children? */ if (! operative_switched_child) child->switched_child = FALSE; } } if (child->record_mergeinfo) { /* We need to record mergeinfo, but should that mergeinfo be non-inheritable? */ svn_node_kind_t path_kind; SVN_ERR(svn_wc_read_kind2(&path_kind, merge_b->ctx->wc_ctx, child->abspath, FALSE, FALSE, iterpool)); /* Only directories can have non-inheritable mergeinfo. */ if (path_kind == svn_node_dir) { /* There are two general cases where non-inheritable mergeinfo is required: 1) There merge target has missing subtrees (due to authz restrictions, switched subtrees, or a shallow working copy). 2) The operational depth of the merge itself is shallow. */ /* We've already determined the first case. */ child->record_noninheritable = child->missing_child || child->switched_child; /* The second case requires a bit more work. */ if (i == 0) { /* If CHILD is the root of the merge target and the operational depth is empty or files, then the mere existence of operative immediate children means we must record non-inheritable mergeinfo. ### What about svn_depth_immediates? In that case ### the merge target needs only normal inheritable ### mergeinfo and the target's immediate children will ### get non-inheritable mergeinfo, assuming they ### need even that. */ if (depth < svn_depth_immediates && operative_immediate_children && apr_hash_count(operative_immediate_children)) child->record_noninheritable = TRUE; } else if (depth == svn_depth_immediates) { /* An immediate directory child of the merge target, which was affected by a --depth=immediates merge, needs non-inheritable mergeinfo. */ if (svn_hash_gets(operative_immediate_children, child->abspath)) child->record_noninheritable = TRUE; } } } else /* child->record_mergeinfo */ { /* If CHILD is in CHILDREN_WITH_MERGEINFO simply because it had no explicit mergeinfo of its own at the start of the merge but is the child of of some path with non-inheritable mergeinfo, then the explicit mergeinfo it has *now* was set by get_mergeinfo_paths() -- see criteria 3 in that function's doc string. So since CHILD->ABSPATH was not touched by the merge we can remove the mergeinfo. */ if (child->child_of_noninheritable) SVN_ERR(svn_client__record_wc_mergeinfo(child->abspath, NULL, FALSE, merge_b->ctx, iterpool)); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Helper for do_directory_merge(). If RESULT_CATALOG is NULL then record mergeinfo describing a merge of MERGED_RANGE->START:MERGED_RANGE->END from the repository relative path MERGEINFO_FSPATH to the merge target (and possibly its subtrees) described by CHILDREN_WITH_MERGEINFO -- see the global comment 'THE CHILDREN_WITH_MERGEINFO ARRAY'. Obviously this should only be called if recording mergeinfo -- see doc string for RECORD_MERGEINFO(). If RESULT_CATALOG is not NULL, then don't record the new mergeinfo on the WC, but instead record it in RESULT_CATALOG, where the keys are absolute working copy paths and the values are the new mergeinfos for each. Allocate additions to RESULT_CATALOG in pool which RESULT_CATALOG was created in. DEPTH, NOTIFY_B, MERGE_B, and SQUELCH_MERGEINFO_NOTIFICATIONS are all cascaded from do_directory_merge's arguments of the same names. SCRATCH_POOL is used for temporary allocations. */ static svn_error_t * record_mergeinfo_for_dir_merge(svn_mergeinfo_catalog_t result_catalog, const svn_merge_range_t *merged_range, const char *mergeinfo_fspath, apr_array_header_t *children_with_mergeinfo, svn_depth_t depth, svn_boolean_t squelch_mergeinfo_notifications, merge_cmd_baton_t *merge_b, apr_pool_t *scratch_pool) { int i; svn_boolean_t is_rollback = (merged_range->start > merged_range->end); svn_boolean_t operative_merge; /* Update the WC mergeinfo here to account for our new merges, minus any unresolved conflicts and skips. */ /* We need a scratch pool for iterations below. */ apr_pool_t *iterpool = svn_pool_create(scratch_pool); svn_merge_range_t range = *merged_range; assert(! merge_b->dry_run); /* Regardless of what subtrees in MERGE_B->target->abspath might be missing could this merge have been operative? */ operative_merge = subtree_touched_by_merge(merge_b->target->abspath, merge_b, iterpool); /* If this couldn't be an operative merge then don't bother with the added complexity (and user confusion) of non-inheritable ranges. There is no harm in subtrees inheriting inoperative mergeinfo. */ if (!operative_merge) range.inheritable = TRUE; /* Remove absent children at or under MERGE_B->target->abspath from CHILDREN_WITH_MERGEINFO before we calculate the merges performed. */ SVN_ERR(remove_absent_children(merge_b->target->abspath, children_with_mergeinfo)); /* Determine which subtrees of interest need mergeinfo recorded... */ SVN_ERR(flag_subtrees_needing_mergeinfo(operative_merge, &range, children_with_mergeinfo, mergeinfo_fspath, depth, merge_b, iterpool)); /* ...and then record it. */ for (i = 0; i < children_with_mergeinfo->nelts; i++) { const char *child_repos_path; const char *child_merge_src_fspath; svn_rangelist_t *child_merge_rangelist; apr_hash_t *child_merges; svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); SVN_ERR_ASSERT(child); svn_pool_clear(iterpool); if (child->record_mergeinfo) { child_repos_path = svn_dirent_skip_ancestor(merge_b->target->abspath, child->abspath); SVN_ERR_ASSERT(child_repos_path != NULL); child_merge_src_fspath = svn_fspath__join(mergeinfo_fspath, child_repos_path, iterpool); /* Filter any ranges from each child's natural history before setting mergeinfo describing the merge. */ SVN_ERR(filter_natural_history_from_mergeinfo( &child_merge_rangelist, child_merge_src_fspath, child->implicit_mergeinfo, &range, iterpool)); if (child_merge_rangelist->nelts == 0) continue; if (!squelch_mergeinfo_notifications) { /* If the merge source has a gap, then don't mention those gap revisions in the notification. */ remove_source_gap(&range, merge_b->implicit_src_gap); notify_mergeinfo_recording(child->abspath, &range, merge_b->ctx, iterpool); } /* If we are here we know we will be recording some mergeinfo, but before we do, set override mergeinfo on skipped paths so they don't incorrectly inherit the mergeinfo we are about to set. */ if (i == 0) SVN_ERR(record_skips_in_mergeinfo(mergeinfo_fspath, child_merge_rangelist, is_rollback, merge_b, iterpool)); /* We may need to record non-inheritable mergeinfo that applies only to CHILD->ABSPATH. */ if (child->record_noninheritable) svn_rangelist__set_inheritance(child_merge_rangelist, FALSE); /* If CHILD has inherited mergeinfo set it before recording the first merge range. */ if (child->inherited_mergeinfo) SVN_ERR(svn_client__record_wc_mergeinfo( child->abspath, child->pre_merge_mergeinfo, FALSE, merge_b->ctx, iterpool)); if (merge_b->implicit_src_gap) { /* If this is a reverse merge reorder CHILD->REMAINING_RANGES so it will work with the svn_rangelist_remove API. */ if (is_rollback) SVN_ERR(svn_rangelist_reverse(child_merge_rangelist, iterpool)); SVN_ERR(svn_rangelist_remove(&child_merge_rangelist, merge_b->implicit_src_gap, child_merge_rangelist, FALSE, iterpool)); if (is_rollback) SVN_ERR(svn_rangelist_reverse(child_merge_rangelist, iterpool)); } child_merges = apr_hash_make(iterpool); /* The short story: If we are describing a forward merge, then the naive mergeinfo defined by MERGE_SOURCE_PATH:MERGED_RANGE->START: MERGE_SOURCE_PATH:MERGED_RANGE->END may contain non-existent path-revs or may describe other lines of history. We must remove these invalid portion(s) before recording mergeinfo describing the merge. The long story: If CHILD is the merge target we know that MERGE_SOURCE_PATH:MERGED_RANGE->END exists. Further, if there were no copies in MERGE_SOURCE_PATH's history going back to RANGE->START then we know that MERGE_SOURCE_PATH:MERGED_RANGE->START exists too and the two describe an unbroken line of history, and thus MERGE_SOURCE_PATH:MERGED_RANGE->START: MERGE_SOURCE_PATH:MERGED_RANGE->END is a valid description of the merge -- see normalize_merge_sources() and the global comment 'MERGEINFO MERGE SOURCE NORMALIZATION'. However, if there *was* a copy, then MERGE_SOURCE_PATH:MERGED_RANGE->START doesn't exist or is unrelated to MERGE_SOURCE_PATH:MERGED_RANGE->END. Also, we don't know if (MERGE_SOURCE_PATH:MERGED_RANGE->START)+1 through (MERGE_SOURCE_PATH:MERGED_RANGE->END)-1 actually exist. If CHILD is a subtree of the merge target, then nothing is guaranteed beyond the fact that MERGE_SOURCE_PATH exists at MERGED_RANGE->END. */ if ((!merge_b->record_only || merge_b->reintegrate_merge) && (!is_rollback)) { svn_error_t *err; svn_mergeinfo_t subtree_history_as_mergeinfo; svn_rangelist_t *child_merge_src_rangelist; svn_client__pathrev_t *subtree_mergeinfo_pathrev = svn_client__pathrev_create_with_relpath( merge_b->target->loc.repos_root_url, merge_b->target->loc.repos_uuid, merged_range->end, child_merge_src_fspath + 1, iterpool); /* Confirm that the naive mergeinfo we want to set on CHILD->ABSPATH both exists and is part of (MERGE_SOURCE_PATH+CHILD_REPOS_PATH)@MERGED_RANGE->END's history. */ /* We know MERGED_RANGE->END is younger than MERGE_RANGE->START because we only do this for forward merges. */ err = svn_client__get_history_as_mergeinfo( &subtree_history_as_mergeinfo, NULL, subtree_mergeinfo_pathrev, merged_range->end, merged_range->start, merge_b->ra_session2, merge_b->ctx, iterpool); /* If CHILD is a subtree it may have been deleted prior to MERGED_RANGE->END so the above call to get its history will fail. */ if (err) { if (err->apr_err != SVN_ERR_FS_NOT_FOUND) return svn_error_trace(err); svn_error_clear(err); } else { child_merge_src_rangelist = svn_hash_gets( subtree_history_as_mergeinfo, child_merge_src_fspath); SVN_ERR(svn_rangelist_intersect(&child_merge_rangelist, child_merge_rangelist, child_merge_src_rangelist, FALSE, iterpool)); if (child->record_noninheritable) svn_rangelist__set_inheritance(child_merge_rangelist, FALSE); } } svn_hash_sets(child_merges, child->abspath, child_merge_rangelist); SVN_ERR(update_wc_mergeinfo(result_catalog, child->abspath, child_merge_src_fspath, child_merges, is_rollback, merge_b->ctx, iterpool)); /* Once is enough: We don't need to record mergeinfo describing the merge a second. If CHILD->ABSPATH is in MERGE_B->ADDED_ABSPATHS, we'll do just that, so remove the former from the latter. */ svn_hash_sets(merge_b->added_abspaths, child->abspath, NULL); } /* Elide explicit subtree mergeinfo whether or not we updated it. */ if (i > 0) { svn_boolean_t in_switched_subtree = FALSE; if (child->switched) in_switched_subtree = TRUE; else if (i > 1) { /* Check if CHILD is part of a switched subtree */ svn_client__merge_path_t *parent; int j = i - 1; for (; j > 0; j--) { parent = APR_ARRAY_IDX(children_with_mergeinfo, j, svn_client__merge_path_t *); if (parent && parent->switched && svn_dirent_is_ancestor(parent->abspath, child->abspath)) { in_switched_subtree = TRUE; break; } } } /* Allow mergeinfo on switched subtrees to elide to the repository. Otherwise limit elision to the merge target for now. do_merge() will eventually try to elide that when the merge is complete. */ SVN_ERR(svn_client__elide_mergeinfo( child->abspath, in_switched_subtree ? NULL : merge_b->target->abspath, merge_b->ctx, iterpool)); } } /* (i = 0; i < notify_b->children_with_mergeinfo->nelts; i++) */ svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Helper for do_directory_merge(). Record mergeinfo describing a merge of MERGED_RANGE->START:MERGED_RANGE->END from the repository relative path MERGEINFO_FSPATH to each path in ADDED_ABSPATHS which has explicit mergeinfo or is the immediate child of a parent with explicit non-inheritable mergeinfo. DEPTH, MERGE_B, and SQUELCH_MERGEINFO_NOTIFICATIONS, are cascaded from do_directory_merge's arguments of the same names. Note: This is intended to support forward merges only, i.e. MERGED_RANGE->START must be older than MERGED_RANGE->END. */ static svn_error_t * record_mergeinfo_for_added_subtrees( svn_merge_range_t *merged_range, const char *mergeinfo_fspath, svn_depth_t depth, svn_boolean_t squelch_mergeinfo_notifications, apr_hash_t *added_abspaths, merge_cmd_baton_t *merge_b, apr_pool_t *pool) { apr_pool_t *iterpool; apr_hash_index_t *hi; /* If no paths were added by the merge then we have nothing to do. */ if (!added_abspaths) return SVN_NO_ERROR; SVN_ERR_ASSERT(merged_range->start < merged_range->end); iterpool = svn_pool_create(pool); for (hi = apr_hash_first(pool, added_abspaths); hi; hi = apr_hash_next(hi)) { const char *added_abspath = apr_hash_this_key(hi); const char *dir_abspath; svn_mergeinfo_t parent_mergeinfo; svn_mergeinfo_t added_path_mergeinfo; svn_pool_clear(iterpool); dir_abspath = svn_dirent_dirname(added_abspath, iterpool); /* Grab the added path's explicit mergeinfo. */ SVN_ERR(svn_client__get_wc_mergeinfo(&added_path_mergeinfo, NULL, svn_mergeinfo_explicit, added_abspath, NULL, NULL, FALSE, merge_b->ctx, iterpool, iterpool)); /* If the added path doesn't have explicit mergeinfo, does its immediate parent have non-inheritable mergeinfo? */ if (!added_path_mergeinfo) SVN_ERR(svn_client__get_wc_mergeinfo(&parent_mergeinfo, NULL, svn_mergeinfo_explicit, dir_abspath, NULL, NULL, FALSE, merge_b->ctx, iterpool, iterpool)); if (added_path_mergeinfo || svn_mergeinfo__is_noninheritable(parent_mergeinfo, iterpool)) { svn_node_kind_t added_path_kind; svn_mergeinfo_t merge_mergeinfo; svn_mergeinfo_t adds_history_as_mergeinfo; svn_rangelist_t *rangelist; const char *rel_added_path; const char *added_path_mergeinfo_fspath; svn_client__pathrev_t *added_path_pathrev; SVN_ERR(svn_wc_read_kind2(&added_path_kind, merge_b->ctx->wc_ctx, added_abspath, FALSE, FALSE, iterpool)); /* Calculate the naive mergeinfo describing the merge. */ merge_mergeinfo = apr_hash_make(iterpool); rangelist = svn_rangelist__initialize( merged_range->start, merged_range->end, ((added_path_kind == svn_node_file) || (!(depth == svn_depth_infinity || depth == svn_depth_immediates))), iterpool); /* Create the new mergeinfo path for added_path's mergeinfo. (added_abspath had better be a child of MERGE_B->target->abspath or something is *really* wrong.) */ rel_added_path = svn_dirent_is_child(merge_b->target->abspath, added_abspath, iterpool); SVN_ERR_ASSERT(rel_added_path); added_path_mergeinfo_fspath = svn_fspath__join(mergeinfo_fspath, rel_added_path, iterpool); svn_hash_sets(merge_mergeinfo, added_path_mergeinfo_fspath, rangelist); /* Don't add new mergeinfo to describe the merge if that mergeinfo contains non-existent merge sources. We know that MERGEINFO_PATH/rel_added_path's history does not span MERGED_RANGE->START:MERGED_RANGE->END but rather that it was added at some revions greater than MERGED_RANGE->START (assuming this is a forward merge). It may have been added, deleted, and re-added many times. The point is that we cannot blindly apply the naive mergeinfo calculated above because it will describe non-existent merge sources. To avoid this we get take the intersection of the naive mergeinfo with MERGEINFO_PATH/rel_added_path's history. */ added_path_pathrev = svn_client__pathrev_create_with_relpath( merge_b->target->loc.repos_root_url, merge_b->target->loc.repos_uuid, MAX(merged_range->start, merged_range->end), added_path_mergeinfo_fspath + 1, iterpool); SVN_ERR(svn_client__get_history_as_mergeinfo( &adds_history_as_mergeinfo, NULL, added_path_pathrev, MAX(merged_range->start, merged_range->end), MIN(merged_range->start, merged_range->end), merge_b->ra_session2, merge_b->ctx, iterpool)); SVN_ERR(svn_mergeinfo_intersect2(&merge_mergeinfo, merge_mergeinfo, adds_history_as_mergeinfo, FALSE, iterpool, iterpool)); /* Combine the explicit mergeinfo on the added path (if any) with the mergeinfo describing this merge. */ if (added_path_mergeinfo) SVN_ERR(svn_mergeinfo_merge2(merge_mergeinfo, added_path_mergeinfo, iterpool, iterpool)); SVN_ERR(svn_client__record_wc_mergeinfo( added_abspath, merge_mergeinfo, !squelch_mergeinfo_notifications, merge_b->ctx, iterpool)); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Baton structure for log_noop_revs. */ typedef struct log_noop_baton_t { /* See the comment 'THE CHILDREN_WITH_MERGEINFO ARRAY' at the start of this file.*/ apr_array_header_t *children_with_mergeinfo; /* Absolute repository path of younger of the two merge sources being diffed. */ const char *source_fspath; /* The merge target. */ const merge_target_t *target; /* Initially empty rangelists allocated in POOL. The rangelists are * populated across multiple invocations of log_noop_revs(). */ svn_rangelist_t *operative_ranges; svn_rangelist_t *merged_ranges; /* Pool to store the rangelists. */ apr_pool_t *pool; } log_noop_baton_t; /* Helper for log_noop_revs: Merge a svn_merge_range_t representation of REVISION into RANGELIST. New elements added to rangelist are allocated in RESULT_POOL. This is *not* a general purpose rangelist merge but a special replacement for svn_rangelist_merge when REVISION is guaranteed to be younger than any element in RANGELIST. svn_rangelist_merge is O(n) worst-case (i.e. when all the ranges in output rangelist are older than the incoming changes). This turns the special case of a single incoming younger range into O(1). */ static svn_error_t * rangelist_merge_revision(svn_rangelist_t *rangelist, svn_revnum_t revision, apr_pool_t *result_pool) { svn_merge_range_t *new_range; if (rangelist->nelts) { svn_merge_range_t *range = APR_ARRAY_IDX(rangelist, rangelist->nelts - 1, svn_merge_range_t *); if (range->end == revision - 1) { /* REVISION is adjacent to the youngest range in RANGELIST so we can simply expand that range to encompass REVISION. */ range->end = revision; return SVN_NO_ERROR; } } new_range = apr_palloc(result_pool, sizeof(*new_range)); new_range->start = revision - 1; new_range->end = revision; new_range->inheritable = TRUE; APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = new_range; return SVN_NO_ERROR; } /* Implements the svn_log_entry_receiver_t interface. BATON is an log_noop_baton_t *. Add LOG_ENTRY->REVISION to BATON->OPERATIVE_RANGES. If LOG_ENTRY->REVISION has already been fully merged to BATON->target->abspath per the mergeinfo in BATON->CHILDREN_WITH_MERGEINFO, then add LOG_ENTRY->REVISION to BATON->MERGED_RANGES. Use SCRATCH_POOL for temporary allocations. Allocate additions to BATON->MERGED_RANGES and BATON->OPERATIVE_RANGES in BATON->POOL. Note: This callback must be invoked from oldest LOG_ENTRY->REVISION to youngest LOG_ENTRY->REVISION -- see rangelist_merge_revision(). */ static svn_error_t * log_noop_revs(void *baton, svn_log_entry_t *log_entry, apr_pool_t *scratch_pool) { log_noop_baton_t *log_gap_baton = baton; apr_hash_index_t *hi; svn_revnum_t revision; svn_boolean_t log_entry_rev_required = FALSE; revision = log_entry->revision; /* It's possible that authz restrictions on the merge source prevent us from knowing about any of the changes for LOG_ENTRY->REVISION. */ if (!log_entry->changed_paths2) return SVN_NO_ERROR; /* Unconditionally add LOG_ENTRY->REVISION to BATON->OPERATIVE_MERGES. */ SVN_ERR(rangelist_merge_revision(log_gap_baton->operative_ranges, revision, log_gap_baton->pool)); /* Examine each path affected by LOG_ENTRY->REVISION. If the explicit or inherited mergeinfo for *all* of the corresponding paths under BATON->target->abspath reflects that LOG_ENTRY->REVISION has been merged, then add LOG_ENTRY->REVISION to BATON->MERGED_RANGES. */ for (hi = apr_hash_first(scratch_pool, log_entry->changed_paths2); hi; hi = apr_hash_next(hi)) { const char *fspath = apr_hash_this_key(hi); const char *rel_path; const char *cwmi_abspath; svn_rangelist_t *paths_explicit_rangelist = NULL; svn_boolean_t mergeinfo_inherited = FALSE; /* Adjust REL_PATH so it is relative to the merge source then use it to calculate what path in the merge target would be affected by this revision. */ rel_path = svn_fspath__skip_ancestor(log_gap_baton->source_fspath, fspath); /* Is PATH even within the merge target? If it isn't we can disregard it altogether. */ if (rel_path == NULL) continue; cwmi_abspath = svn_dirent_join(log_gap_baton->target->abspath, rel_path, scratch_pool); /* Find any explicit or inherited mergeinfo for PATH. */ while (!log_entry_rev_required) { svn_client__merge_path_t *child = get_child_with_mergeinfo( log_gap_baton->children_with_mergeinfo, cwmi_abspath); if (child && child->pre_merge_mergeinfo) { /* Found some explicit mergeinfo, grab any ranges for PATH. */ paths_explicit_rangelist = svn_hash_gets(child->pre_merge_mergeinfo, fspath); break; } if (cwmi_abspath[0] == '\0' || svn_dirent_is_root(cwmi_abspath, strlen(cwmi_abspath)) || strcmp(log_gap_baton->target->abspath, cwmi_abspath) == 0) { /* Can't crawl any higher. */ break; } /* Didn't find anything so crawl up to the parent. */ cwmi_abspath = svn_dirent_dirname(cwmi_abspath, scratch_pool); fspath = svn_fspath__dirname(fspath, scratch_pool); /* At this point *if* we find mergeinfo it will be inherited. */ mergeinfo_inherited = TRUE; } if (paths_explicit_rangelist) { svn_rangelist_t *intersecting_range; svn_rangelist_t *rangelist; rangelist = svn_rangelist__initialize(revision - 1, revision, TRUE, scratch_pool); /* If PATH inherited mergeinfo we must consider inheritance in the event the inherited mergeinfo is actually non-inheritable. */ SVN_ERR(svn_rangelist_intersect(&intersecting_range, paths_explicit_rangelist, rangelist, mergeinfo_inherited, scratch_pool)); if (intersecting_range->nelts == 0) log_entry_rev_required = TRUE; } else { log_entry_rev_required = TRUE; } } if (!log_entry_rev_required) SVN_ERR(rangelist_merge_revision(log_gap_baton->merged_ranges, revision, log_gap_baton->pool)); return SVN_NO_ERROR; } /* Helper for do_directory_merge(). SOURCE is cascaded from the argument of the same name in do_directory_merge(). TARGET is the merge target. RA_SESSION is the session for SOURCE->loc2. Find all the ranges required by subtrees in CHILDREN_WITH_MERGEINFO that are *not* required by TARGET->abspath (i.e. CHILDREN_WITH_MERGEINFO[0]). If such ranges exist, then find any subset of ranges which, if merged, would be inoperative. Finally, if any inoperative ranges are found then remove these ranges from all of the subtree's REMAINING_RANGES. This function should only be called when honoring mergeinfo during forward merges (i.e. SOURCE->rev1 < SOURCE->rev2). */ static svn_error_t * remove_noop_subtree_ranges(const merge_source_t *source, const merge_target_t *target, svn_ra_session_t *ra_session, apr_array_header_t *children_with_mergeinfo, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { /* ### Do we need to check that we are at a uniform working revision? */ int i; svn_client__merge_path_t *root_child = APR_ARRAY_IDX(children_with_mergeinfo, 0, svn_client__merge_path_t *); svn_rangelist_t *requested_ranges; svn_rangelist_t *subtree_gap_ranges; svn_rangelist_t *subtree_remaining_ranges; log_noop_baton_t log_gap_baton; svn_merge_range_t *oldest_gap_rev; svn_merge_range_t *youngest_gap_rev; svn_rangelist_t *inoperative_ranges; apr_pool_t *iterpool; const char *longest_common_subtree_ancestor = NULL; svn_error_t *err; assert(session_url_is(ra_session, source->loc2->url, scratch_pool)); /* This function is only intended to work with forward merges. */ if (source->loc1->rev > source->loc2->rev) return SVN_NO_ERROR; /* Another easy out: There are no subtrees. */ if (children_with_mergeinfo->nelts < 2) return SVN_NO_ERROR; subtree_remaining_ranges = apr_array_make(scratch_pool, 1, sizeof(svn_merge_range_t *)); /* Given the requested merge of SOURCE->rev1:rev2 might there be any part of this range required for subtrees but not for the target? */ requested_ranges = svn_rangelist__initialize(MIN(source->loc1->rev, source->loc2->rev), MAX(source->loc1->rev, source->loc2->rev), TRUE, scratch_pool); SVN_ERR(svn_rangelist_remove(&subtree_gap_ranges, root_child->remaining_ranges, requested_ranges, FALSE, scratch_pool)); /* Early out, nothing to operate on */ if (!subtree_gap_ranges->nelts) return SVN_NO_ERROR; /* Create a rangelist describing every range required across all subtrees. */ iterpool = svn_pool_create(scratch_pool); for (i = 1; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); svn_pool_clear(iterpool); /* CHILD->REMAINING_RANGES will be NULL if child is absent. */ if (child->remaining_ranges && child->remaining_ranges->nelts) { /* Issue #4269: Keep track of the longest common ancestor of all the subtrees which require merges. This may be a child of TARGET->ABSPATH, which will allow us to narrow the log request below. */ if (longest_common_subtree_ancestor) longest_common_subtree_ancestor = svn_dirent_get_longest_ancestor( longest_common_subtree_ancestor, child->abspath, scratch_pool); else longest_common_subtree_ancestor = child->abspath; SVN_ERR(svn_rangelist_merge2(subtree_remaining_ranges, child->remaining_ranges, scratch_pool, iterpool)); } } svn_pool_destroy(iterpool); /* It's possible that none of the subtrees had any remaining ranges. */ if (!subtree_remaining_ranges->nelts) return SVN_NO_ERROR; /* Ok, *finally* we can answer what part(s) of SOURCE->rev1:rev2 are required for the subtrees but not the target. */ SVN_ERR(svn_rangelist_intersect(&subtree_gap_ranges, subtree_gap_ranges, subtree_remaining_ranges, FALSE, scratch_pool)); /* Another early out */ if (!subtree_gap_ranges->nelts) return SVN_NO_ERROR; /* One or more subtrees need some revisions that the target doesn't need. Use log to determine if any of these revisions are inoperative. */ oldest_gap_rev = APR_ARRAY_IDX(subtree_gap_ranges, 0, svn_merge_range_t *); youngest_gap_rev = APR_ARRAY_IDX(subtree_gap_ranges, subtree_gap_ranges->nelts - 1, svn_merge_range_t *); /* Set up the log baton. */ log_gap_baton.children_with_mergeinfo = children_with_mergeinfo; log_gap_baton.source_fspath = svn_client__pathrev_fspath(source->loc2, result_pool); log_gap_baton.target = target; log_gap_baton.merged_ranges = apr_array_make(scratch_pool, 0, sizeof(svn_revnum_t *)); log_gap_baton.operative_ranges = apr_array_make(scratch_pool, 0, sizeof(svn_revnum_t *)); log_gap_baton.pool = svn_pool_create(scratch_pool); /* Find the longest common ancestor of all subtrees relative to RA_SESSION's URL. */ if (longest_common_subtree_ancestor) longest_common_subtree_ancestor = svn_dirent_skip_ancestor(target->abspath, longest_common_subtree_ancestor); else longest_common_subtree_ancestor = ""; /* Invoke the svn_log_entry_receiver_t receiver log_noop_revs() from oldest to youngest. The receiver is optimized to add ranges to log_gap_baton.merged_ranges and log_gap_baton.operative_ranges, but requires that the revs arrive oldest to youngest -- see log_noop_revs() and rangelist_merge_revision(). */ err = get_log(ra_session, longest_common_subtree_ancestor, oldest_gap_rev->start + 1, youngest_gap_rev->end, TRUE, log_noop_revs, &log_gap_baton, scratch_pool); /* It's possible that the only subtrees with mergeinfo in TARGET don't have any corresponding subtree in SOURCE between SOURCE->REV1 < SOURCE->REV2. So it's also possible that we may ask for the logs of non-existent paths. If we do, then assume that no subtree requires any ranges that are not already required by the TARGET. */ if (err) { if (err->apr_err != SVN_ERR_FS_NOT_FOUND && longest_common_subtree_ancestor[0] != '\0') return svn_error_trace(err); /* Asked about a non-existent subtree in SOURCE. */ svn_error_clear(err); log_gap_baton.merged_ranges = svn_rangelist__initialize(oldest_gap_rev->start, youngest_gap_rev->end, TRUE, scratch_pool); } else { inoperative_ranges = svn_rangelist__initialize(oldest_gap_rev->start, youngest_gap_rev->end, TRUE, scratch_pool); SVN_ERR(svn_rangelist_remove(&(inoperative_ranges), log_gap_baton.operative_ranges, inoperative_ranges, FALSE, scratch_pool)); SVN_ERR(svn_rangelist_merge2(log_gap_baton.merged_ranges, inoperative_ranges, scratch_pool, scratch_pool)); } for (i = 1; i < children_with_mergeinfo->nelts; i++) { svn_client__merge_path_t *child = APR_ARRAY_IDX(children_with_mergeinfo, i, svn_client__merge_path_t *); /* CHILD->REMAINING_RANGES will be NULL if child is absent. */ if (child->remaining_ranges && child->remaining_ranges->nelts) { /* Remove inoperative ranges from all children so we don't perform inoperative editor drives. */ SVN_ERR(svn_rangelist_remove(&(child->remaining_ranges), log_gap_baton.merged_ranges, child->remaining_ranges, FALSE, result_pool)); } } svn_pool_destroy(log_gap_baton.pool); return SVN_NO_ERROR; } /* Perform a merge of changes in SOURCE to the working copy path TARGET_ABSPATH. Both URLs in SOURCE, and TARGET_ABSPATH all represent directories -- for the single file case, the caller should use do_file_merge(). CHILDREN_WITH_MERGEINFO and MERGE_B describe the merge being performed As this function is for a mergeinfo-aware merge, SOURCE->ancestral should be TRUE, and SOURCE->loc1 must be a historical ancestor of SOURCE->loc2, or vice-versa (see `MERGEINFO MERGE SOURCE NORMALIZATION' for more requirements around SOURCE). Mergeinfo changes will be recorded unless MERGE_B->dry_run is true. If mergeinfo is being recorded, SQUELCH_MERGEINFO_NOTIFICATIONS is FALSE, and MERGE_B->CTX->NOTIFY_FUNC2 is not NULL, then call MERGE_B->CTX->NOTIFY_FUNC2 with MERGE_B->CTX->NOTIFY_BATON2 and a svn_wc_notify_merge_record_info_begin notification before any mergeinfo changes are made to describe the merge performed. If mergeinfo is being recorded to describe this merge, and RESULT_CATALOG is not NULL, then don't record the new mergeinfo on the WC, but instead record it in RESULT_CATALOG, where the keys are absolute working copy paths and the values are the new mergeinfos for each. Allocate additions to RESULT_CATALOG in pool which RESULT_CATALOG was created in. Handle DEPTH as documented for svn_client_merge5(). CONFLICT_REPORT is as documented for do_directory_merge(). Perform any temporary allocations in SCRATCH_POOL. NOTE: This is a wrapper around drive_merge_report_editor() which handles the complexities inherent to situations where a given directory's children may have intersecting merges (because they meet one or more of the criteria described in get_mergeinfo_paths()). */ static svn_error_t * do_mergeinfo_aware_dir_merge(svn_mergeinfo_catalog_t result_catalog, single_range_conflict_report_t **conflict_report, const merge_source_t *source, const char *target_abspath, apr_array_header_t *children_with_mergeinfo, const svn_diff_tree_processor_t *processor, svn_depth_t depth, svn_boolean_t squelch_mergeinfo_notifications, merge_cmd_baton_t *merge_b, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { /* The range defining the mergeinfo we will record to describe the merge (assuming we are recording mergeinfo Note: This may be a subset of SOURCE->rev1:rev2 if populate_remaining_ranges() determines that some part of SOURCE->rev1:rev2 has already been wholly merged to TARGET_ABSPATH. Also, the actual editor drive(s) may be a subset of RANGE, if remove_noop_subtree_ranges() and/or fix_deleted_subtree_ranges() further tweak things. */ svn_merge_range_t range; svn_ra_session_t *ra_session; svn_client__merge_path_t *target_merge_path; svn_boolean_t is_rollback = (source->loc1->rev > source->loc2->rev); SVN_ERR_ASSERT(source->ancestral); /*** If we get here, we're dealing with related sources from the same repository as the target -- merge tracking might be happenin'! ***/ *conflict_report = NULL; /* Point our RA_SESSION to the URL of our youngest merge source side. */ ra_session = is_rollback ? merge_b->ra_session1 : merge_b->ra_session2; /* Fill CHILDREN_WITH_MERGEINFO with child paths (const svn_client__merge_path_t *) which might have intersecting merges because they meet one or more of the criteria described in get_mergeinfo_paths(). Here the paths are arranged in a depth first order. */ SVN_ERR(get_mergeinfo_paths(children_with_mergeinfo, merge_b->target, depth, merge_b->dry_run, merge_b->same_repos, merge_b->ctx, scratch_pool, scratch_pool)); /* The first item from the CHILDREN_WITH_MERGEINFO is always the target thanks to depth-first ordering. */ target_merge_path = APR_ARRAY_IDX(children_with_mergeinfo, 0, svn_client__merge_path_t *); /* If we are honoring mergeinfo, then for each item in CHILDREN_WITH_MERGEINFO, we need to calculate what needs to be merged, and then merge it. Otherwise, we just merge what we were asked to merge across the whole tree. */ SVN_ERR(populate_remaining_ranges(children_with_mergeinfo, source, ra_session, merge_b, scratch_pool, scratch_pool)); /* Always start with a range which describes the most inclusive merge possible, i.e. SOURCE->rev1:rev2. */ range.start = source->loc1->rev; range.end = source->loc2->rev; range.inheritable = TRUE; if (!merge_b->reintegrate_merge) { svn_revnum_t new_range_start, start_rev; apr_pool_t *iterpool = svn_pool_create(scratch_pool); /* The merge target TARGET_ABSPATH and/or its subtrees may not need all of SOURCE->rev1:rev2 applied. So examine CHILDREN_WITH_MERGEINFO to find the oldest starting revision that actually needs to be merged (for reverse merges this is the youngest starting revision). We'll do this twice, right now for the start of the mergeinfo we will ultimately record to describe this merge and then later for the start of the actual editor drive. */ new_range_start = get_most_inclusive_rev( children_with_mergeinfo, is_rollback, TRUE); if (SVN_IS_VALID_REVNUM(new_range_start)) range.start = new_range_start; /* Remove inoperative ranges from any subtrees' remaining_ranges to spare the expense of noop editor drives. */ if (!is_rollback) SVN_ERR(remove_noop_subtree_ranges(source, merge_b->target, ra_session, children_with_mergeinfo, scratch_pool, iterpool)); /* Adjust subtrees' remaining_ranges to deal with issue #3067: * "subtrees that don't exist at the start or end of a merge range * shouldn't break the merge". */ SVN_ERR(fix_deleted_subtree_ranges(source, merge_b->target, ra_session, children_with_mergeinfo, merge_b->ctx, scratch_pool, iterpool)); /* remove_noop_subtree_ranges() and/or fix_deleted_subtree_range() may have further refined the starting revision for our editor drive. */ start_rev = get_most_inclusive_rev(children_with_mergeinfo, is_rollback, TRUE); /* Is there anything to merge? */ if (SVN_IS_VALID_REVNUM(start_rev)) { /* Now examine CHILDREN_WITH_MERGEINFO to find the oldest ending revision that actually needs to be merged (for reverse merges this is the youngest ending revision). */ svn_revnum_t end_rev = get_most_inclusive_rev(children_with_mergeinfo, is_rollback, FALSE); /* While END_REV is valid, do the following: 1. Tweak each CHILDREN_WITH_MERGEINFO element so that the element's remaining_ranges member has as its first element a range that ends with end_rev. 2. Starting with start_rev, call drive_merge_report_editor() on MERGE_B->target->abspath for start_rev:end_rev. 3. Remove the first element from each CHILDREN_WITH_MERGEINFO element's remaining_ranges member. 4. Again examine CHILDREN_WITH_MERGEINFO to find the most inclusive starting revision that actually needs to be merged and update start_rev. This prevents us from needlessly contacting the repository and doing a diff where we describe the entire target tree as *not* needing any of the requested range. This can happen whenever we have mergeinfo with gaps in it for the merge source. 5. Again examine CHILDREN_WITH_MERGEINFO to find the most inclusive ending revision that actually needs to be merged and update end_rev. 6. Lather, rinse, repeat. */ while (end_rev != SVN_INVALID_REVNUM) { merge_source_t *real_source; svn_merge_range_t *first_target_range = (target_merge_path->remaining_ranges->nelts == 0 ? NULL : APR_ARRAY_IDX(target_merge_path->remaining_ranges, 0, svn_merge_range_t *)); /* Issue #3324: Stop editor abuse! Don't call drive_merge_report_editor() in such a way that we request an editor with svn_client__get_diff_editor() for some rev X, then call svn_ra_do_diff3() for some revision Y, and then call reporter->set_path(PATH=="") to set the root revision for the editor drive to revision Z where (X != Z && X < Z < Y). This is bogus because the server will send us the diff between X:Y but the client is expecting the diff between Y:Z. See issue #3324 for full details on the problems this can cause. */ if (first_target_range && start_rev != first_target_range->start) { if (is_rollback) { if (end_rev < first_target_range->start) end_rev = first_target_range->start; } else { if (end_rev > first_target_range->start) end_rev = first_target_range->start; } } svn_pool_clear(iterpool); SVN_ERR(slice_remaining_ranges(children_with_mergeinfo, is_rollback, end_rev, scratch_pool)); /* Reset variables that must be reset for every drive */ merge_b->notify_begin.last_abspath = NULL; real_source = subrange_source(source, start_rev, end_rev, iterpool); SVN_ERR(drive_merge_report_editor( merge_b->target->abspath, real_source, children_with_mergeinfo, processor, depth, merge_b, iterpool)); /* If any paths picked up explicit mergeinfo as a result of the merge we need to make sure any mergeinfo those paths inherited is recorded and then add these paths to CHILDREN_WITH_MERGEINFO.*/ SVN_ERR(process_children_with_new_mergeinfo( merge_b, children_with_mergeinfo, scratch_pool)); /* If any subtrees had their explicit mergeinfo deleted as a result of the merge then remove these paths from CHILDREN_WITH_MERGEINFO since there is no need to consider these subtrees for subsequent editor drives nor do we want to record mergeinfo on them describing the merge itself. */ SVN_ERR(remove_children_with_deleted_mergeinfo( merge_b, children_with_mergeinfo)); /* Prepare for the next iteration (if any). */ SVN_ERR(remove_first_range_from_remaining_ranges( end_rev, children_with_mergeinfo, scratch_pool)); /* If we raised any conflicts, break out and report how much we have merged. */ if (is_path_conflicted_by_merge(merge_b)) { merge_source_t *remaining_range = NULL; if (real_source->loc2->rev != source->loc2->rev) remaining_range = subrange_source(source, real_source->loc2->rev, source->loc2->rev, scratch_pool); *conflict_report = single_range_conflict_report_create( real_source, remaining_range, result_pool); range.end = end_rev; break; } start_rev = get_most_inclusive_rev(children_with_mergeinfo, is_rollback, TRUE); end_rev = get_most_inclusive_rev(children_with_mergeinfo, is_rollback, FALSE); } } svn_pool_destroy(iterpool); } else { if (!merge_b->record_only) { /* Reset the last notification path so that subsequent cherry picked revision ranges will be notified upon subsequent operative merge. */ merge_b->notify_begin.last_abspath = NULL; SVN_ERR(drive_merge_report_editor(merge_b->target->abspath, source, NULL, processor, depth, merge_b, scratch_pool)); } } /* Record mergeinfo where appropriate.*/ if (RECORD_MERGEINFO(merge_b)) { const svn_client__pathrev_t *primary_src = is_rollback ? source->loc1 : source->loc2; const char *mergeinfo_path = svn_client__pathrev_fspath(primary_src, scratch_pool); SVN_ERR(record_mergeinfo_for_dir_merge(result_catalog, &range, mergeinfo_path, children_with_mergeinfo, depth, squelch_mergeinfo_notifications, merge_b, scratch_pool)); /* If a path has an immediate parent with non-inheritable mergeinfo at this point, then it meets criteria 3 or 5 described in get_mergeinfo_paths' doc string. For paths which exist prior to a merge explicit mergeinfo has already been set. But for paths added during the merge this is not the case. The path might have explicit mergeinfo from the merge source, but no mergeinfo yet exists describing *this* merge. So the added path has either incomplete explicit mergeinfo or inherits incomplete mergeinfo from its immediate parent (if any, the parent might have only non-inheritable ranges in which case the path simply inherits empty mergeinfo). So here we look at the root path of each subtree added during the merge and set explicit mergeinfo on it if it meets the aforementioned conditions. */ if (range.start < range.end) /* Nothing to record on added subtrees resulting from reverse merges. */ { SVN_ERR(record_mergeinfo_for_added_subtrees( &range, mergeinfo_path, depth, squelch_mergeinfo_notifications, merge_b->added_abspaths, merge_b, scratch_pool)); } } return SVN_NO_ERROR; } /* Helper for do_merge() when the merge target is a directory. * * If any conflict is raised during the merge, set *CONFLICTED_RANGE to * the revision sub-range that raised the conflict. In this case, the * merge will have ended at revision CONFLICTED_RANGE and mergeinfo will * have been recorded for all revision sub-ranges up to and including * CONFLICTED_RANGE. Otherwise, set *CONFLICTED_RANGE to NULL. */ static svn_error_t * do_directory_merge(svn_mergeinfo_catalog_t result_catalog, single_range_conflict_report_t **conflict_report, const merge_source_t *source, const char *target_abspath, const svn_diff_tree_processor_t *processor, svn_depth_t depth, svn_boolean_t squelch_mergeinfo_notifications, merge_cmd_baton_t *merge_b, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_array_header_t *children_with_mergeinfo; /* Initialize CHILDREN_WITH_MERGEINFO. See the comment 'THE CHILDREN_WITH_MERGEINFO ARRAY' at the start of this file. */ children_with_mergeinfo = apr_array_make(scratch_pool, 16, sizeof(svn_client__merge_path_t *)); /* And make it read-only accessible from the baton */ merge_b->children_with_mergeinfo = children_with_mergeinfo; /* If we are not honoring mergeinfo we can skip right to the business of merging changes! */ if (HONOR_MERGEINFO(merge_b)) SVN_ERR(do_mergeinfo_aware_dir_merge(result_catalog, conflict_report, source, target_abspath, children_with_mergeinfo, processor, depth, squelch_mergeinfo_notifications, merge_b, result_pool, scratch_pool)); else SVN_ERR(do_mergeinfo_unaware_dir_merge(conflict_report, source, target_abspath, children_with_mergeinfo, processor, depth, merge_b, result_pool, scratch_pool)); merge_b->children_with_mergeinfo = NULL; return SVN_NO_ERROR; } /** Ensure that *RA_SESSION is opened to URL, either by reusing * *RA_SESSION if it is non-null and already opened to URL's * repository, or by allocating a new *RA_SESSION in POOL. * (RA_SESSION itself cannot be null, of course.) * * CTX is used as for svn_client_open_ra_session(). */ static svn_error_t * ensure_ra_session_url(svn_ra_session_t **ra_session, const char *url, const char *wri_abspath, svn_client_ctx_t *ctx, apr_pool_t *pool) { svn_error_t *err = SVN_NO_ERROR; if (*ra_session) { err = svn_ra_reparent(*ra_session, url, pool); } /* SVN_ERR_RA_ILLEGAL_URL is raised when url doesn't point to the same repository as ra_session. */ if (! *ra_session || (err && err->apr_err == SVN_ERR_RA_ILLEGAL_URL)) { svn_error_clear(err); err = svn_client_open_ra_session2(ra_session, url, wri_abspath, ctx, pool, pool); } SVN_ERR(err); return SVN_NO_ERROR; } /* Drive a merge of MERGE_SOURCES into working copy node TARGET and possibly record mergeinfo describing the merge -- see RECORD_MERGEINFO(). If MODIFIED_SUBTREES is not NULL and all the MERGE_SOURCES are 'ancestral' or REINTEGRATE_MERGE is true, then replace *MODIFIED_SUBTREES with a new hash containing all the paths that *MODIFIED_SUBTREES contained before, and also every path modified, skipped, added, or tree-conflicted by the merge. Keys and values of the hash are both (const char *) absolute paths. The contents of the hash are allocated in RESULT_POOL. If the merge raises any conflicts while merging a revision range, return early and set *CONFLICT_REPORT to describe the details. (In this case, notify that the merge is complete if and only if this was the last revision range of the merge.) If there are no conflicts, set *CONFLICT_REPORT to NULL. A revision range here can be one specified in MERGE_SOURCES or an internally generated sub-range of one of those when merge tracking is in use. For every (const merge_source_t *) merge source in MERGE_SOURCES, if SOURCE->ANCESTRAL is set, then the "left" and "right" side are ancestrally related. (See 'MERGEINFO MERGE SOURCE NORMALIZATION' for more on what that means and how it matters.) If SOURCES_RELATED is set, the "left" and "right" sides of the merge source are historically related (ancestors, uncles, second cousins thrice removed, etc...). (This is passed through to do_file_merge() to simulate the history checks that the repository logic does in the directory case.) SAME_REPOS is TRUE iff the merge sources live in the same repository as the one from which the target working copy has been checked out. If mergeinfo is being recorded, SQUELCH_MERGEINFO_NOTIFICATIONS is FALSE, and CTX->NOTIFY_FUNC2 is not NULL, then call CTX->NOTIFY_FUNC2 with CTX->NOTIFY_BATON2 and a svn_wc_notify_merge_record_info_begin notification before any mergeinfo changes are made to describe the merge performed. If mergeinfo is being recorded to describe this merge, and RESULT_CATALOG is not NULL, then don't record the new mergeinfo on the WC, but instead record it in RESULT_CATALOG, where the keys are absolute working copy paths and the values are the new mergeinfos for each. Allocate additions to RESULT_CATALOG in pool which RESULT_CATALOG was created in. FORCE_DELETE, DRY_RUN, RECORD_ONLY, DEPTH, MERGE_OPTIONS, and CTX are as described in the docstring for svn_client_merge_peg3(). If IGNORE_MERGEINFO is true, disable merge tracking, by treating the two sources as unrelated even if they actually have a common ancestor. See the macro HONOR_MERGEINFO(). If DIFF_IGNORE_ANCESTRY is true, diff the 'left' and 'right' versions of a node (if they are the same kind) as if they were related, even if they are not related. Otherwise, diff unrelated items as a deletion of one thing and the addition of another. If not NULL, RECORD_ONLY_PATHS is a hash of (const char *) paths mapped to the same. If RECORD_ONLY is true and RECORD_ONLY_PATHS is not NULL, then record mergeinfo describing the merge only on subtrees which contain items from RECORD_ONLY_PATHS. If RECORD_ONLY is true and RECORD_ONLY_PATHS is NULL, then record mergeinfo on every subtree with mergeinfo in TARGET. REINTEGRATE_MERGE is TRUE if this is a reintegrate merge. *USE_SLEEP will be set TRUE if a sleep is required to ensure timestamp integrity, *USE_SLEEP will be unchanged if no sleep is required. SCRATCH_POOL is used for all temporary allocations. */ static svn_error_t * do_merge(apr_hash_t **modified_subtrees, svn_mergeinfo_catalog_t result_catalog, svn_client__conflict_report_t **conflict_report, svn_boolean_t *use_sleep, const apr_array_header_t *merge_sources, const merge_target_t *target, svn_ra_session_t *src_session, svn_boolean_t sources_related, svn_boolean_t same_repos, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t dry_run, svn_boolean_t record_only, apr_hash_t *record_only_paths, svn_boolean_t reintegrate_merge, svn_boolean_t squelch_mergeinfo_notifications, svn_depth_t depth, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_cmd_baton_t merge_cmd_baton = { 0 }; svn_config_t *cfg; const char *diff3_cmd; const char *preserved_exts_str; int i; svn_boolean_t checked_mergeinfo_capability = FALSE; svn_ra_session_t *ra_session1 = NULL, *ra_session2 = NULL; const char *old_src_session_url = NULL; apr_pool_t *iterpool; const svn_diff_tree_processor_t *processor; SVN_ERR_ASSERT(svn_dirent_is_absolute(target->abspath)); *conflict_report = NULL; /* Check from some special conditions when in record-only mode (which is a merge-tracking thing). */ if (record_only) { svn_boolean_t sources_ancestral = TRUE; int j; /* Find out whether all of the sources are 'ancestral'. */ for (j = 0; j < merge_sources->nelts; j++) if (! APR_ARRAY_IDX(merge_sources, j, merge_source_t *)->ancestral) { sources_ancestral = FALSE; break; } /* We can't do a record-only merge if the sources aren't related. */ if (! sources_ancestral) return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("Use of two URLs is not compatible with " "mergeinfo modification")); /* We can't do a record-only merge if the sources aren't from the same repository as the target. */ if (! same_repos) return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("Merge from foreign repository is not " "compatible with mergeinfo modification")); /* If this is a dry-run record-only merge, there's nothing to do. */ if (dry_run) return SVN_NO_ERROR; } iterpool = svn_pool_create(scratch_pool); /* Ensure a known depth. */ if (depth == svn_depth_unknown) depth = svn_depth_infinity; /* Set up the diff3 command, so various callers don't have to. */ cfg = ctx->config ? svn_hash_gets(ctx->config, SVN_CONFIG_CATEGORY_CONFIG) : NULL; svn_config_get(cfg, &diff3_cmd, SVN_CONFIG_SECTION_HELPERS, SVN_CONFIG_OPTION_DIFF3_CMD, NULL); if (diff3_cmd != NULL) SVN_ERR(svn_path_cstring_to_utf8(&diff3_cmd, diff3_cmd, scratch_pool)); /* See which files the user wants to preserve the extension of when conflict files are made. */ svn_config_get(cfg, &preserved_exts_str, SVN_CONFIG_SECTION_MISCELLANY, SVN_CONFIG_OPTION_PRESERVED_CF_EXTS, ""); /* Build the merge context baton (or at least the parts of it that don't need to be reset for each merge source). */ merge_cmd_baton.force_delete = force_delete; merge_cmd_baton.dry_run = dry_run; merge_cmd_baton.record_only = record_only; merge_cmd_baton.ignore_mergeinfo = ignore_mergeinfo; merge_cmd_baton.diff_ignore_ancestry = diff_ignore_ancestry; merge_cmd_baton.same_repos = same_repos; merge_cmd_baton.mergeinfo_capable = FALSE; merge_cmd_baton.ctx = ctx; merge_cmd_baton.reintegrate_merge = reintegrate_merge; merge_cmd_baton.target = target; merge_cmd_baton.pool = iterpool; merge_cmd_baton.merge_options = merge_options; merge_cmd_baton.diff3_cmd = diff3_cmd; merge_cmd_baton.ext_patterns = *preserved_exts_str ? svn_cstring_split(preserved_exts_str, "\n\r\t\v ", FALSE, scratch_pool) : NULL; merge_cmd_baton.use_sleep = use_sleep; /* Do we already know the specific subtrees with mergeinfo we want to record-only mergeinfo on? */ if (record_only && record_only_paths) merge_cmd_baton.merged_abspaths = record_only_paths; else merge_cmd_baton.merged_abspaths = apr_hash_make(result_pool); merge_cmd_baton.skipped_abspaths = apr_hash_make(result_pool); merge_cmd_baton.added_abspaths = apr_hash_make(result_pool); merge_cmd_baton.tree_conflicted_abspaths = apr_hash_make(result_pool); merge_cmd_baton.notify_func = notify_merging; merge_cmd_baton.notify_baton = &merge_cmd_baton.notify_begin; merge_cmd_baton.notify_begin.merge_b = &merge_cmd_baton; merge_cmd_baton.notify_begin.notify_func2 = ctx->notify_func2; merge_cmd_baton.notify_begin.notify_baton2 = ctx->notify_baton2; processor = merge_apply_processor(&merge_cmd_baton, scratch_pool); if (src_session) { SVN_ERR(svn_ra_get_session_url(src_session, &old_src_session_url, scratch_pool)); ra_session1 = src_session; } for (i = 0; i < merge_sources->nelts; i++) { svn_node_kind_t src1_kind; merge_source_t *source = APR_ARRAY_IDX(merge_sources, i, merge_source_t *); single_range_conflict_report_t *conflicted_range_report; svn_pool_clear(iterpool); /* Sanity check: if our left- and right-side merge sources are the same, there's nothing to here. */ if ((strcmp(source->loc1->url, source->loc2->url) == 0) && (source->loc1->rev == source->loc2->rev)) continue; /* Establish RA sessions to our URLs, reuse where possible. */ SVN_ERR(ensure_ra_session_url(&ra_session1, source->loc1->url, target->abspath, ctx, scratch_pool)); SVN_ERR(ensure_ra_session_url(&ra_session2, source->loc2->url, target->abspath, ctx, scratch_pool)); /* Populate the portions of the merge context baton that need to be reset for each merge source iteration. */ merge_cmd_baton.merge_source = *source; merge_cmd_baton.implicit_src_gap = NULL; merge_cmd_baton.conflicted_paths = NULL; merge_cmd_baton.paths_with_new_mergeinfo = NULL; merge_cmd_baton.paths_with_deleted_mergeinfo = NULL; merge_cmd_baton.ra_session1 = ra_session1; merge_cmd_baton.ra_session2 = ra_session2; merge_cmd_baton.notify_begin.last_abspath = NULL; /* Populate the portions of the merge context baton that require an RA session to set, but shouldn't be reset for each iteration. */ if (! checked_mergeinfo_capability) { SVN_ERR(svn_ra_has_capability(ra_session1, &merge_cmd_baton.mergeinfo_capable, SVN_RA_CAPABILITY_MERGEINFO, iterpool)); checked_mergeinfo_capability = TRUE; } SVN_ERR(svn_ra_check_path(ra_session1, "", source->loc1->rev, &src1_kind, iterpool)); /* Run the merge; if there are conflicts, allow the callback to * resolve them, and if it resolves all of them, then run the * merge again with the remaining revision range, until it is all * done. */ do { /* Merge as far as possible without resolving any conflicts */ if (src1_kind != svn_node_dir) { SVN_ERR(do_file_merge(result_catalog, &conflicted_range_report, source, target->abspath, processor, sources_related, squelch_mergeinfo_notifications, &merge_cmd_baton, iterpool, iterpool)); } else /* Directory */ { SVN_ERR(do_directory_merge(result_catalog, &conflicted_range_report, source, target->abspath, processor, depth, squelch_mergeinfo_notifications, &merge_cmd_baton, iterpool, iterpool)); } /* Give the conflict resolver callback the opportunity to * resolve any conflicts that were raised. If it resolves all * of them, go around again to merge the next sub-range (if any). */ if (conflicted_range_report && ctx->conflict_func2 && ! dry_run) { svn_boolean_t conflicts_remain; SVN_ERR(svn_client__resolve_conflicts( &conflicts_remain, merge_cmd_baton.conflicted_paths, ctx, iterpool)); if (conflicts_remain) break; merge_cmd_baton.conflicted_paths = NULL; /* Caution: this source is in iterpool */ source = conflicted_range_report->remaining_source; conflicted_range_report = NULL; } else break; } while (source); /* The final mergeinfo on TARGET_WCPATH may itself elide. */ if (! dry_run) SVN_ERR(svn_client__elide_mergeinfo(target->abspath, NULL, ctx, iterpool)); /* If conflicts occurred while merging any but the very last * range of a multi-pass merge, we raise an error that aborts * the merge. The user will be asked to resolve conflicts * before merging subsequent revision ranges. */ if (conflicted_range_report) { *conflict_report = conflict_report_create( target->abspath, conflicted_range_report->conflicted_range, (i == merge_sources->nelts - 1 && ! conflicted_range_report->remaining_source), result_pool); break; } } if (! *conflict_report || (*conflict_report)->was_last_range) { /* Let everyone know we're finished here. */ notify_merge_completed(target->abspath, ctx, iterpool); } /* Does the caller want to know what the merge has done? */ if (modified_subtrees) { *modified_subtrees = apr_hash_overlay(result_pool, *modified_subtrees, merge_cmd_baton.merged_abspaths); *modified_subtrees = apr_hash_overlay(result_pool, *modified_subtrees, merge_cmd_baton.added_abspaths); *modified_subtrees = apr_hash_overlay(result_pool, *modified_subtrees, merge_cmd_baton.skipped_abspaths); *modified_subtrees = apr_hash_overlay(result_pool, *modified_subtrees, merge_cmd_baton.tree_conflicted_abspaths); } if (src_session) SVN_ERR(svn_ra_reparent(src_session, old_src_session_url, iterpool)); svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Perform a two-URL merge between URLs which are related, but neither is a direct ancestor of the other. This first does a real two-URL merge (unless this is record-only), followed by record-only merges to represent the changed mergeinfo. Set *CONFLICT_REPORT to indicate if there were any conflicts, as in do_merge(). The diff to be merged is between SOURCE->loc1 (in URL1_RA_SESSION1) and SOURCE->loc2 (in URL2_RA_SESSION2); YCA is their youngest common ancestor. SAME_REPOS must be true if and only if the source URLs are in the same repository as the target working copy. DIFF_IGNORE_ANCESTRY is as in do_merge(). Other arguments are as in all of the public merge APIs. *USE_SLEEP will be set TRUE if a sleep is required to ensure timestamp integrity, *USE_SLEEP will be unchanged if no sleep is required. SCRATCH_POOL is used for all temporary allocations. */ static svn_error_t * merge_cousins_and_supplement_mergeinfo( svn_client__conflict_report_t **conflict_report, svn_boolean_t *use_sleep, const merge_target_t *target, svn_ra_session_t *URL1_ra_session, svn_ra_session_t *URL2_ra_session, const merge_source_t *source, const svn_client__pathrev_t *yca, svn_boolean_t same_repos, svn_depth_t depth, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_array_header_t *remove_sources, *add_sources; apr_hash_t *modified_subtrees = NULL; /* Sure we could use SCRATCH_POOL throughout this function, but since this is a wrapper around three separate merges we'll create a subpool we can clear between each of the three. If the merge target has a lot of subtree mergeinfo, then this will help keep memory use in check. */ apr_pool_t *subpool = svn_pool_create(scratch_pool); assert(session_url_is(URL1_ra_session, source->loc1->url, scratch_pool)); assert(session_url_is(URL2_ra_session, source->loc2->url, scratch_pool)); SVN_ERR_ASSERT(svn_dirent_is_absolute(target->abspath)); SVN_ERR_ASSERT(! source->ancestral); SVN_ERR(normalize_merge_sources_internal( &remove_sources, source->loc1, svn_rangelist__initialize(source->loc1->rev, yca->rev, TRUE, scratch_pool), URL1_ra_session, ctx, scratch_pool, subpool)); SVN_ERR(normalize_merge_sources_internal( &add_sources, source->loc2, svn_rangelist__initialize(yca->rev, source->loc2->rev, TRUE, scratch_pool), URL2_ra_session, ctx, scratch_pool, subpool)); *conflict_report = NULL; /* If this isn't a record-only merge, we'll first do a stupid point-to-point merge... */ if (! record_only) { apr_array_header_t *faux_sources = apr_array_make(scratch_pool, 1, sizeof(merge_source_t *)); modified_subtrees = apr_hash_make(scratch_pool); APR_ARRAY_PUSH(faux_sources, const merge_source_t *) = source; SVN_ERR(do_merge(&modified_subtrees, NULL, conflict_report, use_sleep, faux_sources, target, URL1_ra_session, TRUE, same_repos, FALSE /*ignore_mergeinfo*/, diff_ignore_ancestry, force_delete, dry_run, FALSE, NULL, TRUE, FALSE, depth, merge_options, ctx, scratch_pool, subpool)); if (*conflict_report) { *conflict_report = conflict_report_dup(*conflict_report, result_pool); if (! (*conflict_report)->was_last_range) return SVN_NO_ERROR; } } else if (! same_repos) { return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("Merge from foreign repository is not " "compatible with mergeinfo modification")); } /* ... and now, if we're doing the mergeinfo thang, we execute a pair of record-only merges using the real sources we've calculated. Issue #3648: We don't actually perform these two record-only merges on the WC at first, but rather see what each would do and store that in two mergeinfo catalogs. We then merge the catalogs together and then record the result in the WC. This prevents the second record only merge from removing legitimate mergeinfo history, from the same source, that was made in prior merges. */ if (same_repos && !dry_run) { svn_mergeinfo_catalog_t add_result_catalog = apr_hash_make(scratch_pool); svn_mergeinfo_catalog_t remove_result_catalog = apr_hash_make(scratch_pool); notify_mergeinfo_recording(target->abspath, NULL, ctx, scratch_pool); svn_pool_clear(subpool); SVN_ERR(do_merge(NULL, add_result_catalog, conflict_report, use_sleep, add_sources, target, URL1_ra_session, TRUE, same_repos, FALSE /*ignore_mergeinfo*/, diff_ignore_ancestry, force_delete, dry_run, TRUE, modified_subtrees, TRUE, TRUE, depth, merge_options, ctx, scratch_pool, subpool)); if (*conflict_report) { *conflict_report = conflict_report_dup(*conflict_report, result_pool); if (! (*conflict_report)->was_last_range) return SVN_NO_ERROR; } svn_pool_clear(subpool); SVN_ERR(do_merge(NULL, remove_result_catalog, conflict_report, use_sleep, remove_sources, target, URL1_ra_session, TRUE, same_repos, FALSE /*ignore_mergeinfo*/, diff_ignore_ancestry, force_delete, dry_run, TRUE, modified_subtrees, TRUE, TRUE, depth, merge_options, ctx, scratch_pool, subpool)); if (*conflict_report) { *conflict_report = conflict_report_dup(*conflict_report, result_pool); if (! (*conflict_report)->was_last_range) return SVN_NO_ERROR; } SVN_ERR(svn_mergeinfo_catalog_merge(add_result_catalog, remove_result_catalog, scratch_pool, scratch_pool)); SVN_ERR(svn_client__record_wc_mergeinfo_catalog(add_result_catalog, ctx, scratch_pool)); } svn_pool_destroy(subpool); return SVN_NO_ERROR; } /* Perform checks to determine whether the working copy at TARGET_ABSPATH * can safely be used as a merge target. Checks are performed according to * the ALLOW_MIXED_REV, ALLOW_LOCAL_MODS, and ALLOW_SWITCHED_SUBTREES * parameters. If any checks fail, raise SVN_ERR_CLIENT_NOT_READY_TO_MERGE. * * E.g. if all the ALLOW_* parameters are FALSE, TARGET_ABSPATH must * be a single-revision, pristine, unswitched working copy. * In other words, it must reflect a subtree of the repository as found * at single revision -- although sparse checkouts are permitted. */ static svn_error_t * ensure_wc_is_suitable_merge_target(const char *target_abspath, svn_client_ctx_t *ctx, svn_boolean_t allow_mixed_rev, svn_boolean_t allow_local_mods, svn_boolean_t allow_switched_subtrees, apr_pool_t *scratch_pool) { svn_node_kind_t target_kind; /* Check the target exists. */ SVN_ERR(svn_io_check_path(target_abspath, &target_kind, scratch_pool)); if (target_kind == svn_node_none) return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND, NULL, _("Path '%s' does not exist"), svn_dirent_local_style(target_abspath, scratch_pool)); SVN_ERR(svn_wc_read_kind2(&target_kind, ctx->wc_ctx, target_abspath, FALSE, FALSE, scratch_pool)); if (target_kind != svn_node_dir && target_kind != svn_node_file) return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Merge target '%s' does not exist in the " "working copy"), target_abspath); /* Perform the mixed-revision check first because it's the cheapest one. */ if (! allow_mixed_rev) { svn_revnum_t min_rev; svn_revnum_t max_rev; SVN_ERR(svn_client_min_max_revisions(&min_rev, &max_rev, target_abspath, FALSE, ctx, scratch_pool)); if (!(SVN_IS_VALID_REVNUM(min_rev) && SVN_IS_VALID_REVNUM(max_rev))) { svn_boolean_t is_added; /* Allow merge into added nodes. */ SVN_ERR(svn_wc__node_is_added(&is_added, ctx->wc_ctx, target_abspath, scratch_pool)); if (is_added) return SVN_NO_ERROR; else return svn_error_create(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("Cannot determine revision of working " "copy")); } if (min_rev != max_rev) return svn_error_createf(SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED, NULL, _("Cannot merge into mixed-revision working " "copy [%ld:%ld]; try updating first"), min_rev, max_rev); } /* Next, check for switched subtrees. */ if (! allow_switched_subtrees) { svn_boolean_t is_switched; SVN_ERR(svn_wc__has_switched_subtrees(&is_switched, ctx->wc_ctx, target_abspath, NULL, scratch_pool)); if (is_switched) return svn_error_create(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("Cannot merge into a working copy " "with a switched subtree")); } /* This is the most expensive check, so it is performed last.*/ if (! allow_local_mods) { svn_boolean_t is_modified; SVN_ERR(svn_wc__has_local_mods(&is_modified, ctx->wc_ctx, target_abspath, TRUE, ctx->cancel_func, ctx->cancel_baton, scratch_pool)); if (is_modified) return svn_error_create(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("Cannot merge into a working copy " "that has local modifications")); } return SVN_NO_ERROR; } /* Throw an error if PATH_OR_URL is a path and REVISION isn't a repository * revision. */ static svn_error_t * ensure_wc_path_has_repo_revision(const char *path_or_url, const svn_opt_revision_t *revision, apr_pool_t *scratch_pool) { if (revision->kind != svn_opt_revision_number && revision->kind != svn_opt_revision_date && revision->kind != svn_opt_revision_head && ! svn_path_is_url(path_or_url)) return svn_error_createf( SVN_ERR_CLIENT_BAD_REVISION, NULL, _("Invalid merge source '%s'; a working copy path can only be " "used with a repository revision (a number, a date, or head)"), svn_dirent_local_style(path_or_url, scratch_pool)); return SVN_NO_ERROR; } /* "Open" the target WC for a merge. That means: * - find out its exact repository location * - check the WC for suitability (throw an error if unsuitable) * * Set *TARGET_P to a new, fully initialized, target description structure. * * ALLOW_MIXED_REV, ALLOW_LOCAL_MODS, ALLOW_SWITCHED_SUBTREES determine * whether the WC is deemed suitable; see ensure_wc_is_suitable_merge_target() * for details. * * If the node is locally added, the rev and URL will be null/invalid. Some * kinds of merge can use such a target; others can't. */ static svn_error_t * open_target_wc(merge_target_t **target_p, const char *wc_abspath, svn_boolean_t allow_mixed_rev, svn_boolean_t allow_local_mods, svn_boolean_t allow_switched_subtrees, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_target_t *target = apr_palloc(result_pool, sizeof(*target)); svn_client__pathrev_t *origin; target->abspath = apr_pstrdup(result_pool, wc_abspath); SVN_ERR(svn_client__wc_node_get_origin(&origin, wc_abspath, ctx, result_pool, scratch_pool)); if (origin) { target->loc = *origin; } else { svn_error_t *err; /* The node has no location in the repository. It's unversioned or * locally added or locally deleted. * * If it's locally added or deleted, find the repository root * URL and UUID anyway, and leave the node URL and revision as NULL * and INVALID. If it's unversioned, this will throw an error. */ err = svn_wc__node_get_repos_info(NULL, NULL, &target->loc.repos_root_url, &target->loc.repos_uuid, ctx->wc_ctx, wc_abspath, result_pool, scratch_pool); if (err) { if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND && err->apr_err != SVN_ERR_WC_NOT_WORKING_COPY && err->apr_err != SVN_ERR_WC_UPGRADE_REQUIRED) return svn_error_trace(err); return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, err, _("Merge target '%s' does not exist in the " "working copy"), svn_dirent_local_style(wc_abspath, scratch_pool)); } target->loc.rev = SVN_INVALID_REVNUM; target->loc.url = NULL; } SVN_ERR(ensure_wc_is_suitable_merge_target( wc_abspath, ctx, allow_mixed_rev, allow_local_mods, allow_switched_subtrees, scratch_pool)); *target_p = target; return SVN_NO_ERROR; } /*-----------------------------------------------------------------------*/ /*** Public APIs ***/ /* The body of svn_client_merge5(), which see for details. * * If SOURCE1 @ REVISION1 is related to SOURCE2 @ REVISION2 then use merge * tracking (subject to other constraints -- see HONOR_MERGEINFO()); * otherwise disable merge tracking. * * IGNORE_MERGEINFO and DIFF_IGNORE_ANCESTRY are as in do_merge(). */ svn_error_t * svn_client__merge_locked(svn_client__conflict_report_t **conflict_report, const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_abspath, svn_depth_t depth, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_target_t *target; svn_client__pathrev_t *source1_loc, *source2_loc; svn_boolean_t sources_related = FALSE; svn_ra_session_t *ra_session1, *ra_session2; apr_array_header_t *merge_sources; svn_error_t *err; svn_boolean_t use_sleep = FALSE; svn_client__pathrev_t *yca = NULL; apr_pool_t *sesspool; svn_boolean_t same_repos; /* ### FIXME: This function really ought to do a history check on the left and right sides of the merge source, and -- if one is an ancestor of the other -- just call svn_client_merge_peg3() with the appropriate args. */ SVN_ERR(open_target_wc(&target, target_abspath, allow_mixed_rev, TRUE, TRUE, ctx, scratch_pool, scratch_pool)); /* Open RA sessions to both sides of our merge source, and resolve URLs * and revisions. */ sesspool = svn_pool_create(scratch_pool); SVN_ERR(svn_client__ra_session_from_path2( &ra_session1, &source1_loc, source1, NULL, revision1, revision1, ctx, sesspool)); SVN_ERR(svn_client__ra_session_from_path2( &ra_session2, &source2_loc, source2, NULL, revision2, revision2, ctx, sesspool)); /* We can't do a diff between different repositories. */ /* ### We should also insist that the root URLs of the two sources match, * as we are only carrying around a single source-repos-root from now * on, and URL calculations will go wrong if they differ. * Alternatively, teach the code to cope with differing root URLs. */ SVN_ERR(check_same_repos(source1_loc, source1_loc->url, source2_loc, source2_loc->url, FALSE /* strict_urls */, scratch_pool)); /* Do our working copy and sources come from the same repository? */ same_repos = is_same_repos(&target->loc, source1_loc, TRUE /* strict_urls */); /* Unless we're ignoring ancestry, see if the two sources are related. */ if (! ignore_mergeinfo) SVN_ERR(svn_client__get_youngest_common_ancestor( &yca, source1_loc, source2_loc, ra_session1, ctx, scratch_pool, scratch_pool)); /* Check for a youngest common ancestor. If we have one, we'll be doing merge tracking. So, given a requested merge of the differences between A and B, and a common ancestor of C, we will find ourselves in one of four positions, and four different approaches: A == B == C there's nothing to merge A == C != B we merge the changes between A (or C) and B B == C != A we merge the changes between B (or C) and A A != B != C we merge the changes between A and B without merge recording, then record-only two merges: from A to C, and from C to B */ if (yca) { /* Note that our merge sources are related. */ sources_related = TRUE; /* If the common ancestor matches the right side of our merge, then we only need to reverse-merge the left side. */ if ((strcmp(yca->url, source2_loc->url) == 0) && (yca->rev == source2_loc->rev)) { SVN_ERR(normalize_merge_sources_internal( &merge_sources, source1_loc, svn_rangelist__initialize(source1_loc->rev, yca->rev, TRUE, scratch_pool), ra_session1, ctx, scratch_pool, scratch_pool)); } /* If the common ancestor matches the left side of our merge, then we only need to merge the right side. */ else if ((strcmp(yca->url, source1_loc->url) == 0) && (yca->rev == source1_loc->rev)) { SVN_ERR(normalize_merge_sources_internal( &merge_sources, source2_loc, svn_rangelist__initialize(yca->rev, source2_loc->rev, TRUE, scratch_pool), ra_session2, ctx, scratch_pool, scratch_pool)); } /* And otherwise, we need to do both: reverse merge the left side, and merge the right. */ else { merge_source_t source; source.loc1 = source1_loc; source.loc2 = source2_loc; source.ancestral = FALSE; err = merge_cousins_and_supplement_mergeinfo(conflict_report, &use_sleep, target, ra_session1, ra_session2, &source, yca, same_repos, depth, diff_ignore_ancestry, force_delete, record_only, dry_run, merge_options, ctx, result_pool, scratch_pool); /* Close our temporary RA sessions (this could've happened after the second call to normalize_merge_sources() inside the merge_cousins_and_supplement_mergeinfo() routine). */ svn_pool_destroy(sesspool); if (use_sleep) svn_io_sleep_for_timestamps(target->abspath, scratch_pool); SVN_ERR(err); return SVN_NO_ERROR; } } else { /* Build a single-item merge_source_t array. */ merge_sources = apr_array_make(scratch_pool, 1, sizeof(merge_source_t *)); APR_ARRAY_PUSH(merge_sources, merge_source_t *) = merge_source_create(source1_loc, source2_loc, FALSE, scratch_pool); } err = do_merge(NULL, NULL, conflict_report, &use_sleep, merge_sources, target, ra_session1, sources_related, same_repos, ignore_mergeinfo, diff_ignore_ancestry, force_delete, dry_run, record_only, NULL, FALSE, FALSE, depth, merge_options, ctx, result_pool, scratch_pool); /* Close our temporary RA sessions. */ svn_pool_destroy(sesspool); if (use_sleep) svn_io_sleep_for_timestamps(target->abspath, scratch_pool); SVN_ERR(err); return SVN_NO_ERROR; } /* Set *TARGET_ABSPATH to the absolute path of, and *LOCK_ABSPATH to the absolute path to lock for, TARGET_WCPATH. */ static svn_error_t * get_target_and_lock_abspath(const char **target_abspath, const char **lock_abspath, const char *target_wcpath, svn_client_ctx_t *ctx, apr_pool_t *result_pool) { svn_node_kind_t kind; SVN_ERR(svn_dirent_get_absolute(target_abspath, target_wcpath, result_pool)); SVN_ERR(svn_wc_read_kind2(&kind, ctx->wc_ctx, *target_abspath, FALSE, FALSE, result_pool)); if (kind == svn_node_dir) *lock_abspath = *target_abspath; else *lock_abspath = svn_dirent_dirname(*target_abspath, result_pool); return SVN_NO_ERROR; } svn_error_t * svn_client_merge5(const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool) { const char *target_abspath, *lock_abspath; svn_client__conflict_report_t *conflict_report; /* Sanity check our input -- we require specified revisions, * and either 2 paths or 2 URLs. */ if ((revision1->kind == svn_opt_revision_unspecified) || (revision2->kind == svn_opt_revision_unspecified)) return svn_error_create(SVN_ERR_CLIENT_BAD_REVISION, NULL, _("Not all required revisions are specified")); if (svn_path_is_url(source1) != svn_path_is_url(source2)) return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL, _("Merge sources must both be " "either paths or URLs")); /* A WC path must be used with a repository revision, as we can't * (currently) use the WC itself as a source, we can only read the URL * from it and use that. */ SVN_ERR(ensure_wc_path_has_repo_revision(source1, revision1, pool)); SVN_ERR(ensure_wc_path_has_repo_revision(source2, revision2, pool)); SVN_ERR(get_target_and_lock_abspath(&target_abspath, &lock_abspath, target_wcpath, ctx, pool)); if (!dry_run) SVN_WC__CALL_WITH_WRITE_LOCK( svn_client__merge_locked(&conflict_report, source1, revision1, source2, revision2, target_abspath, depth, ignore_mergeinfo, diff_ignore_ancestry, force_delete, record_only, dry_run, allow_mixed_rev, merge_options, ctx, pool, pool), ctx->wc_ctx, lock_abspath, FALSE /* lock_anchor */, pool); else SVN_ERR(svn_client__merge_locked(&conflict_report, source1, revision1, source2, revision2, target_abspath, depth, ignore_mergeinfo, diff_ignore_ancestry, force_delete, record_only, dry_run, allow_mixed_rev, merge_options, ctx, pool, pool)); SVN_ERR(svn_client__make_merge_conflict_error(conflict_report, pool)); return SVN_NO_ERROR; } /* Check if mergeinfo for a given path is described explicitly or via inheritance in a mergeinfo catalog. If REPOS_REL_PATH exists in CATALOG and has mergeinfo containing MERGEINFO, then set *IN_CATALOG to TRUE. If REPOS_REL_PATH does not exist in CATALOG, then find its nearest parent which does exist. If the mergeinfo REPOS_REL_PATH would inherit from that parent contains MERGEINFO then set *IN_CATALOG to TRUE. Set *IN_CATALOG to FALSE in all other cases. Set *CAT_KEY_PATH to the key path in CATALOG for REPOS_REL_PATH's explicit or inherited mergeinfo. If no explicit or inherited mergeinfo is found for REPOS_REL_PATH then set *CAT_KEY_PATH to NULL. User RESULT_POOL to allocate *CAT_KEY_PATH. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * mergeinfo_in_catalog(svn_boolean_t *in_catalog, const char **cat_key_path, const char *repos_rel_path, svn_mergeinfo_t mergeinfo, svn_mergeinfo_catalog_t catalog, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *walk_path = NULL; *in_catalog = FALSE; *cat_key_path = NULL; if (mergeinfo && catalog && apr_hash_count(catalog)) { const char *path = repos_rel_path; /* Start with the assumption there is no explicit or inherited mergeinfo for REPOS_REL_PATH in CATALOG. */ svn_mergeinfo_t mergeinfo_in_cat = NULL; while (1) { mergeinfo_in_cat = svn_hash_gets(catalog, path); if (mergeinfo_in_cat) /* Found it! */ { *cat_key_path = apr_pstrdup(result_pool, path); break; } else /* Look for inherited mergeinfo. */ { walk_path = svn_relpath_join(svn_relpath_basename(path, scratch_pool), walk_path ? walk_path : "", scratch_pool); path = svn_relpath_dirname(path, scratch_pool); if (path[0] == '\0') /* No mergeinfo to inherit. */ break; } } if (mergeinfo_in_cat) { if (walk_path) SVN_ERR(svn_mergeinfo__add_suffix_to_mergeinfo(&mergeinfo_in_cat, mergeinfo_in_cat, walk_path, scratch_pool, scratch_pool)); SVN_ERR(svn_mergeinfo_intersect2(&mergeinfo_in_cat, mergeinfo_in_cat, mergeinfo, TRUE, scratch_pool, scratch_pool)); SVN_ERR(svn_mergeinfo__equals(in_catalog, mergeinfo_in_cat, mergeinfo, TRUE, scratch_pool)); } } return SVN_NO_ERROR; } /* A svn_log_entry_receiver_t baton for log_find_operative_revs(). */ typedef struct log_find_operative_baton_t { /* The catalog of explicit mergeinfo on a reintegrate source. */ svn_mergeinfo_catalog_t merged_catalog; /* The catalog of unmerged history from the reintegrate target to the source which we will create. Allocated in RESULT_POOL. */ svn_mergeinfo_catalog_t unmerged_catalog; /* The repository absolute path of the reintegrate target. */ const char *target_fspath; /* The path of the reintegrate source relative to the repository root. */ const char *source_repos_rel_path; apr_pool_t *result_pool; } log_find_operative_baton_t; /* A svn_log_entry_receiver_t callback for find_unsynced_ranges(). */ static svn_error_t * log_find_operative_revs(void *baton, svn_log_entry_t *log_entry, apr_pool_t *pool) { log_find_operative_baton_t *log_baton = baton; apr_hash_index_t *hi; svn_revnum_t revision; /* It's possible that authz restrictions on the merge source prevent us from knowing about any of the changes for LOG_ENTRY->REVISION. */ if (!log_entry->changed_paths2) return SVN_NO_ERROR; revision = log_entry->revision; for (hi = apr_hash_first(pool, log_entry->changed_paths2); hi; hi = apr_hash_next(hi)) { const char *subtree_missing_this_rev; const char *path = apr_hash_this_key(hi); const char *rel_path; const char *source_rel_path; svn_boolean_t in_catalog; svn_mergeinfo_t log_entry_as_mergeinfo; rel_path = svn_fspath__skip_ancestor(log_baton->target_fspath, path); /* Easy out: The path is not within the tree of interest. */ if (rel_path == NULL) continue; source_rel_path = svn_relpath_join(log_baton->source_repos_rel_path, rel_path, pool); SVN_ERR(svn_mergeinfo_parse(&log_entry_as_mergeinfo, apr_psprintf(pool, "%s:%ld", path, revision), pool)); SVN_ERR(mergeinfo_in_catalog(&in_catalog, &subtree_missing_this_rev, source_rel_path, log_entry_as_mergeinfo, log_baton->merged_catalog, pool, pool)); if (!in_catalog) { svn_mergeinfo_t unmerged_for_key; const char *suffix, *missing_path; /* If there is no mergeinfo on the source tree we'll say the "subtree" missing this revision is the root of the source. */ if (!subtree_missing_this_rev) subtree_missing_this_rev = log_baton->source_repos_rel_path; suffix = svn_relpath_skip_ancestor(subtree_missing_this_rev, source_rel_path); if (suffix && suffix[0] != '\0') { missing_path = apr_pstrmemdup(pool, path, strlen(path) - strlen(suffix) - 1); } else { missing_path = path; } SVN_ERR(svn_mergeinfo_parse(&log_entry_as_mergeinfo, apr_psprintf(pool, "%s:%ld", missing_path, revision), log_baton->result_pool)); unmerged_for_key = svn_hash_gets(log_baton->unmerged_catalog, subtree_missing_this_rev); if (unmerged_for_key) { SVN_ERR(svn_mergeinfo_merge2(unmerged_for_key, log_entry_as_mergeinfo, log_baton->result_pool, pool)); } else { svn_hash_sets(log_baton->unmerged_catalog, apr_pstrdup(log_baton->result_pool, subtree_missing_this_rev), log_entry_as_mergeinfo); } } } return SVN_NO_ERROR; } /* Determine if the mergeinfo on a reintegrate source SOURCE_LOC, reflects that the source is fully synced with the reintegrate target TARGET_LOC, even if a naive interpretation of the source's mergeinfo says otherwise -- See issue #3577. UNMERGED_CATALOG represents the history (as mergeinfo) from TARGET_LOC that is not represented in SOURCE_LOC's explicit/inherited mergeinfo as represented by MERGED_CATALOG. MERGED_CATALOG may be empty if the source has no explicit or inherited mergeinfo. Check that all of the unmerged revisions in UNMERGED_CATALOG's mergeinfos are "phantoms", that is, one of the following conditions holds: 1) The revision affects no corresponding paths in SOURCE_LOC. 2) The revision affects corresponding paths in SOURCE_LOC, but based on the mergeinfo in MERGED_CATALOG, the change was previously merged. Make a deep copy, allocated in RESULT_POOL, of any portions of UNMERGED_CATALOG that are not phantoms, to TRUE_UNMERGED_CATALOG. Note: The keys in all mergeinfo catalogs used here are relative to the root of the repository. RA_SESSION is an RA session open to the repository of TARGET_LOC; it may be temporarily reparented within this function. Use SCRATCH_POOL for all temporary allocations. */ static svn_error_t * find_unsynced_ranges(const svn_client__pathrev_t *source_loc, const svn_client__pathrev_t *target_loc, svn_mergeinfo_catalog_t unmerged_catalog, svn_mergeinfo_catalog_t merged_catalog, svn_mergeinfo_catalog_t true_unmerged_catalog, svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_rangelist_t *potentially_unmerged_ranges = NULL; /* Convert all the unmerged history to a rangelist. */ if (apr_hash_count(unmerged_catalog)) { apr_hash_index_t *hi_catalog; potentially_unmerged_ranges = apr_array_make(scratch_pool, 1, sizeof(svn_merge_range_t *)); for (hi_catalog = apr_hash_first(scratch_pool, unmerged_catalog); hi_catalog; hi_catalog = apr_hash_next(hi_catalog)) { svn_mergeinfo_t mergeinfo = apr_hash_this_val(hi_catalog); SVN_ERR(svn_rangelist__merge_many(potentially_unmerged_ranges, mergeinfo, scratch_pool, scratch_pool)); } } /* Find any unmerged revisions which both affect the source and are not yet merged to it. */ if (potentially_unmerged_ranges) { svn_revnum_t oldest_rev = (APR_ARRAY_IDX(potentially_unmerged_ranges, 0, svn_merge_range_t *))->start + 1; svn_revnum_t youngest_rev = (APR_ARRAY_IDX(potentially_unmerged_ranges, potentially_unmerged_ranges->nelts - 1, svn_merge_range_t *))->end; log_find_operative_baton_t log_baton; const char *old_session_url = NULL; svn_error_t *err; log_baton.merged_catalog = merged_catalog; log_baton.unmerged_catalog = true_unmerged_catalog; log_baton.source_repos_rel_path = svn_client__pathrev_relpath(source_loc, scratch_pool); log_baton.target_fspath = svn_client__pathrev_fspath(target_loc, scratch_pool); log_baton.result_pool = result_pool; /* Reparent the session to TARGET_LOC if this target location * exists within the unmerged revision range. */ if (target_loc->rev <= youngest_rev && target_loc->rev >= oldest_rev) SVN_ERR(svn_client__ensure_ra_session_url( &old_session_url, ra_session, target_loc->url, scratch_pool)); err = get_log(ra_session, "", youngest_rev, oldest_rev, TRUE, /* discover_changed_paths */ log_find_operative_revs, &log_baton, scratch_pool); if (old_session_url) err = svn_error_compose_create(err, svn_ra_reparent(ra_session, old_session_url, scratch_pool)); SVN_ERR(err); } return SVN_NO_ERROR; } /* Find the youngest revision that has been merged from target to source. * * If any location in TARGET_HISTORY_AS_MERGEINFO is mentioned in * SOURCE_MERGEINFO, then we know that at least one merge was done from the * target to the source. In that case, set *YOUNGEST_MERGED_REV to the * youngest revision of that intersection (unless *YOUNGEST_MERGED_REV is * already younger than that). Otherwise, leave *YOUNGEST_MERGED_REV alone. */ static svn_error_t * find_youngest_merged_rev(svn_revnum_t *youngest_merged_rev, svn_mergeinfo_t target_history_as_mergeinfo, svn_mergeinfo_t source_mergeinfo, apr_pool_t *scratch_pool) { svn_mergeinfo_t explicit_source_target_history_intersection; SVN_ERR(svn_mergeinfo_intersect2( &explicit_source_target_history_intersection, source_mergeinfo, target_history_as_mergeinfo, TRUE, scratch_pool, scratch_pool)); if (apr_hash_count(explicit_source_target_history_intersection)) { svn_revnum_t old_rev, young_rev; /* Keep track of the youngest revision merged from target to source. */ SVN_ERR(svn_mergeinfo__get_range_endpoints( &young_rev, &old_rev, explicit_source_target_history_intersection, scratch_pool)); if (!SVN_IS_VALID_REVNUM(*youngest_merged_rev) || (young_rev > *youngest_merged_rev)) *youngest_merged_rev = young_rev; } return SVN_NO_ERROR; } /* Set *FILTERED_MERGEINFO_P to the parts of TARGET_HISTORY_AS_MERGEINFO * that are not present in the source branch. * * SOURCE_MERGEINFO is the explicit or inherited mergeinfo of the source * branch SOURCE_PATHREV. Extend SOURCE_MERGEINFO, modifying it in * place, to include the natural history (implicit mergeinfo) of * SOURCE_PATHREV. ### But make these additions in SCRATCH_POOL. * * SOURCE_RA_SESSION is an RA session open to the repository containing * SOURCE_PATHREV; it may be temporarily reparented within this function. * * ### [JAF] This function is named '..._subroutine' simply because I * factored it out based on code similarity, without knowing what it's * purpose is. We should clarify its purpose and choose a better name. */ static svn_error_t * find_unmerged_mergeinfo_subroutine(svn_mergeinfo_t *filtered_mergeinfo_p, svn_mergeinfo_t target_history_as_mergeinfo, svn_mergeinfo_t source_mergeinfo, const svn_client__pathrev_t *source_pathrev, svn_ra_session_t *source_ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_mergeinfo_t source_history_as_mergeinfo; /* Get the source path's natural history and merge it into source path's explicit or inherited mergeinfo. */ SVN_ERR(svn_client__get_history_as_mergeinfo( &source_history_as_mergeinfo, NULL /* has_rev_zero_history */, source_pathrev, source_pathrev->rev, SVN_INVALID_REVNUM, source_ra_session, ctx, scratch_pool)); SVN_ERR(svn_mergeinfo_merge2(source_mergeinfo, source_history_as_mergeinfo, scratch_pool, scratch_pool)); /* Now source_mergeinfo represents everything we know about source_path's history. Now we need to know what part, if any, of the corresponding target's history is *not* part of source_path's total history; because it is neither shared history nor was it ever merged from the target to the source. */ SVN_ERR(svn_mergeinfo_remove2(filtered_mergeinfo_p, source_mergeinfo, target_history_as_mergeinfo, TRUE, result_pool, scratch_pool)); return SVN_NO_ERROR; } /* Helper for calculate_left_hand_side() which produces a mergeinfo catalog describing what parts of of the reintegrate target have not previously been merged to the reintegrate source. SOURCE_CATALOG is the collection of explicit mergeinfo on SOURCE_LOC and all its children, i.e. the mergeinfo catalog for the reintegrate source. TARGET_HISTORY_HASH is a hash of (const char *) paths mapped to svn_mergeinfo_t representing the location history. Each of these path keys represent a path in the reintegrate target, relative to the repository root, which has explicit mergeinfo and/or is the reintegrate target itself. The svn_mergeinfo_t's contain the natural history of each path@TARGET_REV. Effectively this is the mergeinfo catalog on the reintegrate target. YC_ANCESTOR_REV is the revision of the youngest common ancestor of the reintegrate source and the reintegrate target. SOURCE_LOC is the reintegrate source. SOURCE_RA_SESSION is a session opened to the URL of SOURCE_LOC and TARGET_RA_SESSION is open to TARGET->loc.url. For each entry in TARGET_HISTORY_HASH check that the history it represents is contained in either the explicit mergeinfo for the corresponding path in SOURCE_CATALOG, the corresponding path's inherited mergeinfo (if no explicit mergeinfo for the path is found in SOURCE_CATALOG), or the corresponding path's natural history. Populate *UNMERGED_TO_SOURCE_CATALOG with the corresponding source paths mapped to the mergeinfo from the target's natural history which is *not* found. Also include any mergeinfo from SOURCE_CATALOG which explicitly describes the target's history but for which *no* entry was found in TARGET_HISTORY_HASH. If no part of TARGET_HISTORY_HASH is found in SOURCE_CATALOG set *YOUNGEST_MERGED_REV to SVN_INVALID_REVNUM; otherwise set it to the youngest revision previously merged from the target to the source, and filter *UNMERGED_TO_SOURCE_CATALOG so that it contains no ranges greater than *YOUNGEST_MERGED_REV. *UNMERGED_TO_SOURCE_CATALOG is (deeply) allocated in RESULT_POOL. SCRATCH_POOL is used for all temporary allocations. */ static svn_error_t * find_unmerged_mergeinfo(svn_mergeinfo_catalog_t *unmerged_to_source_catalog, svn_revnum_t *youngest_merged_rev, svn_revnum_t yc_ancestor_rev, svn_mergeinfo_catalog_t source_catalog, apr_hash_t *target_history_hash, const svn_client__pathrev_t *source_loc, const merge_target_t *target, svn_ra_session_t *source_ra_session, svn_ra_session_t *target_ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *source_repos_rel_path = svn_client__pathrev_relpath(source_loc, scratch_pool); const char *target_repos_rel_path = svn_client__pathrev_relpath(&target->loc, scratch_pool); apr_hash_index_t *hi; svn_mergeinfo_catalog_t new_catalog = apr_hash_make(result_pool); apr_pool_t *iterpool = svn_pool_create(scratch_pool); assert(session_url_is(source_ra_session, source_loc->url, scratch_pool)); assert(session_url_is(target_ra_session, target->loc.url, scratch_pool)); *youngest_merged_rev = SVN_INVALID_REVNUM; /* Examine the natural history of each path in the reintegrate target with explicit mergeinfo. */ for (hi = apr_hash_first(scratch_pool, target_history_hash); hi; hi = apr_hash_next(hi)) { const char *target_path = apr_hash_this_key(hi); svn_mergeinfo_t target_history_as_mergeinfo = apr_hash_this_val(hi); const char *path_rel_to_session = svn_relpath_skip_ancestor(target_repos_rel_path, target_path); const char *source_path; svn_client__pathrev_t *source_pathrev; svn_mergeinfo_t source_mergeinfo, filtered_mergeinfo; svn_pool_clear(iterpool); source_path = svn_relpath_join(source_repos_rel_path, path_rel_to_session, iterpool); source_pathrev = svn_client__pathrev_join_relpath( source_loc, path_rel_to_session, iterpool); /* Remove any target history that is also part of the source's history, i.e. their common ancestry. By definition this has already been "merged" from the target to the source. If the source has explicit self referential mergeinfo it would intersect with the target's history below, making it appear that some merges had been done from the target to the source, when this might not actually be the case. */ SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges( &target_history_as_mergeinfo, target_history_as_mergeinfo, source_loc->rev, yc_ancestor_rev, TRUE, iterpool, iterpool)); /* Look for any explicit mergeinfo on the source path corresponding to the target path. If we find any remove that from SOURCE_CATALOG. When this iteration over TARGET_HISTORY_HASH is complete all that should be left in SOURCE_CATALOG are subtrees that have explicit mergeinfo on the reintegrate source where there is no corresponding explicit mergeinfo on the reintegrate target. */ source_mergeinfo = svn_hash_gets(source_catalog, source_path); if (source_mergeinfo) { svn_hash_sets(source_catalog, source_path, NULL); SVN_ERR(find_youngest_merged_rev(youngest_merged_rev, target_history_as_mergeinfo, source_mergeinfo, iterpool)); } else { /* There is no mergeinfo on source_path *or* source_path doesn't exist at all. If simply doesn't exist we can ignore it altogether. */ svn_node_kind_t kind; SVN_ERR(svn_ra_check_path(source_ra_session, path_rel_to_session, source_loc->rev, &kind, iterpool)); if (kind == svn_node_none) continue; /* Else source_path does exist though it has no explicit mergeinfo. Find its inherited mergeinfo. If it doesn't have any then simply set source_mergeinfo to an empty hash. */ SVN_ERR(svn_client__get_repos_mergeinfo( &source_mergeinfo, source_ra_session, source_pathrev->url, source_pathrev->rev, svn_mergeinfo_inherited, FALSE /*squelch_incapable*/, iterpool)); if (!source_mergeinfo) source_mergeinfo = apr_hash_make(iterpool); } /* Use scratch_pool rather than iterpool because filtered_mergeinfo is going into new_catalog below and needs to last to the end of this function. */ SVN_ERR(find_unmerged_mergeinfo_subroutine( &filtered_mergeinfo, target_history_as_mergeinfo, source_mergeinfo, source_pathrev, source_ra_session, ctx, scratch_pool, iterpool)); svn_hash_sets(new_catalog, apr_pstrdup(scratch_pool, source_path), filtered_mergeinfo); } /* Are there any subtrees with explicit mergeinfo still left in the merge source where there was no explicit mergeinfo for the corresponding path in the merge target? If so, add the intersection of those path's mergeinfo and the corresponding target path's mergeinfo to new_catalog. */ for (hi = apr_hash_first(scratch_pool, source_catalog); hi; hi = apr_hash_next(hi)) { const char *source_path = apr_hash_this_key(hi); const char *path_rel_to_session = svn_relpath_skip_ancestor(source_repos_rel_path, source_path); const char *source_url; svn_mergeinfo_t source_mergeinfo = apr_hash_this_val(hi); svn_mergeinfo_t filtered_mergeinfo; svn_client__pathrev_t *target_pathrev; svn_mergeinfo_t target_history_as_mergeinfo; svn_error_t *err; svn_pool_clear(iterpool); source_url = svn_path_url_add_component2(source_loc->url, path_rel_to_session, iterpool); target_pathrev = svn_client__pathrev_join_relpath( &target->loc, path_rel_to_session, iterpool); err = svn_client__get_history_as_mergeinfo(&target_history_as_mergeinfo, NULL /* has_rev_zero_history */, target_pathrev, target->loc.rev, SVN_INVALID_REVNUM, target_ra_session, ctx, iterpool); if (err) { if (err->apr_err == SVN_ERR_FS_NOT_FOUND || err->apr_err == SVN_ERR_RA_DAV_REQUEST_FAILED) { /* This path with explicit mergeinfo in the source doesn't exist on the target. */ svn_error_clear(err); err = NULL; } else { return svn_error_trace(err); } } else { svn_client__pathrev_t *pathrev; SVN_ERR(find_youngest_merged_rev(youngest_merged_rev, target_history_as_mergeinfo, source_mergeinfo, iterpool)); /* Use scratch_pool rather than iterpool because filtered_mergeinfo is going into new_catalog below and needs to last to the end of this function. */ /* ### Why looking at SOURCE_url at TARGET_rev? */ SVN_ERR(svn_client__pathrev_create_with_session( &pathrev, source_ra_session, target->loc.rev, source_url, iterpool)); SVN_ERR(find_unmerged_mergeinfo_subroutine( &filtered_mergeinfo, target_history_as_mergeinfo, source_mergeinfo, pathrev, source_ra_session, ctx, scratch_pool, iterpool)); if (apr_hash_count(filtered_mergeinfo)) svn_hash_sets(new_catalog, apr_pstrdup(scratch_pool, source_path), filtered_mergeinfo); } } /* Limit new_catalog to the youngest revisions previously merged from the target to the source. */ if (SVN_IS_VALID_REVNUM(*youngest_merged_rev)) SVN_ERR(svn_mergeinfo__filter_catalog_by_ranges(&new_catalog, new_catalog, *youngest_merged_rev, 0, /* No oldest bound. */ TRUE, scratch_pool, scratch_pool)); /* Make a shiny new copy before blowing away all the temporary pools. */ *unmerged_to_source_catalog = svn_mergeinfo_catalog_dup(new_catalog, result_pool); svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Helper for svn_client_merge_reintegrate() which calculates the 'left hand side' of the underlying two-URL merge that a --reintegrate merge actually performs. If no merge should be performed, set *LEFT_P to NULL. TARGET->abspath is the absolute working copy path of the reintegrate merge. SOURCE_LOC is the reintegrate source. SUBTREES_WITH_MERGEINFO is a hash of (const char *) absolute paths mapped to (svn_mergeinfo_t *) mergeinfo values for each working copy path with explicit mergeinfo in TARGET->abspath. Actually we only need to know the paths, not the mergeinfo. TARGET->loc.rev is the working revision the entire WC tree rooted at TARGET is at. Populate *UNMERGED_TO_SOURCE_CATALOG with the mergeinfo describing what parts of TARGET->loc have not been merged to SOURCE_LOC, up to the youngest revision ever merged from the TARGET->abspath to the source if such exists, see doc string for find_unmerged_mergeinfo(). SOURCE_RA_SESSION is a session opened to the SOURCE_LOC and TARGET_RA_SESSION is open to TARGET->loc.url. *LEFT_P, *MERGED_TO_SOURCE_CATALOG , and *UNMERGED_TO_SOURCE_CATALOG are allocated in RESULT_POOL. SCRATCH_POOL is used for all temporary allocations. */ static svn_error_t * calculate_left_hand_side(svn_client__pathrev_t **left_p, svn_mergeinfo_catalog_t *merged_to_source_catalog, svn_mergeinfo_catalog_t *unmerged_to_source_catalog, const merge_target_t *target, apr_hash_t *subtrees_with_mergeinfo, const svn_client__pathrev_t *source_loc, svn_ra_session_t *source_ra_session, svn_ra_session_t *target_ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_mergeinfo_catalog_t mergeinfo_catalog, unmerged_catalog; apr_pool_t *iterpool = svn_pool_create(scratch_pool); apr_hash_index_t *hi; /* hash of paths mapped to arrays of svn_mergeinfo_t. */ apr_hash_t *target_history_hash = apr_hash_make(scratch_pool); svn_revnum_t youngest_merged_rev; svn_client__pathrev_t *yc_ancestor; assert(session_url_is(source_ra_session, source_loc->url, scratch_pool)); assert(session_url_is(target_ra_session, target->loc.url, scratch_pool)); /* Initialize our return variables. */ *left_p = NULL; /* TARGET->abspath may not have explicit mergeinfo and thus may not be contained within SUBTREES_WITH_MERGEINFO. If this is the case then add a dummy item for TARGET->abspath so we get its history (i.e. implicit mergeinfo) below. */ if (!svn_hash_gets(subtrees_with_mergeinfo, target->abspath)) svn_hash_sets(subtrees_with_mergeinfo, target->abspath, apr_hash_make(result_pool)); /* Get the history segments (as mergeinfo) for TARGET->abspath and any of its subtrees with explicit mergeinfo. */ for (hi = apr_hash_first(scratch_pool, subtrees_with_mergeinfo); hi; hi = apr_hash_next(hi)) { const char *local_abspath = apr_hash_this_key(hi); svn_client__pathrev_t *target_child; const char *repos_relpath; svn_mergeinfo_t target_history_as_mergeinfo; svn_pool_clear(iterpool); /* Convert the absolute path with mergeinfo on it to a path relative to the session root. */ SVN_ERR(svn_wc__node_get_repos_info(NULL, &repos_relpath, NULL, NULL, ctx->wc_ctx, local_abspath, scratch_pool, iterpool)); target_child = svn_client__pathrev_create_with_relpath( target->loc.repos_root_url, target->loc.repos_uuid, target->loc.rev, repos_relpath, iterpool); SVN_ERR(svn_client__get_history_as_mergeinfo(&target_history_as_mergeinfo, NULL /* has_rev_zero_hist */, target_child, target->loc.rev, SVN_INVALID_REVNUM, target_ra_session, ctx, scratch_pool)); svn_hash_sets(target_history_hash, repos_relpath, target_history_as_mergeinfo); } /* Check that SOURCE_LOC and TARGET->loc are actually related, we can't reintegrate if they are not. Also get an initial value for the YCA revision number. */ SVN_ERR(svn_client__get_youngest_common_ancestor( &yc_ancestor, source_loc, &target->loc, target_ra_session, ctx, iterpool, iterpool)); if (! yc_ancestor) return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("'%s@%ld' must be ancestrally related to " "'%s@%ld'"), source_loc->url, source_loc->rev, target->loc.url, target->loc.rev); /* If the source revision is the same as the youngest common revision, then there can't possibly be any unmerged revisions that we need to apply to target. */ if (source_loc->rev == yc_ancestor->rev) { svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Get the mergeinfo from the source, including its descendants with differing explicit mergeinfo. */ SVN_ERR(svn_client__get_repos_mergeinfo_catalog( &mergeinfo_catalog, source_ra_session, source_loc->url, source_loc->rev, svn_mergeinfo_inherited, FALSE /* squelch_incapable */, TRUE /* include_descendants */, iterpool, iterpool)); if (!mergeinfo_catalog) mergeinfo_catalog = apr_hash_make(iterpool); *merged_to_source_catalog = svn_mergeinfo_catalog_dup(mergeinfo_catalog, result_pool); /* Filter the source's mergeinfo catalog so that we are left with mergeinfo that describes what has *not* previously been merged from TARGET->loc to SOURCE_LOC. */ SVN_ERR(find_unmerged_mergeinfo(&unmerged_catalog, &youngest_merged_rev, yc_ancestor->rev, mergeinfo_catalog, target_history_hash, source_loc, target, source_ra_session, target_ra_session, ctx, iterpool, iterpool)); /* Simplify unmerged_catalog through elision then make a copy in POOL. */ SVN_ERR(svn_client__elide_mergeinfo_catalog(unmerged_catalog, iterpool)); *unmerged_to_source_catalog = svn_mergeinfo_catalog_dup(unmerged_catalog, result_pool); if (youngest_merged_rev == SVN_INVALID_REVNUM) { /* We never merged to the source. Just return the branch point. */ *left_p = svn_client__pathrev_dup(yc_ancestor, result_pool); } else { /* We've previously merged some or all of the target, up to youngest_merged_rev, to the source. Set *LEFT_P to cover the youngest part of this range. */ SVN_ERR(svn_client__repos_location(left_p, target_ra_session, &target->loc, youngest_merged_rev, ctx, result_pool, iterpool)); } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Determine the URLs and revisions needed to perform a reintegrate merge * from SOURCE_LOC into the working copy at TARGET. * * SOURCE_RA_SESSION and TARGET_RA_SESSION are RA sessions opened to the * URLs of SOURCE_LOC and TARGET->loc respectively. * * Set *SOURCE_P to * the source-left and source-right locations of the required merge. Set * *YC_ANCESTOR_P to the location of the youngest ancestor. * Any of these output pointers may be NULL if not wanted. * * See svn_client_find_reintegrate_merge() for other details. */ static svn_error_t * find_reintegrate_merge(merge_source_t **source_p, svn_client__pathrev_t **yc_ancestor_p, svn_ra_session_t *source_ra_session, const svn_client__pathrev_t *source_loc, svn_ra_session_t *target_ra_session, const merge_target_t *target, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_client__pathrev_t *yc_ancestor; svn_client__pathrev_t *loc1; merge_source_t source; svn_mergeinfo_catalog_t unmerged_to_source_mergeinfo_catalog; svn_mergeinfo_catalog_t merged_to_source_mergeinfo_catalog; svn_error_t *err; apr_hash_t *subtrees_with_mergeinfo; assert(session_url_is(source_ra_session, source_loc->url, scratch_pool)); assert(session_url_is(target_ra_session, target->loc.url, scratch_pool)); /* As the WC tree is "pure", use its last-updated-to revision as the default revision for the left side of our merge, since that's what the repository sub-tree is required to be up to date with (with regard to the WC). */ /* ### Bogus/obsolete comment? */ /* Can't reintegrate to or from the root of the repository. */ if (strcmp(source_loc->url, source_loc->repos_root_url) == 0 || strcmp(target->loc.url, target->loc.repos_root_url) == 0) return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("Neither the reintegrate source nor target " "can be the root of the repository")); /* Find all the subtrees in TARGET_WCPATH that have explicit mergeinfo. */ err = get_wc_explicit_mergeinfo_catalog(&subtrees_with_mergeinfo, target->abspath, svn_depth_infinity, ctx, scratch_pool, scratch_pool); /* Issue #3896: If invalid mergeinfo in the reintegrate target prevents us from proceeding, then raise the best error possible. */ if (err && err->apr_err == SVN_ERR_CLIENT_INVALID_MERGEINFO_NO_MERGETRACKING) err = svn_error_quick_wrap(err, _("Reintegrate merge not possible")); SVN_ERR(err); SVN_ERR(calculate_left_hand_side(&loc1, &merged_to_source_mergeinfo_catalog, &unmerged_to_source_mergeinfo_catalog, target, subtrees_with_mergeinfo, source_loc, source_ra_session, target_ra_session, ctx, scratch_pool, scratch_pool)); /* Did calculate_left_hand_side() decide that there was no merge to be performed here? */ if (! loc1) { if (source_p) *source_p = NULL; if (yc_ancestor_p) *yc_ancestor_p = NULL; return SVN_NO_ERROR; } source.loc1 = loc1; source.loc2 = source_loc; /* If the target was moved after the source was branched from it, it is possible that the left URL differs from the target's current URL. If so, then adjust TARGET_RA_SESSION to point to the old URL. */ if (strcmp(source.loc1->url, target->loc.url)) SVN_ERR(svn_ra_reparent(target_ra_session, source.loc1->url, scratch_pool)); SVN_ERR(svn_client__get_youngest_common_ancestor( &yc_ancestor, source.loc2, source.loc1, target_ra_session, ctx, scratch_pool, scratch_pool)); if (! yc_ancestor) return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("'%s@%ld' must be ancestrally related to " "'%s@%ld'"), source.loc1->url, source.loc1->rev, source.loc2->url, source.loc2->rev); /* The source side of a reintegrate merge is not 'ancestral', except in * the degenerate case where source == YCA. */ source.ancestral = (loc1->rev == yc_ancestor->rev); if (source.loc1->rev > yc_ancestor->rev) { /* Have we actually merged anything to the source from the target? If so, make sure we've merged a contiguous prefix. */ svn_mergeinfo_catalog_t final_unmerged_catalog = apr_hash_make(scratch_pool); SVN_ERR(find_unsynced_ranges(source_loc, &target->loc, unmerged_to_source_mergeinfo_catalog, merged_to_source_mergeinfo_catalog, final_unmerged_catalog, target_ra_session, scratch_pool, scratch_pool)); if (apr_hash_count(final_unmerged_catalog)) { svn_string_t *source_mergeinfo_cat_string; SVN_ERR(svn_mergeinfo__catalog_to_formatted_string( &source_mergeinfo_cat_string, final_unmerged_catalog, " ", _(" Missing ranges: "), scratch_pool)); return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("Reintegrate can only be used if " "revisions %ld through %ld were " "previously merged from %s to the " "reintegrate source, but this is " "not the case:\n%s"), yc_ancestor->rev + 1, source.loc2->rev, target->loc.url, source_mergeinfo_cat_string->data); } } /* Left side: trunk@youngest-trunk-rev-merged-to-branch-at-specified-peg-rev * Right side: branch@specified-peg-revision */ if (source_p) *source_p = merge_source_dup(&source, result_pool); if (yc_ancestor_p) *yc_ancestor_p = svn_client__pathrev_dup(yc_ancestor, result_pool); return SVN_NO_ERROR; } /* Resolve the source and target locations and open RA sessions to them, and * perform some checks appropriate for a reintegrate merge. * * Set *SOURCE_RA_SESSION_P and *SOURCE_LOC_P to a new session and the * repository location of SOURCE_PATH_OR_URL at SOURCE_PEG_REVISION. Set * *TARGET_RA_SESSION_P and *TARGET_P to a new session and the repository * location of the WC at TARGET_ABSPATH. * * Throw a SVN_ERR_CLIENT_UNRELATED_RESOURCES error if the target WC node is * a locally added node or if the source and target are not in the same * repository. Throw a SVN_ERR_CLIENT_NOT_READY_TO_MERGE error if the * target WC is not at a single revision without switched subtrees and * without local mods. * * Allocate all the outputs in RESULT_POOL. */ static svn_error_t * open_reintegrate_source_and_target(svn_ra_session_t **source_ra_session_p, svn_client__pathrev_t **source_loc_p, svn_ra_session_t **target_ra_session_p, merge_target_t **target_p, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const char *target_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_client__pathrev_t *source_loc; merge_target_t *target; /* Open the target WC. A reintegrate merge requires the merge target to * reflect a subtree of the repository as found at a single revision. */ SVN_ERR(open_target_wc(&target, target_abspath, FALSE, FALSE, FALSE, ctx, scratch_pool, scratch_pool)); if (! target->loc.url) return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL, _("Can't reintegrate into '%s' because it is " "locally added and therefore not related to " "the merge source"), svn_dirent_local_style(target->abspath, scratch_pool)); SVN_ERR(svn_client_open_ra_session2(target_ra_session_p, target->loc.url, target->abspath, ctx, result_pool, scratch_pool)); SVN_ERR(svn_client__ra_session_from_path2( source_ra_session_p, &source_loc, source_path_or_url, NULL, source_peg_revision, source_peg_revision, ctx, result_pool)); /* source_loc and target->loc are required to be in the same repository, as mergeinfo doesn't come into play for cross-repository merging. */ SVN_ERR(check_same_repos(source_loc, svn_dirent_local_style(source_path_or_url, scratch_pool), &target->loc, svn_dirent_local_style(target->abspath, scratch_pool), TRUE /* strict_urls */, scratch_pool)); *source_loc_p = source_loc; *target_p = target; return SVN_NO_ERROR; } /* The body of svn_client_merge_reintegrate(), which see for details. */ static svn_error_t * merge_reintegrate_locked(svn_client__conflict_report_t **conflict_report, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const char *target_abspath, svn_boolean_t diff_ignore_ancestry, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_ra_session_t *target_ra_session, *source_ra_session; merge_target_t *target; svn_client__pathrev_t *source_loc; merge_source_t *source; svn_client__pathrev_t *yc_ancestor; svn_boolean_t use_sleep = FALSE; svn_error_t *err; SVN_ERR(open_reintegrate_source_and_target( &source_ra_session, &source_loc, &target_ra_session, &target, source_path_or_url, source_peg_revision, target_abspath, ctx, scratch_pool, scratch_pool)); SVN_ERR(find_reintegrate_merge(&source, &yc_ancestor, source_ra_session, source_loc, target_ra_session, target, ctx, scratch_pool, scratch_pool)); if (! source) { *conflict_report = NULL; return SVN_NO_ERROR; } /* Do the real merge! */ /* ### TODO(reint): Make sure that one isn't the same line ancestor ### of the other (what's erroneously referred to as "ancestrally ### related" in this source file). For now, we just say the source ### isn't "ancestral" even if it is (in the degenerate case where ### source-left equals YCA). */ source->ancestral = FALSE; err = merge_cousins_and_supplement_mergeinfo(conflict_report, &use_sleep, target, target_ra_session, source_ra_session, source, yc_ancestor, TRUE /* same_repos */, svn_depth_infinity, diff_ignore_ancestry, FALSE /* force_delete */, FALSE /* record_only */, dry_run, merge_options, ctx, result_pool, scratch_pool); if (use_sleep) svn_io_sleep_for_timestamps(target_abspath, scratch_pool); SVN_ERR(err); return SVN_NO_ERROR; } svn_error_t * svn_client_merge_reintegrate(const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool) { const char *target_abspath, *lock_abspath; svn_client__conflict_report_t *conflict_report; SVN_ERR(get_target_and_lock_abspath(&target_abspath, &lock_abspath, target_wcpath, ctx, pool)); if (!dry_run) SVN_WC__CALL_WITH_WRITE_LOCK( merge_reintegrate_locked(&conflict_report, source_path_or_url, source_peg_revision, target_abspath, FALSE /*diff_ignore_ancestry*/, dry_run, merge_options, ctx, pool, pool), ctx->wc_ctx, lock_abspath, FALSE /* lock_anchor */, pool); else SVN_ERR(merge_reintegrate_locked(&conflict_report, source_path_or_url, source_peg_revision, target_abspath, FALSE /*diff_ignore_ancestry*/, dry_run, merge_options, ctx, pool, pool)); SVN_ERR(svn_client__make_merge_conflict_error(conflict_report, pool)); return SVN_NO_ERROR; } /* The body of svn_client_merge_peg5(), which see for details. * * IGNORE_MERGEINFO and DIFF_IGNORE_ANCESTRY are as in do_merge(). */ static svn_error_t * merge_peg_locked(svn_client__conflict_report_t **conflict_report, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const svn_rangelist_t *ranges_to_merge, const char *target_abspath, svn_depth_t depth, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_target_t *target; svn_client__pathrev_t *source_loc; apr_array_header_t *merge_sources; svn_ra_session_t *ra_session; apr_pool_t *sesspool; svn_boolean_t use_sleep = FALSE; svn_error_t *err; svn_boolean_t same_repos; SVN_ERR_ASSERT(svn_dirent_is_absolute(target_abspath)); SVN_ERR(open_target_wc(&target, target_abspath, allow_mixed_rev, TRUE, TRUE, ctx, scratch_pool, scratch_pool)); /* Create a short lived session pool */ sesspool = svn_pool_create(scratch_pool); /* Open an RA session to our source URL, and determine its root URL. */ SVN_ERR(svn_client__ra_session_from_path2( &ra_session, &source_loc, source_path_or_url, NULL, source_peg_revision, source_peg_revision, ctx, sesspool)); /* Normalize our merge sources. */ SVN_ERR(normalize_merge_sources(&merge_sources, source_path_or_url, source_loc, ranges_to_merge, ra_session, ctx, scratch_pool, scratch_pool)); /* Check for same_repos. */ same_repos = is_same_repos(&target->loc, source_loc, TRUE /* strict_urls */); /* Do the real merge! (We say with confidence that our merge sources are both ancestral and related.) */ if (getenv("SVN_ELEMENT_MERGE") && same_repos && (depth == svn_depth_infinity || depth == svn_depth_unknown) && ignore_mergeinfo && !record_only) { err = svn_client__merge_elements(&use_sleep, merge_sources, target, ra_session, diff_ignore_ancestry, force_delete, dry_run, merge_options, ctx, result_pool, scratch_pool); /* ### Currently this merge just errors out on any conflicts */ *conflict_report = NULL; } else err = do_merge(NULL, NULL, conflict_report, &use_sleep, merge_sources, target, ra_session, TRUE /*sources_related*/, same_repos, ignore_mergeinfo, diff_ignore_ancestry, force_delete, dry_run, record_only, NULL, FALSE, FALSE, depth, merge_options, ctx, result_pool, scratch_pool); /* We're done with our RA session. */ svn_pool_destroy(sesspool); if (use_sleep) svn_io_sleep_for_timestamps(target_abspath, scratch_pool); SVN_ERR(err); return SVN_NO_ERROR; } /* Details of an automatic merge. */ typedef struct automatic_merge_t { svn_client__pathrev_t *yca, *base, *right, *target; svn_boolean_t is_reintegrate_like; svn_boolean_t allow_mixed_rev, allow_local_mods, allow_switched_subtrees; } automatic_merge_t; static svn_error_t * client_find_automatic_merge(automatic_merge_t **merge_p, const char *source_path_or_url, const svn_opt_revision_t *source_revision, const char *target_abspath, svn_boolean_t allow_mixed_rev, svn_boolean_t allow_local_mods, svn_boolean_t allow_switched_subtrees, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool); static svn_error_t * do_automatic_merge_locked(svn_client__conflict_report_t **conflict_report, const automatic_merge_t *merge, const char *target_abspath, svn_depth_t depth, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool); svn_error_t * svn_client_merge_peg5(const char *source_path_or_url, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool) { const char *target_abspath, *lock_abspath; svn_client__conflict_report_t *conflict_report; /* No ranges to merge? No problem. */ if (ranges_to_merge != NULL && ranges_to_merge->nelts == 0) return SVN_NO_ERROR; SVN_ERR(get_target_and_lock_abspath(&target_abspath, &lock_abspath, target_wcpath, ctx, pool)); /* Do an automatic merge if no revision ranges are specified. */ if (ranges_to_merge == NULL) { automatic_merge_t *merge; if (ignore_mergeinfo) return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("Cannot merge automatically while " "ignoring mergeinfo")); /* Find the details of the merge needed. */ SVN_ERR(client_find_automatic_merge( &merge, source_path_or_url, source_peg_revision, target_abspath, allow_mixed_rev, TRUE /*allow_local_mods*/, TRUE /*allow_switched_subtrees*/, ctx, pool, pool)); if (!dry_run) SVN_WC__CALL_WITH_WRITE_LOCK( do_automatic_merge_locked(&conflict_report, merge, target_abspath, depth, diff_ignore_ancestry, force_delete, record_only, dry_run, merge_options, ctx, pool, pool), ctx->wc_ctx, lock_abspath, FALSE /* lock_anchor */, pool); else SVN_ERR(do_automatic_merge_locked(&conflict_report, merge, target_abspath, depth, diff_ignore_ancestry, force_delete, record_only, dry_run, merge_options, ctx, pool, pool)); } else if (!dry_run) SVN_WC__CALL_WITH_WRITE_LOCK( merge_peg_locked(&conflict_report, source_path_or_url, source_peg_revision, ranges_to_merge, target_abspath, depth, ignore_mergeinfo, diff_ignore_ancestry, force_delete, record_only, dry_run, allow_mixed_rev, merge_options, ctx, pool, pool), ctx->wc_ctx, lock_abspath, FALSE /* lock_anchor */, pool); else SVN_ERR(merge_peg_locked(&conflict_report, source_path_or_url, source_peg_revision, ranges_to_merge, target_abspath, depth, ignore_mergeinfo, diff_ignore_ancestry, force_delete, record_only, dry_run, allow_mixed_rev, merge_options, ctx, pool, pool)); SVN_ERR(svn_client__make_merge_conflict_error(conflict_report, pool)); return SVN_NO_ERROR; } /* The location-history of a branch. * * This structure holds the set of path-revisions occupied by a branch, * from an externally chosen 'tip' location back to its origin. The * 'tip' location is the youngest location that we are considering on * the branch. */ typedef struct branch_history_t { /* The tip location of the branch. That is, the youngest location that's * in the repository and that we're considering. If we're considering a * target branch right up to an uncommitted WC, then this is the WC base * (pristine) location. */ svn_client__pathrev_t *tip; /* The location-segment history, as mergeinfo. */ svn_mergeinfo_t history; /* Whether the location-segment history reached as far as (necessarily the root path in) revision 0 -- a fact that can't be represented as mergeinfo. */ svn_boolean_t has_r0_history; } branch_history_t; /* Return the location on BRANCH_HISTORY at revision REV, or NULL if none. */ static svn_client__pathrev_t * location_on_branch_at_rev(const branch_history_t *branch_history, svn_revnum_t rev, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, branch_history->history); hi; hi = apr_hash_next(hi)) { const char *fspath = apr_hash_this_key(hi); svn_rangelist_t *rangelist = apr_hash_this_val(hi); int i; for (i = 0; i < rangelist->nelts; i++) { svn_merge_range_t *r = APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *); if (r->start < rev && rev <= r->end) { return svn_client__pathrev_create_with_relpath( branch_history->tip->repos_root_url, branch_history->tip->repos_uuid, rev, fspath + 1, result_pool); } } } return NULL; } /* */ typedef struct source_and_target_t { svn_client__pathrev_t *source; svn_ra_session_t *source_ra_session; branch_history_t source_branch; merge_target_t *target; svn_ra_session_t *target_ra_session; branch_history_t target_branch; /* Repos location of the youngest common ancestor of SOURCE and TARGET. */ svn_client__pathrev_t *yca; } source_and_target_t; /* Set *INTERSECTION_P to the intersection of BRANCH_HISTORY with the * revision range OLDEST_REV to YOUNGEST_REV (inclusive). * * If the intersection is empty, the result will be a branch history object * containing an empty (not null) history. * * ### The 'tip' of the result is currently unchanged. */ static svn_error_t * branch_history_intersect_range(branch_history_t **intersection_p, const branch_history_t *branch_history, svn_revnum_t oldest_rev, svn_revnum_t youngest_rev, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { branch_history_t *result = apr_palloc(result_pool, sizeof(*result)); SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(oldest_rev)); SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev)); SVN_ERR_ASSERT(oldest_rev >= 1); /* Allow a just-empty range (oldest = youngest + 1) but not an * arbitrary reverse range (such as oldest = youngest + 2). */ SVN_ERR_ASSERT(oldest_rev <= youngest_rev + 1); if (oldest_rev <= youngest_rev) { SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges( &result->history, branch_history->history, youngest_rev, oldest_rev - 1, TRUE /* include_range */, result_pool, scratch_pool)); result->history = svn_mergeinfo_dup(result->history, result_pool); } else { result->history = apr_hash_make(result_pool); } result->has_r0_history = FALSE; /* ### TODO: Set RESULT->tip to the tip of the intersection. */ result->tip = svn_client__pathrev_dup(branch_history->tip, result_pool); *intersection_p = result; return SVN_NO_ERROR; } /* Set *OLDEST_P and *YOUNGEST_P to the oldest and youngest locations * (inclusive) along BRANCH. OLDEST_P and/or YOUNGEST_P may be NULL if not * wanted. */ static svn_error_t * branch_history_get_endpoints(svn_client__pathrev_t **oldest_p, svn_client__pathrev_t **youngest_p, const branch_history_t *branch, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_revnum_t youngest_rev, oldest_rev; SVN_ERR(svn_mergeinfo__get_range_endpoints( &youngest_rev, &oldest_rev, branch->history, scratch_pool)); if (oldest_p) *oldest_p = location_on_branch_at_rev( branch, oldest_rev + 1, result_pool, scratch_pool); if (youngest_p) *youngest_p = location_on_branch_at_rev( branch, youngest_rev, result_pool, scratch_pool); return SVN_NO_ERROR; } /* Implements the svn_log_entry_receiver_t interface. Set *BATON to LOG_ENTRY->revision and return SVN_ERR_CEASE_INVOCATION. */ static svn_error_t * operative_rev_receiver(void *baton, svn_log_entry_t *log_entry, apr_pool_t *pool) { svn_revnum_t *operative_rev = baton; *operative_rev = log_entry->revision; /* We've found the youngest merged or oldest eligible revision, so we're done... ...but wait, shouldn't we care if LOG_ENTRY->NON_INHERITABLE is true? Because if it is, then LOG_ENTRY->REVISION is only partially merged/elgibile! And our only caller, find_last_merged_location (via short_circuit_mergeinfo_log) is interested in *fully* merged revisions. That's all true, but if find_last_merged_location() finds the youngest merged revision it will also check for the oldest eligible revision. So in the case the youngest merged rev is non-inheritable, the *same* non-inheritable rev will be found as the oldest eligible rev -- and find_last_merged_location() handles that situation. */ return svn_error_create(SVN_ERR_CEASE_INVOCATION, NULL, NULL); } /* Wrapper around svn_client__mergeinfo_log. All arguments are as per that private API. The discover_changed_paths, depth, and revprops args to svn_client__mergeinfo_log are always TRUE, svn_depth_infinity_t, and empty array respectively. If RECEIVER raises a SVN_ERR_CEASE_INVOCATION error, but still sets *REVISION to a valid revnum, then clear the error. Otherwise return any error. */ static svn_error_t* short_circuit_mergeinfo_log(svn_mergeinfo_catalog_t *target_mergeinfo_cat, svn_boolean_t finding_merged, const char *target_path_or_url, const svn_opt_revision_t *target_peg_revision, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const svn_opt_revision_t *source_start_revision, const svn_opt_revision_t *source_end_revision, svn_log_entry_receiver_t receiver, svn_revnum_t *revision, svn_client_ctx_t *ctx, svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_array_header_t *revprops; svn_error_t *err; const char *session_url; SVN_ERR(svn_ra_get_session_url(ra_session, &session_url, scratch_pool)); revprops = apr_array_make(scratch_pool, 0, sizeof(const char *)); err = svn_client__mergeinfo_log(finding_merged, target_path_or_url, target_peg_revision, target_mergeinfo_cat, source_path_or_url, source_peg_revision, source_start_revision, source_end_revision, receiver, revision, TRUE, svn_depth_infinity, revprops, ctx, ra_session, result_pool, scratch_pool); err = svn_error_compose_create( err, svn_ra_reparent(ra_session, session_url, scratch_pool)); if (err) { /* We expect RECEIVER to short-circuit the (potentially expensive) log by raising an SVN_ERR_CEASE_INVOCATION -- see operative_rev_receiver. So we can ignore that error, but only as long as we actually found a valid revision. */ if (SVN_IS_VALID_REVNUM(*revision) && err->apr_err == SVN_ERR_CEASE_INVOCATION) { svn_error_clear(err); err = NULL; } else { return svn_error_trace(err); } } return SVN_NO_ERROR; } /* Set *BASE_P to the last location on SOURCE_BRANCH such that all changes * on SOURCE_BRANCH after YCA up to and including *BASE_P have already * been fully merged into TARGET. * * *BASE_P TIP * o-------o-----------o--- SOURCE_BRANCH * / \ * -----o prev. \ * YCA \ merges \ * o-----------o----------- TARGET branch * * In terms of mergeinfo: * * Source a--... o=change, -=no-op revision * branch / \ * YCA --> o a---o---o---o---o--- d=delete, a=add-as-a-copy * * Eligible -.eee.eeeeeeeeeeeeeeeeeeee .=not a source branch location * * Tgt-mi -.mmm.mm-mm-------m------- m=merged to root of TARGET or * subtree of TARGET with no * operative changes outside of that * subtree, -=not merged * * Eligible -.---.--e--eeeeeee-eeeeeee * * Next --------^----------------- BASE is just before here. * * / \ * -----o prev. \ * YCA \ merges \ * o-----------o------------- * * If no revisions from SOURCE_BRANCH have been completely merged to TARGET, * then set *BASE_P to the YCA. */ static svn_error_t * find_last_merged_location(svn_client__pathrev_t **base_p, svn_client__pathrev_t *yca, const branch_history_t *source_branch, svn_client__pathrev_t *target, svn_client_ctx_t *ctx, svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_opt_revision_t source_peg_rev, source_start_rev, source_end_rev, target_opt_rev; svn_revnum_t youngest_merged_rev = SVN_INVALID_REVNUM; svn_mergeinfo_catalog_t target_mergeinfo_cat = NULL; /* Using a local subpool for 'target_mergeinfo_cat' can make a big reduction in overall memory usage. */ apr_pool_t *tmic_pool = svn_pool_create(scratch_pool); source_peg_rev.kind = svn_opt_revision_number; source_peg_rev.value.number = source_branch->tip->rev; source_start_rev.kind = svn_opt_revision_number; source_start_rev.value.number = yca->rev; source_end_rev.kind = svn_opt_revision_number; source_end_rev.value.number = source_branch->tip->rev; target_opt_rev.kind = svn_opt_revision_number; target_opt_rev.value.number = target->rev; /* Find the youngest revision fully merged from SOURCE_BRANCH to TARGET, if such a revision exists. */ SVN_ERR(short_circuit_mergeinfo_log(&target_mergeinfo_cat, TRUE, /* Find merged */ target->url, &target_opt_rev, source_branch->tip->url, &source_peg_rev, &source_end_rev, &source_start_rev, operative_rev_receiver, &youngest_merged_rev, ctx, ra_session, tmic_pool, tmic_pool)); if (!SVN_IS_VALID_REVNUM(youngest_merged_rev)) { /* No revisions have been completely merged from SOURCE_BRANCH to TARGET so the base for the next merge is the YCA. */ *base_p = yca; } else { /* One or more revisions have already been completely merged from SOURCE_BRANCH to TARGET, now find the oldest revision, older than the youngest merged revision, which is still eligible to be merged, if such exists. */ branch_history_t *contiguous_source; svn_revnum_t base_rev; svn_revnum_t oldest_eligible_rev = SVN_INVALID_REVNUM; /* If the only revisions eligible are younger than the youngest merged revision we can simply assume that the youngest eligible revision is the youngest merged revision. Obviously this may not be true! The revisions between the youngest merged revision and the tip of the branch may have several inoperative revisions -- they may *all* be inoperative revisions! But for the purpose of this function (i.e. finding the youngest revision after the YCA where all revs have been merged) that doesn't matter. */ source_end_rev.value.number = youngest_merged_rev; SVN_ERR(short_circuit_mergeinfo_log(&target_mergeinfo_cat, FALSE, /* Find eligible */ target->url, &target_opt_rev, source_branch->tip->url, &source_peg_rev, &source_start_rev, &source_end_rev, operative_rev_receiver, &oldest_eligible_rev, ctx, ra_session, tmic_pool, tmic_pool)); /* If there are revisions eligible for merging, use the oldest one to calculate the base. Otherwise there are no operative revisions to merge and we can simple set the base to the youngest revision already merged. */ if (SVN_IS_VALID_REVNUM(oldest_eligible_rev)) base_rev = oldest_eligible_rev - 1; else base_rev = youngest_merged_rev; /* Find the branch location just before the oldest eligible rev. (We can't just use the base revs calculated above because the branch might have a gap there.) */ SVN_ERR(branch_history_intersect_range(&contiguous_source, source_branch, yca->rev, base_rev, scratch_pool, scratch_pool)); SVN_ERR(branch_history_get_endpoints(NULL, base_p, contiguous_source, result_pool, scratch_pool)); } svn_pool_destroy(tmic_pool); return SVN_NO_ERROR; } /* Find a merge base location on the target branch, like in a sync * merge. * * BASE S_T->source * o-------o-----------o--- * / \ \ * -----o prev. \ \ this * YCA \ merge \ \ merge * o-----------o-----------o * S_T->target * * Set *BASE_P to BASE, the youngest location in the history of S_T->source * (at or after the YCA) at which all revisions up to BASE are effectively * merged into S_T->target. * * If no locations on the history of S_T->source are effectively merged to * S_T->target, set *BASE_P to the YCA. */ static svn_error_t * find_base_on_source(svn_client__pathrev_t **base_p, source_and_target_t *s_t, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { SVN_ERR(find_last_merged_location(base_p, s_t->yca, &s_t->source_branch, s_t->target_branch.tip, ctx, s_t->source_ra_session, result_pool, scratch_pool)); return SVN_NO_ERROR; } /* Find a merge base location on the target branch, like in a reintegrate * merge. * * S_T->source * o-----------o-------o--- * / prev. / \ * -----o merge / \ this * YCA \ / \ merge * o-------o---------------o * BASE S_T->target * * Set *BASE_P to BASE, the youngest location in the history of S_T->target * (at or after the YCA) at which all revisions up to BASE are effectively * merged into S_T->source. * * If no locations on the history of S_T->target are effectively merged to * S_T->source, set *BASE_P to the YCA. */ static svn_error_t * find_base_on_target(svn_client__pathrev_t **base_p, source_and_target_t *s_t, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { SVN_ERR(find_last_merged_location(base_p, s_t->yca, &s_t->target_branch, s_t->source, ctx, s_t->target_ra_session, result_pool, scratch_pool)); return SVN_NO_ERROR; } /* Find the last point at which the branch at S_T->source was completely * merged to the branch at S_T->target or vice-versa. * * Fill in S_T->source_branch and S_T->target_branch and S_T->yca. * Set *BASE_P to the merge base. Set *IS_REINTEGRATE_LIKE to true if * an automatic merge from source to target would be a reintegration * merge: that is, if the last automatic merge was in the opposite * direction; or to false otherwise. * * If there is no youngest common ancestor, throw an error. */ static svn_error_t * find_automatic_merge(svn_client__pathrev_t **base_p, svn_boolean_t *is_reintegrate_like, source_and_target_t *s_t, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_client__pathrev_t *base_on_source, *base_on_target; /* Get the location-history of each branch. */ s_t->source_branch.tip = s_t->source; SVN_ERR(svn_client__get_history_as_mergeinfo( &s_t->source_branch.history, &s_t->source_branch.has_r0_history, s_t->source, SVN_INVALID_REVNUM, SVN_INVALID_REVNUM, s_t->source_ra_session, ctx, scratch_pool)); s_t->target_branch.tip = &s_t->target->loc; SVN_ERR(svn_client__get_history_as_mergeinfo( &s_t->target_branch.history, &s_t->target_branch.has_r0_history, &s_t->target->loc, SVN_INVALID_REVNUM, SVN_INVALID_REVNUM, s_t->target_ra_session, ctx, scratch_pool)); SVN_ERR(svn_client__calc_youngest_common_ancestor( &s_t->yca, s_t->source, s_t->source_branch.history, s_t->source_branch.has_r0_history, &s_t->target->loc, s_t->target_branch.history, s_t->target_branch.has_r0_history, result_pool, scratch_pool)); if (! s_t->yca) return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL, _("'%s@%ld' must be ancestrally related to " "'%s@%ld'"), s_t->source->url, s_t->source->rev, s_t->target->loc.url, s_t->target->loc.rev); /* Find the latest revision of A synced to B and the latest * revision of B synced to A. * * base_on_source = youngest_complete_synced_point(source, target) * base_on_target = youngest_complete_synced_point(target, source) */ SVN_ERR(find_base_on_source(&base_on_source, s_t, ctx, scratch_pool, scratch_pool)); SVN_ERR(find_base_on_target(&base_on_target, s_t, ctx, scratch_pool, scratch_pool)); /* Choose a base. */ if (base_on_source->rev >= base_on_target->rev) { *base_p = base_on_source; *is_reintegrate_like = FALSE; } else { *base_p = base_on_target; *is_reintegrate_like = TRUE; } return SVN_NO_ERROR; } /** Find out what kind of automatic merge would be needed, when the target * is only known as a repository location rather than a WC. * * Like find_automatic_merge() except that the target is * specified by @a target_path_or_url at @a target_revision, which must * refer to a repository location, instead of by a WC path argument. * * Set *MERGE_P to a new structure with all fields filled in except the * 'allow_*' flags. */ static svn_error_t * find_automatic_merge_no_wc(automatic_merge_t **merge_p, const char *source_path_or_url, const svn_opt_revision_t *source_revision, const char *target_path_or_url, const svn_opt_revision_t *target_revision, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { source_and_target_t *s_t = apr_palloc(scratch_pool, sizeof(*s_t)); svn_client__pathrev_t *target_loc; automatic_merge_t *merge = apr_palloc(result_pool, sizeof(*merge)); /* Source */ SVN_ERR(svn_client__ra_session_from_path2( &s_t->source_ra_session, &s_t->source, source_path_or_url, NULL, source_revision, source_revision, ctx, result_pool)); /* Target */ SVN_ERR(svn_client__ra_session_from_path2( &s_t->target_ra_session, &target_loc, target_path_or_url, NULL, target_revision, target_revision, ctx, result_pool)); s_t->target = apr_palloc(scratch_pool, sizeof(*s_t->target)); s_t->target->abspath = NULL; /* indicate the target is not a WC */ s_t->target->loc = *target_loc; SVN_ERR(find_automatic_merge(&merge->base, &merge->is_reintegrate_like, s_t, ctx, result_pool, scratch_pool)); merge->right = s_t->source; merge->target = &s_t->target->loc; merge->yca = s_t->yca; *merge_p = merge; return SVN_NO_ERROR; } /* Find the information needed to merge all unmerged changes from a source * branch into a target branch. * * Set @a *merge_p to the information needed to merge all unmerged changes * (up to @a source_revision) from the source branch @a source_path_or_url * at @a source_revision into the target WC at @a target_abspath. * * The flags @a allow_mixed_rev, @a allow_local_mods and * @a allow_switched_subtrees enable merging into a WC that is in any or all * of the states described by their names, but only if this function decides * that the merge will be in the same direction as the last automatic merge. * If, on the other hand, the last automatic merge was in the opposite * direction, then such states of the WC are not allowed regardless * of these flags. This function merely records these flags in the * @a *merge_p structure; do_automatic_merge_locked() checks the WC * state for compliance. * * Allocate the @a *merge_p structure in @a result_pool. */ static svn_error_t * client_find_automatic_merge(automatic_merge_t **merge_p, const char *source_path_or_url, const svn_opt_revision_t *source_revision, const char *target_abspath, svn_boolean_t allow_mixed_rev, svn_boolean_t allow_local_mods, svn_boolean_t allow_switched_subtrees, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { source_and_target_t *s_t = apr_palloc(result_pool, sizeof(*s_t)); automatic_merge_t *merge = apr_palloc(result_pool, sizeof(*merge)); SVN_ERR_ASSERT(svn_dirent_is_absolute(target_abspath)); /* "Open" the target WC. Check the target WC for mixed-rev, local mods and * switched subtrees yet to faster exit and notify user before contacting * with server. After we find out what kind of merge is required, then if a * reintegrate-like merge is required we'll do the stricter checks, in * do_automatic_merge_locked(). */ SVN_ERR(open_target_wc(&s_t->target, target_abspath, allow_mixed_rev, allow_local_mods, allow_switched_subtrees, ctx, result_pool, scratch_pool)); if (!s_t->target->loc.url) return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL, _("Can't perform automatic merge into '%s' " "because it is locally added and therefore " "not related to the merge source"), svn_dirent_local_style(target_abspath, scratch_pool)); /* Open RA sessions to the source and target trees. */ SVN_ERR(svn_client_open_ra_session2(&s_t->target_ra_session, s_t->target->loc.url, s_t->target->abspath, ctx, result_pool, scratch_pool)); SVN_ERR(svn_client__ra_session_from_path2( &s_t->source_ra_session, &s_t->source, source_path_or_url, NULL, source_revision, source_revision, ctx, result_pool)); /* Check source is in same repos as target. */ SVN_ERR(check_same_repos(s_t->source, source_path_or_url, &s_t->target->loc, target_abspath, TRUE /* strict_urls */, scratch_pool)); SVN_ERR(find_automatic_merge(&merge->base, &merge->is_reintegrate_like, s_t, ctx, result_pool, scratch_pool)); merge->yca = s_t->yca; merge->right = s_t->source; merge->target = &s_t->target->loc; merge->allow_mixed_rev = allow_mixed_rev; merge->allow_local_mods = allow_local_mods; merge->allow_switched_subtrees = allow_switched_subtrees; *merge_p = merge; /* TODO: Close the source and target sessions here? */ return SVN_NO_ERROR; } /* Perform an automatic merge, given the information in MERGE which * must have come from calling client_find_automatic_merge(). * * Four locations are inputs: YCA, BASE, RIGHT, TARGET, as shown * depending on whether the base is on the source branch or the target * branch of this merge. * * RIGHT (is_reintegrate_like) * o-----------o-------o--- * / prev. / \ * -----o merge / \ this * YCA \ / \ merge * o-------o---------------o * BASE TARGET * * or * * BASE RIGHT (! is_reintegrate_like) * o-------o-----------o--- * / \ \ * -----o prev. \ \ this * YCA \ merge \ \ merge * o-----------o-----------o * TARGET * * ### TODO: The reintegrate-like code path does not yet * eliminate already-cherry-picked revisions from the source. */ static svn_error_t * do_automatic_merge_locked(svn_client__conflict_report_t **conflict_report, const automatic_merge_t *merge, const char *target_abspath, svn_depth_t depth, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { merge_target_t *target; svn_boolean_t reintegrate_like = merge->is_reintegrate_like; svn_boolean_t use_sleep = FALSE; svn_error_t *err; SVN_ERR(open_target_wc(&target, target_abspath, merge->allow_mixed_rev && ! reintegrate_like, merge->allow_local_mods && ! reintegrate_like, merge->allow_switched_subtrees && ! reintegrate_like, ctx, scratch_pool, scratch_pool)); if (reintegrate_like) { merge_source_t source; svn_ra_session_t *base_ra_session = NULL; svn_ra_session_t *right_ra_session = NULL; svn_ra_session_t *target_ra_session = NULL; if (record_only) return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("The required merge is reintegrate-like, " "and the record-only option " "cannot be used with this kind of merge")); if (depth != svn_depth_unknown) return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("The required merge is reintegrate-like, " "and the depth option " "cannot be used with this kind of merge")); if (force_delete) return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL, _("The required merge is reintegrate-like, " "and the force_delete option " "cannot be used with this kind of merge")); SVN_ERR(ensure_ra_session_url(&base_ra_session, merge->base->url, target->abspath, ctx, scratch_pool)); SVN_ERR(ensure_ra_session_url(&right_ra_session, merge->right->url, target->abspath, ctx, scratch_pool)); SVN_ERR(ensure_ra_session_url(&target_ra_session, target->loc.url, target->abspath, ctx, scratch_pool)); /* Check for and reject any abnormalities -- such as revisions that * have not yet been merged in the opposite direction -- that a * 'reintegrate' merge would have rejected. */ { merge_source_t *source2; SVN_ERR(find_reintegrate_merge(&source2, NULL, right_ra_session, merge->right, target_ra_session, target, ctx, scratch_pool, scratch_pool)); } source.loc1 = merge->base; source.loc2 = merge->right; source.ancestral = ! merge->is_reintegrate_like; err = merge_cousins_and_supplement_mergeinfo(conflict_report, &use_sleep, target, base_ra_session, right_ra_session, &source, merge->yca, TRUE /* same_repos */, depth, FALSE /*diff_ignore_ancestry*/, force_delete, record_only, dry_run, merge_options, ctx, result_pool, scratch_pool); } else /* ! merge->is_reintegrate_like */ { /* Ignoring the base that we found, we pass the YCA instead and let do_merge() work out which subtrees need which revision ranges to be merged. This enables do_merge() to fill in revision-range gaps that are older than the base that we calculated (which is for the root path of the merge). An improvement would be to change find_automatic_merge() to find the base for each sutree, and then here use the oldest base among all subtrees. */ apr_array_header_t *merge_sources; svn_ra_session_t *ra_session = NULL; /* Normalize our merge sources, do_merge() requires this. See the 'MERGEINFO MERGE SOURCE NORMALIZATION' global comment. */ SVN_ERR(ensure_ra_session_url(&ra_session, merge->right->url, target->abspath, ctx, scratch_pool)); SVN_ERR(normalize_merge_sources_internal( &merge_sources, merge->right, svn_rangelist__initialize(merge->yca->rev, merge->right->rev, TRUE, scratch_pool), ra_session, ctx, scratch_pool, scratch_pool)); err = do_merge(NULL, NULL, conflict_report, &use_sleep, merge_sources, target, ra_session, TRUE /*related*/, TRUE /*same_repos*/, FALSE /*ignore_mergeinfo*/, diff_ignore_ancestry, force_delete, dry_run, record_only, NULL, FALSE, FALSE, depth, merge_options, ctx, result_pool, scratch_pool); } if (use_sleep) svn_io_sleep_for_timestamps(target_abspath, scratch_pool); SVN_ERR(err); return SVN_NO_ERROR; } svn_error_t * svn_client_get_merging_summary(svn_boolean_t *needs_reintegration, const char **yca_url, svn_revnum_t *yca_rev, const char **base_url, svn_revnum_t *base_rev, const char **right_url, svn_revnum_t *right_rev, const char **target_url, svn_revnum_t *target_rev, const char **repos_root_url, const char *source_path_or_url, const svn_opt_revision_t *source_revision, const char *target_path_or_url, const svn_opt_revision_t *target_revision, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_boolean_t target_is_wc; automatic_merge_t *merge; target_is_wc = (! svn_path_is_url(target_path_or_url)) && (target_revision->kind == svn_opt_revision_unspecified || target_revision->kind == svn_opt_revision_working || target_revision->kind == svn_opt_revision_base); if (target_is_wc) { const char *target_abspath; SVN_ERR(svn_dirent_get_absolute(&target_abspath, target_path_or_url, scratch_pool)); SVN_ERR(client_find_automatic_merge( &merge, source_path_or_url, source_revision, target_abspath, TRUE, TRUE, TRUE, /* allow_* */ ctx, scratch_pool, scratch_pool)); } else SVN_ERR(find_automatic_merge_no_wc( &merge, source_path_or_url, source_revision, target_path_or_url, target_revision, ctx, scratch_pool, scratch_pool)); if (needs_reintegration) *needs_reintegration = merge->is_reintegrate_like; if (yca_url) *yca_url = apr_pstrdup(result_pool, merge->yca->url); if (yca_rev) *yca_rev = merge->yca->rev; if (base_url) *base_url = apr_pstrdup(result_pool, merge->base->url); if (base_rev) *base_rev = merge->base->rev; if (right_url) *right_url = apr_pstrdup(result_pool, merge->right->url); if (right_rev) *right_rev = merge->right->rev; if (target_url) *target_url = apr_pstrdup(result_pool, merge->target->url); if (target_rev) *target_rev = merge->target->rev; if (repos_root_url) *repos_root_url = apr_pstrdup(result_pool, merge->yca->repos_root_url); return SVN_NO_ERROR; } diff --git a/contrib/subversion/subversion/libsvn_client/mergeinfo.h b/contrib/subversion/subversion/libsvn_client/mergeinfo.h index 1d6d524f5dd2..99e1bf9f80c7 100644 --- a/contrib/subversion/subversion/libsvn_client/mergeinfo.h +++ b/contrib/subversion/subversion/libsvn_client/mergeinfo.h @@ -1,414 +1,412 @@ /* * mergeinfo.h : Client library-internal mergeinfo APIs. * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #ifndef SVN_LIBSVN_CLIENT_MERGEINFO_H #define SVN_LIBSVN_CLIENT_MERGEINFO_H #include "svn_wc.h" #include "svn_client.h" #include "private/svn_client_private.h" /*** Data Structures ***/ /* Structure to store information about working copy paths that need special consideration during a mergeinfo aware merge -- See the 'THE CHILDREN_WITH_MERGEINFO ARRAY' meta comment and the doc string for the function get_mergeinfo_paths() in libsvn_client/merge.c. */ typedef struct svn_client__merge_path_t { const char *abspath; /* Absolute working copy path. */ svn_boolean_t missing_child; /* ABSPATH has an immediate child which is missing, but is not switched. */ svn_boolean_t switched_child; /* ABSPATH has an immediate child which is switched. */ svn_boolean_t switched; /* ABSPATH is switched. */ svn_boolean_t has_noninheritable; /* ABSPATH has svn:mergeinfo set on it which includes non-inheritable revision ranges. */ svn_boolean_t absent; /* ABSPATH is absent from the WC, probably due to authz restrictions. */ svn_boolean_t child_of_noninheritable; /* ABSPATH has no explicit mergeinfo itself but is the child of a path with noniheritable mergeinfo. */ /* The remaining ranges to be merged to ABSPATH. When describing a forward merge this rangelist adheres to the rules for rangelists described in svn_mergeinfo.h. However, when describing reverse merges this rangelist can contain reverse merge ranges that are not sorted per svn_sort_compare_ranges(), but rather are sorted such that the ranges with the youngest start revisions come first. In both the forward and reverse merge cases the ranges should never overlap. This rangelist may be empty but should never be NULL unless ABSENT is true. */ svn_rangelist_t *remaining_ranges; svn_mergeinfo_t pre_merge_mergeinfo; /* Explicit or inherited mergeinfo on ABSPATH prior to a merge. May be NULL. */ svn_mergeinfo_t implicit_mergeinfo; /* Implicit mergeinfo on ABSPATH prior to a merge. May be NULL. */ svn_boolean_t inherited_mergeinfo; /* Whether PRE_MERGE_MERGEINFO was explicit or inherited. */ - svn_boolean_t scheduled_for_deletion; /* ABSPATH is scheduled for - deletion. */ svn_boolean_t immediate_child_dir; /* ABSPATH is an immediate child directory of the merge target, has no explicit mergeinfo prior to the merge, and the operational depth of the merge is svn_depth_immediates. */ svn_boolean_t record_mergeinfo; /* Mergeinfo needs to be recorded on ABSPATH to describe the merge. */ svn_boolean_t record_noninheritable; /* Non-inheritable mergeinfo needs to be recorded on ABSPATH to describe the merge. Implies RECORD_MERGEINFO is true. */ } svn_client__merge_path_t; /* Return a deep copy of the merge-path structure OLD, allocated in POOL. */ svn_client__merge_path_t * svn_client__merge_path_dup(const svn_client__merge_path_t *old, apr_pool_t *pool); /* Create a new merge path structure, allocated in POOL. Initialize the * 'abspath' member to a deep copy of ABSPATH and all other fields to zero * bytes. */ svn_client__merge_path_t * svn_client__merge_path_create(const char *abspath, apr_pool_t *pool); /*** Functions ***/ /* Find explicit or inherited WC mergeinfo for LOCAL_ABSPATH, and return it in *MERGEINFO (NULL if no mergeinfo is set). Set *INHERITED to whether the mergeinfo was inherited (TRUE or FALSE), if INHERITED is non-null. This function will search for inherited mergeinfo in the parents of LOCAL_ABSPATH only if the base revision of LOCAL_ABSPATH falls within the range of the parent's last committed revision to the parent's base revision (inclusive) or is LOCAL_ABSPATH is a local addition. If asking for the inherited mergeinfo of an added path (i.e. one with no base revision), that path may inherit mergeinfo from its nearest parent with a base revision and explicit mergeinfo. INHERIT indicates whether explicit, explicit or inherited, or only inherited mergeinfo for LOCAL_ABSPATH is retrieved. Don't look for inherited mergeinfo any higher than LIMIT_ABSPATH (ignored if NULL) or beyond any switched path. Set *WALKED_PATH to the path climbed from LOCAL_ABSPATH to find inherited mergeinfo, or "" if none was found. (ignored if NULL). If IGNORE_INVALID_MERGEINFO is true, then syntactically invalid explicit mergeinfo on found on LOCAL_ABSPATH is ignored and *MERGEINFO is set to an empty hash. If IGNORE_INVALID_MERGEINFO is false, then syntactically invalid explicit mergeinfo on found on LOCAL_ABSPATH results in a SVN_ERR_MERGEINFO_PARSE_ERROR error. Regardless of IGNORE_INVALID_MERGEINFO, if LOCAL_ABSPATH inherits invalid mergeinfo, then *MERGEINFO is always set to an empty hash and no parse error is raised. */ svn_error_t * svn_client__get_wc_mergeinfo(svn_mergeinfo_t *mergeinfo, svn_boolean_t *inherited, svn_mergeinfo_inheritance_t inherit, const char *local_abspath, const char *limit_abspath, const char **walked_path, svn_boolean_t ignore_invalid_mergeinfo, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /* If INCLUDE_DESCENDANTS is FALSE, behave exactly like svn_client__get_wc_mergeinfo() except the mergeinfo for LOCAL_ABSPATH is put in the mergeinfo catalog MERGEINFO_CAT, mapped from LOCAL_ABSPATH's repository root-relative path. If INCLUDE_DESCENDANTS is true, then any subtrees under LOCAL_ABSPATH with explicit mergeinfo are also included in MERGEINFO_CAT and again the keys are the repository root-relative paths of the subtrees. If no mergeinfo is found, then *MERGEINFO_CAT is set to NULL. */ svn_error_t * svn_client__get_wc_mergeinfo_catalog(svn_mergeinfo_catalog_t *mergeinfo_cat, svn_boolean_t *inherited, svn_boolean_t include_descendants, svn_mergeinfo_inheritance_t inherit, const char *local_abspath, const char *limit_path, const char **walked_path, svn_boolean_t ignore_invalid_mergeinfo, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /* Obtain any mergeinfo for URL from the repository, and set it in *TARGET_MERGEINFO. INHERIT indicates whether explicit, explicit or inherited, or only inherited mergeinfo for URL is obtained. If URL does not exist at REV, SVN_ERR_FS_NOT_FOUND or SVN_ERR_RA_DAV_REQUEST_FAILED is returned and *TARGET_MERGEINFO is untouched. If there is no mergeinfo available for URL, or if the server doesn't support a mergeinfo capability and SQUELCH_INCAPABLE is TRUE, set *TARGET_MERGEINFO to NULL. If the server doesn't support a mergeinfo capability and SQUELCH_INCAPABLE is FALSE, return an SVN_ERR_UNSUPPORTED_FEATURE error. RA_SESSION is an open RA session to the repository in which URL lives; it may be temporarily reparented by this function. */ svn_error_t * svn_client__get_repos_mergeinfo(svn_mergeinfo_t *target_mergeinfo, svn_ra_session_t *ra_session, const char *url, svn_revnum_t rev, svn_mergeinfo_inheritance_t inherit, svn_boolean_t squelch_incapable, apr_pool_t *pool); /* If INCLUDE_DESCENDANTS is FALSE, behave exactly like svn_client__get_repos_mergeinfo() except the mergeinfo for URL is put in the mergeinfo catalog MERGEINFO_CAT, with the key being the repository root-relative path of URL. If INCLUDE_DESCENDANTS is true, then any subtrees under URL with explicit mergeinfo are also included in MERGEINFO_CAT. The keys for the subtree mergeinfo are the repository root-relative paths of the subtrees. If no mergeinfo is found, then *TARGET_MERGEINFO_CAT is set to NULL. */ svn_error_t * svn_client__get_repos_mergeinfo_catalog(svn_mergeinfo_catalog_t *mergeinfo_cat, svn_ra_session_t *ra_session, const char *url, svn_revnum_t rev, svn_mergeinfo_inheritance_t inherit, svn_boolean_t squelch_incapable, svn_boolean_t include_descendants, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /* Retrieve the direct mergeinfo for the TARGET_WCPATH from the WC's mergeinfo prop, or that inherited from its nearest ancestor if the target has no info of its own. If no mergeinfo can be obtained from the WC or REPOS_ONLY is TRUE, get it from the repository. If the repository is contacted for mergeinfo and RA_SESSION does not point to TARGET_WCPATH's URL, then it is temporarily reparented. If RA_SESSION is NULL, then a temporary session is opened as needed. Store any mergeinfo obtained for TARGET_WCPATH in *TARGET_MERGEINFO, if no mergeinfo is found *TARGET_MERGEINFO is NULL. Like svn_client__get_wc_mergeinfo(), this function considers no inherited mergeinfo to be found in the WC when trying to crawl into a parent path with a different working revision. INHERIT indicates whether explicit, explicit or inherited, or only inherited mergeinfo for TARGET_WCPATH is retrieved. If FROM_REPOS is not NULL, then set *FROM_REPOS to true if *TARGET_MERGEINFO is inherited and the repository was contacted to obtain it. Set *FROM_REPOS to false otherwise. If TARGET_WCPATH inherited its mergeinfo from a working copy ancestor or if it was obtained from the repository, set *INHERITED to TRUE, set it to FALSE otherwise, if INHERITED is non-null. */ svn_error_t * svn_client__get_wc_or_repos_mergeinfo(svn_mergeinfo_t *target_mergeinfo, svn_boolean_t *inherited, svn_boolean_t *from_repos, svn_boolean_t repos_only, svn_mergeinfo_inheritance_t inherit, svn_ra_session_t *ra_session, const char *target_wcpath, svn_client_ctx_t *ctx, apr_pool_t *pool); /* If INCLUDE_DESCENDANTS is false then behaves exactly like svn_client__get_wc_or_repos_mergeinfo() except the mergeinfo for TARGET_WCPATH is put in the mergeinfo catalog TARGET_MERGEINFO_CATALOG, mapped from TARGET_WCPATH's repository root-relative path. IGNORE_INVALID_MERGEINFO behaves as per the argument of the same name to svn_client__get_wc_mergeinfo(). It is applicable only if the mergeinfo for TARGET_WCPATH is obtained from the working copy. If INCLUDE_DESCENDANTS is true, then any subtrees under TARGET_WCPATH with explicit mergeinfo are also included in TARGET_MERGEINFO_CATALOG and again the keys are the repository root-relative paths of the subtrees. If no mergeinfo is found, then *TARGET_MERGEINFO_CAT is set to NULL. */ svn_error_t * svn_client__get_wc_or_repos_mergeinfo_catalog( svn_mergeinfo_catalog_t *target_mergeinfo_catalog, svn_boolean_t *inherited, svn_boolean_t *from_repos, svn_boolean_t include_descendants, svn_boolean_t repos_only, svn_boolean_t ignore_invalid_mergeinfo, svn_mergeinfo_inheritance_t inherit, svn_ra_session_t *ra_session, const char *target_wcpath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /* Set *MERGEINFO_P to a mergeinfo constructed solely from the natural history of PATHREV. If RANGE_YOUNGEST and RANGE_OLDEST are valid, use them as inclusive bounds on the revision ranges of returned mergeinfo. PATHREV->rev, RANGE_YOUNGEST and RANGE_OLDEST are governed by the same rules as the PEG_REVISION, START_REV, and END_REV parameters (respectively) of svn_ra_get_location_segments(). If HAS_REV_ZERO_HISTORY is not NULL, then set *HAS_REV_ZERO_HISTORY to TRUE if the natural history includes revision 0, else to FALSE. RA_SESSION is an open RA session to the repository of PATHREV; it may be temporarily reparented by this function. */ svn_error_t * svn_client__get_history_as_mergeinfo(svn_mergeinfo_t *mergeinfo_p, svn_boolean_t *has_rev_zero_history, const svn_client__pathrev_t *pathrev, svn_revnum_t range_youngest, svn_revnum_t range_oldest, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *pool); /* Parse any explicit mergeinfo on LOCAL_ABSPATH and store it in *MERGEINFO. If no record of any mergeinfo exists, set *MERGEINFO to NULL. Does not acount for inherited mergeinfo. Allocate the result deeply in @a result_pool. */ svn_error_t * svn_client__parse_mergeinfo(svn_mergeinfo_t *mergeinfo, svn_wc_context_t *wc_ctx, const char *local_abspath, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /* Write MERGEINFO into the WC for LOCAL_ABSPATH. If MERGEINFO is NULL, remove any SVN_PROP_MERGEINFO for LOCAL_ABSPATH. If MERGEINFO is empty, record an empty property value (e.g. ""). If CTX->NOTIFY_FUNC2 is not null call it with notification type svn_wc_notify_merge_record_info if DO_NOTIFICATION is true. Use WC_CTX to access the working copy, and SCRATCH_POOL for any temporary allocations. */ svn_error_t * svn_client__record_wc_mergeinfo(const char *local_abspath, svn_mergeinfo_t mergeinfo, svn_boolean_t do_notification, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool); /* Write mergeinfo into the WC. * * For each path in RESULT_CATALOG, set the SVN_PROP_MERGEINFO * property to represent the given mergeinfo, or remove the property * if the given mergeinfo is null, and notify the change. Leave * other paths unchanged. RESULT_CATALOG maps (const char *) WC paths * to (svn_mergeinfo_t) mergeinfo. */ svn_error_t * svn_client__record_wc_mergeinfo_catalog(apr_hash_t *result_catalog, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool); /* Elide any svn:mergeinfo set on TARGET_ABSPATH to its nearest working copy (or possibly repository) ancestor with equivalent mergeinfo. If WC_ELISION_LIMIT_ABSPATH is NULL check up to the root of the working copy or the nearest switched parent for an elision destination, if none is found check the repository, otherwise check as far as WC_ELISION_LIMIT_ABSPATH within the working copy. Elision occurs if: A) TARGET_ABSPATH has empty mergeinfo and no parent path with explicit mergeinfo can be found in either the WC or the repository (WC_ELISION_LIMIT_PATH must be NULL for this to occur). B) TARGET_ABSPATH has empty mergeinfo and its nearest parent also has empty mergeinfo. C) TARGET_ABSPATH has the same mergeinfo as its nearest parent when that parent's mergeinfo is adjusted for the path difference between the two, e.g.: TARGET_ABSPATH = A_COPY/D/H TARGET_ABSPATH's mergeinfo = '/A/D/H:3' TARGET_ABSPATH nearest parent = A_COPY Parent's mergeinfo = '/A:3' Path difference = 'D/H' Parent's adjusted mergeinfo = '/A/D/H:3' If Elision occurs remove the svn:mergeinfo property from TARGET_ABSPATH. */ svn_error_t * svn_client__elide_mergeinfo(const char *target_abspath, const char *wc_elision_limit_abspath, svn_client_ctx_t *ctx, apr_pool_t *pool); /* Simplify a mergeinfo catalog, if possible, via elision. For each path in MERGEINFO_CATALOG, check if the path's mergeinfo can elide to the path's nearest path-wise parent in MERGEINFO_CATALOG. If so, remove that path from MERGEINFO_CATALOG. Elidability is determined as per svn_client__elide_mergeinfo except that elision to the repository is not considered. SCRATCH_POOL is used for temporary allocations. */ svn_error_t * svn_client__elide_mergeinfo_catalog(svn_mergeinfo_catalog_t mergeinfo_catalog, apr_pool_t *scratch_pool); /* Set *MERGEINFO_CHANGES to TRUE if LOCAL_ABSPATH has locally modified mergeinfo, set *MERGEINFO_CHANGES to FALSE otherwise. */ svn_error_t * svn_client__mergeinfo_status(svn_boolean_t *mergeinfo_changes, svn_wc_context_t *wc_ctx, const char *local_abspath, apr_pool_t *scratch_pool); #endif /* SVN_LIBSVN_CLIENT_MERGEINFO_H */ diff --git a/contrib/subversion/subversion/libsvn_client/mtcc.c b/contrib/subversion/subversion/libsvn_client/mtcc.c index 48ddcccbc164..a7c86a49a472 100644 --- a/contrib/subversion/subversion/libsvn_client/mtcc.c +++ b/contrib/subversion/subversion/libsvn_client/mtcc.c @@ -1,1486 +1,1487 @@ /* * mtcc.c -- Multi Command Context implementation. This allows * performing many operations without a working copy. * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include "svn_dirent_uri.h" #include "svn_hash.h" #include "svn_path.h" #include "svn_props.h" #include "svn_pools.h" #include "svn_subst.h" #include "private/svn_client_mtcc.h" #include "svn_private_config.h" #include "client.h" #include #define SVN_PATH_IS_EMPTY(s) ((s)[0] == '\0') /* The kind of operation to perform in an mtcc_op_t */ typedef enum mtcc_kind_t { OP_OPEN_DIR, OP_OPEN_FILE, OP_ADD_DIR, OP_ADD_FILE, OP_DELETE } mtcc_kind_t; typedef struct mtcc_op_t { const char *name; /* basename of operation */ mtcc_kind_t kind; /* editor operation */ apr_array_header_t *children; /* List of mtcc_op_t * */ const char *src_relpath; /* For ADD_DIR, ADD_FILE */ svn_revnum_t src_rev; /* For ADD_DIR, ADD_FILE */ svn_stream_t *src_stream; /* For ADD_FILE, OPEN_FILE */ svn_checksum_t *src_checksum; /* For ADD_FILE, OPEN_FILE */ svn_stream_t *base_stream; /* For ADD_FILE, OPEN_FILE */ const svn_checksum_t *base_checksum; /* For ADD_FILE, OPEN_FILE */ apr_array_header_t *prop_mods; /* For all except DELETE List of svn_prop_t */ svn_boolean_t performed_stat; /* Verified kind with repository */ } mtcc_op_t; /* Check if the mtcc doesn't contain any modifications yet */ #define MTCC_UNMODIFIED(mtcc) \ ((mtcc->root_op->kind == OP_OPEN_DIR \ || mtcc->root_op->kind == OP_OPEN_FILE) \ && (mtcc->root_op->prop_mods == NULL \ || !mtcc->root_op->prop_mods->nelts) \ && (mtcc->root_op->children == NULL \ || !mtcc->root_op->children->nelts)) struct svn_client__mtcc_t { apr_pool_t *pool; svn_revnum_t head_revision; svn_revnum_t base_revision; svn_ra_session_t *ra_session; svn_client_ctx_t *ctx; mtcc_op_t *root_op; }; static mtcc_op_t * mtcc_op_create(const char *name, svn_boolean_t add, svn_boolean_t directory, apr_pool_t *result_pool) { mtcc_op_t *op; op = apr_pcalloc(result_pool, sizeof(*op)); op->name = name ? apr_pstrdup(result_pool, name) : ""; if (add) op->kind = directory ? OP_ADD_DIR : OP_ADD_FILE; else op->kind = directory ? OP_OPEN_DIR : OP_OPEN_FILE; if (directory) op->children = apr_array_make(result_pool, 4, sizeof(mtcc_op_t *)); op->src_rev = SVN_INVALID_REVNUM; return op; } static svn_error_t * mtcc_op_find(mtcc_op_t **op, svn_boolean_t *created, const char *relpath, mtcc_op_t *base_op, svn_boolean_t find_existing, svn_boolean_t find_deletes, svn_boolean_t create_file, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *name; const char *child; int i; assert(svn_relpath_is_canonical(relpath)); if (created) *created = FALSE; if (SVN_PATH_IS_EMPTY(relpath)) { if (find_existing) *op = base_op; else *op = NULL; return SVN_NO_ERROR; } child = strchr(relpath, '/'); if (child) { name = apr_pstrmemdup(scratch_pool, relpath, (child-relpath)); child++; /* Skip '/' */ } else name = relpath; if (!base_op->children) { if (!created) { *op = NULL; return SVN_NO_ERROR; } else return svn_error_createf(SVN_ERR_FS_NOT_DIRECTORY, NULL, _("Can't operate on '%s' because '%s' is not a " "directory"), name, base_op->name); } for (i = base_op->children->nelts-1; i >= 0 ; i--) { mtcc_op_t *cop; cop = APR_ARRAY_IDX(base_op->children, i, mtcc_op_t *); if (! strcmp(cop->name, name) && (find_deletes || cop->kind != OP_DELETE)) { return svn_error_trace( mtcc_op_find(op, created, child ? child : "", cop, find_existing, find_deletes, create_file, result_pool, scratch_pool)); } } if (!created) { *op = NULL; return SVN_NO_ERROR; } { mtcc_op_t *cop; cop = mtcc_op_create(name, FALSE, child || !create_file, result_pool); APR_ARRAY_PUSH(base_op->children, mtcc_op_t *) = cop; if (!child) { *op = cop; *created = TRUE; return SVN_NO_ERROR; } return svn_error_trace( mtcc_op_find(op, created, child, cop, find_existing, find_deletes, create_file, result_pool, scratch_pool)); } } /* Gets the original repository location of RELPATH, checking things like copies, moves, etc. */ static svn_error_t * get_origin(svn_boolean_t *done, const char **origin_relpath, svn_revnum_t *rev, mtcc_op_t *op, const char *relpath, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { const char *child; const char *name; if (SVN_PATH_IS_EMPTY(relpath)) { if (op->kind == OP_ADD_DIR || op->kind == OP_ADD_FILE) *done = TRUE; *origin_relpath = op->src_relpath ? apr_pstrdup(result_pool, op->src_relpath) : NULL; *rev = op->src_rev; return SVN_NO_ERROR; } child = strchr(relpath, '/'); if (child) { name = apr_pstrmemdup(scratch_pool, relpath, child-relpath); child++; /* Skip '/' */ } else name = relpath; if (op->children && op->children->nelts) { int i; for (i = op->children->nelts-1; i >= 0; i--) { mtcc_op_t *cop; cop = APR_ARRAY_IDX(op->children, i, mtcc_op_t *); if (! strcmp(cop->name, name)) { if (cop->kind == OP_DELETE) { *done = TRUE; return SVN_NO_ERROR; } SVN_ERR(get_origin(done, origin_relpath, rev, cop, child ? child : "", result_pool, scratch_pool)); if (*origin_relpath || *done) return SVN_NO_ERROR; break; } } } if (op->kind == OP_ADD_DIR || op->kind == OP_ADD_FILE) { *done = TRUE; if (op->src_relpath) { *origin_relpath = svn_relpath_join(op->src_relpath, relpath, result_pool); *rev = op->src_rev; } } return SVN_NO_ERROR; } /* Obtains the original repository location for an mtcc relpath as *ORIGIN_RELPATH @ *REV, if it has one. If it has not and IGNORE_ENOENT is TRUE report *ORIGIN_RELPATH as NULL, otherwise return an error */ static svn_error_t * mtcc_get_origin(const char **origin_relpath, svn_revnum_t *rev, const char *relpath, svn_boolean_t ignore_enoent, svn_client__mtcc_t *mtcc, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_boolean_t done = FALSE; *origin_relpath = NULL; *rev = SVN_INVALID_REVNUM; SVN_ERR(get_origin(&done, origin_relpath, rev, mtcc->root_op, relpath, result_pool, scratch_pool)); if (!*origin_relpath && !done) { *origin_relpath = apr_pstrdup(result_pool, relpath); *rev = mtcc->base_revision; } else if (!ignore_enoent) { return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL, _("No origin found for node at '%s'"), relpath); } return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_create(svn_client__mtcc_t **mtcc, const char *anchor_url, svn_revnum_t base_revision, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_pool_t *mtcc_pool; mtcc_pool = svn_pool_create(result_pool); *mtcc = apr_pcalloc(mtcc_pool, sizeof(**mtcc)); (*mtcc)->pool = mtcc_pool; (*mtcc)->root_op = mtcc_op_create(NULL, FALSE, TRUE, mtcc_pool); (*mtcc)->ctx = ctx; SVN_ERR(svn_client_open_ra_session2(&(*mtcc)->ra_session, anchor_url, NULL /* wri_abspath */, ctx, mtcc_pool, scratch_pool)); SVN_ERR(svn_ra_get_latest_revnum((*mtcc)->ra_session, &(*mtcc)->head_revision, scratch_pool)); if (SVN_IS_VALID_REVNUM(base_revision)) (*mtcc)->base_revision = base_revision; else (*mtcc)->base_revision = (*mtcc)->head_revision; if ((*mtcc)->base_revision > (*mtcc)->head_revision) return svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, NULL, _("No such revision %ld (HEAD is %ld)"), base_revision, (*mtcc)->head_revision); return SVN_NO_ERROR; } static svn_error_t * update_copy_src(mtcc_op_t *op, const char *add_relpath, apr_pool_t *result_pool) { int i; if (op->src_relpath) op->src_relpath = svn_relpath_join(add_relpath, op->src_relpath, result_pool); if (!op->children) return SVN_NO_ERROR; for (i = 0; i < op->children->nelts; i++) { mtcc_op_t *cop; cop = APR_ARRAY_IDX(op->children, i, mtcc_op_t *); SVN_ERR(update_copy_src(cop, add_relpath, result_pool)); } return SVN_NO_ERROR; } static svn_error_t * mtcc_reparent(const char *new_anchor_url, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { const char *session_url; const char *up; SVN_ERR(svn_ra_get_session_url(mtcc->ra_session, &session_url, scratch_pool)); up = svn_uri_skip_ancestor(new_anchor_url, session_url, scratch_pool); if (! up) { return svn_error_createf(SVN_ERR_RA_ILLEGAL_URL, NULL, _("'%s' is not an ancestor of '%s'"), new_anchor_url, session_url); } else if (!*up) { return SVN_NO_ERROR; /* Same url */ } /* Update copy origins recursively...:( */ SVN_ERR(update_copy_src(mtcc->root_op, up, mtcc->pool)); SVN_ERR(svn_ra_reparent(mtcc->ra_session, new_anchor_url, scratch_pool)); /* Create directory open operations for new ancestors */ while (*up) { mtcc_op_t *root_op; mtcc->root_op->name = svn_relpath_basename(up, mtcc->pool); up = svn_relpath_dirname(up, scratch_pool); root_op = mtcc_op_create(NULL, FALSE, TRUE, mtcc->pool); APR_ARRAY_PUSH(root_op->children, mtcc_op_t *) = mtcc->root_op; mtcc->root_op = root_op; } return SVN_NO_ERROR; } /* Check if it is safe to create a new node at NEW_RELPATH. Return a proper error if it is not */ static svn_error_t * mtcc_verify_create(svn_client__mtcc_t *mtcc, const char *new_relpath, apr_pool_t *scratch_pool) { svn_node_kind_t kind; if (*new_relpath || !MTCC_UNMODIFIED(mtcc)) { mtcc_op_t *op; SVN_ERR(mtcc_op_find(&op, NULL, new_relpath, mtcc->root_op, TRUE, FALSE, FALSE, mtcc->pool, scratch_pool)); if (op) return svn_error_createf(SVN_ERR_FS_ALREADY_EXISTS, NULL, - _("Path '%s' already exists"), + _("Path '%s' already exists, or was created " + "by an earlier operation"), new_relpath); SVN_ERR(mtcc_op_find(&op, NULL, new_relpath, mtcc->root_op, TRUE, TRUE, FALSE, mtcc->pool, scratch_pool)); if (op) return SVN_NO_ERROR; /* Node is explicitly deleted. We can replace */ } /* mod_dav_svn used to allow overwriting existing directories. Let's hide that for users of this api */ SVN_ERR(svn_client__mtcc_check_path(&kind, new_relpath, FALSE, mtcc, scratch_pool)); if (kind != svn_node_none) return svn_error_createf(SVN_ERR_FS_ALREADY_EXISTS, NULL, _("Path '%s' already exists"), new_relpath); return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_add_add_file(const char *relpath, svn_stream_t *src_stream, const svn_checksum_t *src_checksum, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { mtcc_op_t *op; svn_boolean_t created; SVN_ERR_ASSERT(svn_relpath_is_canonical(relpath) && src_stream); SVN_ERR(mtcc_verify_create(mtcc, relpath, scratch_pool)); if (SVN_PATH_IS_EMPTY(relpath) && MTCC_UNMODIFIED(mtcc)) { /* Turn the root operation into a file addition */ op = mtcc->root_op; } else { SVN_ERR(mtcc_op_find(&op, &created, relpath, mtcc->root_op, FALSE, FALSE, TRUE, mtcc->pool, scratch_pool)); if (!op || !created) { return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't add file at '%s'"), relpath); } } op->kind = OP_ADD_FILE; op->src_stream = src_stream; op->src_checksum = src_checksum ? svn_checksum_dup(src_checksum, mtcc->pool) : NULL; return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_add_copy(const char *src_relpath, svn_revnum_t revision, const char *dst_relpath, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { mtcc_op_t *op; svn_boolean_t created; svn_node_kind_t kind; SVN_ERR_ASSERT(svn_relpath_is_canonical(src_relpath) && svn_relpath_is_canonical(dst_relpath)); if (! SVN_IS_VALID_REVNUM(revision)) revision = mtcc->head_revision; else if (revision > mtcc->head_revision) { return svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, NULL, _("No such revision %ld"), revision); } SVN_ERR(mtcc_verify_create(mtcc, dst_relpath, scratch_pool)); /* Subversion requires the kind of a copy */ SVN_ERR(svn_ra_check_path(mtcc->ra_session, src_relpath, revision, &kind, scratch_pool)); if (kind != svn_node_dir && kind != svn_node_file) { return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL, _("Path '%s' not found in revision %ld"), src_relpath, revision); } SVN_ERR(mtcc_op_find(&op, &created, dst_relpath, mtcc->root_op, FALSE, FALSE, (kind == svn_node_file), mtcc->pool, scratch_pool)); if (!op || !created) { return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't add node at '%s'"), dst_relpath); } op->kind = (kind == svn_node_file) ? OP_ADD_FILE : OP_ADD_DIR; op->src_relpath = apr_pstrdup(mtcc->pool, src_relpath); op->src_rev = revision; return SVN_NO_ERROR; } /* Check if this operation contains at least one change that is not a plain delete */ static svn_boolean_t mtcc_op_contains_non_delete(const mtcc_op_t *op) { if (op->kind != OP_OPEN_DIR && op->kind != OP_OPEN_FILE && op->kind != OP_DELETE) { return TRUE; } if (op->prop_mods && op->prop_mods->nelts) return TRUE; if (op->src_stream) return TRUE; if (op->children) { int i; for (i = 0; i < op->children->nelts; i++) { const mtcc_op_t *c_op = APR_ARRAY_IDX(op->children, i, const mtcc_op_t *); if (mtcc_op_contains_non_delete(c_op)) return TRUE; } } return FALSE; } static svn_error_t * mtcc_add_delete(const char *relpath, svn_boolean_t for_move, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { mtcc_op_t *op; svn_boolean_t created; svn_node_kind_t kind; SVN_ERR_ASSERT(svn_relpath_is_canonical(relpath)); SVN_ERR(svn_client__mtcc_check_path(&kind, relpath, FALSE, mtcc, scratch_pool)); if (kind == svn_node_none) return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL, _("Can't delete node at '%s' as it " "does not exist"), relpath); if (SVN_PATH_IS_EMPTY(relpath) && MTCC_UNMODIFIED(mtcc)) { /* Turn root operation into delete */ op = mtcc->root_op; } else { SVN_ERR(mtcc_op_find(&op, &created, relpath, mtcc->root_op, FALSE, TRUE, TRUE, mtcc->pool, scratch_pool)); if (!for_move && !op && !created) { /* Allow deleting directories, that are unmodified except for one or more deleted descendants */ SVN_ERR(mtcc_op_find(&op, &created, relpath, mtcc->root_op, TRUE, FALSE, FALSE, mtcc->pool, scratch_pool)); if (op && mtcc_op_contains_non_delete(op)) op = NULL; else created = TRUE; } if (!op || !created) { return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't delete node at '%s'"), relpath); } } op->kind = OP_DELETE; op->children = NULL; op->prop_mods = NULL; return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_add_delete(const char *relpath, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { return svn_error_trace(mtcc_add_delete(relpath, FALSE, mtcc, scratch_pool)); } svn_error_t * svn_client__mtcc_add_mkdir(const char *relpath, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { mtcc_op_t *op; svn_boolean_t created; SVN_ERR_ASSERT(svn_relpath_is_canonical(relpath)); SVN_ERR(mtcc_verify_create(mtcc, relpath, scratch_pool)); if (SVN_PATH_IS_EMPTY(relpath) && MTCC_UNMODIFIED(mtcc)) { /* Turn the root of the operation in an MKDIR */ mtcc->root_op->kind = OP_ADD_DIR; return SVN_NO_ERROR; } SVN_ERR(mtcc_op_find(&op, &created, relpath, mtcc->root_op, FALSE, FALSE, FALSE, mtcc->pool, scratch_pool)); if (!op || !created) { return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't create directory at '%s'"), relpath); } op->kind = OP_ADD_DIR; return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_add_move(const char *src_relpath, const char *dst_relpath, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { const char *origin_relpath; svn_revnum_t origin_rev; SVN_ERR(mtcc_get_origin(&origin_relpath, &origin_rev, src_relpath, FALSE, mtcc, scratch_pool, scratch_pool)); SVN_ERR(svn_client__mtcc_add_copy(src_relpath, mtcc->base_revision, dst_relpath, mtcc, scratch_pool)); SVN_ERR(mtcc_add_delete(src_relpath, TRUE, mtcc, scratch_pool)); return SVN_NO_ERROR; } /* Baton for mtcc_prop_getter */ struct mtcc_prop_get_baton { svn_client__mtcc_t *mtcc; const char *relpath; svn_cancel_func_t cancel_func; void *cancel_baton; }; /* Implements svn_wc_canonicalize_svn_prop_get_file_t */ static svn_error_t * mtcc_prop_getter(const svn_string_t **mime_type, svn_stream_t *stream, void *baton, apr_pool_t *pool) { struct mtcc_prop_get_baton *mpgb = baton; const char *origin_relpath; svn_revnum_t origin_rev; apr_hash_t *props = NULL; mtcc_op_t *op; if (mime_type) *mime_type = NULL; /* Check if we have the information locally */ SVN_ERR(mtcc_op_find(&op, NULL, mpgb->relpath, mpgb->mtcc->root_op, TRUE, FALSE, FALSE, pool, pool)); if (op) { if (mime_type) { int i; for (i = 0; op->prop_mods && i < op->prop_mods->nelts; i++) { const svn_prop_t *mod = &APR_ARRAY_IDX(op->prop_mods, i, svn_prop_t); if (! strcmp(mod->name, SVN_PROP_MIME_TYPE)) { *mime_type = svn_string_dup(mod->value, pool); mime_type = NULL; break; } } } if (stream && op->src_stream) { svn_stream_mark_t *mark; svn_error_t *err; /* Is the source stream capable of being read multiple times? */ err = svn_stream_mark(op->src_stream, &mark, pool); if (err && err->apr_err != SVN_ERR_STREAM_SEEK_NOT_SUPPORTED) return svn_error_trace(err); svn_error_clear(err); if (!err) { err = svn_stream_copy3(svn_stream_disown(op->src_stream, pool), svn_stream_disown(stream, pool), mpgb->cancel_func, mpgb->cancel_baton, pool); SVN_ERR(svn_error_compose_create( err, svn_stream_seek(op->src_stream, mark))); } /* else: ### Create tempfile? */ stream = NULL; /* Stream is handled */ } } if (!stream && !mime_type) return SVN_NO_ERROR; SVN_ERR(mtcc_get_origin(&origin_relpath, &origin_rev, mpgb->relpath, TRUE, mpgb->mtcc, pool, pool)); if (!origin_relpath) return SVN_NO_ERROR; /* Nothing to fetch at repository */ SVN_ERR(svn_ra_get_file(mpgb->mtcc->ra_session, origin_relpath, origin_rev, stream, NULL, mime_type ? &props : NULL, pool)); if (mime_type && props) *mime_type = svn_hash_gets(props, SVN_PROP_MIME_TYPE); return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_add_propset(const char *relpath, const char *propname, const svn_string_t *propval, svn_boolean_t skip_checks, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { mtcc_op_t *op; SVN_ERR_ASSERT(svn_relpath_is_canonical(relpath)); if (! svn_prop_name_is_valid(propname)) return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL, _("Bad property name: '%s'"), propname); if (svn_prop_is_known_svn_rev_prop(propname)) return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL, _("Revision property '%s' not allowed " "in this context"), propname); if (svn_property_kind2(propname) == svn_prop_wc_kind) return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL, _("'%s' is a wcprop, thus not accessible " "to clients"), propname); if (!skip_checks && svn_prop_needs_translation(propname)) { svn_string_t *translated_value; SVN_ERR_W(svn_subst_translate_string2(&translated_value, NULL, NULL, propval, NULL, FALSE, scratch_pool, scratch_pool), _("Error normalizing property value")); propval = translated_value; } if (propval && svn_prop_is_svn_prop(propname)) { struct mtcc_prop_get_baton mpbg; svn_node_kind_t kind; SVN_ERR(svn_client__mtcc_check_path(&kind, relpath, FALSE, mtcc, scratch_pool)); mpbg.mtcc = mtcc; mpbg.relpath = relpath; mpbg.cancel_func = mtcc->ctx->cancel_func; mpbg.cancel_baton = mtcc->ctx->cancel_baton; SVN_ERR(svn_wc_canonicalize_svn_prop(&propval, propname, propval, relpath, kind, skip_checks, mtcc_prop_getter, &mpbg, scratch_pool)); } if (SVN_PATH_IS_EMPTY(relpath) && MTCC_UNMODIFIED(mtcc)) { svn_node_kind_t kind; /* Probing the node for an unmodified root will fix the node type to a file if necessary */ SVN_ERR(svn_client__mtcc_check_path(&kind, relpath, FALSE, mtcc, scratch_pool)); if (kind == svn_node_none) return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't set properties at not existing '%s'"), relpath); op = mtcc->root_op; } else { SVN_ERR(mtcc_op_find(&op, NULL, relpath, mtcc->root_op, TRUE, FALSE, FALSE, mtcc->pool, scratch_pool)); if (!op) { svn_node_kind_t kind; svn_boolean_t created; /* ### TODO: Check if this node is within a newly copied directory, and update origin values accordingly */ SVN_ERR(svn_client__mtcc_check_path(&kind, relpath, FALSE, mtcc, scratch_pool)); if (kind == svn_node_none) return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't set properties at not existing '%s'"), relpath); SVN_ERR(mtcc_op_find(&op, &created, relpath, mtcc->root_op, TRUE, FALSE, (kind != svn_node_dir), mtcc->pool, scratch_pool)); SVN_ERR_ASSERT(op != NULL); } } if (!op->prop_mods) op->prop_mods = apr_array_make(mtcc->pool, 4, sizeof(svn_prop_t)); { svn_prop_t propchange; propchange.name = apr_pstrdup(mtcc->pool, propname); if (propval) propchange.value = svn_string_dup(propval, mtcc->pool); else propchange.value = NULL; APR_ARRAY_PUSH(op->prop_mods, svn_prop_t) = propchange; } return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_add_update_file(const char *relpath, svn_stream_t *src_stream, const svn_checksum_t *src_checksum, svn_stream_t *base_stream, const svn_checksum_t *base_checksum, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { mtcc_op_t *op; svn_boolean_t created; svn_node_kind_t kind; SVN_ERR_ASSERT(svn_relpath_is_canonical(relpath) && src_stream); SVN_ERR(svn_client__mtcc_check_path(&kind, relpath, FALSE, mtcc, scratch_pool)); if (kind != svn_node_file) return svn_error_createf(SVN_ERR_FS_NOT_FILE, NULL, _("Can't update '%s' because it is not a file"), relpath); SVN_ERR(mtcc_op_find(&op, &created, relpath, mtcc->root_op, TRUE, FALSE, TRUE, mtcc->pool, scratch_pool)); if (!op || (op->kind != OP_OPEN_FILE && op->kind != OP_ADD_FILE) || (op->src_stream != NULL)) { return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, _("Can't update file at '%s'"), relpath); } op->src_stream = src_stream; op->src_checksum = src_checksum ? svn_checksum_dup(src_checksum, mtcc->pool) : NULL; op->base_stream = base_stream; op->base_checksum = base_checksum ? svn_checksum_dup(base_checksum, mtcc->pool) : NULL; return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_check_path(svn_node_kind_t *kind, const char *relpath, svn_boolean_t check_repository, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { const char *origin_relpath; svn_revnum_t origin_rev; mtcc_op_t *op; SVN_ERR_ASSERT(svn_relpath_is_canonical(relpath)); if (SVN_PATH_IS_EMPTY(relpath) && MTCC_UNMODIFIED(mtcc) && !mtcc->root_op->performed_stat) { /* We know nothing about the root. Perhaps it is a file? */ SVN_ERR(svn_ra_check_path(mtcc->ra_session, "", mtcc->base_revision, kind, scratch_pool)); mtcc->root_op->performed_stat = TRUE; if (*kind == svn_node_file) { mtcc->root_op->kind = OP_OPEN_FILE; mtcc->root_op->children = NULL; } return SVN_NO_ERROR; } SVN_ERR(mtcc_op_find(&op, NULL, relpath, mtcc->root_op, TRUE, FALSE, FALSE, mtcc->pool, scratch_pool)); if (!op || (check_repository && !op->performed_stat)) { SVN_ERR(mtcc_get_origin(&origin_relpath, &origin_rev, relpath, TRUE, mtcc, scratch_pool, scratch_pool)); if (!origin_relpath) *kind = svn_node_none; else SVN_ERR(svn_ra_check_path(mtcc->ra_session, origin_relpath, origin_rev, kind, scratch_pool)); if (op && *kind == svn_node_dir) { if (op->kind == OP_OPEN_DIR || op->kind == OP_ADD_DIR) op->performed_stat = TRUE; else if (op->kind == OP_OPEN_FILE || op->kind == OP_ADD_FILE) return svn_error_createf(SVN_ERR_FS_NOT_FILE, NULL, _("Can't perform file operation " "on '%s' as it is not a file"), relpath); } else if (op && *kind == svn_node_file) { if (op->kind == OP_OPEN_FILE || op->kind == OP_ADD_FILE) op->performed_stat = TRUE; else if (op->kind == OP_OPEN_DIR || op->kind == OP_ADD_DIR) return svn_error_createf(SVN_ERR_FS_NOT_DIRECTORY, NULL, _("Can't perform directory operation " "on '%s' as it is not a directory"), relpath); } else if (op && (op->kind == OP_OPEN_DIR || op->kind == OP_OPEN_FILE)) { return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL, _("Can't open '%s' as it does not exist"), relpath); } return SVN_NO_ERROR; } /* op != NULL */ if (op->kind == OP_OPEN_DIR || op->kind == OP_ADD_DIR) { *kind = svn_node_dir; return SVN_NO_ERROR; } else if (op->kind == OP_OPEN_FILE || op->kind == OP_ADD_FILE) { *kind = svn_node_file; return SVN_NO_ERROR; } SVN_ERR_MALFUNCTION(); /* No other kinds defined as delete is filtered */ } static svn_error_t * commit_properties(const svn_delta_editor_t *editor, const mtcc_op_t *op, void *node_baton, apr_pool_t *scratch_pool) { int i; apr_pool_t *iterpool; if (!op->prop_mods || op->prop_mods->nelts == 0) return SVN_NO_ERROR; iterpool = svn_pool_create(scratch_pool); for (i = 0; i < op->prop_mods->nelts; i++) { const svn_prop_t *mod = &APR_ARRAY_IDX(op->prop_mods, i, svn_prop_t); svn_pool_clear(iterpool); if (op->kind == OP_ADD_DIR || op->kind == OP_OPEN_DIR) SVN_ERR(editor->change_dir_prop(node_baton, mod->name, mod->value, iterpool)); else if (op->kind == OP_ADD_FILE || op->kind == OP_OPEN_FILE) SVN_ERR(editor->change_file_prop(node_baton, mod->name, mod->value, iterpool)); } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Handles updating a file to a delta editor and then closes it */ static svn_error_t * commit_file(const svn_delta_editor_t *editor, mtcc_op_t *op, void *file_baton, const char *session_url, const char *relpath, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool) { const char *text_checksum = NULL; svn_checksum_t *src_checksum = op->src_checksum; SVN_ERR(commit_properties(editor, op, file_baton, scratch_pool)); if (op->src_stream) { const char *base_checksum = NULL; apr_pool_t *txdelta_pool = scratch_pool; svn_txdelta_window_handler_t window_handler; void *handler_baton; svn_stream_t *src_stream = op->src_stream; if (op->base_checksum && op->base_checksum->kind == svn_checksum_md5) base_checksum = svn_checksum_to_cstring(op->base_checksum, scratch_pool); /* ### TODO: Future enhancement: Allocate in special pool and send files after the true edit operation, like a wc commit */ SVN_ERR(editor->apply_textdelta(file_baton, base_checksum, txdelta_pool, &window_handler, &handler_baton)); if (ctx->notify_func2) { svn_wc_notify_t *notify; notify = svn_wc_create_notify_url( svn_path_url_add_component2(session_url, relpath, scratch_pool), svn_wc_notify_commit_postfix_txdelta, scratch_pool); notify->path = relpath; notify->kind = svn_node_file; ctx->notify_func2(ctx->notify_baton2, notify, scratch_pool); } if (window_handler != svn_delta_noop_window_handler) { if (!src_checksum || src_checksum->kind != svn_checksum_md5) src_stream = svn_stream_checksummed2(src_stream, &src_checksum, NULL, svn_checksum_md5, TRUE, scratch_pool); if (!op->base_stream) SVN_ERR(svn_txdelta_send_stream(src_stream, window_handler, handler_baton, NULL, scratch_pool)); else SVN_ERR(svn_txdelta_run(op->base_stream, src_stream, window_handler, handler_baton, svn_checksum_md5, NULL, ctx->cancel_func, ctx->cancel_baton, scratch_pool, scratch_pool)); } SVN_ERR(svn_stream_close(src_stream)); if (op->base_stream) SVN_ERR(svn_stream_close(op->base_stream)); } if (src_checksum && src_checksum->kind == svn_checksum_md5) text_checksum = svn_checksum_to_cstring(src_checksum, scratch_pool); return svn_error_trace(editor->close_file(file_baton, text_checksum, scratch_pool)); } /* Handles updating a directory to a delta editor and then closes it */ static svn_error_t * commit_directory(const svn_delta_editor_t *editor, mtcc_op_t *op, const char *relpath, svn_revnum_t base_rev, void *dir_baton, const char *session_url, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool) { SVN_ERR(commit_properties(editor, op, dir_baton, scratch_pool)); if (op->children && op->children->nelts > 0) { apr_pool_t *iterpool = svn_pool_create(scratch_pool); int i; for (i = 0; i < op->children->nelts; i++) { mtcc_op_t *cop; const char * child_relpath; void *child_baton; cop = APR_ARRAY_IDX(op->children, i, mtcc_op_t *); svn_pool_clear(iterpool); if (ctx->cancel_func) SVN_ERR(ctx->cancel_func(ctx->cancel_baton)); child_relpath = svn_relpath_join(relpath, cop->name, iterpool); switch (cop->kind) { case OP_DELETE: SVN_ERR(editor->delete_entry(child_relpath, base_rev, dir_baton, iterpool)); break; case OP_ADD_DIR: SVN_ERR(editor->add_directory(child_relpath, dir_baton, cop->src_relpath ? svn_path_url_add_component2( session_url, cop->src_relpath, iterpool) : NULL, cop->src_rev, iterpool, &child_baton)); SVN_ERR(commit_directory(editor, cop, child_relpath, SVN_INVALID_REVNUM, child_baton, session_url, ctx, iterpool)); break; case OP_OPEN_DIR: SVN_ERR(editor->open_directory(child_relpath, dir_baton, base_rev, iterpool, &child_baton)); SVN_ERR(commit_directory(editor, cop, child_relpath, base_rev, child_baton, session_url, ctx, iterpool)); break; case OP_ADD_FILE: SVN_ERR(editor->add_file(child_relpath, dir_baton, cop->src_relpath ? svn_path_url_add_component2( session_url, cop->src_relpath, iterpool) : NULL, cop->src_rev, iterpool, &child_baton)); SVN_ERR(commit_file(editor, cop, child_baton, session_url, child_relpath, ctx, iterpool)); break; case OP_OPEN_FILE: SVN_ERR(editor->open_file(child_relpath, dir_baton, base_rev, iterpool, &child_baton)); SVN_ERR(commit_file(editor, cop, child_baton, session_url, child_relpath, ctx, iterpool)); break; default: SVN_ERR_MALFUNCTION(); } } } return svn_error_trace(editor->close_directory(dir_baton, scratch_pool)); } /* Helper function to recursively create svn_client_commit_item3_t items to provide to the log message callback */ static svn_error_t * add_commit_items(mtcc_op_t *op, const char *session_url, const char *url, apr_array_header_t *commit_items, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { if ((op->kind != OP_OPEN_DIR && op->kind != OP_OPEN_FILE) || (op->prop_mods && op->prop_mods->nelts) || (op->src_stream)) { svn_client_commit_item3_t *item; item = svn_client_commit_item3_create(result_pool); item->path = NULL; if (op->kind == OP_OPEN_DIR || op->kind == OP_ADD_DIR) item->kind = svn_node_dir; else if (op->kind == OP_OPEN_FILE || op->kind == OP_ADD_FILE) item->kind = svn_node_file; else item->kind = svn_node_unknown; item->url = apr_pstrdup(result_pool, url); item->session_relpath = svn_uri_skip_ancestor(session_url, item->url, result_pool); if (op->src_relpath) { item->copyfrom_url = svn_path_url_add_component2(session_url, op->src_relpath, result_pool); item->copyfrom_rev = op->src_rev; item->state_flags |= SVN_CLIENT_COMMIT_ITEM_IS_COPY; } else item->copyfrom_rev = SVN_INVALID_REVNUM; if (op->kind == OP_ADD_DIR || op->kind == OP_ADD_FILE) item->state_flags = SVN_CLIENT_COMMIT_ITEM_ADD; else if (op->kind == OP_DELETE) item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE; /* else item->state_flags = 0; */ if (op->prop_mods && op->prop_mods->nelts) item->state_flags |= SVN_CLIENT_COMMIT_ITEM_PROP_MODS; if (op->src_stream) item->state_flags |= SVN_CLIENT_COMMIT_ITEM_TEXT_MODS; APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item; } if (op->children && op->children->nelts) { int i; apr_pool_t *iterpool = svn_pool_create(scratch_pool); for (i = 0; i < op->children->nelts; i++) { mtcc_op_t *cop; const char * child_url; cop = APR_ARRAY_IDX(op->children, i, mtcc_op_t *); svn_pool_clear(iterpool); child_url = svn_path_url_add_component2(url, cop->name, iterpool); SVN_ERR(add_commit_items(cop, session_url, child_url, commit_items, result_pool, iterpool)); } svn_pool_destroy(iterpool); } return SVN_NO_ERROR; } svn_error_t * svn_client__mtcc_commit(apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client__mtcc_t *mtcc, apr_pool_t *scratch_pool) { const svn_delta_editor_t *editor; void *edit_baton; void *root_baton; apr_hash_t *commit_revprops; svn_node_kind_t kind; svn_error_t *err; const char *session_url; const char *log_msg; if (MTCC_UNMODIFIED(mtcc)) { /* No changes -> no revision. Easy out */ svn_pool_destroy(mtcc->pool); return SVN_NO_ERROR; } SVN_ERR(svn_ra_get_session_url(mtcc->ra_session, &session_url, scratch_pool)); if (mtcc->root_op->kind != OP_OPEN_DIR) { const char *name; svn_uri_split(&session_url, &name, session_url, scratch_pool); if (*name) { SVN_ERR(mtcc_reparent(session_url, mtcc, scratch_pool)); SVN_ERR(svn_ra_reparent(mtcc->ra_session, session_url, scratch_pool)); } } /* Create new commit items and add them to the array. */ if (SVN_CLIENT__HAS_LOG_MSG_FUNC(mtcc->ctx)) { svn_client_commit_item3_t *item; const char *tmp_file; apr_array_header_t *commit_items = apr_array_make(scratch_pool, 32, sizeof(item)); SVN_ERR(add_commit_items(mtcc->root_op, session_url, session_url, commit_items, scratch_pool, scratch_pool)); SVN_ERR(svn_client__get_log_msg(&log_msg, &tmp_file, commit_items, mtcc->ctx, scratch_pool)); if (! log_msg) return SVN_NO_ERROR; } else log_msg = ""; SVN_ERR(svn_client__ensure_revprop_table(&commit_revprops, revprop_table, log_msg, mtcc->ctx, scratch_pool)); /* Ugly corner case: The ra session might have died while we were waiting for the callback */ err = svn_ra_check_path(mtcc->ra_session, "", mtcc->base_revision, &kind, scratch_pool); if (err) { svn_error_t *err2 = svn_client_open_ra_session2(&mtcc->ra_session, session_url, NULL, mtcc->ctx, mtcc->pool, scratch_pool); if (err2) { svn_pool_destroy(mtcc->pool); return svn_error_trace(svn_error_compose_create(err, err2)); } svn_error_clear(err); SVN_ERR(svn_ra_check_path(mtcc->ra_session, "", mtcc->base_revision, &kind, scratch_pool)); } if (kind != svn_node_dir) return svn_error_createf(SVN_ERR_FS_NOT_DIRECTORY, NULL, _("Can't commit to '%s' because it " "is not a directory"), session_url); /* Beware that the editor object must not live longer than the MTCC. Otherwise, txn objects etc. in EDITOR may live longer than their respective FS objects. So, we can't use SCRATCH_POOL here. */ SVN_ERR(svn_ra_get_commit_editor3(mtcc->ra_session, &editor, &edit_baton, commit_revprops, commit_callback, commit_baton, NULL /* lock_tokens */, FALSE /* keep_locks */, mtcc->pool)); err = editor->open_root(edit_baton, mtcc->base_revision, scratch_pool, &root_baton); if (!err) err = commit_directory(editor, mtcc->root_op, "", mtcc->base_revision, root_baton, session_url, mtcc->ctx, scratch_pool); if (!err) { if (mtcc->ctx->notify_func2) { svn_wc_notify_t *notify; notify = svn_wc_create_notify_url(session_url, svn_wc_notify_commit_finalizing, scratch_pool); mtcc->ctx->notify_func2(mtcc->ctx->notify_baton2, notify, scratch_pool); } SVN_ERR(editor->close_edit(edit_baton, scratch_pool)); } else err = svn_error_compose_create(err, editor->abort_edit(edit_baton, scratch_pool)); svn_pool_destroy(mtcc->pool); return svn_error_trace(err); } diff --git a/contrib/subversion/subversion/libsvn_fs_fs/index.c b/contrib/subversion/subversion/libsvn_fs_fs/index.c index b7ba79f96313..168022e63eb3 100644 --- a/contrib/subversion/subversion/libsvn_fs_fs/index.c +++ b/contrib/subversion/subversion/libsvn_fs_fs/index.c @@ -1,3471 +1,3471 @@ /* index.c indexing support for FSFS support * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include #include "svn_io.h" #include "svn_pools.h" #include "svn_sorts.h" #include "svn_private_config.h" #include "private/svn_sorts_private.h" #include "private/svn_subr_private.h" #include "private/svn_temp_serializer.h" #include "index.h" #include "pack.h" #include "temp_serializer.h" #include "util.h" #include "fs_fs.h" #include "../libsvn_fs/fs-loader.h" /* maximum length of a uint64 in an 7/8b encoding */ #define ENCODED_INT_LENGTH 10 /* APR is missing an APR_OFF_T_MAX. So, define one. We will use it to * limit file offsets stored in the indexes. * * We assume that everything shorter than 64 bits, it is at least 32 bits. * We also assume that the type is always signed meaning we only have an * effective positive range of 63 or 31 bits, respectively. */ static const apr_uint64_t off_t_max = (sizeof(apr_off_t) == sizeof(apr_int64_t)) ? APR_INT64_MAX : APR_INT32_MAX; /* We store P2L proto-index entries as 6 values, 64 bits each on disk. * See also svn_fs_fs__p2l_proto_index_add_entry(). */ #define P2L_PROTO_INDEX_ENTRY_SIZE (6 * sizeof(apr_uint64_t)) /* We put this string in front of the L2P index header. */ #define L2P_STREAM_PREFIX "L2P-INDEX\n" /* We put this string in front of the P2L index header. */ #define P2L_STREAM_PREFIX "P2L-INDEX\n" /* Size of the buffer that will fit the index header prefixes. */ #define STREAM_PREFIX_LEN MAX(sizeof(L2P_STREAM_PREFIX), \ sizeof(P2L_STREAM_PREFIX)) /* Page tables in the log-to-phys index file exclusively contain entries * of this type to describe position and size of a given page. */ typedef struct l2p_page_table_entry_t { /* global offset on the page within the index file */ apr_uint64_t offset; /* number of mapping entries in that page */ apr_uint32_t entry_count; /* size of the page on disk (in the index file) */ apr_uint32_t size; } l2p_page_table_entry_t; /* Master run-time data structure of an log-to-phys index. It contains * the page tables of every revision covered by that index - but not the * pages themselves. */ typedef struct l2p_header_t { /* first revision covered by this index */ svn_revnum_t first_revision; /* number of revisions covered */ apr_size_t revision_count; /* (max) number of entries per page */ apr_uint32_t page_size; /* indexes into PAGE_TABLE that mark the first page of the respective * revision. PAGE_TABLE_INDEX[REVISION_COUNT] points to the end of * PAGE_TABLE. */ apr_size_t * page_table_index; /* Page table covering all pages in the index */ l2p_page_table_entry_t * page_table; } l2p_header_t; /* Run-time data structure containing a single log-to-phys index page. */ typedef struct l2p_page_t { /* number of entries in the OFFSETS array */ apr_uint32_t entry_count; /* global file offsets (item index is the array index) within the * packed or non-packed rev file. Offset will be -1 for unused / * invalid item index values. */ apr_uint64_t *offsets; } l2p_page_t; /* All of the log-to-phys proto index file consist of entries of this type. */ typedef struct l2p_proto_entry_t { /* phys offset + 1 of the data container. 0 for "new revision" entries. */ apr_uint64_t offset; /* corresponding item index. 0 for "new revision" entries. */ apr_uint64_t item_index; } l2p_proto_entry_t; /* Master run-time data structure of an phys-to-log index. It contains * an array with one offset value for each rev file cluster. */ typedef struct p2l_header_t { /* first revision covered by the index (and rev file) */ svn_revnum_t first_revision; /* number of bytes in the rev files covered by each p2l page */ apr_uint64_t page_size; /* number of pages / clusters in that rev file */ apr_size_t page_count; /* number of bytes in the rev file */ apr_uint64_t file_size; /* offsets of the pages / cluster descriptions within the index file */ apr_off_t *offsets; } p2l_header_t; /* * packed stream * * This is a utility object that will read files containing 7b/8b encoded * unsigned integers. It decodes them in batches to minimize overhead * and supports random access to random file locations. */ /* How many numbers we will pre-fetch and buffer in a packed number stream. */ enum { MAX_NUMBER_PREFETCH = 64 }; /* Prefetched number entry in a packed number stream. */ typedef struct value_position_pair_t { /* prefetched number */ apr_uint64_t value; /* number of bytes read, *including* this number, since the buffer start */ apr_size_t total_len; } value_position_pair_t; /* State of a prefetching packed number stream. It will read compressed * index data efficiently and present it as a series of non-packed uint64. */ struct svn_fs_fs__packed_number_stream_t { /* underlying data file containing the packed values */ apr_file_t *file; /* Offset within FILE at which the stream data starts * (i.e. which offset will reported as offset 0 by packed_stream_offset). */ apr_off_t stream_start; /* First offset within FILE after the stream data. * Attempts to read beyond this will cause an "Unexpected End Of Stream" * error. */ apr_off_t stream_end; /* number of used entries in BUFFER (starting at index 0) */ apr_size_t used; /* index of the next number to read from the BUFFER (0 .. USED). * If CURRENT == USED, we need to read more data upon get() */ apr_size_t current; /* offset in FILE from which the first entry in BUFFER has been read */ apr_off_t start_offset; /* offset in FILE from which the next number has to be read */ apr_off_t next_offset; /* read the file in chunks of this size */ apr_size_t block_size; /* pool to be used for file ops etc. */ apr_pool_t *pool; /* buffer for prefetched values */ value_position_pair_t buffer[MAX_NUMBER_PREFETCH]; }; /* Return an svn_error_t * object for error ERR on STREAM with the given * MESSAGE string. The latter must have a placeholder for the index file * name ("%s") and the current read offset (e.g. "0x%lx"). */ static svn_error_t * stream_error_create(svn_fs_fs__packed_number_stream_t *stream, apr_status_t err, const char *message) { const char *file_name; apr_off_t offset; SVN_ERR(svn_io_file_name_get(&file_name, stream->file, stream->pool)); SVN_ERR(svn_io_file_get_offset(&offset, stream->file, stream->pool)); return svn_error_createf(err, NULL, message, file_name, apr_psprintf(stream->pool, "%" APR_UINT64_T_HEX_FMT, (apr_uint64_t)offset)); } /* Read up to MAX_NUMBER_PREFETCH numbers from the STREAM->NEXT_OFFSET in * STREAM->FILE and buffer them. * * We don't want GCC and others to inline this (infrequently called) * function into packed_stream_get() because it prevents the latter from * being inlined itself. */ SVN__PREVENT_INLINE static svn_error_t * packed_stream_read(svn_fs_fs__packed_number_stream_t *stream) { unsigned char buffer[MAX_NUMBER_PREFETCH]; apr_size_t bytes_read = 0; apr_size_t i; value_position_pair_t *target; apr_off_t block_start = 0; apr_off_t block_left = 0; apr_status_t err; /* all buffered data will have been read starting here */ stream->start_offset = stream->next_offset; /* packed numbers are usually not aligned to MAX_NUMBER_PREFETCH blocks, * i.e. the last number has been incomplete (and not buffered in stream) * and need to be re-read. Therefore, always correct the file pointer. */ SVN_ERR(svn_io_file_aligned_seek(stream->file, stream->block_size, &block_start, stream->next_offset, stream->pool)); /* prefetch at least one number but, if feasible, don't cross block * boundaries. This shall prevent jumping back and forth between two * blocks because the extra data was not actually request _now_. */ bytes_read = sizeof(buffer); block_left = stream->block_size - (stream->next_offset - block_start); if (block_left >= 10 && block_left < bytes_read) bytes_read = (apr_size_t)block_left; /* Don't read beyond the end of the file section that belongs to this * index / stream. */ bytes_read = (apr_size_t)MIN(bytes_read, stream->stream_end - stream->next_offset); err = apr_file_read(stream->file, buffer, &bytes_read); if (err && !APR_STATUS_IS_EOF(err)) return stream_error_create(stream, err, _("Can't read index file '%s' at offset 0x%s")); /* if the last number is incomplete, trim it from the buffer */ while (bytes_read > 0 && buffer[bytes_read-1] >= 0x80) --bytes_read; /* we call read() only if get() requires more data. So, there must be * at least *one* further number. */ if SVN__PREDICT_FALSE(bytes_read == 0) return stream_error_create(stream, err, _("Unexpected end of index file %s at offset 0x%s")); /* parse file buffer and expand into stream buffer */ target = stream->buffer; for (i = 0; i < bytes_read;) { if (buffer[i] < 0x80) { /* numbers < 128 are relatively frequent and particularly easy * to decode. Give them special treatment. */ target->value = buffer[i]; ++i; target->total_len = i; ++target; } else { apr_uint64_t value = 0; apr_uint64_t shift = 0; while (buffer[i] >= 0x80) { value += ((apr_uint64_t)buffer[i] & 0x7f) << shift; shift += 7; ++i; } target->value = value + ((apr_uint64_t)buffer[i] << shift); ++i; target->total_len = i; ++target; /* let's catch corrupted data early. It would surely cause * havoc further down the line. */ if SVN__PREDICT_FALSE(shift > 8 * sizeof(value)) return svn_error_createf(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Corrupt index: number too large")); } } /* update stream state */ stream->used = target - stream->buffer; stream->next_offset = stream->start_offset + i; stream->current = 0; return SVN_NO_ERROR; } /* Create and open a packed number stream reading from offsets START to * END in FILE and return it in *STREAM. Access the file in chunks of * BLOCK_SIZE bytes. Expect the stream to be prefixed by STREAM_PREFIX. * Allocate *STREAM in RESULT_POOL and use SCRATCH_POOL for temporaries. */ static svn_error_t * packed_stream_open(svn_fs_fs__packed_number_stream_t **stream, apr_file_t *file, apr_off_t start, apr_off_t end, const char *stream_prefix, apr_size_t block_size, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { char buffer[STREAM_PREFIX_LEN + 1] = { 0 }; apr_size_t len = strlen(stream_prefix); svn_fs_fs__packed_number_stream_t *result; /* If this is violated, we forgot to adjust STREAM_PREFIX_LEN after * changing the index header prefixes. */ SVN_ERR_ASSERT(len < sizeof(buffer)); /* Read the header prefix and compare it with the expected prefix */ SVN_ERR(svn_io_file_aligned_seek(file, block_size, NULL, start, scratch_pool)); SVN_ERR(svn_io_file_read_full2(file, buffer, len, NULL, NULL, scratch_pool)); if (strncmp(buffer, stream_prefix, len)) return svn_error_createf(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Index stream header prefix mismatch.\n" " expected: %s" " found: %s"), stream_prefix, buffer); /* Construct the actual stream object. */ result = apr_palloc(result_pool, sizeof(*result)); result->pool = result_pool; result->file = file; result->stream_start = start + len; result->stream_end = end; result->used = 0; result->current = 0; result->start_offset = result->stream_start; result->next_offset = result->stream_start; result->block_size = block_size; *stream = result; return SVN_NO_ERROR; } /* * The forced inline is required for performance reasons: This is a very * hot code path (called for every item we read) but e.g. GCC would rather * chose to inline packed_stream_read() here, preventing packed_stream_get * from being inlined itself. */ SVN__FORCE_INLINE static svn_error_t* packed_stream_get(apr_uint64_t *value, svn_fs_fs__packed_number_stream_t *stream) { if (stream->current == stream->used) SVN_ERR(packed_stream_read(stream)); *value = stream->buffer[stream->current].value; ++stream->current; return SVN_NO_ERROR; } /* Navigate STREAM to packed stream offset OFFSET. There will be no checks * whether the given OFFSET is valid. */ static void packed_stream_seek(svn_fs_fs__packed_number_stream_t *stream, apr_off_t offset) { apr_off_t file_offset = offset + stream->stream_start; if ( stream->used == 0 || offset < stream->start_offset || offset >= stream->next_offset) { /* outside buffered data. Next get() will read() from OFFSET. */ stream->start_offset = file_offset; stream->next_offset = file_offset; stream->current = 0; stream->used = 0; } else { /* Find the suitable location in the stream buffer. * Since our buffer is small, it is efficient enough to simply scan * it for the desired position. */ apr_size_t i; for (i = 0; i < stream->used; ++i) if (stream->buffer[i].total_len > file_offset - stream->start_offset) break; stream->current = i; } } /* Return the packed stream offset of at which the next number in the stream * can be found. */ static apr_off_t packed_stream_offset(svn_fs_fs__packed_number_stream_t *stream) { apr_off_t file_offset = stream->current == 0 ? stream->start_offset : stream->buffer[stream->current-1].total_len + stream->start_offset; return file_offset - stream->stream_start; } /* Encode VALUE as 7/8b into P and return the number of bytes written. * This will be used when _writing_ packed data. packed_stream_* is for * read operations only. */ static apr_size_t encode_uint(unsigned char *p, apr_uint64_t value) { unsigned char *start = p; while (value >= 0x80) { *p = (unsigned char)((value % 0x80) + 0x80); value /= 0x80; ++p; } *p = (unsigned char)(value % 0x80); return (p - start) + 1; } /* Encode VALUE as 7/8b into P and return the number of bytes written. * This maps signed ints onto unsigned ones. */ static apr_size_t encode_int(unsigned char *p, apr_int64_t value) { return encode_uint(p, (apr_uint64_t)(value < 0 ? -1 - 2*value : 2*value)); } /* Append VALUE to STREAM in 7/8b encoding. */ static svn_error_t * stream_write_encoded(svn_stream_t *stream, apr_uint64_t value) { unsigned char encoded[ENCODED_INT_LENGTH]; apr_size_t len = encode_uint(encoded, value); return svn_error_trace(svn_stream_write(stream, (char *)encoded, &len)); } /* Map unsigned VALUE back to signed integer. */ static apr_int64_t decode_int(apr_uint64_t value) { return (apr_int64_t)(value % 2 ? -1 - value / 2 : value / 2); } /* Write VALUE to the PROTO_INDEX file, using SCRATCH_POOL for temporary * allocations. * * The point of this function is to ensure an architecture-independent * proto-index file format. All data is written as unsigned 64 bits ints * in little endian byte order. 64 bits is the largest portable integer * we have and unsigned values have well-defined conversions in C. */ static svn_error_t * write_uint64_to_proto_index(apr_file_t *proto_index, apr_uint64_t value, apr_pool_t *scratch_pool) { apr_byte_t buffer[sizeof(value)]; int i; apr_size_t written; /* Split VALUE into 8 bytes using LE ordering. */ for (i = 0; i < sizeof(buffer); ++i) { /* Unsigned conversions are well-defined ... */ buffer[i] = (apr_byte_t)value; value >>= CHAR_BIT; } /* Write it all to disk. */ SVN_ERR(svn_io_file_write_full(proto_index, buffer, sizeof(buffer), &written, scratch_pool)); SVN_ERR_ASSERT(written == sizeof(buffer)); return SVN_NO_ERROR; } /* Read one unsigned 64 bit value from PROTO_INDEX file and return it in * *VALUE_P. If EOF is NULL, error out when trying to read beyond EOF. * Use SCRATCH_POOL for temporary allocations. * * This function is the inverse to write_uint64_to_proto_index (see there), * reading the external LE byte order and convert it into host byte order. */ static svn_error_t * read_uint64_from_proto_index(apr_file_t *proto_index, apr_uint64_t *value_p, svn_boolean_t *eof, apr_pool_t *scratch_pool) { apr_byte_t buffer[sizeof(*value_p)]; apr_size_t bytes_read; /* Read the full 8 bytes or our 64 bit value, unless we hit EOF. * Assert that we never read partial values. */ SVN_ERR(svn_io_file_read_full2(proto_index, buffer, sizeof(buffer), &bytes_read, eof, scratch_pool)); SVN_ERR_ASSERT((eof && *eof) || bytes_read == sizeof(buffer)); /* If we did not hit EOF, reconstruct the uint64 value and return it. */ if (!eof || !*eof) { int i; apr_uint64_t value; /* This could only overflow if CHAR_BIT had a value that is not * a divisor of 64. */ value = 0; for (i = sizeof(buffer) - 1; i >= 0; --i) value = (value << CHAR_BIT) + buffer[i]; *value_p = value; } return SVN_NO_ERROR; } /* Convenience function similar to read_uint64_from_proto_index, but returns * an uint32 value in VALUE_P. Return an error if the value does not fit. */ static svn_error_t * read_uint32_from_proto_index(apr_file_t *proto_index, apr_uint32_t *value_p, svn_boolean_t *eof, apr_pool_t *scratch_pool) { apr_uint64_t value; SVN_ERR(read_uint64_from_proto_index(proto_index, &value, eof, scratch_pool)); if (!eof || !*eof) { if (value > APR_UINT32_MAX) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW, NULL, _("UINT32 0x%s too large, max = 0x%s"), apr_psprintf(scratch_pool, "%" APR_UINT64_T_HEX_FMT, value), apr_psprintf(scratch_pool, "%" APR_UINT64_T_HEX_FMT, (apr_uint64_t)APR_UINT32_MAX)); /* This conversion is not lossy because the value can be represented * in the target type. */ *value_p = (apr_uint32_t)value; } return SVN_NO_ERROR; } /* Convenience function similar to read_uint64_from_proto_index, but returns * an off_t value in VALUE_P. Return an error if the value does not fit. */ static svn_error_t * read_off_t_from_proto_index(apr_file_t *proto_index, apr_off_t *value_p, svn_boolean_t *eof, apr_pool_t *scratch_pool) { apr_uint64_t value; SVN_ERR(read_uint64_from_proto_index(proto_index, &value, eof, scratch_pool)); if (!eof || !*eof) { if (value > off_t_max) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW, NULL, _("File offset 0x%s too large, max = 0x%s"), apr_psprintf(scratch_pool, "%" APR_UINT64_T_HEX_FMT, value), apr_psprintf(scratch_pool, "%" APR_UINT64_T_HEX_FMT, off_t_max)); /* Shortening conversion from unsigned to signed int is well-defined * and not lossy in C because the value can be represented in the * target type. */ *value_p = (apr_off_t)value; } return SVN_NO_ERROR; } /* * log-to-phys index */ /* Append ENTRY to log-to-phys PROTO_INDEX file. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * write_l2p_entry_to_proto_index(apr_file_t *proto_index, l2p_proto_entry_t entry, apr_pool_t *scratch_pool) { SVN_ERR(write_uint64_to_proto_index(proto_index, entry.offset, scratch_pool)); SVN_ERR(write_uint64_to_proto_index(proto_index, entry.item_index, scratch_pool)); return SVN_NO_ERROR; } /* Read *ENTRY from log-to-phys PROTO_INDEX file and indicate end-of-file * in *EOF, or error out in that case if EOF is NULL. *ENTRY is in an * undefined state if an end-of-file occurred. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * read_l2p_entry_from_proto_index(apr_file_t *proto_index, l2p_proto_entry_t *entry, svn_boolean_t *eof, apr_pool_t *scratch_pool) { SVN_ERR(read_uint64_from_proto_index(proto_index, &entry->offset, eof, scratch_pool)); SVN_ERR(read_uint64_from_proto_index(proto_index, &entry->item_index, eof, scratch_pool)); return SVN_NO_ERROR; } /* Write the log-2-phys index page description for the l2p_page_entry_t * array ENTRIES, starting with element START up to but not including END. * Write the resulting representation into BUFFER. Use SCRATCH_POOL for * temporary allocations. */ static svn_error_t * encode_l2p_page(apr_array_header_t *entries, int start, int end, svn_spillbuf_t *buffer, apr_pool_t *scratch_pool) { unsigned char encoded[ENCODED_INT_LENGTH]; int i; const apr_uint64_t *values = (const apr_uint64_t *)entries->elts; apr_uint64_t last_value = 0; /* encode items */ for (i = start; i < end; ++i) { apr_int64_t diff = values[i] - last_value; last_value = values[i]; SVN_ERR(svn_spillbuf__write(buffer, (const char *)encoded, encode_int(encoded, diff), scratch_pool)); } return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__l2p_proto_index_open(apr_file_t **proto_index, const char *file_name, apr_pool_t *result_pool) { SVN_ERR(svn_io_file_open(proto_index, file_name, APR_READ | APR_WRITE | APR_CREATE | APR_APPEND | APR_BUFFERED, APR_OS_DEFAULT, result_pool)); return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__l2p_proto_index_add_revision(apr_file_t *proto_index, apr_pool_t *scratch_pool) { l2p_proto_entry_t entry; entry.offset = 0; entry.item_index = 0; return svn_error_trace(write_l2p_entry_to_proto_index(proto_index, entry, scratch_pool)); } svn_error_t * svn_fs_fs__l2p_proto_index_add_entry(apr_file_t *proto_index, apr_off_t offset, apr_uint64_t item_index, apr_pool_t *scratch_pool) { l2p_proto_entry_t entry; /* make sure the conversion to uint64 works */ SVN_ERR_ASSERT(offset >= -1); /* we support offset '-1' as a "not used" indication */ entry.offset = (apr_uint64_t)offset + 1; /* make sure we can use item_index as an array index when building the * final index file */ SVN_ERR_ASSERT(item_index < UINT_MAX / 2); entry.item_index = item_index; return svn_error_trace(write_l2p_entry_to_proto_index(proto_index, entry, scratch_pool)); } svn_error_t * svn_fs_fs__l2p_index_append(svn_checksum_t **checksum, svn_fs_t *fs, apr_file_t *index_file, const char *proto_file_name, svn_revnum_t revision, apr_pool_t * result_pool, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; apr_file_t *proto_index = NULL; svn_stream_t *stream; int i; apr_uint64_t entry; svn_boolean_t eof = FALSE; int last_page_count = 0; /* total page count at the start of the current revision */ /* temporary data structures that collect the data which will be moved to the target file in a second step */ apr_pool_t *local_pool = svn_pool_create(scratch_pool); apr_pool_t *iterpool = svn_pool_create(local_pool); apr_array_header_t *page_counts = apr_array_make(local_pool, 16, sizeof(apr_uint64_t)); apr_array_header_t *page_sizes = apr_array_make(local_pool, 16, sizeof(apr_uint64_t)); apr_array_header_t *entry_counts = apr_array_make(local_pool, 16, sizeof(apr_uint64_t)); /* collect the item offsets and sub-item value for the current revision */ apr_array_header_t *entries = apr_array_make(local_pool, 256, sizeof(apr_uint64_t)); /* 64k blocks, spill after 16MB */ svn_spillbuf_t *buffer = svn_spillbuf__create(0x10000, 0x1000000, local_pool); /* Paranoia check that makes later casting to int32 safe. * The current implementation is limited to 2G entries per page. */ if (ffd->l2p_page_size > APR_INT32_MAX) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("L2P index page size %s" " exceeds current limit of 2G entries"), apr_psprintf(local_pool, "%" APR_UINT64_T_FMT, ffd->l2p_page_size)); /* start at the beginning of the source file */ SVN_ERR(svn_io_file_open(&proto_index, proto_file_name, APR_READ | APR_CREATE | APR_BUFFERED, APR_OS_DEFAULT, scratch_pool)); /* process all entries until we fail due to EOF */ for (entry = 0; !eof; ++entry) { l2p_proto_entry_t proto_entry; /* (attempt to) read the next entry from the source */ SVN_ERR(read_l2p_entry_from_proto_index(proto_index, &proto_entry, &eof, local_pool)); /* handle new revision */ - if ((entry > 0 && proto_entry.offset == 0) || eof) + if (eof || (entry > 0 && proto_entry.offset == 0)) { /* dump entries, grouped into pages */ int entry_count = 0; for (i = 0; i < entries->nelts; i += entry_count) { /* 1 page with up to L2P_PAGE_SIZE entries. * fsfs.conf settings validation guarantees this to fit into * our address space. */ apr_uint64_t last_buffer_size = (apr_uint64_t)svn_spillbuf__get_size(buffer); svn_pool_clear(iterpool); entry_count = ffd->l2p_page_size < entries->nelts - i ? (int)ffd->l2p_page_size : entries->nelts - i; SVN_ERR(encode_l2p_page(entries, i, i + entry_count, buffer, iterpool)); APR_ARRAY_PUSH(entry_counts, apr_uint64_t) = entry_count; APR_ARRAY_PUSH(page_sizes, apr_uint64_t) = svn_spillbuf__get_size(buffer) - last_buffer_size; } apr_array_clear(entries); /* store the number of pages in this revision */ APR_ARRAY_PUSH(page_counts, apr_uint64_t) = page_sizes->nelts - last_page_count; last_page_count = page_sizes->nelts; } else { int idx; /* store the mapping in our array */ if (proto_entry.item_index > APR_INT32_MAX) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("Item index %s too large " "in l2p proto index for revision %ld"), apr_psprintf(local_pool, "%" APR_UINT64_T_FMT, proto_entry.item_index), revision + page_counts->nelts); idx = (int)proto_entry.item_index; while (idx >= entries->nelts) APR_ARRAY_PUSH(entries, apr_uint64_t) = 0; APR_ARRAY_IDX(entries, idx, apr_uint64_t) = proto_entry.offset; } } /* close the source file */ SVN_ERR(svn_io_file_close(proto_index, local_pool)); /* Paranoia check that makes later casting to int32 safe. * The current implementation is limited to 2G pages per index. */ if (page_counts->nelts > APR_INT32_MAX) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("L2P index page count %d" " exceeds current limit of 2G pages"), page_counts->nelts); /* open target stream. */ stream = svn_stream_checksummed2(svn_stream_from_aprfile2(index_file, TRUE, local_pool), NULL, checksum, svn_checksum_md5, FALSE, result_pool); /* write header info */ SVN_ERR(svn_stream_puts(stream, L2P_STREAM_PREFIX)); SVN_ERR(stream_write_encoded(stream, revision)); SVN_ERR(stream_write_encoded(stream, ffd->l2p_page_size)); SVN_ERR(stream_write_encoded(stream, page_counts->nelts)); SVN_ERR(stream_write_encoded(stream, page_sizes->nelts)); /* write the revision table */ for (i = 0; i < page_counts->nelts; ++i) { apr_uint64_t value = APR_ARRAY_IDX(page_counts, i, apr_uint64_t); SVN_ERR(stream_write_encoded(stream, value)); } /* write the page table */ for (i = 0; i < page_sizes->nelts; ++i) { apr_uint64_t value = APR_ARRAY_IDX(page_sizes, i, apr_uint64_t); SVN_ERR(stream_write_encoded(stream, value)); value = APR_ARRAY_IDX(entry_counts, i, apr_uint64_t); SVN_ERR(stream_write_encoded(stream, value)); } /* append page contents and implicitly close STREAM */ SVN_ERR(svn_stream_copy3(svn_stream__from_spillbuf(buffer, local_pool), stream, NULL, NULL, local_pool)); svn_pool_destroy(local_pool); return SVN_NO_ERROR; } /* If REV_FILE->L2P_STREAM is NULL, create a new stream for the log-to-phys * index for REVISION in FS and return it in REV_FILE. */ static svn_error_t * auto_open_l2p_index(svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision) { if (rev_file->l2p_stream == NULL) { fs_fs_data_t *ffd = fs->fsap_data; SVN_ERR(svn_fs_fs__auto_read_footer(rev_file)); SVN_ERR(packed_stream_open(&rev_file->l2p_stream, rev_file->file, rev_file->l2p_offset, rev_file->p2l_offset, L2P_STREAM_PREFIX, (apr_size_t)ffd->block_size, rev_file->pool, rev_file->pool)); } return SVN_NO_ERROR; } /* Read the header data structure of the log-to-phys index for REVISION * in FS and return it in *HEADER, allocated in RESULT_POOL. Use REV_FILE * to access on-disk data. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * get_l2p_header_body(l2p_header_t **header, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; apr_uint64_t value; apr_size_t i; apr_size_t page, page_count; apr_off_t offset; l2p_header_t *result = apr_pcalloc(result_pool, sizeof(*result)); apr_size_t page_table_index; svn_revnum_t next_rev; pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; SVN_ERR(auto_open_l2p_index(rev_file, fs, revision)); packed_stream_seek(rev_file->l2p_stream, 0); /* Read the table sizes. Check the data for plausibility and * consistency with other bits. */ SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); result->first_revision = (svn_revnum_t)value; if (result->first_revision != rev_file->start_revision) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Index rev / pack file revision numbers do not match")); SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); result->page_size = (apr_uint32_t)value; if (!result->page_size || (result->page_size & (result->page_size - 1))) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("L2P index page size is not a power of two")); SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); result->revision_count = (int)value; if ( result->revision_count != 1 && result->revision_count != (apr_uint64_t)ffd->max_files_per_dir) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Invalid number of revisions in L2P index")); SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); page_count = (apr_size_t)value; if (page_count < result->revision_count) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Fewer L2P index pages than revisions")); if (page_count > (rev_file->p2l_offset - rev_file->l2p_offset) / 2) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("L2P index page count implausibly large")); next_rev = result->first_revision + (svn_revnum_t)result->revision_count; if (result->first_revision > revision || next_rev <= revision) return svn_error_createf(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Corrupt L2P index for r%ld only covers r%ld:%ld"), revision, result->first_revision, next_rev); /* allocate the page tables */ result->page_table = apr_pcalloc(result_pool, page_count * sizeof(*result->page_table)); result->page_table_index = apr_pcalloc(result_pool, (result->revision_count + 1) * sizeof(*result->page_table_index)); /* read per-revision page table sizes (i.e. number of pages per rev) */ page_table_index = 0; result->page_table_index[0] = page_table_index; for (i = 0; i < result->revision_count; ++i) { SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); if (value == 0) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Revision with no L2P index pages")); page_table_index += (apr_size_t)value; if (page_table_index > page_count) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("L2P page table exceeded")); result->page_table_index[i+1] = page_table_index; } if (page_table_index != page_count) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Revisions do not cover the full L2P index page table")); /* read actual page tables */ for (page = 0; page < page_count; ++page) { SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); if (value == 0) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Empty L2P index page")); result->page_table[page].size = (apr_uint32_t)value; SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); if (value > result->page_size) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Page exceeds L2P index page size")); result->page_table[page].entry_count = (apr_uint32_t)value; } /* correct the page description offsets */ offset = packed_stream_offset(rev_file->l2p_stream); for (page = 0; page < page_count; ++page) { result->page_table[page].offset = offset; offset += result->page_table[page].size; } /* return and cache the header */ *header = result; SVN_ERR(svn_cache__set(ffd->l2p_header_cache, &key, result, scratch_pool)); return SVN_NO_ERROR; } /* Data structure that describes which l2p page info shall be extracted * from the cache and contains the fields that receive the result. */ typedef struct l2p_page_info_baton_t { /* input data: we want the page covering (REVISION,ITEM_INDEX) */ svn_revnum_t revision; apr_uint64_t item_index; /* out data */ /* page location and size of the page within the l2p index file */ l2p_page_table_entry_t entry; /* page number within the pages for REVISION (not l2p index global!) */ apr_uint32_t page_no; /* offset of ITEM_INDEX within that page */ apr_uint32_t page_offset; /* revision identifying the l2p index file, also the first rev in that */ svn_revnum_t first_revision; } l2p_page_info_baton_t; /* Utility function that copies the info requested by BATON->REVISION and * BATON->ITEM_INDEX and from HEADER and PAGE_TABLE into the output fields * of *BATON. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * l2p_page_info_copy(l2p_page_info_baton_t *baton, const l2p_header_t *header, const l2p_page_table_entry_t *page_table, const apr_size_t *page_table_index, apr_pool_t *scratch_pool) { /* revision offset within the index file */ apr_size_t rel_revision = baton->revision - header->first_revision; if (rel_revision >= header->revision_count) return svn_error_createf(SVN_ERR_FS_INDEX_REVISION , NULL, _("Revision %ld not covered by item index"), baton->revision); /* select the relevant page */ if (baton->item_index < header->page_size) { /* most revs fit well into a single page */ baton->page_offset = (apr_uint32_t)baton->item_index; baton->page_no = 0; baton->entry = page_table[page_table_index[rel_revision]]; } else { const l2p_page_table_entry_t *first_entry; const l2p_page_table_entry_t *last_entry; apr_uint64_t max_item_index; /* range of pages for this rev */ first_entry = page_table + page_table_index[rel_revision]; last_entry = page_table + page_table_index[rel_revision + 1]; /* do we hit a valid index page? */ max_item_index = (apr_uint64_t)header->page_size * (last_entry - first_entry); if (baton->item_index >= max_item_index) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("Item index %s exceeds l2p limit " "of %s for revision %ld"), apr_psprintf(scratch_pool, "%" APR_UINT64_T_FMT, baton->item_index), apr_psprintf(scratch_pool, "%" APR_UINT64_T_FMT, max_item_index), baton->revision); /* all pages are of the same size and full, except for the last one */ baton->page_offset = (apr_uint32_t)(baton->item_index % header->page_size); baton->page_no = (apr_uint32_t)(baton->item_index / header->page_size); baton->entry = first_entry[baton->page_no]; } baton->first_revision = header->first_revision; return SVN_NO_ERROR; } /* Implement svn_cache__partial_getter_func_t: copy the data requested in * l2p_page_info_baton_t *BATON from l2p_header_t *DATA into the output * fields in *BATON. */ static svn_error_t * l2p_page_info_access_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { /* resolve all pointer values of in-cache data */ const l2p_header_t *header = data; const l2p_page_table_entry_t *page_table = svn_temp_deserializer__ptr(header, (const void *const *)&header->page_table); const apr_size_t *page_table_index = svn_temp_deserializer__ptr(header, (const void *const *)&header->page_table_index); /* copy the info */ return l2p_page_info_copy(baton, header, page_table, page_table_index, result_pool); } /* Get the page info requested in *BATON from FS and set the output fields * in *BATON. Use REV_FILE for on-disk file access. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * get_l2p_page_info(l2p_page_info_baton_t *baton, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; l2p_header_t *result; svn_boolean_t is_cached = FALSE; void *dummy = NULL; /* try to find the info in the cache */ pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; SVN_ERR(svn_cache__get_partial((void**)&dummy, &is_cached, ffd->l2p_header_cache, &key, l2p_page_info_access_func, baton, scratch_pool)); if (is_cached) return SVN_NO_ERROR; /* read from disk, cache and copy the result */ SVN_ERR(get_l2p_header_body(&result, rev_file, fs, baton->revision, scratch_pool, scratch_pool)); SVN_ERR(l2p_page_info_copy(baton, result, result->page_table, result->page_table_index, scratch_pool)); return SVN_NO_ERROR; } /* Data request structure used by l2p_page_table_access_func. */ typedef struct l2p_page_table_baton_t { /* revision for which to read the page table */ svn_revnum_t revision; /* page table entries (of type l2p_page_table_entry_t). * Must be created by caller and will be filled by callee. */ apr_array_header_t *pages; } l2p_page_table_baton_t; /* Implement svn_cache__partial_getter_func_t: copy the data requested in * l2p_page_baton_t *BATON from l2p_page_t *DATA into BATON->PAGES and *OUT. */ static svn_error_t * l2p_page_table_access_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { /* resolve in-cache pointers */ l2p_page_table_baton_t *table_baton = baton; const l2p_header_t *header = (const l2p_header_t *)data; const l2p_page_table_entry_t *page_table = svn_temp_deserializer__ptr(header, (const void *const *)&header->page_table); const apr_size_t *page_table_index = svn_temp_deserializer__ptr(header, (const void *const *)&header->page_table_index); /* copy the revision's page table into BATON */ apr_size_t rel_revision = table_baton->revision - header->first_revision; if (rel_revision < header->revision_count) { const l2p_page_table_entry_t *entry = page_table + page_table_index[rel_revision]; const l2p_page_table_entry_t *last_entry = page_table + page_table_index[rel_revision + 1]; for (; entry < last_entry; ++entry) APR_ARRAY_PUSH(table_baton->pages, l2p_page_table_entry_t) = *entry; } /* set output as a courtesy to the caller */ *out = table_baton->pages; return SVN_NO_ERROR; } /* Read the l2p index page table for REVISION in FS from cache and return * it in PAGES. The later must be provided by the caller (and can be * re-used); existing entries will be removed before writing the result. * If the data cannot be found in the cache, the result will be empty * (it never can be empty for a valid REVISION if the data is cached). * Use the info from REV_FILE to determine pack / rev file properties. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * get_l2p_page_table(apr_array_header_t *pages, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; svn_boolean_t is_cached = FALSE; l2p_page_table_baton_t baton; pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; apr_array_clear(pages); baton.revision = revision; baton.pages = pages; SVN_ERR(svn_cache__get_partial((void**)&pages, &is_cached, ffd->l2p_header_cache, &key, l2p_page_table_access_func, &baton, scratch_pool)); return SVN_NO_ERROR; } /* From the log-to-phys index file starting at START_REVISION in FS, read * the mapping page identified by TABLE_ENTRY and return it in *PAGE. * Use REV_FILE to access on-disk files. * Use RESULT_POOL for allocations. */ static svn_error_t * get_l2p_page(l2p_page_t **page, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t start_revision, l2p_page_table_entry_t *table_entry, apr_pool_t *result_pool) { apr_uint32_t i; l2p_page_t *result = apr_pcalloc(result_pool, sizeof(*result)); apr_uint64_t last_value = 0; /* open index file and select page */ SVN_ERR(auto_open_l2p_index(rev_file, fs, start_revision)); packed_stream_seek(rev_file->l2p_stream, table_entry->offset); /* initialize the page content */ result->entry_count = table_entry->entry_count; result->offsets = apr_pcalloc(result_pool, result->entry_count * sizeof(*result->offsets)); /* read all page entries (offsets in rev file and container sub-items) */ for (i = 0; i < result->entry_count; ++i) { apr_uint64_t value = 0; SVN_ERR(packed_stream_get(&value, rev_file->l2p_stream)); last_value += decode_int(value); result->offsets[i] = last_value - 1; } /* After reading all page entries, the read cursor must have moved by * TABLE_ENTRY->SIZE bytes. */ if ( packed_stream_offset(rev_file->l2p_stream) != table_entry->offset + table_entry->size) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("L2P actual page size does not match page table value.")); *page = result; return SVN_NO_ERROR; } /* Utility function. Read the l2p index pages for REVISION in FS from * REV_FILE and put them into the cache. Skip page number EXLCUDED_PAGE_NO * (use -1 for 'skip none') and pages outside the MIN_OFFSET, MAX_OFFSET * range in the l2p index file. The index is being identified by * FIRST_REVISION. PAGES is a scratch container provided by the caller. * SCRATCH_POOL is used for temporary allocations. * * This function may be a no-op if the header cache lookup fails / misses. */ static svn_error_t * prefetch_l2p_pages(svn_boolean_t *end, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t first_revision, svn_revnum_t revision, apr_array_header_t *pages, int exlcuded_page_no, apr_off_t min_offset, apr_off_t max_offset, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; int i; apr_pool_t *iterpool; svn_fs_fs__page_cache_key_t key = { 0 }; /* Parameter check. */ if (min_offset < 0) min_offset = 0; if (max_offset <= 0) { /* Nothing to do */ *end = TRUE; return SVN_NO_ERROR; } /* get the page table for REVISION from cache */ *end = FALSE; SVN_ERR(get_l2p_page_table(pages, fs, rev_file, revision, scratch_pool)); if (pages->nelts == 0 || rev_file->l2p_stream == NULL) { /* not found -> we can't continue without hitting the disk again */ *end = TRUE; return SVN_NO_ERROR; } /* prefetch pages individually until all are done or we found one in * the cache */ iterpool = svn_pool_create(scratch_pool); assert(revision <= APR_UINT32_MAX); key.revision = (apr_uint32_t)revision; key.is_packed = rev_file->is_packed; for (i = 0; i < pages->nelts && !*end; ++i) { svn_boolean_t is_cached; l2p_page_table_entry_t *entry = &APR_ARRAY_IDX(pages, i, l2p_page_table_entry_t); svn_pool_clear(iterpool); if (i == exlcuded_page_no) continue; /* skip pages outside the specified index file range */ if ( entry->offset < (apr_uint64_t)min_offset || entry->offset + entry->size > (apr_uint64_t)max_offset) { *end = TRUE; continue; } /* page already in cache? */ key.page = i; SVN_ERR(svn_cache__has_key(&is_cached, ffd->l2p_page_cache, &key, iterpool)); if (!is_cached) { /* no in cache -> read from stream (data already buffered in APR) * and cache the result */ l2p_page_t *page = NULL; SVN_ERR(get_l2p_page(&page, rev_file, fs, first_revision, entry, iterpool)); SVN_ERR(svn_cache__set(ffd->l2p_page_cache, &key, page, iterpool)); } } svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* Request data structure for l2p_entry_access_func. */ typedef struct l2p_entry_baton_t { /* in data */ /* revision. Used for error messages only */ svn_revnum_t revision; /* item index to look up. Used for error messages only */ apr_uint64_t item_index; /* offset within the cached page */ apr_uint32_t page_offset; /* out data */ /* absolute item or container offset in rev / pack file */ apr_uint64_t offset; } l2p_entry_baton_t; /* Return the rev / pack file offset of the item at BATON->PAGE_OFFSET in * OFFSETS of PAGE and write it to *OFFSET. */ static svn_error_t * l2p_page_get_entry(l2p_entry_baton_t *baton, const l2p_page_t *page, const apr_uint64_t *offsets, apr_pool_t *scratch_pool) { /* overflow check */ if (page->entry_count <= baton->page_offset) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("Item index %s" " too large in revision %ld"), apr_psprintf(scratch_pool, "%" APR_UINT64_T_FMT, baton->item_index), baton->revision); /* return the result */ baton->offset = offsets[baton->page_offset]; return SVN_NO_ERROR; } /* Implement svn_cache__partial_getter_func_t: copy the data requested in * l2p_entry_baton_t *BATON from l2p_page_t *DATA into BATON->OFFSET. * *OUT remains unchanged. */ static svn_error_t * l2p_entry_access_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { /* resolve all in-cache pointers */ const l2p_page_t *page = data; const apr_uint64_t *offsets = svn_temp_deserializer__ptr(page, (const void *const *)&page->offsets); /* return the requested data */ return l2p_page_get_entry(baton, page, offsets, result_pool); } /* Using the log-to-phys indexes in FS, find the absolute offset in the * rev file for (REVISION, ITEM_INDEX) and return it in *OFFSET. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * l2p_index_lookup(apr_off_t *offset, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, apr_uint64_t item_index, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; l2p_page_info_baton_t info_baton; l2p_entry_baton_t page_baton; l2p_page_t *page = NULL; svn_fs_fs__page_cache_key_t key = { 0 }; svn_boolean_t is_cached = FALSE; void *dummy = NULL; /* read index master data structure and extract the info required to * access the l2p index page for (REVISION,ITEM_INDEX)*/ info_baton.revision = revision; info_baton.item_index = item_index; SVN_ERR(get_l2p_page_info(&info_baton, rev_file, fs, scratch_pool)); /* try to find the page in the cache and get the OFFSET from it */ page_baton.revision = revision; page_baton.item_index = item_index; page_baton.page_offset = info_baton.page_offset; assert(revision <= APR_UINT32_MAX); key.revision = (apr_uint32_t)revision; key.is_packed = svn_fs_fs__is_packed_rev(fs, revision); key.page = info_baton.page_no; SVN_ERR(svn_cache__get_partial(&dummy, &is_cached, ffd->l2p_page_cache, &key, l2p_entry_access_func, &page_baton, scratch_pool)); if (!is_cached) { /* we need to read the info from disk (might already be in the * APR file buffer, though) */ apr_array_header_t *pages; svn_revnum_t prefetch_revision; svn_revnum_t last_revision = info_baton.first_revision + (key.is_packed ? ffd->max_files_per_dir : 1); svn_boolean_t end; apr_off_t max_offset = APR_ALIGN(info_baton.entry.offset + info_baton.entry.size, ffd->block_size); apr_off_t min_offset = max_offset - ffd->block_size; /* read the relevant page */ SVN_ERR(get_l2p_page(&page, rev_file, fs, info_baton.first_revision, &info_baton.entry, scratch_pool)); /* cache the page and extract the result we need */ SVN_ERR(svn_cache__set(ffd->l2p_page_cache, &key, page, scratch_pool)); SVN_ERR(l2p_page_get_entry(&page_baton, page, page->offsets, scratch_pool)); if (ffd->use_block_read) { apr_pool_t *iterpool = svn_pool_create(scratch_pool); /* prefetch pages from following and preceding revisions */ pages = apr_array_make(scratch_pool, 16, sizeof(l2p_page_table_entry_t)); end = FALSE; for (prefetch_revision = revision; prefetch_revision < last_revision && !end; ++prefetch_revision) { int excluded_page_no = prefetch_revision == revision ? info_baton.page_no : -1; svn_pool_clear(iterpool); SVN_ERR(prefetch_l2p_pages(&end, fs, rev_file, info_baton.first_revision, prefetch_revision, pages, excluded_page_no, min_offset, max_offset, iterpool)); } end = FALSE; for (prefetch_revision = revision-1; prefetch_revision >= info_baton.first_revision && !end; --prefetch_revision) { svn_pool_clear(iterpool); SVN_ERR(prefetch_l2p_pages(&end, fs, rev_file, info_baton.first_revision, prefetch_revision, pages, -1, min_offset, max_offset, iterpool)); } svn_pool_destroy(iterpool); } } *offset = page_baton.offset; return SVN_NO_ERROR; } /* Using the log-to-phys proto index in transaction TXN_ID in FS, find the * absolute offset in the proto rev file for the given ITEM_INDEX and return * it in *OFFSET. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * l2p_proto_index_lookup(apr_off_t *offset, svn_fs_t *fs, const svn_fs_fs__id_part_t *txn_id, apr_uint64_t item_index, apr_pool_t *scratch_pool) { svn_boolean_t eof = FALSE; apr_file_t *file = NULL; SVN_ERR(svn_io_file_open(&file, svn_fs_fs__path_l2p_proto_index(fs, txn_id, scratch_pool), APR_READ | APR_BUFFERED, APR_OS_DEFAULT, scratch_pool)); /* process all entries until we fail due to EOF */ *offset = -1; while (!eof) { l2p_proto_entry_t entry; /* (attempt to) read the next entry from the source */ SVN_ERR(read_l2p_entry_from_proto_index(file, &entry, &eof, scratch_pool)); /* handle new revision */ if (!eof && entry.item_index == item_index) { *offset = (apr_off_t)entry.offset - 1; break; } } SVN_ERR(svn_io_file_close(file, scratch_pool)); return SVN_NO_ERROR; } /* Read the log-to-phys header info of the index covering REVISION from FS * and return it in *HEADER. REV_FILE provides the pack / rev status. * Allocate *HEADER in RESULT_POOL, use SCRATCH_POOL for temporary * allocations. */ static svn_error_t * get_l2p_header(l2p_header_t **header, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; svn_boolean_t is_cached = FALSE; /* first, try cache lookop */ pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; SVN_ERR(svn_cache__get((void**)header, &is_cached, ffd->l2p_header_cache, &key, result_pool)); if (is_cached) return SVN_NO_ERROR; /* read from disk and cache the result */ SVN_ERR(get_l2p_header_body(header, rev_file, fs, revision, result_pool, scratch_pool)); return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__l2p_get_max_ids(apr_array_header_t **max_ids, svn_fs_t *fs, svn_revnum_t start_rev, apr_size_t count, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { l2p_header_t *header = NULL; svn_revnum_t revision; svn_revnum_t last_rev = (svn_revnum_t)(start_rev + count); svn_fs_fs__revision_file_t *rev_file; apr_pool_t *header_pool = svn_pool_create(scratch_pool); /* read index master data structure for the index covering START_REV */ SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, fs, start_rev, header_pool, header_pool)); SVN_ERR(get_l2p_header(&header, rev_file, fs, start_rev, header_pool, header_pool)); SVN_ERR(svn_fs_fs__close_revision_file(rev_file)); /* Determine the length of the item index list for each rev. * Read new index headers as required. */ *max_ids = apr_array_make(result_pool, (int)count, sizeof(apr_uint64_t)); for (revision = start_rev; revision < last_rev; ++revision) { apr_uint64_t full_page_count; apr_uint64_t item_count; apr_size_t first_page_index, last_page_index; if (revision - header->first_revision >= header->revision_count) { /* need to read the next index. Clear up memory used for the * previous one. Note that intermittent pack runs do not change * the number of items in a revision, i.e. there is no consistency * issue here. */ svn_pool_clear(header_pool); SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, fs, revision, header_pool, header_pool)); SVN_ERR(get_l2p_header(&header, rev_file, fs, revision, header_pool, header_pool)); SVN_ERR(svn_fs_fs__close_revision_file(rev_file)); } /* in a revision with N index pages, the first N-1 index pages are * "full", i.e. contain HEADER->PAGE_SIZE entries */ first_page_index = header->page_table_index[revision - header->first_revision]; last_page_index = header->page_table_index[revision - header->first_revision + 1]; full_page_count = last_page_index - first_page_index - 1; item_count = full_page_count * header->page_size + header->page_table[last_page_index - 1].entry_count; APR_ARRAY_PUSH(*max_ids, apr_uint64_t) = item_count; } svn_pool_destroy(header_pool); return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__item_offset(apr_off_t *absolute_position, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, const svn_fs_fs__id_part_t *txn_id, apr_uint64_t item_index, apr_pool_t *scratch_pool) { svn_error_t *err = SVN_NO_ERROR; if (txn_id) { if (svn_fs_fs__use_log_addressing(fs)) { /* the txn is going to produce a rev with logical addressing. So, we need to get our info from the (proto) index file. */ SVN_ERR(l2p_proto_index_lookup(absolute_position, fs, txn_id, item_index, scratch_pool)); } else { /* for data in txns, item_index *is* the offset */ *absolute_position = item_index; } } else if (svn_fs_fs__use_log_addressing(fs)) { /* ordinary index lookup */ SVN_ERR(l2p_index_lookup(absolute_position, fs, rev_file, revision, item_index, scratch_pool)); } else if (rev_file->is_packed) { /* pack file with physical addressing */ apr_off_t rev_offset; SVN_ERR(svn_fs_fs__get_packed_offset(&rev_offset, fs, revision, scratch_pool)); *absolute_position = rev_offset + item_index; } else { /* for non-packed revs with physical addressing, item_index *is* the offset */ *absolute_position = item_index; } return svn_error_trace(err); } /* * phys-to-log index */ svn_error_t * svn_fs_fs__p2l_proto_index_open(apr_file_t **proto_index, const char *file_name, apr_pool_t *result_pool) { SVN_ERR(svn_io_file_open(proto_index, file_name, APR_READ | APR_WRITE | APR_CREATE | APR_APPEND | APR_BUFFERED, APR_OS_DEFAULT, result_pool)); return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__p2l_proto_index_add_entry(apr_file_t *proto_index, const svn_fs_fs__p2l_entry_t *entry, apr_pool_t *scratch_pool) { apr_uint64_t revision; /* Make sure all signed elements of ENTRY have non-negative values. * * For file offsets and sizes, this is a given as we use them to describe * absolute positions and sizes. For revisions, SVN_INVALID_REVNUM is * valid, hence we have to shift it by 1. */ SVN_ERR_ASSERT(entry->offset >= 0); SVN_ERR_ASSERT(entry->size >= 0); SVN_ERR_ASSERT( entry->item.revision >= 0 || entry->item.revision == SVN_INVALID_REVNUM); revision = entry->item.revision == SVN_INVALID_REVNUM ? 0 : ((apr_uint64_t)entry->item.revision + 1); /* Now, all values will nicely convert to uint64. */ /* Make sure to keep P2L_PROTO_INDEX_ENTRY_SIZE consistent with this: */ SVN_ERR(write_uint64_to_proto_index(proto_index, entry->offset, scratch_pool)); SVN_ERR(write_uint64_to_proto_index(proto_index, entry->size, scratch_pool)); SVN_ERR(write_uint64_to_proto_index(proto_index, entry->type, scratch_pool)); SVN_ERR(write_uint64_to_proto_index(proto_index, entry->fnv1_checksum, scratch_pool)); SVN_ERR(write_uint64_to_proto_index(proto_index, revision, scratch_pool)); SVN_ERR(write_uint64_to_proto_index(proto_index, entry->item.number, scratch_pool)); return SVN_NO_ERROR; } /* Read *ENTRY from log-to-phys PROTO_INDEX file and indicate end-of-file * in *EOF, or error out in that case if EOF is NULL. *ENTRY is in an * undefined state if an end-of-file occurred. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * read_p2l_entry_from_proto_index(apr_file_t *proto_index, svn_fs_fs__p2l_entry_t *entry, svn_boolean_t *eof, apr_pool_t *scratch_pool) { apr_uint64_t revision; SVN_ERR(read_off_t_from_proto_index(proto_index, &entry->offset, eof, scratch_pool)); SVN_ERR(read_off_t_from_proto_index(proto_index, &entry->size, eof, scratch_pool)); SVN_ERR(read_uint32_from_proto_index(proto_index, &entry->type, eof, scratch_pool)); SVN_ERR(read_uint32_from_proto_index(proto_index, &entry->fnv1_checksum, eof, scratch_pool)); SVN_ERR(read_uint64_from_proto_index(proto_index, &revision, eof, scratch_pool)); SVN_ERR(read_uint64_from_proto_index(proto_index, &entry->item.number, eof, scratch_pool)); /* Do the inverse REVSION number conversion (see * svn_fs_fs__p2l_proto_index_add_entry), if we actually read a complete * record. */ if (!eof || !*eof) { /* Be careful with the arithmetics here (overflows and wrap-around): */ if (revision > 0 && revision - 1 > LONG_MAX) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW, NULL, _("Revision 0x%s too large, max = 0x%s"), apr_psprintf(scratch_pool, "%" APR_UINT64_T_HEX_FMT, revision), apr_psprintf(scratch_pool, "%" APR_UINT64_T_HEX_FMT, (apr_uint64_t)LONG_MAX)); /* Shortening conversion from unsigned to signed int is well-defined * and not lossy in C because the value can be represented in the * target type. Also, cast to 'long' instead of 'svn_revnum_t' here * to provoke a compiler warning if those types should differ and we * would need to change the overflow checking logic. */ entry->item.revision = revision == 0 ? SVN_INVALID_REVNUM : (long)(revision - 1); } return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__p2l_proto_index_next_offset(apr_off_t *next_offset, apr_file_t *proto_index, apr_pool_t *scratch_pool) { apr_off_t offset = 0; /* Empty index file? */ SVN_ERR(svn_io_file_seek(proto_index, APR_END, &offset, scratch_pool)); if (offset == 0) { *next_offset = 0; } else { /* At least one entry. Read last entry. */ svn_fs_fs__p2l_entry_t entry; offset -= P2L_PROTO_INDEX_ENTRY_SIZE; SVN_ERR(svn_io_file_seek(proto_index, APR_SET, &offset, scratch_pool)); SVN_ERR(read_p2l_entry_from_proto_index(proto_index, &entry, NULL, scratch_pool)); /* Return next offset. */ *next_offset = entry.offset + entry.size; } return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__p2l_index_append(svn_checksum_t **checksum, svn_fs_t *fs, apr_file_t *index_file, const char *proto_file_name, svn_revnum_t revision, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; apr_uint64_t page_size = ffd->p2l_page_size; apr_file_t *proto_index = NULL; svn_stream_t *stream; int i; svn_boolean_t eof = FALSE; unsigned char encoded[ENCODED_INT_LENGTH]; svn_revnum_t last_revision = revision; apr_uint64_t last_compound = 0; apr_uint64_t last_entry_end = 0; apr_uint64_t last_page_end = 0; apr_uint64_t last_buffer_size = 0; /* byte offset in the spill buffer at the begin of the current revision */ apr_uint64_t file_size = 0; /* temporary data structures that collect the data which will be moved to the target file in a second step */ apr_pool_t *local_pool = svn_pool_create(scratch_pool); apr_array_header_t *table_sizes = apr_array_make(local_pool, 16, sizeof(apr_uint64_t)); /* 64k blocks, spill after 16MB */ svn_spillbuf_t *buffer = svn_spillbuf__create(0x10000, 0x1000000, local_pool); /* for loop temps ... */ apr_pool_t *iterpool = svn_pool_create(scratch_pool); /* start at the beginning of the source file */ SVN_ERR(svn_io_file_open(&proto_index, proto_file_name, APR_READ | APR_CREATE | APR_BUFFERED, APR_OS_DEFAULT, scratch_pool)); /* process all entries until we fail due to EOF */ while (!eof) { svn_fs_fs__p2l_entry_t entry; apr_uint64_t entry_end; svn_boolean_t new_page = svn_spillbuf__get_size(buffer) == 0; apr_uint64_t compound; apr_int64_t rev_diff, compound_diff; svn_pool_clear(iterpool); /* (attempt to) read the next entry from the source */ SVN_ERR(read_p2l_entry_from_proto_index(proto_index, &entry, &eof, iterpool)); /* "unused" (and usually non-existent) section to cover the offsets at the end the of the last page. */ if (eof) { file_size = last_entry_end; entry.offset = last_entry_end; entry.size = APR_ALIGN(entry.offset, page_size) - entry.offset; entry.type = SVN_FS_FS__ITEM_TYPE_UNUSED; entry.fnv1_checksum = 0; entry.item.revision = last_revision; entry.item.number = 0; } else { /* fix-up items created when the txn's target rev was unknown */ if (entry.item.revision == SVN_INVALID_REVNUM) entry.item.revision = revision; } /* end pages if entry is extending beyond their boundaries */ entry_end = entry.offset + entry.size; while (entry_end - last_page_end > page_size) { apr_uint64_t buffer_size = svn_spillbuf__get_size(buffer); APR_ARRAY_PUSH(table_sizes, apr_uint64_t) = buffer_size - last_buffer_size; last_buffer_size = buffer_size; last_page_end += page_size; new_page = TRUE; } /* this entry starts a new table -> store its offset (all following entries in the same table will store sizes only) */ if (new_page) { SVN_ERR(svn_spillbuf__write(buffer, (const char *)encoded, encode_uint(encoded, entry.offset), iterpool)); last_revision = revision; last_compound = 0; } /* write simple item entry */ SVN_ERR(svn_spillbuf__write(buffer, (const char *)encoded, encode_uint(encoded, entry.size), iterpool)); rev_diff = entry.item.revision - last_revision; last_revision = entry.item.revision; compound = entry.item.number * 8 + entry.type; compound_diff = compound - last_compound; last_compound = compound; SVN_ERR(svn_spillbuf__write(buffer, (const char *)encoded, encode_int(encoded, compound_diff), iterpool)); SVN_ERR(svn_spillbuf__write(buffer, (const char *)encoded, encode_int(encoded, rev_diff), iterpool)); SVN_ERR(svn_spillbuf__write(buffer, (const char *)encoded, encode_uint(encoded, entry.fnv1_checksum), iterpool)); last_entry_end = entry_end; } /* close the source file */ SVN_ERR(svn_io_file_close(proto_index, local_pool)); /* store length of last table */ APR_ARRAY_PUSH(table_sizes, apr_uint64_t) = svn_spillbuf__get_size(buffer) - last_buffer_size; /* Open target stream. */ stream = svn_stream_checksummed2(svn_stream_from_aprfile2(index_file, TRUE, local_pool), NULL, checksum, svn_checksum_md5, FALSE, result_pool); /* write the start revision, file size and page size */ SVN_ERR(svn_stream_puts(stream, P2L_STREAM_PREFIX)); SVN_ERR(stream_write_encoded(stream, revision)); SVN_ERR(stream_write_encoded(stream, file_size)); SVN_ERR(stream_write_encoded(stream, page_size)); /* write the page table (actually, the sizes of each page description) */ SVN_ERR(stream_write_encoded(stream, table_sizes->nelts)); for (i = 0; i < table_sizes->nelts; ++i) { apr_uint64_t value = APR_ARRAY_IDX(table_sizes, i, apr_uint64_t); SVN_ERR(stream_write_encoded(stream, value)); } /* append page contents and implicitly close STREAM */ SVN_ERR(svn_stream_copy3(svn_stream__from_spillbuf(buffer, local_pool), stream, NULL, NULL, local_pool)); svn_pool_destroy(iterpool); svn_pool_destroy(local_pool); return SVN_NO_ERROR; } /* If REV_FILE->P2L_STREAM is NULL, create a new stream for the phys-to-log * index for REVISION in FS using the rev / pack file provided by REV_FILE. */ static svn_error_t * auto_open_p2l_index(svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision) { if (rev_file->p2l_stream == NULL) { fs_fs_data_t *ffd = fs->fsap_data; SVN_ERR(svn_fs_fs__auto_read_footer(rev_file)); SVN_ERR(packed_stream_open(&rev_file->p2l_stream, rev_file->file, rev_file->p2l_offset, rev_file->footer_offset, P2L_STREAM_PREFIX, (apr_size_t)ffd->block_size, rev_file->pool, rev_file->pool)); } return SVN_NO_ERROR; } /* Read the header data structure of the phys-to-log index for REVISION in * FS and return it in *HEADER, allocated in RESULT_POOL. Use REV_FILE to * access on-disk data. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * get_p2l_header(p2l_header_t **header, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; apr_uint64_t value; apr_size_t i; apr_off_t offset; p2l_header_t *result; svn_boolean_t is_cached = FALSE; /* look for the header data in our cache */ pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; SVN_ERR(svn_cache__get((void**)header, &is_cached, ffd->p2l_header_cache, &key, result_pool)); if (is_cached) return SVN_NO_ERROR; /* not found -> must read it from disk. * Open index file or position read pointer to the begin of the file */ if (rev_file->p2l_stream == NULL) SVN_ERR(auto_open_p2l_index(rev_file, fs, rev_file->start_revision)); else packed_stream_seek(rev_file->p2l_stream, 0); /* allocate result data structure */ result = apr_pcalloc(result_pool, sizeof(*result)); /* Read table sizes, check them for plausibility and allocate page array. */ SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); result->first_revision = (svn_revnum_t)value; if (result->first_revision != rev_file->start_revision) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Index rev / pack file revision numbers do not match")); SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); result->file_size = value; if (result->file_size != (apr_uint64_t)rev_file->l2p_offset) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Index offset and rev / pack file size do not match")); SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); result->page_size = value; if (!result->page_size || (result->page_size & (result->page_size - 1))) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("P2L index page size is not a power of two")); SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); result->page_count = (apr_size_t)value; if (result->page_count != (result->file_size - 1) / result->page_size + 1) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("P2L page count does not match rev / pack file size")); result->offsets = apr_pcalloc(result_pool, (result->page_count + 1) * sizeof(*result->offsets)); /* read page sizes and derive page description offsets from them */ result->offsets[0] = 0; for (i = 0; i < result->page_count; ++i) { SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); result->offsets[i+1] = result->offsets[i] + (apr_off_t)value; } /* correct the offset values */ offset = packed_stream_offset(rev_file->p2l_stream); for (i = 0; i <= result->page_count; ++i) result->offsets[i] += offset; /* cache the header data */ SVN_ERR(svn_cache__set(ffd->p2l_header_cache, &key, result, scratch_pool)); /* return the result */ *header = result; return SVN_NO_ERROR; } /* Data structure that describes which p2l page info shall be extracted * from the cache and contains the fields that receive the result. */ typedef struct p2l_page_info_baton_t { /* input variables */ /* revision identifying the index file */ svn_revnum_t revision; /* offset within the page in rev / pack file */ apr_off_t offset; /* output variables */ /* page containing OFFSET */ apr_size_t page_no; /* first revision in this p2l index */ svn_revnum_t first_revision; /* offset within the p2l index file describing this page */ apr_off_t start_offset; /* offset within the p2l index file describing the following page */ apr_off_t next_offset; /* PAGE_NO * PAGE_SIZE (if <= OFFSET) */ apr_off_t page_start; /* total number of pages indexed */ apr_size_t page_count; /* size of each page in pack / rev file */ apr_uint64_t page_size; } p2l_page_info_baton_t; /* From HEADER and the list of all OFFSETS, fill BATON with the page info * requested by BATON->OFFSET. */ static void p2l_page_info_copy(p2l_page_info_baton_t *baton, const p2l_header_t *header, const apr_off_t *offsets) { /* if the requested offset is out of bounds, return info for * a zero-sized empty page right behind the last page. */ if (baton->offset / header->page_size < header->page_count) { /* This cast is safe because the value is < header->page_count. */ baton->page_no = (apr_size_t)(baton->offset / header->page_size); baton->start_offset = offsets[baton->page_no]; baton->next_offset = offsets[baton->page_no + 1]; baton->page_size = header->page_size; } else { /* Beyond the last page. */ baton->page_no = header->page_count; baton->start_offset = offsets[baton->page_no]; baton->next_offset = offsets[baton->page_no]; baton->page_size = 0; } baton->first_revision = header->first_revision; baton->page_start = (apr_off_t)(header->page_size * baton->page_no); baton->page_count = header->page_count; } /* Implement svn_cache__partial_getter_func_t: extract the p2l page info * requested by BATON and return it in BATON. */ static svn_error_t * p2l_page_info_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { /* all the pointers to cached data we need */ const p2l_header_t *header = data; const apr_off_t *offsets = svn_temp_deserializer__ptr(header, (const void *const *)&header->offsets); /* copy data from cache to BATON */ p2l_page_info_copy(baton, header, offsets); return SVN_NO_ERROR; } /* Read the header data structure of the phys-to-log index for revision * BATON->REVISION in FS. Return in *BATON all info relevant to read the * index page for the rev / pack file offset BATON->OFFSET. Use REV_FILE * to access on-disk data. Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * get_p2l_page_info(p2l_page_info_baton_t *baton, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; p2l_header_t *header; svn_boolean_t is_cached = FALSE; void *dummy = NULL; /* look for the header data in our cache */ pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; SVN_ERR(svn_cache__get_partial(&dummy, &is_cached, ffd->p2l_header_cache, &key, p2l_page_info_func, baton, scratch_pool)); if (is_cached) return SVN_NO_ERROR; SVN_ERR(get_p2l_header(&header, rev_file, fs, baton->revision, scratch_pool, scratch_pool)); /* copy the requested info into *BATON */ p2l_page_info_copy(baton, header, header->offsets); return SVN_NO_ERROR; } /* Read a mapping entry from the phys-to-log index STREAM and append it to * RESULT. *ITEM_INDEX contains the phys offset for the entry and will * be moved forward by the size of entry. */ static svn_error_t * read_entry(svn_fs_fs__packed_number_stream_t *stream, apr_off_t *item_offset, svn_revnum_t *last_revision, apr_uint64_t *last_compound, apr_array_header_t *result) { apr_uint64_t value; svn_fs_fs__p2l_entry_t entry; entry.offset = *item_offset; SVN_ERR(packed_stream_get(&value, stream)); entry.size = (apr_off_t)value; SVN_ERR(packed_stream_get(&value, stream)); *last_compound += decode_int(value); entry.type = *last_compound & 7; entry.item.number = *last_compound / 8; /* Verify item type. */ if (entry.type > SVN_FS_FS__ITEM_TYPE_CHANGES) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Invalid item type in P2L index")); if ( entry.type == SVN_FS_FS__ITEM_TYPE_CHANGES && entry.item.number != SVN_FS_FS__ITEM_INDEX_CHANGES) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Changed path list must have item number 1")); SVN_ERR(packed_stream_get(&value, stream)); *last_revision += (svn_revnum_t)decode_int(value); entry.item.revision = *last_revision; SVN_ERR(packed_stream_get(&value, stream)); entry.fnv1_checksum = (apr_uint32_t)value; /* Truncating the checksum to 32 bits may have hidden random data in the * unused extra bits of the on-disk representation (7/8 bit representation * uses 5 bytes on disk for the 32 bit value, leaving 3 bits unused). */ if (value > APR_UINT32_MAX) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Invalid FNV1 checksum in P2L index")); /* Some of the index data for empty rev / pack file sections will not be * used during normal operation. Thus, we have strict rules for the * contents of those unused fields. */ if (entry.type == SVN_FS_FS__ITEM_TYPE_UNUSED) if ( entry.item.number != SVN_FS_FS__ITEM_INDEX_UNUSED || entry.fnv1_checksum != 0) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("Empty regions must have item number 0 and checksum 0")); /* Corrupted SIZE values might cause arithmetic overflow. * The same can happen if you copy a repository from a system with 63 bit * file lengths to one with 31 bit file lengths. */ if ((apr_uint64_t)entry.offset + (apr_uint64_t)entry.size > off_t_max) return svn_error_create(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("P2L index entry size overflow.")); APR_ARRAY_PUSH(result, svn_fs_fs__p2l_entry_t) = entry; *item_offset += entry.size; return SVN_NO_ERROR; } /* Read the phys-to-log mappings for the cluster beginning at rev file * offset PAGE_START from the index for START_REVISION in FS. The data * can be found in the index page beginning at START_OFFSET with the next * page beginning at NEXT_OFFSET. PAGE_SIZE is the L2P index page size. * Return the relevant index entries in *ENTRIES. Use REV_FILE to access * on-disk data. Allocate *ENTRIES in RESULT_POOL. */ static svn_error_t * get_p2l_page(apr_array_header_t **entries, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t start_revision, apr_off_t start_offset, apr_off_t next_offset, apr_off_t page_start, apr_uint64_t page_size, apr_pool_t *result_pool) { apr_uint64_t value; apr_array_header_t *result = apr_array_make(result_pool, 16, sizeof(svn_fs_fs__p2l_entry_t)); apr_off_t item_offset; apr_off_t offset; svn_revnum_t last_revision; apr_uint64_t last_compound; /* open index and navigate to page start */ SVN_ERR(auto_open_p2l_index(rev_file, fs, start_revision)); packed_stream_seek(rev_file->p2l_stream, start_offset); /* read rev file offset of the first page entry (all page entries will * only store their sizes). */ SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); item_offset = (apr_off_t)value; /* read all entries of this page */ last_revision = start_revision; last_compound = 0; /* Special case: empty pages. */ if (start_offset == next_offset) { /* Empty page. This only happens if the first entry of the next page * also covers this page (and possibly more) completely. */ SVN_ERR(read_entry(rev_file->p2l_stream, &item_offset, &last_revision, &last_compound, result)); } else { /* Read non-empty page. */ do { SVN_ERR(read_entry(rev_file->p2l_stream, &item_offset, &last_revision, &last_compound, result)); offset = packed_stream_offset(rev_file->p2l_stream); } while (offset < next_offset); /* We should now be exactly at the next offset, i.e. the numbers in * the stream cannot overlap into the next page description. */ if (offset != next_offset) return svn_error_create(SVN_ERR_FS_INDEX_CORRUPTION, NULL, _("P2L page description overlaps with next page description")); /* if we haven't covered the cluster end yet, we must read the first * entry of the next page */ if (item_offset < page_start + page_size) { SVN_ERR(packed_stream_get(&value, rev_file->p2l_stream)); item_offset = (apr_off_t)value; last_revision = start_revision; last_compound = 0; SVN_ERR(read_entry(rev_file->p2l_stream, &item_offset, &last_revision, &last_compound, result)); } } *entries = result; return SVN_NO_ERROR; } /* If it cannot be found in FS's caches, read the p2l index page selected * by BATON->OFFSET from REV_FILE. Don't read the page if it precedes * MIN_OFFSET. Set *END to TRUE if the caller should stop refeching. * * *BATON will be updated with the selected page's info and SCRATCH_POOL * will be used for temporary allocations. If the data is alread in the * cache, descrease *LEAKING_BUCKET and increase it otherwise. With that * pattern we will still read all pages from the block even if some of * them survived in the cached. */ static svn_error_t * prefetch_p2l_page(svn_boolean_t *end, int *leaking_bucket, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, p2l_page_info_baton_t *baton, apr_off_t min_offset, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; svn_boolean_t already_cached; apr_array_header_t *page; svn_fs_fs__page_cache_key_t key = { 0 }; /* fetch the page info */ *end = FALSE; baton->revision = baton->first_revision; SVN_ERR(get_p2l_page_info(baton, rev_file, fs, scratch_pool)); if (baton->start_offset < min_offset || !rev_file->p2l_stream) { /* page outside limits -> stop prefetching */ *end = TRUE; return SVN_NO_ERROR; } /* do we have that page in our caches already? */ assert(baton->first_revision <= APR_UINT32_MAX); key.revision = (apr_uint32_t)baton->first_revision; key.is_packed = svn_fs_fs__is_packed_rev(fs, baton->first_revision); key.page = baton->page_no; SVN_ERR(svn_cache__has_key(&already_cached, ffd->p2l_page_cache, &key, scratch_pool)); /* yes, already cached */ if (already_cached) { /* stop prefetching if most pages are already cached. */ if (!--*leaking_bucket) *end = TRUE; return SVN_NO_ERROR; } ++*leaking_bucket; /* read from disk */ SVN_ERR(get_p2l_page(&page, rev_file, fs, baton->first_revision, baton->start_offset, baton->next_offset, baton->page_start, baton->page_size, scratch_pool)); /* and put it into our cache */ SVN_ERR(svn_cache__set(ffd->p2l_page_cache, &key, page, scratch_pool)); return SVN_NO_ERROR; } /* Lookup & construct the baton and key information that we will need for * a P2L page cache lookup. We want the page covering OFFSET in the rev / * pack file containing REVSION in FS. Return the results in *PAGE_INFO_P * and *KEY_P. Read data through REV_FILE. Use SCRATCH_POOL for temporary * allocations. */ static svn_error_t * get_p2l_keys(p2l_page_info_baton_t *page_info_p, svn_fs_fs__page_cache_key_t *key_p, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision, apr_off_t offset, apr_pool_t *scratch_pool) { p2l_page_info_baton_t page_info; /* request info for the index pages that describes the pack / rev file * contents at pack / rev file position OFFSET. */ page_info.offset = offset; page_info.revision = revision; SVN_ERR(get_p2l_page_info(&page_info, rev_file, fs, scratch_pool)); /* if the offset refers to a non-existent page, bail out */ if (page_info.page_count <= page_info.page_no) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("Offset %s too large in revision %ld"), apr_off_t_toa(scratch_pool, offset), revision); /* return results */ if (page_info_p) *page_info_p = page_info; /* construct cache key */ if (key_p) { svn_fs_fs__page_cache_key_t key = { 0 }; assert(page_info.first_revision <= APR_UINT32_MAX); key.revision = (apr_uint32_t)page_info.first_revision; key.is_packed = rev_file->is_packed; key.page = page_info.page_no; *key_p = key; } return SVN_NO_ERROR; } /* qsort-compatible compare function that compares the OFFSET of the * svn_fs_fs__p2l_entry_t in *LHS with the apr_off_t in *RHS. */ static int compare_start_p2l_entry(const void *lhs, const void *rhs) { const svn_fs_fs__p2l_entry_t *entry = lhs; apr_off_t start = *(const apr_off_t*)rhs; apr_off_t diff = entry->offset - start; /* restrict result to int */ return diff < 0 ? -1 : (diff == 0 ? 0 : 1); } /* From the PAGE_ENTRIES array of svn_fs_fs__p2l_entry_t, ordered * by their OFFSET member, copy all elements overlapping the range * [BLOCK_START, BLOCK_END) to ENTRIES. */ static void append_p2l_entries(apr_array_header_t *entries, apr_array_header_t *page_entries, apr_off_t block_start, apr_off_t block_end) { const svn_fs_fs__p2l_entry_t *entry; int idx = svn_sort__bsearch_lower_bound(page_entries, &block_start, compare_start_p2l_entry); /* start at the first entry that overlaps with BLOCK_START */ if (idx > 0) { entry = &APR_ARRAY_IDX(page_entries, idx - 1, svn_fs_fs__p2l_entry_t); if (entry->offset + entry->size > block_start) --idx; } /* copy all entries covering the requested range */ for ( ; idx < page_entries->nelts; ++idx) { entry = &APR_ARRAY_IDX(page_entries, idx, svn_fs_fs__p2l_entry_t); if (entry->offset >= block_end) break; APR_ARRAY_PUSH(entries, svn_fs_fs__p2l_entry_t) = *entry; } } /* Auxilliary struct passed to p2l_entries_func selecting the relevant * data range. */ typedef struct p2l_entries_baton_t { apr_off_t start; apr_off_t end; } p2l_entries_baton_t; /* Implement svn_cache__partial_getter_func_t: extract p2l entries from * the page in DATA which overlap the p2l_entries_baton_t in BATON. * The target array is already provided in *OUT. */ static svn_error_t * p2l_entries_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { apr_array_header_t *entries = *(apr_array_header_t **)out; const apr_array_header_t *raw_page = data; p2l_entries_baton_t *block = baton; /* Make PAGE a readable APR array. */ apr_array_header_t page = *raw_page; page.elts = (void *)svn_temp_deserializer__ptr(raw_page, (const void * const *)&raw_page->elts); /* append relevant information to result */ append_p2l_entries(entries, &page, block->start, block->end); return SVN_NO_ERROR; } /* Body of svn_fs_fs__p2l_index_lookup. However, do a single index page * lookup and append the result to the ENTRIES array provided by the caller. * Use successive calls to cover larger ranges. */ static svn_error_t * p2l_index_lookup(apr_array_header_t *entries, svn_fs_fs__revision_file_t *rev_file, svn_fs_t *fs, svn_revnum_t revision, apr_off_t block_start, apr_off_t block_end, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; svn_fs_fs__page_cache_key_t key; svn_boolean_t is_cached = FALSE; p2l_page_info_baton_t page_info; apr_array_header_t *local_result = entries; /* baton selecting the relevant entries from the one page we access */ p2l_entries_baton_t block; block.start = block_start; block.end = block_end; /* if we requested an empty range, the result would be empty */ SVN_ERR_ASSERT(block_start < block_end); /* look for the fist page of the range in our cache */ SVN_ERR(get_p2l_keys(&page_info, &key, rev_file, fs, revision, block_start, scratch_pool)); SVN_ERR(svn_cache__get_partial((void**)&local_result, &is_cached, ffd->p2l_page_cache, &key, p2l_entries_func, &block, scratch_pool)); if (!is_cached) { svn_boolean_t end; apr_pool_t *iterpool = svn_pool_create(scratch_pool); apr_off_t original_page_start = page_info.page_start; int leaking_bucket = 4; p2l_page_info_baton_t prefetch_info = page_info; apr_array_header_t *page_entries; apr_off_t max_offset = APR_ALIGN(page_info.next_offset, ffd->block_size); apr_off_t min_offset = APR_ALIGN(page_info.start_offset, ffd->block_size) - ffd->block_size; /* Since we read index data in larger chunks, we probably got more * page data than we requested. Parse & cache that until either we * encounter pages already cached or reach the end of the buffer. */ /* pre-fetch preceding pages */ if (ffd->use_block_read) { end = FALSE; prefetch_info.offset = original_page_start; while (prefetch_info.offset >= prefetch_info.page_size && !end) { svn_pool_clear(iterpool); prefetch_info.offset -= prefetch_info.page_size; SVN_ERR(prefetch_p2l_page(&end, &leaking_bucket, fs, rev_file, &prefetch_info, min_offset, iterpool)); } } /* fetch page from disk and put it into the cache */ SVN_ERR(get_p2l_page(&page_entries, rev_file, fs, page_info.first_revision, page_info.start_offset, page_info.next_offset, page_info.page_start, page_info.page_size, iterpool)); /* The last cache entry must not end beyond the range covered by * this index. The same applies for any subset of entries. */ if (page_entries->nelts) { const svn_fs_fs__p2l_entry_t *entry = &APR_ARRAY_IDX(page_entries, page_entries->nelts - 1, svn_fs_fs__p2l_entry_t); if ( entry->offset + entry->size > page_info.page_size * page_info.page_count) return svn_error_createf(SVN_ERR_FS_INDEX_OVERFLOW , NULL, _("Last P2L index entry extends beyond " "the last page in revision %ld."), revision); } SVN_ERR(svn_cache__set(ffd->p2l_page_cache, &key, page_entries, iterpool)); /* append relevant information to result */ append_p2l_entries(entries, page_entries, block_start, block_end); /* pre-fetch following pages */ if (ffd->use_block_read) { end = FALSE; leaking_bucket = 4; prefetch_info = page_info; prefetch_info.offset = original_page_start; while ( prefetch_info.next_offset < max_offset && prefetch_info.page_no + 1 < prefetch_info.page_count && !end) { svn_pool_clear(iterpool); prefetch_info.offset += prefetch_info.page_size; SVN_ERR(prefetch_p2l_page(&end, &leaking_bucket, fs, rev_file, &prefetch_info, min_offset, iterpool)); } } svn_pool_destroy(iterpool); } /* We access a valid page (otherwise, we had seen an error in the * get_p2l_keys request). Hence, at least one entry must be found. */ SVN_ERR_ASSERT(entries->nelts > 0); /* Add an "unused" entry if it extends beyond the end of the data file. * Since the index page size might be smaller than the current data * read block size, the trailing "unused" entry in this index may not * fully cover the end of the last block. */ if (page_info.page_no + 1 >= page_info.page_count) { svn_fs_fs__p2l_entry_t *entry = &APR_ARRAY_IDX(entries, entries->nelts-1, svn_fs_fs__p2l_entry_t); apr_off_t entry_end = entry->offset + entry->size; if (entry_end < block_end) { if (entry->type == SVN_FS_FS__ITEM_TYPE_UNUSED) { /* extend the terminal filler */ entry->size = block_end - entry->offset; } else { /* No terminal filler. Add one. */ entry = apr_array_push(entries); entry->offset = entry_end; entry->size = block_end - entry_end; entry->type = SVN_FS_FS__ITEM_TYPE_UNUSED; entry->fnv1_checksum = 0; entry->item.revision = SVN_INVALID_REVNUM; entry->item.number = SVN_FS_FS__ITEM_INDEX_UNUSED; } } } return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__p2l_index_lookup(apr_array_header_t **entries, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, apr_off_t block_start, apr_off_t block_size, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_off_t block_end = block_start + block_size; /* the receiving container */ int last_count = 0; apr_array_header_t *result = apr_array_make(result_pool, 16, sizeof(svn_fs_fs__p2l_entry_t)); /* Fetch entries page-by-page. Since the p2l index is supposed to cover * every single byte in the rev / pack file - even unused sections - * every iteration must result in some progress. */ while (block_start < block_end) { svn_fs_fs__p2l_entry_t *entry; SVN_ERR(p2l_index_lookup(result, rev_file, fs, revision, block_start, block_end, scratch_pool)); SVN_ERR_ASSERT(result->nelts > 0); /* continue directly behind last item */ entry = &APR_ARRAY_IDX(result, result->nelts-1, svn_fs_fs__p2l_entry_t); block_start = entry->offset + entry->size; /* Some paranoia check. Successive iterations should never return * duplicates but if it did, we might get into trouble later on. */ if (last_count > 0 && last_count < result->nelts) { entry = &APR_ARRAY_IDX(result, last_count - 1, svn_fs_fs__p2l_entry_t); SVN_ERR_ASSERT(APR_ARRAY_IDX(result, last_count, svn_fs_fs__p2l_entry_t).offset >= entry->offset + entry->size); } last_count = result->nelts; } *entries = result; return SVN_NO_ERROR; } /* compare_fn_t comparing a svn_fs_fs__p2l_entry_t at LHS with an offset * RHS. */ static int compare_p2l_entry_offsets(const void *lhs, const void *rhs) { const svn_fs_fs__p2l_entry_t *entry = (const svn_fs_fs__p2l_entry_t *)lhs; apr_off_t offset = *(const apr_off_t *)rhs; return entry->offset < offset ? -1 : (entry->offset == offset ? 0 : 1); } /* Cached data extraction utility. DATA is a P2L index page, e.g. an APR * array of svn_fs_fs__p2l_entry_t elements. Return the entry for the item, * allocated in RESULT_POOL, starting at OFFSET or NULL if that's not an * the start offset of any item. Use SCRATCH_POOL for temporary allocations. */ static svn_fs_fs__p2l_entry_t * get_p2l_entry_from_cached_page(const void *data, apr_uint64_t offset, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { /* resolve all pointer values of in-cache data */ const apr_array_header_t *page = data; apr_array_header_t *entries = apr_pmemdup(scratch_pool, page, sizeof(*page)); svn_fs_fs__p2l_entry_t *entry; entries->elts = (char *)svn_temp_deserializer__ptr(page, (const void *const *)&page->elts); /* search of the offset we want */ entry = svn_sort__array_lookup(entries, &offset, NULL, (int (*)(const void *, const void *))compare_p2l_entry_offsets); /* return it, if it is a perfect match */ return entry ? apr_pmemdup(result_pool, entry, sizeof(*entry)) : NULL; } /* Implements svn_cache__partial_getter_func_t for P2L index pages, copying * the entry for the apr_off_t at BATON into *OUT. *OUT will be NULL if * there is no matching entry in the index page at DATA. */ static svn_error_t * p2l_entry_lookup_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { svn_fs_fs__p2l_entry_t *entry = get_p2l_entry_from_cached_page(data, *(apr_off_t *)baton, result_pool, result_pool); *out = entry && entry->offset == *(apr_off_t *)baton ? apr_pmemdup(result_pool, entry, sizeof(*entry)) : NULL; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__p2l_entry_lookup(svn_fs_fs__p2l_entry_t **entry_p, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, apr_off_t offset, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; svn_fs_fs__page_cache_key_t key = { 0 }; svn_boolean_t is_cached = FALSE; p2l_page_info_baton_t page_info; *entry_p = NULL; /* look for this info in our cache */ SVN_ERR(get_p2l_keys(&page_info, &key, rev_file, fs, revision, offset, scratch_pool)); SVN_ERR(svn_cache__get_partial((void**)entry_p, &is_cached, ffd->p2l_page_cache, &key, p2l_entry_lookup_func, &offset, result_pool)); if (!is_cached) { /* do a standard index lookup. This is will automatically prefetch * data to speed up future lookups. */ apr_array_header_t *entries = apr_array_make(result_pool, 1, sizeof(**entry_p)); SVN_ERR(p2l_index_lookup(entries, rev_file, fs, revision, offset, offset + 1, scratch_pool)); /* Find the entry that we want. */ *entry_p = svn_sort__array_lookup(entries, &offset, NULL, (int (*)(const void *, const void *))compare_p2l_entry_offsets); } return SVN_NO_ERROR; } /* Implements svn_cache__partial_getter_func_t for P2L headers, setting *OUT * to the largest the first offset not covered by this P2L index. */ static svn_error_t * p2l_get_max_offset_func(void **out, const void *data, apr_size_t data_len, void *baton, apr_pool_t *result_pool) { const p2l_header_t *header = data; apr_off_t max_offset = header->file_size; *out = apr_pmemdup(result_pool, &max_offset, sizeof(max_offset)); return SVN_NO_ERROR; } /* Core functionality of to svn_fs_fs__p2l_get_max_offset with identical * signature. */ static svn_error_t * p2l_get_max_offset(apr_off_t *offset, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, apr_pool_t *scratch_pool) { fs_fs_data_t *ffd = fs->fsap_data; p2l_header_t *header; svn_boolean_t is_cached = FALSE; apr_off_t *offset_p; /* look for the header data in our cache */ pair_cache_key_t key; key.revision = rev_file->start_revision; key.second = rev_file->is_packed; SVN_ERR(svn_cache__get_partial((void **)&offset_p, &is_cached, ffd->p2l_header_cache, &key, p2l_get_max_offset_func, NULL, scratch_pool)); if (is_cached) { *offset = *offset_p; return SVN_NO_ERROR; } SVN_ERR(get_p2l_header(&header, rev_file, fs, revision, scratch_pool, scratch_pool)); *offset = header->file_size; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__p2l_get_max_offset(apr_off_t *offset, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, svn_revnum_t revision, apr_pool_t *scratch_pool) { return svn_error_trace(p2l_get_max_offset(offset, fs, rev_file, revision, scratch_pool)); } /* Calculate the FNV1 checksum over the offset range in REV_FILE, covered by * ENTRY. Store the result in ENTRY->FNV1_CHECKSUM. Use SCRATCH_POOL for * temporary allocations. */ static svn_error_t * calc_fnv1(svn_fs_fs__p2l_entry_t *entry, svn_fs_fs__revision_file_t *rev_file, apr_pool_t *scratch_pool) { unsigned char buffer[4096]; svn_checksum_t *checksum; svn_checksum_ctx_t *context = svn_checksum_ctx_create(svn_checksum_fnv1a_32x4, scratch_pool); apr_off_t size = entry->size; /* Special rules apply to unused sections / items. The data must be a * sequence of NUL bytes (not checked here) and the checksum is fixed to 0. */ if (entry->type == SVN_FS_FS__ITEM_TYPE_UNUSED) { entry->fnv1_checksum = 0; return SVN_NO_ERROR; } /* Read the block and feed it to the checksum calculator. */ SVN_ERR(svn_io_file_seek(rev_file->file, APR_SET, &entry->offset, scratch_pool)); while (size > 0) { apr_size_t to_read = size > sizeof(buffer) ? sizeof(buffer) : (apr_size_t)size; SVN_ERR(svn_io_file_read_full2(rev_file->file, buffer, to_read, NULL, NULL, scratch_pool)); SVN_ERR(svn_checksum_update(context, buffer, to_read)); size -= to_read; } /* Store final checksum in ENTRY. */ SVN_ERR(svn_checksum_final(&checksum, context, scratch_pool)); entry->fnv1_checksum = ntohl(*(const apr_uint32_t *)checksum->digest); return SVN_NO_ERROR; } /* * Index (re-)creation utilities. */ svn_error_t * svn_fs_fs__p2l_index_from_p2l_entries(const char **protoname, svn_fs_t *fs, svn_fs_fs__revision_file_t *rev_file, apr_array_header_t *entries, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_file_t *proto_index; /* Use a subpool for immediate temp file cleanup at the end of this * function. */ apr_pool_t *iterpool = svn_pool_create(scratch_pool); int i; /* Create a proto-index file. */ SVN_ERR(svn_io_open_unique_file3(NULL, protoname, NULL, svn_io_file_del_on_pool_cleanup, result_pool, scratch_pool)); SVN_ERR(svn_fs_fs__p2l_proto_index_open(&proto_index, *protoname, scratch_pool)); /* Write ENTRIES to proto-index file and calculate checksums as we go. */ for (i = 0; i < entries->nelts; ++i) { svn_fs_fs__p2l_entry_t *entry = APR_ARRAY_IDX(entries, i, svn_fs_fs__p2l_entry_t *); svn_pool_clear(iterpool); SVN_ERR(calc_fnv1(entry, rev_file, iterpool)); SVN_ERR(svn_fs_fs__p2l_proto_index_add_entry(proto_index, entry, iterpool)); } /* Convert proto-index into final index and move it into position. * Note that REV_FILE contains the start revision of the shard file if it * has been packed while REVISION may be somewhere in the middle. For * non-packed shards, they will have identical values. */ SVN_ERR(svn_io_file_close(proto_index, iterpool)); /* Temp file cleanup. */ svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* A svn_sort__array compatible comparator function, sorting the * svn_fs_fs__p2l_entry_t** given in LHS, RHS by revision. */ static int compare_p2l_entry_revision(const void *lhs, const void *rhs) { const svn_fs_fs__p2l_entry_t *lhs_entry =*(const svn_fs_fs__p2l_entry_t *const *)lhs; const svn_fs_fs__p2l_entry_t *rhs_entry =*(const svn_fs_fs__p2l_entry_t *const *)rhs; if (lhs_entry->item.revision < rhs_entry->item.revision) return -1; return lhs_entry->item.revision == rhs_entry->item.revision ? 0 : 1; } svn_error_t * svn_fs_fs__l2p_index_from_p2l_entries(const char **protoname, svn_fs_t *fs, apr_array_header_t *entries, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_file_t *proto_index; /* Use a subpool for immediate temp file cleanup at the end of this * function. */ apr_pool_t *iterpool = svn_pool_create(scratch_pool); int i; svn_revnum_t last_revision = SVN_INVALID_REVNUM; /* L2P index must be written in revision order. * Sort ENTRIES accordingly. */ svn_sort__array(entries, compare_p2l_entry_revision); /* Create the temporary proto-rev file. */ SVN_ERR(svn_io_open_unique_file3(NULL, protoname, NULL, svn_io_file_del_on_pool_cleanup, result_pool, scratch_pool)); SVN_ERR(svn_fs_fs__l2p_proto_index_open(&proto_index, *protoname, scratch_pool)); /* Write all entries. */ for (i = 0; i < entries->nelts; ++i) { const svn_fs_fs__p2l_entry_t *entry = APR_ARRAY_IDX(entries, i, const svn_fs_fs__p2l_entry_t *); svn_pool_clear(iterpool); if (entry->type == SVN_FS_FS__ITEM_TYPE_UNUSED) continue; if (last_revision != entry->item.revision) { SVN_ERR(svn_fs_fs__l2p_proto_index_add_revision(proto_index, scratch_pool)); last_revision = entry->item.revision; } SVN_ERR(svn_fs_fs__l2p_proto_index_add_entry(proto_index, entry->offset, entry->item.number, iterpool)); } /* Convert proto-index into final index and move it into position. */ SVN_ERR(svn_io_file_close(proto_index, iterpool)); /* Temp file cleanup. */ svn_pool_destroy(iterpool); return SVN_NO_ERROR; } /* * Standard (de-)serialization functions */ svn_error_t * svn_fs_fs__serialize_l2p_header(void **data, apr_size_t *data_len, void *in, apr_pool_t *pool) { l2p_header_t *header = in; svn_temp_serializer__context_t *context; svn_stringbuf_t *serialized; apr_size_t page_count = header->page_table_index[header->revision_count]; apr_size_t page_table_size = page_count * sizeof(*header->page_table); apr_size_t index_size = (header->revision_count + 1) * sizeof(*header->page_table_index); apr_size_t data_size = sizeof(*header) + index_size + page_table_size; /* serialize header and all its elements */ context = svn_temp_serializer__init(header, sizeof(*header), data_size + 32, pool); /* page table index array */ svn_temp_serializer__add_leaf(context, (const void * const *)&header->page_table_index, index_size); /* page table array */ svn_temp_serializer__add_leaf(context, (const void * const *)&header->page_table, page_table_size); /* return the serialized result */ serialized = svn_temp_serializer__get(context); *data = serialized->data; *data_len = serialized->len; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__deserialize_l2p_header(void **out, void *data, apr_size_t data_len, apr_pool_t *pool) { l2p_header_t *header = (l2p_header_t *)data; /* resolve the pointers in the struct */ svn_temp_deserializer__resolve(header, (void**)&header->page_table_index); svn_temp_deserializer__resolve(header, (void**)&header->page_table); /* done */ *out = header; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__serialize_l2p_page(void **data, apr_size_t *data_len, void *in, apr_pool_t *pool) { l2p_page_t *page = in; svn_temp_serializer__context_t *context; svn_stringbuf_t *serialized; apr_size_t of_table_size = page->entry_count * sizeof(*page->offsets); /* serialize struct and all its elements */ context = svn_temp_serializer__init(page, sizeof(*page), of_table_size + sizeof(*page) + 32, pool); /* offsets and sub_items arrays */ svn_temp_serializer__add_leaf(context, (const void * const *)&page->offsets, of_table_size); /* return the serialized result */ serialized = svn_temp_serializer__get(context); *data = serialized->data; *data_len = serialized->len; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__deserialize_l2p_page(void **out, void *data, apr_size_t data_len, apr_pool_t *pool) { l2p_page_t *page = data; /* resolve the pointers in the struct */ svn_temp_deserializer__resolve(page, (void**)&page->offsets); /* done */ *out = page; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__serialize_p2l_header(void **data, apr_size_t *data_len, void *in, apr_pool_t *pool) { p2l_header_t *header = in; svn_temp_serializer__context_t *context; svn_stringbuf_t *serialized; apr_size_t table_size = (header->page_count + 1) * sizeof(*header->offsets); /* serialize header and all its elements */ context = svn_temp_serializer__init(header, sizeof(*header), table_size + sizeof(*header) + 32, pool); /* offsets array */ svn_temp_serializer__add_leaf(context, (const void * const *)&header->offsets, table_size); /* return the serialized result */ serialized = svn_temp_serializer__get(context); *data = serialized->data; *data_len = serialized->len; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__deserialize_p2l_header(void **out, void *data, apr_size_t data_len, apr_pool_t *pool) { p2l_header_t *header = data; /* resolve the only pointer in the struct */ svn_temp_deserializer__resolve(header, (void**)&header->offsets); /* done */ *out = header; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__serialize_p2l_page(void **data, apr_size_t *data_len, void *in, apr_pool_t *pool) { apr_array_header_t *page = in; svn_temp_serializer__context_t *context; svn_stringbuf_t *serialized; apr_size_t table_size = page->elt_size * page->nelts; /* serialize array header and all its elements */ context = svn_temp_serializer__init(page, sizeof(*page), table_size + sizeof(*page) + 32, pool); /* items in the array */ svn_temp_serializer__add_leaf(context, (const void * const *)&page->elts, table_size); /* return the serialized result */ serialized = svn_temp_serializer__get(context); *data = serialized->data; *data_len = serialized->len; return SVN_NO_ERROR; } svn_error_t * svn_fs_fs__deserialize_p2l_page(void **out, void *data, apr_size_t data_len, apr_pool_t *pool) { apr_array_header_t *page = (apr_array_header_t *)data; /* resolve the only pointer in the struct */ svn_temp_deserializer__resolve(page, (void**)&page->elts); /* patch up members */ page->pool = pool; page->nalloc = page->nelts; /* done */ *out = page; return SVN_NO_ERROR; } diff --git a/contrib/subversion/subversion/libsvn_repos/authz.c b/contrib/subversion/subversion/libsvn_repos/authz.c index 9f8dbc5a08f7..0a47a0928638 100644 --- a/contrib/subversion/subversion/libsvn_repos/authz.c +++ b/contrib/subversion/subversion/libsvn_repos/authz.c @@ -1,1738 +1,1757 @@ /* authz.c : path-based access control * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ /*** Includes. ***/ #include #include #include #include "svn_hash.h" #include "svn_pools.h" #include "svn_error.h" #include "svn_dirent_uri.h" #include "svn_path.h" #include "svn_repos.h" #include "svn_config.h" #include "svn_ctype.h" #include "private/svn_atomic.h" #include "private/svn_fspath.h" #include "private/svn_repos_private.h" #include "private/svn_sorts_private.h" #include "private/svn_subr_private.h" #include "repos.h" #include "authz.h" #include "config_file.h" /*** Access rights. ***/ /* This structure describes the access rights given to a specific user by * a path rule (actually the rule set specified for a path). I.e. there is * one instance of this per path rule. */ typedef struct path_access_t { /* Sequence number of the path rule that this struct was derived from. * If multiple rules apply to the same path (only possible with wildcard * matching), the one with the highest SEQUENCE_NUMBER wins, i.e. the latest * one defined in the authz file. * * A value of 0 denotes the default rule at the repository root denying * access to everybody. User-defined path rules start with ID 1. */ int sequence_number; /* Access rights of the respective user as defined by the rule set. */ authz_access_t rights; } path_access_t; /* Use this to indicate that no sequence ID has been assigned. * It will automatically be inferior to (less than) any other sequence ID. */ #define NO_SEQUENCE_NUMBER (-1) /* Convenience structure combining the node-local access rights with the * min and max rights granted within the sub-tree. */ typedef struct limited_rights_t { /* Access granted to the current user. If the SEQUENCE_NUMBER member is * NO_SEQUENCE_NUMBER, there has been no specific path rule for this PATH * but only for some sub-path(s). There is always a rule at the root node. */ path_access_t access; /* Minimal access rights that the user has on this or any other node in * the sub-tree. This does not take inherited rights into account. */ authz_access_t min_rights; /* Maximal access rights that the user has on this or any other node in * the sub-tree. This does not take inherited rights into account. */ authz_access_t max_rights; } limited_rights_t; /* Return TRUE, if RIGHTS has local rights defined in the ACCESS member. */ static svn_boolean_t has_local_rule(const limited_rights_t *rights) { return rights->access.sequence_number != NO_SEQUENCE_NUMBER; } /* Aggregate the ACCESS spec of TARGET and RIGHTS into TARGET. I.e. if both * are specified, pick one in accordance to the precedence rules. */ static void combine_access(limited_rights_t *target, const limited_rights_t *rights) { /* This implies the check for NO_SEQUENCE_NUMBER, i.e no rights being * specified. */ if (target->access.sequence_number < rights->access.sequence_number) target->access = rights->access; } /* Aggregate the min / max access rights of TARGET and RIGHTS into TARGET. */ static void combine_right_limits(limited_rights_t *target, const limited_rights_t *rights) { target->max_rights |= rights->max_rights; target->min_rights &= rights->min_rights; } /*** Authz cache access. ***/ /* All authz instances currently in use as well as all filtered authz * instances in use will be cached here. * Both caches will be instantiated at most once. */ static svn_object_pool__t *authz_pool = NULL; static svn_object_pool__t *filtered_pool = NULL; static svn_atomic_t authz_pool_initialized = FALSE; /* Implements svn_atomic__err_init_func_t. */ static svn_error_t * synchronized_authz_initialize(void *baton, apr_pool_t *pool) { #if APR_HAS_THREADS svn_boolean_t multi_threaded = TRUE; #else svn_boolean_t multi_threaded = FALSE; #endif SVN_ERR(svn_object_pool__create(&authz_pool, multi_threaded, pool)); SVN_ERR(svn_object_pool__create(&filtered_pool, multi_threaded, pool)); return SVN_NO_ERROR; } svn_error_t * svn_repos_authz_initialize(apr_pool_t *pool) { /* Protect against multiple calls. */ return svn_error_trace(svn_atomic__init_once(&authz_pool_initialized, synchronized_authz_initialize, NULL, pool)); } /* Return a combination of AUTHZ_KEY and GROUPS_KEY, allocated in RESULT_POOL. * GROUPS_KEY may be NULL. This is the key for the AUTHZ_POOL. */ static svn_membuf_t * construct_authz_key(const svn_checksum_t *authz_key, const svn_checksum_t *groups_key, apr_pool_t *result_pool) { svn_membuf_t *result = apr_pcalloc(result_pool, sizeof(*result)); if (groups_key) { apr_size_t authz_size = svn_checksum_size(authz_key); apr_size_t groups_size = svn_checksum_size(groups_key); svn_membuf__create(result, authz_size + groups_size, result_pool); result->size = authz_size + groups_size; /* exact length is required! */ memcpy(result->data, authz_key->digest, authz_size); memcpy((char *)result->data + authz_size, groups_key->digest, groups_size); } else { apr_size_t size = svn_checksum_size(authz_key); svn_membuf__create(result, size, result_pool); result->size = size; /* exact length is required! */ memcpy(result->data, authz_key->digest, size); } return result; } /* Return a combination of REPOS_NAME, USER and AUTHZ_ID, allocated in * RESULT_POOL. USER may be NULL. This is the key for the FILTERED_POOL. */ static svn_membuf_t * construct_filtered_key(const char *repos_name, const char *user, const svn_membuf_t *authz_id, apr_pool_t *result_pool) { svn_membuf_t *result = apr_pcalloc(result_pool, sizeof(*result)); size_t repos_len = strlen(repos_name); size_t user_len = user ? strlen(user) : 1; const char *nullable_user = user ? user : "\0"; size_t size = authz_id->size + repos_len + 1 + user_len + 1; svn_membuf__create(result, size, result_pool); result->size = size; memcpy(result->data, repos_name, repos_len + 1); size = repos_len + 1; memcpy((char *)result->data + size, nullable_user, user_len + 1); size += user_len + 1; memcpy((char *)result->data + size, authz_id->data, authz_id->size); return result; } /*** Constructing the prefix tree. ***/ /* Since prefix arrays may have more than one hit, we need to link them * for fast lookup. */ typedef struct sorted_pattern_t { /* The filtered tree node carrying the prefix. */ struct node_t *node; /* Entry that is a prefix to this one or NULL. */ struct sorted_pattern_t *next; } sorted_pattern_t; /* Substructure of node_t. It contains all sub-node that use patterns * in the next segment level. We keep it separate to save a bit of memory * and to be able to check for pattern presence in a single operation. */ typedef struct node_pattern_t { /* If not NULL, this represents the "*" follow-segment. */ struct node_t *any; /* If not NULL, this represents the "**" follow-segment. */ struct node_t *any_var; /* If not NULL, the segments of all sorted_pattern_t in this array are the * prefix part of "prefix*" patterns. Sorted by segment prefix. */ apr_array_header_t *prefixes; /* If not NULL, the segments of all sorted_pattern_t in this array are the * reversed suffix part of "*suffix" patterns. Sorted by reversed * segment suffix. */ apr_array_header_t *suffixes; /* If not NULL, the segments of all sorted_pattern_t in this array contain * wildcards and don't fit into any of the above categories. * The NEXT members of the elements will not be used. */ apr_array_header_t *complex; /* This node itself is a "**" segment and must therefore itself be added * to the matching node list for the next level. */ svn_boolean_t repeat; } node_pattern_t; /* The pattern tree. All relevant path rules are being folded into this * prefix tree, with a single, whole segment stored at each node. The whole * tree applies to a single user only. */ typedef struct node_t { /* The segment as specified in the path rule. During the lookup tree walk, * this will compared to the respective segment of the path to check. */ svn_string_t segment; /* Immediate access rights granted by rules on this node and the min / * max rights on any path in this sub-tree. */ limited_rights_t rights; /* Map of sub-segment(const char *) to respective node (node_t) for all * sub-segments that have rules on themselves or their respective subtrees. * NULL, if there are no rules for sub-paths relevant to the user. */ apr_hash_t *sub_nodes; /* If not NULL, this contains the pattern-based segment sub-nodes. */ node_pattern_t *pattern_sub_nodes; } node_t; /* Create a new tree node for SEGMENT. Note: SEGMENT->pattern is always interned and therefore does not have to be copied into the result pool. */ static node_t * create_node(authz_rule_segment_t *segment, apr_pool_t *result_pool) { node_t *result = apr_pcalloc(result_pool, sizeof(*result)); if (segment) result->segment = segment->pattern; else { result->segment.data = ""; result->segment.len = 0; } result->rights.access.sequence_number = NO_SEQUENCE_NUMBER; return result; } /* Auto-create a node in *NODE, make it apply to SEGMENT and return it. */ static node_t * ensure_node(node_t **node, authz_rule_segment_t *segment, apr_pool_t *result_pool) { if (!*node) *node = create_node(segment, result_pool); return *node; } /* compare_func comparing segment names. It takes a sorted_pattern_t* as * VOID_LHS and a const authz_rule_segment_t * as VOID_RHS. */ static int compare_node_rule_segment(const void *void_lhs, const void *void_rhs) { const sorted_pattern_t *element = void_lhs; const authz_rule_segment_t *segment = void_rhs; return strcmp(element->node->segment.data, segment->pattern.data); } /* compare_func comparing segment names. It takes a sorted_pattern_t* as * VOID_LHS and a const char * as VOID_RHS. */ static int compare_node_path_segment(const void *void_lhs, const void *void_rhs) { const sorted_pattern_t *element = void_lhs; const char *segment = void_rhs; return strcmp(element->node->segment.data, segment); } /* Make sure a node_t* for SEGMENT exists in *ARRAY and return it. * Auto-create either if they don't exist. Entries in *ARRAY are * sorted by their segment strings. */ static node_t * ensure_node_in_array(apr_array_header_t **array, authz_rule_segment_t *segment, apr_pool_t *result_pool) { int idx; sorted_pattern_t entry; sorted_pattern_t *entry_ptr; /* Auto-create the array. */ if (!*array) *array = apr_array_make(result_pool, 4, sizeof(sorted_pattern_t)); /* Find the node in ARRAY and the IDX at which it were to be inserted. * Initialize IDX such that we won't attempt a hinted lookup (likely * to fail and therefore pure overhead). */ idx = (*array)->nelts; entry_ptr = svn_sort__array_lookup(*array, segment, &idx, compare_node_rule_segment); if (entry_ptr) return entry_ptr->node; /* There is no such node, yet. * Create one and insert it into the sorted array. */ entry.node = create_node(segment, result_pool); entry.next = NULL; svn_error_clear(svn_sort__array_insert2(*array, &entry, idx)); return entry.node; } /* Auto-create the PATTERN_SUB_NODES sub-structure in *NODE and return it. */ static node_pattern_t * ensure_pattern_sub_nodes(node_t *node, apr_pool_t *result_pool) { if (node->pattern_sub_nodes == NULL) node->pattern_sub_nodes = apr_pcalloc(result_pool, sizeof(*node->pattern_sub_nodes)); return node->pattern_sub_nodes; } /* Combine an ACL rule segment with the corresponding node in our filtered * data model. */ typedef struct node_segment_pair_t { authz_rule_segment_t *segment; node_t *node; } node_segment_pair_t; /* Context object to be used with process_acl. It allows us to re-use * information from previous insertions. */ typedef struct construction_context_t { /* Array of node_segment_pair_t. It contains all segments already * processed of the current insertion together with the respective * nodes in our filtered tree. Before the next lookup, the tree * walk for the common prefix can be skipped. */ apr_array_header_t *path; } construction_context_t; /* Return a new context object allocated in RESULT_POOL. */ static construction_context_t * create_construction_context(apr_pool_t *result_pool) { construction_context_t *result = apr_pcalloc(result_pool, sizeof(*result)); /* Array will be auto-extended but this initial size will make it rarely * ever necessary. */ result->path = apr_array_make(result_pool, 32, sizeof(node_segment_pair_t)); return result; } /* Constructor utility: Below NODE, recursively insert sub-nodes for the * path given as *SEGMENTS of length SEGMENT_COUNT. If matching nodes * already exist, use those instead of creating new ones. Set the leave * node's access rights spec to PATH_ACCESS. Update the context info in CTX. */ static void insert_path(construction_context_t *ctx, node_t *node, path_access_t *path_access, int segment_count, authz_rule_segment_t *segment, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { node_t *sub_node; node_segment_pair_t *node_segment; /* End of path? */ if (segment_count == 0) { /* Set access rights. Note that there might be multiple rules for * the same path due to non-repo-specific rules vs. repo-specific * ones. Whichever gets defined last wins. */ limited_rights_t rights; rights.access = *path_access; rights.max_rights = path_access->rights; rights.min_rights = path_access->rights; combine_access(&node->rights, &rights); return; } /* Any wildcards? They will go into a separate sub-structure. */ if (segment->kind != authz_rule_literal) ensure_pattern_sub_nodes(node, result_pool); switch (segment->kind) { /* A full wildcard segment? */ case authz_rule_any_segment: sub_node = ensure_node(&node->pattern_sub_nodes->any, segment, result_pool); break; /* One or more full wildcard segments? */ case authz_rule_any_recursive: sub_node = ensure_node(&node->pattern_sub_nodes->any_var, segment, result_pool); ensure_pattern_sub_nodes(sub_node, result_pool)->repeat = TRUE; break; /* A single wildcard at the end of the segment? */ case authz_rule_prefix: sub_node = ensure_node_in_array(&node->pattern_sub_nodes->prefixes, segment, result_pool); break; /* A single wildcard at the start of segments? */ case authz_rule_suffix: sub_node = ensure_node_in_array(&node->pattern_sub_nodes->suffixes, segment, result_pool); break; /* General pattern? */ case authz_rule_fnmatch: sub_node = ensure_node_in_array(&node->pattern_sub_nodes->complex, segment, result_pool); break; /* Then it must be a literal. */ default: SVN_ERR_ASSERT_NO_RETURN(segment->kind == authz_rule_literal); if (!node->sub_nodes) { node->sub_nodes = svn_hash__make(result_pool); sub_node = NULL; } else { sub_node = svn_hash_gets(node->sub_nodes, segment->pattern.data); } /* Auto-insert a sub-node for the current segment. */ if (!sub_node) { sub_node = create_node(segment, result_pool); apr_hash_set(node->sub_nodes, sub_node->segment.data, sub_node->segment.len, sub_node); } } /* Update context. */ node_segment = apr_array_push(ctx->path); node_segment->segment = segment; node_segment->node = sub_node; /* Continue at the sub-node with the next segment. */ insert_path(ctx, sub_node, path_access, segment_count - 1, segment + 1, result_pool, scratch_pool); } /* If the ACL is relevant to the REPOSITORY and user (given as MEMBERSHIPS * plus ANONYMOUS flag), insert the respective nodes into tree starting * at ROOT. Use the context info of the previous call in CTX to eliminate * repeated lookups. Allocate new nodes in RESULT_POOL and use SCRATCH_POOL * for temporary allocations. */ static void process_acl(construction_context_t *ctx, const authz_acl_t *acl, node_t *root, const char *repository, const char *user, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { path_access_t path_access; int i; node_t *node; /* Skip ACLs that don't say anything about the current user and/or repository. */ if (!svn_authz__get_acl_access(&path_access.rights, acl, user, repository)) return; /* Insert the rule into the filtered tree. */ path_access.sequence_number = acl->sequence_number; /* Try to reuse results from previous runs. * Basically, skip the common prefix. */ node = root; for (i = 0; i < ctx->path->nelts; ++i) { const node_segment_pair_t *step = &APR_ARRAY_IDX(ctx->path, i, const node_segment_pair_t); /* Exploit the fact that all strings in the authz model are unique / * internized and can be identified by address alone. */ if ( !step->node || i >= acl->rule.len || step->segment->kind != acl->rule.path[i].kind || step->segment->pattern.data != acl->rule.path[i].pattern.data) { ctx->path->nelts = i; break; } else { node = step->node; } } /* Insert the path rule into the filtered tree. */ insert_path(ctx, node, &path_access, acl->rule.len - i, acl->rule.path + i, result_pool, scratch_pool); } /* Forward declaration ... */ static svn_boolean_t trim_tree(node_t *node, int latest_any_var, apr_pool_t *scratch_pool); /* Call trim_tree() with LATEST_ANY_VAR on all elements in the *HASH of * node_t * and remove empty nodes from. *HASH may be NULL. If all nodes * could be removed, set *HASH to NULL and return TRUE. Allocate temporary * data in SCRATCH_POOL. */ static svn_boolean_t trim_subnode_hash(apr_hash_t **hash, int latest_any_var, apr_pool_t *scratch_pool) { if (*hash) { apr_array_header_t *to_remove = apr_array_make(scratch_pool, 0, sizeof(node_t *)); apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, *hash); hi; hi = apr_hash_next(hi)) { node_t *node = apr_hash_this_val(hi); if (trim_tree(node, latest_any_var, scratch_pool)) APR_ARRAY_PUSH(to_remove, node_t *) = node; } /* Are some nodes left? */ if (to_remove->nelts < apr_hash_count(*hash)) { /* Remove empty nodes (if any). */ int i; for (i = 0; i < to_remove->nelts; ++i) { node_t *node = APR_ARRAY_IDX(to_remove, i, node_t *); apr_hash_set(*hash, node->segment.data, node->segment.len, NULL); } return FALSE; } /* No nodes left. A NULL hash is more efficient than an empty one. */ *hash = NULL; } return TRUE; } /* Call trim_tree() with LATEST_ANY_VAR on all elements in the *ARRAY of * node_t * and remove empty nodes from. *ARRAY may be NULL. If all nodes * could be removed, set *ARRAY to NULL and return TRUE. Allocate * temporary data in SCRATCH_POOL. */ static svn_boolean_t trim_subnode_array(apr_array_header_t **array, int latest_any_var, apr_pool_t *scratch_pool) { if (*array) { int i, dest; for (i = 0, dest = 0; i < (*array)->nelts; ++i) { node_t *node = APR_ARRAY_IDX(*array, i, sorted_pattern_t).node; if (!trim_tree(node, latest_any_var, scratch_pool)) { if (i != dest) APR_ARRAY_IDX(*array, dest, sorted_pattern_t) = APR_ARRAY_IDX(*array, i, sorted_pattern_t); ++dest; } } /* Are some nodes left? */ if (dest) { /* Trim it to the number of valid entries. */ (*array)->nelts = dest; return FALSE; } /* No nodes left. A NULL array is more efficient than an empty one. */ *array = NULL; } return TRUE; } /* Remove all rules and sub-nodes from NODE that are fully eclipsed by the * "any-var" rule with sequence number LATEST_ANY_VAR. Return TRUE, if * there are no rules left in the sub-tree, including NODE. * Allocate temporary data in SCRATCH_POOL. */ static svn_boolean_t trim_tree(node_t *node, int latest_any_var, apr_pool_t *scratch_pool) { svn_boolean_t removed_all = TRUE; /* For convenience, we allow NODE to be NULL: */ if (!node) return TRUE; /* Do we have a later "any_var" rule at this node. */ if ( node->pattern_sub_nodes && node->pattern_sub_nodes->any_var && node->pattern_sub_nodes->any_var->rights.access.sequence_number > latest_any_var) { latest_any_var = node->pattern_sub_nodes->any_var->rights.access.sequence_number; } /* Is there a local rule at this node that is not eclipsed by any_var? */ if (has_local_rule(&node->rights)) { /* Remove the local rule, if it got eclipsed. * Note that for the latest any_var node, the sequence number is equal. */ if (node->rights.access.sequence_number >= latest_any_var) removed_all = FALSE; else node->rights.access.sequence_number = NO_SEQUENCE_NUMBER; } /* Process all sub-nodes. */ removed_all &= trim_subnode_hash(&node->sub_nodes, latest_any_var, scratch_pool); if (node->pattern_sub_nodes) { if (trim_tree(node->pattern_sub_nodes->any, latest_any_var, scratch_pool)) node->pattern_sub_nodes->any = NULL; else removed_all = FALSE; if (trim_tree(node->pattern_sub_nodes->any_var, latest_any_var, scratch_pool)) node->pattern_sub_nodes->any_var = NULL; else removed_all = FALSE; removed_all &= trim_subnode_array(&node->pattern_sub_nodes->prefixes, latest_any_var, scratch_pool); removed_all &= trim_subnode_array(&node->pattern_sub_nodes->suffixes, latest_any_var, scratch_pool); removed_all &= trim_subnode_array(&node->pattern_sub_nodes->complex, latest_any_var, scratch_pool); /* Trim the tree as much as possible to speed up lookup(). */ if (removed_all) node->pattern_sub_nodes = NULL; } return removed_all; } /* Forward declaration ... */ static void finalize_tree(node_t *node, limited_rights_t *sum, apr_pool_t *scratch_pool); /* Call finalize_tree() on all elements in the HASH of node_t *, passing * SUM along. HASH may be NULL. Use SCRATCH_POOL for temporary allocations. */ static void finalize_subnode_hash(apr_hash_t *hash, limited_rights_t *sum, apr_pool_t *scratch_pool) { if (hash) { apr_hash_index_t *hi; for (hi = apr_hash_first(scratch_pool, hash); hi; hi = apr_hash_next(hi)) finalize_tree(apr_hash_this_val(hi), sum, scratch_pool); } } /* Call finalize_up_tree() on all elements in the ARRAY of node_t *, * passing SUM along. ARRAY may be NULL. Use SCRATCH_POOL for temporary * allocations. */ static void finalize_subnode_array(apr_array_header_t *array, limited_rights_t *sum, apr_pool_t *scratch_pool) { if (array) { int i; for (i = 0; i < array->nelts; ++i) finalize_tree(APR_ARRAY_IDX(array, i, sorted_pattern_t).node, sum, scratch_pool); } } /* Link prefixes within the sorted ARRAY. */ static void link_prefix_patterns(apr_array_header_t *array) { int i; if (!array) return; for (i = 1; i < array->nelts; ++i) { sorted_pattern_t *prev = &APR_ARRAY_IDX(array, i - 1, sorted_pattern_t); sorted_pattern_t *pattern = &APR_ARRAY_IDX(array, i, sorted_pattern_t); /* Does PATTERN potentially have a prefix in ARRAY? * If so, at least the first char must match with the predecessor's * because the array is sorted by that string. */ if (prev->node->segment.data[0] != pattern->node->segment.data[0]) continue; /* Only the predecessor or any of its prefixes can be the closest * prefix to PATTERN. */ for ( ; prev; prev = prev->next) if ( prev->node->segment.len < pattern->node->segment.len && !memcmp(prev->node->segment.data, pattern->node->segment.data, prev->node->segment.len)) { pattern->next = prev; break; } } } /* Recursively finalization the tree node properties for NODE. Update SUM * (of NODE's parent) by combining it with the recursive access rights info * on NODE. Use SCRATCH_POOL for temporary allocations. */ static void finalize_tree(node_t *node, limited_rights_t *sum, apr_pool_t *scratch_pool) { limited_rights_t *local_sum = &node->rights; /* For convenience, we allow NODE to be NULL: */ if (!node) return; /* Sum of rights at NODE - so far. */ if (has_local_rule(local_sum)) { local_sum->max_rights = local_sum->access.rights; local_sum->min_rights = local_sum->access.rights; } else { local_sum->min_rights = authz_access_write; local_sum->max_rights = authz_access_none; } /* Process all sub-nodes. */ finalize_subnode_hash(node->sub_nodes, local_sum, scratch_pool); if (node->pattern_sub_nodes) { finalize_tree(node->pattern_sub_nodes->any, local_sum, scratch_pool); finalize_tree(node->pattern_sub_nodes->any_var, local_sum, scratch_pool); finalize_subnode_array(node->pattern_sub_nodes->prefixes, local_sum, scratch_pool); finalize_subnode_array(node->pattern_sub_nodes->suffixes, local_sum, scratch_pool); finalize_subnode_array(node->pattern_sub_nodes->complex, local_sum, scratch_pool); /* Link up the prefixes / suffixes. */ link_prefix_patterns(node->pattern_sub_nodes->prefixes); link_prefix_patterns(node->pattern_sub_nodes->suffixes); } /* Add our min / max info to the parent's info. * Idempotent for parent == node (happens at root). */ combine_right_limits(sum, local_sum); } /* From the authz CONFIG, extract the parts relevant to USER and REPOSITORY. * Return the filtered rule tree. */ static node_t * create_user_authz(authz_full_t *authz, const char *repository, const char *user, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { int i; node_t *root = create_node(NULL, result_pool); construction_context_t *ctx = create_construction_context(scratch_pool); /* Use a separate sub-pool to keep memory usage tight. */ apr_pool_t *subpool = svn_pool_create(scratch_pool); - /* Find all ACLs for REPOSITORY. - * Note that repo-specific rules replace global rules, - * even if they don't apply to the current user. */ + /* Find all ACLs for REPOSITORY. */ apr_array_header_t *acls = apr_array_make(subpool, authz->acls->nelts, sizeof(authz_acl_t *)); for (i = 0; i < authz->acls->nelts; ++i) { const authz_acl_t *acl = &APR_ARRAY_IDX(authz->acls, i, authz_acl_t); if (svn_authz__acl_applies_to_repo(acl, repository)) { /* ACLs in the AUTHZ are sorted by path and repository. * So, if there is a rule for the repo and a global rule for the * same path, we will detect them here. */ if (acls->nelts) { const authz_acl_t *prev_acl = APR_ARRAY_IDX(acls, acls->nelts - 1, const authz_acl_t *); if (svn_authz__compare_paths(&prev_acl->rule, &acl->rule) == 0) { + svn_boolean_t global_acl_applies; + svn_boolean_t repos_acl_applies; + + /* Previous ACL is a global rule. */ SVN_ERR_ASSERT_NO_RETURN(!strcmp(prev_acl->rule.repos, AUTHZ_ANY_REPOSITORY)); + /* Current ACL is a per-repository rule. */ SVN_ERR_ASSERT_NO_RETURN(strcmp(acl->rule.repos, AUTHZ_ANY_REPOSITORY)); - apr_array_pop(acls); + + global_acl_applies = + svn_authz__get_acl_access(NULL, prev_acl, user, repository); + repos_acl_applies = + svn_authz__get_acl_access(NULL, acl, user, repository); + + /* Prefer rules which apply to both this user and this path + * over rules which apply only to the path. In cases where + * both rules apply to user and path, always prefer the + * repository-specific rule. */ + if (!global_acl_applies || repos_acl_applies) + { + apr_array_pop(acls); + APR_ARRAY_PUSH(acls, const authz_acl_t *) = acl; + } } + else + APR_ARRAY_PUSH(acls, const authz_acl_t *) = acl; } - - APR_ARRAY_PUSH(acls, const authz_acl_t *) = acl; + else + APR_ARRAY_PUSH(acls, const authz_acl_t *) = acl; } } /* Filtering and tree construction. */ for (i = 0; i < acls->nelts; ++i) process_acl(ctx, APR_ARRAY_IDX(acls, i, const authz_acl_t *), root, repository, user, result_pool, subpool); /* If there is no relevant rule at the root node, the "no access" default * applies. Give it a SEQUENCE_NUMBER that will never overrule others. */ if (!has_local_rule(&root->rights)) { root->rights.access.sequence_number = 0; root->rights.access.rights = authz_access_none; } /* Trim the tree. * * We can't do pattern comparison, so for most pattern rules we cannot * say that a set of rules "eclipses" / overrides a given other set of * rules for all possible paths. That limits the accuracy of our check * for recursive access in similar ways than for non-pattern rules. * * However, the user expects a rule ending with "**" to eclipse any older * rule in that sub-tree recursively. So, this trim function removes * eclipsed nodes from the tree. */ svn_pool_clear(subpool); trim_tree(root, NO_SEQUENCE_NUMBER, subpool); /* Calculate recursive rights. * * This is a bottom-up calculation of the range of access rights * specified anywhere in the respective sub-tree, including the base * node itself. * * To prevent additional finalization passes, we piggy-back the addition * of the ordering links of the prefix and suffix sub-node rules. */ svn_pool_clear(subpool); finalize_tree(root, &root->rights, subpool); /* Done. */ svn_pool_destroy(subpool); return root; } /*** Lookup. ***/ /* Reusable lookup state object. It is easy to pass to functions and * recycling it between lookups saves significant setup costs. */ typedef struct lookup_state_t { /* Rights immediately applying to this node and limits to the rights to * any sub-path. */ limited_rights_t rights; /* Nodes applying to the path followed so far. */ apr_array_header_t *current; /* Temporary array containing the nodes applying to the next path * segment (used to build up the next contents of CURRENT). */ apr_array_header_t *next; /* Scratch pad for path operations. */ svn_stringbuf_t *scratch_pad; /* After each lookup iteration, CURRENT and PARENT_RIGHTS will * apply to this path. */ svn_stringbuf_t *parent_path; /* Rights that apply at PARENT_PATH, if PARENT_PATH is not empty. */ limited_rights_t parent_rights; } lookup_state_t; /* Constructor for lookup_state_t. */ static lookup_state_t * create_lookup_state(apr_pool_t *result_pool) { lookup_state_t *state = apr_pcalloc(result_pool, sizeof(*state)); state->next = apr_array_make(result_pool, 4, sizeof(node_t *)); state->current = apr_array_make(result_pool, 4, sizeof(node_t *)); /* Virtually all path segments should fit into this buffer. If they * don't, the buffer gets automatically reallocated. * * Using a smaller initial size would be fine as well but does not * buy us much for the increased risk of being expanded anyway - at * some extra cost. */ state->scratch_pad = svn_stringbuf_create_ensure(200, result_pool); /* Most paths should fit into this buffer. The same rationale as * above applies. */ state->parent_path = svn_stringbuf_create_ensure(200, result_pool); return state; } /* Clear the current contents of STATE and re-initialize it for ROOT. * Check whether we can reuse a previous parent path lookup to shorten * the current PATH walk. Return the full or remaining portion of * PATH, respectively. PATH must not be NULL. */ static const char * init_lockup_state(lookup_state_t *state, node_t *root, const char *path) { apr_size_t len = strlen(path); if ( (len > state->parent_path->len) && state->parent_path->len && (path[state->parent_path->len] == '/') && !memcmp(path, state->parent_path->data, state->parent_path->len)) { /* The PARENT_PATH of the previous lookup is actually a parent path * of PATH. The CURRENT node list already matches the parent path * and we only have to set the correct rights info. */ state->rights = state->parent_rights; /* Tell the caller where to proceed. */ return path + state->parent_path->len; } /* Start lookup at ROOT for the full PATH. */ state->rights = root->rights; state->parent_rights = root->rights; apr_array_clear(state->next); apr_array_clear(state->current); APR_ARRAY_PUSH(state->current, node_t *) = root; /* Var-segment rules match empty segments as well */ if (root->pattern_sub_nodes && root->pattern_sub_nodes->any_var) { node_t *node = root->pattern_sub_nodes->any_var; /* This is non-recursive due to ACL normalization. */ combine_access(&state->rights, &node->rights); combine_right_limits(&state->rights, &node->rights); APR_ARRAY_PUSH(state->current, node_t *) = node; } svn_stringbuf_setempty(state->parent_path); svn_stringbuf_setempty(state->scratch_pad); return path; } /* Add NODE to the list of NEXT nodes in STATE. NODE may be NULL in which * case this is a no-op. Also update and aggregate the access rights data * for the next path segment. */ static void add_next_node(lookup_state_t *state, node_t *node) { /* Allowing NULL nodes simplifies the caller. */ if (node) { /* The rule with the highest sequence number is the one that applies. * Not all nodes that we are following have rules that apply directly * to this path but are mere intermediates that may only have some * matching deep sub-node. */ combine_access(&state->rights, &node->rights); /* The rule tree node can be seen as an overlay of all the nodes that * we are following. Any of them _may_ match eventually, so the min/ * max possible access rights are a combination of all these sub-trees. */ combine_right_limits(&state->rights, &node->rights); /* NODE is now enlisted as a (potential) match for the next segment. */ APR_ARRAY_PUSH(state->next, node_t *) = node; /* Variable length sub-segment sequences apply to the same node as * they match empty sequences as well. */ if (node->pattern_sub_nodes && node->pattern_sub_nodes->any_var) { node = node->pattern_sub_nodes->any_var; /* This is non-recursive due to ACL normalization. */ combine_access(&state->rights, &node->rights); combine_right_limits(&state->rights, &node->rights); APR_ARRAY_PUSH(state->next, node_t *) = node; } } } /* If PREFIX is indeed a prefix (or exact match) or SEGMENT, add the * node in PREFIX to STATE. */ static void add_if_prefix_matches(lookup_state_t *state, const sorted_pattern_t *prefix, const svn_stringbuf_t *segment) { node_t *node = prefix->node; if ( node->segment.len <= segment->len && !memcmp(node->segment.data, segment->data, node->segment.len)) add_next_node(state, node); } /* Scan the PREFIXES array of node_t* for all entries whose SEGMENT members * are prefixes of SEGMENT. Add these to STATE for the next tree level. */ static void add_prefix_matches(lookup_state_t *state, const svn_stringbuf_t *segment, apr_array_header_t *prefixes) { /* Index of the first node that might be a match. All matches will * be at this and the immediately following indexes. */ int i = svn_sort__bsearch_lower_bound(prefixes, segment->data, compare_node_path_segment); /* The entry we found may be an exact match (but not a true prefix). * The prefix matching test will still work. */ if (i < prefixes->nelts) add_if_prefix_matches(state, &APR_ARRAY_IDX(prefixes, i, sorted_pattern_t), segment); /* The immediate predecessor may be a true prefix and all potential * prefixes can be found following the NEXT links between the array * indexes. */ if (i > 0) { sorted_pattern_t *pattern; for (pattern = &APR_ARRAY_IDX(prefixes, i - 1, sorted_pattern_t); pattern; pattern = pattern->next) { add_if_prefix_matches(state, pattern, segment); } } } /* Scan the PATTERNS array of node_t* for all entries whose SEGMENT members * (usually containing wildcards) match SEGMENT. Add these to STATE for the * next tree level. */ static void add_complex_matches(lookup_state_t *state, const svn_stringbuf_t *segment, apr_array_header_t *patterns) { int i; for (i = 0; i < patterns->nelts; ++i) { node_t *node = APR_ARRAY_IDX(patterns, i, sorted_pattern_t).node; if (0 == apr_fnmatch(node->segment.data, segment->data, 0)) add_next_node(state, node); } } /* Extract the next segment from PATH and copy it into SEGMENT, whose current * contents get overwritten. Empty paths ("") are supported and leading '/' * segment separators will be interpreted as an empty segment (""). Non- * normalizes parts, i.e. sequences of '/', will be treated as a single '/'. * * Return the start of the next segment within PATH, skipping the '/' * separator(s). Return NULL, if there are no further segments. * * The caller (only called by lookup(), ATM) must ensure that SEGMENT has * enough room to store all of PATH. */ static const char * next_segment(svn_stringbuf_t *segment, const char *path) { apr_size_t len; char c; /* Read and scan PATH for NUL and '/' -- whichever comes first. */ for (len = 0, c = *path; c; c = path[++len]) if (c == '/') { /* End of segment. */ segment->data[len] = 0; segment->len = len; /* If PATH is not normalized, this is where we skip whole sequences * of separators. */ while (path[++len] == '/') ; /* Continue behind the last separator in the sequence. We will * treat trailing '/' as indicating an empty trailing segment. * Therefore, we never have to return NULL here. */ return path + len; } else { /* Copy segment contents directly into the result buffer. * On many architectures, this is almost or entirely for free. */ segment->data[len] = c; } /* No separator found, so all of PATH has been the last segment. */ segment->data[len] = 0; segment->len = len; /* Tell the caller that this has been the last segment. */ return NULL; } /* Starting at the respective user's authz root node provided with STATE, * follow PATH and return TRUE, iff the REQUIRED access has been granted to * that user for this PATH. REQUIRED must not contain svn_authz_recursive. * If RECURSIVE is set, all paths in the sub-tree at and below PATH must * have REQUIRED access. PATH does not need to be normalized, may be empty * but must not be NULL. */ static svn_boolean_t lookup(lookup_state_t *state, const char *path, authz_access_t required, svn_boolean_t recursive, apr_pool_t *scratch_pool) { /* Create a scratch pad large enough to hold any of PATH's segments. */ apr_size_t path_len = strlen(path); svn_stringbuf_ensure(state->scratch_pad, path_len); /* Normalize start and end of PATH. Most paths will be fully normalized, * so keep the overhead as low as possible. */ if (path_len && path[path_len-1] == '/') { do { --path_len; } while (path_len && path[path_len-1] == '/'); path = apr_pstrmemdup(scratch_pool, path, path_len); } while (path[0] == '/') ++path; /* Don't update PATH_LEN as we won't need it anymore. */ /* Actually walk the path rule tree following PATH until we run out of * either tree or PATH. */ while (state->current->nelts && path) { apr_array_header_t *temp; int i; svn_stringbuf_t *segment = state->scratch_pad; /* Shortcut 1: We could nowhere find enough rights in this sub-tree. */ if ((state->rights.max_rights & required) != required) return FALSE; /* Shortcut 2: We will find enough rights everywhere in this sub-tree. */ if ((state->rights.min_rights & required) == required) return TRUE; /* Extract the next segment. */ path = next_segment(segment, path); /* Initial state for this segment. */ apr_array_clear(state->next); state->rights.access.sequence_number = NO_SEQUENCE_NUMBER; state->rights.access.rights = authz_access_none; /* These init values ensure that the first node's value will be used * when combined with them. If there is no first node, * state->access.sequence_number remains unchanged and we will use * the parent's (i.e. inherited) access rights. */ state->rights.min_rights = authz_access_write; state->rights.max_rights = authz_access_none; /* Update the PARENT_PATH member in STATE to match the nodes in * CURRENT at the end of this iteration, i.e. if and when NEXT * has become CURRENT. */ if (path) { svn_stringbuf_appendbyte(state->parent_path, '/'); svn_stringbuf_appendbytes(state->parent_path, segment->data, segment->len); } /* Scan follow all alternative routes to the next level. */ for (i = 0; i < state->current->nelts; ++i) { node_t *node = APR_ARRAY_IDX(state->current, i, node_t *); if (node->sub_nodes) add_next_node(state, apr_hash_get(node->sub_nodes, segment->data, segment->len)); /* Process alternative, wildcard-based sub-nodes. */ if (node->pattern_sub_nodes) { add_next_node(state, node->pattern_sub_nodes->any); /* If the current node represents a "**" pattern, it matches * to all levels. So, add it to the list for the NEXT level. */ if (node->pattern_sub_nodes->repeat) add_next_node(state, node); /* Find all prefix pattern matches. */ if (node->pattern_sub_nodes->prefixes) add_prefix_matches(state, segment, node->pattern_sub_nodes->prefixes); if (node->pattern_sub_nodes->complex) add_complex_matches(state, segment, node->pattern_sub_nodes->complex); /* Find all suffux pattern matches. * This must be the last check as it destroys SEGMENT. */ if (node->pattern_sub_nodes->suffixes) { /* Suffixes behave like reversed prefixes. */ svn_authz__reverse_string(segment->data, segment->len); add_prefix_matches(state, segment, node->pattern_sub_nodes->suffixes); } } } /* If no rule applied to this SEGMENT directly, the parent rights * will apply to at least the SEGMENT node itself and possibly * other parts deeper in it's subtree. */ if (!has_local_rule(&state->rights)) { state->rights.access = state->parent_rights.access; state->rights.min_rights &= state->parent_rights.access.rights; state->rights.max_rights |= state->parent_rights.access.rights; } /* The list of nodes for SEGMENT is now complete. If we need to * continue, make it the current and put the old one into the recycler. * * If this is the end of the path, keep the parent path and rights in * STATE as are such that sibling lookups will benefit from it. */ if (path) { temp = state->current; state->current = state->next; state->next = temp; /* In STATE, PARENT_PATH, PARENT_RIGHTS and CURRENT are now in sync. */ state->parent_rights = state->rights; } } /* If we check recursively, none of the (potential) sub-paths must have * less than the REQUIRED access rights. "Potential" because we don't * verify that the respective paths actually exist in the repository. */ if (recursive) return (state->rights.min_rights & required) == required; /* Return whether the access rights on PATH fully include REQUIRED. */ return (state->rights.access.rights & required) == required; } /*** The authz data structure. ***/ /* An entry in svn_authz_t's USER_RULES cache. All members must be * allocated in the POOL and the latter has to be cleared / destroyed * before overwriting the entries' contents. */ struct authz_user_rules_t { /* User name for which we filtered the rules. * User NULL for the anonymous user. */ const char *user; /* Repository name for which we filtered the rules. * May be empty but never NULL for used entries. */ const char *repository; /* The combined min/max rights USER has on REPOSITORY. */ authz_rights_t global_rights; /* Root of the filtered path rule tree. * Will remain NULL until the first usage. */ node_t *root; /* Reusable lookup state instance. */ lookup_state_t *lookup_state; /* Pool from which all data within this struct got allocated. * Can be destroyed or cleaned up with no further side-effects. */ apr_pool_t *pool; }; /* Return TRUE, iff AUTHZ matches the pair of REPOS_NAME and USER. * Note that USER may be NULL. */ static svn_boolean_t matches_filtered_tree(const authz_user_rules_t *authz, const char *repos_name, const char *user) { /* Does the user match? */ if (user) { if (authz->user == NULL || strcmp(user, authz->user)) return FALSE; } else if (authz->user != NULL) return FALSE; /* Does the repository match as well? */ return strcmp(repos_name, authz->repository) == 0; } /* Check if AUTHZ's already contains a path rule tree filtered for this * USER, REPOS_NAME combination. If that does not exist, yet, create one * but don't construct the actual filtered tree, yet. */ static authz_user_rules_t * get_user_rules(svn_authz_t *authz, const char *repos_name, const char *user) { apr_pool_t *pool; /* Search our cache for a suitable previously filtered tree. */ if (authz->filtered) { /* Is this a suitable filtered tree? */ if (matches_filtered_tree(authz->filtered, repos_name, user)) return authz->filtered; /* Drop the old filtered tree before creating a new one. */ svn_pool_destroy(authz->filtered->pool); authz->filtered = NULL; } /* Global cache lookup. Filter the full model only if necessary. */ pool = svn_pool_create(authz->pool); /* Write a new entry. */ authz->filtered = apr_palloc(pool, sizeof(*authz->filtered)); authz->filtered->pool = pool; authz->filtered->repository = apr_pstrdup(pool, repos_name); authz->filtered->user = user ? apr_pstrdup(pool, user) : NULL; authz->filtered->lookup_state = create_lookup_state(pool); authz->filtered->root = NULL; svn_authz__get_global_rights(&authz->filtered->global_rights, authz->full, user, repos_name); return authz->filtered; } /* In AUTHZ's user rules, construct the actual filtered tree. * Use SCRATCH_POOL for temporary allocations. */ static svn_error_t * filter_tree(svn_authz_t *authz, apr_pool_t *scratch_pool) { apr_pool_t *pool = authz->filtered->pool; const char *repos_name = authz->filtered->repository; const char *user = authz->filtered->user; node_t *root; if (filtered_pool) { svn_membuf_t *key = construct_filtered_key(repos_name, user, authz->authz_id, scratch_pool); /* Cache lookup. */ SVN_ERR(svn_object_pool__lookup((void **)&root, filtered_pool, key, pool)); if (!root) { apr_pool_t *item_pool = svn_object_pool__new_item_pool(authz_pool); authz_full_t *add_ref = NULL; /* Make sure the underlying full authz object lives as long as the * filtered one that we are about to create. We do this by adding * a reference to it in ITEM_POOL (which may live longer than AUTHZ). * * Note that we already have a reference to that full authz in * AUTHZ->FULL. Assert that we actually don't created multiple * instances of the same full model. */ svn_error_clear(svn_object_pool__lookup((void **)&add_ref, authz_pool, authz->authz_id, item_pool)); SVN_ERR_ASSERT(add_ref == authz->full); /* Now construct the new filtered tree and cache it. */ root = create_user_authz(authz->full, repos_name, user, item_pool, scratch_pool); svn_error_clear(svn_object_pool__insert((void **)&root, filtered_pool, key, root, item_pool, pool)); } } else { root = create_user_authz(authz->full, repos_name, user, pool, scratch_pool); } /* Write a new entry. */ authz->filtered->root = root; return SVN_NO_ERROR; } /* Read authz configuration data from PATH into *AUTHZ_P, allocated in RESULT_POOL. Return the cache key in *AUTHZ_ID. If GROUPS_PATH is set, use the global groups parsed from it. Use SCRATCH_POOL for temporary allocations. PATH and GROUPS_PATH may be a dirent or an absolute file url. REPOS_HINT may be specified to speed up access to in-repo authz files. If PATH or GROUPS_PATH is not a valid authz rule file, then return SVN_AUTHZ_INVALID_CONFIG. The contents of *AUTHZ_P is then undefined. If MUST_EXIST is TRUE, a missing authz or global groups file is also an error. */ static svn_error_t * authz_read(authz_full_t **authz_p, svn_membuf_t **authz_id, const char *path, const char *groups_path, svn_boolean_t must_exist, svn_repos_t *repos_hint, svn_repos_authz_warning_func_t warning_func, void *warning_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_error_t* err = NULL; svn_stream_t *rules_stream = NULL; svn_stream_t *groups_stream = NULL; svn_checksum_t *rules_checksum = NULL; svn_checksum_t *groups_checksum = NULL; config_access_t *config_access = svn_repos__create_config_access(repos_hint, scratch_pool); /* Open the main authz file */ SVN_ERR(svn_repos__get_config(&rules_stream, &rules_checksum, config_access, path, must_exist, scratch_pool)); /* Open the optional groups file */ if (groups_path) SVN_ERR(svn_repos__get_config(&groups_stream, &groups_checksum, config_access, groups_path, must_exist, scratch_pool)); /* The authz cache is optional. */ *authz_id = construct_authz_key(rules_checksum, groups_checksum, result_pool); if (authz_pool) { /* Cache lookup. */ SVN_ERR(svn_object_pool__lookup((void **)authz_p, authz_pool, *authz_id, result_pool)); /* If not found, parse and add to cache. */ if (!*authz_p) { apr_pool_t *item_pool = svn_object_pool__new_item_pool(authz_pool); /* Parse the configuration(s) and construct the full authz model * from it. */ err = svn_authz__parse(authz_p, rules_stream, groups_stream, warning_func, warning_baton, item_pool, scratch_pool); if (err != SVN_NO_ERROR) { /* That pool would otherwise never get destroyed. */ svn_pool_destroy(item_pool); /* Add the URL / file name to the error stack since the parser * doesn't have it. */ err = svn_error_quick_wrapf(err, "Error while parsing config file: '%s':", path); } else { SVN_ERR(svn_object_pool__insert((void **)authz_p, authz_pool, *authz_id, *authz_p, item_pool, result_pool)); } } } else { /* Parse the configuration(s) and construct the full authz model from * it. */ err = svn_error_quick_wrapf( svn_authz__parse(authz_p, rules_stream, groups_stream, warning_func, warning_baton, result_pool, scratch_pool), "Error while parsing authz file: '%s':", path); } svn_repos__destroy_config_access(config_access); return err; } /*** Public functions. ***/ svn_error_t * svn_repos_authz_read4(svn_authz_t **authz_p, const char *path, const char *groups_path, svn_boolean_t must_exist, svn_repos_t *repos_hint, svn_repos_authz_warning_func_t warning_func, void *warning_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_authz_t *authz = apr_pcalloc(result_pool, sizeof(*authz)); authz->pool = result_pool; SVN_ERR(authz_read(&authz->full, &authz->authz_id, path, groups_path, must_exist, repos_hint, warning_func, warning_baton, result_pool, scratch_pool)); *authz_p = authz; return SVN_NO_ERROR; } svn_error_t * svn_repos_authz_parse2(svn_authz_t **authz_p, svn_stream_t *stream, svn_stream_t *groups_stream, svn_repos_authz_warning_func_t warning_func, void *warning_baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_authz_t *authz = apr_pcalloc(result_pool, sizeof(*authz)); authz->pool = result_pool; /* Parse the configuration and construct the full authz model from it. */ SVN_ERR(svn_authz__parse(&authz->full, stream, groups_stream, warning_func, warning_baton, result_pool, scratch_pool)); *authz_p = authz; return SVN_NO_ERROR; } svn_error_t * svn_repos_authz_check_access(svn_authz_t *authz, const char *repos_name, const char *path, const char *user, svn_repos_authz_access_t required_access, svn_boolean_t *access_granted, apr_pool_t *pool) { const authz_access_t required = ((required_access & svn_authz_read ? authz_access_read_flag : 0) | (required_access & svn_authz_write ? authz_access_write_flag : 0)); /* Pick or create the suitable pre-filtered path rule tree. */ authz_user_rules_t *rules = get_user_rules( authz, (repos_name ? repos_name : AUTHZ_ANY_REPOSITORY), user); /* In many scenarios, users have uniform access to a repository * (blanket access or no access at all). * * In these cases, don't bother creating or consulting the filtered tree. */ if ((rules->global_rights.min_access & required) == required) { *access_granted = TRUE; return SVN_NO_ERROR; } if ((rules->global_rights.max_access & required) != required) { *access_granted = FALSE; return SVN_NO_ERROR; } /* No specific path given, i.e. looking for anywhere in the tree? */ if (!path) { *access_granted = ((rules->global_rights.max_access & required) == required); return SVN_NO_ERROR; } /* Rules tree lookup */ /* Did we already filter the data model? */ if (!rules->root) SVN_ERR(filter_tree(authz, pool)); /* Re-use previous lookup results, if possible. */ path = init_lockup_state(authz->filtered->lookup_state, authz->filtered->root, path); /* Sanity check. */ SVN_ERR_ASSERT(path[0] == '/'); /* Determine the granted access for the requested path. * PATH does not need to be normalized for lockup(). */ *access_granted = lookup(rules->lookup_state, path, required, !!(required_access & svn_authz_recursive), pool); return SVN_NO_ERROR; } diff --git a/contrib/subversion/subversion/libsvn_repos/config_file.c b/contrib/subversion/subversion/libsvn_repos/config_file.c index 4bec766e3dd5..31b9441ca0da 100644 --- a/contrib/subversion/subversion/libsvn_repos/config_file.c +++ b/contrib/subversion/subversion/libsvn_repos/config_file.c @@ -1,386 +1,390 @@ /* * config_file.c : efficiently read config files from disk or repo * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include "svn_checksum.h" #include "svn_path.h" #include "svn_pools.h" #include "private/svn_subr_private.h" #include "private/svn_repos_private.h" #include "private/svn_config_private.h" #include "config_file.h" #include "svn_private_config.h" struct config_access_t { /* The last repository that we found the requested URL in. May be NULL. */ svn_repos_t *repos; /* Owning pool of this structure and is private to this structure. * All objects with the lifetime of this access object will be allocated * from this pool. */ apr_pool_t *pool; }; /* A stream object that gives access to a representation's content but * delays accessing the repository data until the stream is first used. * IOW, the stream object is cheap as long as it is not accessed. */ typedef struct presentation_stream_baton_t { svn_fs_root_t *root; const char *fs_path; apr_pool_t *pool; svn_stream_t *inner; } presentation_stream_baton_t; static svn_error_t * auto_open_inner_stream(presentation_stream_baton_t *b) { if (!b->inner) { svn_filesize_t length; svn_stream_t *stream; svn_stringbuf_t *contents; SVN_ERR(svn_fs_file_length(&length, b->root, b->fs_path, b->pool)); SVN_ERR(svn_fs_file_contents(&stream, b->root, b->fs_path, b->pool)); SVN_ERR(svn_stringbuf_from_stream(&contents, stream, (apr_size_t)length, b->pool)); b->inner = svn_stream_from_stringbuf(contents, b->pool); } return SVN_NO_ERROR; } static svn_error_t * read_handler_rep(void *baton, char *buffer, apr_size_t *len) { presentation_stream_baton_t *b = baton; SVN_ERR(auto_open_inner_stream(b)); return svn_error_trace(svn_stream_read2(b->inner, buffer, len)); } static svn_error_t * mark_handler_rep(void *baton, svn_stream_mark_t **mark, apr_pool_t *pool) { presentation_stream_baton_t *b = baton; SVN_ERR(auto_open_inner_stream(b)); return svn_error_trace(svn_stream_mark(b->inner, mark, pool)); } static svn_error_t * seek_handler_rep(void *baton, const svn_stream_mark_t *mark) { presentation_stream_baton_t *b = baton; SVN_ERR(auto_open_inner_stream(b)); return svn_error_trace(svn_stream_seek(b->inner, mark)); } static svn_error_t * skip_handler_rep(void *baton, apr_size_t len) { presentation_stream_baton_t *b = baton; SVN_ERR(auto_open_inner_stream(b)); return svn_error_trace(svn_stream_skip(b->inner, len)); } static svn_error_t * data_available_handler_rep(void *baton, svn_boolean_t *data_available) { presentation_stream_baton_t *b = baton; SVN_ERR(auto_open_inner_stream(b)); return svn_error_trace(svn_stream_data_available(b->inner, data_available)); } static svn_error_t * readline_handler_rep(void *baton, svn_stringbuf_t **stringbuf, const char *eol, svn_boolean_t *eof, apr_pool_t *pool) { presentation_stream_baton_t *b = baton; SVN_ERR(auto_open_inner_stream(b)); return svn_error_trace(svn_stream_readline(b->inner, stringbuf, eol, eof, pool)); } /* Return a lazy access stream for FS_PATH under ROOT, allocated in POOL. */ static svn_stream_t * representation_stream(svn_fs_root_t *root, const char *fs_path, apr_pool_t *pool) { svn_stream_t *stream; presentation_stream_baton_t *baton; baton = apr_pcalloc(pool, sizeof(*baton)); baton->root = root; baton->fs_path = fs_path; baton->pool = pool; stream = svn_stream_create(baton, pool); svn_stream_set_read2(stream, read_handler_rep, read_handler_rep); svn_stream_set_mark(stream, mark_handler_rep); svn_stream_set_seek(stream, seek_handler_rep); svn_stream_set_skip(stream, skip_handler_rep); svn_stream_set_data_available(stream, data_available_handler_rep); svn_stream_set_readline(stream, readline_handler_rep); return stream; } /* Handle the case of a file PATH / url pointing to anything that is either * not a file or does not exist at all. The case is given by NODE_KIND. * * If MUST_EXIST is not set and the file does not exist at all, return a * default *STREAM and *CHECKSUM allocated in the context of ACCESS, or an * error otherwise. */ static svn_error_t * handle_missing_file(svn_stream_t **stream, svn_checksum_t **checksum, config_access_t *access, const char *path, svn_boolean_t must_exist, svn_node_kind_t node_kind) { if (node_kind == svn_node_none && !must_exist) { *stream = svn_stream_empty(access->pool); SVN_ERR(svn_checksum(checksum, svn_checksum_md5, "", 0, access->pool)); } else if (node_kind != svn_node_file) { return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL, "'%s' is not a file", path); } return SVN_NO_ERROR; } /* Open the in-repository file at URL, return its content checksum in * *CHECKSUM and the content itself through *STREAM. Allocate those with * the lifetime of ACCESS and use SCRATCH_POOL for temporaries. * * Error out when the file does not exist but MUST_EXIST is set. */ static svn_error_t * get_repos_config(svn_stream_t **stream, svn_checksum_t **checksum, config_access_t *access, const char *url, svn_boolean_t must_exist, apr_pool_t *scratch_pool) { svn_fs_t *fs; svn_fs_root_t *root; svn_revnum_t youngest_rev; svn_node_kind_t node_kind; const char *dirent; const char *fs_path; const char *repos_root_dirent; SVN_ERR(svn_uri_get_dirent_from_file_url(&dirent, url, access->pool)); /* Maybe we can use the repos hint instance instead of creating a * new one. */ if (access->repos) { repos_root_dirent = svn_repos_path(access->repos, scratch_pool); if (!svn_dirent_is_absolute(repos_root_dirent)) SVN_ERR(svn_dirent_get_absolute(&repos_root_dirent, repos_root_dirent, scratch_pool)); if (!svn_dirent_is_ancestor(repos_root_dirent, dirent)) access->repos = NULL; } /* Open repos if no suitable repos is available. */ if (!access->repos) { /* Search for a repository in the full path. */ repos_root_dirent = svn_repos_find_root_path(dirent, scratch_pool); + if (repos_root_dirent == NULL) + return svn_error_trace(handle_missing_file(stream, checksum, access, + url, must_exist, + svn_node_none)); /* Attempt to open a repository at repos_root_dirent. */ SVN_ERR(svn_repos_open3(&access->repos, repos_root_dirent, NULL, access->pool, scratch_pool)); } fs_path = &dirent[strlen(repos_root_dirent)]; /* Get the filesystem. */ fs = svn_repos_fs(access->repos); /* Find HEAD and the revision root */ SVN_ERR(svn_fs_youngest_rev(&youngest_rev, fs, scratch_pool)); SVN_ERR(svn_fs_revision_root(&root, fs, youngest_rev, access->pool)); /* Special case: non-existent paths may be handled as "empty" contents. */ SVN_ERR(svn_fs_check_path(&node_kind, root, fs_path, scratch_pool)); if (node_kind != svn_node_file) return svn_error_trace(handle_missing_file(stream, checksum, access, url, must_exist, node_kind)); /* Fetch checksum and see whether we already have a matching config */ SVN_ERR(svn_fs_file_checksum(checksum, svn_checksum_md5, root, fs_path, TRUE, access->pool)); *stream = representation_stream(root, fs_path, access->pool); return SVN_NO_ERROR; } /* Open the file at PATH, return its content checksum in CHECKSUM and the * content itself through *STREAM. Allocate those with the lifetime of * ACCESS. */ static svn_error_t * get_file_config(svn_stream_t **stream, svn_checksum_t **checksum, config_access_t *access, const char *path, svn_boolean_t must_exist, apr_pool_t *scratch_pool) { svn_stringbuf_t *contents; svn_node_kind_t node_kind; /* Special case: non-existent paths may be handled as "empty" contents. */ SVN_ERR(svn_io_check_path(path, &node_kind, scratch_pool)); if (node_kind != svn_node_file) return svn_error_trace(handle_missing_file(stream, checksum, access, path, must_exist, node_kind)); /* Now, we should be able to read the file. */ SVN_ERR(svn_stringbuf_from_file2(&contents, path, access->pool)); /* calculate MD5 over the whole file contents */ SVN_ERR(svn_checksum(checksum, svn_checksum_md5, contents->data, contents->len, access->pool)); *stream = svn_stream_from_stringbuf(contents, access->pool); return SVN_NO_ERROR; } /* Read the configuration from path, URL or registry sub-tree PATH, return * its content checksum in CHECKSUM and the content itself through *STREAM. * Allocate those with the lifetime of ACCESS. */ static svn_error_t * get_generic_config(svn_stream_t **stream, svn_checksum_t **checksum, config_access_t *access, const char *path, svn_boolean_t must_exist, apr_pool_t *scratch_pool) { svn_stringbuf_t *contents = svn_stringbuf_create_empty(access->pool); svn_config_t *config; /* Read the configuration and serialize it into CONTENTS. * That copy can then be processed by the authz parser etc. */ SVN_ERR(svn_config_read3(&config, path, must_exist, TRUE, TRUE, scratch_pool)); SVN_ERR(svn_config__write(svn_stream_from_stringbuf(contents, scratch_pool), config, scratch_pool)); /* calculate MD5 over the whole file contents */ SVN_ERR(svn_checksum(checksum, svn_checksum_md5, contents->data, contents->len, access->pool)); *stream = svn_stream_from_stringbuf(contents, access->pool); return SVN_NO_ERROR; } config_access_t * svn_repos__create_config_access(svn_repos_t *repos_hint, apr_pool_t *result_pool) { apr_pool_t *pool = svn_pool_create(result_pool); config_access_t *result = apr_pcalloc(pool, sizeof(*result)); result->repos = repos_hint; result->pool = pool; return result; } void svn_repos__destroy_config_access(config_access_t *access) { svn_pool_destroy(access->pool); } svn_error_t * svn_repos__get_config(svn_stream_t **stream, svn_checksum_t **checksum, config_access_t *access, const char *path, svn_boolean_t must_exist, apr_pool_t *scratch_pool) { svn_error_t *err; /* Directly access the config data. */ if (svn_path_is_url(path)) err = get_repos_config(stream, checksum, access, path, must_exist, scratch_pool); else err = get_file_config(stream, checksum, access, path, must_exist, scratch_pool); /* Fallback to indirect access using the generic config file parser. * This is mainly used for registry support under Win32. */ if (err) { svn_error_t *err2 = get_generic_config(stream, checksum, access, path, must_exist, scratch_pool); if (err2) { svn_error_clear(err2); } else { svn_error_clear(err); err = SVN_NO_ERROR; } } return svn_error_trace(err); } diff --git a/contrib/subversion/subversion/libsvn_subr/apr_escape.c b/contrib/subversion/subversion/libsvn_subr/apr_escape.c new file mode 100644 index 000000000000..caa25d9fc573 --- /dev/null +++ b/contrib/subversion/subversion/libsvn_subr/apr_escape.c @@ -0,0 +1,135 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* The code in this file is copied from APR (initially from APR 1.7.0) + * to provide compatibility for building against APR < 1.5.0. + */ + +#include "private/svn_dep_compat.h" + +#if !APR_VERSION_AT_LEAST(1,5,0) + +#include +#include + +/* from apr_escape_test_char.h */ +#define T_ESCAPE_SHELL_CMD (1) +#define T_ESCAPE_PATH_SEGMENT (2) +#define T_OS_ESCAPE_PATH (4) +#define T_ESCAPE_ECHO (8) +#define T_ESCAPE_URLENCODED (16) +#define T_ESCAPE_XML (32) +#define T_ESCAPE_LDAP_DN (64) +#define T_ESCAPE_LDAP_FILTER (128) + +static const unsigned char test_char_table[256] = { + 224,222,222,222,222,222,222,222,222,222,223,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,6,16,127,22,17,22,49,17, + 145,145,129,80,80,0,0,18,0,0,0,0,0,0,0,0,0,0,16,87, + 119,16,119,23,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,23,223,23,23,0,23,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,23,23,23,17,222,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222 +}; + +/* from apr_encode_private.h */ +#if APR_CHARSET_EBCDIC +#error This Subversion compatibility code for APR<1.5 does not support EBCDIC. +#else /* APR_CHARSET_EBCDIC */ +#define ENCODE_TO_ASCII(ch) (ch) +#define ENCODE_TO_NATIVE(ch) (ch) +#endif /* !APR_CHARSET_EBCDIC */ + +/* we assume the folks using this ensure 0 <= c < 256... which means + * you need a cast to (unsigned char) first, you can't just plug a + * char in here and get it to work, because if char is signed then it + * will first be sign extended. + */ +#define TEST_CHAR(c, f) (test_char_table[(unsigned)(c)] & (f)) + +APR_DECLARE(apr_status_t) apr_escape_shell(char *escaped, const char *str, + apr_ssize_t slen, apr_size_t *len) +{ + unsigned char *d; + const unsigned char *s; + apr_size_t size = 1; + int found = 0; + + d = (unsigned char *) escaped; + s = (const unsigned char *) str; + + if (s) { + if (d) { + for (; *s && slen; ++s, slen--) { +#if defined(OS2) || defined(WIN32) + /* + * Newlines to Win32/OS2 CreateProcess() are ill advised. + * Convert them to spaces since they are effectively white + * space to most applications + */ + if (*s == '\r' || *s == '\n') { + if (d) { + *d++ = ' '; + found = 1; + } + continue; + } +#endif + if (TEST_CHAR(*s, T_ESCAPE_SHELL_CMD)) { + *d++ = '\\'; + size++; + found = 1; + } + *d++ = *s; + size++; + } + *d = '\0'; + } + else { + for (; *s && slen; ++s, slen--) { + if (TEST_CHAR(*s, T_ESCAPE_SHELL_CMD)) { + size++; + found = 1; + } + size++; + } + } + } + + if (len) { + *len = size; + } + if (!found) { + return APR_NOTFOUND; + } + + return APR_SUCCESS; +} + +#else /* APR_VERSION_AT_LEAST(1,5,0) */ + +/* Silence OSX ranlib warnings about object files with no symbols. */ +#include +extern const apr_uint32_t svn__fake__apr_escape; +const apr_uint32_t svn__fake__apr_escape = 0xdeadbeef; + +#endif /* !APR_VERSION_AT_LEAST(1,5,0) */ diff --git a/contrib/subversion/subversion/libsvn_subr/cmdline.c b/contrib/subversion/subversion/libsvn_subr/cmdline.c index d1aad71b234a..bc27788ec03a 100644 --- a/contrib/subversion/subversion/libsvn_subr/cmdline.c +++ b/contrib/subversion/subversion/libsvn_subr/cmdline.c @@ -1,1813 +1,1890 @@ /* * cmdline.c : Helpers for command-line programs. * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include /* for atexit() */ #include /* for setvbuf() */ #include /* for setlocale() */ #ifndef WIN32 #include #include #include #include #else #include #include #include #endif #include /* for STDIN_FILENO */ #include /* for apr_strerror */ +#include +#if APR_VERSION_AT_LEAST(1,5,0) #include +#else +#include "private/svn_dep_compat.h" +#endif #include /* for apr_initialize/apr_terminate */ #include /* for apr_snprintf */ +#include /* for apr_env_get */ #include #include #include "svn_cmdline.h" #include "svn_ctype.h" #include "svn_dso.h" #include "svn_dirent_uri.h" #include "svn_hash.h" #include "svn_path.h" #include "svn_pools.h" #include "svn_error.h" #include "svn_nls.h" #include "svn_utf.h" #include "svn_auth.h" #include "svn_xml.h" #include "svn_base64.h" #include "svn_config.h" #include "svn_sorts.h" #include "svn_props.h" #include "svn_subst.h" #include "private/svn_cmdline_private.h" #include "private/svn_utf_private.h" #include "private/svn_sorts_private.h" #include "private/svn_string_private.h" #include "svn_private_config.h" #include "win32_crashrpt.h" #if defined(WIN32) && defined(_MSC_VER) && (_MSC_VER < 1400) /* Before Visual Studio 2005, the C runtime didn't handle encodings for the for the stdio output handling. */ #define CMDLINE_USE_CUSTOM_ENCODING /* The stdin encoding. If null, it's the same as the native encoding. */ static const char *input_encoding = NULL; /* The stdout encoding. If null, it's the same as the native encoding. */ static const char *output_encoding = NULL; #elif defined(WIN32) && defined(_MSC_VER) /* For now limit this code to Visual C++, as the result is highly dependent on the CRT implementation */ #define USE_WIN32_CONSOLE_SHORTCUT /* When TRUE, stdout/stderr is directly connected to a console */ static svn_boolean_t shortcut_stdout_to_console = FALSE; static svn_boolean_t shortcut_stderr_to_console = FALSE; #endif int svn_cmdline_init(const char *progname, FILE *error_stream) { apr_status_t status; apr_pool_t *pool; svn_error_t *err; char prefix_buf[64]; /* 64 is probably bigger than most program names */ #ifndef WIN32 { struct stat st; /* The following makes sure that file descriptors 0 (stdin), 1 (stdout) and 2 (stderr) will not be "reused", because if e.g. file descriptor 2 would be reused when opening a file, a write to stderr would write to that file and most likely corrupt it. */ if ((fstat(0, &st) == -1 && open("/dev/null", O_RDONLY) == -1) || (fstat(1, &st) == -1 && open("/dev/null", O_WRONLY) == -1) || (fstat(2, &st) == -1 && open("/dev/null", O_WRONLY) == -1)) { if (error_stream) fprintf(error_stream, "%s: error: cannot open '/dev/null'\n", progname); return EXIT_FAILURE; } } #endif /* Ignore any errors encountered while attempting to change stream buffering, as the streams should retain their default buffering modes. */ if (error_stream) setvbuf(error_stream, NULL, _IONBF, 0); #ifndef WIN32 setvbuf(stdout, NULL, _IOLBF, 0); #endif #ifdef WIN32 #ifdef CMDLINE_USE_CUSTOM_ENCODING /* Initialize the input and output encodings. */ { static char input_encoding_buffer[16]; static char output_encoding_buffer[16]; apr_snprintf(input_encoding_buffer, sizeof input_encoding_buffer, "CP%u", (unsigned) GetConsoleCP()); input_encoding = input_encoding_buffer; apr_snprintf(output_encoding_buffer, sizeof output_encoding_buffer, "CP%u", (unsigned) GetConsoleOutputCP()); output_encoding = output_encoding_buffer; } #endif /* CMDLINE_USE_CUSTOM_ENCODING */ #ifdef SVN_USE_WIN32_CRASHHANDLER if (!getenv("SVN_CMDLINE_DISABLE_CRASH_HANDLER")) { /* Attach (but don't load) the crash handler */ SetUnhandledExceptionFilter(svn__unhandled_exception_filter); #if _MSC_VER >= 1400 /* ### This should work for VC++ 2002 (=1300) and later */ /* Show the abort message on STDERR instead of a dialog to allow scripts (e.g. our testsuite) to continue after an abort without user intervention. Allow overriding for easier debugging. */ if (!getenv("SVN_CMDLINE_USE_DIALOG_FOR_ABORT")) { /* In release mode: Redirect abort() errors to stderr */ _set_error_mode(_OUT_TO_STDERR); /* In _DEBUG mode: Redirect all debug output (E.g. assert() to stderr. (Ignored in release builds) */ _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDERR); _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDERR); _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); } #endif /* _MSC_VER >= 1400 */ } #endif /* SVN_USE_WIN32_CRASHHANDLER */ #endif /* WIN32 */ /* C programs default to the "C" locale. But because svn is supposed to be i18n-aware, it should inherit the default locale of its environment. */ if (!setlocale(LC_ALL, "") && !setlocale(LC_CTYPE, "")) { if (error_stream) { const char *env_vars[] = { "LC_ALL", "LC_CTYPE", "LANG", NULL }; const char **env_var = &env_vars[0], *env_val = NULL; while (*env_var) { env_val = getenv(*env_var); if (env_val && env_val[0]) break; ++env_var; } if (!*env_var) { /* Unlikely. Can setlocale fail if no env vars are set? */ --env_var; env_val = "not set"; } fprintf(error_stream, "%s: warning: cannot set LC_CTYPE locale\n" "%s: warning: environment variable %s is %s\n" "%s: warning: please check that your locale name is correct\n", progname, progname, *env_var, env_val, progname); } } /* Initialize the APR subsystem, and register an atexit() function to Uninitialize that subsystem at program exit. */ status = apr_initialize(); if (status) { if (error_stream) { char buf[1024]; apr_strerror(status, buf, sizeof(buf) - 1); fprintf(error_stream, "%s: error: cannot initialize APR: %s\n", progname, buf); } return EXIT_FAILURE; } strncpy(prefix_buf, progname, sizeof(prefix_buf) - 3); prefix_buf[sizeof(prefix_buf) - 3] = '\0'; strcat(prefix_buf, ": "); /* DSO pool must be created before any other pools used by the application so that pool cleanup doesn't unload DSOs too early. See docstring of svn_dso_initialize2(). */ if ((err = svn_dso_initialize2())) { if (error_stream) svn_handle_error2(err, error_stream, TRUE, prefix_buf); svn_error_clear(err); return EXIT_FAILURE; } if (0 > atexit(apr_terminate)) { if (error_stream) fprintf(error_stream, "%s: error: atexit registration failed\n", progname); return EXIT_FAILURE; } /* Create a pool for use by the UTF-8 routines. It will be cleaned up by APR at exit time. */ pool = svn_pool_create(NULL); svn_utf_initialize2(FALSE, pool); if ((err = svn_nls_init())) { if (error_stream) svn_handle_error2(err, error_stream, TRUE, prefix_buf); svn_error_clear(err); return EXIT_FAILURE; } #ifdef USE_WIN32_CONSOLE_SHORTCUT if (_isatty(STDOUT_FILENO)) { DWORD ignored; HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); /* stdout is a char device handle, but is it the console? */ if (GetConsoleMode(stdout_handle, &ignored)) shortcut_stdout_to_console = TRUE; /* Don't close stdout_handle */ } if (_isatty(STDERR_FILENO)) { DWORD ignored; HANDLE stderr_handle = GetStdHandle(STD_ERROR_HANDLE); /* stderr is a char device handle, but is it the console? */ if (GetConsoleMode(stderr_handle, &ignored)) shortcut_stderr_to_console = TRUE; /* Don't close stderr_handle */ } #endif return EXIT_SUCCESS; } svn_error_t * svn_cmdline_cstring_from_utf8(const char **dest, const char *src, apr_pool_t *pool) { #ifdef CMDLINE_USE_CUSTOM_ENCODING if (output_encoding != NULL) return svn_utf_cstring_from_utf8_ex2(dest, src, output_encoding, pool); #endif return svn_utf_cstring_from_utf8(dest, src, pool); } const char * svn_cmdline_cstring_from_utf8_fuzzy(const char *src, apr_pool_t *pool) { return svn_utf__cstring_from_utf8_fuzzy(src, pool, svn_cmdline_cstring_from_utf8); } svn_error_t * svn_cmdline_cstring_to_utf8(const char **dest, const char *src, apr_pool_t *pool) { #ifdef CMDLINE_USE_CUSTOM_ENCODING if (input_encoding != NULL) return svn_utf_cstring_to_utf8_ex2(dest, src, input_encoding, pool); #endif return svn_utf_cstring_to_utf8(dest, src, pool); } svn_error_t * svn_cmdline_path_local_style_from_utf8(const char **dest, const char *src, apr_pool_t *pool) { return svn_cmdline_cstring_from_utf8(dest, svn_dirent_local_style(src, pool), pool); } svn_error_t * svn_cmdline__stdin_readline(const char **result, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { svn_stringbuf_t *buf = NULL; svn_stream_t *stdin_stream = NULL; svn_boolean_t oob = FALSE; SVN_ERR(svn_stream_for_stdin2(&stdin_stream, TRUE, scratch_pool)); SVN_ERR(svn_stream_readline(stdin_stream, &buf, APR_EOL_STR, &oob, result_pool)); *result = buf->data; return SVN_NO_ERROR; } svn_error_t * svn_cmdline_printf(apr_pool_t *pool, const char *fmt, ...) { const char *message; va_list ap; /* A note about encoding issues: * APR uses the execution character set, but here we give it UTF-8 strings, * both the fmt argument and any other string arguments. Since apr_pvsprintf * only cares about and produces ASCII characters, this works under the * assumption that all supported platforms use an execution character set * with ASCII as a subset. */ va_start(ap, fmt); message = apr_pvsprintf(pool, fmt, ap); va_end(ap); return svn_cmdline_fputs(message, stdout, pool); } svn_error_t * svn_cmdline_fprintf(FILE *stream, apr_pool_t *pool, const char *fmt, ...) { const char *message; va_list ap; /* See svn_cmdline_printf () for a note about character encoding issues. */ va_start(ap, fmt); message = apr_pvsprintf(pool, fmt, ap); va_end(ap); return svn_cmdline_fputs(message, stream, pool); } svn_error_t * svn_cmdline_fputs(const char *string, FILE* stream, apr_pool_t *pool) { svn_error_t *err; const char *out; #ifdef USE_WIN32_CONSOLE_SHORTCUT /* For legacy reasons the Visual C++ runtime converts output to the console from the native 'ansi' encoding, to unicode, then back to 'ansi' and then onwards to the console which is implemented as unicode. For operations like 'svn status -v' this may cause about 70% of the total processing time, with absolutely no gain. For this specific scenario this shortcut exists. It has the nice side effect of allowing full unicode output to the console. Note that this shortcut is not used when the output is redirected, as in that case the data is put on the pipe/file after the first conversion to ansi. In this case the most expensive conversion is already avoided. */ if ((stream == stdout && shortcut_stdout_to_console) || (stream == stderr && shortcut_stderr_to_console)) { WCHAR *result; if (string[0] == '\0') return SVN_NO_ERROR; SVN_ERR(svn_cmdline_fflush(stream)); /* Flush existing output */ SVN_ERR(svn_utf__win32_utf8_to_utf16(&result, string, NULL, pool)); if (_cputws(result)) { if (apr_get_os_error()) { return svn_error_wrap_apr(apr_get_os_error(), _("Write error")); } } return SVN_NO_ERROR; } #endif err = svn_cmdline_cstring_from_utf8(&out, string, pool); if (err) { svn_error_clear(err); out = svn_cmdline_cstring_from_utf8_fuzzy(string, pool); } /* On POSIX systems, errno will be set on an error in fputs, but this might not be the case on other platforms. We reset errno and only use it if it was set by the below fputs call. Else, we just return a generic error. */ errno = 0; if (fputs(out, stream) == EOF) { if (apr_get_os_error()) /* is errno on POSIX */ { /* ### Issue #3014: Return a specific error for broken pipes, * ### with a single element in the error chain. */ if (SVN__APR_STATUS_IS_EPIPE(apr_get_os_error())) return svn_error_create(SVN_ERR_IO_PIPE_WRITE_ERROR, NULL, NULL); else return svn_error_wrap_apr(apr_get_os_error(), _("Write error")); } else return svn_error_create(SVN_ERR_IO_WRITE_ERROR, NULL, NULL); } return SVN_NO_ERROR; } svn_error_t * svn_cmdline_fflush(FILE *stream) { /* See comment in svn_cmdline_fputs about use of errno and stdio. */ errno = 0; if (fflush(stream) == EOF) { if (apr_get_os_error()) /* is errno on POSIX */ { /* ### Issue #3014: Return a specific error for broken pipes, * ### with a single element in the error chain. */ if (SVN__APR_STATUS_IS_EPIPE(apr_get_os_error())) return svn_error_create(SVN_ERR_IO_PIPE_WRITE_ERROR, NULL, NULL); else return svn_error_wrap_apr(apr_get_os_error(), _("Write error")); } else return svn_error_create(SVN_ERR_IO_WRITE_ERROR, NULL, NULL); } return SVN_NO_ERROR; } const char *svn_cmdline_output_encoding(apr_pool_t *pool) { #ifdef CMDLINE_USE_CUSTOM_ENCODING if (output_encoding) return apr_pstrdup(pool, output_encoding); #endif return SVN_APR_LOCALE_CHARSET; } int svn_cmdline_handle_exit_error(svn_error_t *err, apr_pool_t *pool, const char *prefix) { /* Issue #3014: * Don't print anything on broken pipes. The pipe was likely * closed by the process at the other end. We expect that * process to perform error reporting as necessary. * * ### This assumes that there is only one error in a chain for * ### SVN_ERR_IO_PIPE_WRITE_ERROR. See svn_cmdline_fputs(). */ if (err->apr_err != SVN_ERR_IO_PIPE_WRITE_ERROR) svn_handle_error2(err, stderr, FALSE, prefix); svn_error_clear(err); if (pool) svn_pool_destroy(pool); return EXIT_FAILURE; } struct trust_server_cert_non_interactive_baton { svn_boolean_t trust_server_cert_unknown_ca; svn_boolean_t trust_server_cert_cn_mismatch; svn_boolean_t trust_server_cert_expired; svn_boolean_t trust_server_cert_not_yet_valid; svn_boolean_t trust_server_cert_other_failure; }; /* This implements 'svn_auth_ssl_server_trust_prompt_func_t'. Don't actually prompt. Instead, set *CRED_P to valid credentials iff FAILURES is empty or may be accepted according to the flags in BATON. If there are any other failure bits, then set *CRED_P to null (that is, reject the cert). Ignore MAY_SAVE; we don't save certs we never prompted for. Ignore REALM and CERT_INFO, Ignore any further films by George Lucas. */ static svn_error_t * trust_server_cert_non_interactive(svn_auth_cred_ssl_server_trust_t **cred_p, void *baton, const char *realm, apr_uint32_t failures, const svn_auth_ssl_server_cert_info_t *cert_info, svn_boolean_t may_save, apr_pool_t *pool) { struct trust_server_cert_non_interactive_baton *b = baton; apr_uint32_t non_ignored_failures; *cred_p = NULL; /* Mask away bits we are instructed to ignore. */ non_ignored_failures = failures & ~( (b->trust_server_cert_unknown_ca ? SVN_AUTH_SSL_UNKNOWNCA : 0) | (b->trust_server_cert_cn_mismatch ? SVN_AUTH_SSL_CNMISMATCH : 0) | (b->trust_server_cert_expired ? SVN_AUTH_SSL_EXPIRED : 0) | (b->trust_server_cert_not_yet_valid ? SVN_AUTH_SSL_NOTYETVALID : 0) | (b->trust_server_cert_other_failure ? SVN_AUTH_SSL_OTHER : 0) ); /* If no failures remain, accept the certificate. */ if (non_ignored_failures == 0) { *cred_p = apr_pcalloc(pool, sizeof(**cred_p)); (*cred_p)->may_save = FALSE; (*cred_p)->accepted_failures = failures; } return SVN_NO_ERROR; } svn_error_t * svn_cmdline_create_auth_baton2(svn_auth_baton_t **ab, svn_boolean_t non_interactive, const char *auth_username, const char *auth_password, const char *config_dir, svn_boolean_t no_auth_cache, svn_boolean_t trust_server_cert_unknown_ca, svn_boolean_t trust_server_cert_cn_mismatch, svn_boolean_t trust_server_cert_expired, svn_boolean_t trust_server_cert_not_yet_valid, svn_boolean_t trust_server_cert_other_failure, svn_config_t *cfg, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool) { svn_boolean_t store_password_val = TRUE; svn_boolean_t store_auth_creds_val = TRUE; svn_auth_provider_object_t *provider; svn_cmdline_prompt_baton2_t *pb = NULL; /* The whole list of registered providers */ apr_array_header_t *providers; /* Populate the registered providers with the platform-specific providers */ SVN_ERR(svn_auth_get_platform_specific_client_providers(&providers, cfg, pool)); /* If we have a cancellation function, cram it and the stuff it needs into the prompt baton. */ if (cancel_func) { pb = apr_palloc(pool, sizeof(*pb)); pb->cancel_func = cancel_func; pb->cancel_baton = cancel_baton; pb->config_dir = config_dir; } if (!non_interactive) { /* This provider doesn't prompt the user in order to get creds; it prompts the user regarding the caching of creds. */ svn_auth_get_simple_provider2(&provider, svn_cmdline_auth_plaintext_prompt, pb, pool); } else { svn_auth_get_simple_provider2(&provider, NULL, NULL, pool); } APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; svn_auth_get_username_provider(&provider, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; svn_auth_get_ssl_server_trust_file_provider(&provider, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; svn_auth_get_ssl_client_cert_file_provider(&provider, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; if (!non_interactive) { /* This provider doesn't prompt the user in order to get creds; it prompts the user regarding the caching of creds. */ svn_auth_get_ssl_client_cert_pw_file_provider2 (&provider, svn_cmdline_auth_plaintext_passphrase_prompt, pb, pool); } else { svn_auth_get_ssl_client_cert_pw_file_provider2(&provider, NULL, NULL, pool); } APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; if (!non_interactive) { svn_boolean_t ssl_client_cert_file_prompt; SVN_ERR(svn_config_get_bool(cfg, &ssl_client_cert_file_prompt, SVN_CONFIG_SECTION_AUTH, SVN_CONFIG_OPTION_SSL_CLIENT_CERT_FILE_PROMPT, FALSE)); /* Two basic prompt providers: username/password, and just username. */ svn_auth_get_simple_prompt_provider(&provider, svn_cmdline_auth_simple_prompt, pb, 2, /* retry limit */ pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; svn_auth_get_username_prompt_provider (&provider, svn_cmdline_auth_username_prompt, pb, 2, /* retry limit */ pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; /* SSL prompt providers: server-certs and client-cert-passphrases. */ svn_auth_get_ssl_server_trust_prompt_provider (&provider, svn_cmdline_auth_ssl_server_trust_prompt, pb, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; svn_auth_get_ssl_client_cert_pw_prompt_provider (&provider, svn_cmdline_auth_ssl_client_cert_pw_prompt, pb, 2, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; /* If configuration allows, add a provider for client-cert path prompting, too. */ if (ssl_client_cert_file_prompt) { svn_auth_get_ssl_client_cert_prompt_provider (&provider, svn_cmdline_auth_ssl_client_cert_prompt, pb, 2, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; } } else if (trust_server_cert_unknown_ca || trust_server_cert_cn_mismatch || trust_server_cert_expired || trust_server_cert_not_yet_valid || trust_server_cert_other_failure) { struct trust_server_cert_non_interactive_baton *b; b = apr_palloc(pool, sizeof(*b)); b->trust_server_cert_unknown_ca = trust_server_cert_unknown_ca; b->trust_server_cert_cn_mismatch = trust_server_cert_cn_mismatch; b->trust_server_cert_expired = trust_server_cert_expired; b->trust_server_cert_not_yet_valid = trust_server_cert_not_yet_valid; b->trust_server_cert_other_failure = trust_server_cert_other_failure; /* Remember, only register this provider if non_interactive. */ svn_auth_get_ssl_server_trust_prompt_provider (&provider, trust_server_cert_non_interactive, b, pool); APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; } /* Build an authentication baton to give to libsvn_client. */ svn_auth_open(ab, providers, pool); /* Place any default --username or --password credentials into the auth_baton's run-time parameter hash. */ if (auth_username) svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_DEFAULT_USERNAME, auth_username); if (auth_password) svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_DEFAULT_PASSWORD, auth_password); /* Same with the --non-interactive option. */ if (non_interactive) svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_NON_INTERACTIVE, ""); if (config_dir) svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_CONFIG_DIR, config_dir); /* Determine whether storing passwords in any form is allowed. * This is the deprecated location for this option, the new * location is SVN_CONFIG_CATEGORY_SERVERS. The RA layer may * override the value we set here. */ SVN_ERR(svn_config_get_bool(cfg, &store_password_val, SVN_CONFIG_SECTION_AUTH, SVN_CONFIG_OPTION_STORE_PASSWORDS, SVN_CONFIG_DEFAULT_OPTION_STORE_PASSWORDS)); if (! store_password_val) svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_DONT_STORE_PASSWORDS, ""); /* Determine whether we are allowed to write to the auth/ area. * This is the deprecated location for this option, the new * location is SVN_CONFIG_CATEGORY_SERVERS. The RA layer may * override the value we set here. */ SVN_ERR(svn_config_get_bool(cfg, &store_auth_creds_val, SVN_CONFIG_SECTION_AUTH, SVN_CONFIG_OPTION_STORE_AUTH_CREDS, SVN_CONFIG_DEFAULT_OPTION_STORE_AUTH_CREDS)); if (no_auth_cache || ! store_auth_creds_val) svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_NO_AUTH_CACHE, ""); #ifdef SVN_HAVE_GNOME_KEYRING svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC, &svn_cmdline__auth_gnome_keyring_unlock_prompt); #endif /* SVN_HAVE_GNOME_KEYRING */ return SVN_NO_ERROR; } svn_error_t * svn_cmdline__getopt_init(apr_getopt_t **os, int argc, const char *argv[], apr_pool_t *pool) { apr_status_t apr_err = apr_getopt_init(os, pool, argc, argv); if (apr_err) return svn_error_wrap_apr(apr_err, _("Error initializing command line arguments")); return SVN_NO_ERROR; } void svn_cmdline__print_xml_prop(svn_stringbuf_t **outstr, const char* propname, svn_string_t *propval, svn_boolean_t inherited_prop, apr_pool_t *pool) { const char *xml_safe; const char *encoding = NULL; if (*outstr == NULL) *outstr = svn_stringbuf_create_empty(pool); if (svn_xml_is_xml_safe(propval->data, propval->len)) { svn_stringbuf_t *xml_esc = NULL; svn_xml_escape_cdata_string(&xml_esc, propval, pool); xml_safe = xml_esc->data; } else { const svn_string_t *base64ed = svn_base64_encode_string2(propval, TRUE, pool); encoding = "base64"; xml_safe = base64ed->data; } if (encoding) svn_xml_make_open_tag( outstr, pool, svn_xml_protect_pcdata, inherited_prop ? "inherited_property" : "property", "name", propname, "encoding", encoding, SVN_VA_NULL); else svn_xml_make_open_tag( outstr, pool, svn_xml_protect_pcdata, inherited_prop ? "inherited_property" : "property", "name", propname, SVN_VA_NULL); svn_stringbuf_appendcstr(*outstr, xml_safe); svn_xml_make_close_tag( outstr, pool, inherited_prop ? "inherited_property" : "property"); return; } /* Return the most similar string to NEEDLE in HAYSTACK, which contains * HAYSTACK_LEN elements. Return NULL if no string is sufficiently similar. */ /* See svn_cl__similarity_check() for a more general solution. */ static const char * most_similar(const char *needle_cstr, const char **haystack, apr_size_t haystack_len, apr_pool_t *scratch_pool) { const char *max_similar = NULL; apr_size_t max_score = 0; apr_size_t i; svn_membuf_t membuf; svn_string_t *needle_str = svn_string_create(needle_cstr, scratch_pool); svn_membuf__create(&membuf, 64, scratch_pool); for (i = 0; i < haystack_len; i++) { apr_size_t score; svn_string_t *hay = svn_string_create(haystack[i], scratch_pool); score = svn_string__similarity(needle_str, hay, &membuf, NULL); /* If you update this factor, consider updating * svn_cl__similarity_check(). */ if (score >= (2 * SVN_STRING__SIM_RANGE_MAX + 1) / 3 && score > max_score) { max_score = score; max_similar = haystack[i]; } } return max_similar; } /* Verify that NEEDLE is in HAYSTACK, which contains HAYSTACK_LEN elements. */ static svn_error_t * string_in_array(const char *needle, const char **haystack, apr_size_t haystack_len, apr_pool_t *scratch_pool) { const char *next_of_kin; apr_size_t i; for (i = 0; i < haystack_len; i++) { if (!strcmp(needle, haystack[i])) return SVN_NO_ERROR; } /* Error. */ next_of_kin = most_similar(needle, haystack, haystack_len, scratch_pool); if (next_of_kin) return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Ignoring unknown value '%s'; " "did you mean '%s'?"), needle, next_of_kin); else return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Ignoring unknown value '%s'"), needle); } #include "config_keys.inc" /* Validate the FILE, SECTION, and OPTION components of CONFIG_OPTION are * known. Return an error if not. (An unknown value may be either a typo * or added in a newer minor version of Subversion.) */ static svn_error_t * validate_config_option(svn_cmdline__config_argument_t *config_option, apr_pool_t *scratch_pool) { svn_boolean_t arbitrary_keys = FALSE; /* TODO: some day, we could also verify that OPTION is valid for SECTION; i.e., forbid invalid combinations such as config:auth:diff-extensions. */ #define ARRAYLEN(x) ( sizeof((x)) / sizeof((x)[0]) ) SVN_ERR(string_in_array(config_option->file, svn__valid_config_files, ARRAYLEN(svn__valid_config_files), scratch_pool)); SVN_ERR(string_in_array(config_option->section, svn__valid_config_sections, ARRAYLEN(svn__valid_config_sections), scratch_pool)); /* Don't validate option names for sections such as servers[group], * config[tunnels], and config[auto-props] that permit arbitrary options. */ { int i; for (i = 0; i < ARRAYLEN(svn__empty_config_sections); i++) { if (!strcmp(config_option->section, svn__empty_config_sections[i])) arbitrary_keys = TRUE; } } if (! arbitrary_keys) SVN_ERR(string_in_array(config_option->option, svn__valid_config_options, ARRAYLEN(svn__valid_config_options), scratch_pool)); #undef ARRAYLEN return SVN_NO_ERROR; } svn_error_t * svn_cmdline__parse_config_option(apr_array_header_t *config_options, const char *opt_arg, const char *prefix, apr_pool_t *pool) { svn_cmdline__config_argument_t *config_option; const char *first_colon, *second_colon, *equals_sign; apr_size_t len = strlen(opt_arg); if ((first_colon = strchr(opt_arg, ':')) && (first_colon != opt_arg)) { if ((second_colon = strchr(first_colon + 1, ':')) && (second_colon != first_colon + 1)) { if ((equals_sign = strchr(second_colon + 1, '=')) && (equals_sign != second_colon + 1)) { svn_error_t *warning; config_option = apr_pcalloc(pool, sizeof(*config_option)); config_option->file = apr_pstrndup(pool, opt_arg, first_colon - opt_arg); config_option->section = apr_pstrndup(pool, first_colon + 1, second_colon - first_colon - 1); config_option->option = apr_pstrndup(pool, second_colon + 1, equals_sign - second_colon - 1); warning = validate_config_option(config_option, pool); if (warning) { svn_handle_warning2(stderr, warning, prefix); svn_error_clear(warning); } if (! (strchr(config_option->option, ':'))) { config_option->value = apr_pstrndup(pool, equals_sign + 1, opt_arg + len - equals_sign - 1); APR_ARRAY_PUSH(config_options, svn_cmdline__config_argument_t *) = config_option; return SVN_NO_ERROR; } } } } return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Invalid syntax of argument of --config-option")); } svn_error_t * svn_cmdline__apply_config_options(apr_hash_t *config, const apr_array_header_t *config_options, const char *prefix, const char *argument_name) { int i; for (i = 0; i < config_options->nelts; i++) { svn_config_t *cfg; svn_cmdline__config_argument_t *arg = APR_ARRAY_IDX(config_options, i, svn_cmdline__config_argument_t *); cfg = svn_hash_gets(config, arg->file); if (cfg) { svn_config_set(cfg, arg->section, arg->option, arg->value); } else { svn_error_t *err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Unrecognized file in argument of %s"), argument_name); svn_handle_warning2(stderr, err, prefix); svn_error_clear(err); } } return SVN_NO_ERROR; } /* Return a copy, allocated in POOL, of the next line of text from *STR * up to and including a CR and/or an LF. Change *STR to point to the * remainder of the string after the returned part. If there are no * characters to be returned, return NULL; never return an empty string. */ static const char * next_line(const char **str, apr_pool_t *pool) { const char *start = *str; const char *p = *str; /* n.b. Throughout this fn, we never read any character after a '\0'. */ /* Skip over all non-EOL characters, if any. */ while (*p != '\r' && *p != '\n' && *p != '\0') p++; /* Skip over \r\n or \n\r or \r or \n, if any. */ if (*p == '\r' || *p == '\n') { char c = *p++; if ((c == '\r' && *p == '\n') || (c == '\n' && *p == '\r')) p++; } /* Now p points after at most one '\n' and/or '\r'. */ *str = p; if (p == start) return NULL; return svn_string_ncreate(start, p - start, pool)->data; } const char * svn_cmdline__indent_string(const char *str, const char *indent, apr_pool_t *pool) { svn_stringbuf_t *out = svn_stringbuf_create_empty(pool); const char *line; while ((line = next_line(&str, pool))) { svn_stringbuf_appendcstr(out, indent); svn_stringbuf_appendcstr(out, line); } return out->data; } svn_error_t * svn_cmdline__print_prop_hash(svn_stream_t *out, apr_hash_t *prop_hash, svn_boolean_t names_only, apr_pool_t *pool) { apr_array_header_t *sorted_props; int i; sorted_props = svn_sort__hash(prop_hash, svn_sort_compare_items_lexically, pool); for (i = 0; i < sorted_props->nelts; i++) { svn_sort__item_t item = APR_ARRAY_IDX(sorted_props, i, svn_sort__item_t); const char *pname = item.key; svn_string_t *propval = item.value; const char *pname_stdout; if (svn_prop_needs_translation(pname)) SVN_ERR(svn_subst_detranslate_string(&propval, propval, TRUE, pool)); SVN_ERR(svn_cmdline_cstring_from_utf8(&pname_stdout, pname, pool)); if (out) { pname_stdout = apr_psprintf(pool, " %s\n", pname_stdout); SVN_ERR(svn_subst_translate_cstring2(pname_stdout, &pname_stdout, APR_EOL_STR, /* 'native' eol */ FALSE, /* no repair */ NULL, /* no keywords */ FALSE, /* no expansion */ pool)); SVN_ERR(svn_stream_puts(out, pname_stdout)); } else { /* ### We leave these printfs for now, since if propval wasn't translated above, we don't know anything about its encoding. In fact, it might be binary data... */ printf(" %s\n", pname_stdout); } if (!names_only) { /* Add an extra newline to the value before indenting, so that * every line of output has the indentation whether the value * already ended in a newline or not. */ const char *newval = apr_psprintf(pool, "%s\n", propval->data); const char *indented_newval = svn_cmdline__indent_string(newval, " ", pool); if (out) { SVN_ERR(svn_stream_puts(out, indented_newval)); } else { printf("%s", indented_newval); } } } return SVN_NO_ERROR; } svn_error_t * svn_cmdline__print_xml_prop_hash(svn_stringbuf_t **outstr, apr_hash_t *prop_hash, svn_boolean_t names_only, svn_boolean_t inherited_props, apr_pool_t *pool) { apr_array_header_t *sorted_props; int i; if (*outstr == NULL) *outstr = svn_stringbuf_create_empty(pool); sorted_props = svn_sort__hash(prop_hash, svn_sort_compare_items_lexically, pool); for (i = 0; i < sorted_props->nelts; i++) { svn_sort__item_t item = APR_ARRAY_IDX(sorted_props, i, svn_sort__item_t); const char *pname = item.key; svn_string_t *propval = item.value; if (names_only) { svn_xml_make_open_tag( outstr, pool, svn_xml_self_closing, inherited_props ? "inherited_property" : "property", "name", pname, SVN_VA_NULL); } else { const char *pname_out; if (svn_prop_needs_translation(pname)) SVN_ERR(svn_subst_detranslate_string(&propval, propval, TRUE, pool)); SVN_ERR(svn_cmdline_cstring_from_utf8(&pname_out, pname, pool)); svn_cmdline__print_xml_prop(outstr, pname_out, propval, inherited_props, pool); } } return SVN_NO_ERROR; } svn_boolean_t svn_cmdline__stdin_is_a_terminal(void) { #ifdef WIN32 return (_isatty(STDIN_FILENO) != 0); #else return (isatty(STDIN_FILENO) != 0); #endif } svn_boolean_t svn_cmdline__stdout_is_a_terminal(void) { #ifdef WIN32 return (_isatty(STDOUT_FILENO) != 0); #else return (isatty(STDOUT_FILENO) != 0); #endif } svn_boolean_t svn_cmdline__stderr_is_a_terminal(void) { #ifdef WIN32 return (_isatty(STDERR_FILENO) != 0); #else return (isatty(STDERR_FILENO) != 0); #endif } svn_boolean_t svn_cmdline__be_interactive(svn_boolean_t non_interactive, svn_boolean_t force_interactive) { /* If neither --non-interactive nor --force-interactive was passed, * be interactive if stdin is a terminal. * If --force-interactive was passed, always be interactive. */ if (!force_interactive && !non_interactive) { return svn_cmdline__stdin_is_a_terminal(); } else if (force_interactive) return TRUE; return !non_interactive; } /* Helper for the edit_externally functions. Set *EDITOR to some path to an - editor binary. Sources to search include: the EDITOR_CMD argument - (if not NULL), $SVN_EDITOR, the runtime CONFIG variable (if CONFIG + editor binary, in native C string on Unix/Linux platforms and in UTF-8 + string on Windows platform. Sources to search include: the EDITOR_CMD + argument (if not NULL), $SVN_EDITOR, the runtime CONFIG variable (if CONFIG is not NULL), $VISUAL, $EDITOR. Return SVN_ERR_CL_NO_EXTERNAL_EDITOR if no binary can be found. */ static svn_error_t * find_editor_binary(const char **editor, const char *editor_cmd, - apr_hash_t *config) + apr_hash_t *config, + apr_pool_t *pool) { const char *e; + const char *e_cfg; struct svn_config_t *cfg; + apr_status_t status; /* Use the editor specified on the command line via --editor-cmd, if any. */ +#ifdef WIN32 + /* On Windows, editor_cmd is transcoded to the system active code page + because we use main() as a entry point without APR's (or our own) wrapper + in command line tools. */ + if (editor_cmd) + { + SVN_ERR(svn_utf_cstring_to_utf8(&e, editor_cmd, pool)); + } + else + { + e = NULL; + } +#else e = editor_cmd; +#endif /* Otherwise look for the Subversion-specific environment variable. */ if (! e) - e = getenv("SVN_EDITOR"); + { + status = apr_env_get((char **)&e, "SVN_EDITOR", pool); + if (status || ! *e) + { + e = NULL; + } + } /* If not found then fall back on the config file. */ if (! e) { cfg = config ? svn_hash_gets(config, SVN_CONFIG_CATEGORY_CONFIG) : NULL; - svn_config_get(cfg, &e, SVN_CONFIG_SECTION_HELPERS, + svn_config_get(cfg, &e_cfg, SVN_CONFIG_SECTION_HELPERS, SVN_CONFIG_OPTION_EDITOR_CMD, NULL); +#ifdef WIN32 + if (e_cfg) + { + /* On Windows, we assume that config values are set in system active + code page, so we need transcode it here. */ + SVN_ERR(svn_utf_cstring_to_utf8(&e, e_cfg, pool)); + } +#else + e = e_cfg; +#endif } /* If not found yet then try general purpose environment variables. */ if (! e) - e = getenv("VISUAL"); + { + status = apr_env_get((char**)&e, "VISUAL", pool); + if (status || ! *e) + { + e = NULL; + } + } if (! e) - e = getenv("EDITOR"); + { + status = apr_env_get((char**)&e, "EDITOR", pool); + if (status || ! *e) + { + e = NULL; + } + } #ifdef SVN_CLIENT_EDITOR /* If still not found then fall back on the hard-coded default. */ if (! e) e = SVN_CLIENT_EDITOR; #endif /* Error if there is no editor specified */ if (e) { const char *c; for (c = e; *c; c++) if (!svn_ctype_isspace(*c)) break; if (! *c) return svn_error_create (SVN_ERR_CL_NO_EXTERNAL_EDITOR, NULL, _("The EDITOR, SVN_EDITOR or VISUAL environment variable or " "'editor-cmd' run-time configuration option is empty or " "consists solely of whitespace. Expected a shell command.")); } else return svn_error_create (SVN_ERR_CL_NO_EXTERNAL_EDITOR, NULL, _("None of the environment variables SVN_EDITOR, VISUAL or EDITOR are " "set, and no 'editor-cmd' run-time configuration option was found")); *editor = e; return SVN_NO_ERROR; } /* Wrapper around apr_pescape_shell() which also escapes whitespace. */ static const char * escape_path(apr_pool_t *pool, const char *orig_path) { apr_size_t len, esc_len; apr_status_t status; len = strlen(orig_path); esc_len = 0; status = apr_escape_shell(NULL, orig_path, len, &esc_len); if (status == APR_NOTFOUND) { /* No special characters found by APR, so just surround it in double quotes in case there is whitespace, which APR (as of 1.6.5) doesn't consider special. */ return apr_psprintf(pool, "\"%s\"", orig_path); } else { #ifdef WIN32 const char *p; /* Following the advice from https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way 1. Surround argument with double-quotes 2. Escape backslashes, if they're followed by a double-quote, and double-quotes 3. Escape any metacharacter, including double-quotes, with ^ */ /* Use APR's buffer size as an approximation for how large the escaped string should be, plus 4 bytes for the leading/trailing ^" */ svn_stringbuf_t *buf = svn_stringbuf_create_ensure(esc_len + 4, pool); svn_stringbuf_appendcstr(buf, "^\""); for (p = orig_path; *p; p++) { int nr_backslash = 0; while (*p && *p == '\\') { nr_backslash++; p++; } if (!*p) /* We've reached the end of the argument, so we need 2n backslash characters. That will be interpreted as n backslashes and the final double-quote character will be interpreted as the final string delimiter. */ svn_stringbuf_appendfill(buf, '\\', nr_backslash * 2); else if (*p == '"') { /* Double-quote as part of the argument means we need to double any preceeding backslashes and then add one to escape the double-quote. */ svn_stringbuf_appendfill(buf, '\\', nr_backslash * 2 + 1); svn_stringbuf_appendbyte(buf, '^'); svn_stringbuf_appendbyte(buf, *p); } else { /* Since there's no double-quote, we just insert any backslashes literally. No escaping needed. */ svn_stringbuf_appendfill(buf, '\\', nr_backslash); if (strchr("()%!^<>&|", *p)) svn_stringbuf_appendbyte(buf, '^'); svn_stringbuf_appendbyte(buf, *p); } } svn_stringbuf_appendcstr(buf, "^\""); return buf->data; #else char *path, *p, *esc_path; /* Account for whitespace, since APR doesn't */ for (p = (char *)orig_path; *p; p++) if (strchr(" \t\n\r", *p)) esc_len++; path = apr_pcalloc(pool, esc_len); apr_escape_shell(path, orig_path, len, NULL); p = esc_path = apr_pcalloc(pool, len + esc_len + 1); while (*path) { if (strchr(" \t\n\r", *path)) *p++ = '\\'; *p++ = *path++; } return esc_path; #endif } } svn_error_t * svn_cmdline__edit_file_externally(const char *path, const char *editor_cmd, apr_hash_t *config, apr_pool_t *pool) { const char *editor, *cmd, *base_dir, *file_name, *base_dir_apr; + const char *file_name_local; +#ifdef WIN32 + const WCHAR *wcmd; +#endif char *old_cwd; int sys_err; apr_status_t apr_err; svn_dirent_split(&base_dir, &file_name, path, pool); - SVN_ERR(find_editor_binary(&editor, editor_cmd, config)); + SVN_ERR(find_editor_binary(&editor, editor_cmd, config, pool)); apr_err = apr_filepath_get(&old_cwd, APR_FILEPATH_NATIVE, pool); if (apr_err) return svn_error_wrap_apr(apr_err, _("Can't get working directory")); /* APR doesn't like "" directories */ if (base_dir[0] == '\0') base_dir_apr = "."; else SVN_ERR(svn_path_cstring_from_utf8(&base_dir_apr, base_dir, pool)); apr_err = apr_filepath_set(base_dir_apr, pool); if (apr_err) return svn_error_wrap_apr (apr_err, _("Can't change working directory to '%s'"), base_dir); + SVN_ERR(svn_path_cstring_from_utf8(&file_name_local, + escape_path(pool, file_name), pool)); /* editor is explicitly documented as being interpreted by the user's shell, and as such should already be quoted/escaped as needed. */ - cmd = apr_psprintf(pool, "%s %s", editor, escape_path(pool, file_name)); +#ifndef WIN32 + cmd = apr_psprintf(pool, "%s %s", editor, file_name_local); sys_err = system(cmd); +#else + cmd = apr_psprintf(pool, "\"%s %s\"", editor, file_name_local); + SVN_ERR(svn_utf__win32_utf8_to_utf16(&wcmd, cmd, NULL, pool)); + sys_err = _wsystem(wcmd); +#endif apr_err = apr_filepath_set(old_cwd, pool); if (apr_err) svn_handle_error2(svn_error_wrap_apr (apr_err, _("Can't restore working directory")), stderr, TRUE /* fatal */, "svn: "); if (sys_err) /* Extracting any meaning from sys_err is platform specific, so just use the raw value. */ return svn_error_createf(SVN_ERR_EXTERNAL_PROGRAM, NULL, _("system('%s') returned %d"), cmd, sys_err); return SVN_NO_ERROR; } svn_error_t * svn_cmdline__edit_string_externally(svn_string_t **edited_contents /* UTF-8! */, const char **tmpfile_left /* UTF-8! */, const char *editor_cmd, const char *base_dir /* UTF-8! */, const svn_string_t *contents /* UTF-8! */, const char *filename, apr_hash_t *config, svn_boolean_t as_text, const char *encoding, apr_pool_t *pool) { const char *editor; const char *cmd; +#ifdef WIN32 + const WCHAR *wcmd; +#endif apr_file_t *tmp_file; const char *tmpfile_name; const char *tmpfile_native; const char *base_dir_apr; svn_string_t *translated_contents; apr_status_t apr_err; apr_size_t written; apr_finfo_t finfo_before, finfo_after; svn_error_t *err = SVN_NO_ERROR; char *old_cwd; int sys_err; svn_boolean_t remove_file = TRUE; - SVN_ERR(find_editor_binary(&editor, editor_cmd, config)); + SVN_ERR(find_editor_binary(&editor, editor_cmd, config, pool)); /* Convert file contents from UTF-8/LF if desired. */ if (as_text) { const char *translated; SVN_ERR(svn_subst_translate_cstring2(contents->data, &translated, APR_EOL_STR, FALSE, NULL, FALSE, pool)); translated_contents = svn_string_create_empty(pool); if (encoding) SVN_ERR(svn_utf_cstring_from_utf8_ex2(&translated_contents->data, translated, encoding, pool)); else SVN_ERR(svn_utf_cstring_from_utf8(&translated_contents->data, translated, pool)); translated_contents->len = strlen(translated_contents->data); } else translated_contents = svn_string_dup(contents, pool); /* Move to BASE_DIR to avoid getting characters that need quoting into tmpfile_name */ apr_err = apr_filepath_get(&old_cwd, APR_FILEPATH_NATIVE, pool); if (apr_err) return svn_error_wrap_apr(apr_err, _("Can't get working directory")); /* APR doesn't like "" directories */ if (base_dir[0] == '\0') base_dir_apr = "."; else SVN_ERR(svn_path_cstring_from_utf8(&base_dir_apr, base_dir, pool)); apr_err = apr_filepath_set(base_dir_apr, pool); if (apr_err) { return svn_error_wrap_apr (apr_err, _("Can't change working directory to '%s'"), base_dir); } /*** From here on, any problems that occur require us to cd back!! ***/ /* Ask the working copy for a temporary file named FILENAME-something. */ err = svn_io_open_uniquely_named(&tmp_file, &tmpfile_name, "" /* dirpath */, filename, ".tmp", svn_io_file_del_none, pool, pool); if (err && (APR_STATUS_IS_EACCES(err->apr_err) || err->apr_err == EROFS)) { const char *temp_dir_apr; svn_error_clear(err); SVN_ERR(svn_io_temp_dir(&base_dir, pool)); SVN_ERR(svn_path_cstring_from_utf8(&temp_dir_apr, base_dir, pool)); apr_err = apr_filepath_set(temp_dir_apr, pool); if (apr_err) { return svn_error_wrap_apr (apr_err, _("Can't change working directory to '%s'"), base_dir); } err = svn_io_open_uniquely_named(&tmp_file, &tmpfile_name, "" /* dirpath */, filename, ".tmp", svn_io_file_del_none, pool, pool); } if (err) goto cleanup2; /*** From here on, any problems that occur require us to cleanup the file we just created!! ***/ /* Dump initial CONTENTS to TMP_FILE. */ err = svn_io_file_write_full(tmp_file, translated_contents->data, translated_contents->len, &written, pool); err = svn_error_compose_create(err, svn_io_file_close(tmp_file, pool)); /* Make sure the whole CONTENTS were written, else return an error. */ if (err) goto cleanup; /* Get information about the temporary file before the user has been allowed to edit its contents. */ err = svn_io_stat(&finfo_before, tmpfile_name, APR_FINFO_MTIME, pool); if (err) goto cleanup; /* Backdate the file a little bit in case the editor is very fast and doesn't change the size. (Use two seconds, since some filesystems have coarse granularity.) It's OK if this call fails, so we don't check its return value.*/ err = svn_io_set_file_affected_time(finfo_before.mtime - apr_time_from_sec(2), tmpfile_name, pool); svn_error_clear(err); /* Stat it again to get the mtime we actually set. */ err = svn_io_stat(&finfo_before, tmpfile_name, APR_FINFO_MTIME | APR_FINFO_SIZE, pool); if (err) goto cleanup; /* Prepare the editor command line. */ - err = svn_utf_cstring_from_utf8(&tmpfile_native, tmpfile_name, pool); + err = svn_utf_cstring_from_utf8(&tmpfile_native, + escape_path(pool, tmpfile_name), pool); if (err) goto cleanup; /* editor is explicitly documented as being interpreted by the user's shell, and as such should already be quoted/escaped as needed. */ - cmd = apr_psprintf(pool, "%s %s", editor, escape_path(pool, tmpfile_native)); +#ifndef WIN32 + cmd = apr_psprintf(pool, "%s %s", editor, tmpfile_native); +#else + cmd = apr_psprintf(pool, "\"%s %s\"", editor, tmpfile_native); +#endif /* If the caller wants us to leave the file around, return the path of the file we'll use, and make a note not to destroy it. */ if (tmpfile_left) { *tmpfile_left = svn_dirent_join(base_dir, tmpfile_name, pool); remove_file = FALSE; } /* Now, run the editor command line. */ +#ifndef WIN32 sys_err = system(cmd); +#else + SVN_ERR(svn_utf__win32_utf8_to_utf16(&wcmd, cmd, NULL, pool)); + sys_err = _wsystem(wcmd); +#endif if (sys_err != 0) { /* Extracting any meaning from sys_err is platform specific, so just use the raw value. */ err = svn_error_createf(SVN_ERR_EXTERNAL_PROGRAM, NULL, _("system('%s') returned %d"), cmd, sys_err); goto cleanup; } /* Get information about the temporary file after the assumed editing. */ err = svn_io_stat(&finfo_after, tmpfile_name, APR_FINFO_MTIME | APR_FINFO_SIZE, pool); if (err) goto cleanup; /* If the file looks changed... */ if ((finfo_before.mtime != finfo_after.mtime) || (finfo_before.size != finfo_after.size)) { svn_stringbuf_t *edited_contents_s; err = svn_stringbuf_from_file2(&edited_contents_s, tmpfile_name, pool); if (err) goto cleanup; *edited_contents = svn_stringbuf__morph_into_string(edited_contents_s); /* Translate back to UTF8/LF if desired. */ if (as_text) { err = svn_subst_translate_string2(edited_contents, NULL, NULL, *edited_contents, encoding, FALSE, pool, pool); if (err) { err = svn_error_quick_wrap (err, _("Error normalizing edited contents to internal format")); goto cleanup; } } } else { /* No edits seem to have been made */ *edited_contents = NULL; } cleanup: if (remove_file) { /* Remove the file from disk. */ err = svn_error_compose_create( err, svn_io_remove_file2(tmpfile_name, FALSE, pool)); } cleanup2: /* If we against all probability can't cd back, all further relative file references would be screwed up, so we have to abort. */ apr_err = apr_filepath_set(old_cwd, pool); if (apr_err) { svn_handle_error2(svn_error_wrap_apr (apr_err, _("Can't restore working directory")), stderr, TRUE /* fatal */, "svn: "); } return svn_error_trace(err); } svn_error_t * svn_cmdline__parse_trust_options( svn_boolean_t *trust_server_cert_unknown_ca, svn_boolean_t *trust_server_cert_cn_mismatch, svn_boolean_t *trust_server_cert_expired, svn_boolean_t *trust_server_cert_not_yet_valid, svn_boolean_t *trust_server_cert_other_failure, const char *opt_arg, apr_pool_t *scratch_pool) { apr_array_header_t *failures; int i; *trust_server_cert_unknown_ca = FALSE; *trust_server_cert_cn_mismatch = FALSE; *trust_server_cert_expired = FALSE; *trust_server_cert_not_yet_valid = FALSE; *trust_server_cert_other_failure = FALSE; failures = svn_cstring_split(opt_arg, ", \n\r\t\v", TRUE, scratch_pool); for (i = 0; i < failures->nelts; i++) { const char *value = APR_ARRAY_IDX(failures, i, const char *); if (!strcmp(value, "unknown-ca")) *trust_server_cert_unknown_ca = TRUE; else if (!strcmp(value, "cn-mismatch")) *trust_server_cert_cn_mismatch = TRUE; else if (!strcmp(value, "expired")) *trust_server_cert_expired = TRUE; else if (!strcmp(value, "not-yet-valid")) *trust_server_cert_not_yet_valid = TRUE; else if (!strcmp(value, "other")) *trust_server_cert_other_failure = TRUE; else return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Unknown value '%s' for %s.\n" "Supported values: %s"), value, "--trust-server-cert-failures", "unknown-ca, cn-mismatch, expired, " "not-yet-valid, other"); } return SVN_NO_ERROR; } /* Flags to see if we've been cancelled by the client or not. */ static volatile sig_atomic_t cancelled = FALSE; static volatile sig_atomic_t signum_cancelled = 0; /* The signals we handle. */ static int signal_map [] = { SIGINT #ifdef SIGBREAK /* SIGBREAK is a Win32 specific signal generated by ctrl-break. */ , SIGBREAK #endif #ifdef SIGHUP , SIGHUP #endif #ifdef SIGTERM , SIGTERM #endif }; /* A signal handler to support cancellation. */ static void signal_handler(int signum) { int i; apr_signal(signum, SIG_IGN); cancelled = TRUE; for (i = 0; i < sizeof(signal_map)/sizeof(signal_map[0]); ++i) if (signal_map[i] == signum) { signum_cancelled = i + 1; break; } } /* An svn_cancel_func_t callback. */ static svn_error_t * check_cancel(void *baton) { /* Cancel baton should be always NULL in command line client. */ SVN_ERR_ASSERT(baton == NULL); if (cancelled) return svn_error_create(SVN_ERR_CANCELLED, NULL, _("Caught signal")); else return SVN_NO_ERROR; } svn_cancel_func_t svn_cmdline__setup_cancellation_handler(void) { int i; for (i = 0; i < sizeof(signal_map)/sizeof(signal_map[0]); ++i) apr_signal(signal_map[i], signal_handler); #ifdef SIGPIPE /* Disable SIGPIPE generation for the platforms that have it. */ apr_signal(SIGPIPE, SIG_IGN); #endif #ifdef SIGXFSZ /* Disable SIGXFSZ generation for the platforms that have it, otherwise * working with large files when compiled against an APR that doesn't have * large file support will crash the program, which is uncool. */ apr_signal(SIGXFSZ, SIG_IGN); #endif return check_cancel; } void svn_cmdline__disable_cancellation_handler(void) { int i; for (i = 0; i < sizeof(signal_map)/sizeof(signal_map[0]); ++i) apr_signal(signal_map[i], SIG_DFL); } void svn_cmdline__cancellation_exit(void) { int signum = 0; if (cancelled && signum_cancelled) signum = signal_map[signum_cancelled - 1]; if (signum) { #ifndef WIN32 apr_signal(signum, SIG_DFL); /* No APR support for getpid() so cannot use apr_proc_kill(). */ kill(getpid(), signum); #endif } } diff --git a/contrib/subversion/subversion/libsvn_subr/iter.c b/contrib/subversion/subversion/libsvn_subr/iter.c index 6d04846e8378..1a303b511945 100644 --- a/contrib/subversion/subversion/libsvn_subr/iter.c +++ b/contrib/subversion/subversion/libsvn_subr/iter.c @@ -1,145 +1,171 @@ /* iter.c : iteration drivers * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include "svn_iter.h" #include "svn_pools.h" #include "private/svn_dep_compat.h" #include "svn_error_codes.h" static svn_error_t internal_break_error = { SVN_ERR_ITER_BREAK, /* APR status */ NULL, /* message */ NULL, /* child error */ NULL, /* pool */ __FILE__, /* file name */ __LINE__ /* line number */ }; struct hash_do_baton { void *baton; svn_iter_apr_hash_cb_t func; svn_error_t *err; apr_pool_t *iterpool; }; static int hash_do_callback(void *baton, const void *key, apr_ssize_t klen, const void *value) { struct hash_do_baton *hdb = baton; svn_pool_clear(hdb->iterpool); hdb->err = (*hdb->func)(hdb->baton, key, klen, (void *)value, hdb->iterpool); return hdb->err == SVN_NO_ERROR; } svn_error_t * svn_iter_apr_hash(svn_boolean_t *completed, apr_hash_t *hash, svn_iter_apr_hash_cb_t func, void *baton, apr_pool_t *pool) { struct hash_do_baton hdb; svn_boolean_t error_received; hdb.func = func; hdb.baton = baton; hdb.iterpool = svn_pool_create(pool); error_received = !apr_hash_do(hash_do_callback, &hdb, hash); svn_pool_destroy(hdb.iterpool); if (completed) *completed = !error_received; if (!error_received) return SVN_NO_ERROR; if (hdb.err->apr_err == SVN_ERR_ITER_BREAK && hdb.err != &internal_break_error) { /* Errors - except those created by svn_iter_break() - need to be cleared when not further propagated. */ svn_error_clear(hdb.err); hdb.err = SVN_NO_ERROR; } return hdb.err; } svn_error_t * svn_iter_apr_array(svn_boolean_t *completed, const apr_array_header_t *array, svn_iter_apr_array_cb_t func, void *baton, apr_pool_t *pool) { svn_error_t *err = SVN_NO_ERROR; apr_pool_t *iterpool = svn_pool_create(pool); int i; for (i = 0; (! err) && i < array->nelts; ++i) { void *item = array->elts + array->elt_size*i; svn_pool_clear(iterpool); err = (*func)(baton, item, iterpool); } if (completed) *completed = ! err; if (err && err->apr_err == SVN_ERR_ITER_BREAK) { if (err != &internal_break_error) /* Errors - except those created by svn_iter_break() - need to be cleared when not further propagated. */ svn_error_clear(err); err = SVN_NO_ERROR; } /* Clear iterpool, because callers may clear the error but have no way to clear the iterpool with potentially lots of allocated memory */ svn_pool_destroy(iterpool); return err; } /* Note: Although this is a "__" function, it is in the public ABI, so * we can never remove it or change its signature. */ svn_error_t * svn_iter__break(void) { return &internal_break_error; } + +#if !APR_VERSION_AT_LEAST(1, 5, 0) +const void *apr_hash_this_key(apr_hash_index_t *hi) +{ + const void *key; + + apr_hash_this((apr_hash_index_t *)hi, &key, NULL, NULL); + return key; +} + +apr_ssize_t apr_hash_this_key_len(apr_hash_index_t *hi) +{ + apr_ssize_t klen; + + apr_hash_this((apr_hash_index_t *)hi, NULL, &klen, NULL); + return klen; +} + +void *apr_hash_this_val(apr_hash_index_t *hi) +{ + void *val; + + apr_hash_this((apr_hash_index_t *)hi, NULL, NULL, &val); + return val; +} +#endif diff --git a/contrib/subversion/subversion/libsvn_subr/opt.c b/contrib/subversion/subversion/libsvn_subr/opt.c index a7439f7235ea..dca71eaf6593 100644 --- a/contrib/subversion/subversion/libsvn_subr/opt.c +++ b/contrib/subversion/subversion/libsvn_subr/opt.c @@ -1,1268 +1,1268 @@ /* * opt.c : option and argument parsing for Subversion command lines * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #define APR_WANT_STRFUNC #include #include #include #include #include #include #include #include #include "svn_hash.h" #include "svn_cmdline.h" #include "svn_version.h" #include "svn_types.h" #include "svn_opt.h" #include "svn_error.h" #include "svn_dirent_uri.h" #include "svn_path.h" #include "svn_utf.h" #include "svn_time.h" #include "svn_props.h" #include "svn_ctype.h" #include "private/svn_opt_private.h" #include "opt.h" #include "svn_private_config.h" /*** Code. ***/ const svn_opt_subcommand_desc3_t * svn_opt_get_canonical_subcommand3(const svn_opt_subcommand_desc3_t *table, const char *cmd_name) { int i = 0; if (cmd_name == NULL) return NULL; while (table[i].name) { int j; if (strcmp(cmd_name, table[i].name) == 0) return table + i; for (j = 0; (j < SVN_OPT_MAX_ALIASES) && table[i].aliases[j]; j++) if (strcmp(cmd_name, table[i].aliases[j]) == 0) return table + i; i++; } /* If we get here, there was no matching subcommand name or alias. */ return NULL; } const apr_getopt_option_t * svn_opt_get_option_from_code3(int code, const apr_getopt_option_t *option_table, const svn_opt_subcommand_desc3_t *command, apr_pool_t *pool) { apr_size_t i; for (i = 0; option_table[i].optch; i++) if (option_table[i].optch == code) { if (command) { int j; for (j = 0; ((j < SVN_OPT_MAX_OPTIONS) && command->desc_overrides[j].optch); j++) if (command->desc_overrides[j].optch == code) { apr_getopt_option_t *tmpopt = apr_palloc(pool, sizeof(*tmpopt)); *tmpopt = option_table[i]; tmpopt->description = command->desc_overrides[j].desc; return tmpopt; } } return &(option_table[i]); } return NULL; } /* Like svn_opt_get_option_from_code3(), but also, if CODE appears a second * time in OPTION_TABLE with a different name, then set *LONG_ALIAS to that * second name, else set it to NULL. */ static const apr_getopt_option_t * get_option_from_code3(const char **long_alias, int code, const apr_getopt_option_t *option_table, const svn_opt_subcommand_desc3_t *command, apr_pool_t *pool) { const apr_getopt_option_t *i; const apr_getopt_option_t *opt = svn_opt_get_option_from_code3(code, option_table, command, pool); /* Find a long alias in the table, if there is one. */ *long_alias = NULL; for (i = option_table; i->optch; i++) { if (i->optch == code && i->name != opt->name) { *long_alias = i->name; break; } } return opt; } /* Print an option OPT nicely into a STRING allocated in POOL. * If OPT has a single-character short form, then print OPT->name (if not * NULL) as an alias, else print LONG_ALIAS (if not NULL) as an alias. * If DOC is set, include the generic documentation string of OPT, * localized to the current locale if a translation is available. */ static void format_option(const char **string, const apr_getopt_option_t *opt, const char *long_alias, svn_boolean_t doc, apr_pool_t *pool) { char *opts; if (opt == NULL) { *string = "?"; return; } /* We have a valid option which may or may not have a "short name" (a single-character alias for the long option). */ if (opt->optch <= 255) opts = apr_psprintf(pool, "-%c [--%s]", opt->optch, opt->name); else if (long_alias) opts = apr_psprintf(pool, "--%s [--%s]", opt->name, long_alias); else opts = apr_psprintf(pool, "--%s", opt->name); if (opt->has_arg) opts = apr_pstrcat(pool, opts, _(" ARG"), SVN_VA_NULL); if (doc) opts = apr_psprintf(pool, "%-24s : %s", opts, _(opt->description)); *string = opts; } void svn_opt_format_option(const char **string, const apr_getopt_option_t *opt, svn_boolean_t doc, apr_pool_t *pool) { format_option(string, opt, NULL, doc, pool); } svn_boolean_t svn_opt_subcommand_takes_option4(const svn_opt_subcommand_desc3_t *command, int option_code, const int *global_options) { apr_size_t i; for (i = 0; i < SVN_OPT_MAX_OPTIONS; i++) if (command->valid_options[i] == option_code) return TRUE; if (global_options) for (i = 0; global_options[i]; i++) if (global_options[i] == option_code) return TRUE; return FALSE; } /* Print the canonical command name for CMD, and all its aliases, to STREAM. If HELP is set, print CMD's help string too, in which case obtain option usage from OPTIONS_TABLE. Include global and experimental options iff VERBOSE is true. */ static svn_error_t * print_command_info3(const svn_opt_subcommand_desc3_t *cmd, const apr_getopt_option_t *options_table, const int *global_options, svn_boolean_t help, svn_boolean_t verbose, apr_pool_t *pool, FILE *stream) { svn_boolean_t first_time; apr_size_t i; /* Print the canonical command name. */ SVN_ERR(svn_cmdline_fputs(cmd->name, stream, pool)); /* Print the list of aliases. */ first_time = TRUE; for (i = 0; i < SVN_OPT_MAX_ALIASES; i++) { if (cmd->aliases[i] == NULL) break; if (first_time) { SVN_ERR(svn_cmdline_fputs(" (", stream, pool)); first_time = FALSE; } else SVN_ERR(svn_cmdline_fputs(", ", stream, pool)); SVN_ERR(svn_cmdline_fputs(cmd->aliases[i], stream, pool)); } if (! first_time) SVN_ERR(svn_cmdline_fputs(")", stream, pool)); if (help) { const apr_getopt_option_t *option; const char *long_alias; svn_boolean_t have_options = FALSE; svn_boolean_t have_experimental = FALSE; SVN_ERR(svn_cmdline_fprintf(stream, pool, ": ")); for (i = 0; i < SVN_OPT_MAX_PARAGRAPHS && cmd->help[i]; i++) { SVN_ERR(svn_cmdline_fprintf(stream, pool, "%s", _(cmd->help[i]))); } /* Loop over all valid option codes attached to the subcommand */ for (i = 0; i < SVN_OPT_MAX_OPTIONS; i++) { if (cmd->valid_options[i]) { if (!have_options) { SVN_ERR(svn_cmdline_fputs(_("\nValid options:\n"), stream, pool)); have_options = TRUE; } /* convert each option code into an option */ option = get_option_from_code3(&long_alias, cmd->valid_options[i], options_table, cmd, pool); /* print the option's docstring */ if (option && option->description) { const char *optstr; if (option->name && strncmp(option->name, "x-", 2) == 0) { if (verbose && !have_experimental) SVN_ERR(svn_cmdline_fputs(_("\nExperimental options:\n"), stream, pool)); have_experimental = TRUE; if (!verbose) continue; } format_option(&optstr, option, long_alias, TRUE, pool); SVN_ERR(svn_cmdline_fprintf(stream, pool, " %s\n", optstr)); } } } /* And global options too */ if (verbose && global_options && *global_options) { SVN_ERR(svn_cmdline_fputs(_("\nGlobal options:\n"), stream, pool)); have_options = TRUE; for (i = 0; global_options[i]; i++) { /* convert each option code into an option */ option = get_option_from_code3(&long_alias, global_options[i], options_table, cmd, pool); /* print the option's docstring */ if (option && option->description) { const char *optstr; format_option(&optstr, option, long_alias, TRUE, pool); SVN_ERR(svn_cmdline_fprintf(stream, pool, " %s\n", optstr)); } } } - if (!verbose) + if (!verbose && global_options && *global_options) SVN_ERR(svn_cmdline_fputs(_("\n(Use '-v' to show global and experimental options.)\n"), stream, pool)); if (have_options) SVN_ERR(svn_cmdline_fprintf(stream, pool, "\n")); } return SVN_NO_ERROR; } /* The body for svn_opt_print_generic_help3() function with standard error * handling semantic. Handling of errors implemented at caller side. */ static svn_error_t * print_generic_help_body3(const char *header, const svn_opt_subcommand_desc3_t *cmd_table, const apr_getopt_option_t *opt_table, const char *footer, svn_boolean_t with_experimental, apr_pool_t *pool, FILE *stream) { svn_boolean_t have_experimental = FALSE; int i; if (header) SVN_ERR(svn_cmdline_fputs(header, stream, pool)); for (i = 0; cmd_table[i].name; i++) { if (strncmp(cmd_table[i].name, "x-", 2) == 0) { if (with_experimental && !have_experimental) SVN_ERR(svn_cmdline_fputs(_("\nExperimental subcommands:\n"), stream, pool)); have_experimental = TRUE; if (!with_experimental) continue; } SVN_ERR(svn_cmdline_fputs(" ", stream, pool)); SVN_ERR(print_command_info3(cmd_table + i, opt_table, NULL, FALSE, FALSE, pool, stream)); SVN_ERR(svn_cmdline_fputs("\n", stream, pool)); } if (have_experimental && !with_experimental) SVN_ERR(svn_cmdline_fputs(_("\n(Use '-v' to show experimental subcommands.)\n"), stream, pool)); SVN_ERR(svn_cmdline_fputs("\n", stream, pool)); if (footer) SVN_ERR(svn_cmdline_fputs(footer, stream, pool)); return SVN_NO_ERROR; } static void print_generic_help(const char *header, const svn_opt_subcommand_desc3_t *cmd_table, const apr_getopt_option_t *opt_table, const char *footer, svn_boolean_t with_experimental, apr_pool_t *pool, FILE *stream) { svn_error_t *err; err = print_generic_help_body3(header, cmd_table, opt_table, footer, with_experimental, pool, stream); /* Issue #3014: * Don't print anything on broken pipes. The pipe was likely * closed by the process at the other end. We expect that * process to perform error reporting as necessary. * * ### This assumes that there is only one error in a chain for * ### SVN_ERR_IO_PIPE_WRITE_ERROR. See svn_cmdline_fputs(). */ if (err && err->apr_err != SVN_ERR_IO_PIPE_WRITE_ERROR) svn_handle_error2(err, stderr, FALSE, "svn: "); svn_error_clear(err); } void svn_opt_print_generic_help3(const char *header, const svn_opt_subcommand_desc3_t *cmd_table, const apr_getopt_option_t *opt_table, const char *footer, apr_pool_t *pool, FILE *stream) { print_generic_help(header, cmd_table, opt_table, footer, TRUE, pool, stream); } /* The body of svn_opt_subcommand_help4(), which see. * * VERBOSE means show also the subcommand's global and experimental options. */ static void subcommand_help(const char *subcommand, const svn_opt_subcommand_desc3_t *table, const apr_getopt_option_t *options_table, const int *global_options, svn_boolean_t verbose, apr_pool_t *pool) { const svn_opt_subcommand_desc3_t *cmd = svn_opt_get_canonical_subcommand3(table, subcommand); svn_error_t *err; if (cmd) err = print_command_info3(cmd, options_table, global_options, TRUE, verbose, pool, stdout); else err = svn_cmdline_fprintf(stderr, pool, _("\"%s\": unknown command.\n\n"), subcommand); if (err) { /* Issue #3014: Don't print anything on broken pipes. */ if (err->apr_err != SVN_ERR_IO_PIPE_WRITE_ERROR) svn_handle_error2(err, stderr, FALSE, "svn: "); svn_error_clear(err); } } void svn_opt_subcommand_help4(const char *subcommand, const svn_opt_subcommand_desc3_t *table, const apr_getopt_option_t *options_table, const int *global_options, apr_pool_t *pool) { subcommand_help(subcommand, table, options_table, global_options, TRUE, pool); } /*** Parsing revision and date options. ***/ /** Parsing "X:Y"-style arguments. **/ /* If WORD matches one of the special revision descriptors, * case-insensitively, set *REVISION accordingly: * * - For "head", set REVISION->kind to svn_opt_revision_head. * * - For "prev", set REVISION->kind to svn_opt_revision_previous. * * - For "base", set REVISION->kind to svn_opt_revision_base. * * - For "committed", set REVISION->kind to svn_opt_revision_committed. * * If match, return 0, else return -1 and don't touch REVISION. */ static int revision_from_word(svn_opt_revision_t *revision, const char *word) { if (svn_cstring_casecmp(word, "head") == 0) { revision->kind = svn_opt_revision_head; } else if (svn_cstring_casecmp(word, "prev") == 0) { revision->kind = svn_opt_revision_previous; } else if (svn_cstring_casecmp(word, "base") == 0) { revision->kind = svn_opt_revision_base; } else if (svn_cstring_casecmp(word, "committed") == 0) { revision->kind = svn_opt_revision_committed; } else return -1; return 0; } /* Parse one revision specification. Return pointer to character after revision, or NULL if the revision is invalid. Modifies str, so make sure to pass a copy of anything precious. Uses POOL for temporary allocation. */ static char *parse_one_rev(svn_opt_revision_t *revision, char *str, apr_pool_t *pool) { char *end, save; /* Allow any number of 'r's to prefix a revision number, because that way if a script pastes svn output into another svn command (like "svn log -r${REV_COPIED_FROM_OUTPUT}"), it'll Just Work, even when compounded. As it happens, none of our special revision words begins with "r". If any ever do, then this code will have to get smarter. Incidentally, this allows "r{DATE}". We could avoid that with some trivial code rearrangement, but it's not clear what would be gained by doing so. */ while (*str == 'r') str++; if (*str == '{') { svn_boolean_t matched; apr_time_t tm; svn_error_t *err; /* Brackets denote a date. */ str++; end = strchr(str, '}'); if (!end) return NULL; *end = '\0'; err = svn_parse_date(&matched, &tm, str, apr_time_now(), pool); if (err) { svn_error_clear(err); return NULL; } if (!matched) return NULL; revision->kind = svn_opt_revision_date; revision->value.date = tm; return end + 1; } else if (svn_ctype_isdigit(*str)) { /* It's a number. */ end = str + 1; while (svn_ctype_isdigit(*end)) end++; save = *end; *end = '\0'; revision->kind = svn_opt_revision_number; revision->value.number = SVN_STR_TO_REV(str); *end = save; return end; } else if (svn_ctype_isalpha(*str)) { end = str + 1; while (svn_ctype_isalpha(*end)) end++; save = *end; *end = '\0'; if (revision_from_word(revision, str) != 0) return NULL; *end = save; return end; } else return NULL; } int svn_opt_parse_revision(svn_opt_revision_t *start_revision, svn_opt_revision_t *end_revision, const char *arg, apr_pool_t *pool) { char *left_rev, *right_rev, *end; /* Operate on a copy of the argument. */ left_rev = apr_pstrdup(pool, arg); right_rev = parse_one_rev(start_revision, left_rev, pool); if (right_rev && *right_rev == ':') { right_rev++; end = parse_one_rev(end_revision, right_rev, pool); if (!end || *end != '\0') return -1; } else if (!right_rev || *right_rev != '\0') return -1; return 0; } int svn_opt_parse_revision_to_range(apr_array_header_t *opt_ranges, const char *arg, apr_pool_t *pool) { svn_opt_revision_range_t *range = apr_palloc(pool, sizeof(*range)); range->start.kind = svn_opt_revision_unspecified; range->end.kind = svn_opt_revision_unspecified; if (svn_opt_parse_revision(&(range->start), &(range->end), arg, pool) == -1) return -1; APR_ARRAY_PUSH(opt_ranges, svn_opt_revision_range_t *) = range; return 0; } svn_error_t * svn_opt_resolve_revisions(svn_opt_revision_t *peg_rev, svn_opt_revision_t *op_rev, svn_boolean_t is_url, svn_boolean_t notice_local_mods, apr_pool_t *pool) { if (peg_rev->kind == svn_opt_revision_unspecified) { if (is_url) { peg_rev->kind = svn_opt_revision_head; } else { if (notice_local_mods) peg_rev->kind = svn_opt_revision_working; else peg_rev->kind = svn_opt_revision_base; } } if (op_rev->kind == svn_opt_revision_unspecified) *op_rev = *peg_rev; return SVN_NO_ERROR; } const char * svn_opt__revision_to_string(const svn_opt_revision_t *revision, apr_pool_t *result_pool) { switch (revision->kind) { case svn_opt_revision_unspecified: return "unspecified"; case svn_opt_revision_number: return apr_psprintf(result_pool, "%ld", revision->value.number); case svn_opt_revision_date: /* ### svn_time_to_human_cstring()? */ return svn_time_to_cstring(revision->value.date, result_pool); case svn_opt_revision_committed: return "committed"; case svn_opt_revision_previous: return "previous"; case svn_opt_revision_base: return "base"; case svn_opt_revision_working: return "working"; case svn_opt_revision_head: return "head"; default: return NULL; } } svn_opt_revision_range_t * svn_opt__revision_range_create(const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, apr_pool_t *result_pool) { svn_opt_revision_range_t *range = apr_palloc(result_pool, sizeof(*range)); range->start = *start_revision; range->end = *end_revision; return range; } svn_opt_revision_range_t * svn_opt__revision_range_from_revnums(svn_revnum_t start_revnum, svn_revnum_t end_revnum, apr_pool_t *result_pool) { svn_opt_revision_range_t *range = apr_palloc(result_pool, sizeof(*range)); range->start.kind = svn_opt_revision_number; range->start.value.number = start_revnum; range->end.kind = svn_opt_revision_number; range->end.value.number = end_revnum; return range; } /*** Parsing arguments. ***/ #define DEFAULT_ARRAY_SIZE 5 /* Copy STR into POOL and push the copy onto ARRAY. */ static void array_push_str(apr_array_header_t *array, const char *str, apr_pool_t *pool) { /* ### Not sure if this function is still necessary. It used to convert str to svn_stringbuf_t * and push it, but now it just dups str in pool and pushes the copy. So its only effect is transfer str's lifetime to pool. Is that something callers are depending on? */ APR_ARRAY_PUSH(array, const char *) = apr_pstrdup(pool, str); } void svn_opt_push_implicit_dot_target(apr_array_header_t *targets, apr_pool_t *pool) { if (targets->nelts == 0) APR_ARRAY_PUSH(targets, const char *) = ""; /* Ha! "", not ".", is the canonical */ assert(targets->nelts); } svn_error_t * svn_opt_parse_num_args(apr_array_header_t **args_p, apr_getopt_t *os, int num_args, apr_pool_t *pool) { int i; apr_array_header_t *args = apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *)); /* loop for num_args and add each arg to the args array */ for (i = 0; i < num_args; i++) { if (os->ind >= os->argc) { return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL); } array_push_str(args, os->argv[os->ind++], pool); } *args_p = args; return SVN_NO_ERROR; } svn_error_t * svn_opt_parse_all_args(apr_array_header_t **args_p, apr_getopt_t *os, apr_pool_t *pool) { apr_array_header_t *args = apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *)); if (os->ind > os->argc) { return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0, NULL); } while (os->ind < os->argc) { array_push_str(args, os->argv[os->ind++], pool); } *args_p = args; return SVN_NO_ERROR; } svn_error_t * svn_opt_parse_path(svn_opt_revision_t *rev, const char **truepath, const char *path /* UTF-8! */, apr_pool_t *pool) { const char *peg_rev; SVN_ERR(svn_opt__split_arg_at_peg_revision(truepath, &peg_rev, path, pool)); /* Parse the peg revision, if one was found */ if (strlen(peg_rev)) { int ret; svn_opt_revision_t start_revision, end_revision; end_revision.kind = svn_opt_revision_unspecified; if (peg_rev[1] == '\0') /* looking at empty peg revision */ { ret = 0; start_revision.kind = svn_opt_revision_unspecified; start_revision.value.number = 0; } else /* looking at non-empty peg revision */ { const char *rev_str = &peg_rev[1]; /* URLs get treated differently from wc paths. */ if (svn_path_is_url(path)) { /* URLs are URI-encoded, so we look for dates with URI-encoded delimiters. */ size_t rev_len = strlen(rev_str); if (rev_len > 6 && rev_str[0] == '%' && rev_str[1] == '7' && (rev_str[2] == 'B' || rev_str[2] == 'b') && rev_str[rev_len-3] == '%' && rev_str[rev_len-2] == '7' && (rev_str[rev_len-1] == 'D' || rev_str[rev_len-1] == 'd')) { rev_str = svn_path_uri_decode(rev_str, pool); } } ret = svn_opt_parse_revision(&start_revision, &end_revision, rev_str, pool); } if (ret || end_revision.kind != svn_opt_revision_unspecified) { /* If an svn+ssh URL was used and it contains only one @, * provide an error message that presents a possible solution * to the parsing error (issue #2349). */ if (strncmp(path, "svn+ssh://", 10) == 0) { const char *at; at = strchr(path, '@'); if (at && strrchr(path, '@') == at) return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Syntax error parsing peg revision " "'%s'; did you mean '%s@'?"), &peg_rev[1], path); } return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Syntax error parsing peg revision '%s'"), &peg_rev[1]); } rev->kind = start_revision.kind; rev->value = start_revision.value; } else { /* Didn't find a peg revision. */ rev->kind = svn_opt_revision_unspecified; } return SVN_NO_ERROR; } /* Note: This is substantially copied into svn_client_args_to_target_array() in * order to move to libsvn_client while maintaining backward compatibility. */ svn_error_t * svn_opt__args_to_target_array(apr_array_header_t **targets_p, apr_getopt_t *os, const apr_array_header_t *known_targets, apr_pool_t *pool) { int i; svn_error_t *err = SVN_NO_ERROR; apr_array_header_t *input_targets = apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *)); apr_array_header_t *output_targets = apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *)); /* Step 1: create a master array of targets that are in UTF-8 encoding, and come from concatenating the targets left by apr_getopt, plus any extra targets (e.g., from the --targets switch.) */ for (; os->ind < os->argc; os->ind++) { /* The apr_getopt targets are still in native encoding. */ const char *raw_target = os->argv[os->ind]; SVN_ERR(svn_utf_cstring_to_utf8 ((const char **) apr_array_push(input_targets), raw_target, pool)); } if (known_targets) { for (i = 0; i < known_targets->nelts; i++) { /* The --targets array have already been converted to UTF-8, because we needed to split up the list with svn_cstring_split. */ const char *utf8_target = APR_ARRAY_IDX(known_targets, i, const char *); APR_ARRAY_PUSH(input_targets, const char *) = utf8_target; } } /* Step 2: process each target. */ for (i = 0; i < input_targets->nelts; i++) { const char *utf8_target = APR_ARRAY_IDX(input_targets, i, const char *); const char *true_target; const char *target; /* after all processing is finished */ const char *peg_rev; /* * This is needed so that the target can be properly canonicalized, * otherwise the canonicalization does not treat a ".@BASE" as a "." * with a BASE peg revision, and it is not canonicalized to "@BASE". * If any peg revision exists, it is appended to the final * canonicalized path or URL. Do not use svn_opt_parse_path() * because the resulting peg revision is a structure that would have * to be converted back into a string. Converting from a string date * to the apr_time_t field in the svn_opt_revision_value_t and back to * a string would not necessarily preserve the exact bytes of the * input date, so its easier just to keep it in string form. */ SVN_ERR(svn_opt__split_arg_at_peg_revision(&true_target, &peg_rev, utf8_target, pool)); /* URLs and wc-paths get treated differently. */ if (svn_path_is_url(true_target)) { SVN_ERR(svn_opt__arg_canonicalize_url(&true_target, true_target, pool)); } else /* not a url, so treat as a path */ { const char *base_name; SVN_ERR(svn_opt__arg_canonicalize_path(&true_target, true_target, pool)); /* If the target has the same name as a Subversion working copy administrative dir, skip it. */ base_name = svn_dirent_basename(true_target, pool); /* FIXME: The canonical list of administrative directory names is maintained in libsvn_wc/adm_files.c:svn_wc_set_adm_dir(). That list can't be used here, because that use would create a circular dependency between libsvn_wc and libsvn_subr. Make sure changes to the lists are always synchronized! */ if (0 == strcmp(base_name, ".svn") || 0 == strcmp(base_name, "_svn")) { err = svn_error_createf(SVN_ERR_RESERVED_FILENAME_SPECIFIED, err, _("'%s' ends in a reserved name"), utf8_target); continue; } } target = apr_pstrcat(pool, true_target, peg_rev, SVN_VA_NULL); APR_ARRAY_PUSH(output_targets, const char *) = target; } /* kff todo: need to remove redundancies from targets before passing it to the cmd_func. */ *targets_p = output_targets; return err; } svn_error_t * svn_opt_parse_revprop(apr_hash_t **revprop_table_p, const char *revprop_spec, apr_pool_t *pool) { const char *sep, *propname; svn_string_t *propval; if (! *revprop_spec) return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, _("Revision property pair is empty")); if (! *revprop_table_p) *revprop_table_p = apr_hash_make(pool); sep = strchr(revprop_spec, '='); if (sep) { propname = apr_pstrndup(pool, revprop_spec, sep - revprop_spec); SVN_ERR(svn_utf_cstring_to_utf8(&propname, propname, pool)); propval = svn_string_create(sep + 1, pool); } else { SVN_ERR(svn_utf_cstring_to_utf8(&propname, revprop_spec, pool)); propval = svn_string_create_empty(pool); } if (!svn_prop_name_is_valid(propname)) return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL, _("'%s' is not a valid Subversion property name"), propname); svn_hash_sets(*revprop_table_p, propname, propval); return SVN_NO_ERROR; } svn_error_t * svn_opt__split_arg_at_peg_revision(const char **true_target, const char **peg_revision, const char *utf8_target, apr_pool_t *pool) { const char *peg_start = NULL; /* pointer to the peg revision, if any */ const char *ptr; for (ptr = (utf8_target + strlen(utf8_target) - 1); ptr >= utf8_target; --ptr) { /* If we hit a path separator, stop looking. This is OK only because our revision specifiers can't contain '/'. */ if (*ptr == '/') break; if (*ptr == '@') { peg_start = ptr; break; } } if (peg_start) { *true_target = apr_pstrmemdup(pool, utf8_target, ptr - utf8_target); if (peg_revision) *peg_revision = apr_pstrdup(pool, peg_start); } else { *true_target = utf8_target; if (peg_revision) *peg_revision = ""; } return SVN_NO_ERROR; } svn_error_t * svn_opt__arg_canonicalize_url(const char **url_out, const char *url_in, apr_pool_t *pool) { const char *target; /* Convert to URI. */ target = svn_path_uri_from_iri(url_in, pool); /* Auto-escape some ASCII characters. */ target = svn_path_uri_autoescape(target, pool); #if '/' != SVN_PATH_LOCAL_SEPARATOR /* Allow using file:///C:\users\me/repos on Windows, like we did in 1.6 */ if (strchr(target, SVN_PATH_LOCAL_SEPARATOR)) { char *p = apr_pstrdup(pool, target); target = p; /* Convert all local-style separators to the canonical ones. */ for (; *p != '\0'; ++p) if (*p == SVN_PATH_LOCAL_SEPARATOR) *p = '/'; } #endif /* Verify that no backpaths are present in the URL. */ if (svn_path_is_backpath_present(target)) return svn_error_createf(SVN_ERR_BAD_URL, 0, _("URL '%s' contains a '..' element"), target); /* Strip any trailing '/' and collapse other redundant elements. */ target = svn_uri_canonicalize(target, pool); *url_out = target; return SVN_NO_ERROR; } svn_error_t * svn_opt__arg_canonicalize_path(const char **path_out, const char *path_in, apr_pool_t *pool) { const char *apr_target; char *truenamed_target; /* APR-encoded */ apr_status_t apr_err; /* canonicalize case, and change all separators to '/'. */ SVN_ERR(svn_path_cstring_from_utf8(&apr_target, path_in, pool)); apr_err = apr_filepath_merge(&truenamed_target, "", apr_target, APR_FILEPATH_TRUENAME, pool); if (!apr_err) /* We have a canonicalized APR-encoded target now. */ apr_target = truenamed_target; else if (APR_STATUS_IS_ENOENT(apr_err)) /* It's okay for the file to not exist, that just means we have to accept the case given to the client. We'll use the original APR-encoded target. */ ; else return svn_error_createf(apr_err, NULL, _("Error resolving case of '%s'"), svn_dirent_local_style(path_in, pool)); /* convert back to UTF-8. */ SVN_ERR(svn_path_cstring_to_utf8(path_out, apr_target, pool)); *path_out = svn_dirent_canonicalize(*path_out, pool); return SVN_NO_ERROR; } svn_error_t * svn_opt__print_version_info(const char *pgm_name, const char *footer, const svn_version_extended_t *info, svn_boolean_t quiet, svn_boolean_t verbose, apr_pool_t *pool) { if (quiet) return svn_cmdline_printf(pool, "%s\n", SVN_VER_NUMBER); SVN_ERR(svn_cmdline_printf(pool, _("%s, version %s\n" " compiled on %s\n\n"), pgm_name, SVN_VERSION, svn_version_ext_build_host(info))); SVN_ERR(svn_cmdline_printf(pool, "%s\n", svn_version_ext_copyright(info))); if (footer) { SVN_ERR(svn_cmdline_printf(pool, "%s\n", footer)); } if (verbose) { const apr_array_header_t *libs; SVN_ERR(svn_cmdline_fputs(_("System information:\n\n"), stdout, pool)); SVN_ERR(svn_cmdline_printf(pool, _("* running on %s\n"), svn_version_ext_runtime_host(info))); if (svn_version_ext_runtime_osname(info)) { SVN_ERR(svn_cmdline_printf(pool, _(" - %s\n"), svn_version_ext_runtime_osname(info))); } libs = svn_version_ext_linked_libs(info); if (libs && libs->nelts) { const svn_version_ext_linked_lib_t *lib; int i; SVN_ERR(svn_cmdline_fputs(_("* linked dependencies:\n"), stdout, pool)); for (i = 0; i < libs->nelts; ++i) { lib = &APR_ARRAY_IDX(libs, i, svn_version_ext_linked_lib_t); if (lib->runtime_version) SVN_ERR(svn_cmdline_printf(pool, " - %s %s (compiled with %s)\n", lib->name, lib->runtime_version, lib->compiled_version)); else SVN_ERR(svn_cmdline_printf(pool, " - %s %s (static)\n", lib->name, lib->compiled_version)); } } libs = svn_version_ext_loaded_libs(info); if (libs && libs->nelts) { const svn_version_ext_loaded_lib_t *lib; int i; SVN_ERR(svn_cmdline_fputs(_("* loaded shared libraries:\n"), stdout, pool)); for (i = 0; i < libs->nelts; ++i) { lib = &APR_ARRAY_IDX(libs, i, svn_version_ext_loaded_lib_t); if (lib->version) SVN_ERR(svn_cmdline_printf(pool, " - %s (%s)\n", lib->name, lib->version)); else SVN_ERR(svn_cmdline_printf(pool, " - %s\n", lib->name)); } } } return SVN_NO_ERROR; } svn_error_t * svn_opt_print_help5(apr_getopt_t *os, const char *pgm_name, svn_boolean_t print_version, svn_boolean_t quiet, svn_boolean_t verbose, const char *version_footer, const char *header, const svn_opt_subcommand_desc3_t *cmd_table, const apr_getopt_option_t *option_table, const int *global_options, const char *footer, apr_pool_t *pool) { apr_array_header_t *targets = NULL; if (os) SVN_ERR(svn_opt_parse_all_args(&targets, os, pool)); if (os && targets->nelts) /* help on subcommand(s) requested */ { int i; for (i = 0; i < targets->nelts; i++) { subcommand_help(APR_ARRAY_IDX(targets, i, const char *), cmd_table, option_table, global_options, verbose, pool); } } else if (print_version) /* just --version */ { SVN_ERR(svn_opt__print_version_info(pgm_name, version_footer, svn_version_extended(verbose, pool), quiet, verbose, pool)); } else if (os && !targets->nelts) /* `-h', `--help', or `help' */ print_generic_help(header, cmd_table, option_table, footer, verbose, pool, stdout); else /* unknown option or cmd */ SVN_ERR(svn_cmdline_fprintf(stderr, pool, _("Type '%s help' for usage.\n"), pgm_name)); return SVN_NO_ERROR; } diff --git a/contrib/subversion/subversion/libsvn_subr/version.c b/contrib/subversion/subversion/libsvn_subr/version.c index 4cbbe2d7199d..1131b1ec0fb6 100644 --- a/contrib/subversion/subversion/libsvn_subr/version.c +++ b/contrib/subversion/subversion/libsvn_subr/version.c @@ -1,305 +1,305 @@ /* * version.c: library version number and utilities * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include "svn_error.h" #include "svn_version.h" #include "sysinfo.h" #include "svn_private_config.h" #include "private/svn_subr_private.h" const svn_version_t * svn_subr_version(void) { SVN_VERSION_BODY; } svn_boolean_t svn_ver_compatible(const svn_version_t *my_version, const svn_version_t *lib_version) { /* With normal development builds the matching rules are stricter that for release builds, to avoid inadvertantly using the wrong libraries. For backward compatibility testing of development builds one can use --disable-full-version-match to cause a development build to use the release build rules. This allows the libraries from the newer development build to be used by an older development build. */ #ifndef SVN_DISABLE_FULL_VERSION_MATCH if (lib_version->tag[0] != '\0') /* Development library; require exact match. */ return svn_ver_equal(my_version, lib_version); else if (my_version->tag[0] != '\0') /* Development client; must be newer than the library and have the same major and minor version. */ return (my_version->major == lib_version->major && my_version->minor == lib_version->minor && my_version->patch > lib_version->patch); #endif /* General compatibility rules for released versions. */ return (my_version->major == lib_version->major && my_version->minor <= lib_version->minor); } svn_boolean_t svn_ver_equal(const svn_version_t *my_version, const svn_version_t *lib_version) { return (my_version->major == lib_version->major && my_version->minor == lib_version->minor && my_version->patch == lib_version->patch && 0 == strcmp(my_version->tag, lib_version->tag)); } svn_error_t * svn_ver_check_list2(const svn_version_t *my_version, const svn_version_checklist_t *checklist, svn_boolean_t (*comparator)(const svn_version_t *, const svn_version_t *)) { svn_error_t *err = SVN_NO_ERROR; int i; #ifdef SVN_DISABLE_FULL_VERSION_MATCH /* Force more relaxed check for --disable-full-version-match. */ comparator = svn_ver_compatible; #endif for (i = 0; checklist[i].label != NULL; ++i) { const svn_version_t *lib_version = checklist[i].version_query(); if (!comparator(my_version, lib_version)) err = svn_error_createf(SVN_ERR_VERSION_MISMATCH, err, _("Version mismatch in '%s'%s:" " found %d.%d.%d%s," " expected %d.%d.%d%s"), checklist[i].label, comparator == svn_ver_equal ? _(" (expecting equality)") : comparator == svn_ver_compatible ? _(" (expecting compatibility)") : "", lib_version->major, lib_version->minor, lib_version->patch, lib_version->tag, my_version->major, my_version->minor, my_version->patch, my_version->tag); } return err; } struct svn_version_extended_t { const char *build_date; /* Compilation date */ const char *build_time; /* Compilation time */ const char *build_host; /* Build canonical host name */ const char *copyright; /* Copyright notice (localized) */ const char *runtime_host; /* Runtime canonical host name */ const char *runtime_osname; /* Running OS release name */ /* Array of svn_version_ext_linked_lib_t describing dependent libraries. */ const apr_array_header_t *linked_libs; /* Array of svn_version_ext_loaded_lib_t describing loaded shared libraries. */ const apr_array_header_t *loaded_libs; }; const svn_version_extended_t * svn_version_extended(svn_boolean_t verbose, apr_pool_t *pool) { svn_version_extended_t *info = apr_pcalloc(pool, sizeof(*info)); info->build_date = NULL; info->build_time = NULL; info->build_host = SVN_BUILD_HOST; info->copyright = apr_pstrdup - (pool, _("Copyright (C) 2020 The Apache Software Foundation.\n" + (pool, _("Copyright (C) 2021 The Apache Software Foundation.\n" "This software consists of contributions made by many people;\n" "see the NOTICE file for more information.\n" "Subversion is open source software, see " "http://subversion.apache.org/\n")); if (verbose) { info->runtime_host = svn_sysinfo__canonical_host(pool); info->runtime_osname = svn_sysinfo__release_name(pool); info->linked_libs = svn_sysinfo__linked_libs(pool); info->loaded_libs = svn_sysinfo__loaded_libs(pool); } return info; } const char * svn_version_ext_build_date(const svn_version_extended_t *ext_info) { return ext_info->build_date; } const char * svn_version_ext_build_time(const svn_version_extended_t *ext_info) { return ext_info->build_time; } const char * svn_version_ext_build_host(const svn_version_extended_t *ext_info) { return ext_info->build_host; } const char * svn_version_ext_copyright(const svn_version_extended_t *ext_info) { return ext_info->copyright; } const char * svn_version_ext_runtime_host(const svn_version_extended_t *ext_info) { return ext_info->runtime_host; } const char * svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info) { return ext_info->runtime_osname; } const apr_array_header_t * svn_version_ext_linked_libs(const svn_version_extended_t *ext_info) { return ext_info->linked_libs; } const apr_array_header_t * svn_version_ext_loaded_libs(const svn_version_extended_t *ext_info) { return ext_info->loaded_libs; } svn_error_t * svn_version__parse_version_string(svn_version_t **version_p, const char *version_string, apr_pool_t *result_pool) { svn_error_t *err; svn_version_t *version; apr_array_header_t *pieces = svn_cstring_split(version_string, ".", FALSE, result_pool); if ((pieces->nelts < 2) || (pieces->nelts > 3)) return svn_error_createf(SVN_ERR_MALFORMED_VERSION_STRING, NULL, _("Failed to parse version number string '%s'"), version_string); version = apr_pcalloc(result_pool, sizeof(*version)); version->tag = ""; /* Parse the major and minor integers strictly. */ err = svn_cstring_atoi(&(version->major), APR_ARRAY_IDX(pieces, 0, const char *)); if (err) return svn_error_createf(SVN_ERR_MALFORMED_VERSION_STRING, err, _("Failed to parse version number string '%s'"), version_string); err = svn_cstring_atoi(&(version->minor), APR_ARRAY_IDX(pieces, 1, const char *)); if (err) return svn_error_createf(SVN_ERR_MALFORMED_VERSION_STRING, err, _("Failed to parse version number string '%s'"), version_string); /* If there's a third component, we'll parse it, too. But we don't require that it be present. */ if (pieces->nelts == 3) { const char *piece = APR_ARRAY_IDX(pieces, 2, const char *); char *hyphen = strchr(piece, '-'); if (hyphen) { version->tag = apr_pstrdup(result_pool, hyphen + 1); *hyphen = '\0'; } err = svn_cstring_atoi(&(version->patch), piece); if (err) return svn_error_createf(SVN_ERR_MALFORMED_VERSION_STRING, err, _("Failed to parse version number string '%s'" ), version_string); } if (version->major < 0 || version->minor < 0 || version->patch < 0) return svn_error_createf(SVN_ERR_MALFORMED_VERSION_STRING, err, _("Failed to parse version number string '%s'"), version_string); *version_p = version; return SVN_NO_ERROR; } svn_boolean_t svn_version__at_least(const svn_version_t *version, int major, int minor, int patch) { /* Compare major versions. */ if (version->major < major) return FALSE; if (version->major > major) return TRUE; /* Major versions are the same. Compare minor versions. */ if (version->minor < minor) return FALSE; if (version->minor > minor) return TRUE; /* Major and minor versions are the same. Compare patch versions. */ if (version->patch < patch) return FALSE; if (version->patch > patch) return TRUE; /* Major, minor, and patch versions are identical matches. But tags in our schema are always used for versions not yet quite at the given patch level. */ if (version->tag && version->tag[0]) return FALSE; return TRUE; } diff --git a/contrib/subversion/subversion/libsvn_wc/wc-metadata.h b/contrib/subversion/subversion/libsvn_wc/wc-metadata.h index 75e7503c3f3f..b0f72dfaec99 100644 --- a/contrib/subversion/subversion/libsvn_wc/wc-metadata.h +++ b/contrib/subversion/subversion/libsvn_wc/wc-metadata.h @@ -1,298 +1,298 @@ /* This file is automatically generated from wc-metadata.sql and token-map.h. * Do not edit this file -- edit the source and rerun gen-make.py */ #define STMT_CREATE_SCHEMA 0 #define STMT_0_INFO {"STMT_CREATE_SCHEMA", NULL} #define STMT_0 \ "CREATE TABLE REPOSITORY ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " root TEXT UNIQUE NOT NULL, " \ " uuid TEXT NOT NULL " \ " ); " \ "CREATE INDEX I_UUID ON REPOSITORY (uuid); " \ "CREATE INDEX I_ROOT ON REPOSITORY (root); " \ "CREATE TABLE WCROOT ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " local_abspath TEXT UNIQUE " \ " ); " \ "CREATE UNIQUE INDEX I_LOCAL_ABSPATH ON WCROOT (local_abspath); " \ "CREATE TABLE PRISTINE ( " \ " checksum TEXT NOT NULL PRIMARY KEY, " \ " compression INTEGER, " \ " size INTEGER NOT NULL, " \ " refcount INTEGER NOT NULL, " \ " md5_checksum TEXT NOT NULL " \ " ); " \ "CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \ "CREATE TABLE ACTUAL_NODE ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " properties BLOB, " \ " conflict_old TEXT, " \ " conflict_new TEXT, " \ " conflict_working TEXT, " \ " prop_reject TEXT, " \ " changelist TEXT, " \ " text_mod TEXT, " \ " tree_conflict_data TEXT, " \ " conflict_data BLOB, " \ " older_checksum TEXT REFERENCES PRISTINE (checksum), " \ " left_checksum TEXT REFERENCES PRISTINE (checksum), " \ " right_checksum TEXT REFERENCES PRISTINE (checksum), " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ " local_relpath); " \ "CREATE TABLE LOCK ( " \ " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \ " repos_relpath TEXT NOT NULL, " \ " lock_token TEXT NOT NULL, " \ " lock_owner TEXT, " \ " lock_comment TEXT, " \ " lock_date INTEGER, " \ " PRIMARY KEY (repos_id, repos_relpath) " \ " ); " \ "CREATE TABLE WORK_QUEUE ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " work BLOB NOT NULL " \ " ); " \ "CREATE TABLE WC_LOCK ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_dir_relpath TEXT NOT NULL, " \ " locked_levels INTEGER NOT NULL DEFAULT -1, " \ " PRIMARY KEY (wc_id, local_dir_relpath) " \ " ); " \ "CREATE TABLE NODES ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " op_depth INTEGER NOT NULL, " \ " parent_relpath TEXT, " \ " repos_id INTEGER REFERENCES REPOSITORY (id), " \ " repos_path TEXT, " \ " revision INTEGER, " \ " presence TEXT NOT NULL, " \ " moved_here INTEGER, " \ " moved_to TEXT, " \ " kind TEXT NOT NULL, " \ " properties BLOB, " \ " depth TEXT, " \ " checksum TEXT REFERENCES PRISTINE (checksum), " \ " symlink_target TEXT, " \ " changed_revision INTEGER, " \ " changed_date INTEGER, " \ " changed_author TEXT, " \ " translated_size INTEGER, " \ " last_mod_time INTEGER, " \ " dav_cache BLOB, " \ " file_external INTEGER, " \ " inherited_props BLOB, " \ " PRIMARY KEY (wc_id, local_relpath, op_depth) " \ " ); " \ "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ " local_relpath, op_depth); " \ "CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); " \ "CREATE VIEW NODES_CURRENT AS " \ " SELECT * FROM nodes AS n " \ " WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 " \ " WHERE n2.wc_id = n.wc_id " \ " AND n2.local_relpath = n.local_relpath); " \ "CREATE VIEW NODES_BASE AS " \ " SELECT * FROM nodes " \ " WHERE op_depth = 0; " \ "CREATE TRIGGER nodes_insert_trigger " \ "AFTER INSERT ON nodes " \ "WHEN NEW.checksum IS NOT NULL " \ "BEGIN " \ " UPDATE pristine SET refcount = refcount + 1 " \ " WHERE checksum = NEW.checksum; " \ "END; " \ "CREATE TRIGGER nodes_delete_trigger " \ "AFTER DELETE ON nodes " \ "WHEN OLD.checksum IS NOT NULL " \ "BEGIN " \ " UPDATE pristine SET refcount = refcount - 1 " \ " WHERE checksum = OLD.checksum; " \ "END; " \ "CREATE TRIGGER nodes_update_checksum_trigger " \ "AFTER UPDATE OF checksum ON nodes " \ "WHEN NEW.checksum IS NOT OLD.checksum " \ "BEGIN " \ " UPDATE pristine SET refcount = refcount + 1 " \ " WHERE checksum = NEW.checksum; " \ " UPDATE pristine SET refcount = refcount - 1 " \ " WHERE checksum = OLD.checksum; " \ "END; " \ "CREATE TABLE EXTERNALS ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT NOT NULL, " \ " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \ " presence TEXT NOT NULL, " \ " kind TEXT NOT NULL, " \ " def_local_relpath TEXT NOT NULL, " \ " def_repos_relpath TEXT NOT NULL, " \ " def_operational_revision TEXT, " \ " def_revision TEXT, " \ " PRIMARY KEY (wc_id, local_relpath) " \ "); " \ "CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, " \ " def_local_relpath, " \ " local_relpath); " \ "PRAGMA user_version = " \ APR_STRINGIFY(SVN_WC__VERSION) \ "; " \ "" #define STMT_INSTALL_SCHEMA_STATISTICS 1 #define STMT_1_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL} #define STMT_1 \ "ANALYZE sqlite_master; " \ "DELETE FROM sqlite_stat1 " \ "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK', 'EXTERNALS'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('NODES', 'I_NODES_MOVED', '8000 8000 1 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('EXTERNALS','sqlite_autoindex_EXTERNALS_1', '100 100 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('EXTERNALS','I_EXTERNALS_DEFINED', '100 100 3 1'); " \ "ANALYZE sqlite_master; " \ "" #define STMT_UPGRADE_TO_30 2 #define STMT_2_INFO {"STMT_UPGRADE_TO_30", NULL} #define STMT_2 \ "CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \ "ON NODES (wc_id, moved_to, op_depth); " \ "CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \ - "UPDATE nodes SET presence = \"server-excluded\" WHERE presence = \"absent\"; " \ + "UPDATE nodes SET presence = 'server-excluded' WHERE presence = 'absent'; " \ "UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \ "" #define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 3 #define STMT_3_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL} #define STMT_3 \ "SELECT wc_id, local_relpath, " \ " conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \ "FROM actual_node " \ "WHERE conflict_old IS NOT NULL " \ " OR conflict_working IS NOT NULL " \ " OR conflict_new IS NOT NULL " \ " OR prop_reject IS NOT NULL " \ " OR tree_conflict_data IS NOT NULL " \ "ORDER by wc_id, local_relpath " \ "" #define STMT_UPGRADE_30_SET_CONFLICT 4 #define STMT_4_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL} #define STMT_4 \ "UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \ " conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \ " tree_conflict_data = NULL " \ "WHERE wc_id = ?1 and local_relpath = ?2 " \ "" #define STMT_UPGRADE_TO_31 5 #define STMT_5_INFO {"STMT_UPGRADE_TO_31", NULL} #define STMT_5 \ "ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \ "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \ "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \ "DROP INDEX I_NODES_PARENT; " \ "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ " local_relpath, op_depth); " \ "DROP INDEX I_ACTUAL_PARENT; " \ "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ " local_relpath); " \ "PRAGMA user_version = 31; " \ "" #define STMT_UPGRADE_31_SELECT_WCROOT_NODES 6 #define STMT_6_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL} #define STMT_6 \ "SELECT l.wc_id, l.local_relpath FROM nodes as l " \ "LEFT OUTER JOIN nodes as r " \ "ON l.wc_id = r.wc_id " \ " AND r.local_relpath = l.parent_relpath " \ " AND r.op_depth = 0 " \ "WHERE l.op_depth = 0 " \ " AND l.repos_path != '' " \ " AND ((l.repos_id IS NOT r.repos_id) " \ " OR (l.repos_path IS NOT (CASE WHEN (r.local_relpath) = '' THEN (CASE WHEN (r.repos_path) = '' THEN (l.local_relpath) WHEN (l.local_relpath) = '' THEN (r.repos_path) ELSE (r.repos_path) || '/' || (l.local_relpath) END) WHEN (r.repos_path) = '' THEN (CASE WHEN (r.local_relpath) = '' THEN (l.local_relpath) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN '' WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+2) END END) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN (r.repos_path) WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN (r.repos_path) || SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1) END END))) " \ "" #define WC_METADATA_SQL_99 \ "CREATE TABLE ACTUAL_NODE_BACKUP ( " \ " wc_id INTEGER NOT NULL, " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " properties BLOB, " \ " conflict_old TEXT, " \ " conflict_new TEXT, " \ " conflict_working TEXT, " \ " prop_reject TEXT, " \ " changelist TEXT, " \ " text_mod TEXT " \ " ); " \ "INSERT INTO ACTUAL_NODE_BACKUP SELECT " \ " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \ " conflict_new, conflict_working, prop_reject, changelist, text_mod " \ "FROM ACTUAL_NODE; " \ "DROP TABLE ACTUAL_NODE; " \ "CREATE TABLE ACTUAL_NODE ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " properties BLOB, " \ " conflict_old TEXT, " \ " conflict_new TEXT, " \ " conflict_working TEXT, " \ " prop_reject TEXT, " \ " changelist TEXT, " \ " text_mod TEXT, " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ " local_relpath); " \ "INSERT INTO ACTUAL_NODE SELECT " \ " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \ " conflict_new, conflict_working, prop_reject, changelist, text_mod " \ "FROM ACTUAL_NODE_BACKUP; " \ "DROP TABLE ACTUAL_NODE_BACKUP; " \ "" #define WC_METADATA_SQL_DECLARE_STATEMENTS(varname) \ static const char * const varname[] = { \ STMT_0, \ STMT_1, \ STMT_2, \ STMT_3, \ STMT_4, \ STMT_5, \ STMT_6, \ NULL \ } #define WC_METADATA_SQL_DECLARE_STATEMENT_INFO(varname) \ static const char * const varname[][2] = { \ STMT_0_INFO, \ STMT_1_INFO, \ STMT_2_INFO, \ STMT_3_INFO, \ STMT_4_INFO, \ STMT_5_INFO, \ STMT_6_INFO, \ {NULL, NULL} \ } diff --git a/contrib/subversion/subversion/libsvn_wc/wc-metadata.sql b/contrib/subversion/subversion/libsvn_wc/wc-metadata.sql index e34cf1422e60..5dd7294f3694 100644 --- a/contrib/subversion/subversion/libsvn_wc/wc-metadata.sql +++ b/contrib/subversion/subversion/libsvn_wc/wc-metadata.sql @@ -1,784 +1,784 @@ /* wc-metadata.sql -- schema used in the wc-metadata SQLite database * This is intended for use with SQLite 3 * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ /* * the KIND column in these tables has one of the following values * (documented in the corresponding C type #svn_kind_t): * "file" * "dir" * "symlink" * "unknown" * * the PRESENCE column in these tables has one of the following values * (see also the C type #svn_wc__db_status_t): * "normal" * "server-excluded" -- server has declared it excluded (ie. authz failure) * "excluded" -- administratively excluded (ie. sparse WC) * "not-present" -- node not present at this REV * "incomplete" -- state hasn't been filled in * "base-deleted" -- node represents a delete of a BASE node */ /* One big list of statements to create our (current) schema. */ -- STMT_CREATE_SCHEMA /* ------------------------------------------------------------------------- */ CREATE TABLE REPOSITORY ( id INTEGER PRIMARY KEY AUTOINCREMENT, /* The root URL of the repository. This value is URI-encoded. */ root TEXT UNIQUE NOT NULL, /* the UUID of the repository */ uuid TEXT NOT NULL ); /* Note: a repository (identified by its UUID) may appear at multiple URLs. For example, http://example.com/repos/ and https://example.com/repos/. */ CREATE INDEX I_UUID ON REPOSITORY (uuid); CREATE INDEX I_ROOT ON REPOSITORY (root); /* ------------------------------------------------------------------------- */ CREATE TABLE WCROOT ( id INTEGER PRIMARY KEY AUTOINCREMENT, /* absolute path in the local filesystem. NULL if storing metadata in the wcroot itself. */ local_abspath TEXT UNIQUE ); CREATE UNIQUE INDEX I_LOCAL_ABSPATH ON WCROOT (local_abspath); /* ------------------------------------------------------------------------- */ /* The PRISTINE table keeps track of pristine texts. Each row describes a single pristine text. The text itself is stored in a file whose name is derived from the 'checksum' column. Each pristine text is referenced by any number of rows in the NODES and ACTUAL_NODE tables. In future, the pristine text file may be compressed. */ CREATE TABLE PRISTINE ( /* The SHA-1 checksum of the pristine text. This is a unique key. The SHA-1 checksum of a pristine text is assumed to be unique among all pristine texts referenced from this database. */ checksum TEXT NOT NULL PRIMARY KEY, /* Enumerated values specifying type of compression. The only value supported so far is NULL, meaning that no compression has been applied and the pristine text is stored verbatim in the file. */ compression INTEGER, /* The size in bytes of the file in which the pristine text is stored. Used to verify the pristine file is "proper". */ size INTEGER NOT NULL, /* The number of rows in the NODES table that have a 'checksum' column value that refers to this row. (References in other places, such as in the ACTUAL_NODE table, are not counted.) */ refcount INTEGER NOT NULL, /* Alternative MD5 checksum used for communicating with older repositories. Not strictly guaranteed to be unique among table rows. */ md5_checksum TEXT NOT NULL ); CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); /* ------------------------------------------------------------------------- */ /* The ACTUAL_NODE table describes text changes and property changes on each node in the WC, relative to the NODES table row for the same path. (A NODES row must exist if this node exists, but an ACTUAL_NODE row can exist on its own if it is just recording info on a non-present node - a tree conflict or a changelist, for example.) The ACTUAL_NODE table row for a given path exists if the node at that path is known to have text or property changes relative to its NODES row. ("Is known" because a text change on disk may not yet have been discovered and recorded here.) The ACTUAL_NODE table row for a given path may also exist in other cases, including if the "changelist" or any of the conflict columns have a non-null value. */ CREATE TABLE ACTUAL_NODE ( /* specifies the location of this node in the local filesystem */ wc_id INTEGER NOT NULL REFERENCES WCROOT (id), local_relpath TEXT NOT NULL, /* parent's local_relpath for aggregating children of a given parent. this will be "" if the parent is the wcroot. NULL if this is the wcroot node. */ parent_relpath TEXT, /* serialized skel of this node's properties. NULL implies no change to the properties, relative to WORKING/BASE as appropriate. */ properties BLOB, /* relpaths of the conflict files. */ /* ### These columns will eventually be merged into conflict_data below. */ conflict_old TEXT, conflict_new TEXT, conflict_working TEXT, prop_reject TEXT, /* if not NULL, this node is part of a changelist. */ changelist TEXT, /* ### need to determine values. "unknown" (no info), "admin" (they ### used something like 'svn edit'), "noticed" (saw a mod while ### scanning the filesystem). */ text_mod TEXT, /* if a directory, serialized data for all of tree conflicts therein. ### This column will eventually be merged into the conflict_data column, ### but within the ACTUAL node of the tree conflict victim itself, rather ### than the node of the tree conflict victim's parent directory. */ tree_conflict_data TEXT, /* A skel containing the conflict details. */ conflict_data BLOB, /* Three columns containing the checksums of older, left and right conflict texts. Stored in a column to allow storing them in the pristine store */ /* stsp: This is meant for text conflicts, right? What about property conflicts? Why do we need these in a column to refer to the pristine store? Can't we just parse the checksums from conflict_data as well? rhuijben: Because that won't allow triggers to handle refcounts. We would have to scan all conflict skels before cleaning up the a single file from the pristine stor */ older_checksum TEXT REFERENCES PRISTINE (checksum), left_checksum TEXT REFERENCES PRISTINE (checksum), right_checksum TEXT REFERENCES PRISTINE (checksum), PRIMARY KEY (wc_id, local_relpath) ); CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, local_relpath); /* ------------------------------------------------------------------------- */ /* This table is a cache of information about repository locks. */ CREATE TABLE LOCK ( /* what repository location is locked */ repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), repos_relpath TEXT NOT NULL, /* Information about the lock. Note: these values are just caches from the server, and are not authoritative. */ lock_token TEXT NOT NULL, /* ### make the following fields NOT NULL ? */ lock_owner TEXT, lock_comment TEXT, lock_date INTEGER, /* an APR date/time (usec since 1970) */ PRIMARY KEY (repos_id, repos_relpath) ); /* ------------------------------------------------------------------------- */ CREATE TABLE WORK_QUEUE ( /* Work items are identified by this value. */ id INTEGER PRIMARY KEY AUTOINCREMENT, /* A serialized skel specifying the work item. */ work BLOB NOT NULL ); /* ------------------------------------------------------------------------- */ CREATE TABLE WC_LOCK ( /* specifies the location of this node in the local filesystem */ wc_id INTEGER NOT NULL REFERENCES WCROOT (id), local_dir_relpath TEXT NOT NULL, locked_levels INTEGER NOT NULL DEFAULT -1, PRIMARY KEY (wc_id, local_dir_relpath) ); /* ------------------------------------------------------------------------- */ /* The NODES table describes the way WORKING nodes are layered on top of BASE nodes and on top of other WORKING nodes, due to nested tree structure changes. The layers are modelled using the "op_depth" column. An 'operation depth' refers to the number of directory levels down from the WC root at which a tree-change operation (delete, add?, copy, move) was performed. A row's 'op_depth' does NOT refer to the depth of its own 'local_relpath', but rather to the depth of the nearest tree change that affects that node. The row with op_depth=0 for any given local relpath represents the "base" node that is created and updated by checkout, update, switch and commit post-processing. The row with the highest op_depth for a particular local_relpath represents the working version. Any rows with intermediate op_depth values are not normally visible to the user but may become visible after reverting local changes. This table contains full node descriptions for nodes in either the BASE or WORKING trees as described in notes/wc-ng/design. Fields relate both to BASE and WORKING trees, unless documented otherwise. For illustration, with a scenario like this: # (0) svn rm foo svn cp ^/moo foo # (1) svn rm foo/bar touch foo/bar svn add foo/bar # (2) , these are the NODES table rows for the path foo/bar: (0) "BASE" ---> NODES (op_depth == 0) (1) NODES (op_depth == 1) (2) NODES (op_depth == 2) 0 is the original data for foo/bar before 'svn rm foo' (if it existed). 1 is the data for foo/bar copied in from ^/moo/bar. 2 is the to-be-committed data for foo/bar, created by 'svn add foo/bar'. An 'svn revert foo/bar' would remove the NODES of (2). */ CREATE TABLE NODES ( /* Working copy location related fields */ wc_id INTEGER NOT NULL REFERENCES WCROOT (id), local_relpath TEXT NOT NULL, /* Contains the depth (= number of path segments) of the operation modifying the working copy tree structure. All nodes below the root of the operation (aka operation root, aka oproot) affected by the operation will be assigned the same op_depth. op_depth == 0 designates the initial checkout; the BASE tree. */ op_depth INTEGER NOT NULL, /* parent's local_relpath for aggregating children of a given parent. this will be "" if the parent is the wcroot. Since a wcroot will never have a WORKING node the parent_relpath will never be null, except when op_depth == 0 and the node is a wcroot. */ parent_relpath TEXT, /* Repository location fields */ /* When op_depth == 0, these fields refer to the repository location of the BASE node, the location of the initial checkout. When op_depth != 0, they indicate where this node was copied/moved from. In this case, the fields are set for the root of the operation and for all children. */ repos_id INTEGER REFERENCES REPOSITORY (id), repos_path TEXT, revision INTEGER, /* WC state fields */ /* The tree state of the node. In case 'op_depth' is equal to 0, this node is part of the 'BASE' tree. The 'BASE' represents pristine nodes that are in the repository; it is obtained and modified by commands such as checkout/update/switch. In case 'op_depth' is greater than 0, this node is part of a layer of working nodes. The 'WORKING' tree is obtained and modified by commands like delete/copy/revert. The 'BASE' and 'WORKING' trees use the same literal values for the 'presence' but the meaning of each value can vary depending on the tree. normal: in the 'BASE' tree this is an ordinary node for which we have full information. In the 'WORKING' tree it's an added or copied node for which we have full information. not-present: in the 'BASE' tree this is a node that is implied to exist by the parent node, but is not present in the working copy. Typically obtained by delete/commit, or by update to revision in which the node does not exist. In the 'WORKING' tree this is a copy of a 'not-present' node from the 'BASE' tree, and it will be deleted on commit. Such a node cannot be copied directly, but can be copied as a descendant. incomplete: in the 'BASE' tree this is an ordinary node for which we do not have full information. Only the name is guaranteed; we may not have all its children, we may not have its checksum, etc. In the 'WORKING' tree this is a copied node for which we do not have the full information. This state is generally obtained when an operation was interrupted. base-deleted: not valid in 'BASE' tree. In the 'WORKING' tree this represents a node that is deleted from the tree below the current 'op_depth'. This state is badly named, it should be something like 'deleted'. server-excluded: in the 'BASE' tree this is a node that is excluded by authz. The name of the node is known from the parent, but no other information is available. Not valid in the 'WORKING' tree as there is no way to commit such a node. excluded: in the 'BASE' tree this node is administratively excluded by the user (sparse WC). In the 'WORKING' tree this is a copy of an excluded node from the 'BASE' tree. Such a node cannot be copied directly but can be copied as a descendant. */ presence TEXT NOT NULL, /* ### JF: For an old-style move, "copyfrom" info stores its source, but a new WC-NG "move" is intended to be a "true rename" so its copyfrom revision is implicit, being in effect (new head - 1) at commit time. For a (new) move, we need to store or deduce the copyfrom local-relpath; perhaps add a column called "moved_from". */ /* Boolean value, specifying if this node was moved here (rather than just copied). This is set on all the nodes in the moved tree. The source of the move is implied by a different node with a moved_to column pointing at the root node of the moved tree. */ moved_here INTEGER, /* If the underlying node was moved away (rather than just deleted), this specifies the local_relpath of where the node was moved to. This is set only on the root of a move, and is NULL for all children. The op-depth of the moved-to node is not recorded. A moved_to path always points at a node within the highest op-depth layer at the destination. This invariant must be maintained by operations which change existing move information. */ moved_to TEXT, /* Content fields */ /* the kind of the new node. may be "unknown" if the node is not present. */ kind TEXT NOT NULL, /* serialized skel of this node's properties (when presence is 'normal' or 'incomplete'); an empty skel or NULL indicates no properties. NULL if we have no information about the properties (any other presence). TODO: Choose & require a single representation for 'no properties'. */ properties BLOB, /* NULL depth means "default" (typically svn_depth_infinity) */ /* ### depth on WORKING? seems this is a BASE-only concept. how do ### you do "files" on an added-directory? can't really ignore ### the subdirs! */ /* ### maybe a WC-to-WC copy can retain a depth? */ depth TEXT, /* The SHA-1 checksum of the pristine text, if this node is a file and was moved here or copied here, else NULL. */ checksum TEXT REFERENCES PRISTINE (checksum), /* for kind==symlink, this specifies the target. */ symlink_target TEXT, /* Last-Change fields */ /* If this node was moved here or copied here, then the following fields may have information about their source node. changed_rev must be not-null if this node has presence=="normal". changed_date and changed_author may be null if the corresponding revprops are missing. For an added or not-present node, these are null. */ changed_revision INTEGER, changed_date INTEGER, /* an APR date/time (usec since 1970) */ changed_author TEXT, /* Various cache fields */ /* The size in bytes of the working file when it had no local text modifications. This means the size of the text when translated from repository-normal format to working copy format with EOL style translated and keywords expanded according to the properties in the "properties" column of this row. NULL if this node is not a file or if the size has not (yet) been computed. */ translated_size INTEGER, /* The mod-time of the working file when it was last determined to be logically unmodified relative to its base, taking account of keywords and EOL style. This value is used in the change detection heuristic used by the status command. NULL if this node is not a file or if this info has not yet been determined. */ last_mod_time INTEGER, /* an APR date/time (usec since 1970) */ /* serialized skel of this node's dav-cache. could be NULL if the node does not have any dav-cache. */ dav_cache BLOB, /* Is there a file external in this location. NULL if there is no file external, otherwise '1' */ /* ### Originally we had a wc-1.0 like skel in this place, so we ### check for NULL. ### In Subversion 1.7 we defined this column as TEXT, but Sqlite ### only uses this information for deciding how to optimize ### anyway. */ file_external INTEGER, /* serialized skel of this node's inherited properties. NULL if this is not the BASE of a WC root node. */ inherited_props BLOB, PRIMARY KEY (wc_id, local_relpath, op_depth) ); CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, local_relpath, op_depth); /* I_NODES_MOVED is introduced in format 30 */ CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); /* Many queries have to filter the nodes table to pick only that version of each node with the highest (most "current") op_depth. This view does the heavy lifting for such queries. Note that this view includes a row for each and every path that is known in the WC, including, for example, paths that were children of a base- or lower-op-depth directory that has been replaced by something else in the current view. */ CREATE VIEW NODES_CURRENT AS SELECT * FROM nodes AS n WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 WHERE n2.wc_id = n.wc_id AND n2.local_relpath = n.local_relpath); /* Many queries have to filter the nodes table to pick only that version of each node with the BASE ("as checked out") op_depth. This view does the heavy lifting for such queries. */ CREATE VIEW NODES_BASE AS SELECT * FROM nodes WHERE op_depth = 0; CREATE TRIGGER nodes_insert_trigger AFTER INSERT ON nodes WHEN NEW.checksum IS NOT NULL BEGIN UPDATE pristine SET refcount = refcount + 1 WHERE checksum = NEW.checksum; END; CREATE TRIGGER nodes_delete_trigger AFTER DELETE ON nodes WHEN OLD.checksum IS NOT NULL BEGIN UPDATE pristine SET refcount = refcount - 1 WHERE checksum = OLD.checksum; END; CREATE TRIGGER nodes_update_checksum_trigger AFTER UPDATE OF checksum ON nodes WHEN NEW.checksum IS NOT OLD.checksum /* AND (NEW.checksum IS NOT NULL OR OLD.checksum IS NOT NULL) */ BEGIN UPDATE pristine SET refcount = refcount + 1 WHERE checksum = NEW.checksum; UPDATE pristine SET refcount = refcount - 1 WHERE checksum = OLD.checksum; END; CREATE TABLE EXTERNALS ( /* Working copy location related fields (like NODES)*/ wc_id INTEGER NOT NULL REFERENCES WCROOT (id), local_relpath TEXT NOT NULL, /* The working copy root can't be recorded as an external in itself so this will never be NULL. ### ATM only inserted, never queried */ parent_relpath TEXT NOT NULL, /* Repository location fields */ repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), /* Either MAP_NORMAL or MAP_EXCLUDED */ presence TEXT NOT NULL, /* the kind of the external. */ kind TEXT NOT NULL, /* The local relpath of the directory NODE defining this external (Defaults to the parent directory of the file external after upgrade) */ def_local_relpath TEXT NOT NULL, /* The url of the external as used in the definition */ def_repos_relpath TEXT NOT NULL, /* The operational (peg) and node revision if this is a revision fixed external; otherwise NULL. (Usually these will both have the same value) */ def_operational_revision TEXT, def_revision TEXT, PRIMARY KEY (wc_id, local_relpath) ); CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, def_local_relpath, local_relpath); PRAGMA user_version = -- define: SVN_WC__VERSION ; /* ------------------------------------------------------------------------- */ /* This statement provides SQLite with the necessary information about our indexes to make better decisions in the query planner. For every interesting index this contains a number of rows where the statistics are calculated for and then for every column in the index the average number of rows with the same value in all columns left of this column including the column itself. See http://www.sqlite.org/fileformat2.html#stat1tab for more details. The important thing here is that this tells Sqlite that the wc_id column of the NODES and ACTUAL_NODE table is usually a single value, so queries should use more than one column for index usage. The current hints describe NODES+ACTUAL_NODE as a working copy with 8000 nodes in 1 a single working copy(=wc_id), 10 nodes per directory and an average of 2 op-depth layers per node. The number of integers must be number of index columns + 1, which is verified via the test_schema_statistics() test. */ -- STMT_INSTALL_SCHEMA_STATISTICS ANALYZE sqlite_master; /* Creates empty sqlite_stat1 if necessary */ DELETE FROM sqlite_stat1 WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK', 'EXTERNALS'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1'); /* Tell a lie: We ignore that 99.9% of all moved_to values are NULL */ INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('NODES', 'I_NODES_MOVED', '8000 8000 1 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('EXTERNALS','sqlite_autoindex_EXTERNALS_1', '100 100 1'); INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES ('EXTERNALS','I_EXTERNALS_DEFINED', '100 100 3 1'); /* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is a INTEGER PRIMARY KEY AUTOINCREMENT table */ ANALYZE sqlite_master; /* Loads sqlite_stat1 data for query optimizer */ /* ------------------------------------------------------------------------- */ /* Format 30 creates a new NODES index for move information, and a new PRISTINE index for the md5_checksum column. It also activates use of skel-based conflict storage -- see notes/wc-ng/conflict-storage-2.0. It also renames the "absent" presence to "server-excluded". */ -- STMT_UPGRADE_TO_30 CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); -UPDATE nodes SET presence = "server-excluded" WHERE presence = "absent"; +UPDATE nodes SET presence = 'server-excluded' WHERE presence = 'absent'; /* Just to be sure clear out file external skels from pre 1.7.0 development working copies that were never updated by 1.7.0+ style clients */ UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; -- STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE SELECT wc_id, local_relpath, conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data FROM actual_node WHERE conflict_old IS NOT NULL OR conflict_working IS NOT NULL OR conflict_new IS NOT NULL OR prop_reject IS NOT NULL OR tree_conflict_data IS NOT NULL ORDER by wc_id, local_relpath -- STMT_UPGRADE_30_SET_CONFLICT UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, tree_conflict_data = NULL WHERE wc_id = ?1 and local_relpath = ?2 /* ------------------------------------------------------------------------- */ /* Format 31 adds the inherited_props column to the NODES table. C code then initializes the update/switch roots to make sure future updates fetch the inherited properties */ -- STMT_UPGRADE_TO_31 ALTER TABLE NODES ADD COLUMN inherited_props BLOB; DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; DROP INDEX IF EXISTS I_EXTERNALS_PARENT; DROP INDEX I_NODES_PARENT; CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, local_relpath, op_depth); DROP INDEX I_ACTUAL_PARENT; CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, local_relpath); PRAGMA user_version = 31; -- STMT_UPGRADE_31_SELECT_WCROOT_NODES /* Select all base nodes which are the root of a WC, including switched subtrees, but excluding those which map to the root of the repos. ### IPROPS: Is this query horribly inefficient? Quite likely, ### but it only runs during an upgrade, so do we care? */ SELECT l.wc_id, l.local_relpath FROM nodes as l LEFT OUTER JOIN nodes as r ON l.wc_id = r.wc_id AND r.local_relpath = l.parent_relpath AND r.op_depth = 0 WHERE l.op_depth = 0 AND l.repos_path != '' AND ((l.repos_id IS NOT r.repos_id) OR (l.repos_path IS NOT RELPATH_SKIP_JOIN(r.local_relpath, r.repos_path, l.local_relpath))) /* ------------------------------------------------------------------------- */ /* Format 32 .... */ /* -- STMT_UPGRADE_TO_32 PRAGMA user_version = 32; */ /* ------------------------------------------------------------------------- */ /* Format 99 drops all columns not needed due to previous format upgrades. Before we release 1.7, these statements will be pulled into a format bump and all the tables will be cleaned up. We don't know what that format number will be, however, so we're just marking it as 99 for now. */ -- format: 99 /* TODO: Un-confuse *_revision column names in the EXTERNALS table to "-r foo@", as suggested by the patch attached to http://svn.haxx.se/dev/archive-2011-09/0478.shtml */ /* TODO: Remove column parent_relpath from EXTERNALS. We're not using it and never will. It's not interesting like in the NODES table: the external's parent path may be *anything*: unversioned, "behind" a another WC... */ /* Now "drop" the tree_conflict_data column from actual_node. */ CREATE TABLE ACTUAL_NODE_BACKUP ( wc_id INTEGER NOT NULL, local_relpath TEXT NOT NULL, parent_relpath TEXT, properties BLOB, conflict_old TEXT, conflict_new TEXT, conflict_working TEXT, prop_reject TEXT, changelist TEXT, text_mod TEXT ); INSERT INTO ACTUAL_NODE_BACKUP SELECT wc_id, local_relpath, parent_relpath, properties, conflict_old, conflict_new, conflict_working, prop_reject, changelist, text_mod FROM ACTUAL_NODE; DROP TABLE ACTUAL_NODE; CREATE TABLE ACTUAL_NODE ( wc_id INTEGER NOT NULL REFERENCES WCROOT (id), local_relpath TEXT NOT NULL, parent_relpath TEXT, properties BLOB, conflict_old TEXT, conflict_new TEXT, conflict_working TEXT, prop_reject TEXT, changelist TEXT, text_mod TEXT, PRIMARY KEY (wc_id, local_relpath) ); CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, local_relpath); INSERT INTO ACTUAL_NODE SELECT wc_id, local_relpath, parent_relpath, properties, conflict_old, conflict_new, conflict_working, prop_reject, changelist, text_mod FROM ACTUAL_NODE_BACKUP; DROP TABLE ACTUAL_NODE_BACKUP; /* Note: Other differences between the schemas of an upgraded and a * fresh WC. * * While format 22 was current, "NOT NULL" was added to the * columns PRISTINE.size and PRISTINE.md5_checksum. The format was not * bumped because it is a forward- and backward-compatible change. * * While format 23 was current, "REFERENCES PRISTINE" was added to the * columns ACTUAL_NODE.older_checksum, ACTUAL_NODE.left_checksum, * ACTUAL_NODE.right_checksum, NODES.checksum. * * The "NODES_BASE" view was originally implemented with a more complex (but * functionally equivalent) statement using a 'JOIN'. WCs that were created * at or upgraded to format 26 before it was changed will still have the old * version. */ diff --git a/contrib/subversion/subversion/libsvn_wc/wc-queries.h b/contrib/subversion/subversion/libsvn_wc/wc-queries.h index b6254e1a5bca..778e679f4a43 100644 --- a/contrib/subversion/subversion/libsvn_wc/wc-queries.h +++ b/contrib/subversion/subversion/libsvn_wc/wc-queries.h @@ -1,3200 +1,3200 @@ /* This file is automatically generated from wc-queries.sql and token-map.h. * Do not edit this file -- edit the source and rerun gen-make.py */ #define STMT_SELECT_NODE_INFO 0 #define STMT_0_INFO {"STMT_SELECT_NODE_INFO", NULL} #define STMT_0 \ "SELECT op_depth, repos_id, repos_path, presence, kind, revision, checksum, " \ " translated_size, changed_revision, changed_date, changed_author, depth, " \ " symlink_target, last_mod_time, properties, moved_here, inherited_props, " \ " moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "ORDER BY op_depth DESC " \ "" #define STMT_SELECT_NODE_INFO_WITH_LOCK 1 #define STMT_1_INFO {"STMT_SELECT_NODE_INFO_WITH_LOCK", NULL} #define STMT_1 \ "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ " depth, symlink_target, last_mod_time, properties, moved_here, " \ " inherited_props, " \ " lock_token, lock_owner, lock_comment, lock_date " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath AND nodes.op_depth=0 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "ORDER BY op_depth DESC " \ "" #define STMT_SELECT_BASE_NODE 2 #define STMT_2_INFO {"STMT_SELECT_BASE_NODE", NULL} #define STMT_2 \ "SELECT repos_id, repos_path, presence, kind, revision, checksum, " \ " translated_size, changed_revision, changed_date, changed_author, depth, " \ " symlink_target, last_mod_time, properties, file_external " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_BASE_NODE_WITH_LOCK 3 #define STMT_3_INFO {"STMT_SELECT_BASE_NODE_WITH_LOCK", NULL} #define STMT_3 \ "SELECT nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ " depth, symlink_target, last_mod_time, properties, file_external, " \ " lock_token, lock_owner, lock_comment, lock_date " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_BASE_CHILDREN_INFO 4 #define STMT_4_INFO {"STMT_SELECT_BASE_CHILDREN_INFO", NULL} #define STMT_4 \ "SELECT local_relpath, nodes.repos_id, nodes.repos_path, presence, kind, " \ " revision, depth, file_external " \ "FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_BASE_CHILDREN_INFO_LOCK 5 #define STMT_5_INFO {"STMT_SELECT_BASE_CHILDREN_INFO_LOCK", NULL} #define STMT_5 \ "SELECT local_relpath, nodes.repos_id, nodes.repos_path, presence, kind, " \ " revision, depth, file_external, " \ " lock_token, lock_owner, lock_comment, lock_date " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_WORKING_NODE 6 #define STMT_6_INFO {"STMT_SELECT_WORKING_NODE", NULL} #define STMT_6 \ "SELECT op_depth, presence, kind, checksum, translated_size, " \ " changed_revision, changed_date, changed_author, depth, symlink_target, " \ " repos_id, repos_path, revision, " \ " moved_here, moved_to, last_mod_time, properties " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0 " \ "ORDER BY op_depth DESC " \ "LIMIT 1 " \ "" #define STMT_SELECT_DEPTH_NODE 7 #define STMT_7_INFO {"STMT_SELECT_DEPTH_NODE", NULL} #define STMT_7 \ "SELECT repos_id, repos_path, presence, kind, revision, checksum, " \ " translated_size, changed_revision, changed_date, changed_author, depth, " \ " symlink_target, properties, moved_to, moved_here " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" #define STMT_SELECT_LOWEST_WORKING_NODE 8 #define STMT_8_INFO {"STMT_SELECT_LOWEST_WORKING_NODE", NULL} #define STMT_8 \ "SELECT op_depth, presence, kind, moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 " \ "ORDER BY op_depth " \ "LIMIT 1 " \ "" #define STMT_SELECT_HIGHEST_WORKING_NODE 9 #define STMT_9_INFO {"STMT_SELECT_HIGHEST_WORKING_NODE", NULL} #define STMT_9 \ "SELECT op_depth " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth < ?3 " \ "ORDER BY op_depth DESC " \ "LIMIT 1 " \ "" #define STMT_SELECT_PRESENT_HIGHEST_WORKING_NODES_BY_BASENAME_AND_KIND 10 #define STMT_10_INFO {"STMT_SELECT_PRESENT_HIGHEST_WORKING_NODES_BY_BASENAME_AND_KIND", NULL} #define STMT_10 \ "SELECT presence, local_relpath " \ "FROM nodes n " \ "WHERE wc_id = ?1 AND local_relpath = (CASE WHEN (parent_relpath) = '' THEN (?2) WHEN (?2) = '' THEN (parent_relpath) ELSE (parent_relpath) || '/' || (?2) END) " \ " AND kind = ?3 " \ " AND presence in ('normal', 'incomplete') " \ " AND op_depth = (SELECT MAX(op_depth) " \ " FROM NODES w " \ " WHERE w.wc_id = ?1 " \ " AND w.local_relpath = n.local_relpath) " \ "" #define STMT_SELECT_ACTUAL_NODE 11 #define STMT_11_INFO {"STMT_SELECT_ACTUAL_NODE", NULL} #define STMT_11 \ "SELECT changelist, properties, conflict_data " \ "FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_SELECT_NODE_CHILDREN_INFO 12 #define STMT_12_INFO {"STMT_SELECT_NODE_CHILDREN_INFO", NULL} #define STMT_12 \ "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ " depth, symlink_target, last_mod_time, properties, lock_token, lock_owner, " \ " lock_comment, lock_date, local_relpath, moved_here, moved_to, file_external " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath AND nodes.op_depth = 0 " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "ORDER BY local_relpath DESC, op_depth DESC " \ "" #define STMT_SELECT_BASE_NODE_CHILDREN_INFO 13 #define STMT_13_INFO {"STMT_SELECT_BASE_NODE_CHILDREN_INFO", NULL} #define STMT_13 \ "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ " depth, symlink_target, last_mod_time, properties, lock_token, lock_owner, " \ " lock_comment, lock_date, local_relpath, moved_here, moved_to, file_external " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 " \ "ORDER BY local_relpath DESC " \ "" #define STMT_SELECT_NODE_CHILDREN_WALKER_INFO 14 #define STMT_14_INFO {"STMT_SELECT_NODE_CHILDREN_WALKER_INFO", NULL} #define STMT_14 \ "SELECT local_relpath, op_depth, presence, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_ACTUAL_CHILDREN_INFO 15 #define STMT_15_INFO {"STMT_SELECT_ACTUAL_CHILDREN_INFO", NULL} #define STMT_15 \ "SELECT local_relpath, changelist, properties, conflict_data " \ "FROM actual_node " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "" #define STMT_SELECT_REPOSITORY_BY_ID 16 #define STMT_16_INFO {"STMT_SELECT_REPOSITORY_BY_ID", NULL} #define STMT_16 \ "SELECT root, uuid FROM repository WHERE id = ?1 " \ "" #define STMT_SELECT_WCROOT_NULL 17 #define STMT_17_INFO {"STMT_SELECT_WCROOT_NULL", NULL} #define STMT_17 \ "SELECT id FROM wcroot WHERE local_abspath IS NULL " \ "" #define STMT_SELECT_REPOSITORY 18 #define STMT_18_INFO {"STMT_SELECT_REPOSITORY", NULL} #define STMT_18 \ "SELECT id FROM repository WHERE root = ?1 " \ "" #define STMT_INSERT_REPOSITORY 19 #define STMT_19_INFO {"STMT_INSERT_REPOSITORY", NULL} #define STMT_19 \ "INSERT INTO repository (root, uuid) VALUES (?1, ?2) " \ "" #define STMT_INSERT_NODE 20 #define STMT_20_INFO {"STMT_INSERT_NODE", NULL} #define STMT_20 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, last_mod_time, " \ " dav_cache, symlink_target, file_external, moved_to, moved_here, " \ " inherited_props) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, " \ " ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23) " \ "" #define STMT_SELECT_WORKING_PRESENT 21 #define STMT_21_INFO {"STMT_SELECT_WORKING_PRESENT", NULL} #define STMT_21 \ "SELECT local_relpath, kind, checksum, translated_size, last_mod_time " \ "FROM nodes n " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND presence in ('normal', 'incomplete') " \ " AND op_depth = (SELECT MAX(op_depth) " \ " FROM NODES w " \ " WHERE w.wc_id = ?1 " \ " AND w.local_relpath = n.local_relpath) " \ "ORDER BY local_relpath DESC " \ "" #define STMT_DELETE_NODE_RECURSIVE 22 #define STMT_22_INFO {"STMT_DELETE_NODE_RECURSIVE", NULL} #define STMT_22 \ "DELETE FROM NODES " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_DELETE_NODE 23 #define STMT_23_INFO {"STMT_DELETE_NODE", NULL} #define STMT_23 \ "DELETE " \ "FROM NODES " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" #define STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE 24 #define STMT_24_INFO {"STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE", NULL} #define STMT_24 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND EXISTS(SELECT 1 FROM NODES b " \ " WHERE b.wc_id = ?1 " \ " AND b.local_relpath = actual_node.local_relpath " \ " AND op_depth = 0) " \ " AND NOT EXISTS(SELECT 1 FROM NODES w " \ " WHERE w.wc_id = ?1 " \ " AND w.local_relpath = actual_node.local_relpath " \ " AND op_depth > 0 " \ " AND presence in ('normal', 'incomplete', 'not-present')) " \ "" #define STMT_DELETE_WORKING_BASE_DELETE 25 #define STMT_25_INFO {"STMT_DELETE_WORKING_BASE_DELETE", NULL} #define STMT_25 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND presence = 'base-deleted' " \ " AND op_depth > ?3 " \ " AND op_depth = (SELECT MIN(op_depth) FROM nodes n " \ " WHERE n.wc_id = ?1 " \ " AND n.local_relpath = nodes.local_relpath " \ " AND op_depth > ?3) " \ "" #define STMT_DELETE_WORKING_BASE_DELETE_RECURSIVE 26 #define STMT_26_INFO {"STMT_DELETE_WORKING_BASE_DELETE_RECURSIVE", NULL} #define STMT_26 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND presence = 'base-deleted' " \ " AND op_depth > ?3 " \ " AND op_depth = (SELECT MIN(op_depth) FROM nodes n " \ " WHERE n.wc_id = ?1 " \ " AND n.local_relpath = nodes.local_relpath " \ " AND op_depth > ?3) " \ "" #define STMT_DELETE_WORKING_RECURSIVE 27 #define STMT_27_INFO {"STMT_DELETE_WORKING_RECURSIVE", NULL} #define STMT_27 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth > 0 " \ "" #define STMT_DELETE_BASE_RECURSIVE 28 #define STMT_28_INFO {"STMT_DELETE_BASE_RECURSIVE", NULL} #define STMT_28 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth = 0 " \ "" #define STMT_DELETE_WORKING_OP_DEPTH 29 #define STMT_29_INFO {"STMT_DELETE_WORKING_OP_DEPTH", NULL} #define STMT_29 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth = ?3 " \ "" #define STMT_SELECT_LAYER_FOR_REPLACE 30 #define STMT_30_INFO {"STMT_SELECT_LAYER_FOR_REPLACE", NULL} #define STMT_30 \ "SELECT s.local_relpath, s.kind, " \ " (CASE WHEN (?2) = '' THEN (CASE WHEN (?4) = '' THEN (s.local_relpath) WHEN (s.local_relpath) = '' THEN (?4) ELSE (?4) || '/' || (s.local_relpath) END) WHEN (?4) = '' THEN (CASE WHEN (?2) = '' THEN (s.local_relpath) WHEN SUBSTR((s.local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(s.local_relpath) THEN '' WHEN SUBSTR((s.local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((s.local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((s.local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(s.local_relpath) THEN (?4) WHEN SUBSTR((s.local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?4) || SUBSTR((s.local_relpath), LENGTH(?2)+1) END END) drp, 'normal' " \ "FROM nodes s " \ "WHERE s.wc_id = ?1 AND s.local_relpath = ?2 AND s.op_depth = ?3 " \ "UNION ALL " \ "SELECT s.local_relpath, s.kind, " \ " (CASE WHEN (?2) = '' THEN (CASE WHEN (?4) = '' THEN (s.local_relpath) WHEN (s.local_relpath) = '' THEN (?4) ELSE (?4) || '/' || (s.local_relpath) END) WHEN (?4) = '' THEN (CASE WHEN (?2) = '' THEN (s.local_relpath) WHEN SUBSTR((s.local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(s.local_relpath) THEN '' WHEN SUBSTR((s.local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((s.local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((s.local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(s.local_relpath) THEN (?4) WHEN SUBSTR((s.local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?4) || SUBSTR((s.local_relpath), LENGTH(?2)+1) END END) drp, d.presence " \ "FROM nodes s " \ "LEFT OUTER JOIN nodes d ON d.wc_id= ?1 AND d.op_depth = ?5 " \ " AND d.local_relpath = drp " \ "WHERE s.wc_id = ?1 " \ " AND (((s.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((s.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND s.op_depth = ?3 " \ "ORDER BY s.local_relpath " \ "" #define STMT_SELECT_DESCENDANTS_OP_DEPTH_RV 31 #define STMT_31_INFO {"STMT_SELECT_DESCENDANTS_OP_DEPTH_RV", NULL} #define STMT_31 \ "SELECT local_relpath, kind " \ "FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = ?3 " \ " AND presence in ('normal', 'incomplete') " \ "ORDER BY local_relpath DESC " \ "" #define STMT_COPY_NODE_MOVE 32 #define STMT_32_INFO {"STMT_COPY_NODE_MOVE", NULL} #define STMT_32 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, last_mod_time, " \ " symlink_target, moved_here, moved_to ) " \ "SELECT " \ " s.wc_id, ?4 , ?5 , ?6 , " \ " s.repos_id, " \ " s.repos_path, s.revision, s.presence, s.depth, s.kind, s.changed_revision, " \ " s.changed_date, s.changed_author, s.checksum, s.properties, " \ " CASE WHEN d.checksum=s.checksum THEN d.translated_size END, " \ " CASE WHEN d.checksum=s.checksum THEN d.last_mod_time END, " \ " s.symlink_target, 1, d.moved_to " \ "FROM nodes s " \ "LEFT JOIN nodes d ON d.wc_id=?1 AND d.local_relpath=?4 AND d.op_depth=?5 " \ "WHERE s.wc_id = ?1 AND s.local_relpath = ?2 AND s.op_depth = ?3 " \ "" #define STMT_SELECT_NO_LONGER_MOVED_RV 33 #define STMT_33_INFO {"STMT_SELECT_NO_LONGER_MOVED_RV", NULL} #define STMT_33 \ "SELECT d.local_relpath, (CASE WHEN (?2) = '' THEN (CASE WHEN (?4) = '' THEN (d.local_relpath) WHEN (d.local_relpath) = '' THEN (?4) ELSE (?4) || '/' || (d.local_relpath) END) WHEN (?4) = '' THEN (CASE WHEN (?2) = '' THEN (d.local_relpath) WHEN SUBSTR((d.local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(d.local_relpath) THEN '' WHEN SUBSTR((d.local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((d.local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((d.local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(d.local_relpath) THEN (?4) WHEN SUBSTR((d.local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?4) || SUBSTR((d.local_relpath), LENGTH(?2)+1) END END) srp, " \ " b.presence, b.op_depth " \ "FROM nodes d " \ "LEFT OUTER JOIN nodes b ON b.wc_id = ?1 AND b.local_relpath = d.local_relpath " \ " AND b.op_depth = (SELECT MAX(x.op_depth) FROM nodes x " \ " WHERE x.wc_id = ?1 " \ " AND x.local_relpath = b.local_relpath " \ " AND x.op_depth < ?3) " \ "WHERE d.wc_id = ?1 " \ " AND (((d.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((d.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND d.op_depth = ?3 " \ " AND NOT EXISTS(SELECT * FROM nodes s " \ " WHERE s.wc_id = ?1 " \ " AND s.local_relpath = srp " \ " AND s.op_depth = ?5) " \ "ORDER BY d.local_relpath DESC " \ "" #define STMT_SELECT_OP_DEPTH_CHILDREN 34 #define STMT_34_INFO {"STMT_SELECT_OP_DEPTH_CHILDREN", NULL} #define STMT_34 \ "SELECT local_relpath, kind FROM nodes " \ "WHERE wc_id = ?1 " \ " AND parent_relpath = ?2 " \ " AND op_depth = ?3 " \ " AND presence != 'base-deleted' " \ " AND file_external is NULL " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_OP_DEPTH_CHILDREN_EXISTS 35 #define STMT_35_INFO {"STMT_SELECT_OP_DEPTH_CHILDREN_EXISTS", NULL} #define STMT_35 \ "SELECT local_relpath, kind FROM nodes " \ "WHERE wc_id = ?1 " \ " AND parent_relpath = ?2 " \ " AND op_depth = ?3 " \ " AND presence IN ('normal', 'incomplete') " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_GE_OP_DEPTH_CHILDREN 36 #define STMT_36_INFO {"STMT_SELECT_GE_OP_DEPTH_CHILDREN", NULL} #define STMT_36 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ " AND (op_depth > ?3 OR (op_depth = ?3 " \ " AND presence IN ('normal', 'incomplete'))) " \ "UNION ALL " \ "SELECT 1 FROM ACTUAL_NODE a " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ " AND NOT EXISTS (SELECT 1 FROM nodes n " \ " WHERE wc_id = ?1 AND n.local_relpath = a.local_relpath) " \ "" #define STMT_DELETE_SHADOWED_RECURSIVE 37 #define STMT_37_INFO {"STMT_DELETE_SHADOWED_RECURSIVE", NULL} #define STMT_37 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND (op_depth < ?3 " \ " OR (op_depth = ?3 AND presence = 'base-deleted')) " \ "" #define STMT_CLEAR_MOVED_TO_FROM_DEST 38 #define STMT_38_INFO {"STMT_CLEAR_MOVED_TO_FROM_DEST", NULL} #define STMT_38 \ "UPDATE NODES SET moved_to = NULL " \ "WHERE wc_id = ?1 " \ " AND moved_to = ?2 " \ "" #define STMT_SELECT_NOT_PRESENT_DESCENDANTS 39 #define STMT_39_INFO {"STMT_SELECT_NOT_PRESENT_DESCENDANTS", NULL} #define STMT_39 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND op_depth = ?3 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND presence = 'not-present' " \ "" #define STMT_COMMIT_DESCENDANTS_TO_BASE 40 #define STMT_40_INFO {"STMT_COMMIT_DESCENDANTS_TO_BASE", NULL} #define STMT_40 \ "UPDATE NODES SET op_depth = 0, " \ " repos_id = ?4, " \ " repos_path = (CASE WHEN (?2) = '' THEN (CASE WHEN (?5) = '' THEN (local_relpath) WHEN (local_relpath) = '' THEN (?5) ELSE (?5) || '/' || (local_relpath) END) WHEN (?5) = '' THEN (CASE WHEN (?2) = '' THEN (local_relpath) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN '' WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN (?5) WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?5) || SUBSTR((local_relpath), LENGTH(?2)+1) END END), " \ " revision = ?6, " \ " dav_cache = NULL, " \ " moved_here = NULL, " \ " moved_to = NULL, " \ " presence = CASE presence " \ " WHEN 'normal' THEN 'normal' " \ " WHEN 'excluded' THEN 'excluded' " \ " ELSE 'not-present' " \ " END " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = ?3 " \ "" #define STMT_SELECT_NODE_CHILDREN 41 #define STMT_41_INFO {"STMT_SELECT_NODE_CHILDREN", NULL} #define STMT_41 \ "SELECT DISTINCT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_WORKING_CHILDREN 42 #define STMT_42_INFO {"STMT_SELECT_WORKING_CHILDREN", NULL} #define STMT_42 \ "SELECT DISTINCT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ " AND (op_depth > (SELECT MAX(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2) " \ " OR " \ " (op_depth = (SELECT MAX(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2) " \ " AND presence IN ('normal', 'incomplete'))) " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_BASE_NOT_PRESENT_CHILDREN 43 #define STMT_43_INFO {"STMT_SELECT_BASE_NOT_PRESENT_CHILDREN", NULL} #define STMT_43 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 " \ " AND presence = 'not-present' " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_NODE_PROPS 44 #define STMT_44_INFO {"STMT_SELECT_NODE_PROPS", NULL} #define STMT_44 \ "SELECT properties, presence FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "ORDER BY op_depth DESC " \ "" #define STMT_SELECT_ACTUAL_PROPS 45 #define STMT_45_INFO {"STMT_SELECT_ACTUAL_PROPS", NULL} #define STMT_45 \ "SELECT properties FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_UPDATE_ACTUAL_PROPS 46 #define STMT_46_INFO {"STMT_UPDATE_ACTUAL_PROPS", NULL} #define STMT_46 \ "UPDATE actual_node SET properties = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_INSERT_ACTUAL_PROPS 47 #define STMT_47_INFO {"STMT_INSERT_ACTUAL_PROPS", NULL} #define STMT_47 \ "INSERT INTO actual_node (wc_id, local_relpath, parent_relpath, properties) " \ "VALUES (?1, ?2, ?3, ?4) " \ "" #define STMT_INSERT_LOCK 48 #define STMT_48_INFO {"STMT_INSERT_LOCK", NULL} #define STMT_48 \ "INSERT OR REPLACE INTO lock " \ "(repos_id, repos_relpath, lock_token, lock_owner, lock_comment, " \ " lock_date) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \ "" #define STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE 49 #define STMT_49_INFO {"STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE", NULL} #define STMT_49 \ "SELECT nodes.repos_id, nodes.repos_path, lock_token " \ "FROM nodes " \ "LEFT JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath " \ "WHERE wc_id = ?1 AND op_depth = 0 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_INSERT_WCROOT 50 #define STMT_50_INFO {"STMT_INSERT_WCROOT", NULL} #define STMT_50 \ "INSERT INTO wcroot (local_abspath) " \ "VALUES (?1) " \ "" #define STMT_UPDATE_BASE_NODE_DAV_CACHE 51 #define STMT_51_INFO {"STMT_UPDATE_BASE_NODE_DAV_CACHE", NULL} #define STMT_51 \ "UPDATE nodes SET dav_cache = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_BASE_DAV_CACHE 52 #define STMT_52_INFO {"STMT_SELECT_BASE_DAV_CACHE", NULL} #define STMT_52 \ "SELECT dav_cache FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_DELETION_INFO 53 #define STMT_53_INFO {"STMT_SELECT_DELETION_INFO", NULL} #define STMT_53 \ "SELECT b.presence, w.presence, w.op_depth, w.moved_to " \ "FROM nodes w " \ "LEFT JOIN nodes b ON b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0 " \ "WHERE w.wc_id = ?1 AND w.local_relpath = ?2 " \ " AND w.op_depth = (SELECT MAX(op_depth) FROM nodes d " \ " WHERE d.wc_id = ?1 AND d.local_relpath = ?2 " \ " AND d.op_depth > 0) " \ "LIMIT 1 " \ "" #define STMT_SELECT_MOVED_TO_NODE 54 #define STMT_54_INFO {"STMT_SELECT_MOVED_TO_NODE", NULL} #define STMT_54 \ "SELECT op_depth, moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND moved_to IS NOT NULL " \ "ORDER BY op_depth DESC " \ "" #define STMT_SELECT_OP_DEPTH_MOVED_TO 55 #define STMT_55_INFO {"STMT_SELECT_OP_DEPTH_MOVED_TO", NULL} #define STMT_55 \ "SELECT op_depth, moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 " \ " AND EXISTS(SELECT * from nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ " AND presence IN ('normal', 'incomplete')) " \ "ORDER BY op_depth ASC " \ "LIMIT 1 " \ "" #define STMT_SELECT_MOVED_TO 56 #define STMT_56_INFO {"STMT_SELECT_MOVED_TO", NULL} #define STMT_56 \ "SELECT moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" #define STMT_SELECT_MOVED_BACK 57 #define STMT_57_INFO {"STMT_SELECT_MOVED_BACK", NULL} #define STMT_57 \ "SELECT u.local_relpath, " \ " u.presence, u.repos_id, u.repos_path, u.revision, " \ " l.presence, l.repos_id, l.repos_path, l.revision, " \ " u.moved_here, u.moved_to " \ "FROM nodes u " \ "LEFT OUTER JOIN nodes l ON l.wc_id = ?1 " \ " AND l.local_relpath = u.local_relpath " \ " AND l.op_depth = ?3 " \ "WHERE u.wc_id = ?1 " \ " AND u.local_relpath = ?2 " \ " AND u.op_depth = ?4 " \ "UNION ALL " \ "SELECT u.local_relpath, " \ " u.presence, u.repos_id, u.repos_path, u.revision, " \ " l.presence, l.repos_id, l.repos_path, l.revision, " \ " u.moved_here, NULL " \ "FROM nodes u " \ "LEFT OUTER JOIN nodes l ON l.wc_id=?1 " \ " AND l.local_relpath=u.local_relpath " \ " AND l.op_depth=?3 " \ "WHERE u.wc_id = ?1 " \ " AND (((u.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((u.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND u.op_depth = ?4 " \ "" #define STMT_DELETE_LOCK 58 #define STMT_58_INFO {"STMT_DELETE_LOCK", NULL} #define STMT_58 \ "DELETE FROM lock " \ "WHERE repos_id = ?1 AND repos_relpath = ?2 " \ "" #define STMT_DELETE_LOCK_RECURSIVELY 59 #define STMT_59_INFO {"STMT_DELETE_LOCK_RECURSIVELY", NULL} #define STMT_59 \ "DELETE FROM lock " \ "WHERE repos_id = ?1 AND (repos_relpath = ?2 OR (((repos_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((repos_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ "" #define STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE 60 #define STMT_60_INFO {"STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE", NULL} #define STMT_60 \ "UPDATE nodes SET dav_cache = NULL " \ "WHERE dav_cache IS NOT NULL AND wc_id = ?1 AND op_depth = 0 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ "" #define STMT_RECURSIVE_UPDATE_NODE_REPO 61 #define STMT_61_INFO {"STMT_RECURSIVE_UPDATE_NODE_REPO", NULL} #define STMT_61 \ "UPDATE nodes SET repos_id = ?4, dav_cache = NULL " \ "WHERE (wc_id = ?1 AND local_relpath = ?2 AND repos_id = ?3) " \ " OR (wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND repos_id = ?3) " \ "" #define STMT_UPDATE_LOCK_REPOS_ID 62 #define STMT_62_INFO {"STMT_UPDATE_LOCK_REPOS_ID", NULL} #define STMT_62 \ "UPDATE lock SET repos_id = ?2 " \ "WHERE repos_id = ?1 " \ "" #define STMT_UPDATE_NODE_FILEINFO 63 #define STMT_63_INFO {"STMT_UPDATE_NODE_FILEINFO", NULL} #define STMT_63 \ "UPDATE nodes SET translated_size = ?3, last_mod_time = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND op_depth = (SELECT MAX(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2) " \ "" #define STMT_INSERT_ACTUAL_CONFLICT 64 #define STMT_64_INFO {"STMT_INSERT_ACTUAL_CONFLICT", NULL} #define STMT_64 \ "INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \ "VALUES (?1, ?2, ?3, ?4) " \ "" #define STMT_UPDATE_ACTUAL_CONFLICT 65 #define STMT_65_INFO {"STMT_UPDATE_ACTUAL_CONFLICT", NULL} #define STMT_65 \ "UPDATE actual_node SET conflict_data = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_UPDATE_ACTUAL_CHANGELISTS 66 #define STMT_66_INFO {"STMT_UPDATE_ACTUAL_CHANGELISTS", NULL} #define STMT_66 \ "UPDATE actual_node SET changelist = ?3 " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND local_relpath = (SELECT local_relpath FROM targets_list AS t " \ " WHERE wc_id = ?1 " \ " AND t.local_relpath = actual_node.local_relpath " \ " AND kind = 'file') " \ "" #define STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST 67 #define STMT_67_INFO {"STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST", NULL} #define STMT_67 \ "UPDATE actual_node SET changelist = NULL " \ " WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_MARK_SKIPPED_CHANGELIST_DIRS 68 #define STMT_68_INFO {"STMT_MARK_SKIPPED_CHANGELIST_DIRS", NULL} #define STMT_68 \ "INSERT INTO changelist_list (wc_id, local_relpath, notify, changelist) " \ "SELECT wc_id, local_relpath, 7, ?3 " \ "FROM targets_list " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND kind = 'dir' " \ "" #define STMT_RESET_ACTUAL_WITH_CHANGELIST 69 #define STMT_69_INFO {"STMT_RESET_ACTUAL_WITH_CHANGELIST", NULL} #define STMT_69 \ "REPLACE INTO actual_node ( " \ " wc_id, local_relpath, parent_relpath, changelist) " \ "VALUES (?1, ?2, ?3, ?4) " \ "" #define STMT_CREATE_CHANGELIST_LIST 70 #define STMT_70_INFO {"STMT_CREATE_CHANGELIST_LIST", NULL} #define STMT_70 \ "DROP TABLE IF EXISTS changelist_list; " \ "CREATE TEMPORARY TABLE changelist_list ( " \ " wc_id INTEGER NOT NULL, " \ " local_relpath TEXT NOT NULL, " \ " notify INTEGER NOT NULL, " \ " changelist TEXT NOT NULL, " \ " PRIMARY KEY (wc_id, local_relpath, notify DESC) " \ ") " \ "" #define STMT_CREATE_CHANGELIST_TRIGGER 71 #define STMT_71_INFO {"STMT_CREATE_CHANGELIST_TRIGGER", NULL} #define STMT_71 \ "DROP TRIGGER IF EXISTS trigger_changelist_list_change; " \ "CREATE TEMPORARY TRIGGER trigger_changelist_list_change " \ "BEFORE UPDATE ON actual_node " \ "WHEN old.changelist IS NOT new.changelist " \ "BEGIN " \ " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ " SELECT old.wc_id, old.local_relpath, 27, old.changelist " \ " WHERE old.changelist is NOT NULL; " \ " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ " SELECT new.wc_id, new.local_relpath, 26, new.changelist " \ " WHERE new.changelist IS NOT NULL; " \ "END " \ "" #define STMT_FINALIZE_CHANGELIST 72 #define STMT_72_INFO {"STMT_FINALIZE_CHANGELIST", NULL} #define STMT_72 \ "DROP TRIGGER trigger_changelist_list_change; " \ "DROP TABLE changelist_list; " \ "DROP TABLE targets_list " \ "" #define STMT_SELECT_CHANGELIST_LIST 73 #define STMT_73_INFO {"STMT_SELECT_CHANGELIST_LIST", NULL} #define STMT_73 \ "SELECT wc_id, local_relpath, notify, changelist " \ "FROM changelist_list " \ "ORDER BY wc_id, local_relpath ASC, notify DESC " \ "" #define STMT_CREATE_TARGETS_LIST 74 #define STMT_74_INFO {"STMT_CREATE_TARGETS_LIST", NULL} #define STMT_74 \ "DROP TABLE IF EXISTS targets_list; " \ "CREATE TEMPORARY TABLE targets_list ( " \ " wc_id INTEGER NOT NULL, " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " kind TEXT NOT NULL, " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ "" #define STMT_DROP_TARGETS_LIST 75 #define STMT_75_INFO {"STMT_DROP_TARGETS_LIST", NULL} #define STMT_75 \ "DROP TABLE targets_list " \ "" #define STMT_INSERT_TARGET 76 #define STMT_76_INFO {"STMT_INSERT_TARGET", NULL} #define STMT_76 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ "" #define STMT_INSERT_TARGET_DEPTH_FILES 77 #define STMT_77_INFO {"STMT_INSERT_TARGET_DEPTH_FILES", NULL} #define STMT_77 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 " \ " AND parent_relpath = ?2 " \ " AND kind = 'file' " \ "" #define STMT_INSERT_TARGET_DEPTH_IMMEDIATES 78 #define STMT_78_INFO {"STMT_INSERT_TARGET_DEPTH_IMMEDIATES", NULL} #define STMT_78 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 " \ " AND parent_relpath = ?2 " \ "" #define STMT_INSERT_TARGET_DEPTH_INFINITY 79 #define STMT_79_INFO {"STMT_INSERT_TARGET_DEPTH_INFINITY", NULL} #define STMT_79 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_INSERT_TARGET_WITH_CHANGELIST 80 #define STMT_80_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST", NULL} #define STMT_80 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ " WHERE N.wc_id = ?1 " \ " AND N.local_relpath = ?2 " \ " AND A.changelist = ?3 " \ "" #define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES 81 #define STMT_81_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES", NULL} #define STMT_81 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ " WHERE N.wc_id = ?1 " \ " AND N.parent_relpath = ?2 " \ " AND kind = 'file' " \ " AND A.changelist = ?3 " \ "" #define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES 82 #define STMT_82_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES", NULL} #define STMT_82 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ " WHERE N.wc_id = ?1 " \ " AND N.parent_relpath = ?2 " \ " AND A.changelist = ?3 " \ "" #define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY 83 #define STMT_83_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY", NULL} #define STMT_83 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ " WHERE N.wc_id = ?1 " \ " AND (((N.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((N.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND A.changelist = ?3 " \ "" #define STMT_INSERT_ACTUAL_EMPTIES 84 #define STMT_84_INFO {"STMT_INSERT_ACTUAL_EMPTIES", NULL} #define STMT_84 \ "INSERT OR IGNORE INTO actual_node ( " \ " wc_id, local_relpath, parent_relpath) " \ "SELECT wc_id, local_relpath, parent_relpath " \ "FROM targets_list " \ "" #define STMT_INSERT_ACTUAL_EMPTIES_FILES 85 #define STMT_85_INFO {"STMT_INSERT_ACTUAL_EMPTIES_FILES", NULL} #define STMT_85 \ "INSERT OR IGNORE INTO actual_node ( " \ " wc_id, local_relpath, parent_relpath) " \ "SELECT wc_id, local_relpath, parent_relpath " \ "FROM targets_list " \ "WHERE kind='file' " \ "" #define STMT_DELETE_ACTUAL_EMPTY 86 #define STMT_86_INFO {"STMT_DELETE_ACTUAL_EMPTY", NULL} #define STMT_86 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND properties IS NULL " \ " AND conflict_data IS NULL " \ " AND changelist IS NULL " \ " AND text_mod IS NULL " \ " AND older_checksum IS NULL " \ " AND right_checksum IS NULL " \ " AND left_checksum IS NULL " \ "" #define STMT_DELETE_ACTUAL_EMPTIES 87 #define STMT_87_INFO {"STMT_DELETE_ACTUAL_EMPTIES", NULL} #define STMT_87 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND properties IS NULL " \ " AND conflict_data IS NULL " \ " AND changelist IS NULL " \ " AND text_mod IS NULL " \ " AND older_checksum IS NULL " \ " AND right_checksum IS NULL " \ " AND left_checksum IS NULL " \ "" #define STMT_DELETE_BASE_NODE 88 #define STMT_88_INFO {"STMT_DELETE_BASE_NODE", NULL} #define STMT_88 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_DELETE_WORKING_NODE 89 #define STMT_89_INFO {"STMT_DELETE_WORKING_NODE", NULL} #define STMT_89 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND op_depth = (SELECT MAX(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0) " \ "" #define STMT_DELETE_LOWEST_WORKING_NODE 90 #define STMT_90_INFO {"STMT_DELETE_LOWEST_WORKING_NODE", NULL} #define STMT_90 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND op_depth = (SELECT MIN(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3) " \ " AND presence = 'base-deleted' " \ "" #define STMT_DELETE_NODE_ALL_LAYERS 91 #define STMT_91_INFO {"STMT_DELETE_NODE_ALL_LAYERS", NULL} #define STMT_91 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE 92 #define STMT_92_INFO {"STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE", NULL} #define STMT_92 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth >= ?3 " \ "" #define STMT_DELETE_ACTUAL_NODE 93 #define STMT_93_INFO {"STMT_DELETE_ACTUAL_NODE", NULL} #define STMT_93 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_DELETE_ACTUAL_NODE_RECURSIVE 94 #define STMT_94_INFO {"STMT_DELETE_ACTUAL_NODE_RECURSIVE", NULL} #define STMT_94 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ "" #define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST 95 #define STMT_95_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST", NULL} #define STMT_95 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ " AND (changelist IS NULL " \ " OR NOT EXISTS (SELECT 1 FROM nodes_current c " \ " WHERE c.wc_id = ?1 AND c.local_relpath = ?2 " \ " AND c.kind = 'file')) " \ "" #define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 96 #define STMT_96_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL} #define STMT_96 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND (changelist IS NULL " \ " OR NOT EXISTS (SELECT 1 FROM nodes_current c " \ " WHERE c.wc_id = ?1 " \ " AND c.local_relpath = actual_node.local_relpath " \ " AND c.kind = 'file')) " \ "" #define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST 97 #define STMT_97_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST", NULL} #define STMT_97 \ "UPDATE actual_node " \ "SET properties = NULL, " \ " text_mod = NULL, " \ " conflict_data = NULL, " \ " tree_conflict_data = NULL, " \ " older_checksum = NULL, " \ " left_checksum = NULL, " \ " right_checksum = NULL " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_CLEAR_ACTUAL_NODE_LEAVING_CONFLICT 98 #define STMT_98_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CONFLICT", NULL} #define STMT_98 \ "UPDATE actual_node " \ "SET properties = NULL, " \ " text_mod = NULL, " \ " tree_conflict_data = NULL, " \ " older_checksum = NULL, " \ " left_checksum = NULL, " \ " right_checksum = NULL, " \ " changelist = NULL " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 99 #define STMT_99_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL} #define STMT_99 \ "UPDATE actual_node " \ "SET properties = NULL, " \ " text_mod = NULL, " \ " conflict_data = NULL, " \ " tree_conflict_data = NULL, " \ " older_checksum = NULL, " \ " left_checksum = NULL, " \ " right_checksum = NULL " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ "" #define STMT_UPDATE_NODE_BASE_DEPTH 100 #define STMT_100_INFO {"STMT_UPDATE_NODE_BASE_DEPTH", NULL} #define STMT_100 \ "UPDATE nodes SET depth = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ " AND kind='dir' " \ " AND presence IN ('normal', 'incomplete') " \ "" #define STMT_UPDATE_NODE_BASE_PRESENCE 101 #define STMT_101_INFO {"STMT_UPDATE_NODE_BASE_PRESENCE", NULL} #define STMT_101 \ "UPDATE nodes SET presence = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH 102 #define STMT_102_INFO {"STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH", NULL} #define STMT_102 \ "UPDATE nodes SET presence = ?3, revision = ?4, repos_path = ?5 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_LOOK_FOR_WORK 103 #define STMT_103_INFO {"STMT_LOOK_FOR_WORK", NULL} #define STMT_103 \ "SELECT id FROM work_queue LIMIT 1 " \ "" #define STMT_INSERT_WORK_ITEM 104 #define STMT_104_INFO {"STMT_INSERT_WORK_ITEM", NULL} #define STMT_104 \ "INSERT INTO work_queue (work) VALUES (?1) " \ "" #define STMT_SELECT_WORK_ITEM 105 #define STMT_105_INFO {"STMT_SELECT_WORK_ITEM", NULL} #define STMT_105 \ "SELECT id, work FROM work_queue ORDER BY id LIMIT 1 " \ "" #define STMT_DELETE_WORK_ITEM 106 #define STMT_106_INFO {"STMT_DELETE_WORK_ITEM", NULL} #define STMT_106 \ "DELETE FROM work_queue WHERE id = ?1 " \ "" #define STMT_INSERT_OR_IGNORE_PRISTINE 107 #define STMT_107_INFO {"STMT_INSERT_OR_IGNORE_PRISTINE", NULL} #define STMT_107 \ "INSERT OR IGNORE INTO pristine (checksum, md5_checksum, size, refcount) " \ "VALUES (?1, ?2, ?3, 0) " \ "" #define STMT_INSERT_PRISTINE 108 #define STMT_108_INFO {"STMT_INSERT_PRISTINE", NULL} #define STMT_108 \ "INSERT INTO pristine (checksum, md5_checksum, size, refcount) " \ "VALUES (?1, ?2, ?3, 0) " \ "" #define STMT_SELECT_PRISTINE 109 #define STMT_109_INFO {"STMT_SELECT_PRISTINE", NULL} #define STMT_109 \ "SELECT md5_checksum " \ "FROM pristine " \ "WHERE checksum = ?1 " \ "" #define STMT_SELECT_PRISTINE_SIZE 110 #define STMT_110_INFO {"STMT_SELECT_PRISTINE_SIZE", NULL} #define STMT_110 \ "SELECT size " \ "FROM pristine " \ "WHERE checksum = ?1 LIMIT 1 " \ "" #define STMT_SELECT_PRISTINE_BY_MD5 111 #define STMT_111_INFO {"STMT_SELECT_PRISTINE_BY_MD5", NULL} #define STMT_111 \ "SELECT checksum " \ "FROM pristine " \ "WHERE md5_checksum = ?1 " \ "" #define STMT_SELECT_UNREFERENCED_PRISTINES 112 #define STMT_112_INFO {"STMT_SELECT_UNREFERENCED_PRISTINES", NULL} #define STMT_112 \ "SELECT checksum " \ "FROM pristine " \ "WHERE refcount = 0 " \ "" #define STMT_DELETE_PRISTINE_IF_UNREFERENCED 113 #define STMT_113_INFO {"STMT_DELETE_PRISTINE_IF_UNREFERENCED", NULL} #define STMT_113 \ "DELETE FROM pristine " \ "WHERE checksum = ?1 AND refcount = 0 " \ "" #define STMT_SELECT_COPY_PRISTINES 114 #define STMT_114_INFO {"STMT_SELECT_COPY_PRISTINES", NULL} #define STMT_114 \ "SELECT n.checksum, md5_checksum, size " \ "FROM nodes_current n " \ "LEFT JOIN pristine p ON n.checksum = p.checksum " \ "WHERE wc_id = ?1 " \ " AND n.local_relpath = ?2 " \ " AND n.checksum IS NOT NULL " \ "UNION ALL " \ "SELECT n.checksum, md5_checksum, size " \ "FROM nodes n " \ "LEFT JOIN pristine p ON n.checksum = p.checksum " \ "WHERE wc_id = ?1 " \ " AND (((n.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((n.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth >= " \ " (SELECT MAX(op_depth) FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2) " \ " AND n.checksum IS NOT NULL " \ "" #define STMT_VACUUM 115 #define STMT_115_INFO {"STMT_VACUUM", NULL} #define STMT_115 \ "VACUUM " \ "" #define STMT_SELECT_CONFLICT_VICTIMS 116 #define STMT_116_INFO {"STMT_SELECT_CONFLICT_VICTIMS", NULL} #define STMT_116 \ "SELECT local_relpath, conflict_data " \ "FROM actual_node " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND " \ " NOT (conflict_data IS NULL) " \ "" #define STMT_INSERT_WC_LOCK 117 #define STMT_117_INFO {"STMT_INSERT_WC_LOCK", NULL} #define STMT_117 \ "INSERT INTO wc_lock (wc_id, local_dir_relpath, locked_levels) " \ "VALUES (?1, ?2, ?3) " \ "" #define STMT_SELECT_WC_LOCK 118 #define STMT_118_INFO {"STMT_SELECT_WC_LOCK", NULL} #define STMT_118 \ "SELECT locked_levels FROM wc_lock " \ "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \ "" #define STMT_SELECT_ANCESTOR_WCLOCKS 119 #define STMT_119_INFO {"STMT_SELECT_ANCESTOR_WCLOCKS", NULL} #define STMT_119 \ "SELECT local_dir_relpath, locked_levels FROM wc_lock " \ "WHERE wc_id = ?1 " \ " AND ((local_dir_relpath >= ?3 AND local_dir_relpath <= ?2) " \ " OR local_dir_relpath = '') " \ "" #define STMT_DELETE_WC_LOCK 120 #define STMT_120_INFO {"STMT_DELETE_WC_LOCK", NULL} #define STMT_120 \ "DELETE FROM wc_lock " \ "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \ "" #define STMT_FIND_WC_LOCK 121 #define STMT_121_INFO {"STMT_FIND_WC_LOCK", NULL} #define STMT_121 \ "SELECT local_dir_relpath FROM wc_lock " \ "WHERE wc_id = ?1 " \ " AND (((local_dir_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_dir_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_FIND_CONFLICT_DESCENDANT 122 #define STMT_122_INFO {"STMT_FIND_CONFLICT_DESCENDANT", NULL} #define STMT_122 \ "SELECT 1 FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND local_relpath > (?2 || '/') " \ " AND local_relpath < (?2 || '0') " \ " AND conflict_data IS NOT NULL " \ "LIMIT 1 " \ "" #define STMT_DELETE_WC_LOCK_ORPHAN 123 #define STMT_123_INFO {"STMT_DELETE_WC_LOCK_ORPHAN", NULL} #define STMT_123 \ "DELETE FROM wc_lock " \ "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \ "AND NOT EXISTS (SELECT 1 FROM nodes " \ " WHERE nodes.wc_id = ?1 " \ " AND nodes.local_relpath = wc_lock.local_dir_relpath) " \ "" #define STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE 124 #define STMT_124_INFO {"STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE", NULL} #define STMT_124 \ "DELETE FROM wc_lock " \ "WHERE wc_id = ?1 " \ " AND (local_dir_relpath = ?2 " \ " OR (((local_dir_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_dir_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND NOT EXISTS (SELECT 1 FROM nodes " \ " WHERE nodes.wc_id = ?1 " \ " AND nodes.local_relpath = wc_lock.local_dir_relpath) " \ "" #define STMT_APPLY_CHANGES_TO_BASE_NODE 125 #define STMT_125_INFO {"STMT_APPLY_CHANGES_TO_BASE_NODE", NULL} #define STMT_125 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, dav_cache, symlink_target, " \ " inherited_props, file_external ) " \ "VALUES (?1, ?2, 0, " \ " ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, " \ " (SELECT file_external FROM nodes " \ " WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ " AND op_depth = 0)) " \ "" #define STMT_INSTALL_WORKING_NODE_FOR_DELETE 126 #define STMT_126_INFO {"STMT_INSTALL_WORKING_NODE_FOR_DELETE", NULL} #define STMT_126 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, " \ " parent_relpath, presence, kind) " \ "VALUES(?1, ?2, ?3, ?4, 'base-deleted', ?5) " \ "" #define STMT_REPLACE_WITH_BASE_DELETED 127 #define STMT_127_INFO {"STMT_REPLACE_WITH_BASE_DELETED", NULL} #define STMT_127 \ "INSERT OR REPLACE INTO nodes (wc_id, local_relpath, op_depth, parent_relpath, " \ " kind, moved_to, presence) " \ "SELECT wc_id, local_relpath, op_depth, parent_relpath, " \ " kind, moved_to, 'base-deleted' " \ " FROM nodes " \ " WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ " AND op_depth = ?3 " \ "" #define STMT_INSERT_DELETE_FROM_NODE_RECURSIVE 128 #define STMT_128_INFO {"STMT_INSERT_DELETE_FROM_NODE_RECURSIVE", NULL} #define STMT_128 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \ "SELECT wc_id, local_relpath, ?4 , parent_relpath, 'base-deleted', " \ " kind " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "UNION ALL " \ "SELECT wc_id, local_relpath, ?4 , parent_relpath, 'base-deleted', " \ " kind " \ "FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = ?3 " \ " AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'server-excluded') " \ " AND file_external IS NULL " \ "ORDER BY local_relpath " \ "" #define STMT_INSERT_WORKING_NODE_FROM_BASE_COPY 129 #define STMT_129_INFO {"STMT_INSERT_WORKING_NODE_FROM_BASE_COPY", NULL} #define STMT_129 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, last_mod_time, " \ " symlink_target, moved_to ) " \ "SELECT wc_id, local_relpath, ?3 , parent_relpath, repos_id, " \ " repos_path, revision, presence, depth, kind, changed_revision, " \ " changed_date, changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, " \ " (SELECT moved_to FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3) moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_INSERT_DELETE_FROM_BASE 130 #define STMT_130_INFO {"STMT_INSERT_DELETE_FROM_BASE", NULL} #define STMT_130 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \ "SELECT wc_id, local_relpath, ?3 , parent_relpath, " \ " 'base-deleted', kind " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE 131 #define STMT_131_INFO {"STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE", NULL} #define STMT_131 \ "UPDATE nodes SET op_depth = ?3 + 1 " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = ?3 " \ "" #define STMT_COPY_OP_DEPTH_RECURSIVE 132 #define STMT_132_INFO {"STMT_COPY_OP_DEPTH_RECURSIVE", NULL} #define STMT_132 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, last_mod_time, " \ " symlink_target, moved_here, moved_to ) " \ "SELECT " \ " wc_id, local_relpath, ?4, parent_relpath, repos_id, " \ " repos_path, revision, presence, depth, kind, changed_revision, " \ " changed_date, changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, NULL, NULL " \ "FROM nodes " \ "WHERE wc_id = ?1 AND op_depth = ?3 AND local_relpath = ?2 " \ "UNION ALL " \ "SELECT " \ " wc_id, local_relpath, ?4, parent_relpath, repos_id, " \ " repos_path, revision, presence, depth, kind, changed_revision, " \ " changed_date, changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, NULL, NULL " \ "FROM nodes " \ "WHERE wc_id = ?1 AND op_depth = ?3 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "ORDER BY local_relpath " \ "" #define STMT_DOES_NODE_EXIST 133 #define STMT_133_INFO {"STMT_DOES_NODE_EXIST", NULL} #define STMT_133 \ "SELECT 1 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 " \ "LIMIT 1 " \ "" #define STMT_HAS_SERVER_EXCLUDED_DESCENDANTS 134 #define STMT_134_INFO {"STMT_HAS_SERVER_EXCLUDED_DESCENDANTS", NULL} #define STMT_134 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 AND presence = 'server-excluded' " \ "LIMIT 1 " \ "" #define STMT_SELECT_ALL_EXCLUDED_DESCENDANTS 135 #define STMT_135_INFO {"STMT_SELECT_ALL_EXCLUDED_DESCENDANTS", NULL} #define STMT_135 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ " AND (presence = 'server-excluded' OR presence = 'excluded') " \ "" #define STMT_INSERT_WORKING_NODE_COPY_FROM 136 #define STMT_136_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM", NULL} #define STMT_136 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \ " repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \ " changed_date, changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, moved_to ) " \ "SELECT wc_id, ?3 , ?4 , ?5 , " \ " repos_id, repos_path, revision, ?6 , depth, " \ " ?7, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, " \ " (SELECT dst.moved_to FROM nodes AS dst " \ " WHERE dst.wc_id = ?1 " \ " AND dst.local_relpath = ?3 " \ " AND dst.op_depth = ?4) " \ "FROM nodes_current " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 137 #define STMT_137_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH", NULL} #define STMT_137 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \ " repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \ " changed_date, changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, moved_to ) " \ "SELECT wc_id, ?3 , ?4 , ?5 , " \ " repos_id, repos_path, revision, ?6 , depth, " \ " ?8 , kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, " \ " last_mod_time, symlink_target, " \ " (SELECT dst.moved_to FROM nodes AS dst " \ " WHERE dst.wc_id = ?1 " \ " AND dst.local_relpath = ?3 " \ " AND dst.op_depth = ?4) " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?7 " \ "" #define STMT_UPDATE_BASE_REVISION 138 #define STMT_138_INFO {"STMT_UPDATE_BASE_REVISION", NULL} #define STMT_138 \ "UPDATE nodes SET revision = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_UPDATE_BASE_REPOS 139 #define STMT_139_INFO {"STMT_UPDATE_BASE_REPOS", NULL} #define STMT_139 \ "UPDATE nodes SET repos_id = ?3, repos_path = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_ACTUAL_HAS_CHILDREN 140 #define STMT_140_INFO {"STMT_ACTUAL_HAS_CHILDREN", NULL} #define STMT_140 \ "SELECT 1 FROM actual_node " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "LIMIT 1 " \ "" #define STMT_INSERT_EXTERNAL 141 #define STMT_141_INFO {"STMT_INSERT_EXTERNAL", NULL} #define STMT_141 \ "INSERT OR REPLACE INTO externals ( " \ " wc_id, local_relpath, parent_relpath, presence, kind, def_local_relpath, " \ " repos_id, def_repos_relpath, def_operational_revision, def_revision) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10) " \ "" #define STMT_SELECT_EXTERNAL_INFO 142 #define STMT_142_INFO {"STMT_SELECT_EXTERNAL_INFO", NULL} #define STMT_142 \ "SELECT presence, kind, def_local_relpath, repos_id, " \ " def_repos_relpath, def_operational_revision, def_revision " \ "FROM externals WHERE wc_id = ?1 AND local_relpath = ?2 " \ "LIMIT 1 " \ "" #define STMT_DELETE_FILE_EXTERNALS 143 #define STMT_143_INFO {"STMT_DELETE_FILE_EXTERNALS", NULL} #define STMT_143 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ " AND file_external IS NOT NULL " \ "" #define STMT_DELETE_FILE_EXTERNAL_REGISTATIONS 144 #define STMT_144_INFO {"STMT_DELETE_FILE_EXTERNAL_REGISTATIONS", NULL} #define STMT_144 \ "DELETE FROM externals " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND kind != 'dir' " \ "" #define STMT_DELETE_EXTERNAL_REGISTATIONS 145 #define STMT_145_INFO {"STMT_DELETE_EXTERNAL_REGISTATIONS", NULL} #define STMT_145 \ "DELETE FROM externals " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW 146 #define STMT_146_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW", NULL} #define STMT_146 \ "SELECT local_relpath, kind, def_repos_relpath, " \ " (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \ "FROM externals e " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND def_revision IS NULL " \ " AND repos_id = (SELECT repos_id " \ " FROM nodes AS n " \ " WHERE n.wc_id = ?1 " \ " AND n.local_relpath = '' " \ " AND n.op_depth = 0) " \ " AND ((kind='dir') " \ " OR EXISTS (SELECT 1 FROM nodes " \ " WHERE nodes.wc_id = e.wc_id " \ " AND nodes.local_relpath = e.parent_relpath)) " \ "" #define STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW 147 #define STMT_147_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW", NULL} #define STMT_147 \ "SELECT local_relpath, kind, def_repos_relpath, " \ " (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \ "FROM externals e " \ "WHERE wc_id = ?1 " \ " AND (((e.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((e.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND parent_relpath = ?2 " \ " AND def_revision IS NULL " \ " AND repos_id = (SELECT repos_id " \ " FROM nodes AS n " \ " WHERE n.wc_id = ?1 " \ " AND n.local_relpath = '' " \ " AND n.op_depth = 0) " \ " AND ((kind='dir') " \ " OR EXISTS (SELECT 1 FROM nodes " \ " WHERE nodes.wc_id = e.wc_id " \ " AND nodes.local_relpath = e.parent_relpath)) " \ "" #define STMT_SELECT_EXTERNALS_DEFINED 148 #define STMT_148_INFO {"STMT_SELECT_EXTERNALS_DEFINED", NULL} #define STMT_148 \ "SELECT local_relpath, def_local_relpath " \ "FROM externals " \ "WHERE (wc_id = ?1 AND def_local_relpath = ?2) " \ " OR (wc_id = ?1 AND (((def_local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((def_local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ "" #define STMT_DELETE_EXTERNAL 149 #define STMT_149_INFO {"STMT_DELETE_EXTERNAL", NULL} #define STMT_149 \ "DELETE FROM externals " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" #define STMT_SELECT_EXTERNAL_PROPERTIES 150 #define STMT_150_INFO {"STMT_SELECT_EXTERNAL_PROPERTIES", NULL} #define STMT_150 \ "SELECT IFNULL((SELECT properties FROM actual_node a " \ " WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \ " properties), " \ " local_relpath, depth " \ "FROM nodes_current n " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \ "UNION ALL " \ "SELECT IFNULL((SELECT properties FROM actual_node a " \ " WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \ " properties), " \ " local_relpath, depth " \ "FROM nodes_current n " \ "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \ "" #define STMT_SELECT_CURRENT_PROPS_RECURSIVE 151 #define STMT_151_INFO {"STMT_SELECT_CURRENT_PROPS_RECURSIVE", NULL} #define STMT_151 \ "SELECT IFNULL((SELECT properties FROM actual_node a " \ " WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \ " properties), " \ " local_relpath " \ "FROM nodes_current n " \ "WHERE (wc_id = ?1 AND local_relpath = ?2) " \ " OR (wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ "" #define STMT_PRAGMA_LOCKING_MODE 152 #define STMT_152_INFO {"STMT_PRAGMA_LOCKING_MODE", NULL} #define STMT_152 \ "PRAGMA locking_mode = exclusive; " \ "PRAGMA journal_mode = DELETE " \ "" #define STMT_FIND_REPOS_PATH_IN_WC 153 #define STMT_153_INFO {"STMT_FIND_REPOS_PATH_IN_WC", NULL} #define STMT_153 \ "SELECT local_relpath FROM nodes_current " \ " WHERE wc_id = ?1 AND repos_path = ?2 " \ "" #define STMT_INSERT_ACTUAL_NODE 154 #define STMT_154_INFO {"STMT_INSERT_ACTUAL_NODE", NULL} #define STMT_154 \ "INSERT OR REPLACE INTO actual_node ( " \ " wc_id, local_relpath, parent_relpath, properties, changelist, conflict_data) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \ "" #define STMT_SELECT_ALL_FILES 155 #define STMT_155_INFO {"STMT_SELECT_ALL_FILES", NULL} #define STMT_155 \ "SELECT local_relpath FROM nodes_current " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND kind = 'file' " \ "" #define STMT_UPDATE_NODE_PROPS 156 #define STMT_156_INFO {"STMT_UPDATE_NODE_PROPS", NULL} #define STMT_156 \ "UPDATE nodes SET properties = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" #define STMT_PRAGMA_TABLE_INFO_NODES 157 #define STMT_157_INFO {"STMT_PRAGMA_TABLE_INFO_NODES", NULL} #define STMT_157 \ "PRAGMA table_info(\"NODES\") " \ "" #define STMT_CREATE_TARGET_PROP_CACHE 158 #define STMT_158_INFO {"STMT_CREATE_TARGET_PROP_CACHE", NULL} #define STMT_158 \ "DROP TABLE IF EXISTS target_prop_cache; " \ "CREATE TEMPORARY TABLE target_prop_cache ( " \ " local_relpath TEXT NOT NULL PRIMARY KEY, " \ " kind TEXT NOT NULL, " \ " properties BLOB " \ "); " \ "" #define STMT_CACHE_TARGET_PROPS 159 #define STMT_159_INFO {"STMT_CACHE_TARGET_PROPS", NULL} #define STMT_159 \ "INSERT INTO target_prop_cache(local_relpath, kind, properties) " \ " SELECT n.local_relpath, n.kind, " \ " IFNULL((SELECT properties FROM actual_node AS a " \ " WHERE a.wc_id = n.wc_id " \ " AND a.local_relpath = n.local_relpath), " \ " n.properties) " \ " FROM targets_list AS t " \ " JOIN nodes AS n " \ " ON n.wc_id = ?1 " \ " AND n.local_relpath = t.local_relpath " \ " AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3 " \ " WHERE n3.wc_id = ?1 " \ " AND n3.local_relpath = t.local_relpath) " \ " WHERE t.wc_id = ?1 " \ " AND (presence='normal' OR presence='incomplete') " \ " ORDER BY t.local_relpath " \ "" #define STMT_CACHE_TARGET_PRISTINE_PROPS 160 #define STMT_160_INFO {"STMT_CACHE_TARGET_PRISTINE_PROPS", NULL} #define STMT_160 \ "INSERT INTO target_prop_cache(local_relpath, kind, properties) " \ " SELECT n.local_relpath, n.kind, " \ " CASE n.presence " \ " WHEN 'base-deleted' " \ " THEN (SELECT properties FROM nodes AS p " \ " WHERE p.wc_id = n.wc_id " \ " AND p.local_relpath = n.local_relpath " \ " AND p.op_depth < n.op_depth " \ " ORDER BY p.op_depth DESC ) " \ " ELSE properties END " \ " FROM targets_list AS t " \ " JOIN nodes AS n " \ " ON n.wc_id = ?1 " \ " AND n.local_relpath = t.local_relpath " \ " AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3 " \ " WHERE n3.wc_id = ?1 " \ " AND n3.local_relpath = t.local_relpath) " \ " WHERE t.wc_id = ?1 " \ " AND (presence = 'normal' " \ " OR presence = 'incomplete' " \ " OR presence = 'base-deleted') " \ " ORDER BY t.local_relpath " \ "" #define STMT_SELECT_ALL_TARGET_PROP_CACHE 161 #define STMT_161_INFO {"STMT_SELECT_ALL_TARGET_PROP_CACHE", NULL} #define STMT_161 \ "SELECT local_relpath, properties FROM target_prop_cache " \ "ORDER BY local_relpath " \ "" #define STMT_DROP_TARGET_PROP_CACHE 162 #define STMT_162_INFO {"STMT_DROP_TARGET_PROP_CACHE", NULL} #define STMT_162 \ "DROP TABLE target_prop_cache; " \ "" #define STMT_CREATE_REVERT_LIST 163 #define STMT_163_INFO {"STMT_CREATE_REVERT_LIST", NULL} #define STMT_163 \ "DROP TABLE IF EXISTS revert_list; " \ "CREATE TEMPORARY TABLE revert_list ( " \ " local_relpath TEXT NOT NULL, " \ " actual INTEGER NOT NULL, " \ " conflict_data BLOB, " \ " notify INTEGER, " \ " op_depth INTEGER, " \ " repos_id INTEGER, " \ " kind TEXT, " \ " PRIMARY KEY (local_relpath, actual) " \ " ); " \ "DROP TRIGGER IF EXISTS trigger_revert_list_nodes; " \ "CREATE TEMPORARY TRIGGER trigger_revert_list_nodes " \ "BEFORE DELETE ON nodes " \ "BEGIN " \ " INSERT OR REPLACE INTO revert_list(local_relpath, actual, op_depth, " \ " repos_id, kind) " \ " SELECT OLD.local_relpath, 0, OLD.op_depth, OLD.repos_id, OLD.kind; " \ "END; " \ "DROP TRIGGER IF EXISTS trigger_revert_list_actual_delete; " \ "CREATE TEMPORARY TRIGGER trigger_revert_list_actual_delete " \ "BEFORE DELETE ON actual_node " \ "BEGIN " \ " INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_data, " \ " notify) " \ " SELECT OLD.local_relpath, 1, OLD.conflict_data, " \ " CASE " \ " WHEN OLD.properties IS NOT NULL " \ " THEN 1 " \ " WHEN NOT EXISTS(SELECT 1 FROM NODES n " \ " WHERE n.wc_id = OLD.wc_id " \ " AND n.local_relpath = OLD.local_relpath) " \ " THEN 1 " \ " END notify " \ " WHERE OLD.conflict_data IS NOT NULL " \ " OR notify IS NOT NULL; " \ "END; " \ "DROP TRIGGER IF EXISTS trigger_revert_list_actual_update; " \ "CREATE TEMPORARY TRIGGER trigger_revert_list_actual_update " \ "BEFORE UPDATE ON actual_node " \ "BEGIN " \ " INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_data, " \ " notify) " \ " SELECT OLD.local_relpath, 1, OLD.conflict_data, " \ " CASE " \ " WHEN OLD.properties IS NOT NULL " \ " THEN 1 " \ " WHEN NOT EXISTS(SELECT 1 FROM NODES n " \ " WHERE n.wc_id = OLD.wc_id " \ " AND n.local_relpath = OLD.local_relpath) " \ " THEN 1 " \ " END notify " \ " WHERE OLD.conflict_data IS NOT NULL " \ " OR notify IS NOT NULL; " \ "END " \ "" #define STMT_DROP_REVERT_LIST_TRIGGERS 164 #define STMT_164_INFO {"STMT_DROP_REVERT_LIST_TRIGGERS", NULL} #define STMT_164 \ "DROP TRIGGER trigger_revert_list_nodes; " \ "DROP TRIGGER trigger_revert_list_actual_delete; " \ "DROP TRIGGER trigger_revert_list_actual_update " \ "" #define STMT_SELECT_REVERT_LIST 165 #define STMT_165_INFO {"STMT_SELECT_REVERT_LIST", NULL} #define STMT_165 \ "SELECT actual, notify, kind, op_depth, repos_id, conflict_data " \ "FROM revert_list " \ "WHERE local_relpath = ?1 " \ "ORDER BY actual DESC " \ "" #define STMT_SELECT_REVERT_LIST_COPIED_CHILDREN 166 #define STMT_166_INFO {"STMT_SELECT_REVERT_LIST_COPIED_CHILDREN", NULL} #define STMT_166 \ "SELECT local_relpath, kind " \ "FROM revert_list " \ "WHERE (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END)) " \ " AND op_depth >= ?2 " \ " AND repos_id IS NOT NULL " \ "ORDER BY local_relpath " \ "" #define STMT_DELETE_REVERT_LIST 167 #define STMT_167_INFO {"STMT_DELETE_REVERT_LIST", NULL} #define STMT_167 \ "DELETE FROM revert_list WHERE local_relpath = ?1 " \ "" #define STMT_SELECT_REVERT_LIST_RECURSIVE 168 #define STMT_168_INFO {"STMT_SELECT_REVERT_LIST_RECURSIVE", NULL} #define STMT_168 \ "SELECT p.local_relpath, n.kind, a.notify, a.kind " \ "FROM (SELECT DISTINCT local_relpath " \ " FROM revert_list " \ " WHERE (local_relpath = ?1 " \ " OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END)))) p " \ "LEFT JOIN revert_list n ON n.local_relpath=p.local_relpath AND n.actual=0 " \ "LEFT JOIN revert_list a ON a.local_relpath=p.local_relpath AND a.actual=1 " \ "ORDER BY p.local_relpath " \ "" #define STMT_DELETE_REVERT_LIST_RECURSIVE 169 #define STMT_169_INFO {"STMT_DELETE_REVERT_LIST_RECURSIVE", NULL} #define STMT_169 \ "DELETE FROM revert_list " \ "WHERE (local_relpath = ?1 " \ " OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END))) " \ "" #define STMT_DROP_REVERT_LIST 170 #define STMT_170_INFO {"STMT_DROP_REVERT_LIST", NULL} #define STMT_170 \ "DROP TABLE IF EXISTS revert_list " \ "" #define STMT_CREATE_DELETE_LIST 171 #define STMT_171_INFO {"STMT_CREATE_DELETE_LIST", NULL} #define STMT_171 \ "DROP TABLE IF EXISTS delete_list; " \ "CREATE TEMPORARY TABLE delete_list ( " \ " local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE " \ " ) " \ "" #define STMT_INSERT_DELETE_LIST 172 #define STMT_172_INFO {"STMT_INSERT_DELETE_LIST", NULL} #define STMT_172 \ "INSERT INTO delete_list(local_relpath) " \ "SELECT ?2 " \ "UNION ALL " \ "SELECT local_relpath FROM nodes AS n " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth >= ?3 " \ " AND op_depth = (SELECT MAX(s.op_depth) FROM nodes AS s " \ " WHERE s.wc_id = ?1 " \ " AND s.local_relpath = n.local_relpath) " \ " AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'server-excluded') " \ " AND file_external IS NULL " \ "ORDER by local_relpath " \ "" #define STMT_SELECT_DELETE_LIST 173 #define STMT_173_INFO {"STMT_SELECT_DELETE_LIST", NULL} #define STMT_173 \ "SELECT local_relpath FROM delete_list " \ "ORDER BY local_relpath " \ "" #define STMT_FINALIZE_DELETE 174 #define STMT_174_INFO {"STMT_FINALIZE_DELETE", NULL} #define STMT_174 \ "DROP TABLE IF EXISTS delete_list " \ "" #define STMT_CREATE_UPDATE_MOVE_LIST 175 #define STMT_175_INFO {"STMT_CREATE_UPDATE_MOVE_LIST", NULL} #define STMT_175 \ "DROP TABLE IF EXISTS update_move_list; " \ "CREATE TEMPORARY TABLE update_move_list ( " \ " local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE, " \ " action INTEGER NOT NULL, " \ " kind TEXT NOT NULL, " \ " content_state INTEGER NOT NULL, " \ " prop_state INTEGER NOT NULL " \ " ) " \ "" #define STMT_INSERT_UPDATE_MOVE_LIST 176 #define STMT_176_INFO {"STMT_INSERT_UPDATE_MOVE_LIST", NULL} #define STMT_176 \ "INSERT INTO update_move_list(local_relpath, action, kind, content_state, " \ " prop_state) " \ "VALUES (?1, ?2, ?3, ?4, ?5) " \ "" #define STMT_SELECT_UPDATE_MOVE_LIST 177 #define STMT_177_INFO {"STMT_SELECT_UPDATE_MOVE_LIST", NULL} #define STMT_177 \ "SELECT local_relpath, action, kind, content_state, prop_state " \ "FROM update_move_list " \ "ORDER BY local_relpath " \ "" #define STMT_FINALIZE_UPDATE_MOVE 178 #define STMT_178_INFO {"STMT_FINALIZE_UPDATE_MOVE", NULL} #define STMT_178 \ "DROP TABLE IF EXISTS update_move_list " \ "" #define STMT_MOVE_NOTIFY_TO_REVERT 179 #define STMT_179_INFO {"STMT_MOVE_NOTIFY_TO_REVERT", NULL} #define STMT_179 \ "INSERT INTO revert_list (local_relpath, notify, kind, actual) " \ " SELECT local_relpath, 2, kind, 1 FROM update_move_list; " \ "DROP TABLE update_move_list " \ "" #define STMT_SELECT_MIN_MAX_REVISIONS 180 #define STMT_180_INFO {"STMT_SELECT_MIN_MAX_REVISIONS", NULL} #define STMT_180 \ "SELECT MIN(revision), MAX(revision), " \ " MIN(changed_revision), MAX(changed_revision) FROM nodes " \ " WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND presence IN ('normal', 'incomplete') " \ " AND file_external IS NULL " \ " AND op_depth = 0 " \ "" #define STMT_HAS_SPARSE_NODES 181 #define STMT_181_INFO {"STMT_HAS_SPARSE_NODES", NULL} #define STMT_181 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth = 0 " \ " AND (presence IN ('server-excluded', 'excluded') " \ " OR depth NOT IN ('infinity', 'unknown')) " \ " AND file_external IS NULL " \ "LIMIT 1 " \ "" #define STMT_SUBTREE_HAS_TREE_MODIFICATIONS 182 #define STMT_182_INFO {"STMT_SUBTREE_HAS_TREE_MODIFICATIONS", NULL} #define STMT_182 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth > 0 " \ "LIMIT 1 " \ "" #define STMT_SUBTREE_HAS_PROP_MODIFICATIONS 183 #define STMT_183_INFO {"STMT_SUBTREE_HAS_PROP_MODIFICATIONS", NULL} #define STMT_183 \ "SELECT 1 FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND properties IS NOT NULL " \ "LIMIT 1 " \ "" #define STMT_HAS_SWITCHED 184 #define STMT_184_INFO {"STMT_HAS_SWITCHED", NULL} #define STMT_184 \ "SELECT 1 " \ "FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ " AND file_external IS NULL " \ " AND presence IN ('normal', 'incomplete') " \ " AND repos_path IS NOT (CASE WHEN (?2) = '' THEN (CASE WHEN (?3) = '' THEN (local_relpath) WHEN (local_relpath) = '' THEN (?3) ELSE (?3) || '/' || (local_relpath) END) WHEN (?3) = '' THEN (CASE WHEN (?2) = '' THEN (local_relpath) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN '' WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN (?3) WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?3) || SUBSTR((local_relpath), LENGTH(?2)+1) END END) " \ "LIMIT 1 " \ "" #define STMT_SELECT_MOVED_FROM_RELPATH 185 #define STMT_185_INFO {"STMT_SELECT_MOVED_FROM_RELPATH", NULL} #define STMT_185 \ "SELECT local_relpath, op_depth FROM nodes " \ "WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \ "" #define STMT_UPDATE_MOVED_TO_RELPATH 186 #define STMT_186_INFO {"STMT_UPDATE_MOVED_TO_RELPATH", NULL} #define STMT_186 \ "UPDATE nodes SET moved_to = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" #define STMT_CLEAR_MOVED_TO_RELPATH 187 #define STMT_187_INFO {"STMT_CLEAR_MOVED_TO_RELPATH", NULL} #define STMT_187 \ "UPDATE nodes SET moved_to = NULL " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" #define STMT_CLEAR_MOVED_HERE_RECURSIVE 188 #define STMT_188_INFO {"STMT_CLEAR_MOVED_HERE_RECURSIVE", NULL} #define STMT_188 \ "UPDATE nodes SET moved_here = NULL " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth = ?3 " \ "" #define STMT_SELECT_MOVED_HERE_CHILDREN 189 #define STMT_189_INFO {"STMT_SELECT_MOVED_HERE_CHILDREN", NULL} #define STMT_189 \ "SELECT moved_to, local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND op_depth > 0 " \ " AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_SELECT_MOVED_FOR_DELETE 190 #define STMT_190_INFO {"STMT_SELECT_MOVED_FOR_DELETE", NULL} #define STMT_190 \ "SELECT local_relpath, moved_to, op_depth, " \ " (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r " \ " WHERE r.wc_id = ?1 " \ " AND r.local_relpath = n.local_relpath " \ " AND r.op_depth < n.op_depth " \ " ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth " \ " FROM nodes n " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND moved_to IS NOT NULL " \ " AND op_depth >= ?3 " \ "" #define STMT_SELECT_MOVED_FROM_FOR_DELETE 191 #define STMT_191_INFO {"STMT_SELECT_MOVED_FROM_FOR_DELETE", NULL} #define STMT_191 \ "SELECT local_relpath, op_depth, " \ " (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r " \ " WHERE r.wc_id = ?1 " \ " AND r.local_relpath = n.local_relpath " \ " AND r.op_depth < n.op_depth " \ " ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth " \ " FROM nodes n " \ "WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \ "" #define STMT_UPDATE_MOVED_TO_DESCENDANTS 192 #define STMT_192_INFO {"STMT_UPDATE_MOVED_TO_DESCENDANTS", NULL} #define STMT_192 \ "UPDATE nodes SET moved_to = (CASE WHEN (?2) = '' THEN (CASE WHEN (?3) = '' THEN (moved_to) WHEN (moved_to) = '' THEN (?3) ELSE (?3) || '/' || (moved_to) END) WHEN (?3) = '' THEN (CASE WHEN (?2) = '' THEN (moved_to) WHEN SUBSTR((moved_to), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(moved_to) THEN '' WHEN SUBSTR((moved_to), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((moved_to), LENGTH(?2)+2) END END) WHEN SUBSTR((moved_to), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(moved_to) THEN (?3) WHEN SUBSTR((moved_to), LENGTH(?2)+1, 1) = '/' THEN (?3) || SUBSTR((moved_to), LENGTH(?2)+1) END END) " \ " WHERE wc_id = ?1 " \ " AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_CLEAR_MOVED_TO_DESCENDANTS 193 #define STMT_193_INFO {"STMT_CLEAR_MOVED_TO_DESCENDANTS", NULL} #define STMT_193 \ "UPDATE nodes SET moved_to = NULL " \ " WHERE wc_id = ?1 " \ " AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_SELECT_MOVED_PAIR3 194 #define STMT_194_INFO {"STMT_SELECT_MOVED_PAIR3", NULL} #define STMT_194 \ "SELECT n.local_relpath, d.moved_to, d.op_depth, n.kind " \ "FROM nodes n " \ "JOIN nodes d ON d.wc_id = ?1 AND d.local_relpath = n.local_relpath " \ " AND d.op_depth = (SELECT MIN(dd.op_depth) " \ " FROM nodes dd " \ " WHERE dd.wc_id = ?1 " \ " AND dd.local_relpath = d.local_relpath " \ " AND dd.op_depth > ?3) " \ "WHERE n.wc_id = ?1 AND n.local_relpath = ?2 AND n.op_depth = ?3 " \ " AND d.moved_to IS NOT NULL " \ "UNION ALL " \ "SELECT n.local_relpath, d.moved_to, d.op_depth, n.kind " \ "FROM nodes n " \ "JOIN nodes d ON d.wc_id = ?1 AND d.local_relpath = n.local_relpath " \ " AND d.op_depth = (SELECT MIN(dd.op_depth) " \ " FROM nodes dd " \ " WHERE dd.wc_id = ?1 " \ " AND dd.local_relpath = d.local_relpath " \ " AND dd.op_depth > ?3) " \ "WHERE n.wc_id = ?1 AND (((n.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((n.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND n.op_depth = ?3 " \ " AND d.moved_to IS NOT NULL " \ "ORDER BY n.local_relpath " \ "" #define STMT_SELECT_MOVED_OUTSIDE 195 #define STMT_195_INFO {"STMT_SELECT_MOVED_OUTSIDE", NULL} #define STMT_195 \ "SELECT local_relpath, moved_to, op_depth FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth >= ?3 " \ " AND moved_to IS NOT NULL " \ " AND NOT (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" #define STMT_SELECT_MOVED_DESCENDANTS_SRC 196 #define STMT_196_INFO {"STMT_SELECT_MOVED_DESCENDANTS_SRC", NULL} #define STMT_196 \ "SELECT s.op_depth, n.local_relpath, n.kind, n.repos_path, s.moved_to " \ "FROM nodes n " \ "JOIN nodes s ON s.wc_id = n.wc_id AND s.local_relpath = n.local_relpath " \ " AND s.op_depth = (SELECT MIN(d.op_depth) " \ " FROM nodes d " \ " WHERE d.wc_id = ?1 " \ " AND d.local_relpath = s.local_relpath " \ " AND d.op_depth > ?3) " \ "WHERE n.wc_id = ?1 AND n.op_depth = ?3 " \ " AND (n.local_relpath = ?2 OR (((n.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((n.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND s.moved_to IS NOT NULL " \ "" #define STMT_COMMIT_UPDATE_ORIGIN 197 #define STMT_197_INFO {"STMT_COMMIT_UPDATE_ORIGIN", NULL} #define STMT_197 \ "UPDATE nodes SET repos_id = ?4, " \ " repos_path = (CASE WHEN (?2) = '' THEN (CASE WHEN (?5) = '' THEN (local_relpath) WHEN (local_relpath) = '' THEN (?5) ELSE (?5) || '/' || (local_relpath) END) WHEN (?5) = '' THEN (CASE WHEN (?2) = '' THEN (local_relpath) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN '' WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN (?5) WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?5) || SUBSTR((local_relpath), LENGTH(?2)+1) END END), " \ " revision = ?6 " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth = ?3 " \ "" #define STMT_HAS_LAYER_BETWEEN 198 #define STMT_198_INFO {"STMT_HAS_LAYER_BETWEEN", NULL} #define STMT_198 \ "SELECT 1 FROM NODES " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 AND op_depth < ?4 " \ "" #define STMT_SELECT_REPOS_PATH_REVISION 199 #define STMT_199_INFO {"STMT_SELECT_REPOS_PATH_REVISION", NULL} #define STMT_199 \ "SELECT local_relpath, repos_path, revision FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ "ORDER BY local_relpath " \ "" #define STMT_SELECT_HAS_NON_FILE_CHILDREN 200 #define STMT_200_INFO {"STMT_SELECT_HAS_NON_FILE_CHILDREN", NULL} #define STMT_200 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = ?3 AND kind != 'file' " \ "LIMIT 1 " \ "" #define STMT_SELECT_HAS_GRANDCHILDREN 201 #define STMT_201_INFO {"STMT_SELECT_HAS_GRANDCHILDREN", NULL} #define STMT_201 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((parent_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((parent_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = ?3 " \ " AND file_external IS NULL " \ "LIMIT 1 " \ "" #define STMT_SELECT_ALL_NODES 202 #define STMT_202_INFO {"STMT_SELECT_ALL_NODES", NULL} #define STMT_202 \ "SELECT op_depth, local_relpath, parent_relpath, file_external FROM nodes " \ "WHERE wc_id = ?1 " \ "" #define STMT_UPDATE_IPROP 203 #define STMT_203_INFO {"STMT_UPDATE_IPROP", NULL} #define STMT_203 \ "UPDATE nodes " \ "SET inherited_props = ?3 " \ "WHERE (wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0) " \ "" #define STMT_SELECT_IPROPS_NODE 204 #define STMT_204_INFO {"STMT_SELECT_IPROPS_NODE", NULL} #define STMT_204 \ "SELECT local_relpath, repos_path FROM nodes " \ "WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ " AND op_depth = 0 " \ " AND (inherited_props not null) " \ "" #define STMT_SELECT_IPROPS_RECURSIVE 205 #define STMT_205_INFO {"STMT_SELECT_IPROPS_RECURSIVE", NULL} #define STMT_205 \ "SELECT local_relpath, repos_path FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ " AND (inherited_props not null) " \ "" #define STMT_SELECT_IPROPS_CHILDREN 206 #define STMT_206_INFO {"STMT_SELECT_IPROPS_CHILDREN", NULL} #define STMT_206 \ "SELECT local_relpath, repos_path FROM nodes " \ "WHERE wc_id = ?1 " \ " AND parent_relpath = ?2 " \ " AND op_depth = 0 " \ " AND (inherited_props not null) " \ "" #define STMT_HAVE_STAT1_TABLE 207 #define STMT_207_INFO {"STMT_HAVE_STAT1_TABLE", NULL} #define STMT_207 \ "SELECT 1 FROM sqlite_master WHERE name='sqlite_stat1' AND type='table' " \ "LIMIT 1 " \ "" #define STMT_SELECT_COPIES_OF_REPOS_RELPATH 208 #define STMT_208_INFO {"STMT_SELECT_COPIES_OF_REPOS_RELPATH", NULL} #define STMT_208 \ "SELECT local_relpath " \ "FROM nodes n " \ "WHERE wc_id = ?1 AND repos_path = ?2 AND kind = ?3 " \ " AND presence = 'normal' " \ " AND op_depth = (SELECT MAX(op_depth) " \ " FROM NODES w " \ " WHERE w.wc_id = ?1 " \ " AND w.local_relpath = n.local_relpath) " \ "ORDER BY local_relpath ASC " \ "" #define STMT_CREATE_SCHEMA 209 #define STMT_209_INFO {"STMT_CREATE_SCHEMA", NULL} #define STMT_209 \ "CREATE TABLE REPOSITORY ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " root TEXT UNIQUE NOT NULL, " \ " uuid TEXT NOT NULL " \ " ); " \ "CREATE INDEX I_UUID ON REPOSITORY (uuid); " \ "CREATE INDEX I_ROOT ON REPOSITORY (root); " \ "CREATE TABLE WCROOT ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " local_abspath TEXT UNIQUE " \ " ); " \ "CREATE UNIQUE INDEX I_LOCAL_ABSPATH ON WCROOT (local_abspath); " \ "CREATE TABLE PRISTINE ( " \ " checksum TEXT NOT NULL PRIMARY KEY, " \ " compression INTEGER, " \ " size INTEGER NOT NULL, " \ " refcount INTEGER NOT NULL, " \ " md5_checksum TEXT NOT NULL " \ " ); " \ "CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \ "CREATE TABLE ACTUAL_NODE ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " properties BLOB, " \ " conflict_old TEXT, " \ " conflict_new TEXT, " \ " conflict_working TEXT, " \ " prop_reject TEXT, " \ " changelist TEXT, " \ " text_mod TEXT, " \ " tree_conflict_data TEXT, " \ " conflict_data BLOB, " \ " older_checksum TEXT REFERENCES PRISTINE (checksum), " \ " left_checksum TEXT REFERENCES PRISTINE (checksum), " \ " right_checksum TEXT REFERENCES PRISTINE (checksum), " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ " local_relpath); " \ "CREATE TABLE LOCK ( " \ " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \ " repos_relpath TEXT NOT NULL, " \ " lock_token TEXT NOT NULL, " \ " lock_owner TEXT, " \ " lock_comment TEXT, " \ " lock_date INTEGER, " \ " PRIMARY KEY (repos_id, repos_relpath) " \ " ); " \ "CREATE TABLE WORK_QUEUE ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " work BLOB NOT NULL " \ " ); " \ "CREATE TABLE WC_LOCK ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_dir_relpath TEXT NOT NULL, " \ " locked_levels INTEGER NOT NULL DEFAULT -1, " \ " PRIMARY KEY (wc_id, local_dir_relpath) " \ " ); " \ "CREATE TABLE NODES ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " op_depth INTEGER NOT NULL, " \ " parent_relpath TEXT, " \ " repos_id INTEGER REFERENCES REPOSITORY (id), " \ " repos_path TEXT, " \ " revision INTEGER, " \ " presence TEXT NOT NULL, " \ " moved_here INTEGER, " \ " moved_to TEXT, " \ " kind TEXT NOT NULL, " \ " properties BLOB, " \ " depth TEXT, " \ " checksum TEXT REFERENCES PRISTINE (checksum), " \ " symlink_target TEXT, " \ " changed_revision INTEGER, " \ " changed_date INTEGER, " \ " changed_author TEXT, " \ " translated_size INTEGER, " \ " last_mod_time INTEGER, " \ " dav_cache BLOB, " \ " file_external INTEGER, " \ " inherited_props BLOB, " \ " PRIMARY KEY (wc_id, local_relpath, op_depth) " \ " ); " \ "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ " local_relpath, op_depth); " \ "CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); " \ "CREATE VIEW NODES_CURRENT AS " \ " SELECT * FROM nodes AS n " \ " WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 " \ " WHERE n2.wc_id = n.wc_id " \ " AND n2.local_relpath = n.local_relpath); " \ "CREATE VIEW NODES_BASE AS " \ " SELECT * FROM nodes " \ " WHERE op_depth = 0; " \ "CREATE TRIGGER nodes_insert_trigger " \ "AFTER INSERT ON nodes " \ "WHEN NEW.checksum IS NOT NULL " \ "BEGIN " \ " UPDATE pristine SET refcount = refcount + 1 " \ " WHERE checksum = NEW.checksum; " \ "END; " \ "CREATE TRIGGER nodes_delete_trigger " \ "AFTER DELETE ON nodes " \ "WHEN OLD.checksum IS NOT NULL " \ "BEGIN " \ " UPDATE pristine SET refcount = refcount - 1 " \ " WHERE checksum = OLD.checksum; " \ "END; " \ "CREATE TRIGGER nodes_update_checksum_trigger " \ "AFTER UPDATE OF checksum ON nodes " \ "WHEN NEW.checksum IS NOT OLD.checksum " \ "BEGIN " \ " UPDATE pristine SET refcount = refcount + 1 " \ " WHERE checksum = NEW.checksum; " \ " UPDATE pristine SET refcount = refcount - 1 " \ " WHERE checksum = OLD.checksum; " \ "END; " \ "CREATE TABLE EXTERNALS ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT NOT NULL, " \ " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \ " presence TEXT NOT NULL, " \ " kind TEXT NOT NULL, " \ " def_local_relpath TEXT NOT NULL, " \ " def_repos_relpath TEXT NOT NULL, " \ " def_operational_revision TEXT, " \ " def_revision TEXT, " \ " PRIMARY KEY (wc_id, local_relpath) " \ "); " \ "CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, " \ " def_local_relpath, " \ " local_relpath); " \ "PRAGMA user_version = " \ APR_STRINGIFY(SVN_WC__VERSION) \ "; " \ "" #define STMT_INSTALL_SCHEMA_STATISTICS 210 #define STMT_210_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL} #define STMT_210 \ "ANALYZE sqlite_master; " \ "DELETE FROM sqlite_stat1 " \ "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK', 'EXTERNALS'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('NODES', 'I_NODES_MOVED', '8000 8000 1 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('EXTERNALS','sqlite_autoindex_EXTERNALS_1', '100 100 1'); " \ "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \ " ('EXTERNALS','I_EXTERNALS_DEFINED', '100 100 3 1'); " \ "ANALYZE sqlite_master; " \ "" #define STMT_UPGRADE_TO_30 211 #define STMT_211_INFO {"STMT_UPGRADE_TO_30", NULL} #define STMT_211 \ "CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \ "ON NODES (wc_id, moved_to, op_depth); " \ "CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \ - "UPDATE nodes SET presence = \"server-excluded\" WHERE presence = \"absent\"; " \ + "UPDATE nodes SET presence = 'server-excluded' WHERE presence = 'absent'; " \ "UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \ "" #define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 212 #define STMT_212_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL} #define STMT_212 \ "SELECT wc_id, local_relpath, " \ " conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \ "FROM actual_node " \ "WHERE conflict_old IS NOT NULL " \ " OR conflict_working IS NOT NULL " \ " OR conflict_new IS NOT NULL " \ " OR prop_reject IS NOT NULL " \ " OR tree_conflict_data IS NOT NULL " \ "ORDER by wc_id, local_relpath " \ "" #define STMT_UPGRADE_30_SET_CONFLICT 213 #define STMT_213_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL} #define STMT_213 \ "UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \ " conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \ " tree_conflict_data = NULL " \ "WHERE wc_id = ?1 and local_relpath = ?2 " \ "" #define STMT_UPGRADE_TO_31 214 #define STMT_214_INFO {"STMT_UPGRADE_TO_31", NULL} #define STMT_214 \ "ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \ "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \ "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \ "DROP INDEX I_NODES_PARENT; " \ "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ " local_relpath, op_depth); " \ "DROP INDEX I_ACTUAL_PARENT; " \ "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ " local_relpath); " \ "PRAGMA user_version = 31; " \ "" #define STMT_UPGRADE_31_SELECT_WCROOT_NODES 215 #define STMT_215_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL} #define STMT_215 \ "SELECT l.wc_id, l.local_relpath FROM nodes as l " \ "LEFT OUTER JOIN nodes as r " \ "ON l.wc_id = r.wc_id " \ " AND r.local_relpath = l.parent_relpath " \ " AND r.op_depth = 0 " \ "WHERE l.op_depth = 0 " \ " AND l.repos_path != '' " \ " AND ((l.repos_id IS NOT r.repos_id) " \ " OR (l.repos_path IS NOT (CASE WHEN (r.local_relpath) = '' THEN (CASE WHEN (r.repos_path) = '' THEN (l.local_relpath) WHEN (l.local_relpath) = '' THEN (r.repos_path) ELSE (r.repos_path) || '/' || (l.local_relpath) END) WHEN (r.repos_path) = '' THEN (CASE WHEN (r.local_relpath) = '' THEN (l.local_relpath) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN '' WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+2) END END) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN (r.repos_path) WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN (r.repos_path) || SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1) END END))) " \ "" #define WC_QUERIES_SQL_99 \ "CREATE TABLE ACTUAL_NODE_BACKUP ( " \ " wc_id INTEGER NOT NULL, " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " properties BLOB, " \ " conflict_old TEXT, " \ " conflict_new TEXT, " \ " conflict_working TEXT, " \ " prop_reject TEXT, " \ " changelist TEXT, " \ " text_mod TEXT " \ " ); " \ "INSERT INTO ACTUAL_NODE_BACKUP SELECT " \ " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \ " conflict_new, conflict_working, prop_reject, changelist, text_mod " \ "FROM ACTUAL_NODE; " \ "DROP TABLE ACTUAL_NODE; " \ "CREATE TABLE ACTUAL_NODE ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ " properties BLOB, " \ " conflict_old TEXT, " \ " conflict_new TEXT, " \ " conflict_working TEXT, " \ " prop_reject TEXT, " \ " changelist TEXT, " \ " text_mod TEXT, " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ " local_relpath); " \ "INSERT INTO ACTUAL_NODE SELECT " \ " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \ " conflict_new, conflict_working, prop_reject, changelist, text_mod " \ "FROM ACTUAL_NODE_BACKUP; " \ "DROP TABLE ACTUAL_NODE_BACKUP; " \ "" #define STMT_VERIFICATION_TRIGGERS 216 #define STMT_216_INFO {"STMT_VERIFICATION_TRIGGERS", NULL} #define STMT_216 \ "CREATE TEMPORARY TRIGGER no_repository_updates BEFORE UPDATE ON repository " \ "BEGIN " \ " SELECT RAISE(FAIL, 'Updates to REPOSITORY are not allowed.'); " \ "END; " \ "CREATE TEMPORARY TRIGGER validation_01 BEFORE INSERT ON nodes " \ "WHEN NOT ((new.local_relpath = '' AND new.parent_relpath IS NULL) " \ " OR (relpath_depth(new.local_relpath) " \ " = relpath_depth(new.parent_relpath) + 1)) " \ "BEGIN " \ " SELECT RAISE(FAIL, 'WC DB validity check 01 failed'); " \ "END; " \ "CREATE TEMPORARY TRIGGER validation_02 BEFORE INSERT ON nodes " \ "WHEN NOT new.op_depth <= relpath_depth(new.local_relpath) " \ "BEGIN " \ " SELECT RAISE(FAIL, 'WC DB validity check 02 failed'); " \ "END; " \ "CREATE TEMPORARY TRIGGER validation_03 BEFORE INSERT ON nodes " \ "WHEN NOT ( " \ " (new.op_depth = relpath_depth(new.local_relpath)) " \ " OR " \ " (EXISTS (SELECT 1 FROM nodes " \ " WHERE wc_id = new.wc_id AND op_depth = new.op_depth " \ " AND local_relpath = new.parent_relpath)) " \ " ) " \ " AND NOT (new.file_external IS NOT NULL AND new.op_depth = 0) " \ "BEGIN " \ " SELECT RAISE(FAIL, 'WC DB validity check 03 failed'); " \ "END; " \ "CREATE TEMPORARY TRIGGER validation_04 BEFORE INSERT ON actual_node " \ "WHEN NOT (new.local_relpath = '' " \ " OR EXISTS (SELECT 1 FROM nodes " \ " WHERE wc_id = new.wc_id " \ " AND local_relpath = new.parent_relpath)) " \ "BEGIN " \ " SELECT RAISE(FAIL, 'WC DB validity check 04 failed'); " \ "END; " \ "" #define STMT_STATIC_VERIFY 217 #define STMT_217_INFO {"STMT_STATIC_VERIFY", NULL} #define STMT_217 \ "SELECT local_relpath, op_depth, 1, 'Invalid parent relpath set in NODES' " \ "FROM nodes n WHERE local_relpath != '' " \ " AND (parent_relpath IS NULL " \ " OR NOT (((local_relpath) > (CASE (parent_relpath) WHEN '' THEN '' ELSE (parent_relpath) || '/' END)) AND ((local_relpath) < CASE (parent_relpath) WHEN '' THEN X'FFFF' ELSE (parent_relpath) || '0' END)) " \ " OR relpath_depth(local_relpath) != relpath_depth(parent_relpath)+1) " \ "UNION ALL " \ "SELECT local_relpath, -1, 2, 'Invalid parent relpath set in ACTUAL' " \ "FROM actual_node a WHERE local_relpath != '' " \ " AND (parent_relpath IS NULL " \ " OR NOT (((local_relpath) > (CASE (parent_relpath) WHEN '' THEN '' ELSE (parent_relpath) || '/' END)) AND ((local_relpath) < CASE (parent_relpath) WHEN '' THEN X'FFFF' ELSE (parent_relpath) || '0' END)) " \ " OR relpath_depth(local_relpath) != relpath_depth(parent_relpath)+1) " \ "UNION ALL " \ "SELECT local_relpath, -1, 10, 'No ancestor in ACTUAL' " \ "FROM actual_node a WHERE local_relpath != '' " \ " AND NOT EXISTS(SELECT 1 from nodes i " \ " WHERE i.wc_id=a.wc_id " \ " AND i.local_relpath=a.parent_relpath) " \ " AND NOT EXISTS(SELECT 1 from nodes i " \ " WHERE i.wc_id=a.wc_id " \ " AND i.local_relpath=a.local_relpath) " \ "UNION ALL " \ "SELECT a.local_relpath, -1, 11, 'Bad or Unneeded actual data' " \ "FROM actual_node a " \ "LEFT JOIN nodes n on n.wc_id = a.wc_id AND n.local_relpath = a.local_relpath " \ " AND n.op_depth = (SELECT MAX(op_depth) from nodes i " \ " WHERE i.wc_id=a.wc_id AND i.local_relpath=a.local_relpath) " \ "WHERE (a.properties IS NOT NULL " \ " AND (n.presence IS NULL " \ " OR n.presence NOT IN ('normal', 'incomplete'))) " \ " OR (a.changelist IS NOT NULL AND (n.kind IS NOT NULL AND n.kind != 'file')) " \ " OR (a.conflict_data IS NULL AND a.properties IS NULL AND a.changelist IS NULL) " \ " AND NOT EXISTS(SELECT 1 from nodes i " \ " WHERE i.wc_id=a.wc_id " \ " AND i.local_relpath=a.parent_relpath) " \ "UNION ALL " \ "SELECT local_relpath, op_depth, 20, 'No ancestor in NODES' " \ "FROM nodes n WHERE local_relpath != '' " \ " AND file_external IS NULL " \ " AND NOT EXISTS(SELECT 1 from nodes i " \ " WHERE i.wc_id=n.wc_id " \ " AND i.local_relpath=n.parent_relpath " \ " AND i.op_depth <= n.op_depth) " \ "UNION ALL " \ "SELECT local_relpath, op_depth, 21, 'Unneeded node data' " \ "FROM nodes " \ "WHERE presence NOT IN ('normal', 'incomplete') " \ "AND (properties IS NOT NULL " \ " OR checksum IS NOT NULL " \ " OR depth IS NOT NULL " \ " OR symlink_target IS NOT NULL " \ " OR changed_revision IS NOT NULL " \ " OR (changed_date IS NOT NULL AND changed_date != 0) " \ " OR changed_author IS NOT NULL " \ " OR translated_size IS NOT NULL " \ " OR last_mod_time IS NOT NULL " \ " OR dav_cache IS NOT NULL " \ " OR file_external IS NOT NULL " \ " OR inherited_props IS NOT NULL) " \ "UNION ALL " \ "SELECT local_relpath, op_depth, 22, 'Unneeded base-deleted node data' " \ "FROM nodes " \ "WHERE presence IN ('base-deleted') " \ "AND (repos_id IS NOT NULL " \ " OR repos_path IS NOT NULL " \ " OR revision IS NOT NULL) " \ "UNION ALL " \ "SELECT local_relpath, op_depth, 23, 'Kind specific data invalid on normal' " \ "FROM nodes " \ "WHERE presence IN ('normal', 'incomplete') " \ "AND (kind IS NULL " \ " OR (repos_path IS NULL " \ " AND (properties IS NOT NULL " \ " OR changed_revision IS NOT NULL " \ " OR changed_author IS NOT NULL " \ " OR (changed_date IS NOT NULL AND changed_date != 0))) " \ " OR (CASE WHEN kind = 'file' AND repos_path IS NOT NULL " \ " THEN checksum IS NULL " \ " ELSE checksum IS NOT NULL END) " \ " OR (CASE WHEN kind = 'dir' THEN depth IS NULL " \ " ELSE depth IS NOT NULL END) " \ " OR (CASE WHEN kind = 'symlink' THEN symlink_target IS NULL " \ " ELSE symlink_target IS NOT NULL END)) " \ "UNION ALL " \ "SELECT local_relpath, op_depth, 24, 'Invalid op-depth for local add' " \ "FROM nodes " \ "WHERE presence IN ('normal', 'incomplete') " \ " AND repos_path IS NULL " \ " AND op_depth != relpath_depth(local_relpath) " \ "UNION ALL " \ "SELECT local_relpath, op_depth, 25, 'Node missing op-depth ancestor' " \ "FROM nodes n " \ "WHERE op_depth < relpath_depth(local_relpath) " \ " AND file_external IS NULL " \ " AND NOT EXISTS(SELECT 1 FROM nodes p " \ " WHERE p.wc_id=n.wc_id AND p.local_relpath=n.parent_relpath " \ " AND p.op_depth=n.op_depth " \ " AND (p.presence IN ('normal', 'incomplete') " \ " OR (p.presence IN ('base-deleted', 'not-present') " \ " AND n.presence = 'base-deleted'))) " \ "UNION ALL " \ "SELECT n.local_relpath, n.op_depth, 26, 'Copied descendant mismatch' " \ "FROM nodes n " \ "JOIN nodes p " \ " ON p.wc_id=n.wc_id AND p.local_relpath=n.parent_relpath " \ " AND n.op_depth=p.op_depth " \ "WHERE n.op_depth > 0 AND n.presence IN ('normal', 'incomplete') " \ " AND (n.repos_id != p.repos_id " \ " OR n.repos_path != " \ " (CASE WHEN (n.parent_relpath) = '' THEN (CASE WHEN (p.repos_path) = '' THEN (n.local_relpath) WHEN (n.local_relpath) = '' THEN (p.repos_path) ELSE (p.repos_path) || '/' || (n.local_relpath) END) WHEN (p.repos_path) = '' THEN (CASE WHEN (n.parent_relpath) = '' THEN (n.local_relpath) WHEN SUBSTR((n.local_relpath), 1, LENGTH(n.parent_relpath)) = (n.parent_relpath) THEN CASE WHEN LENGTH(n.parent_relpath) = LENGTH(n.local_relpath) THEN '' WHEN SUBSTR((n.local_relpath), LENGTH(n.parent_relpath)+1, 1) = '/' THEN SUBSTR((n.local_relpath), LENGTH(n.parent_relpath)+2) END END) WHEN SUBSTR((n.local_relpath), 1, LENGTH(n.parent_relpath)) = (n.parent_relpath) THEN CASE WHEN LENGTH(n.parent_relpath) = LENGTH(n.local_relpath) THEN (p.repos_path) WHEN SUBSTR((n.local_relpath), LENGTH(n.parent_relpath)+1, 1) = '/' THEN (p.repos_path) || SUBSTR((n.local_relpath), LENGTH(n.parent_relpath)+1) END END) " \ " OR n.revision != p.revision " \ " OR p.kind != 'dir' " \ " OR n.moved_here IS NOT p.moved_here) " \ "UNION ALL " \ "SELECT n.local_relpath, n.op_depth, 27, 'Invalid op-root presence' " \ "FROM nodes n " \ "WHERE n.op_depth = relpath_depth(local_relpath) " \ " AND presence NOT IN ('normal', 'incomplete', 'base-deleted') " \ "UNION ALL " \ "SELECT n.local_relpath, s.op_depth, 28, 'Incomplete shadowing' " \ "FROM nodes n " \ "JOIN nodes s ON s.wc_id=n.wc_id AND s.local_relpath=n.local_relpath " \ " AND s.op_depth = relpath_depth(s.local_relpath) " \ " AND s.op_depth = (SELECT MIN(op_depth) FROM nodes d " \ " WHERE d.wc_id=s.wc_id AND d.local_relpath=s.local_relpath " \ " AND d.op_depth > n.op_depth) " \ "WHERE n.presence IN ('normal', 'incomplete') " \ " AND EXISTS(SELECT 1 " \ " FROM nodes dn " \ " WHERE dn.wc_id=n.wc_id AND dn.op_depth=n.op_depth " \ " AND dn.presence IN ('normal', 'incomplete') " \ " AND (((dn.local_relpath) > (CASE (n.local_relpath) WHEN '' THEN '' ELSE (n.local_relpath) || '/' END)) AND ((dn.local_relpath) < CASE (n.local_relpath) WHEN '' THEN X'FFFF' ELSE (n.local_relpath) || '0' END)) " \ " AND dn.file_external IS NULL " \ " AND NOT EXISTS(SELECT 1 " \ " FROM nodes ds " \ " WHERE ds.wc_id=n.wc_id AND ds.op_depth=s.op_depth " \ " AND ds.local_relpath=dn.local_relpath)) " \ "UNION ALL " \ "SELECT s.local_relpath, s.op_depth, 29, 'Invalid base-delete' " \ "FROM nodes s " \ "LEFT JOIN nodes n ON n.wc_id=s.wc_id AND n.local_relpath=s.local_relpath " \ " AND n.op_depth = (SELECT MAX(op_depth) FROM nodes d " \ " WHERE d.wc_id=s.wc_id AND d.local_relpath=s.local_relpath " \ " AND d.op_depth < s.op_depth) " \ "WHERE s.presence = 'base-deleted' " \ " AND (n.presence IS NULL " \ " OR n.presence NOT IN ('normal', 'incomplete') " \ " ) " \ "UNION ALL " \ "SELECT n.local_relpath, n.op_depth, 30, 'Invalid data for BASE' " \ "FROM nodes n " \ "WHERE n.op_depth = 0 " \ " AND (n.moved_to IS NOT NULL " \ " OR n.moved_here IS NOT NULL) " \ "UNION ALL " \ "SELECT d.local_relpath, d.op_depth, 60, 'Moved here without origin' " \ "FROM nodes d " \ "WHERE d.op_depth = relpath_depth(d.local_relpath) " \ " AND d.moved_here IS NOT NULL " \ " AND NOT EXISTS(SELECT 1 FROM nodes s " \ " WHERE s.wc_id = d.wc_id AND s.moved_to = d.local_relpath) " \ "UNION ALL " \ "SELECT s.local_relpath, s.op_depth, 61, 'Moved to without target' " \ "FROM nodes s " \ "WHERE s.moved_to IS NOT NULL " \ " AND NOT EXISTS(SELECT 1 FROM nodes d " \ " WHERE d.wc_id = s.wc_id AND d.local_relpath = s.moved_to " \ " AND d.op_depth = relpath_depth(d.local_relpath) " \ " AND d.moved_here =1 AND d.repos_path IS NOT NULL) " \ "" #define WC_QUERIES_SQL_DECLARE_STATEMENTS(varname) \ static const char * const varname[] = { \ STMT_0, \ STMT_1, \ STMT_2, \ STMT_3, \ STMT_4, \ STMT_5, \ STMT_6, \ STMT_7, \ STMT_8, \ STMT_9, \ STMT_10, \ STMT_11, \ STMT_12, \ STMT_13, \ STMT_14, \ STMT_15, \ STMT_16, \ STMT_17, \ STMT_18, \ STMT_19, \ STMT_20, \ STMT_21, \ STMT_22, \ STMT_23, \ STMT_24, \ STMT_25, \ STMT_26, \ STMT_27, \ STMT_28, \ STMT_29, \ STMT_30, \ STMT_31, \ STMT_32, \ STMT_33, \ STMT_34, \ STMT_35, \ STMT_36, \ STMT_37, \ STMT_38, \ STMT_39, \ STMT_40, \ STMT_41, \ STMT_42, \ STMT_43, \ STMT_44, \ STMT_45, \ STMT_46, \ STMT_47, \ STMT_48, \ STMT_49, \ STMT_50, \ STMT_51, \ STMT_52, \ STMT_53, \ STMT_54, \ STMT_55, \ STMT_56, \ STMT_57, \ STMT_58, \ STMT_59, \ STMT_60, \ STMT_61, \ STMT_62, \ STMT_63, \ STMT_64, \ STMT_65, \ STMT_66, \ STMT_67, \ STMT_68, \ STMT_69, \ STMT_70, \ STMT_71, \ STMT_72, \ STMT_73, \ STMT_74, \ STMT_75, \ STMT_76, \ STMT_77, \ STMT_78, \ STMT_79, \ STMT_80, \ STMT_81, \ STMT_82, \ STMT_83, \ STMT_84, \ STMT_85, \ STMT_86, \ STMT_87, \ STMT_88, \ STMT_89, \ STMT_90, \ STMT_91, \ STMT_92, \ STMT_93, \ STMT_94, \ STMT_95, \ STMT_96, \ STMT_97, \ STMT_98, \ STMT_99, \ STMT_100, \ STMT_101, \ STMT_102, \ STMT_103, \ STMT_104, \ STMT_105, \ STMT_106, \ STMT_107, \ STMT_108, \ STMT_109, \ STMT_110, \ STMT_111, \ STMT_112, \ STMT_113, \ STMT_114, \ STMT_115, \ STMT_116, \ STMT_117, \ STMT_118, \ STMT_119, \ STMT_120, \ STMT_121, \ STMT_122, \ STMT_123, \ STMT_124, \ STMT_125, \ STMT_126, \ STMT_127, \ STMT_128, \ STMT_129, \ STMT_130, \ STMT_131, \ STMT_132, \ STMT_133, \ STMT_134, \ STMT_135, \ STMT_136, \ STMT_137, \ STMT_138, \ STMT_139, \ STMT_140, \ STMT_141, \ STMT_142, \ STMT_143, \ STMT_144, \ STMT_145, \ STMT_146, \ STMT_147, \ STMT_148, \ STMT_149, \ STMT_150, \ STMT_151, \ STMT_152, \ STMT_153, \ STMT_154, \ STMT_155, \ STMT_156, \ STMT_157, \ STMT_158, \ STMT_159, \ STMT_160, \ STMT_161, \ STMT_162, \ STMT_163, \ STMT_164, \ STMT_165, \ STMT_166, \ STMT_167, \ STMT_168, \ STMT_169, \ STMT_170, \ STMT_171, \ STMT_172, \ STMT_173, \ STMT_174, \ STMT_175, \ STMT_176, \ STMT_177, \ STMT_178, \ STMT_179, \ STMT_180, \ STMT_181, \ STMT_182, \ STMT_183, \ STMT_184, \ STMT_185, \ STMT_186, \ STMT_187, \ STMT_188, \ STMT_189, \ STMT_190, \ STMT_191, \ STMT_192, \ STMT_193, \ STMT_194, \ STMT_195, \ STMT_196, \ STMT_197, \ STMT_198, \ STMT_199, \ STMT_200, \ STMT_201, \ STMT_202, \ STMT_203, \ STMT_204, \ STMT_205, \ STMT_206, \ STMT_207, \ STMT_208, \ STMT_209, \ STMT_210, \ STMT_211, \ STMT_212, \ STMT_213, \ STMT_214, \ STMT_215, \ STMT_216, \ STMT_217, \ NULL \ } #define WC_QUERIES_SQL_DECLARE_STATEMENT_INFO(varname) \ static const char * const varname[][2] = { \ STMT_0_INFO, \ STMT_1_INFO, \ STMT_2_INFO, \ STMT_3_INFO, \ STMT_4_INFO, \ STMT_5_INFO, \ STMT_6_INFO, \ STMT_7_INFO, \ STMT_8_INFO, \ STMT_9_INFO, \ STMT_10_INFO, \ STMT_11_INFO, \ STMT_12_INFO, \ STMT_13_INFO, \ STMT_14_INFO, \ STMT_15_INFO, \ STMT_16_INFO, \ STMT_17_INFO, \ STMT_18_INFO, \ STMT_19_INFO, \ STMT_20_INFO, \ STMT_21_INFO, \ STMT_22_INFO, \ STMT_23_INFO, \ STMT_24_INFO, \ STMT_25_INFO, \ STMT_26_INFO, \ STMT_27_INFO, \ STMT_28_INFO, \ STMT_29_INFO, \ STMT_30_INFO, \ STMT_31_INFO, \ STMT_32_INFO, \ STMT_33_INFO, \ STMT_34_INFO, \ STMT_35_INFO, \ STMT_36_INFO, \ STMT_37_INFO, \ STMT_38_INFO, \ STMT_39_INFO, \ STMT_40_INFO, \ STMT_41_INFO, \ STMT_42_INFO, \ STMT_43_INFO, \ STMT_44_INFO, \ STMT_45_INFO, \ STMT_46_INFO, \ STMT_47_INFO, \ STMT_48_INFO, \ STMT_49_INFO, \ STMT_50_INFO, \ STMT_51_INFO, \ STMT_52_INFO, \ STMT_53_INFO, \ STMT_54_INFO, \ STMT_55_INFO, \ STMT_56_INFO, \ STMT_57_INFO, \ STMT_58_INFO, \ STMT_59_INFO, \ STMT_60_INFO, \ STMT_61_INFO, \ STMT_62_INFO, \ STMT_63_INFO, \ STMT_64_INFO, \ STMT_65_INFO, \ STMT_66_INFO, \ STMT_67_INFO, \ STMT_68_INFO, \ STMT_69_INFO, \ STMT_70_INFO, \ STMT_71_INFO, \ STMT_72_INFO, \ STMT_73_INFO, \ STMT_74_INFO, \ STMT_75_INFO, \ STMT_76_INFO, \ STMT_77_INFO, \ STMT_78_INFO, \ STMT_79_INFO, \ STMT_80_INFO, \ STMT_81_INFO, \ STMT_82_INFO, \ STMT_83_INFO, \ STMT_84_INFO, \ STMT_85_INFO, \ STMT_86_INFO, \ STMT_87_INFO, \ STMT_88_INFO, \ STMT_89_INFO, \ STMT_90_INFO, \ STMT_91_INFO, \ STMT_92_INFO, \ STMT_93_INFO, \ STMT_94_INFO, \ STMT_95_INFO, \ STMT_96_INFO, \ STMT_97_INFO, \ STMT_98_INFO, \ STMT_99_INFO, \ STMT_100_INFO, \ STMT_101_INFO, \ STMT_102_INFO, \ STMT_103_INFO, \ STMT_104_INFO, \ STMT_105_INFO, \ STMT_106_INFO, \ STMT_107_INFO, \ STMT_108_INFO, \ STMT_109_INFO, \ STMT_110_INFO, \ STMT_111_INFO, \ STMT_112_INFO, \ STMT_113_INFO, \ STMT_114_INFO, \ STMT_115_INFO, \ STMT_116_INFO, \ STMT_117_INFO, \ STMT_118_INFO, \ STMT_119_INFO, \ STMT_120_INFO, \ STMT_121_INFO, \ STMT_122_INFO, \ STMT_123_INFO, \ STMT_124_INFO, \ STMT_125_INFO, \ STMT_126_INFO, \ STMT_127_INFO, \ STMT_128_INFO, \ STMT_129_INFO, \ STMT_130_INFO, \ STMT_131_INFO, \ STMT_132_INFO, \ STMT_133_INFO, \ STMT_134_INFO, \ STMT_135_INFO, \ STMT_136_INFO, \ STMT_137_INFO, \ STMT_138_INFO, \ STMT_139_INFO, \ STMT_140_INFO, \ STMT_141_INFO, \ STMT_142_INFO, \ STMT_143_INFO, \ STMT_144_INFO, \ STMT_145_INFO, \ STMT_146_INFO, \ STMT_147_INFO, \ STMT_148_INFO, \ STMT_149_INFO, \ STMT_150_INFO, \ STMT_151_INFO, \ STMT_152_INFO, \ STMT_153_INFO, \ STMT_154_INFO, \ STMT_155_INFO, \ STMT_156_INFO, \ STMT_157_INFO, \ STMT_158_INFO, \ STMT_159_INFO, \ STMT_160_INFO, \ STMT_161_INFO, \ STMT_162_INFO, \ STMT_163_INFO, \ STMT_164_INFO, \ STMT_165_INFO, \ STMT_166_INFO, \ STMT_167_INFO, \ STMT_168_INFO, \ STMT_169_INFO, \ STMT_170_INFO, \ STMT_171_INFO, \ STMT_172_INFO, \ STMT_173_INFO, \ STMT_174_INFO, \ STMT_175_INFO, \ STMT_176_INFO, \ STMT_177_INFO, \ STMT_178_INFO, \ STMT_179_INFO, \ STMT_180_INFO, \ STMT_181_INFO, \ STMT_182_INFO, \ STMT_183_INFO, \ STMT_184_INFO, \ STMT_185_INFO, \ STMT_186_INFO, \ STMT_187_INFO, \ STMT_188_INFO, \ STMT_189_INFO, \ STMT_190_INFO, \ STMT_191_INFO, \ STMT_192_INFO, \ STMT_193_INFO, \ STMT_194_INFO, \ STMT_195_INFO, \ STMT_196_INFO, \ STMT_197_INFO, \ STMT_198_INFO, \ STMT_199_INFO, \ STMT_200_INFO, \ STMT_201_INFO, \ STMT_202_INFO, \ STMT_203_INFO, \ STMT_204_INFO, \ STMT_205_INFO, \ STMT_206_INFO, \ STMT_207_INFO, \ STMT_208_INFO, \ STMT_209_INFO, \ STMT_210_INFO, \ STMT_211_INFO, \ STMT_212_INFO, \ STMT_213_INFO, \ STMT_214_INFO, \ STMT_215_INFO, \ STMT_216_INFO, \ STMT_217_INFO, \ {NULL, NULL} \ } diff --git a/contrib/subversion/subversion/svn/cl-conflicts.c b/contrib/subversion/subversion/svn/cl-conflicts.c index 0dc0abf29114..24a4607b62b7 100644 --- a/contrib/subversion/subversion/svn/cl-conflicts.c +++ b/contrib/subversion/subversion/svn/cl-conflicts.c @@ -1,598 +1,598 @@ /* * conflicts.c: Tree conflicts. * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ #include "cl-conflicts.h" #include "svn_hash.h" #include "svn_xml.h" #include "svn_dirent_uri.h" #include "svn_path.h" #include "private/svn_token.h" #include "cl.h" #include "svn_private_config.h" /* A map for svn_wc_conflict_action_t values to XML strings */ static const svn_token_map_t map_conflict_action_xml[] = { { "edit", svn_wc_conflict_action_edit }, { "delete", svn_wc_conflict_action_delete }, { "add", svn_wc_conflict_action_add }, { "replace", svn_wc_conflict_action_replace }, { NULL, 0 } }; /* A map for svn_wc_conflict_reason_t values to XML strings */ static const svn_token_map_t map_conflict_reason_xml[] = { { "edit", svn_wc_conflict_reason_edited }, { "delete", svn_wc_conflict_reason_deleted }, { "missing", svn_wc_conflict_reason_missing }, { "obstruction", svn_wc_conflict_reason_obstructed }, { "add", svn_wc_conflict_reason_added }, { "replace", svn_wc_conflict_reason_replaced }, { "unversioned", svn_wc_conflict_reason_unversioned }, { "moved-away", svn_wc_conflict_reason_moved_away }, { "moved-here", svn_wc_conflict_reason_moved_here }, { NULL, 0 } }; /* Return a localised string representation of the local part of a conflict; NULL for non-localised odd cases. */ static const char * local_reason_str(svn_node_kind_t kind, svn_wc_conflict_reason_t reason, svn_wc_operation_t operation) { switch (kind) { case svn_node_file: case svn_node_symlink: switch (reason) { case svn_wc_conflict_reason_edited: return _("local file edit"); case svn_wc_conflict_reason_obstructed: return _("local file obstruction"); case svn_wc_conflict_reason_deleted: return _("local file delete"); case svn_wc_conflict_reason_missing: if (operation == svn_wc_operation_merge) return _("local file missing or deleted or moved away"); else return _("local file missing"); case svn_wc_conflict_reason_unversioned: return _("local file unversioned"); case svn_wc_conflict_reason_added: return _("local file add"); case svn_wc_conflict_reason_replaced: return _("local file replace"); case svn_wc_conflict_reason_moved_away: return _("local file moved away"); case svn_wc_conflict_reason_moved_here: return _("local file moved here"); } break; case svn_node_dir: switch (reason) { case svn_wc_conflict_reason_edited: return _("local dir edit"); case svn_wc_conflict_reason_obstructed: return _("local dir obstruction"); case svn_wc_conflict_reason_deleted: return _("local dir delete"); case svn_wc_conflict_reason_missing: if (operation == svn_wc_operation_merge) return _("local dir missing or deleted or moved away"); else return _("local dir missing"); case svn_wc_conflict_reason_unversioned: return _("local dir unversioned"); case svn_wc_conflict_reason_added: return _("local dir add"); case svn_wc_conflict_reason_replaced: return _("local dir replace"); case svn_wc_conflict_reason_moved_away: return _("local dir moved away"); case svn_wc_conflict_reason_moved_here: return _("local dir moved here"); } break; case svn_node_none: case svn_node_unknown: switch (reason) { case svn_wc_conflict_reason_edited: return _("local edit"); case svn_wc_conflict_reason_obstructed: return _("local obstruction"); case svn_wc_conflict_reason_deleted: return _("local delete"); case svn_wc_conflict_reason_missing: if (operation == svn_wc_operation_merge) return _("local missing or deleted or moved away"); else return _("local missing"); case svn_wc_conflict_reason_unversioned: return _("local unversioned"); case svn_wc_conflict_reason_added: return _("local add"); case svn_wc_conflict_reason_replaced: return _("local replace"); case svn_wc_conflict_reason_moved_away: return _("local moved away"); case svn_wc_conflict_reason_moved_here: return _("local moved here"); } break; } return NULL; } /* Return a localised string representation of the incoming part of a conflict; NULL for non-localised odd cases. */ static const char * incoming_action_str(svn_node_kind_t kind, svn_wc_conflict_action_t action) { switch (kind) { case svn_node_file: case svn_node_symlink: switch (action) { case svn_wc_conflict_action_edit: return _("incoming file edit"); case svn_wc_conflict_action_add: return _("incoming file add"); case svn_wc_conflict_action_delete: return _("incoming file delete or move"); case svn_wc_conflict_action_replace: return _("incoming replace with file"); } break; case svn_node_dir: switch (action) { case svn_wc_conflict_action_edit: return _("incoming dir edit"); case svn_wc_conflict_action_add: return _("incoming dir add"); case svn_wc_conflict_action_delete: return _("incoming dir delete or move"); case svn_wc_conflict_action_replace: return _("incoming replace with dir"); } break; case svn_node_none: case svn_node_unknown: switch (action) { case svn_wc_conflict_action_edit: return _("incoming edit"); case svn_wc_conflict_action_add: return _("incoming add"); case svn_wc_conflict_action_delete: return _("incoming delete or move"); case svn_wc_conflict_action_replace: return _("incoming replace"); } break; } return NULL; } /* Return a localised string representation of the operation part of a conflict. */ static const char * operation_str(svn_wc_operation_t operation) { switch (operation) { case svn_wc_operation_update: return _("upon update"); case svn_wc_operation_switch: return _("upon switch"); case svn_wc_operation_merge: return _("upon merge"); case svn_wc_operation_none: return _("upon none"); } SVN_ERR_MALFUNCTION_NO_RETURN(); return NULL; } svn_error_t * svn_cl__get_human_readable_prop_conflict_description( const char **desc, svn_client_conflict_t *conflict, apr_pool_t *pool) { const char *reason_str, *action_str; /* We provide separately translatable strings for the values that we * know about, and a fall-back in case any other values occur. */ switch (svn_client_conflict_get_local_change(conflict)) { case svn_wc_conflict_reason_edited: reason_str = _("local edit"); break; case svn_wc_conflict_reason_added: reason_str = _("local add"); break; case svn_wc_conflict_reason_deleted: reason_str = _("local delete"); break; case svn_wc_conflict_reason_obstructed: reason_str = _("local obstruction"); break; default: reason_str = apr_psprintf( pool, _("local %s"), svn_token__to_word( map_conflict_reason_xml, svn_client_conflict_get_local_change(conflict))); break; } switch (svn_client_conflict_get_incoming_change(conflict)) { case svn_wc_conflict_action_edit: action_str = _("incoming edit"); break; case svn_wc_conflict_action_add: action_str = _("incoming add"); break; case svn_wc_conflict_action_delete: action_str = _("incoming delete"); break; default: action_str = apr_psprintf( pool, _("incoming %s"), svn_token__to_word( map_conflict_action_xml, svn_client_conflict_get_incoming_change(conflict))); break; } SVN_ERR_ASSERT(reason_str && action_str); *desc = apr_psprintf(pool, _("%s, %s %s"), reason_str, action_str, operation_str( svn_client_conflict_get_operation(conflict))); return SVN_NO_ERROR; } svn_error_t * svn_cl__get_human_readable_tree_conflict_description( const char **desc, svn_client_conflict_t *conflict, apr_pool_t *pool) { const char *action, *reason, *operation; svn_node_kind_t incoming_kind; svn_wc_conflict_action_t conflict_action; svn_wc_conflict_reason_t conflict_reason; svn_wc_operation_t conflict_operation; svn_node_kind_t conflict_node_kind; conflict_action = svn_client_conflict_get_incoming_change(conflict); conflict_reason = svn_client_conflict_get_local_change(conflict); conflict_operation = svn_client_conflict_get_operation(conflict); conflict_node_kind = svn_client_conflict_tree_get_victim_node_kind(conflict); /* Determine the node kind of the incoming change. */ incoming_kind = svn_node_unknown; if (conflict_action == svn_wc_conflict_action_edit || conflict_action == svn_wc_conflict_action_delete) { /* Change is acting on 'src_left' version of the node. */ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location( NULL, NULL, &incoming_kind, conflict, pool, pool)); } else if (conflict_action == svn_wc_conflict_action_add || conflict_action == svn_wc_conflict_action_replace) { /* Change is acting on 'src_right' version of the node. * * ### For 'replace', the node kind is ambiguous. However, src_left * ### is NULL for replace, so we must use src_right. */ SVN_ERR(svn_client_conflict_get_incoming_new_repos_location( NULL, NULL, &incoming_kind, conflict, pool, pool)); } reason = local_reason_str(conflict_node_kind, conflict_reason, conflict_operation); action = incoming_action_str(incoming_kind, conflict_action); operation = operation_str(conflict_operation); SVN_ERR_ASSERT(operation); if (action && reason) { *desc = apr_psprintf(pool, _("%s, %s %s"), reason, action, operation); } else { /* A catch-all message for very rare or nominally impossible cases. It will not be pretty, but is closer to an internal error than an ordinary user-facing string. */ *desc = apr_psprintf(pool, _("local: %s %s incoming: %s %s %s"), svn_node_kind_to_word(conflict_node_kind), svn_token__to_word(map_conflict_reason_xml, conflict_reason), svn_node_kind_to_word(incoming_kind), svn_token__to_word(map_conflict_action_xml, conflict_action), operation); } return SVN_NO_ERROR; } svn_error_t * svn_cl__get_human_readable_action_description( const char **desc, svn_wc_conflict_action_t action, svn_wc_operation_t operation, svn_node_kind_t kind, apr_pool_t *pool) { const char *action_s, *operation_s; action_s = incoming_action_str(kind, action); operation_s = operation_str(operation); SVN_ERR_ASSERT(operation_s); *desc = apr_psprintf(pool, _("%s %s"), action_s, operation_s); return SVN_NO_ERROR; } /* Helper for svn_cl__append_tree_conflict_info_xml(). * Appends the repository location of a conflicted node to ATT_HASH. * SIDE is the content of the version tag's side="..." attribute, * currently one of "source-left" or "source-right".*/ static svn_error_t * add_conflict_version_xml(svn_stringbuf_t **pstr, const char *side, const char *repos_root_url, const char *repos_relpath, svn_revnum_t peg_rev, svn_node_kind_t node_kind, apr_pool_t *pool) { apr_hash_t *att_hash = apr_hash_make(pool); svn_hash_sets(att_hash, "side", side); if (repos_root_url) svn_hash_sets(att_hash, "repos-url", repos_root_url); if (repos_relpath) svn_hash_sets(att_hash, "path-in-repos", repos_relpath); if (SVN_IS_VALID_REVNUM(peg_rev)) svn_hash_sets(att_hash, "revision", apr_ltoa(pool, peg_rev)); if (node_kind != svn_node_unknown) svn_hash_sets(att_hash, "kind", svn_cl__node_kind_str_xml(node_kind)); svn_xml_make_open_tag_hash(pstr, pool, svn_xml_self_closing, "version", att_hash); return SVN_NO_ERROR; } static svn_error_t * append_tree_conflict_info_xml(svn_stringbuf_t *str, svn_client_conflict_t *conflict, apr_pool_t *pool) { apr_hash_t *att_hash = apr_hash_make(pool); const char *tmp; const char *repos_root_url; const char *repos_relpath; svn_revnum_t peg_rev; svn_node_kind_t node_kind; svn_hash_sets(att_hash, "victim", svn_dirent_basename( svn_client_conflict_get_local_abspath(conflict), pool)); svn_hash_sets(att_hash, "kind", svn_cl__node_kind_str_xml( svn_client_conflict_tree_get_victim_node_kind(conflict))); svn_hash_sets(att_hash, "operation", svn_cl__operation_str_xml( svn_client_conflict_get_operation(conflict), pool)); tmp = svn_token__to_word(map_conflict_action_xml, svn_client_conflict_get_incoming_change(conflict)); svn_hash_sets(att_hash, "action", tmp); tmp = svn_token__to_word(map_conflict_reason_xml, svn_client_conflict_get_local_change(conflict)); svn_hash_sets(att_hash, "reason", tmp); /* Open the tree-conflict tag. */ svn_xml_make_open_tag_hash(&str, pool, svn_xml_normal, "tree-conflict", att_hash); /* Add child tags for OLDER_VERSION and THEIR_VERSION. */ SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL, conflict, pool, pool)); SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath, &peg_rev, &node_kind, conflict, pool, pool)); if (repos_root_url && repos_relpath) SVN_ERR(add_conflict_version_xml(&str, "source-left", repos_root_url, repos_relpath, peg_rev, node_kind, pool)); - SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath, + SVN_ERR(svn_client_conflict_get_incoming_new_repos_location(&repos_relpath, &peg_rev, &node_kind, conflict, pool, pool)); if (repos_root_url && repos_relpath) SVN_ERR(add_conflict_version_xml(&str, "source-right", repos_root_url, repos_relpath, peg_rev, node_kind, pool)); svn_xml_make_close_tag(&str, pool, "tree-conflict"); return SVN_NO_ERROR; } svn_error_t * svn_cl__append_conflict_info_xml(svn_stringbuf_t *str, svn_client_conflict_t *conflict, apr_pool_t *scratch_pool) { apr_hash_t *att_hash; svn_boolean_t text_conflicted; apr_array_header_t *props_conflicted; svn_boolean_t tree_conflicted; svn_wc_operation_t conflict_operation; const char *repos_root_url; const char *repos_relpath; svn_revnum_t peg_rev; svn_node_kind_t node_kind; conflict_operation = svn_client_conflict_get_operation(conflict); SVN_ERR(svn_client_conflict_get_conflicted(&text_conflicted, &props_conflicted, &tree_conflicted, conflict, scratch_pool, scratch_pool)); if (tree_conflicted) { /* Uses other element type */ return svn_error_trace( append_tree_conflict_info_xml(str, conflict, scratch_pool)); } SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL, conflict, scratch_pool, scratch_pool)); att_hash = apr_hash_make(scratch_pool); svn_hash_sets(att_hash, "operation", svn_cl__operation_str_xml(conflict_operation, scratch_pool)); svn_hash_sets(att_hash, "operation", svn_cl__operation_str_xml(conflict_operation, scratch_pool)); if (text_conflicted) { const char *base_abspath; const char *my_abspath; const char *their_abspath; svn_hash_sets(att_hash, "type", "text"); /* "" */ svn_xml_make_open_tag_hash(&str, scratch_pool, svn_xml_normal, "conflict", att_hash); SVN_ERR(svn_client_conflict_get_incoming_old_repos_location( &repos_relpath, &peg_rev, &node_kind, conflict, scratch_pool, scratch_pool)); if (repos_root_url && repos_relpath) SVN_ERR(add_conflict_version_xml(&str, "source-left", repos_root_url, repos_relpath, peg_rev, node_kind, scratch_pool)); - SVN_ERR(svn_client_conflict_get_incoming_old_repos_location( + SVN_ERR(svn_client_conflict_get_incoming_new_repos_location( &repos_relpath, &peg_rev, &node_kind, conflict, scratch_pool, scratch_pool)); if (repos_root_url && repos_relpath) SVN_ERR(add_conflict_version_xml(&str, "source-right", repos_root_url, repos_relpath, peg_rev, node_kind, scratch_pool)); SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath, &base_abspath, &their_abspath, conflict, scratch_pool, scratch_pool)); /* " xx " */ svn_cl__xml_tagged_cdata( &str, scratch_pool, "prev-base-file", base_abspath); /* " xx " */ svn_cl__xml_tagged_cdata( &str, scratch_pool, "prev-wc-file", my_abspath); /* " xx " */ svn_cl__xml_tagged_cdata( &str, scratch_pool, "cur-base-file", their_abspath); /* "" */ svn_xml_make_close_tag(&str, scratch_pool, "conflict"); } if (props_conflicted->nelts > 0) { const char *reject_abspath; svn_hash_sets(att_hash, "type", "property"); /* "" */ svn_xml_make_open_tag_hash(&str, scratch_pool, svn_xml_normal, "conflict", att_hash); SVN_ERR(svn_client_conflict_get_incoming_old_repos_location( &repos_relpath, &peg_rev, &node_kind, conflict, scratch_pool, scratch_pool)); if (repos_root_url && repos_relpath) SVN_ERR(add_conflict_version_xml(&str, "source-left", repos_root_url, repos_relpath, peg_rev, node_kind, scratch_pool)); - SVN_ERR(svn_client_conflict_get_incoming_old_repos_location( + SVN_ERR(svn_client_conflict_get_incoming_new_repos_location( &repos_relpath, &peg_rev, &node_kind, conflict, scratch_pool, scratch_pool)); if (repos_root_url && repos_relpath) SVN_ERR(add_conflict_version_xml(&str, "source-right", repos_root_url, repos_relpath, peg_rev, node_kind, scratch_pool)); /* " xx " */ reject_abspath = svn_client_conflict_prop_get_reject_abspath(conflict); svn_cl__xml_tagged_cdata( &str, scratch_pool, "prop-file", reject_abspath); /* "" */ svn_xml_make_close_tag(&str, scratch_pool, "conflict"); } return SVN_NO_ERROR; } diff --git a/contrib/subversion/subversion/svn/filesize.c b/contrib/subversion/subversion/svn/filesize.c index ba1c35626b61..c6e2bc40fd8d 100644 --- a/contrib/subversion/subversion/svn/filesize.c +++ b/contrib/subversion/subversion/svn/filesize.c @@ -1,221 +1,240 @@ /* * filesize.c -- Utilities for displaying file sizes * * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== */ /*** Includes. ***/ #include #include #include #include #include "cl.h" /*** Code. ***/ /* The structure that describes the units and their magnitudes. */ typedef struct filesize_order_t { svn_filesize_t mask; const char *suffix; const char *short_suffix; } filesize_order_t; /* Get the index of the order of magnitude of the given SIZE. The returned index will be within [0 .. order_size - 1]. */ static apr_size_t get_order_index(svn_filesize_t abs_size, const filesize_order_t *order, apr_size_t order_size) { /* It would be sexy to do a binary search here, but with only 7 elements in the arrays ... we should ### FIXME: do the binary search anyway. */ apr_size_t index = order_size; while (index > 0) { --index; if (abs_size > order[index].mask) break; } return index; } /* Format the adjusted size with the given units. */ static const char * format_size(double human_readable_size, svn_boolean_t long_units, const filesize_order_t *order, apr_size_t index, apr_pool_t *result_pool) { /* NOTE: We want to display a locale-specific decimal sepratator, but APR's formatter completely ignores the locale. So we use the good, old, standard, *dangerous* sprintf() to format the size. But, on the bright side, we require that the number has no more than 3 non-fractional digits. So the call to sprintf() here should be safe. */ const double absolute_human_readable_size = fabs(human_readable_size); const char *const suffix = (long_units ? order[index].suffix : order[index].short_suffix); /* 3 digits (or 2 digits and 1 decimal separator) + 1 negative sign (which should not appear under normal circumstances) + 1 nul terminator --- = 5 characters of space needed in the buffer. */ - char buffer[8]; + char buffer[64]; + + assert(absolute_human_readable_size < 1000); + + /* When the adjusted size has only one significant digit left of + the decimal point, show tenths of a unit, too. Except when + the absolute size is actually a single-digit number, because + files can't have fractional byte sizes. */ + if (absolute_human_readable_size >= 10) + sprintf(buffer, "%.0f", human_readable_size); + else + { + double integral; + const double frac = modf(absolute_human_readable_size, &integral); + const int decimals = (index > 0 && (integral < 9 || frac <= .949999999)); + sprintf(buffer, "%.*f", decimals, human_readable_size); + } - assert(absolute_human_readable_size < 1000.0); - - /* When the adjusted size has only one significant digit left of the - decimal point, show tenths of a unit, too. */ - sprintf(buffer, "%.*f", - absolute_human_readable_size < 10.0 ? 1 : 0, - human_readable_size); return apr_pstrcat(result_pool, buffer, suffix, SVN_VA_NULL); } static const char * get_base2_unit_file_size(svn_filesize_t size, svn_boolean_t long_units, apr_pool_t *result_pool) { static const filesize_order_t order[] = { {APR_INT64_C(0x0000000000000000), " B", "B"}, /* byte */ {APR_INT64_C(0x00000000000003FF), " KiB", "K"}, /* kibi */ {APR_INT64_C(0x00000000000FFFFF), " MiB", "M"}, /* mibi */ {APR_INT64_C(0x000000003FFFFFFF), " GiB", "G"}, /* gibi */ {APR_INT64_C(0x000000FFFFFFFFFF), " TiB", "T"}, /* tibi */ {APR_INT64_C(0x0003FFFFFFFFFFFF), " EiB", "E"}, /* exbi */ {APR_INT64_C(0x0FFFFFFFFFFFFFFF), " PiB", "P"} /* pibi */ }; static const apr_size_t order_size = sizeof(order) / sizeof(order[0]); const svn_filesize_t abs_size = ((size < 0) ? -size : size); apr_size_t index = get_order_index(abs_size, order, order_size); double human_readable_size; /* Adjust the size to the given order of magnitude. This is division by (order[index].mask + 1), which is the base-2^10 magnitude of the size; and that is the same as an arithmetic right shift by (index * 10) bits. But we split it into an integer and a floating-point division, so that we don't overflow the mantissa at very large file sizes. */ if ((abs_size >> 10 * index) > 999) { /* This assertion should never fail, because we only have 4 binary digits in the petabyte (all right, "pibibyte") range and so the number of petabytes can't be large enough to cause the program flow to enter this conditional block. */ assert(index < order_size - 1); ++index; } + human_readable_size = (index == 0 ? (double)size - : (size >> 3 * index) / 128.0 / index); + : (size >> (10 * index - 10)) / 1024.0); return format_size(human_readable_size, long_units, order, index, result_pool); } static const char * get_base10_unit_file_size(svn_filesize_t size, svn_boolean_t long_units, apr_pool_t *result_pool) { static const filesize_order_t order[] = { {APR_INT64_C( 0), " B", "B"}, /* byte */ {APR_INT64_C( 999), " kB", "k"}, /* kilo */ {APR_INT64_C( 999999), " MB", "M"}, /* mega */ {APR_INT64_C( 999999999), " GB", "G"}, /* giga */ {APR_INT64_C( 999999999999), " TB", "T"}, /* tera */ {APR_INT64_C( 999999999999999), " EB", "E"}, /* exa */ {APR_INT64_C(999999999999999999), " PB", "P"} /* peta */ - /* 18446744073709551615 is the maximum value. */ + /* 9223372036854775807 is the maximum value. */ }; static const apr_size_t order_size = sizeof(order) / sizeof(order[0]); const svn_filesize_t abs_size = ((size < 0) ? -size : size); apr_size_t index = get_order_index(abs_size, order, order_size); double human_readable_size; /* Adjust the size to the given order of magnitude. - This is division by (order[index].mask + 1), which is the base-1000 - magnitude of the size. For large file sizes, we split the operation - into an integer and a floating-point division, so that we don't + This is division by (order[index].mask + 1), which is the + base-1000 magnitude of the size. We split the operation into an + integer and a floating-point division, so that we don't overflow the mantissa. */ if (index == 0) human_readable_size = (double)size; - else if (index <= 3) - human_readable_size = (double)size / (order[index].mask + 1); else { - /* [ Keep integer division here! ] */ - const double divisor = (double)((order[index].mask + 1) / 1000000); - human_readable_size = (size / 1000000) / divisor; - /* [ And here! ] */ + const svn_filesize_t divisor = (order[index - 1].mask + 1); + /* [Keep integer arithmetic here!] */ + human_readable_size = (size / divisor) / 1000.0; + } + + /* Adjust index and number for rounding. */ + if (human_readable_size >= 999.5) + { + /* This assertion should never fail, because we only have one + decimal digit in the petabyte range and so the number of + petabytes can't be large enough to cause the program flow + to enter this conditional block. */ + assert(index < order_size - 1); + human_readable_size /= 1000.0; + ++index; } return format_size(human_readable_size, long_units, order, index, result_pool); } svn_error_t * svn_cl__format_file_size(const char **result, svn_filesize_t size, svn_cl__size_unit_t base, svn_boolean_t long_units, apr_pool_t *result_pool) { switch (base) { case SVN_CL__SIZE_UNIT_NONE: case SVN_CL__SIZE_UNIT_XML: *result = apr_psprintf(result_pool, "%" SVN_FILESIZE_T_FMT, size); break; case SVN_CL__SIZE_UNIT_BASE_2: *result = get_base2_unit_file_size(size, long_units, result_pool); break; case SVN_CL__SIZE_UNIT_BASE_10: *result = get_base10_unit_file_size(size, long_units, result_pool); break; default: SVN_ERR_MALFUNCTION(); } return SVN_NO_ERROR; } diff --git a/contrib/subversion/win-tests.py b/contrib/subversion/win-tests.py index 2c91acb7c227..f280a55cbec3 100644 --- a/contrib/subversion/win-tests.py +++ b/contrib/subversion/win-tests.py @@ -1,1362 +1,1367 @@ # # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # """ Driver for running the tests on Windows. For a list of options, run this script with the --help option. """ # $HeadURL: https://svn.apache.org/repos/asf/subversion/branches/1.14.x/win-tests.py $ -# $LastChangedRevision: 1813897 $ +# $LastChangedRevision: 1884665 $ import os, sys, subprocess import filecmp import shutil import traceback import logging import re try: # Python >=3.0 import configparser except ImportError: # Python <3.0 import ConfigParser as configparser import string import random import getopt try: my_getopt = getopt.gnu_getopt except AttributeError: my_getopt = getopt.getopt def _usage_exit(): "print usage, exit the script" print("Driver for running the tests on Windows.") print("Usage: python win-tests.py [option] [test-path]") print("") print("Valid options:") print(" -r, --release : test the Release configuration") print(" -d, --debug : test the Debug configuration (default)") print(" --bin=PATH : use the svn binaries installed in PATH") print(" -u URL, --url=URL : run ra_dav or ra_svn tests against URL;") print(" will start svnserve for ra_svn tests") print(" -v, --verbose : talk more") print(" -f, --fs-type=type : filesystem type to use (fsfs is default)") print(" -c, --cleanup : cleanup after running a test") print(" -t, --test=TEST : Run the TEST test (all is default); use") print(" TEST#n to run a particular test number,") print(" multiples also accepted e.g. '2,4-7'") print(" --log-level=LEVEL : Set log level to LEVEL (E.g. DEBUG)") print(" --log-to-stdout : Write log results to stdout") print(" --svnserve-args=list : comma-separated list of arguments for") print(" svnserve") print(" default is '-d,-r,'") print(" --asp.net-hack : use '_svn' instead of '.svn' for the admin") print(" dir name") print(" --httpd-dir : location where Apache HTTPD is installed") print(" --httpd-port : port for Apache HTTPD; random port number") print(" will be used, if not specified") print(" --httpd-daemon : Run Apache httpd as daemon") print(" --httpd-service : Run Apache httpd as Windows service (default)") print(" --httpd-no-log : Disable httpd logging") print(" --http-short-circuit : Use SVNPathAuthz short_circuit on HTTP server") print(" --disable-http-v2 : Do not advertise support for HTTPv2 on server") print(" --disable-bulk-updates : Disable bulk updates on HTTP server") print(" --ssl-cert : Path to SSL server certificate to trust.") print(" --https : Run Apache httpd with an https setup.") print(" --http2 : Enable http2 in Apache Httpd (>= 2.4.17).") print(" --mod-deflate : Enable mod_deflate in Apache Httpd.") print(" --global-scheduler : Enable global scheduler.") print(" --exclusive-wc-locks : Enable exclusive working copy locks") print(" --memcached-dir=DIR : Run memcached from dir") print(" --memcached-server= : Enable usage of the specified memcached server") print(" ") print(" --skip-c-tests : Skip all C tests") print(" --dump-load-cross-check: Run the dump load cross check after every test") print(" --javahl : Run the javahl tests instead of the normal tests") print(" --swig=language : Run the swig perl/python/ruby tests instead of") print(" the normal tests") print(" --list : print test doc strings only") print(" --milestone-filter=RE : RE is a regular expression pattern that (when") print(" used with --list) limits the tests listed to") print(" those with an associated issue in the tracker") print(" which has a target milestone that matches RE.") print(" --mode-filter=TYPE : limit tests to expected TYPE = XFAIL, SKIP, PASS,") print(" or 'ALL' (default)") print(" --enable-sasl : enable Cyrus SASL authentication for") print(" svnserve") print(" -p, --parallel : run multiple tests in parallel") print(" --server-minor-version : the minor version of the server being") print(" tested") print(" --config-file : Configuration file for tests") print(" --fsfs-sharding : Specify shard size (for fsfs)") print(" --fsfs-packing : Run 'svnadmin pack' automatically") print(" --fsfs-compression=VAL : Set compression type to VAL (for fsfs)") print(" -q, --quiet : Deprecated; this is the default.") print(" Use --set-log-level instead.") sys.exit(0) CMDLINE_TEST_SCRIPT_PATH = 'subversion/tests/cmdline/' CMDLINE_TEST_SCRIPT_NATIVE_PATH = CMDLINE_TEST_SCRIPT_PATH.replace('/', os.sep) sys.path.insert(0, os.path.join('build', 'generator')) sys.path.insert(1, 'build') import gen_win_dependencies import gen_base version_header = os.path.join('subversion', 'include', 'svn_version.h') cp = configparser.ConfigParser() cp.read('gen-make.opts') gen_obj = gen_win_dependencies.GenDependenciesBase('build.conf', version_header, cp.items('options')) opts, args = my_getopt(sys.argv[1:], 'hrdvqct:pu:f:', ['release', 'debug', 'verbose', 'quiet', 'cleanup', 'test=', 'url=', 'svnserve-args=', 'fs-type=', 'asp.net-hack', 'httpd-dir=', 'httpd-port=', 'httpd-daemon', 'https', 'httpd-server', 'http-short-circuit', 'httpd-no-log', 'disable-http-v2', 'disable-bulk-updates', 'help', 'fsfs-packing', 'fsfs-sharding=', 'javahl', 'swig=', 'list', 'enable-sasl', 'bin=', 'parallel', 'http2', 'mod-deflate', 'global-scheduler', 'config-file=', 'server-minor-version=', 'log-level=', 'log-to-stdout', 'mode-filter=', 'milestone-filter=', 'ssl-cert=', 'exclusive-wc-locks', 'memcached-server=', 'skip-c-tests', 'dump-load-cross-check', 'memcached-dir=', 'fsfs-compression=', ]) if len(args) > 1: print('Warning: non-option arguments after the first one will be ignored') # Interpret the options and set parameters base_url, fs_type, verbose, cleanup = None, None, None, None global_scheduler = None repo_loc = 'local repository.' objdir = 'Debug' log = 'tests.log' faillog = 'fails.log' run_svnserve = None svnserve_args = None run_httpd = None httpd_port = None httpd_service = None httpd_no_log = None use_ssl = False use_http2 = False use_mod_deflate = False http_short_circuit = False advertise_httpv2 = True http_bulk_updates = True list_tests = None milestone_filter = None test_javahl = None test_swig = None enable_sasl = None svn_bin = None parallel = None fsfs_sharding = None fsfs_packing = None server_minor_version = None config_file = None log_to_stdout = None mode_filter=None tests_to_run = [] log_level = None ssl_cert = None exclusive_wc_locks = None run_memcached = None memcached_server = None memcached_dir = None skip_c_tests = None dump_load_cross_check = None fsfs_compression = None fsfs_dir_deltification = None for opt, val in opts: if opt in ('-h', '--help'): _usage_exit() elif opt in ('-u', '--url'): base_url = val elif opt in ('-f', '--fs-type'): fs_type = val elif opt in ('-v', '--verbose'): verbose = 1 log_level = logging.DEBUG elif opt in ('-c', '--cleanup'): cleanup = 1 elif opt in ('-t', '--test'): tests_to_run.append(val) elif opt in ['-r', '--release']: objdir = 'Release' elif opt in ['-d', '--debug']: objdir = 'Debug' elif opt == '--svnserve-args': svnserve_args = val.split(',') run_svnserve = 1 elif opt == '--asp.net-hack': os.environ['SVN_ASP_DOT_NET_HACK'] = opt elif opt == '--httpd-dir': abs_httpd_dir = os.path.abspath(val) run_httpd = 1 elif opt == '--httpd-port': httpd_port = int(val) elif opt == '--httpd-daemon': httpd_service = 0 elif opt == '--httpd-service': httpd_service = 1 elif opt == '--httpd-no-log': httpd_no_log = 1 elif opt == '--https': use_ssl = 1 elif opt == '--http2': use_http2 = 1 elif opt == '--mod-deflate': use_mod_deflate = 1 elif opt == '--http-short-circuit': http_short_circuit = True elif opt == '--disable-http-v2': advertise_httpv2 = False elif opt == '--disable-bulk-updates': http_bulk_updates = False elif opt == '--fsfs-sharding': fsfs_sharding = int(val) elif opt == '--fsfs-packing': fsfs_packing = 1 elif opt == '--javahl': test_javahl = 1 elif opt == '--global-scheduler': global_scheduler = 1 elif opt == '--swig': if val not in ['perl', 'python', 'ruby']: sys.stderr.write('Running \'%s\' swig tests not supported (yet).\n' % (val,)) test_swig = val elif opt == '--list': list_tests = 1 elif opt == '--milestone-filter': milestone_filter = val elif opt == '--mode-filter': mode_filter = val elif opt == '--enable-sasl': enable_sasl = 1 base_url = "svn://localhost/" elif opt == '--server-minor-version': server_minor_version = int(val) elif opt == '--bin': svn_bin = val elif opt in ('-p', '--parallel'): parallel = 1 elif opt in ('--config-file'): config_file = val elif opt == '--log-to-stdout': log_to_stdout = 1 elif opt == '--log-level': log_level = getattr(logging, val, None) or int(val) elif opt == '--ssl-cert': ssl_cert = val elif opt == '--exclusive-wc-locks': exclusive_wc_locks = 1 elif opt == '--memcached-server': memcached_server = val elif opt == '--skip-c-tests': skip_c_tests = 1 elif opt == '--dump-load-cross-check': dump_load_cross_check = 1 elif opt == '--memcached-dir': memcached_dir = val run_memcached = 1 elif opt == '--fsfs-compression': fsfs_compression = val elif opt == '--fsfs-dir-deltification': fsfs_dir_deltification = val # Calculate the source and test directory names abs_srcdir = os.path.abspath("") abs_objdir = os.path.join(abs_srcdir, objdir) if len(args) == 0: abs_builddir = abs_objdir create_dirs = 0 else: abs_builddir = os.path.abspath(args[0]) create_dirs = 1 # Default to fsfs explicitly if not fs_type: fs_type = 'fsfs' if fs_type == 'bdb': all_tests = gen_obj.test_progs + gen_obj.bdb_test_progs \ + gen_obj.scripts + gen_obj.bdb_scripts else: all_tests = gen_obj.test_progs + gen_obj.scripts client_tests = [x for x in all_tests if x.startswith(CMDLINE_TEST_SCRIPT_PATH)] if run_httpd: if not httpd_port: httpd_port = random.randrange(1024, 30000) if not base_url: if use_ssl: scheme = 'https' else: scheme = 'http' base_url = '%s://localhost:%d' % (scheme, httpd_port) if base_url: repo_loc = 'remote repository ' + base_url + '.' if base_url[:4] == 'http': log = 'dav-tests.log' faillog = 'dav-fails.log' elif base_url[:3] == 'svn': log = 'svn-tests.log' faillog = 'svn-fails.log' run_svnserve = 1 else: # Don't know this scheme, but who're we to judge whether it's # correct or not? log = 'url-tests.log' faillog = 'url-fails.log' # Have to move the executables where the tests expect them to be copied_execs = [] # Store copied exec files to avoid the final dir scan def create_target_dir(dirname): tgt_dir = os.path.join(abs_builddir, dirname) if not os.path.exists(tgt_dir): if verbose: print("mkdir: %s" % tgt_dir) os.makedirs(tgt_dir) def copy_changed_file(src, tgt=None, to_dir=None, cleanup=True): if not os.path.isfile(src): print('Could not find ' + src) sys.exit(1) if to_dir and not tgt: tgt = os.path.join(to_dir, os.path.basename(src)) elif not tgt or (tgt and to_dir): raise RuntimeError("Using 'tgt' *or* 'to_dir' is required" % (tgt,)) elif tgt and os.path.isdir(tgt): raise RuntimeError("'%s' is a directory. Use to_dir=" % (tgt,)) if os.path.exists(tgt): assert os.path.isfile(tgt) if filecmp.cmp(src, tgt): if verbose: print("same: %s" % src) print(" and: %s" % tgt) return 0 if verbose: print("copy: %s" % src) print(" to: %s" % tgt) shutil.copy(src, tgt) if cleanup: copied_execs.append(tgt) def locate_libs(): "Move DLLs to a known location and set env vars" debug = (objdir == 'Debug') for lib in gen_obj._libraries.values(): if debug: name, dir = lib.debug_dll_name, lib.debug_dll_dir else: name, dir = lib.dll_name, lib.dll_dir if name and dir: src = os.path.join(dir, name) if os.path.exists(src): copy_changed_file(src, to_dir=abs_builddir, cleanup=False) for name in lib.extra_bin: src = os.path.join(dir, name) copy_changed_file(src, to_dir=abs_builddir) # Copy the Subversion library DLLs for i in gen_obj.graph.get_all_sources(gen_base.DT_INSTALL): if isinstance(i, gen_base.TargetLib) and i.msvc_export: src = os.path.join(abs_objdir, i.filename) if os.path.isfile(src): copy_changed_file(src, to_dir=abs_builddir, cleanup=False) # Copy the Apache modules if run_httpd and cp.has_option('options', '--with-httpd'): mod_dav_svn_path = os.path.join(abs_objdir, 'subversion', 'mod_dav_svn', 'mod_dav_svn.so') mod_authz_svn_path = os.path.join(abs_objdir, 'subversion', 'mod_authz_svn', 'mod_authz_svn.so') mod_dontdothat_path = os.path.join(abs_objdir, 'tools', 'server-side', 'mod_dontdothat', 'mod_dontdothat.so') copy_changed_file(mod_dav_svn_path, to_dir=abs_builddir, cleanup=False) copy_changed_file(mod_authz_svn_path, to_dir=abs_builddir, cleanup=False) copy_changed_file(mod_dontdothat_path, to_dir=abs_builddir, cleanup=False) os.environ['PATH'] = abs_builddir + os.pathsep + os.environ['PATH'] def fix_case(path): path = os.path.normpath(path) parts = path.split(os.path.sep) drive = parts[0].upper() parts = parts[1:] path = drive + os.path.sep for part in parts: dirs = os.listdir(path) for dir in dirs: if dir.lower() == part.lower(): path = os.path.join(path, dir) break return path class Svnserve: "Run svnserve for ra_svn tests" def __init__(self, svnserve_args, objdir, abs_objdir, abs_builddir): self.args = svnserve_args self.name = 'svnserve.exe' self.kind = objdir self.path = os.path.join(abs_objdir, 'subversion', 'svnserve', self.name) self.root = os.path.join(abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH) self.proc = None def __del__(self): "Stop svnserve when the object is deleted" self.stop() def _quote(self, arg): if ' ' in arg: return '"' + arg + '"' else: return arg def start(self): if not self.args: args = [self.name, '-d', '-r', self.root] else: args = [self.name] + self.args print('Starting %s %s' % (self.kind, self.name)) env = os.environ.copy() env['SVN_DBG_STACKTRACES_TO_STDERR'] = 'y' self.proc = subprocess.Popen([self.path] + args[1:], env=env) def stop(self): if self.proc is not None: try: print('Stopping %s' % self.name) self.proc.poll(); if self.proc.returncode is None: self.proc.kill(); return except AttributeError: pass print('Svnserve.stop not implemented') class Httpd: "Run httpd for DAV tests" def __init__(self, abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir, httpd_port, service, use_ssl, use_http2, use_mod_deflate, no_log, httpv2, short_circuit, bulk_updates): self.name = 'apache.exe' self.httpd_port = httpd_port self.httpd_dir = abs_httpd_dir if httpv2: self.httpv2_option = 'on' else: self.httpv2_option = 'off' if bulk_updates: self.bulkupdates_option = 'on' else: self.bulkupdates_option = 'off' self.service = service self.proc = None self.path = os.path.join(self.httpd_dir, 'bin', self.name) if short_circuit: self.path_authz_option = 'short_circuit' else: self.path_authz_option = 'on' if not os.path.exists(self.path): self.name = 'httpd.exe' self.path = os.path.join(self.httpd_dir, 'bin', self.name) if not os.path.exists(self.path): raise RuntimeError("Could not find a valid httpd binary!") self.root_dir = os.path.join(CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'httpd') self.root = os.path.join(abs_builddir, self.root_dir) self.authz_file = os.path.join(abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'svn-test-work', 'authz') self.dontdothat_file = os.path.join(abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'svn-test-work', 'dontdothat') self.certfile = os.path.join(abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'svn-test-work', 'cert.pem') self.certkeyfile = os.path.join(abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'svn-test-work', 'cert-key.pem') self.httpd_config = os.path.join(self.root, 'httpd.conf') self.httpd_users = os.path.join(self.root, 'users') self.httpd_mime_types = os.path.join(self.root, 'mime.types') self.httpd_groups = os.path.join(self.root, 'groups') self.abs_builddir = abs_builddir self.abs_objdir = abs_objdir self.abs_srcdir = abs_srcdir self.service_name = 'svn-test-httpd-' + str(httpd_port) if self.service: self.httpd_args = [self.name, '-n', self._quote(self.service_name), '-f', self._quote(self.httpd_config)] else: self.httpd_args = [self.name, '-f', self._quote(self.httpd_config)] create_target_dir(self.root_dir) self._create_users_file() self._create_groups_file() self._create_mime_types_file() self._create_dontdothat_file() if use_ssl: self._create_cert_files() # Obtain version. version_vals = gen_obj._libraries['httpd'].version.split('.') self.httpd_ver = float('%s.%s' % (version_vals[0], version_vals[1])) # Create httpd config file fp = open(self.httpd_config, 'w') # Limit the number of threads (default = 64) if not use_http2: fp.write('\n') fp.write('ThreadsPerChild 16\n') fp.write('\n') # Global Environment fp.write('ServerRoot ' + self._quote(self.root) + '\n') fp.write('DocumentRoot ' + self._quote(self.root) + '\n') fp.write('ServerName localhost\n') fp.write('PidFile pid\n') fp.write('ErrorLog log\n') fp.write('Listen ' + str(self.httpd_port) + '\n') if not no_log: fp.write('LogFormat "%h %l %u %t \\"%r\\" %>s %b" common\n') fp.write('Customlog log common\n') fp.write('LogLevel Debug\n') else: fp.write('LogLevel Crit\n') # Write LoadModule for minimal system module if use_ssl: fp.write(self._sys_module('ssl_module', 'mod_ssl.so')) if use_http2: fp.write(self._sys_module('http2_module', 'mod_http2.so')) if use_mod_deflate: fp.write(self._sys_module('deflate_module', 'mod_deflate.so')) fp.write(self._sys_module('dav_module', 'mod_dav.so')) if self.httpd_ver >= 2.3: fp.write(self._sys_module('access_compat_module', 'mod_access_compat.so')) fp.write(self._sys_module('authz_core_module', 'mod_authz_core.so')) fp.write(self._sys_module('authz_user_module', 'mod_authz_user.so')) fp.write(self._sys_module('authn_core_module', 'mod_authn_core.so')) if self.httpd_ver >= 2.2: fp.write(self._sys_module('auth_basic_module', 'mod_auth_basic.so')) fp.write(self._sys_module('authn_file_module', 'mod_authn_file.so')) fp.write(self._sys_module('authz_groupfile_module', 'mod_authz_groupfile.so')) fp.write(self._sys_module('authz_host_module', 'mod_authz_host.so')) else: fp.write(self._sys_module('auth_module', 'mod_auth.so')) fp.write(self._sys_module('alias_module', 'mod_alias.so')) fp.write(self._sys_module('mime_module', 'mod_mime.so')) fp.write(self._sys_module('log_config_module', 'mod_log_config.so')) # Write LoadModule for Subversion modules fp.write(self._svn_module('dav_svn_module', 'mod_dav_svn.so')) fp.write(self._svn_module('authz_svn_module', 'mod_authz_svn.so')) # And for mod_dontdothat fp.write(self._svn_module('dontdothat_module', 'mod_dontdothat.so')) if use_ssl: fp.write('SSLEngine on\n') fp.write('SSLProtocol All -SSLv2 -SSLv3\n') fp.write('SSLCertificateFile %s\n' % self._quote(self.certfile)) fp.write('SSLCertificateKeyFile %s\n' % self._quote(self.certkeyfile)) if use_ssl and use_http2: fp.write('Protocols h2 http/1.1\n') elif use_http2: fp.write('Protocols h2c http/1.1\n') fp.write('H2Direct on\n') if use_mod_deflate: fp.write('SetOutputFilter DEFLATE\n') # Don't handle .htaccess, symlinks, etc. fp.write('\n') fp.write('AllowOverride None\n') fp.write('Options None\n') fp.write('\n\n') # Define two locations for repositories fp.write(self._svn_repo('repositories')) fp.write(self._svn_repo('local_tmp')) fp.write(self._svn_authz_repo()) # And two redirects for the redirect tests fp.write('RedirectMatch permanent ^/svn-test-work/repositories/' 'REDIRECT-PERM-(.*)$ /svn-test-work/repositories/$1\n') fp.write('RedirectMatch ^/svn-test-work/repositories/' 'REDIRECT-TEMP-(.*)$ /svn-test-work/repositories/$1\n') fp.write('TypesConfig ' + self._quote(self.httpd_mime_types) + '\n') fp.write('HostNameLookups Off\n') fp.close() def __del__(self): "Stop httpd when the object is deleted" self.stop() def _quote(self, arg): if ' ' in arg: return '"' + arg + '"' else: return arg def _create_users_file(self): "Create users file" htpasswd = os.path.join(self.httpd_dir, 'bin', 'htpasswd.exe') # Create the cheapest to compare password form for our testsuite os.spawnv(os.P_WAIT, htpasswd, ['htpasswd.exe', '-bcp', self.httpd_users, 'jrandom', 'rayjandom']) os.spawnv(os.P_WAIT, htpasswd, ['htpasswd.exe', '-bp', self.httpd_users, 'jconstant', 'rayjandom']) os.spawnv(os.P_WAIT, htpasswd, ['htpasswd.exe', '-bp', self.httpd_users, '__dumpster__', '__loadster__']) os.spawnv(os.P_WAIT, htpasswd, ['htpasswd.exe', '-bp', self.httpd_users, 'JRANDOM', 'rayjandom']) os.spawnv(os.P_WAIT, htpasswd, ['htpasswd.exe', '-bp', self.httpd_users, 'JCONSTANT', 'rayjandom']) def _create_groups_file(self): "Create groups for mod_authz_svn tests" fp = open(self.httpd_groups, 'w') fp.write('random: jrandom\n') fp.write('constant: jconstant\n') fp.close() def _create_mime_types_file(self): "Create empty mime.types file" fp = open(self.httpd_mime_types, 'w') fp.close() def _create_dontdothat_file(self): "Create empty mime.types file" # If the tests have not previously been run or were cleaned # up, then 'svn-test-work' does not exist yet. parent_dir = os.path.dirname(self.dontdothat_file) if not os.path.exists(parent_dir): os.makedirs(parent_dir) fp = open(self.dontdothat_file, 'w') fp.write('[recursive-actions]\n') fp.write('/ = deny\n') fp.close() def _create_cert_files(self): "Create certificate files" # The unix build uses certificates encoded in davautocheck.sh # Let's just read them from there sh_path = os.path.join(self.abs_srcdir, 'subversion', 'tests', 'cmdline', 'davautocheck.sh') sh = open(sh_path).readlines() def cert_extract(lines, what): r = [] pattern = r'cat\s*\>\s*' + re.escape(what) + r'\s*\<\<([A-Z_a-z0-9]+)' exit_marker = None for i in lines: if exit_marker: if i.startswith(exit_marker): return r r.append(i) else: m = re.match(pattern, i) if m: exit_marker = m.groups(1) cert_file = cert_extract(sh, '"$SSL_CERTIFICATE_FILE"') cert_key = cert_extract(sh, '"$SSL_CERTIFICATE_KEY_FILE"') open(self.certfile, 'w').write(''.join(cert_file)) open(self.certkeyfile, 'w').write(''.join(cert_key)) def _sys_module(self, name, path): full_path = os.path.join(self.httpd_dir, 'modules', path) return 'LoadModule ' + name + " " + self._quote(full_path) + '\n' def _svn_module(self, name, path): full_path = os.path.join(self.abs_builddir, path) return 'LoadModule ' + name + ' ' + self._quote(full_path) + '\n' def _svn_repo(self, name): path = os.path.join(self.abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'svn-test-work', name) location = '/svn-test-work/' + name ddt_location = '/ddt-test-work/' + name return \ '\n' \ ' DAV svn\n' \ ' SVNParentPath ' + self._quote(path) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ ' SVNAllowBulkUpdates ' + self.bulkupdates_option + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' AuthType Basic\n' \ ' AuthName "Subversion Repository"\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user\n' \ '\n' \ '\n' \ ' DAV svn\n' \ ' SVNParentPath ' + self._quote(path) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ ' SVNAllowBulkUpdates ' + self.bulkupdates_option + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' AuthType Basic\n' \ ' AuthName "Subversion Repository"\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user\n' \ ' DontDoThatConfigFile ' + self._quote(self.dontdothat_file) + '\n' \ '\n' def _svn_authz_repo(self): local_tmp = os.path.join(self.abs_builddir, CMDLINE_TEST_SCRIPT_NATIVE_PATH, 'svn-test-work', 'local_tmp') return \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' ' + '\n' \ ' Require all granted' + '\n' \ ' ' + '\n' \ ' ' + '\n' \ ' Allow from all' + '\n' \ ' ' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user' + '\n' \ ' Satisfy Any' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user' + '\n' \ ' AuthzSVNNoAuthWhenAnonymousAllowed On' + '\n' \ ' SVNPathAuthz On' + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user' + '\n' \ ' AuthzSVNAnonymous Off' + '\n' \ ' SVNPathAuthz On' + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user' + '\n' \ ' AuthzForceUsernameCase Lower' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' Require valid-user' + '\n' \ ' AuthzForceUsernameCase Lower' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' AuthGroupFile ' + self._quote(self.httpd_groups) + '\n' \ ' Require group random' + '\n' \ ' AuthzSVNAuthoritative Off' + '\n' \ ' SVNPathAuthz On' + '\n' \ '' + '\n' \ '' + '\n' \ '' + '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' AuthzSendForbiddenOnFailure On' + '\n' \ ' Satisfy All' + '\n' \ ' ' + '\n' \ ' Require valid-user' + '\n' \ ' Require expr req(\'ALLOW\') == \'1\'' + '\n' \ ' ' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ ''+ '\n' \ ' DAV svn' + '\n' \ ' SVNParentPath ' + local_tmp + '\n' \ ' AuthzSVNAccessFile ' + self._quote(self.authz_file) + '\n' \ ' SVNAdvertiseV2Protocol ' + self.httpv2_option + '\n' \ ' SVNListParentPath On' + '\n' \ ' AuthType Basic' + '\n' \ ' AuthName "Subversion Repository"' + '\n' \ ' AuthUserFile ' + self._quote(self.httpd_users) + '\n' \ ' AuthzSendForbiddenOnFailure On' + '\n' \ ' Satisfy All' + '\n' \ ' ' + '\n' \ ' Require valid-user' + '\n' \ ' Require expr req(\'ALLOW\') == \'1\'' + '\n' \ ' ' + '\n' \ ' SVNPathAuthz ' + self.path_authz_option + '\n' \ '' + '\n' \ '' + '\n' \ def start(self): if self.service: self._start_service() else: self._start_daemon() # Avoid output from starting and preparing between test results sys.stderr.flush() sys.stdout.flush() def stop(self): if self.service: self._stop_service() else: self._stop_daemon() def _start_service(self): "Install and start HTTPD service" print('Installing service %s' % self.service_name) os.spawnv(os.P_WAIT, self.path, self.httpd_args + ['-k', 'install']) print('Starting service %s' % self.service_name) os.spawnv(os.P_WAIT, self.path, self.httpd_args + ['-k', 'start']) def _stop_service(self): "Stop and uninstall HTTPD service" os.spawnv(os.P_WAIT, self.path, self.httpd_args + ['-k', 'stop']) os.spawnv(os.P_WAIT, self.path, self.httpd_args + ['-k', 'uninstall']) def _start_daemon(self): "Start HTTPD as daemon" print('Starting httpd as daemon') print(self.httpd_args) self.proc = subprocess.Popen([self.path] + self.httpd_args[1:]) def _stop_daemon(self): "Stop the HTTPD daemon" if self.proc is not None: try: print('Stopping %s' % self.name) self.proc.poll(); if self.proc.returncode is None: self.proc.kill(); return except AttributeError: pass print('Httpd.stop_daemon not implemented') class Memcached: "Run memcached for tests" def __init__(self, abs_memcached_dir, memcached_server): self.name = 'memcached.exe' self.memcached_host, self.memcached_port = memcached_server.split(':') self.memcached_dir = abs_memcached_dir self.proc = None self.path = os.path.join(self.memcached_dir, self.name) self.memcached_args = [ self.name, '-p', self.memcached_port, '-l', self.memcached_host ] def __del__(self): "Stop memcached when the object is deleted" self.stop() def start(self): "Start memcached as daemon" print('Starting %s as daemon' % self.name) print(self.memcached_args) self.proc = subprocess.Popen([self.path] + self.memcached_args) def stop(self): "Stop memcached" if self.proc is not None: try: print('Stopping %s' % self.name) self.proc.poll(); if self.proc.returncode is None: self.proc.kill(); return except AttributeError: pass # Move the binaries to the test directory create_target_dir(abs_builddir) locate_libs() if create_dirs: for i in gen_obj.graph.get_all_sources(gen_base.DT_INSTALL): if isinstance(i, gen_base.TargetExe): src = os.path.join(abs_objdir, i.filename) if os.path.isfile(src): dst = os.path.join(abs_builddir, i.filename) create_target_dir(os.path.dirname(dst)) copy_changed_file(src, dst) # Create the base directory for Python tests create_target_dir(CMDLINE_TEST_SCRIPT_NATIVE_PATH) # Ensure the tests directory is correctly cased abs_builddir = fix_case(abs_builddir) failed = None daemon = None memcached = None # Run the tests # No need to start any servers if we are only listing the tests. if not list_tests: if run_memcached: memcached = Memcached(memcached_dir, memcached_server) memcached.start() if run_svnserve: daemon = Svnserve(svnserve_args, objdir, abs_objdir, abs_builddir) if run_httpd: daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir, httpd_port, httpd_service, use_ssl, use_http2, use_mod_deflate, httpd_no_log, advertise_httpv2, http_short_circuit, http_bulk_updates) if use_ssl and not ssl_cert: ssl_cert = daemon.certfile # Start service daemon, if any if daemon: daemon.start() # Find the full path and filename of any test that is specified just by # its base name. if len(tests_to_run) != 0: tests = [] for t in tests_to_run: tns = None if '#' in t: t, tns = t.split('#') test = [x for x in all_tests if x.split('/')[-1] == t] if not test and not (t.endswith('-test.exe') or t.endswith('_tests.py')): # The lengths of '-test.exe' and of '_tests.py' are both 9. test = [x for x in all_tests if x.split('/')[-1][:-9] == t] if not test: print("Skipping test '%s', test not found." % t) elif tns: tests.append('%s#%s' % (test[0], tns)) else: tests.extend(test) tests_to_run = tests else: tests_to_run = all_tests if list_tests: print('Listing %s configuration on %s' % (objdir, repo_loc)) else: print('Testing %s configuration on %s' % (objdir, repo_loc)) sys.path.insert(0, os.path.join(abs_srcdir, 'build')) if not test_javahl and not test_swig: import run_tests if log_to_stdout: log_file = None fail_log_file = None else: log_file = os.path.join(abs_builddir, log) fail_log_file = os.path.join(abs_builddir, faillog) if run_httpd: httpd_version = gen_obj._libraries['httpd'].version else: httpd_version = None opts, args = run_tests.create_parser().parse_args([]) opts.url = base_url opts.fs_type = fs_type opts.global_scheduler = global_scheduler opts.http_library = 'serf' opts.server_minor_version = server_minor_version opts.cleanup = cleanup opts.enable_sasl = enable_sasl opts.parallel = parallel opts.config_file = config_file opts.fsfs_sharding = fsfs_sharding opts.fsfs_packing = fsfs_packing opts.list_tests = list_tests opts.svn_bin = svn_bin opts.mode_filter = mode_filter opts.milestone_filter = milestone_filter opts.httpd_version = httpd_version opts.set_log_level = log_level opts.ssl_cert = ssl_cert opts.exclusive_wc_locks = exclusive_wc_locks opts.memcached_server = memcached_server opts.skip_c_tests = skip_c_tests opts.dump_load_cross_check = dump_load_cross_check opts.fsfs_compression = fsfs_compression opts.fsfs_dir_deltification = fsfs_dir_deltification th = run_tests.TestHarness(abs_srcdir, abs_builddir, log_file, fail_log_file, opts) old_cwd = os.getcwd() try: os.chdir(abs_builddir) failed = th.run(tests_to_run) except: os.chdir(old_cwd) raise else: os.chdir(old_cwd) elif test_javahl: failed = False java_exe = None for path in os.environ["PATH"].split(os.pathsep): if os.path.isfile(os.path.join(path, 'java.exe')): java_exe = os.path.join(path, 'java.exe') break if not java_exe and 'java_sdk' in gen_obj._libraries: jdk = gen_obj._libraries['java_sdk'] if os.path.isfile(os.path.join(jdk.lib_dir, '../bin/java.exe')): java_exe = os.path.join(jdk.lib_dir, '../bin/java.exe') if not java_exe: print('Java not found. Skipping Java tests') else: args = (os.path.abspath(java_exe),) if (objdir == 'Debug'): args = args + ('-Xcheck:jni',) if cleanup: args = args + ('-Dtest.cleanup=1',) args = args + ( '-Dtest.rootdir=' + os.path.join(abs_builddir, 'javahl'), '-Dtest.srcdir=' + os.path.join(abs_srcdir, 'subversion/bindings/javahl'), '-Dtest.rooturl=', '-Dtest.fstype=' + fs_type , '-Dtest.tests=', '-Djava.library.path=' + os.path.join(abs_objdir, 'subversion/bindings/javahl/native'), '-classpath', os.path.join(abs_srcdir, 'subversion/bindings/javahl/classes') +';' + gen_obj.junit_path ) sys.stderr.flush() print('Running org.apache.subversion tests:') sys.stdout.flush() r = subprocess.call(args + tuple(['org.apache.subversion.javahl.RunTests'])) sys.stdout.flush() sys.stderr.flush() if (r != 0): print('[Test runner reported failure]') failed = True print('Running org.tigris.subversion tests:') sys.stdout.flush() r = subprocess.call(args + tuple(['org.tigris.subversion.javahl.RunTests'])) sys.stdout.flush() sys.stderr.flush() if (r != 0): print('[Test runner reported failure]') failed = True elif test_swig == 'perl': failed = False swig_dir = os.path.join(abs_builddir, 'swig') swig_pl_dir = os.path.join(swig_dir, 'p5lib') swig_pl_svn = os.path.join(swig_pl_dir, 'SVN') swig_pl_auto_svn = os.path.join(swig_pl_dir, 'auto', 'SVN') create_target_dir(swig_pl_svn) for i in gen_obj.graph.get_all_sources(gen_base.DT_INSTALL): if isinstance(i, gen_base.TargetSWIG) and i.lang == 'perl': mod_dir = os.path.join(swig_pl_auto_svn, '_' + i.name[5:].capitalize()) create_target_dir(mod_dir) copy_changed_file(os.path.join(abs_objdir, i.filename), to_dir=mod_dir) elif isinstance(i, gen_base.TargetSWIGLib) and i.lang == 'perl': copy_changed_file(os.path.join(abs_objdir, i.filename), to_dir=abs_builddir) pm_src = os.path.join(abs_srcdir, 'subversion', 'bindings', 'swig', 'perl', 'native') tests = [] for root, dirs, files in os.walk(pm_src): for name in files: if name.endswith('.pm'): fn = os.path.join(root, name) copy_changed_file(fn, to_dir=swig_pl_svn) elif name.endswith('.t'): tests.append(os.path.relpath(os.path.join(root, name), pm_src)) perl5lib = swig_pl_dir if 'PERL5LIB' in os.environ: perl5lib += os.pathsep + os.environ['PERL5LIB'] perl_exe = 'perl.exe' print('-- Running Swig Perl tests --') sys.stdout.flush() old_cwd = os.getcwd() try: os.chdir(pm_src) os.environ['PERL5LIB'] = perl5lib os.environ["SVN_DBG_NO_ABORT_ON_ERROR_LEAK"] = 'YES' r = subprocess.call([ perl_exe, '-MExtUtils::Command::MM', '-e', 'test_harness()' ] + tests) finally: os.chdir(old_cwd) if (r != 0): print('[Test runner reported failure]') failed = True elif test_swig == 'python': failed = False swig_dir = os.path.join(abs_builddir, 'swig') swig_py_dir = os.path.join(swig_dir, 'pylib') swig_py_libsvn = os.path.join(swig_py_dir, 'libsvn') swig_py_svn = os.path.join(swig_py_dir, 'svn') create_target_dir(swig_py_libsvn) create_target_dir(swig_py_svn) for i in gen_obj.graph.get_all_sources(gen_base.DT_INSTALL): if (isinstance(i, gen_base.TargetSWIG) or isinstance(i, gen_base.TargetSWIGLib)) and i.lang == 'python': src = os.path.join(abs_objdir, i.filename) - copy_changed_file(src, to_dir=swig_py_libsvn) + basename = os.path.basename(src) + if sys.version_info[:2] >= (3, 5) \ + and basename.endswith('.pyd') and objdir == 'Debug': + basename = basename[:-4] + '_d.pyd' + copy_changed_file(src, os.path.join(swig_py_libsvn, basename)) py_src = os.path.join(abs_srcdir, 'subversion', 'bindings', 'swig', 'python') for py_file in os.listdir(py_src): if py_file.endswith('.py'): copy_changed_file(os.path.join(py_src, py_file), to_dir=swig_py_libsvn) py_src_svn = os.path.join(py_src, 'svn') for py_file in os.listdir(py_src_svn): if py_file.endswith('.py'): copy_changed_file(os.path.join(py_src_svn, py_file), to_dir=swig_py_svn) print('-- Running Swig Python tests --') sys.stdout.flush() pythonpath = swig_py_dir if 'PYTHONPATH' in os.environ: pythonpath += os.pathsep + os.environ['PYTHONPATH'] - python_exe = 'python.exe' + python_exe = sys.executable if objdir != 'Debug' else \ + os.path.join(os.path.dirname(sys.executable), 'python_d.exe') old_cwd = os.getcwd() try: os.environ['PYTHONPATH'] = pythonpath r = subprocess.call([ python_exe, os.path.join(py_src, 'tests', 'run_all.py') ]) finally: os.chdir(old_cwd) if (r != 0): print('[Test runner reported failure]') failed = True elif test_swig == 'ruby': failed = False if 'ruby' not in gen_obj._libraries: print('Ruby not found. Skipping Ruby tests') else: ruby_lib = gen_obj._libraries['ruby'] ruby_exe = 'ruby.exe' ruby_subdir = os.path.join('subversion', 'bindings', 'swig', 'ruby') ruby_args = [ '-I', os.path.join(abs_srcdir, ruby_subdir), os.path.join(abs_srcdir, ruby_subdir, 'test', 'run-test.rb'), '--verbose' ] print('-- Running Swig Ruby tests --') sys.stdout.flush() old_cwd = os.getcwd() try: os.chdir(ruby_subdir) os.environ["BUILD_TYPE"] = objdir os.environ["SVN_DBG_NO_ABORT_ON_ERROR_LEAK"] = 'YES' r = subprocess.call([ruby_exe] + ruby_args) finally: os.chdir(old_cwd) sys.stdout.flush() sys.stderr.flush() if (r != 0): print('[Test runner reported failure]') failed = True elif test_swig: print('Unknown Swig binding type: ' + str(test_swig)) failed = True # Stop service daemon, if any if daemon: del daemon if memcached: del memcached # Remove the execs again for tgt in copied_execs: try: if os.path.isfile(tgt): if verbose: print("kill: %s" % tgt) os.unlink(tgt) except: traceback.print_exc(file=sys.stdout) pass if failed: sys.exit(1) diff --git a/usr.bin/svn/lib/libsvn_subr/Makefile b/usr.bin/svn/lib/libsvn_subr/Makefile index 20e728f4642d..b5490b3972b3 100644 --- a/usr.bin/svn/lib/libsvn_subr/Makefile +++ b/usr.bin/svn/lib/libsvn_subr/Makefile @@ -1,108 +1,109 @@ # $FreeBSD$ .include "${.CURDIR}/../Makefile.inc" .PATH: ${SVNDIR}/libsvn_subr ${SVNDIR}/libsvn_subr/lz4 INTERNALLIB= yes LIB= svn_subr SRCS= adler32.c \ + apr_escape.c \ atomic.c \ auth.c \ base64.c \ bit_array.c \ cache-inprocess.c \ cache-membuffer.c \ cache-memcache.c \ cache-null.c \ cache.c \ cache_config.c \ checksum.c \ cmdline.c \ compat.c \ compress_lz4.c \ compress_zlib.c \ config.c \ config_auth.c \ config_file.c \ config_win.c \ crypto.c \ ctype.c \ date.c \ debug.c \ deprecated.c \ dirent_uri.c \ dso.c \ encode.c \ eol.c \ error.c \ fnv1a.c \ gpg_agent.c \ hash.c \ io.c \ iter.c \ lock.c \ log.c \ lz4.c \ macos_keychain.c \ magic.c \ md5.c \ mergeinfo.c \ mutex.c \ nls.c \ object_pool.c \ opt.c \ packed_data.c \ path.c \ pool.c \ prefix_string.c \ prompt.c \ properties.c \ quoprint.c \ root_pools.c \ simple_providers.c \ skel.c \ sorts.c \ spillbuf.c \ sqlite.c \ sqlite3wrapper.c \ ssl_client_cert_providers.c \ ssl_client_cert_pw_providers.c \ ssl_server_trust_providers.c \ stream.c \ string.c \ subst.c \ sysinfo.c \ target.c \ temp_serializer.c \ time.c \ token.c \ types.c \ user.c \ username_providers.c \ utf.c \ utf8proc.c \ utf_validate.c \ utf_width.c \ validate.c \ version.c \ win32_crashrpt.c \ win32_crypto.c \ win32_xlate.c \ x509info.c \ x509parse.c \ xml.c CFLAGS+= -I${SVNDIR}/include \ -I${SVNDIR} \ -I${.CURDIR}/../.. \ -I${.CURDIR}/../libapr \ -I${APR}/include/arch/unix \ -I${APR}/include \ -I${.CURDIR}/../libapr_util \ -I${APRU}/include/private \ -I${APRU}/include \ -I${SQLITE} .include diff --git a/usr.bin/svn/svn_private_config.h b/usr.bin/svn/svn_private_config.h index c923728d6a49..d748e077183c 100644 --- a/usr.bin/svn/svn_private_config.h +++ b/usr.bin/svn/svn_private_config.h @@ -1,319 +1,319 @@ /* $FreeBSD$ */ /* subversion/svn_private_config.h.tmp. Generated from svn_private_config.h.in by configure. */ /* subversion/svn_private_config.h.in. Generated from configure.ac by autoheader. */ /* The fs type to use by default */ #define DEFAULT_FS_TYPE "fsfs" /* The http library to use by default */ #define DEFAULT_HTTP_LIBRARY "serf" /* Define to 1 if Ev2 implementations should be used. */ /* #undef ENABLE_EV2_IMPL */ /* Define to 1 if translation of program messages to the user's native language is requested. */ /* #undef ENABLE_NLS */ /* Define to 1 if you have the `bind_textdomain_codeset' function. */ /* #undef HAVE_BIND_TEXTDOMAIN_CODESET */ /* define if the Boost library is available */ /* #undef HAVE_BOOST */ /* define if the Boost::Unit_Test_Framework library is available */ /* #undef HAVE_BOOST_UNIT_TEST_FRAMEWORK */ /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if you have the header file. */ #define HAVE_ELF_H 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `iconv' library (-liconv). */ /* #undef HAVE_LIBICONV */ /* Define to 1 if you have the `socket' library (-lsocket). */ /* #undef HAVE_LIBSOCKET */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MAGIC_H */ /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PY3C_H */ /* Define to 1 if you have the `rb_errinfo' function. */ /* #undef HAVE_RB_ERRINFO */ /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SERF_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the `tcgetattr' function. */ #define HAVE_TCGETATTR 1 /* Define to 1 if you have the `tcsetattr' function. */ #define HAVE_TCSETATTR 1 /* Defined if we have a usable termios library. */ #define HAVE_TERMIOS_H 1 /* Define to 1 if you have the `uname' function. */ #define HAVE_UNAME 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_ZLIB_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "http://subversion.apache.org/" /* Define to the full name of this package. */ #define PACKAGE_NAME "subversion" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "subversion 1.14.0" +#define PACKAGE_STRING "subversion 1.14.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "subversion" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.14.0" +#define PACKAGE_VERSION "1.14.1" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Defined to build against httpd 2.4 with broken auth */ /* #undef SVN_ALLOW_BROKEN_HTTPD_AUTH */ /* Defined to be the path to the installed binaries */ #define SVN_BINDIR "/usr/bin" /* Defined to the config.guess name of the build system */ #define SVN_BUILD_HOST "bikeshed-rgb-freebsd" /* Defined to the config.guess name of the build target */ #define SVN_BUILD_TARGET "bikeshed-rgb-freebsd" /* The path of a default editor for the client. */ /* #undef SVN_CLIENT_EDITOR */ /* Defined if the full version matching rules are disabled */ /* #undef SVN_DISABLE_FULL_VERSION_MATCH */ /* Defined if plaintext password/passphrase storage is disabled */ /* #undef SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE */ /* Shared library file name suffix format */ /* #undef SVN_DSO_SUFFIX_FMT */ /* The desired major version for the Berkeley DB */ #define SVN_FS_WANT_DB_MAJOR 4 /* The desired minor version for the Berkeley DB */ #define SVN_FS_WANT_DB_MINOR 0 /* The desired patch version for the Berkeley DB */ #define SVN_FS_WANT_DB_PATCH 14 /* Define if compiler provides atomic builtins */ /* #undef SVN_HAS_ATOMIC_BUILTINS */ /* Is GNOME Keyring support enabled? */ /* #undef SVN_HAVE_GNOME_KEYRING */ /* Is GPG Agent support enabled? */ #define SVN_HAVE_GPG_AGENT 1 /* Is Mac OS KeyChain support enabled? */ /* #undef SVN_HAVE_KEYCHAIN_SERVICES */ /* Defined if KF5 available */ /* #undef SVN_HAVE_KF5 */ /* Defined if KWallet support is enabled */ /* #undef SVN_HAVE_KWALLET */ /* Defined if libmagic support is enabled */ #define SVN_HAVE_LIBMAGIC 1 /* Is libsecret support enabled? */ /* #undef SVN_HAVE_LIBSECRET */ /* Is Mach-O low-level _dyld API available? */ /* #undef SVN_HAVE_MACHO_ITERATE */ /* Is Mac OS property list API available? */ /* #undef SVN_HAVE_MACOS_PLIST */ /* Defined if apr_memcache (standalone or in apr-util) is present */ #define SVN_HAVE_MEMCACHE 1 /* Defined if Expat 1.0 or 1.1 was found */ /* #undef SVN_HAVE_OLD_EXPAT */ /* Defined if Cyrus SASL v2 is present on the system */ /* #undef SVN_HAVE_SASL */ /* Defined if support for Serf is enabled */ #define SVN_HAVE_SERF 1 /* Define to use internal LZ4 code */ #define SVN_INTERNAL_LZ4 1 /* Define to use internal UTF8PROC code */ #define SVN_INTERNAL_UTF8PROC 1 /* Defined if libsvn_fs should link against libsvn_fs_base */ /* #undef SVN_LIBSVN_FS_LINKS_FS_BASE */ /* Defined if libsvn_fs should link against libsvn_fs_fs */ #define SVN_LIBSVN_FS_LINKS_FS_FS 1 /* Defined if libsvn_fs should link against libsvn_fs_x */ #define SVN_LIBSVN_FS_LINKS_FS_X 1 /* Defined if libsvn_ra should link against libsvn_ra_local */ #define SVN_LIBSVN_RA_LINKS_RA_LOCAL 1 /* Defined if libsvn_ra should link against libsvn_ra_serf */ #define SVN_LIBSVN_RA_LINKS_RA_SERF 1 /* Defined if libsvn_ra should link against libsvn_ra_svn */ #define SVN_LIBSVN_RA_LINKS_RA_SVN 1 /* Defined to be the path to the installed locale dirs */ #define SVN_LOCALE_DIR "NONE/share/locale" /* Defined to be the null device for the system */ #define SVN_NULL_DEVICE_NAME "/dev/null" /* Defined to be the path separator used on your local filesystem */ #define SVN_PATH_LOCAL_SEPARATOR '/' /* Subversion library major verson */ #define SVN_SOVERSION 0 /* Defined if svn should use the amalgamated version of sqlite */ /* #undef SVN_SQLITE_INLINE */ /* Defined if svn should try to load DSOs */ /* #undef SVN_USE_DSO */ /* Defined to build with patched httpd 2.4 and working auth */ /* #undef SVN_USE_FORCE_AUTHN */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ #ifdef SVN_WANT_BDB #define APU_WANT_DB #endif /* Indicate to translators that string X should be translated. Do not look up the translation at run time; just expand to X. This macro is suitable for use where a constant string is required at compile time. */ #define N_(x) x /* Indicate to translators that we have decided the string X should not be translated. Expand to X. */ #define U_(x) x #ifdef ENABLE_NLS #include #include /* Indicate to translators that string X should be translated. At run time, look up and return the translation of X. */ #define _(x) dgettext(PACKAGE_NAME, x) /* Indicate to translators that strings X1 and X2 are singular and plural forms of the same message, and should be translated. At run time, return an appropriate translation depending on the number N. */ #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n) #else #define _(x) (x) #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2) #define gettext(x) (x) #define dgettext(domain, x) (x) #endif /* compiler hints */ #if defined(__GNUC__) && (__GNUC__ >= 3) # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0)) # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) #else # define SVN__PREDICT_FALSE(x) (x) # define SVN__PREDICT_TRUE(x) (x) #endif #if defined(SVN_DEBUG) # define SVN__FORCE_INLINE # define SVN__PREVENT_INLINE #elif defined(__GNUC__) # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline)) # define SVN__PREVENT_INLINE __attribute__ ((noinline)) #else # define SVN__FORCE_INLINE APR_INLINE # define SVN__PREVENT_INLINE #endif /* Macro used to specify that a variable is intentionally left unused. Supresses compiler warnings about the variable being unused. */ #define SVN_UNUSED(v) ( (void)(v) )