Merge lp:~maxb/ubuntu/lucid/subversion/merge into lp:ubuntu/lucid/subversion

Proposed by Max Bowsher
Status: Merged
Merged at revision: not available
Proposed branch: lp:~maxb/ubuntu/lucid/subversion/merge
Merge into: lp:ubuntu/lucid/subversion
Diff against target: 119180 lines
To merge this branch: bzr merge lp:~maxb/ubuntu/lucid/subversion/merge
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+15522@code.launchpad.net
To post a comment you must log in.
41. By Max Bowsher

Per request of Scott Kitterman, revert changing XS-Python-Version to all,
restoring the line from Debian.

42. By Max Bowsher

Add LP bug numbers to the changelog for bugs closed by merge.

43. By Max Bowsher

Amend the XS-Python-Version line to ">= 2.4" rather than explicit versions.
(Explicit versions which are not available via python-all cause FTBFS.)

44. By Scott Kitterman

Changelog tweaks by my sponsor prior to uploading.

Revision history for this message
Max Bowsher (maxb) wrote :

This has been uploaded to the archive.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CHANGES'
--- CHANGES 2009-08-24 19:09:22 +0000
+++ CHANGES 2009-12-12 13:21:15 +0000
@@ -1,9 +1,40 @@
1Version 1.6.6
2(16 Oct 2009, from /branches/1.6.x)
3http://svn.collab.net/repos/svn/tags/1.6.6
4
5 User-visible changes:
6 * fix crash during 'svn update' (r39673)
7 * respect Apache's ServerSignature directive (r40008, -21, -31)
8 * don't add a file with mixed line endings, and then abort (issue #2713)
9 * support Neon 0.29.
10 * fix a crash in 'svn rm --force' (r37953)
11 * handle tree conflicts involving replacements (issue #3486)
12 * allow non-threadsafe sqlite if APR has no threads (r39301)
13 * print newline before plaintext SSL cert / password prompts (r38982, r39302)
14 * improve merge performance with implicit subtree mergeinfo (issue #3443)
15 * fix "libsvn_ra_svn/marshal.c assertion failed (opt || cstr)" (issue #3485)
16 * make file externals work for binary files (issue #3368)
17 * perform MIME type matching case-insensitively (issue #3479)
18 * do not treat non-existent revisions as HEAD in 'svn export' (issue #3400)
19 * revert r36720's default MIME type change back to "text/plain" (issue #3508)
20 * improve "tree conflict already exists" error message (r38872)
21 * fix failure to commit replacement of a directory (issue #3281)
22 * fix mod_dav_svn parent dir links to preserve peg revisions (issue #3425)
23
24 Developer-visible changes:
25 * fix 2 failing tests in ruby bindings (r38886)
26 * do not require GNU grep for build (issue #3453)
27 * use '$SED' instead of 'sed' in build scripts (issue #3458)
28 * add svn.client.{log5,merge_peg3} to python bindings (r39635, -6, -7)
29 * include the time of a test run in tests.log (r39887)
30
31
1Version 1.6.532Version 1.6.5
2(21 Aug 2009, from /branches/1.6.x)33(21 Aug 2009, from /branches/1.6.x)
3http://svn.collab.net/repos/svn/tags/1.6.534http://svn.collab.net/repos/svn/tags/1.6.5
435
5 User-visible changes:36 User-visible changes:
6 * fix mod_dav_svn directory view links to preserve peg revisions (r38201)37 * fix mod_dav_svn directory view links to preserve peg revisions (r38021)
7 * do not error on Windows when ALLUSERPROFILE dir nonexistent (r38053, -5, -7)38 * do not error on Windows when ALLUSERPROFILE dir nonexistent (r38053, -5, -7)
8 * properly escape lock comments over ra_neon (r38101, -2)39 * properly escape lock comments over ra_neon (r38101, -2)
9 * allow syncing copies of '/' over ra_neon and ra_serf (issue #3438)40 * allow syncing copies of '/' over ra_neon and ra_serf (issue #3438)
1041
=== modified file 'README.Debian-tarball'
--- README.Debian-tarball 2009-08-24 19:09:22 +0000
+++ README.Debian-tarball 2009-12-12 13:21:14 +0000
@@ -1,4 +1,4 @@
1This tarball is the same as official subversion-1.6.5.tar.gz,1This tarball is the same as official subversion-1.6.6.tar.gz,
2except that several unlicensed or unclearly-licensed files were2except that several unlicensed or unclearly-licensed files were
3removed:3removed:
44
@@ -7,13 +7,9 @@
7 contrib/client-side/diffwrap.bat7 contrib/client-side/diffwrap.bat
8 contrib/client-side/svn-log.pl8 contrib/client-side/svn-log.pl
9 contrib/client-side/svn_all_diffs.pl9 contrib/client-side/svn_all_diffs.pl
10 contrib/client-side/svn_load_dirs
11 contrib/client-side/vim10 contrib/client-side/vim
12 contrib/hook-scripts/detect-merge-conflicts.sh11 contrib/hook-scripts/detect-merge-conflicts.sh
13 contrib/server-side/backup-recipe.sh12 contrib/server-side/backup-recipe.sh
14 contrib/server-side/load_repo_with_mergesensitive_copy.sh13 contrib/server-side/load_repo_with_mergesensitive_copy.sh
1514
16and 'configure.ac' at the top level was edited to remove references to15Peter Samuelson, 17 Oct 2009
17svn_load_dirs.pl.
18
19Peter Samuelson, 20 Aug 2009
2016
=== modified file 'build-outputs.mk'
--- build-outputs.mk 2009-08-24 19:09:22 +0000
+++ build-outputs.mk 2009-12-12 13:21:15 +0000
@@ -1598,7 +1598,7 @@
15981598
1599subversion/libsvn_client/log.lo: subversion/libsvn_client/log.c 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_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_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_version.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h1599subversion/libsvn_client/log.lo: subversion/libsvn_client/log.c 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_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_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_version.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
16001600
1601subversion/libsvn_client/merge.lo: subversion/libsvn_client/merge.c subversion/include/private/svn_mergeinfo_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_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_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_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h1601subversion/libsvn_client/merge.lo: subversion/libsvn_client/merge.c subversion/include/private/svn_mergeinfo_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_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_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
16021602
1603subversion/libsvn_client/mergeinfo.lo: subversion/libsvn_client/mergeinfo.c 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_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_version.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h1603subversion/libsvn_client/mergeinfo.lo: subversion/libsvn_client/mergeinfo.c 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_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_version.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
16041604
16051605
=== added file 'build/ac-macros/apr_memcache.m4'
--- build/ac-macros/apr_memcache.m4 1970-01-01 00:00:00 +0000
+++ build/ac-macros/apr_memcache.m4 2009-12-12 13:21:15 +0000
@@ -0,0 +1,84 @@
1dnl
2dnl SVN_LIB_APR_MEMCACHE
3dnl
4dnl Check configure options and assign variables related to
5dnl the apr_memcache client library.
6dnl Sets svn_lib_apr_memcache to "yes" if memcache code is accessible
7dnl either from the standalone apr_memcache library or from apr-util.
8dnl
9
10AC_DEFUN(SVN_LIB_APR_MEMCACHE,
11[
12 apr_memcache_found=no
13
14 AC_ARG_WITH(apr_memcache,AC_HELP_STRING([--with-apr_memcache=PREFIX],
15 [Standalone apr_memcache client library]),
16 [
17 if test "$withval" = "yes" ; then
18 AC_MSG_ERROR([--with-apr_memcache requires an argument.])
19 else
20 AC_MSG_NOTICE([looking for separate apr_memcache package])
21 apr_memcache_prefix=$withval
22 save_cppflags="$CPPFLAGS"
23 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$apr_memcache_prefix/include/apr_memcache-0"
24 AC_CHECK_HEADER(apr_memcache.h,[
25 save_ldflags="$LDFLAGS"
26 LDFLAGS="$LDFLAGS -L$apr_memcache_prefix/lib"
27 AC_CHECK_LIB(apr_memcache, apr_memcache_create,
28 [apr_memcache_found="standalone"])
29 LDFLAGS="$save_ldflags"])
30 CPPFLAGS="$save_cppflags"
31 fi
32 ], [
33 if test -d "$srcdir/apr_memcache"; then
34 apr_memcache_found=reconfig
35 else
36dnl Try just looking in apr-util (>= 1.3 has it already).
37 AC_MSG_NOTICE([looking for apr_memcache as part of apr-util])
38 save_cppflags="$CPPFLAGS"
39 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES"
40 AC_CHECK_HEADER(apr_memcache.h,[
41 save_ldflags="$LDFLAGS"
42 LDFLAGS="$LDFLAGS $SVN_APRUTIL_EXPORT_LIBS"
43 AC_CHECK_LIB(aprutil-1, apr_memcache_create,
44 [apr_memcache_found="aprutil"])
45 LDFLAGS="$save_ldflags"])
46 CPPFLAGS="$save_cppflags"
47
48 fi
49 ])
50
51
52 if test $apr_memcache_found = "reconfig"; then
53 SVN_EXTERNAL_PROJECT([apr_memcache], [--with-apr=$apr_config --with-apr-util=$apu_config])
54 apr_memcache_prefix=$prefix
55 SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix"
56 SVN_APR_MEMCACHE_INCLUDES="-I$srcdir/memcache"
57 SVN_APR_MEMCACHE_LIBS="$abs_builddir/memcache/libapr_memcache.la"
58 SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache"
59 fi
60
61 if test $apr_memcache_found = "standalone"; then
62 SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix"
63 SVN_APR_MEMCACHE_INCLUDES="-I$apr_memcache_prefix/include/apr_memcache-0"
64 SVN_APR_MEMCACHE_LIBS="$apr_memcache_prefix/lib/libapr_memcache.la"
65 SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache"
66 svn_lib_apr_memcache=yes
67 elif test $apr_memcache_found = "aprutil"; then
68dnl We are already linking apr-util everywhere, so no special treatement needed.
69 SVN_APR_MEMCACHE_PREFIX=""
70 SVN_APR_MEMCACHE_INCLUDES=""
71 SVN_APR_MEMCACHE_LIBS=""
72 SVN_APR_MEMCACHE_EXPORT_LIBS=""
73 svn_lib_apr_memcache=yes
74 elif test $apr_memcache_found = "reconfig"; then
75 svn_lib_apr_memcache=yes
76 else
77 svn_lib_apr_memcache=no
78 fi
79
80 AC_SUBST(SVN_APR_MEMCACHE_PREFIX)
81 AC_SUBST(SVN_APR_MEMCACHE_INCLUDES)
82 AC_SUBST(SVN_APR_MEMCACHE_LIBS)
83 AC_SUBST(SVN_APR_MEMCACHE_EXPORT_LIBS)
84])
085
=== removed file 'build/ac-macros/apr_memcache.m4'
--- build/ac-macros/apr_memcache.m4 2009-04-09 17:30:40 +0000
+++ build/ac-macros/apr_memcache.m4 1970-01-01 00:00:00 +0000
@@ -1,84 +0,0 @@
1dnl
2dnl SVN_LIB_APR_MEMCACHE
3dnl
4dnl Check configure options and assign variables related to
5dnl the apr_memcache client library.
6dnl Sets svn_lib_apr_memcache to "yes" if memcache code is accessible
7dnl either from the standalone apr_memcache library or from apr-util.
8dnl
9
10AC_DEFUN(SVN_LIB_APR_MEMCACHE,
11[
12 apr_memcache_found=no
13
14 AC_ARG_WITH(apr_memcache,AC_HELP_STRING([--with-apr_memcache=PREFIX],
15 [Standalone apr_memcache client library]),
16 [
17 if test "$withval" = "yes" ; then
18 AC_MSG_ERROR([--with-apr_memcache requires an argument.])
19 else
20 AC_MSG_NOTICE([looking for separate apr_memcache package])
21 apr_memcache_prefix=$withval
22 save_cppflags="$CPPFLAGS"
23 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$apr_memcache_prefix/include/apr_memcache-0"
24 AC_CHECK_HEADER(apr_memcache.h,[
25 save_ldflags="$LDFLAGS"
26 LDFLAGS="$LDFLAGS -L$apr_memcache_prefix/lib"
27 AC_CHECK_LIB(apr_memcache, apr_memcache_create,
28 [apr_memcache_found="standalone"])
29 LDFLAGS="$save_ldflags"])
30 CPPFLAGS="$save_cppflags"
31 fi
32 ], [
33 if test -d "$srcdir/apr_memcache"; then
34 apr_memcache_found=reconfig
35 else
36dnl Try just looking in apr-util (>= 1.3 has it already).
37 AC_MSG_NOTICE([looking for apr_memcache as part of apr-util])
38 save_cppflags="$CPPFLAGS"
39 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES"
40 AC_CHECK_HEADER(apr_memcache.h,[
41 save_ldflags="$LDFLAGS"
42 LDFLAGS="$LDFLAGS $SVN_APRUTIL_EXPORT_LIBS"
43 AC_CHECK_LIB(aprutil-1, apr_memcache_create,
44 [apr_memcache_found="aprutil"])
45 LDFLAGS="$save_ldflags"])
46 CPPFLAGS="$save_cppflags"
47
48 fi
49 ])
50
51
52 if test $apr_memcache_found = "reconfig"; then
53 SVN_EXTERNAL_PROJECT([apr_memcache], [--with-apr=$apr_config --with-apr-util=$apu_config])
54 apr_memcache_prefix=$prefix
55 SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix"
56 SVN_APR_MEMCACHE_INCLUDES="-I$srcdir/memcache"
57 SVN_APR_MEMCACHE_LIBS="$abs_builddir/memcache/libapr_memcache.la"
58 SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache"
59 fi
60
61 if test $apr_memcache_found = "standalone"; then
62 SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix"
63 SVN_APR_MEMCACHE_INCLUDES="-I$apr_memcache_prefix/include/apr_memcache-0"
64 SVN_APR_MEMCACHE_LIBS="$apr_memcache_prefix/lib/libapr_memcache.la"
65 SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache"
66 svn_lib_apr_memcache=yes
67 elif test $apr_memcache_found = "aprutil"; then
68dnl We are already linking apr-util everywhere, so no special treatement needed.
69 SVN_APR_MEMCACHE_PREFIX=""
70 SVN_APR_MEMCACHE_INCLUDES=""
71 SVN_APR_MEMCACHE_LIBS=""
72 SVN_APR_MEMCACHE_EXPORT_LIBS=""
73 svn_lib_apr_memcache=yes
74 elif test $apr_memcache_found = "reconfig"; then
75 svn_lib_apr_memcache=yes
76 else
77 svn_lib_apr_memcache=no
78 fi
79
80 AC_SUBST(SVN_APR_MEMCACHE_PREFIX)
81 AC_SUBST(SVN_APR_MEMCACHE_INCLUDES)
82 AC_SUBST(SVN_APR_MEMCACHE_LIBS)
83 AC_SUBST(SVN_APR_MEMCACHE_EXPORT_LIBS)
84])
850
=== modified file 'build/ac-macros/berkeley-db.m4'
--- build/ac-macros/berkeley-db.m4 2009-08-24 19:09:22 +0000
+++ build/ac-macros/berkeley-db.m4 2009-12-12 13:21:15 +0000
@@ -63,17 +63,17 @@
63 fi63 fi
64 else64 else
65 if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then65 if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then
66 svn_berkeley_db_header=["`echo "$withval" | sed -e "s/\([^:]*\):.*/\1/"`"]66 svn_berkeley_db_header=["`echo "$withval" | $SED -e "s/\([^:]*\):.*/\1/"`"]
67 SVN_DB_INCLUDES=""67 SVN_DB_INCLUDES=""
68 for i in [`echo "$withval" | sed -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`]; do68 for i in [`echo "$withval" | $SED -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`]; do
69 SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i"69 SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i"
70 done70 done
71 SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }"71 SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }"
72 for l in [`echo "$withval" | sed -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`]; do72 for l in [`echo "$withval" | $SED -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`]; do
73 LDFLAGS="$LDFLAGS -L$l"73 LDFLAGS="$LDFLAGS -L$l"
74 done74 done
75 SVN_DB_LIBS=""75 SVN_DB_LIBS=""
76 for l in [`echo "$withval" | sed -e "s/.*:\([^:]*\)/\1/"`]; do76 for l in [`echo "$withval" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
77 SVN_DB_LIBS="$SVN_DB_LIBS -l$l"77 SVN_DB_LIBS="$SVN_DB_LIBS -l$l"
78 done78 done
79 SVN_DB_LIBS="${SVN_DB_LIBS## }"79 SVN_DB_LIBS="${SVN_DB_LIBS## }"
@@ -161,7 +161,7 @@
161 # Or that it resides in a non-standard location which we would have161 # Or that it resides in a non-standard location which we would have
162 # to compensate with using something like -R`$apu_config --prefix`/lib.162 # to compensate with using something like -R`$apu_config --prefix`/lib.
163 #163 #
164 SVN_DB_LIBS=["${SVN_DB_LIBS-`$apu_config --libs | sed -e 's/.*\(-ldb[^[:space:]]*\).*/\1/' | $EGREP -- '-ldb[^[:space:]]*'`}"]164 SVN_DB_LIBS=["${SVN_DB_LIBS-`$apu_config --libs | $SED -e 's/.*\(-ldb[^[:space:]]*\).*/\1/' | $EGREP -- '-ldb[^[:space:]]*'`}"]
165165
166 CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS" 166 CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS"
167 LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS"167 LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS"
168168
=== added file 'build/ac-macros/ctypesgen.m4'
--- build/ac-macros/ctypesgen.m4 1970-01-01 00:00:00 +0000
+++ build/ac-macros/ctypesgen.m4 2009-12-12 13:21:15 +0000
@@ -0,0 +1,60 @@
1dnl
2dnl ctypesgen.m4: Locates ctypesgen for building/installing ctypes-python.
3dnl
4
5AC_DEFUN(SVN_CHECK_CTYPESGEN,
6[
7 AC_ARG_WITH(ctypesgen,
8 AS_HELP_STRING([--with-ctypesgen=PATH],
9 [Specify the path to ctypesgen. This can either
10 be the full path to a ctypesgen installation,
11 the full path to a ctypesgen source tree or the
12 full path to ctypesgen.py.]),
13 [
14 case "$withval" in
15 "no")
16 SVN_FIND_CTYPESGEN(no)
17 ;;
18 "yes")
19 SVN_FIND_CTYPESGEN(check)
20 ;;
21 *)
22 SVN_FIND_CTYPESGEN($withval)
23 ;;
24 esac
25 ],
26 [
27 SVN_FIND_CTYPESGEN(check)
28 ])
29])
30
31AC_DEFUN(SVN_FIND_CTYPESGEN,
32[
33 where=$1
34
35 CTYPESGEN=none
36
37 if test $where = check; then
38 AC_PATH_PROG(CTYPESGEN, "ctypesgen.py", none)
39 elif test $where != no; then
40 AC_MSG_CHECKING([for ctypesgen.py])
41
42 if test -f "$where"; then
43 CTYPESGEN="$where"
44 elif test -f "$where/bin/ctypesgen.py"; then
45 CTYPESGEN="$where/bin/ctypesgen.py"
46 else
47 CTYPESGEN="$where/ctypesgen.py"
48 fi
49
50 if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then
51 AC_MSG_ERROR([Could not find ctypesgen at $where/ctypesgen.py or at
52 $where/bin/ctypesgen.py])
53 else
54 AC_MSG_RESULT([$CTYPESGEN])
55 fi
56 fi
57
58 dnl We use CTYPESGEN in the Makefile
59 AC_SUBST(CTYPESGEN)
60])
061
=== removed file 'build/ac-macros/ctypesgen.m4'
--- build/ac-macros/ctypesgen.m4 2009-04-09 17:30:40 +0000
+++ build/ac-macros/ctypesgen.m4 1970-01-01 00:00:00 +0000
@@ -1,60 +0,0 @@
1dnl
2dnl ctypesgen.m4: Locates ctypesgen for building/installing ctypes-python.
3dnl
4
5AC_DEFUN(SVN_CHECK_CTYPESGEN,
6[
7 AC_ARG_WITH(ctypesgen,
8 AS_HELP_STRING([--with-ctypesgen=PATH],
9 [Specify the path to ctypesgen. This can either
10 be the full path to a ctypesgen installation,
11 the full path to a ctypesgen source tree or the
12 full path to ctypesgen.py.]),
13 [
14 case "$withval" in
15 "no")
16 SVN_FIND_CTYPESGEN(no)
17 ;;
18 "yes")
19 SVN_FIND_CTYPESGEN(check)
20 ;;
21 *)
22 SVN_FIND_CTYPESGEN($withval)
23 ;;
24 esac
25 ],
26 [
27 SVN_FIND_CTYPESGEN(check)
28 ])
29])
30
31AC_DEFUN(SVN_FIND_CTYPESGEN,
32[
33 where=$1
34
35 CTYPESGEN=none
36
37 if test $where = check; then
38 AC_PATH_PROG(CTYPESGEN, "ctypesgen.py", none)
39 elif test $where != no; then
40 AC_MSG_CHECKING([for ctypesgen.py])
41
42 if test -f "$where"; then
43 CTYPESGEN="$where"
44 elif test -f "$where/bin/ctypesgen.py"; then
45 CTYPESGEN="$where/bin/ctypesgen.py"
46 else
47 CTYPESGEN="$where/ctypesgen.py"
48 fi
49
50 if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then
51 AC_MSG_ERROR([Could not find ctypesgen at $where/ctypesgen.py or at
52 $where/bin/ctypesgen.py])
53 else
54 AC_MSG_RESULT([$CTYPESGEN])
55 fi
56 fi
57
58 dnl We use CTYPESGEN in the Makefile
59 AC_SUBST(CTYPESGEN)
60])
610
=== added file 'build/ac-macros/kwallet.m4'
--- build/ac-macros/kwallet.m4 1970-01-01 00:00:00 +0000
+++ build/ac-macros/kwallet.m4 2009-12-12 13:21:15 +0000
@@ -0,0 +1,99 @@
1dnl
2dnl SVN_LIB_KWALLET
3dnl
4dnl Check configure options and assign variables related to KWallet support
5dnl
6
7AC_DEFUN(SVN_LIB_KWALLET,
8[
9 AC_ARG_WITH(kwallet,
10 [AS_HELP_STRING([[--with-kwallet[=PATH]]],
11 [Enable use of KWallet (KDE 4) for auth credentials])],
12 [svn_lib_kwallet="$withval"],
13 [svn_lib_kwallet=no])
14
15 AC_MSG_CHECKING([whether to look for KWallet])
16 if test "$svn_lib_kwallet" != "no"; then
17 AC_MSG_RESULT([yes])
18 if test "$enable_shared" = "yes"; then
19 if test "$APR_HAS_DSO" = "yes"; then
20 if test "$USE_NLS" = "yes"; then
21 if test -n "$PKG_CONFIG"; then
22 if test "$HAVE_DBUS" = "yes"; then
23 AC_MSG_CHECKING([for QtCore, QtDBus, QtGui])
24 if $PKG_CONFIG --exists QtCore QtDBus QtGui; then
25 AC_MSG_RESULT([yes])
26 if test "$svn_lib_kwallet" != "yes"; then
27 AC_MSG_CHECKING([for kde4-config])
28 kde4_config="$svn_lib_kwallet/bin/kde4-config"
29 if test -f "$kde4_config" && test -x "$kde4_config"; then
30 HAVE_KDE4_CONFIG="yes"
31 AC_MSG_RESULT([yes])
32 else
33 AC_MSG_RESULT([no])
34 fi
35 else
36 AC_CHECK_PROG(HAVE_KDE4_CONFIG, kde4-config, yes)
37 kde4_config="kde4-config"
38 fi
39 if test "$HAVE_KDE4_CONFIG" = "yes"; then
40 AC_MSG_CHECKING([for KWallet])
41 old_CXXFLAGS="$CXXFLAGS"
42 old_LDFLAGS="$LDFLAGS"
43 old_LIBS="$LIBS"
44 for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui`]; do
45 if test -n ["`echo "$d" | $GREP -- '^-D[^[:space:]]*'`"]; then
46 CPPFLAGS="$CPPFLAGS $d"
47 fi
48 done
49 qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`"
50 kde_dir="`$kde4_config --prefix`"
51 SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_dir/include"
52 qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`"
53 SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options"
54 CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES"
55 LIBS="$LIBS $SVN_KWALLET_LIBS"
56 qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`"
57 LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$kde_dir/lib`$kde4_config --libsuffix`"
58 AC_LANG(C++)
59 AC_LINK_IFELSE([
60#include <kwallet.h>
61int main()
62{KWallet::Wallet::walletList();}], svn_lib_kwallet="yes", svn_lib_kwallet="no")
63 AC_LANG(C)
64 if test "$svn_lib_kwallet" = "yes"; then
65 AC_MSG_RESULT([yes])
66 CXXFLAGS="$old_CXXFLAGS"
67 LIBS="$old_LIBS"
68 else
69 AC_MSG_RESULT([no])
70 AC_MSG_ERROR([cannot find KWallet])
71 fi
72 else
73 AC_MSG_ERROR([cannot find kde4-config])
74 fi
75 else
76 AC_MSG_RESULT([no])
77 AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui])
78 fi
79 else
80 AC_MSG_ERROR([cannot find D-Bus])
81 fi
82 else
83 AC_MSG_ERROR([cannot find pkg-config])
84 fi
85 else
86 AC_MSG_ERROR([missing support for internationalization])
87 fi
88 else
89 AC_MSG_ERROR([APR does not have support for DSOs])
90 fi
91 else
92 AC_MSG_ERROR([--with-kwallet conflicts with --disable-shared])
93 fi
94 else
95 AC_MSG_RESULT([no])
96 fi
97 AC_SUBST(SVN_KWALLET_INCLUDES)
98 AC_SUBST(SVN_KWALLET_LIBS)
99])
0100
=== removed file 'build/ac-macros/kwallet.m4'
--- build/ac-macros/kwallet.m4 2009-04-09 17:30:40 +0000
+++ build/ac-macros/kwallet.m4 1970-01-01 00:00:00 +0000
@@ -1,97 +0,0 @@
1dnl
2dnl SVN_LIB_KWALLET
3dnl
4dnl Check configure options and assign variables related to KWallet support
5dnl
6
7AC_DEFUN(SVN_LIB_KWALLET,
8[
9 AC_ARG_WITH(kwallet,
10 [AS_HELP_STRING([[--with-kwallet[=PATH]]],
11 [Enable use of KWallet (KDE 4) for auth credentials])],
12 [svn_lib_kwallet="$withval"],
13 [svn_lib_kwallet=no])
14
15 AC_MSG_CHECKING([whether to look for KWallet])
16 if test "$svn_lib_kwallet" != "no"; then
17 AC_MSG_RESULT([yes])
18 if test "$enable_shared" = "yes"; then
19 if test "$APR_HAS_DSO" = "yes"; then
20 if test "$USE_NLS" = "yes"; then
21 if test -n "$PKG_CONFIG"; then
22 if test "$HAVE_DBUS" = "yes"; then
23 AC_MSG_CHECKING([for QtCore, QtDBus, QtGui])
24 if $PKG_CONFIG --exists QtCore QtDBus QtGui; then
25 AC_MSG_RESULT([yes])
26 if test "$svn_lib_kwallet" != "yes"; then
27 AC_MSG_CHECKING([for kde4-config])
28 kde4_config="$svn_lib_kwallet/bin/kde4-config"
29 if test -f "$kde4_config" && test -x "$kde4_config"; then
30 HAVE_KDE4_CONFIG="yes"
31 AC_MSG_RESULT([yes])
32 else
33 AC_MSG_RESULT([no])
34 fi
35 else
36 AC_CHECK_PROG(HAVE_KDE4_CONFIG, kde4-config, yes)
37 kde4_config="kde4-config"
38 fi
39 if test "$HAVE_KDE4_CONFIG" = "yes"; then
40 AC_MSG_CHECKING([for KWallet])
41 old_CXXFLAGS="$CXXFLAGS"
42 old_LDFLAGS="$LDFLAGS"
43 old_LIBS="$LIBS"
44 for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui | $GREP -o -- -D[^[:space:]]*`]; do
45 CPPFLAGS="$CPPFLAGS $d"
46 done
47 qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`"
48 kde_dir="`$kde4_config --prefix`"
49 SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_dir/include"
50 qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`"
51 SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options"
52 CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES"
53 LIBS="$LIBS $SVN_KWALLET_LIBS"
54 qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`"
55 LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$kde_dir/lib`$kde4_config --libsuffix`"
56 AC_LANG(C++)
57 AC_LINK_IFELSE([
58#include <kwallet.h>
59int main()
60{KWallet::Wallet::walletList();}], svn_lib_kwallet="yes", svn_lib_kwallet="no")
61 AC_LANG(C)
62 if test "$svn_lib_kwallet" = "yes"; then
63 AC_MSG_RESULT([yes])
64 CXXFLAGS="$old_CXXFLAGS"
65 LIBS="$old_LIBS"
66 else
67 AC_MSG_RESULT([no])
68 AC_MSG_ERROR([cannot find KWallet])
69 fi
70 else
71 AC_MSG_ERROR([cannot find kde4-config])
72 fi
73 else
74 AC_MSG_RESULT([no])
75 AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui])
76 fi
77 else
78 AC_MSG_ERROR([cannot find D-Bus])
79 fi
80 else
81 AC_MSG_ERROR([cannot find pkg-config])
82 fi
83 else
84 AC_MSG_ERROR([missing support for internationalization])
85 fi
86 else
87 AC_MSG_ERROR([APR does not have support for DSOs])
88 fi
89 else
90 AC_MSG_ERROR([--with-kwallet conflicts with --disable-shared])
91 fi
92 else
93 AC_MSG_RESULT([no])
94 fi
95 AC_SUBST(SVN_KWALLET_INCLUDES)
96 AC_SUBST(SVN_KWALLET_LIBS)
97])
980
=== modified file 'build/ac-macros/neon.m4'
--- build/ac-macros/neon.m4 2009-06-09 23:53:06 +0000
+++ build/ac-macros/neon.m4 2009-12-12 13:21:15 +0000
@@ -141,7 +141,7 @@
141 if test "$NEON_PKG_CONFIG" = "yes" ; then141 if test "$NEON_PKG_CONFIG" = "yes" ; then
142 NEON_VERSION=`$PKG_CONFIG neon --modversion`142 NEON_VERSION=`$PKG_CONFIG neon --modversion`
143 else143 else
144 NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'`144 NEON_VERSION=`$neon_config --version | $SED -e 's/^neon //'`
145 fi145 fi
146 AC_MSG_RESULT([$NEON_VERSION])146 AC_MSG_RESULT([$NEON_VERSION])
147147
@@ -165,8 +165,8 @@
165 test "$svn_allowed_neon" = "any"; then165 test "$svn_allowed_neon" = "any"; then
166 svn_allowed_neon_on_system="yes"166 svn_allowed_neon_on_system="yes"
167 if test "$NEON_PKG_CONFIG" = "yes"; then167 if test "$NEON_PKG_CONFIG" = "yes"; then
168 SVN_NEON_INCLUDES=[`$PKG_CONFIG neon --cflags | sed -e 's/-D[^ ]*//g'`]168 SVN_NEON_INCLUDES=[`$PKG_CONFIG neon --cflags | $SED -e 's/-D[^ ]*//g'`]
169 CFLAGS=["$CFLAGS `$PKG_CONFIG neon --cflags | sed -e 's/-I[^ ]*//g'`"]169 CFLAGS=["$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`"]
170 old_CFLAGS="$CFLAGS"170 old_CFLAGS="$CFLAGS"
171 old_LIBS="$LIBS"171 old_LIBS="$LIBS"
172 NEON_LIBS=`$PKG_CONFIG neon --libs`172 NEON_LIBS=`$PKG_CONFIG neon --libs`
@@ -186,8 +186,8 @@
186 CFLAGS="$old_CFLAGS"186 CFLAGS="$old_CFLAGS"
187 LIBS="$old_LIBS"187 LIBS="$old_LIBS"
188 else188 else
189 SVN_NEON_INCLUDES=[`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`]189 SVN_NEON_INCLUDES=[`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'`]
190 CFLAGS=["$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"]190 CFLAGS=["$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`"]
191 NEON_LIBS=`$neon_config --libs`191 NEON_LIBS=`$neon_config --libs`
192 fi192 fi
193 svn_lib_neon="yes"193 svn_lib_neon="yes"
194194
=== added file 'build/ac-macros/sqlite.m4'
--- build/ac-macros/sqlite.m4 1970-01-01 00:00:00 +0000
+++ build/ac-macros/sqlite.m4 2009-12-12 13:21:15 +0000
@@ -0,0 +1,228 @@
1dnl SVN_LIB_SQLITE(minimum_ver, recommended_ver, url)
2dnl
3dnl Search for a suitable version of sqlite. minimum_ver is a
4dnl version string which is the lowest suitable version we can use.
5dnl recommended_ver is the recommended version of sqlite, which is
6dnl not necessarily the latest version released. url is the URL of
7dnl the recommended version of sqlite.
8dnl
9dnl If a --with-sqlite=PREFIX option is passed, look for a suitable sqlite
10dnl either installed under the directory PREFIX or as an amalgamation file
11dnl at the path PREFIX. In this case ignore any sqlite-amalgamation/ subdir
12dnl within the source tree.
13dnl
14dnl If no --with-sqlite option is passed, look first for
15dnl sqlite-amalgamation/sqlite3.c which should be the amalgamated version of
16dnl the source distribution. If the amalgamation exists and is the wrong
17dnl version, exit with a failure. If no sqlite-amalgamation/ subdir is
18dnl present, search for a sqlite installed on the system.
19dnl
20dnl If the search for sqlite fails, set svn_lib_sqlite to no, otherwise set
21dnl it to yes.
22
23AC_DEFUN(SVN_LIB_SQLITE,
24[
25 SQLITE_MINIMUM_VER="$1"
26 SQLITE_RECOMMENDED_VER="$2"
27 SQLITE_URL="$3"
28 SQLITE_PKGNAME="sqlite3"
29
30 SVN_SQLITE_MIN_VERNUM_PARSE
31
32 AC_MSG_NOTICE([checking sqlite library])
33
34 AC_ARG_WITH(sqlite,
35 AS_HELP_STRING([--with-sqlite=PREFIX],
36 [Use installed SQLite library or amalgamation file.]),
37 [
38 if test "$withval" = "yes" ; then
39 AC_MSG_ERROR([--with-sqlite requires an argument.])
40 else
41 sqlite_dir="$withval"
42 fi
43
44 if test -d $sqlite_dir; then
45 dnl pointed at an sqlite installation
46 SVN_SQLITE_DIR_CONFIG($sqlite_dir)
47 else
48 dnl pointed at the amalgamation file
49 SVN_SQLITE_FILE_CONFIG($sqlite_dir)
50 fi
51
52 if test -z "$svn_lib_sqlite"; then
53 AC_MSG_WARN([no suitable sqlite found in $sqlite_dir])
54 SVN_DOWNLOAD_SQLITE
55 fi
56 ],
57 [
58 dnl see if the sqlite amalgamation exists in the source tree
59 SVN_SQLITE_FILE_CONFIG($abs_srcdir/sqlite-amalgamation/sqlite3.c)
60
61 if test -z "$svn_lib_sqlite"; then
62 dnl check the "standard" location of /usr
63 SVN_SQLITE_DIR_CONFIG()
64 fi
65
66 if test -z "$svn_lib_sqlite"; then
67 dnl no --with-sqlite switch, and no sqlite subdir, look in PATH
68 SVN_SQLITE_PKG_CONFIG
69 fi
70
71 if test -z "$svn_lib_sqlite"; then
72 SVN_DOWNLOAD_SQLITE
73 fi
74 ])
75
76 AC_SUBST(SVN_SQLITE_INCLUDES)
77 AC_SUBST(SVN_SQLITE_LIBS)
78])
79
80dnl SVN_SQLITE_PKG_CONFIG
81dnl
82dnl Look for sqlite in PATH using pkg-config.
83AC_DEFUN(SVN_SQLITE_PKG_CONFIG,
84[
85 if test -n "$PKG_CONFIG"; then
86 AC_MSG_CHECKING([sqlite library version (via pkg-config)])
87 sqlite_version=`$PKG_CONFIG $SQLITE_PKGNAME --modversion --silence-errors`
88
89 if test -n "$sqlite_version"; then
90 SVN_SQLITE_VERNUM_PARSE
91
92 if test "$sqlite_ver_num" -ge "$sqlite_min_ver_num"; then
93 AC_MSG_RESULT([$sqlite_version])
94 svn_lib_sqlite="yes"
95 SVN_SQLITE_INCLUDES="`$PKG_CONFIG $SQLITE_PKGNAME --cflags`"
96 SVN_SQLITE_LIBS="`$PKG_CONFIG $SQLITE_PKGNAME --libs`"
97 else
98 AC_MSG_RESULT([none or unsupported $sqlite_version])
99 fi
100 fi
101 fi
102
103 if test -z "$svn_lib_sqlite"; then
104 AC_MSG_RESULT(no)
105 fi
106])
107
108dnl SVN_SQLITE_DIR_CONFIG(sqlite_dir)
109dnl
110dnl Check to see if we've got an appropriate sqlite library at sqlite_dir.
111dnl If we don't, fail.
112AC_DEFUN(SVN_SQLITE_DIR_CONFIG,
113[
114 if test -z "$1"; then
115 sqlite_dir=""
116 sqlite_include="sqlite3.h"
117 else
118 sqlite_dir="$1"
119 sqlite_include="$1/include/sqlite3.h"
120 fi
121
122 save_CPPFLAGS="$CPPFLAGS"
123 save_LDFLAGS="$LDFLAGS"
124
125 if test ! -z "$1"; then
126 CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include"
127 LDFLAGS="$LDFLAGS -L$sqlite_dir/lib"
128 fi
129
130 AC_CHECK_HEADER(sqlite3.h,
131 [
132 AC_MSG_CHECKING([sqlite library version (via header)])
133 AC_EGREP_CPP(SQLITE_VERSION_OKAY,[
134#include "$sqlite_include"
135#if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num
136SQLITE_VERSION_OKAY
137#endif],
138 [AC_MSG_RESULT([okay])
139 AC_CHECK_LIB(sqlite3, sqlite3_close, [
140 svn_lib_sqlite="yes"
141 if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then
142 SVN_SQLITE_LIBS="-lsqlite3"
143 else
144 SVN_SQLITE_INCLUDES="-I$sqlite_dir/include"
145 SVN_SQLITE_LIBS="-L$sqlite_dir/lib -lsqlite3"
146 fi
147 ])], [AC_MSG_RESULT([unsupported SQLite version])])
148 ])
149
150 CPPFLAGS="$save_CPPFLAGS"
151 LDFLAGS="$save_LDFLAGS"
152])
153
154dnl SVN_SQLITE_FILE_CONFIG(sqlite_file)
155dnl
156dnl Check to see if we've got an appropriate sqlite amalgamation file
157dnl at sqlite_file. If not, fail.
158AC_DEFUN(SVN_SQLITE_FILE_CONFIG,
159[
160 sqlite_amalg="$1"
161 if test ! -e $sqlite_amalg; then
162 echo "amalgamation not found at $sqlite_amalg"
163 else
164 AC_MSG_CHECKING([sqlite amalgamation file version])
165 AC_EGREP_CPP(SQLITE_VERSION_OKAY,[
166#include "$sqlite_amalg"
167#if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num
168SQLITE_VERSION_OKAY
169#endif],
170 [AC_MSG_RESULT([amalgamation found and is okay])
171 AC_DEFINE(SVN_SQLITE_INLINE, 1,
172 [Defined if svn should use the amalgamated version of sqlite])
173 SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`"
174 svn_lib_sqlite="yes"],
175 [AC_MSG_RESULT([unsupported amalgamation SQLite version])])
176 fi
177])
178
179dnl SVN_SQLITE_VERNUM_PARSE()
180dnl
181dnl Parse a x.y[.z] version string sqlite_version into a number sqlite_ver_num.
182AC_DEFUN(SVN_SQLITE_VERNUM_PARSE,
183[
184 sqlite_major=`expr $sqlite_version : '\([[0-9]]*\)'`
185 sqlite_minor=`expr $sqlite_version : '[[0-9]]*\.\([[0-9]]*\)'`
186 sqlite_micro=`expr $sqlite_version : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
187 if test -z "$sqlite_micro"; then
188 sqlite_micro=0
189 fi
190 sqlite_ver_num=`expr $sqlite_major \* 1000000 \
191 \+ $sqlite_minor \* 1000 \
192 \+ $sqlite_micro`
193])
194
195dnl SVN_SQLITE_MIN_VERNUM_PARSE()
196dnl
197dnl Parse a x.y.z version string SQLITE_MINIMUM_VER into a number
198dnl sqlite_min_ver_num.
199AC_DEFUN(SVN_SQLITE_MIN_VERNUM_PARSE,
200[
201 sqlite_min_major=`expr $SQLITE_MINIMUM_VER : '\([[0-9]]*\)'`
202 sqlite_min_minor=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.\([[0-9]]*\)'`
203 sqlite_min_micro=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
204 sqlite_min_ver_num=`expr $sqlite_min_major \* 1000000 \
205 \+ $sqlite_min_minor \* 1000 \
206 \+ $sqlite_min_micro`
207])
208
209dnl SVN_DOWNLOAD_SQLITE()
210dnl no sqlite found, print out a message telling the user what to do
211AC_DEFUN(SVN_DOWNLOAD_SQLITE,
212[
213 echo ""
214 echo "An appropriate version of sqlite could not be found. We recommmend"
215 echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}."
216 echo "Please either install a newer sqlite on this system"
217 echo ""
218 echo "or"
219 echo ""
220 echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:"
221 echo " ${SQLITE_URL}"
222 echo "unpack the archive using tar/gunzip and copy sqlite3.c from the"
223 echo "resulting directory to:"
224 echo "$abs_srcdir/sqlite-amalgamation/sqlite3.c"
225 echo "This file also ships as part of the subversion-deps distribution."
226 echo ""
227 AC_MSG_ERROR([Subversion requires SQLite])
228])
0229
=== removed file 'build/ac-macros/sqlite.m4'
--- build/ac-macros/sqlite.m4 2009-04-09 17:30:40 +0000
+++ build/ac-macros/sqlite.m4 1970-01-01 00:00:00 +0000
@@ -1,228 +0,0 @@
1dnl SVN_LIB_SQLITE(minimum_ver, recommended_ver, url)
2dnl
3dnl Search for a suitable version of sqlite. minimum_ver is a
4dnl version string which is the lowest suitable version we can use.
5dnl recommended_ver is the recommended version of sqlite, which is
6dnl not necessarily the latest version released. url is the URL of
7dnl the recommended version of sqlite.
8dnl
9dnl If a --with-sqlite=PREFIX option is passed, look for a suitable sqlite
10dnl either installed under the directory PREFIX or as an amalgamation file
11dnl at the path PREFIX. In this case ignore any sqlite-amalgamation/ subdir
12dnl within the source tree.
13dnl
14dnl If no --with-sqlite option is passed, look first for
15dnl sqlite-amalgamation/sqlite3.c which should be the amalgamated version of
16dnl the source distribution. If the amalgamation exists and is the wrong
17dnl version, exit with a failure. If no sqlite-amalgamation/ subdir is
18dnl present, search for a sqlite installed on the system.
19dnl
20dnl If the search for sqlite fails, set svn_lib_sqlite to no, otherwise set
21dnl it to yes.
22
23AC_DEFUN(SVN_LIB_SQLITE,
24[
25 SQLITE_MINIMUM_VER="$1"
26 SQLITE_RECOMMENDED_VER="$2"
27 SQLITE_URL="$3"
28 SQLITE_PKGNAME="sqlite3"
29
30 SVN_SQLITE_MIN_VERNUM_PARSE
31
32 AC_MSG_NOTICE([checking sqlite library])
33
34 AC_ARG_WITH(sqlite,
35 AS_HELP_STRING([--with-sqlite=PREFIX],
36 [Use installed SQLite library or amalgamation file.]),
37 [
38 if test "$withval" = "yes" ; then
39 AC_MSG_ERROR([--with-sqlite requires an argument.])
40 else
41 sqlite_dir="$withval"
42 fi
43
44 if test -d $sqlite_dir; then
45 dnl pointed at an sqlite installation
46 SVN_SQLITE_DIR_CONFIG($sqlite_dir)
47 else
48 dnl pointed at the amalgamation file
49 SVN_SQLITE_FILE_CONFIG($sqlite_dir)
50 fi
51
52 if test -z "$svn_lib_sqlite"; then
53 AC_MSG_WARN([no suitable sqlite found in $sqlite_dir])
54 SVN_DOWNLOAD_SQLITE
55 fi
56 ],
57 [
58 dnl see if the sqlite amalgamation exists in the source tree
59 SVN_SQLITE_FILE_CONFIG($abs_srcdir/sqlite-amalgamation/sqlite3.c)
60
61 if test -z "$svn_lib_sqlite"; then
62 dnl check the "standard" location of /usr
63 SVN_SQLITE_DIR_CONFIG()
64 fi
65
66 if test -z "$svn_lib_sqlite"; then
67 dnl no --with-sqlite switch, and no sqlite subdir, look in PATH
68 SVN_SQLITE_PKG_CONFIG
69 fi
70
71 if test -z "$svn_lib_sqlite"; then
72 SVN_DOWNLOAD_SQLITE
73 fi
74 ])
75
76 AC_SUBST(SVN_SQLITE_INCLUDES)
77 AC_SUBST(SVN_SQLITE_LIBS)
78])
79
80dnl SVN_SQLITE_PKG_CONFIG
81dnl
82dnl Look for sqlite in PATH using pkg-config.
83AC_DEFUN(SVN_SQLITE_PKG_CONFIG,
84[
85 if test -n "$PKG_CONFIG"; then
86 AC_MSG_CHECKING([sqlite library version (via pkg-config)])
87 sqlite_version=`$PKG_CONFIG $SQLITE_PKGNAME --modversion --silence-errors`
88
89 if test -n "$sqlite_version"; then
90 SVN_SQLITE_VERNUM_PARSE
91
92 if test "$sqlite_ver_num" -ge "$sqlite_min_ver_num"; then
93 AC_MSG_RESULT([$sqlite_version])
94 svn_lib_sqlite="yes"
95 SVN_SQLITE_INCLUDES="`$PKG_CONFIG $SQLITE_PKGNAME --cflags`"
96 SVN_SQLITE_LIBS="`$PKG_CONFIG $SQLITE_PKGNAME --libs`"
97 else
98 AC_MSG_RESULT([none or unsupported $sqlite_version])
99 fi
100 fi
101 fi
102
103 if test -z "$svn_lib_sqlite"; then
104 AC_MSG_RESULT(no)
105 fi
106])
107
108dnl SVN_SQLITE_DIR_CONFIG(sqlite_dir)
109dnl
110dnl Check to see if we've got an appropriate sqlite library at sqlite_dir.
111dnl If we don't, fail.
112AC_DEFUN(SVN_SQLITE_DIR_CONFIG,
113[
114 if test -z "$1"; then
115 sqlite_dir=""
116 sqlite_include="sqlite3.h"
117 else
118 sqlite_dir="$1"
119 sqlite_include="$1/include/sqlite3.h"
120 fi
121
122 save_CPPFLAGS="$CPPFLAGS"
123 save_LDFLAGS="$LDFLAGS"
124
125 if test ! -z "$1"; then
126 CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include"
127 LDFLAGS="$LDFLAGS -L$sqlite_dir/lib"
128 fi
129
130 AC_CHECK_HEADER(sqlite3.h,
131 [
132 AC_MSG_CHECKING([sqlite library version (via header)])
133 AC_EGREP_CPP(SQLITE_VERSION_OKAY,[
134#include "$sqlite_include"
135#if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num
136SQLITE_VERSION_OKAY
137#endif],
138 [AC_MSG_RESULT([okay])
139 AC_CHECK_LIB(sqlite3, sqlite3_close, [
140 svn_lib_sqlite="yes"
141 if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then
142 SVN_SQLITE_LIBS="-lsqlite3"
143 else
144 SVN_SQLITE_INCLUDES="-I$sqlite_dir/include"
145 SVN_SQLITE_LIBS="-L$sqlite_dir/lib -lsqlite3"
146 fi
147 ])], [AC_MSG_RESULT([unsupported SQLite version])])
148 ])
149
150 CPPFLAGS="$save_CPPFLAGS"
151 LDFLAGS="$save_LDFLAGS"
152])
153
154dnl SVN_SQLITE_FILE_CONFIG(sqlite_file)
155dnl
156dnl Check to see if we've got an appropriate sqlite amalgamation file
157dnl at sqlite_file. If not, fail.
158AC_DEFUN(SVN_SQLITE_FILE_CONFIG,
159[
160 sqlite_amalg="$1"
161 if test ! -e $sqlite_amalg; then
162 echo "amalgamation not found at $sqlite_amalg"
163 else
164 AC_MSG_CHECKING([sqlite amalgamation file version])
165 AC_EGREP_CPP(SQLITE_VERSION_OKAY,[
166#include "$sqlite_amalg"
167#if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num
168SQLITE_VERSION_OKAY
169#endif],
170 [AC_MSG_RESULT([amalgamation found and is okay])
171 AC_DEFINE(SVN_SQLITE_INLINE, 1,
172 [Defined if svn should use the amalgamated version of sqlite])
173 SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`"
174 svn_lib_sqlite="yes"],
175 [AC_MSG_RESULT([unsupported amalgamation SQLite version])])
176 fi
177])
178
179dnl SVN_SQLITE_VERNUM_PARSE()
180dnl
181dnl Parse a x.y[.z] version string sqlite_version into a number sqlite_ver_num.
182AC_DEFUN(SVN_SQLITE_VERNUM_PARSE,
183[
184 sqlite_major=`expr $sqlite_version : '\([[0-9]]*\)'`
185 sqlite_minor=`expr $sqlite_version : '[[0-9]]*\.\([[0-9]]*\)'`
186 sqlite_micro=`expr $sqlite_version : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
187 if test -z "$sqlite_micro"; then
188 sqlite_micro=0
189 fi
190 sqlite_ver_num=`expr $sqlite_major \* 1000000 \
191 \+ $sqlite_minor \* 1000 \
192 \+ $sqlite_micro`
193])
194
195dnl SVN_SQLITE_MIN_VERNUM_PARSE()
196dnl
197dnl Parse a x.y.z version string SQLITE_MINIMUM_VER into a number
198dnl sqlite_min_ver_num.
199AC_DEFUN(SVN_SQLITE_MIN_VERNUM_PARSE,
200[
201 sqlite_min_major=`expr $SQLITE_MINIMUM_VER : '\([[0-9]]*\)'`
202 sqlite_min_minor=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.\([[0-9]]*\)'`
203 sqlite_min_micro=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
204 sqlite_min_ver_num=`expr $sqlite_min_major \* 1000000 \
205 \+ $sqlite_min_minor \* 1000 \
206 \+ $sqlite_min_micro`
207])
208
209dnl SVN_DOWNLOAD_SQLITE()
210dnl no sqlite found, print out a message telling the user what to do
211AC_DEFUN(SVN_DOWNLOAD_SQLITE,
212[
213 echo ""
214 echo "An appropriate version of sqlite could not be found. We recommmend"
215 echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}."
216 echo "Please either install a newer sqlite on this system"
217 echo ""
218 echo "or"
219 echo ""
220 echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:"
221 echo " ${SQLITE_URL}"
222 echo "unpack the archive using tar/gunzip and copy sqlite3.c from the"
223 echo "resulting directory to:"
224 echo "$abs_srcdir/sqlite-amalgamation/sqlite3.c"
225 echo "This file also ships as part of the subversion-deps distribution."
226 echo ""
227 AC_MSG_ERROR([Subversion requires SQLite])
228])
2290
=== modified file 'build/ac-macros/svn-macros.m4'
--- build/ac-macros/svn-macros.m4 2009-06-06 22:57:04 +0000
+++ build/ac-macros/svn-macros.m4 2009-12-12 13:21:15 +0000
@@ -60,7 +60,7 @@
60 cd $160 cd $1
6161
62 # A "../" for each directory in /$config_subdirs.62 # A "../" for each directory in /$config_subdirs.
63 ac_dots=[`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`]63 ac_dots=[`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`]
6464
65 # Make the cache file name correct relative to the subdirectory.65 # Make the cache file name correct relative to the subdirectory.
66 case "$cache_file" in66 case "$cache_file" in
6767
=== modified file 'build/ac-macros/swig.m4'
--- build/ac-macros/swig.m4 2009-06-09 23:53:06 +0000
+++ build/ac-macros/swig.m4 2009-12-12 13:21:15 +0000
@@ -53,7 +53,7 @@
53 if test "$SWIG" != "none"; then53 if test "$SWIG" != "none"; then
54 AC_MSG_CHECKING([swig version])54 AC_MSG_CHECKING([swig version])
55 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \55 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \
56 sed -ne 's/^.*Version \(.*\)$/\1/p'`"56 $SED -ne 's/^.*Version \(.*\)$/\1/p'`"
57 # We want the version as an integer so we can test against57 # We want the version as an integer so we can test against
58 # which version we're using. SWIG doesn't provide this58 # which version we're using. SWIG doesn't provide this
59 # to us so we have to come up with it on our own. 59 # to us so we have to come up with it on our own.
@@ -62,7 +62,7 @@
62 # and the patch level is zero padded to three places.62 # and the patch level is zero padded to three places.
63 # e.g. 1.3.24 becomes 10302463 # e.g. 1.3.24 becomes 103024
64 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \64 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \
65 sed -e 's/[[^0-9\.]].*$//' \65 $SED -e 's/[[^0-9\.]].*$//' \
66 -e 's/\.\([[0-9]]\)$/.0\1/' \66 -e 's/\.\([[0-9]]\)$/.0\1/' \
67 -e 's/\.\([[0-9]][[0-9]]\)$/.0\1/' \67 -e 's/\.\([[0-9]][[0-9]]\)$/.0\1/' \
68 -e 's/\.\([[0-9]]\)\./0\1/; s/\.//g;'`"68 -e 's/\.\([[0-9]]\)\./0\1/; s/\.//g;'`"
@@ -190,7 +190,7 @@
190190
191 AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[191 AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
192 # Ruby doesn't like '-ansi', so strip that out of CFLAGS192 # Ruby doesn't like '-ansi', so strip that out of CFLAGS
193 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | sed -e "s/ -ansi//g"`"193 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | $SED -e "s/ -ansi//g"`"
194 ])194 ])
195 SWIG_RB_COMPILE="$svn_cv_ruby_compile"195 SWIG_RB_COMPILE="$svn_cv_ruby_compile"
196196
@@ -210,7 +210,7 @@
210 AC_MSG_CHECKING([for rb_errinfo])210 AC_MSG_CHECKING([for rb_errinfo])
211 old_CFLAGS="$CFLAGS"211 old_CFLAGS="$CFLAGS"
212 old_LIBS="$LIBS"212 old_LIBS="$LIBS"
213 CFLAGS="`echo $CFLAGS | sed -e "s/ -ansi//g"` $svn_cv_ruby_includes"213 CFLAGS="`echo $CFLAGS | $SED -e "s/ -ansi//g"` $svn_cv_ruby_includes"
214 LIBS="$SWIG_RB_LIBS"214 LIBS="$SWIG_RB_LIBS"
215 AC_LINK_IFELSE([215 AC_LINK_IFELSE([
216#include <ruby.h>216#include <ruby.h>
@@ -239,7 +239,7 @@
239 AC_MSG_CHECKING([where to install Ruby scripts])239 AC_MSG_CHECKING([where to install Ruby scripts])
240 AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[240 AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[
241 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \241 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
242 sed -e "s,^$rbconfig_sitedir,,"`"242 $SED -e "s,^$rbconfig_sitedir,,"`"
243 ])243 ])
244 SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"244 SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"
245 AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])245 AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])
@@ -247,7 +247,7 @@
247 AC_MSG_CHECKING([where to install Ruby extensions])247 AC_MSG_CHECKING([where to install Ruby extensions])
248 AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[248 AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[
249 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \249 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
250 sed -e "s,^$rbconfig_sitedir,,"`"250 $SED -e "s,^$rbconfig_sitedir,,"`"
251 ])251 ])
252 SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"252 SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"
253 AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])253 AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])
254254
=== modified file 'build/run_tests.py'
--- build/run_tests.py 2009-06-09 23:53:06 +0000
+++ build/run_tests.py 2009-12-12 13:21:15 +0000
@@ -16,6 +16,7 @@
16'''16'''
1717
18import os, sys18import os, sys
19import time
1920
20import getopt21import getopt
21try:22try:
@@ -135,6 +136,7 @@
135 self.log.write('START: %s\n' % progbase)136 self.log.write('START: %s\n' % progbase)
136 self.log.flush()137 self.log.flush()
137138
139 start_time = time.time()
138 if progbase[-3:] == '.py':140 if progbase[-3:] == '.py':
139 progname = sys.executable141 progname = sys.executable
140 cmdline = [quote(progname),142 cmdline = [quote(progname),
@@ -197,7 +199,14 @@
197 print('FAILURE')199 print('FAILURE')
198 else:200 else:
199 print('success')201 print('success')
200 self.log.write('END: %s\n\n' % progbase)202 elapsed_time = time.strftime('%H:%M:%S',
203 time.gmtime(time.time() - start_time))
204 if self.log:
205 self.log.write('END: %s\n' % progbase)
206 self.log.write('ELAPSED: %s %s\n\n' % (progbase, elapsed_time))
207 else:
208 print('END: %s\n' % progbase)
209 print('ELAPSED: %s %s\n' % (progbase, elapsed_time))
201 return failed210 return failed
202211
203 def _run_prog(self, progname, arglist):212 def _run_prog(self, progname, arglist):
204213
=== added file 'build/transform_sql.py'
--- build/transform_sql.py 1970-01-01 00:00:00 +0000
+++ build/transform_sql.py 2009-12-12 13:21:15 +0000
@@ -0,0 +1,62 @@
1#!/usr/bin/env python
2#
3# transform_sql.py -- create a header file with the appropriate SQL variables
4# from an SQL file
5#
6
7
8import os
9import re
10import sys
11
12
13def usage_and_exit(msg):
14 if msg:
15 sys.stderr.write('%s\n\n' % msg)
16 sys.stderr.write(
17 'USAGE: %s SQLITE_FILE [OUTPUT_FILE]\n'
18 ' stdout will be used if OUTPUT_FILE is not provided.\n'
19 % os.path.basename(sys.argv[0]))
20 sys.stderr.flush()
21 sys.exit(1)
22
23
24def main(input, output, filename):
25 input = input.read()
26
27 var_name = re.sub('[-.]', '_', filename)
28
29 output.write(
30 '/* This file is automatically generated from %s.\n'
31 ' * Do not edit this file -- edit the source and rerun gen-make.py */\n'
32 '\n'
33 % (filename,))
34
35 output.write('#define %s \\\n' % var_name.upper())
36
37 regex = re.compile(r'/\*.*?\*/', re.MULTILINE|re.DOTALL)
38 input = regex.sub('', input)
39
40 for line in input.split('\n'):
41 line = line.replace('"', '\\"')
42
43 if line.strip():
44 # got something besides whitespace. write it out.
45 output.write(' "' + line + '"\\\n')
46
47 output.write(' ""\n')
48
49
50if __name__ == '__main__':
51 if len(sys.argv) < 2 or len(sys.argv) > 3:
52 usage_and_exit('Incorrect number of arguments')
53
54 # Note: we could use stdin, but then we'd have no var_name
55 input_file = open(sys.argv[1], 'r')
56
57 if len(sys.argv) > 2:
58 output_file = open(sys.argv[2], 'w')
59 else:
60 output_file = sys.stdout
61
62 main(input_file, output_file, os.path.basename(sys.argv[1]))
063
=== removed file 'build/transform_sql.py'
--- build/transform_sql.py 2009-04-09 17:30:40 +0000
+++ build/transform_sql.py 1970-01-01 00:00:00 +0000
@@ -1,62 +0,0 @@
1#!/usr/bin/env python
2#
3# transform_sql.py -- create a header file with the appropriate SQL variables
4# from an SQL file
5#
6
7
8import os
9import re
10import sys
11
12
13def usage_and_exit(msg):
14 if msg:
15 sys.stderr.write('%s\n\n' % msg)
16 sys.stderr.write(
17 'USAGE: %s SQLITE_FILE [OUTPUT_FILE]\n'
18 ' stdout will be used if OUTPUT_FILE is not provided.\n'
19 % os.path.basename(sys.argv[0]))
20 sys.stderr.flush()
21 sys.exit(1)
22
23
24def main(input, output, filename):
25 input = input.read()
26
27 var_name = re.sub('[-.]', '_', filename)
28
29 output.write(
30 '/* This file is automatically generated from %s.\n'
31 ' * Do not edit this file -- edit the source and rerun gen-make.py */\n'
32 '\n'
33 % (filename,))
34
35 output.write('#define %s \\\n' % var_name.upper())
36
37 regex = re.compile(r'/\*.*?\*/', re.MULTILINE|re.DOTALL)
38 input = regex.sub('', input)
39
40 for line in input.split('\n'):
41 line = line.replace('"', '\\"')
42
43 if line.strip():
44 # got something besides whitespace. write it out.
45 output.write(' "' + line + '"\\\n')
46
47 output.write(' ""\n')
48
49
50if __name__ == '__main__':
51 if len(sys.argv) < 2 or len(sys.argv) > 3:
52 usage_and_exit('Incorrect number of arguments')
53
54 # Note: we could use stdin, but then we'd have no var_name
55 input_file = open(sys.argv[1], 'r')
56
57 if len(sys.argv) > 2:
58 output_file = open(sys.argv[2], 'w')
59 else:
60 output_file = sys.stdout
61
62 main(input_file, output_file, os.path.basename(sys.argv[1]))
630
=== added file 'build/transform_sql.sh'
--- build/transform_sql.sh 1970-01-01 00:00:00 +0000
+++ build/transform_sql.sh 2009-12-12 13:21:15 +0000
@@ -0,0 +1,42 @@
1#!/bin/sh
2
3varname=`basename $1 | tr "[a-z]" "[A-Z]" | tr "-" "_" | tr "." "_"`
4
5echo "/* This file is automatically generated from"
6echo " * $1"
7echo " * Do not edit it directly, but edit the source file and rerun 'make'"
8echo " */"
9echo
10echo "#define $varname \\"
11
12comment=false
13
14IFS="
15"
16while read line; do
17 line=`echo "$line" | sed -e 's/\/\*.*\*\///g' | sed -e 's/[ ]*$//g'`
18
19 if [ -z "$line" ]; then
20 continue
21 fi
22
23 if [ "$comment" = "false" ] && echo "$line" | fgrep '/*' >/dev/null; then
24 comment=true
25 fi
26
27 if [ "$comment" = "true" ] && echo "$line" | fgrep '*/' >/dev/null; then
28 comment=false
29 continue
30 fi
31
32 if [ "$comment" = "true" ]; then
33 continue
34 fi
35
36 line="`echo "$line" | sed -e 's/"/\\"/g'`" #' hi, emacs syntax coloring!
37 if [ -n "$line" ]; then
38 echo " \"$line \"\\"
39 fi
40done
41
42echo ' ""'
043
=== removed file 'build/transform_sql.sh'
--- build/transform_sql.sh 2009-04-09 17:30:40 +0000
+++ build/transform_sql.sh 1970-01-01 00:00:00 +0000
@@ -1,42 +0,0 @@
1#!/bin/sh
2
3varname=`basename $1 | tr "[a-z]" "[A-Z]" | tr "-" "_" | tr "." "_"`
4
5echo "/* This file is automatically generated from"
6echo " * $1"
7echo " * Do not edit it directly, but edit the source file and rerun 'make'"
8echo " */"
9echo
10echo "#define $varname \\"
11
12comment=false
13
14IFS="
15"
16while read line; do
17 line=`echo "$line" | sed -e 's/\/\*.*\*\///g' | sed -e 's/[ ]*$//g'`
18
19 if [ -z "$line" ]; then
20 continue
21 fi
22
23 if [ "$comment" = "false" ] && echo "$line" | fgrep '/*' >/dev/null; then
24 comment=true
25 fi
26
27 if [ "$comment" = "true" ] && echo "$line" | fgrep '*/' >/dev/null; then
28 comment=false
29 continue
30 fi
31
32 if [ "$comment" = "true" ]; then
33 continue
34 fi
35
36 line="`echo "$line" | sed -e 's/"/\\"/g'`" #' hi, emacs syntax coloring!
37 if [ -n "$line" ]; then
38 echo " \"$line \"\\"
39 fi
40done
41
42echo ' ""'
430
=== modified file 'configure'
--- configure 2009-08-24 19:09:22 +0000
+++ configure 2009-12-12 13:21:15 +0000
@@ -1,6 +1,6 @@
1#! /bin/sh1#! /bin/sh
2# Guess values for system-dependent variables and create Makefiles.2# Guess values for system-dependent variables and create Makefiles.
3# Generated by GNU Autoconf 2.63 for subversion 1.6.5.3# Generated by GNU Autoconf 2.63 for subversion 1.6.6.
4#4#
5# Report bugs to <http://subversion.tigris.org/>.5# Report bugs to <http://subversion.tigris.org/>.
6#6#
@@ -750,8 +750,8 @@
750# Identity of this package.750# Identity of this package.
751PACKAGE_NAME='subversion'751PACKAGE_NAME='subversion'
752PACKAGE_TARNAME='subversion'752PACKAGE_TARNAME='subversion'
753PACKAGE_VERSION='1.6.5'753PACKAGE_VERSION='1.6.6'
754PACKAGE_STRING='subversion 1.6.5'754PACKAGE_STRING='subversion 1.6.6'
755PACKAGE_BUGREPORT='http://subversion.tigris.org/'755PACKAGE_BUGREPORT='http://subversion.tigris.org/'
756756
757ac_unique_file="subversion/include/svn_types.h"757ac_unique_file="subversion/include/svn_types.h"
@@ -874,7 +874,6 @@
874RANLIB874RANLIB
875AR875AR
876ECHO876ECHO
877SED
878SVN_BINDIR877SVN_BINDIR
879SVN_SQLITE_LIBS878SVN_SQLITE_LIBS
880SVN_SQLITE_INCLUDES879SVN_SQLITE_INCLUDES
@@ -923,6 +922,7 @@
923build_vendor922build_vendor
924build_cpu923build_cpu
925build924build
925SED
926CPP926CPP
927ac_ct_CXX927ac_ct_CXX
928CXXFLAGS928CXXFLAGS
@@ -1588,7 +1588,7 @@
1588 # Omit some internal or obsolete options to make the list less imposing.1588 # Omit some internal or obsolete options to make the list less imposing.
1589 # This message is too long to be a string in the A/UX 3.1 sh.1589 # This message is too long to be a string in the A/UX 3.1 sh.
1590 cat <<_ACEOF1590 cat <<_ACEOF
1591\`configure' configures subversion 1.6.5 to adapt to many kinds of systems.1591\`configure' configures subversion 1.6.6 to adapt to many kinds of systems.
15921592
1593Usage: $0 [OPTION]... [VAR=VALUE]...1593Usage: $0 [OPTION]... [VAR=VALUE]...
15941594
@@ -1654,7 +1654,7 @@
16541654
1655if test -n "$ac_init_help"; then1655if test -n "$ac_init_help"; then
1656 case $ac_init_help in1656 case $ac_init_help in
1657 short | recursive ) echo "Configuration of subversion 1.6.5:";;1657 short | recursive ) echo "Configuration of subversion 1.6.6:";;
1658 esac1658 esac
1659 cat <<\_ACEOF1659 cat <<\_ACEOF
16601660
@@ -1840,7 +1840,7 @@
1840test -n "$ac_init_help" && exit $ac_status1840test -n "$ac_init_help" && exit $ac_status
1841if $ac_init_version; then1841if $ac_init_version; then
1842 cat <<\_ACEOF1842 cat <<\_ACEOF
1843subversion configure 1.6.51843subversion configure 1.6.6
1844generated by GNU Autoconf 2.631844generated by GNU Autoconf 2.63
18451845
1846Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,1846Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1854,7 +1854,7 @@
1854This file contains any messages produced by compilers while1854This file contains any messages produced by compilers while
1855running configure, to aid debugging if configure makes a mistake.1855running configure, to aid debugging if configure makes a mistake.
18561856
1857It was created by subversion $as_me 1.6.5, which was1857It was created by subversion $as_me 1.6.6, which was
1858generated by GNU Autoconf 2.63. Invocation command line was1858generated by GNU Autoconf 2.63. Invocation command line was
18591859
1860 $ $0 $@1860 $ $0 $@
@@ -2256,8 +2256,8 @@
22562256
22572257
22582258
2259{ $as_echo "$as_me:$LINENO: Configuring Subversion 1.6.5" >&52259{ $as_echo "$as_me:$LINENO: Configuring Subversion 1.6.6" >&5
2260$as_echo "$as_me: Configuring Subversion 1.6.5" >&6;}2260$as_echo "$as_me: Configuring Subversion 1.6.6" >&6;}
22612261
2262abs_srcdir="`cd $srcdir && pwd`"2262abs_srcdir="`cd $srcdir && pwd`"
22632263
@@ -3843,6 +3843,80 @@
3843ac_compiler_gnu=$ac_cv_c_compiler_gnu3843ac_compiler_gnu=$ac_cv_c_compiler_gnu
38443844
38453845
3846# Look for a good sed
3847# AC_PROG_SED was introduced in Autoconf 2.59b
3848{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
3849$as_echo_n "checking for a sed that does not truncate output... " >&6; }
3850if test "${ac_cv_path_SED+set}" = set; then
3851 $as_echo_n "(cached) " >&6
3852else
3853 ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
3854 for ac_i in 1 2 3 4 5 6 7; do
3855 ac_script="$ac_script$as_nl$ac_script"
3856 done
3857 echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
3858 $as_unset ac_script || ac_script=
3859 if test -z "$SED"; then
3860 ac_path_SED_found=false
3861 # Loop through the user's path and test for each of PROGNAME-LIST
3862 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3863for as_dir in $PATH
3864do
3865 IFS=$as_save_IFS
3866 test -z "$as_dir" && as_dir=.
3867 for ac_prog in sed gsed; do
3868 for ac_exec_ext in '' $ac_executable_extensions; do
3869 ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
3870 { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
3871# Check for GNU ac_path_SED and select it if it is found.
3872 # Check for GNU $ac_path_SED
3873case `"$ac_path_SED" --version 2>&1` in
3874*GNU*)
3875 ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
3876*)
3877 ac_count=0
3878 $as_echo_n 0123456789 >"conftest.in"
3879 while :
3880 do
3881 cat "conftest.in" "conftest.in" >"conftest.tmp"
3882 mv "conftest.tmp" "conftest.in"
3883 cp "conftest.in" "conftest.nl"
3884 $as_echo '' >> "conftest.nl"
3885 "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
3886 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
3887 ac_count=`expr $ac_count + 1`
3888 if test $ac_count -gt ${ac_path_SED_max-0}; then
3889 # Best one so far, save it but keep looking for a better one
3890 ac_cv_path_SED="$ac_path_SED"
3891 ac_path_SED_max=$ac_count
3892 fi
3893 # 10*(2^10) chars as input seems more than enough
3894 test $ac_count -gt 10 && break
3895 done
3896 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
3897esac
3898
3899 $ac_path_SED_found && break 3
3900 done
3901 done
3902done
3903IFS=$as_save_IFS
3904 if test -z "$ac_cv_path_SED"; then
3905 { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
3906$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
3907 { (exit 1); exit 1; }; }
3908 fi
3909else
3910 ac_cv_path_SED=$SED
3911fi
3912
3913fi
3914{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
3915$as_echo "$ac_cv_path_SED" >&6; }
3916 SED="$ac_cv_path_SED"
3917 rm -f conftest.sed
3918
3919
3846# Grab target_cpu, so we can use it in the Solaris pkginfo file3920# Grab target_cpu, so we can use it in the Solaris pkginfo file
3847# Make sure we can run config.sub.3921# Make sure we can run config.sub.
3848$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||3922$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -4480,7 +4554,7 @@
4480 cd apr4554 cd apr
44814555
4482 # A "../" for each directory in /$config_subdirs.4556 # A "../" for each directory in /$config_subdirs.
4483 ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`4557 ac_dots=`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
44844558
4485 # Make the cache file name correct relative to the subdirectory.4559 # Make the cache file name correct relative to the subdirectory.
4486 case "$cache_file" in4560 case "$cache_file" in
@@ -4847,7 +4921,7 @@
4847 cd apr-util4921 cd apr-util
48484922
4849 # A "../" for each directory in /$config_subdirs.4923 # A "../" for each directory in /$config_subdirs.
4850 ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`4924 ac_dots=`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
48514925
4852 # Make the cache file name correct relative to the subdirectory.4926 # Make the cache file name correct relative to the subdirectory.
4853 case "$cache_file" in4927 case "$cache_file" in
@@ -5018,8 +5092,8 @@
50185092
5019# Either a space-separated list of allowable Neon versions, or "any" to5093# Either a space-separated list of allowable Neon versions, or "any" to
5020# mean allow anything.5094# mean allow anything.
5021NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28"5095NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28 0\.29"
5022NEON_RECOMMENDED_VER=0.28.45096NEON_RECOMMENDED_VER="0.29.0"
5023NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz"5097NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz"
5024# Check whether --enable-neon-version-check was given.5098# Check whether --enable-neon-version-check was given.
5025if test "${enable_neon_version_check+set}" = set; then5099if test "${enable_neon_version_check+set}" = set; then
@@ -5063,7 +5137,7 @@
5063 if test "$NEON_PKG_CONFIG" = "yes" ; then5137 if test "$NEON_PKG_CONFIG" = "yes" ; then
5064 NEON_VERSION=`$PKG_CONFIG neon --modversion`5138 NEON_VERSION=`$PKG_CONFIG neon --modversion`
5065 else5139 else
5066 NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'`5140 NEON_VERSION=`$neon_config --version | $SED -e 's/^neon //'`
5067 fi5141 fi
5068 { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&55142 { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&5
5069$as_echo "$NEON_VERSION" >&6; }5143$as_echo "$NEON_VERSION" >&6; }
@@ -5097,8 +5171,8 @@
5097 test "$svn_allowed_neon" = "any"; then5171 test "$svn_allowed_neon" = "any"; then
5098 svn_allowed_neon_on_system="yes"5172 svn_allowed_neon_on_system="yes"
5099 if test "$NEON_PKG_CONFIG" = "yes"; then5173 if test "$NEON_PKG_CONFIG" = "yes"; then
5100 SVN_NEON_INCLUDES=`$PKG_CONFIG neon --cflags | sed -e 's/-D[^ ]*//g'`5174 SVN_NEON_INCLUDES=`$PKG_CONFIG neon --cflags | $SED -e 's/-D[^ ]*//g'`
5101 CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | sed -e 's/-I[^ ]*//g'`"5175 CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`"
5102 old_CFLAGS="$CFLAGS"5176 old_CFLAGS="$CFLAGS"
5103 old_LIBS="$LIBS"5177 old_LIBS="$LIBS"
5104 NEON_LIBS=`$PKG_CONFIG neon --libs`5178 NEON_LIBS=`$PKG_CONFIG neon --libs`
@@ -5188,8 +5262,8 @@
5188 CFLAGS="$old_CFLAGS"5262 CFLAGS="$old_CFLAGS"
5189 LIBS="$old_LIBS"5263 LIBS="$old_LIBS"
5190 else5264 else
5191 SVN_NEON_INCLUDES=`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`5265 SVN_NEON_INCLUDES=`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'`
5192 CFLAGS="$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"5266 CFLAGS="$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`"
5193 NEON_LIBS=`$neon_config --libs`5267 NEON_LIBS=`$neon_config --libs`
5194 fi5268 fi
5195 svn_lib_neon="yes"5269 svn_lib_neon="yes"
@@ -5413,7 +5487,7 @@
5413 cd neon5487 cd neon
54145488
5415 # A "../" for each directory in /$config_subdirs.5489 # A "../" for each directory in /$config_subdirs.
5416 ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`5490 ac_dots=`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
54175491
5418 # Make the cache file name correct relative to the subdirectory.5492 # Make the cache file name correct relative to the subdirectory.
5419 case "$cache_file" in5493 case "$cache_file" in
@@ -5544,7 +5618,7 @@
5544 if test "$NEON_PKG_CONFIG" = "yes" ; then5618 if test "$NEON_PKG_CONFIG" = "yes" ; then
5545 NEON_VERSION=`$PKG_CONFIG neon --modversion`5619 NEON_VERSION=`$PKG_CONFIG neon --modversion`
5546 else5620 else
5547 NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'`5621 NEON_VERSION=`$neon_config --version | $SED -e 's/^neon //'`
5548 fi5622 fi
5549 { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&55623 { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&5
5550$as_echo "$NEON_VERSION" >&6; }5624$as_echo "$NEON_VERSION" >&6; }
@@ -5578,8 +5652,8 @@
5578 test "$svn_allowed_neon" = "any"; then5652 test "$svn_allowed_neon" = "any"; then
5579 svn_allowed_neon_on_system="yes"5653 svn_allowed_neon_on_system="yes"
5580 if test "$NEON_PKG_CONFIG" = "yes"; then5654 if test "$NEON_PKG_CONFIG" = "yes"; then
5581 SVN_NEON_INCLUDES=`$PKG_CONFIG neon --cflags | sed -e 's/-D[^ ]*//g'`5655 SVN_NEON_INCLUDES=`$PKG_CONFIG neon --cflags | $SED -e 's/-D[^ ]*//g'`
5582 CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | sed -e 's/-I[^ ]*//g'`"5656 CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`"
5583 old_CFLAGS="$CFLAGS"5657 old_CFLAGS="$CFLAGS"
5584 old_LIBS="$LIBS"5658 old_LIBS="$LIBS"
5585 NEON_LIBS=`$PKG_CONFIG neon --libs`5659 NEON_LIBS=`$PKG_CONFIG neon --libs`
@@ -5669,8 +5743,8 @@
5669 CFLAGS="$old_CFLAGS"5743 CFLAGS="$old_CFLAGS"
5670 LIBS="$old_LIBS"5744 LIBS="$old_LIBS"
5671 else5745 else
5672 SVN_NEON_INCLUDES=`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`5746 SVN_NEON_INCLUDES=`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'`
5673 CFLAGS="$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"5747 CFLAGS="$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`"
5674 NEON_LIBS=`$neon_config --libs`5748 NEON_LIBS=`$neon_config --libs`
5675 fi5749 fi
5676 svn_lib_neon="yes"5750 svn_lib_neon="yes"
@@ -6358,7 +6432,7 @@
6358 cd serf6432 cd serf
63596433
6360 # A "../" for each directory in /$config_subdirs.6434 # A "../" for each directory in /$config_subdirs.
6361 ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`6435 ac_dots=`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
63626436
6363 # Make the cache file name correct relative to the subdirectory.6437 # Make the cache file name correct relative to the subdirectory.
6364 case "$cache_file" in6438 case "$cache_file" in
@@ -6982,7 +7056,7 @@
6982 cd apr_memcache7056 cd apr_memcache
69837057
6984 # A "../" for each directory in /$config_subdirs.7058 # A "../" for each directory in /$config_subdirs.
6985 ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`7059 ac_dots=`echo $apr_config_subdirs| $SED -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
69867060
6987 # Make the cache file name correct relative to the subdirectory.7061 # Make the cache file name correct relative to the subdirectory.
6988 case "$cache_file" in7062 case "$cache_file" in
@@ -8603,7 +8677,7 @@
8603 ;;8677 ;;
8604*-*-irix6*)8678*-*-irix6*)
8605 # Find out which ABI we are using.8679 # Find out which ABI we are using.
8606 echo '#line 8606 "configure"' > conftest.$ac_ext8680 echo '#line 8680 "configure"' > conftest.$ac_ext
8607 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&58681 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
8608 (eval $ac_compile) 2>&58682 (eval $ac_compile) 2>&5
8609 ac_status=$?8683 ac_status=$?
@@ -10724,11 +10798,11 @@
10724 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \10798 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
10725 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \10799 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
10726 -e 's:$: $lt_compiler_flag:'`10800 -e 's:$: $lt_compiler_flag:'`
10727 (eval echo "\"\$as_me:10727: $lt_compile\"" >&5)10801 (eval echo "\"\$as_me:10801: $lt_compile\"" >&5)
10728 (eval "$lt_compile" 2>conftest.err)10802 (eval "$lt_compile" 2>conftest.err)
10729 ac_status=$?10803 ac_status=$?
10730 cat conftest.err >&510804 cat conftest.err >&5
10731 echo "$as_me:10731: \$? = $ac_status" >&510805 echo "$as_me:10805: \$? = $ac_status" >&5
10732 if (exit $ac_status) && test -s "$ac_outfile"; then10806 if (exit $ac_status) && test -s "$ac_outfile"; then
10733 # The compiler can only warn and ignore the option if not recognized10807 # The compiler can only warn and ignore the option if not recognized
10734 # So say no if there are warnings other than the usual output.10808 # So say no if there are warnings other than the usual output.
@@ -11014,11 +11088,11 @@
11014 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \11088 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
11015 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \11089 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
11016 -e 's:$: $lt_compiler_flag:'`11090 -e 's:$: $lt_compiler_flag:'`
11017 (eval echo "\"\$as_me:11017: $lt_compile\"" >&5)11091 (eval echo "\"\$as_me:11091: $lt_compile\"" >&5)
11018 (eval "$lt_compile" 2>conftest.err)11092 (eval "$lt_compile" 2>conftest.err)
11019 ac_status=$?11093 ac_status=$?
11020 cat conftest.err >&511094 cat conftest.err >&5
11021 echo "$as_me:11021: \$? = $ac_status" >&511095 echo "$as_me:11095: \$? = $ac_status" >&5
11022 if (exit $ac_status) && test -s "$ac_outfile"; then11096 if (exit $ac_status) && test -s "$ac_outfile"; then
11023 # The compiler can only warn and ignore the option if not recognized11097 # The compiler can only warn and ignore the option if not recognized
11024 # So say no if there are warnings other than the usual output.11098 # So say no if there are warnings other than the usual output.
@@ -11118,11 +11192,11 @@
11118 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \11192 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
11119 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \11193 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
11120 -e 's:$: $lt_compiler_flag:'`11194 -e 's:$: $lt_compiler_flag:'`
11121 (eval echo "\"\$as_me:11121: $lt_compile\"" >&5)11195 (eval echo "\"\$as_me:11195: $lt_compile\"" >&5)
11122 (eval "$lt_compile" 2>out/conftest.err)11196 (eval "$lt_compile" 2>out/conftest.err)
11123 ac_status=$?11197 ac_status=$?
11124 cat out/conftest.err >&511198 cat out/conftest.err >&5
11125 echo "$as_me:11125: \$? = $ac_status" >&511199 echo "$as_me:11199: \$? = $ac_status" >&5
11126 if (exit $ac_status) && test -s out/conftest2.$ac_objext11200 if (exit $ac_status) && test -s out/conftest2.$ac_objext
11127 then11201 then
11128 # The compiler can only warn and ignore the option if not recognized11202 # The compiler can only warn and ignore the option if not recognized
@@ -13518,7 +13592,7 @@
13518 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=213592 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
13519 lt_status=$lt_dlunknown13593 lt_status=$lt_dlunknown
13520 cat > conftest.$ac_ext <<EOF13594 cat > conftest.$ac_ext <<EOF
13521#line 13521 "configure"13595#line 13595 "configure"
13522#include "confdefs.h"13596#include "confdefs.h"
1352313597
13524#if HAVE_DLFCN_H13598#if HAVE_DLFCN_H
@@ -13618,7 +13692,7 @@
13618 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=213692 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
13619 lt_status=$lt_dlunknown13693 lt_status=$lt_dlunknown
13620 cat > conftest.$ac_ext <<EOF13694 cat > conftest.$ac_ext <<EOF
13621#line 13621 "configure"13695#line 13695 "configure"
13622#include "confdefs.h"13696#include "confdefs.h"
1362313697
13624#if HAVE_DLFCN_H13698#if HAVE_DLFCN_H
@@ -16031,11 +16105,11 @@
16031 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \16105 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
16032 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \16106 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
16033 -e 's:$: $lt_compiler_flag:'`16107 -e 's:$: $lt_compiler_flag:'`
16034 (eval echo "\"\$as_me:16034: $lt_compile\"" >&5)16108 (eval echo "\"\$as_me:16108: $lt_compile\"" >&5)
16035 (eval "$lt_compile" 2>conftest.err)16109 (eval "$lt_compile" 2>conftest.err)
16036 ac_status=$?16110 ac_status=$?
16037 cat conftest.err >&516111 cat conftest.err >&5
16038 echo "$as_me:16038: \$? = $ac_status" >&516112 echo "$as_me:16112: \$? = $ac_status" >&5
16039 if (exit $ac_status) && test -s "$ac_outfile"; then16113 if (exit $ac_status) && test -s "$ac_outfile"; then
16040 # The compiler can only warn and ignore the option if not recognized16114 # The compiler can only warn and ignore the option if not recognized
16041 # So say no if there are warnings other than the usual output.16115 # So say no if there are warnings other than the usual output.
@@ -16135,11 +16209,11 @@
16135 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \16209 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
16136 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \16210 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
16137 -e 's:$: $lt_compiler_flag:'`16211 -e 's:$: $lt_compiler_flag:'`
16138 (eval echo "\"\$as_me:16138: $lt_compile\"" >&5)16212 (eval echo "\"\$as_me:16212: $lt_compile\"" >&5)
16139 (eval "$lt_compile" 2>out/conftest.err)16213 (eval "$lt_compile" 2>out/conftest.err)
16140 ac_status=$?16214 ac_status=$?
16141 cat out/conftest.err >&516215 cat out/conftest.err >&5
16142 echo "$as_me:16142: \$? = $ac_status" >&516216 echo "$as_me:16216: \$? = $ac_status" >&5
16143 if (exit $ac_status) && test -s out/conftest2.$ac_objext16217 if (exit $ac_status) && test -s out/conftest2.$ac_objext
16144 then16218 then
16145 # The compiler can only warn and ignore the option if not recognized16219 # The compiler can only warn and ignore the option if not recognized
@@ -17718,11 +17792,11 @@
17718 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \17792 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
17719 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \17793 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
17720 -e 's:$: $lt_compiler_flag:'`17794 -e 's:$: $lt_compiler_flag:'`
17721 (eval echo "\"\$as_me:17721: $lt_compile\"" >&5)17795 (eval echo "\"\$as_me:17795: $lt_compile\"" >&5)
17722 (eval "$lt_compile" 2>conftest.err)17796 (eval "$lt_compile" 2>conftest.err)
17723 ac_status=$?17797 ac_status=$?
17724 cat conftest.err >&517798 cat conftest.err >&5
17725 echo "$as_me:17725: \$? = $ac_status" >&517799 echo "$as_me:17799: \$? = $ac_status" >&5
17726 if (exit $ac_status) && test -s "$ac_outfile"; then17800 if (exit $ac_status) && test -s "$ac_outfile"; then
17727 # The compiler can only warn and ignore the option if not recognized17801 # The compiler can only warn and ignore the option if not recognized
17728 # So say no if there are warnings other than the usual output.17802 # So say no if there are warnings other than the usual output.
@@ -17822,11 +17896,11 @@
17822 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \17896 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
17823 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \17897 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
17824 -e 's:$: $lt_compiler_flag:'`17898 -e 's:$: $lt_compiler_flag:'`
17825 (eval echo "\"\$as_me:17825: $lt_compile\"" >&5)17899 (eval echo "\"\$as_me:17899: $lt_compile\"" >&5)
17826 (eval "$lt_compile" 2>out/conftest.err)17900 (eval "$lt_compile" 2>out/conftest.err)
17827 ac_status=$?17901 ac_status=$?
17828 cat out/conftest.err >&517902 cat out/conftest.err >&5
17829 echo "$as_me:17829: \$? = $ac_status" >&517903 echo "$as_me:17903: \$? = $ac_status" >&5
17830 if (exit $ac_status) && test -s out/conftest2.$ac_objext17904 if (exit $ac_status) && test -s out/conftest2.$ac_objext
17831 then17905 then
17832 # The compiler can only warn and ignore the option if not recognized17906 # The compiler can only warn and ignore the option if not recognized
@@ -20041,11 +20115,11 @@
20041 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \20115 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
20042 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \20116 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
20043 -e 's:$: $lt_compiler_flag:'`20117 -e 's:$: $lt_compiler_flag:'`
20044 (eval echo "\"\$as_me:20044: $lt_compile\"" >&5)20118 (eval echo "\"\$as_me:20118: $lt_compile\"" >&5)
20045 (eval "$lt_compile" 2>conftest.err)20119 (eval "$lt_compile" 2>conftest.err)
20046 ac_status=$?20120 ac_status=$?
20047 cat conftest.err >&520121 cat conftest.err >&5
20048 echo "$as_me:20048: \$? = $ac_status" >&520122 echo "$as_me:20122: \$? = $ac_status" >&5
20049 if (exit $ac_status) && test -s "$ac_outfile"; then20123 if (exit $ac_status) && test -s "$ac_outfile"; then
20050 # The compiler can only warn and ignore the option if not recognized20124 # The compiler can only warn and ignore the option if not recognized
20051 # So say no if there are warnings other than the usual output.20125 # So say no if there are warnings other than the usual output.
@@ -20331,11 +20405,11 @@
20331 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \20405 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
20332 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \20406 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
20333 -e 's:$: $lt_compiler_flag:'`20407 -e 's:$: $lt_compiler_flag:'`
20334 (eval echo "\"\$as_me:20334: $lt_compile\"" >&5)20408 (eval echo "\"\$as_me:20408: $lt_compile\"" >&5)
20335 (eval "$lt_compile" 2>conftest.err)20409 (eval "$lt_compile" 2>conftest.err)
20336 ac_status=$?20410 ac_status=$?
20337 cat conftest.err >&520411 cat conftest.err >&5
20338 echo "$as_me:20338: \$? = $ac_status" >&520412 echo "$as_me:20412: \$? = $ac_status" >&5
20339 if (exit $ac_status) && test -s "$ac_outfile"; then20413 if (exit $ac_status) && test -s "$ac_outfile"; then
20340 # The compiler can only warn and ignore the option if not recognized20414 # The compiler can only warn and ignore the option if not recognized
20341 # So say no if there are warnings other than the usual output.20415 # So say no if there are warnings other than the usual output.
@@ -20435,11 +20509,11 @@
20435 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \20509 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
20436 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \20510 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
20437 -e 's:$: $lt_compiler_flag:'`20511 -e 's:$: $lt_compiler_flag:'`
20438 (eval echo "\"\$as_me:20438: $lt_compile\"" >&5)20512 (eval echo "\"\$as_me:20512: $lt_compile\"" >&5)
20439 (eval "$lt_compile" 2>out/conftest.err)20513 (eval "$lt_compile" 2>out/conftest.err)
20440 ac_status=$?20514 ac_status=$?
20441 cat out/conftest.err >&520515 cat out/conftest.err >&5
20442 echo "$as_me:20442: \$? = $ac_status" >&520516 echo "$as_me:20516: \$? = $ac_status" >&5
20443 if (exit $ac_status) && test -s out/conftest2.$ac_objext20517 if (exit $ac_status) && test -s out/conftest2.$ac_objext
20444 then20518 then
20445 # The compiler can only warn and ignore the option if not recognized20519 # The compiler can only warn and ignore the option if not recognized
@@ -23365,17 +23439,17 @@
23365 fi23439 fi
23366 else23440 else
23367 if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then23441 if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then
23368 svn_berkeley_db_header="`echo "$withval" | sed -e "s/\([^:]*\):.*/\1/"`"23442 svn_berkeley_db_header="`echo "$withval" | $SED -e "s/\([^:]*\):.*/\1/"`"
23369 SVN_DB_INCLUDES=""23443 SVN_DB_INCLUDES=""
23370 for i in `echo "$withval" | sed -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`; do23444 for i in `echo "$withval" | $SED -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`; do
23371 SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i"23445 SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i"
23372 done23446 done
23373 SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }"23447 SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }"
23374 for l in `echo "$withval" | sed -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`; do23448 for l in `echo "$withval" | $SED -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`; do
23375 LDFLAGS="$LDFLAGS -L$l"23449 LDFLAGS="$LDFLAGS -L$l"
23376 done23450 done
23377 SVN_DB_LIBS=""23451 SVN_DB_LIBS=""
23378 for l in `echo "$withval" | sed -e "s/.*:\([^:]*\)/\1/"`; do23452 for l in `echo "$withval" | $SED -e "s/.*:\([^:]*\)/\1/"`; do
23379 SVN_DB_LIBS="$SVN_DB_LIBS -l$l"23453 SVN_DB_LIBS="$SVN_DB_LIBS -l$l"
23380 done23454 done
23381 SVN_DB_LIBS="${SVN_DB_LIBS## }"23455 SVN_DB_LIBS="${SVN_DB_LIBS## }"
@@ -23431,7 +23505,7 @@
23431 # Or that it resides in a non-standard location which we would have23505 # Or that it resides in a non-standard location which we would have
23432 # to compensate with using something like -R`$apu_config --prefix`/lib.23506 # to compensate with using something like -R`$apu_config --prefix`/lib.
23433 #23507 #
23434 SVN_DB_LIBS="${SVN_DB_LIBS-`$apu_config --libs | sed -e 's/.*\(-ldb[^[:space:]]*\).*/\1/' | $EGREP -- '-ldb[^[:space:]]*'`}"23508 SVN_DB_LIBS="${SVN_DB_LIBS-`$apu_config --libs | $SED -e 's/.*\(-ldb[^[:space:]]*\).*/\1/' | $EGREP -- '-ldb[^[:space:]]*'`}"
2343523509
23436 CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS"23510 CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS"
23437 LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS"23511 LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS"
@@ -25391,8 +25465,10 @@
25391 old_CXXFLAGS="$CXXFLAGS"25465 old_CXXFLAGS="$CXXFLAGS"
25392 old_LDFLAGS="$LDFLAGS"25466 old_LDFLAGS="$LDFLAGS"
25393 old_LIBS="$LIBS"25467 old_LIBS="$LIBS"
25394 for d in `$PKG_CONFIG --cflags QtCore QtDBus QtGui | $GREP -o -- -D[^[:space:]]*`; do25468 for d in `$PKG_CONFIG --cflags QtCore QtDBus QtGui`; do
25395 CPPFLAGS="$CPPFLAGS $d"25469 if test -n "`echo "$d" | $GREP -- '^-D[^[:space:]]*'`"; then
25470 CPPFLAGS="$CPPFLAGS $d"
25471 fi
25396 done25472 done
25397 qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`"25473 qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`"
25398 kde_dir="`$kde4_config --prefix`"25474 kde_dir="`$kde4_config --prefix`"
@@ -25527,7 +25603,7 @@
2552725603
25528if test "$svn_lib_berkeley_db" = "yes"; then25604if test "$svn_lib_berkeley_db" = "yes"; then
25529 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"25605 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
25530 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"25606 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
25531 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"25607 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
25532 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"25608 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
25533 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"25609 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
@@ -25535,25 +25611,25 @@
2553525611
25536if test "$svn_lib_neon" = "yes"; then25612if test "$svn_lib_neon" = "yes"; then
25537 BUILD_RULES="$BUILD_RULES neon-lib"25613 BUILD_RULES="$BUILD_RULES neon-lib"
25538 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-ramod-lib/install-ramod-lib install-neon-lib/'`"25614 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-neon-lib/'`"
25539 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib"25615 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib"
25540fi25616fi
2554125617
25542if test "$svn_lib_serf" = "yes"; then25618if test "$svn_lib_serf" = "yes"; then
25543 BUILD_RULES="$BUILD_RULES serf-lib"25619 BUILD_RULES="$BUILD_RULES serf-lib"
25544 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"25620 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
25545 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"25621 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
25546fi25622fi
2554725623
25548if test "$svn_lib_kwallet" = "yes"; then25624if test "$svn_lib_kwallet" = "yes"; then
25549 BUILD_RULES="$BUILD_RULES kwallet-lib"25625 BUILD_RULES="$BUILD_RULES kwallet-lib"
25550 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-lib/install-lib install-kwallet-lib/'`"25626 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
25551 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"25627 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
25552fi25628fi
2555325629
25554if test "$with_gnome_keyring" = "yes"; then25630if test "$with_gnome_keyring" = "yes"; then
25555 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"25631 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
25556 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-lib/install-lib install-gnome-keyring-lib/'`"25632 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
25557 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"25633 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
25558fi25634fi
2555925635
@@ -26579,13 +26655,13 @@
2657926655
2658026656
26581if test "$enable_debugging" = "yes" ; then26657if test "$enable_debugging" = "yes" ; then
26582 CFLAGS="`echo $CFLAGS' ' | sed -e 's/-O[^ ]* //g'`"26658 CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"
26583 CXXFLAGS="`echo $CXXFLAGS' ' | sed -e 's/-O[^ ]* //g'`"26659 CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"
26584 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"26660 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
26585 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"26661 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
26586elif test "$enable_debugging" = "no" ; then26662elif test "$enable_debugging" = "no" ; then
26587 CFLAGS="`echo $CFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"26663 CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' | $SED -e 's/-g//g'`"
26588 CXXFLAGS="`echo $CXXFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"26664 CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' | $SED -e 's/-g//g'`"
26589 CFLAGS="$CFLAGS -DNDEBUG"26665 CFLAGS="$CFLAGS -DNDEBUG"
26590 CXXFLAGS="$CXXFLAGS -DNDEBUG"26666 CXXFLAGS="$CXXFLAGS -DNDEBUG"
26591# elif test "$enable_debugging" = "maybe" ; then26667# elif test "$enable_debugging" = "maybe" ; then
@@ -27884,7 +27960,7 @@
27884 { $as_echo "$as_me:$LINENO: checking swig version" >&527960 { $as_echo "$as_me:$LINENO: checking swig version" >&5
27885$as_echo_n "checking swig version... " >&6; }27961$as_echo_n "checking swig version... " >&6; }
27886 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \27962 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \
27887 sed -ne 's/^.*Version \(.*\)$/\1/p'`"27963 $SED -ne 's/^.*Version \(.*\)$/\1/p'`"
27888 # We want the version as an integer so we can test against27964 # We want the version as an integer so we can test against
27889 # which version we're using. SWIG doesn't provide this27965 # which version we're using. SWIG doesn't provide this
27890 # to us so we have to come up with it on our own.27966 # to us so we have to come up with it on our own.
@@ -27893,7 +27969,7 @@
27893 # and the patch level is zero padded to three places.27969 # and the patch level is zero padded to three places.
27894 # e.g. 1.3.24 becomes 10302427970 # e.g. 1.3.24 becomes 103024
27895 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \27971 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \
27896 sed -e 's/[^0-9\.].*$//' \27972 $SED -e 's/[^0-9\.].*$//' \
27897 -e 's/\.\([0-9]\)$/.0\1/' \27973 -e 's/\.\([0-9]\)$/.0\1/' \
27898 -e 's/\.\([0-9][0-9]\)$/.0\1/' \27974 -e 's/\.\([0-9][0-9]\)$/.0\1/' \
27899 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"27975 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"
@@ -28113,7 +28189,7 @@
28113else28189else
2811428190
28115 # Ruby doesn't like '-ansi', so strip that out of CFLAGS28191 # Ruby doesn't like '-ansi', so strip that out of CFLAGS
28116 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | sed -e "s/ -ansi//g"`"28192 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | $SED -e "s/ -ansi//g"`"
2811728193
28118fi28194fi
28119{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&528195{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5
@@ -28153,7 +28229,7 @@
28153$as_echo_n "checking for rb_errinfo... " >&6; }28229$as_echo_n "checking for rb_errinfo... " >&6; }
28154 old_CFLAGS="$CFLAGS"28230 old_CFLAGS="$CFLAGS"
28155 old_LIBS="$LIBS"28231 old_LIBS="$LIBS"
28156 CFLAGS="`echo $CFLAGS | sed -e "s/ -ansi//g"` $svn_cv_ruby_includes"28232 CFLAGS="`echo $CFLAGS | $SED -e "s/ -ansi//g"` $svn_cv_ruby_includes"
28157 LIBS="$SWIG_RB_LIBS"28233 LIBS="$SWIG_RB_LIBS"
28158 cat >conftest.$ac_ext <<_ACEOF28234 cat >conftest.$ac_ext <<_ACEOF
2815928235
@@ -28232,7 +28308,7 @@
28232else28308else
2823328309
28234 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \28310 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
28235 sed -e "s,^$rbconfig_sitedir,,"`"28311 $SED -e "s,^$rbconfig_sitedir,,"`"
2823628312
28237fi28313fi
2823828314
@@ -28247,7 +28323,7 @@
28247else28323else
2824828324
28249 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \28325 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
28250 sed -e "s,^$rbconfig_sitedir,,"`"28326 $SED -e "s,^$rbconfig_sitedir,,"`"
2825128327
28252fi28328fi
2825328329
@@ -28397,7 +28473,7 @@
28397 { $as_echo "$as_me:$LINENO: checking swig version" >&528473 { $as_echo "$as_me:$LINENO: checking swig version" >&5
28398$as_echo_n "checking swig version... " >&6; }28474$as_echo_n "checking swig version... " >&6; }
28399 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \28475 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \
28400 sed -ne 's/^.*Version \(.*\)$/\1/p'`"28476 $SED -ne 's/^.*Version \(.*\)$/\1/p'`"
28401 # We want the version as an integer so we can test against28477 # We want the version as an integer so we can test against
28402 # which version we're using. SWIG doesn't provide this28478 # which version we're using. SWIG doesn't provide this
28403 # to us so we have to come up with it on our own.28479 # to us so we have to come up with it on our own.
@@ -28406,7 +28482,7 @@
28406 # and the patch level is zero padded to three places.28482 # and the patch level is zero padded to three places.
28407 # e.g. 1.3.24 becomes 10302428483 # e.g. 1.3.24 becomes 103024
28408 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \28484 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \
28409 sed -e 's/[^0-9\.].*$//' \28485 $SED -e 's/[^0-9\.].*$//' \
28410 -e 's/\.\([0-9]\)$/.0\1/' \28486 -e 's/\.\([0-9]\)$/.0\1/' \
28411 -e 's/\.\([0-9][0-9]\)$/.0\1/' \28487 -e 's/\.\([0-9][0-9]\)$/.0\1/' \
28412 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"28488 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"
@@ -28626,7 +28702,7 @@
28626else28702else
2862728703
28628 # Ruby doesn't like '-ansi', so strip that out of CFLAGS28704 # Ruby doesn't like '-ansi', so strip that out of CFLAGS
28629 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | sed -e "s/ -ansi//g"`"28705 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | $SED -e "s/ -ansi//g"`"
2863028706
28631fi28707fi
28632{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&528708{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5
@@ -28666,7 +28742,7 @@
28666$as_echo_n "checking for rb_errinfo... " >&6; }28742$as_echo_n "checking for rb_errinfo... " >&6; }
28667 old_CFLAGS="$CFLAGS"28743 old_CFLAGS="$CFLAGS"
28668 old_LIBS="$LIBS"28744 old_LIBS="$LIBS"
28669 CFLAGS="`echo $CFLAGS | sed -e "s/ -ansi//g"` $svn_cv_ruby_includes"28745 CFLAGS="`echo $CFLAGS | $SED -e "s/ -ansi//g"` $svn_cv_ruby_includes"
28670 LIBS="$SWIG_RB_LIBS"28746 LIBS="$SWIG_RB_LIBS"
28671 cat >conftest.$ac_ext <<_ACEOF28747 cat >conftest.$ac_ext <<_ACEOF
2867228748
@@ -28745,7 +28821,7 @@
28745else28821else
2874628822
28747 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \28823 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
28748 sed -e "s,^$rbconfig_sitedir,,"`"28824 $SED -e "s,^$rbconfig_sitedir,,"`"
2874928825
28750fi28826fi
2875128827
@@ -28760,7 +28836,7 @@
28760else28836else
2876128837
28762 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \28838 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
28763 sed -e "s,^$rbconfig_sitedir,,"`"28839 $SED -e "s,^$rbconfig_sitedir,,"`"
2876428840
28765fi28841fi
2876628842
@@ -28910,7 +28986,7 @@
28910 { $as_echo "$as_me:$LINENO: checking swig version" >&528986 { $as_echo "$as_me:$LINENO: checking swig version" >&5
28911$as_echo_n "checking swig version... " >&6; }28987$as_echo_n "checking swig version... " >&6; }
28912 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \28988 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \
28913 sed -ne 's/^.*Version \(.*\)$/\1/p'`"28989 $SED -ne 's/^.*Version \(.*\)$/\1/p'`"
28914 # We want the version as an integer so we can test against28990 # We want the version as an integer so we can test against
28915 # which version we're using. SWIG doesn't provide this28991 # which version we're using. SWIG doesn't provide this
28916 # to us so we have to come up with it on our own.28992 # to us so we have to come up with it on our own.
@@ -28919,7 +28995,7 @@
28919 # and the patch level is zero padded to three places.28995 # and the patch level is zero padded to three places.
28920 # e.g. 1.3.24 becomes 10302428996 # e.g. 1.3.24 becomes 103024
28921 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \28997 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \
28922 sed -e 's/[^0-9\.].*$//' \28998 $SED -e 's/[^0-9\.].*$//' \
28923 -e 's/\.\([0-9]\)$/.0\1/' \28999 -e 's/\.\([0-9]\)$/.0\1/' \
28924 -e 's/\.\([0-9][0-9]\)$/.0\1/' \29000 -e 's/\.\([0-9][0-9]\)$/.0\1/' \
28925 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"29001 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"
@@ -29139,7 +29215,7 @@
29139else29215else
2914029216
29141 # Ruby doesn't like '-ansi', so strip that out of CFLAGS29217 # Ruby doesn't like '-ansi', so strip that out of CFLAGS
29142 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | sed -e "s/ -ansi//g"`"29218 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | $SED -e "s/ -ansi//g"`"
2914329219
29144fi29220fi
29145{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&529221{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5
@@ -29179,7 +29255,7 @@
29179$as_echo_n "checking for rb_errinfo... " >&6; }29255$as_echo_n "checking for rb_errinfo... " >&6; }
29180 old_CFLAGS="$CFLAGS"29256 old_CFLAGS="$CFLAGS"
29181 old_LIBS="$LIBS"29257 old_LIBS="$LIBS"
29182 CFLAGS="`echo $CFLAGS | sed -e "s/ -ansi//g"` $svn_cv_ruby_includes"29258 CFLAGS="`echo $CFLAGS | $SED -e "s/ -ansi//g"` $svn_cv_ruby_includes"
29183 LIBS="$SWIG_RB_LIBS"29259 LIBS="$SWIG_RB_LIBS"
29184 cat >conftest.$ac_ext <<_ACEOF29260 cat >conftest.$ac_ext <<_ACEOF
2918529261
@@ -29258,7 +29334,7 @@
29258else29334else
2925929335
29260 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \29336 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
29261 sed -e "s,^$rbconfig_sitedir,,"`"29337 $SED -e "s,^$rbconfig_sitedir,,"`"
2926229338
29263fi29339fi
2926429340
@@ -29273,7 +29349,7 @@
29273else29349else
2927429350
29275 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \29351 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
29276 sed -e "s,^$rbconfig_sitedir,,"`"29352 $SED -e "s,^$rbconfig_sitedir,,"`"
2927729353
29278fi29354fi
2927929355
@@ -29426,7 +29502,7 @@
29426 { $as_echo "$as_me:$LINENO: checking swig version" >&529502 { $as_echo "$as_me:$LINENO: checking swig version" >&5
29427$as_echo_n "checking swig version... " >&6; }29503$as_echo_n "checking swig version... " >&6; }
29428 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \29504 SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \
29429 sed -ne 's/^.*Version \(.*\)$/\1/p'`"29505 $SED -ne 's/^.*Version \(.*\)$/\1/p'`"
29430 # We want the version as an integer so we can test against29506 # We want the version as an integer so we can test against
29431 # which version we're using. SWIG doesn't provide this29507 # which version we're using. SWIG doesn't provide this
29432 # to us so we have to come up with it on our own.29508 # to us so we have to come up with it on our own.
@@ -29435,7 +29511,7 @@
29435 # and the patch level is zero padded to three places.29511 # and the patch level is zero padded to three places.
29436 # e.g. 1.3.24 becomes 10302429512 # e.g. 1.3.24 becomes 103024
29437 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \29513 SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \
29438 sed -e 's/[^0-9\.].*$//' \29514 $SED -e 's/[^0-9\.].*$//' \
29439 -e 's/\.\([0-9]\)$/.0\1/' \29515 -e 's/\.\([0-9]\)$/.0\1/' \
29440 -e 's/\.\([0-9][0-9]\)$/.0\1/' \29516 -e 's/\.\([0-9][0-9]\)$/.0\1/' \
29441 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"29517 -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`"
@@ -29655,7 +29731,7 @@
29655else29731else
2965629732
29657 # Ruby doesn't like '-ansi', so strip that out of CFLAGS29733 # Ruby doesn't like '-ansi', so strip that out of CFLAGS
29658 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | sed -e "s/ -ansi//g"`"29734 svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | $SED -e "s/ -ansi//g"`"
2965929735
29660fi29736fi
29661{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&529737{ $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5
@@ -29695,7 +29771,7 @@
29695$as_echo_n "checking for rb_errinfo... " >&6; }29771$as_echo_n "checking for rb_errinfo... " >&6; }
29696 old_CFLAGS="$CFLAGS"29772 old_CFLAGS="$CFLAGS"
29697 old_LIBS="$LIBS"29773 old_LIBS="$LIBS"
29698 CFLAGS="`echo $CFLAGS | sed -e "s/ -ansi//g"` $svn_cv_ruby_includes"29774 CFLAGS="`echo $CFLAGS | $SED -e "s/ -ansi//g"` $svn_cv_ruby_includes"
29699 LIBS="$SWIG_RB_LIBS"29775 LIBS="$SWIG_RB_LIBS"
29700 cat >conftest.$ac_ext <<_ACEOF29776 cat >conftest.$ac_ext <<_ACEOF
2970129777
@@ -29774,7 +29850,7 @@
29774else29850else
2977529851
29776 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \29852 svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
29777 sed -e "s,^$rbconfig_sitedir,,"`"29853 $SED -e "s,^$rbconfig_sitedir,,"`"
2977829854
29779fi29855fi
2978029856
@@ -29789,7 +29865,7 @@
29789else29865else
2979029866
29791 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \29867 svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
29792 sed -e "s,^$rbconfig_sitedir,,"`"29868 $SED -e "s,^$rbconfig_sitedir,,"`"
2979329869
29794fi29870fi
2979529871
@@ -30372,6 +30448,8 @@
30372 ac_config_files="$ac_config_files tools/backup/hot-backup.py"30448 ac_config_files="$ac_config_files tools/backup/hot-backup.py"
3037330449
3037430450
30451 SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES contrib/client-side/svn_load_dirs/svn_load_dirs.pl"
30452 ac_config_files="$ac_config_files contrib/client-side/svn_load_dirs/svn_load_dirs.pl"
3037530453
3037630454
30377 SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES contrib/client-side/svncopy/svncopy.pl"30455 SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES contrib/client-side/svncopy/svncopy.pl"
@@ -30818,7 +30896,7 @@
30818# report actual input values of CONFIG_FILES etc. instead of their30896# report actual input values of CONFIG_FILES etc. instead of their
30819# values after options handling.30897# values after options handling.
30820ac_log="30898ac_log="
30821This file was extended by subversion $as_me 1.6.5, which was30899This file was extended by subversion $as_me 1.6.6, which was
30822generated by GNU Autoconf 2.63. Invocation command line was30900generated by GNU Autoconf 2.63. Invocation command line was
3082330901
30824 CONFIG_FILES = $CONFIG_FILES30902 CONFIG_FILES = $CONFIG_FILES
@@ -30881,7 +30959,7 @@
30881_ACEOF30959_ACEOF
30882cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=130960cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
30883ac_cs_version="\\30961ac_cs_version="\\
30884subversion config.status 1.6.530962subversion config.status 1.6.6
30885configured by $0, generated by GNU Autoconf 2.63,30963configured by $0, generated by GNU Autoconf 2.63,
30886 with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"30964 with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
3088730965
@@ -30992,7 +31070,8 @@
30992#31070#
30993# INIT-COMMANDS31071# INIT-COMMANDS
30994#31072#
30995SVN_DB_HEADER="$SVN_DB_HEADER"31073SED="$SED"
31074 SVN_DB_HEADER="$SVN_DB_HEADER"
3099631075
30997_ACEOF31076_ACEOF
3099831077
@@ -31006,6 +31085,7 @@
31006 "svn_private_config.h") CONFIG_COMMANDS="$CONFIG_COMMANDS svn_private_config.h" ;;31085 "svn_private_config.h") CONFIG_COMMANDS="$CONFIG_COMMANDS svn_private_config.h" ;;
31007 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;31086 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
31008 "tools/backup/hot-backup.py") CONFIG_FILES="$CONFIG_FILES tools/backup/hot-backup.py" ;;31087 "tools/backup/hot-backup.py") CONFIG_FILES="$CONFIG_FILES tools/backup/hot-backup.py" ;;
31088 "contrib/client-side/svn_load_dirs/svn_load_dirs.pl") CONFIG_FILES="$CONFIG_FILES contrib/client-side/svn_load_dirs/svn_load_dirs.pl" ;;
31009 "contrib/client-side/svncopy/svncopy.pl") CONFIG_FILES="$CONFIG_FILES contrib/client-side/svncopy/svncopy.pl" ;;31089 "contrib/client-side/svncopy/svncopy.pl") CONFIG_FILES="$CONFIG_FILES contrib/client-side/svncopy/svncopy.pl" ;;
31010 "contrib/client-side/svncopy/testsvncopy.pl") CONFIG_FILES="$CONFIG_FILES contrib/client-side/svncopy/testsvncopy.pl" ;;31090 "contrib/client-side/svncopy/testsvncopy.pl") CONFIG_FILES="$CONFIG_FILES contrib/client-side/svncopy/testsvncopy.pl" ;;
31011 "contrib/hook-scripts/commit-email.pl") CONFIG_FILES="$CONFIG_FILES contrib/hook-scripts/commit-email.pl" ;;31091 "contrib/hook-scripts/commit-email.pl") CONFIG_FILES="$CONFIG_FILES contrib/hook-scripts/commit-email.pl" ;;
@@ -31626,9 +31706,10 @@
3162631706
3162731707
31628 case $ac_file$ac_mode in31708 case $ac_file$ac_mode in
31629 "svn_private_config.h":C) sed -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" subversion/svn_private_config.h > subversion/svn_private_config.h.new31709 "svn_private_config.h":C) $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" subversion/svn_private_config.h > subversion/svn_private_config.h.new
31630 mv -f subversion/svn_private_config.h.new subversion/svn_private_config.h ;;31710 mv -f subversion/svn_private_config.h.new subversion/svn_private_config.h ;;
31631 "tools/backup/hot-backup.py":F) chmod +x tools/backup/hot-backup.py ;;31711 "tools/backup/hot-backup.py":F) chmod +x tools/backup/hot-backup.py ;;
31712 "contrib/client-side/svn_load_dirs/svn_load_dirs.pl":F) chmod +x contrib/client-side/svn_load_dirs/svn_load_dirs.pl ;;
31632 "contrib/client-side/svncopy/svncopy.pl":F) chmod +x contrib/client-side/svncopy/svncopy.pl ;;31713 "contrib/client-side/svncopy/svncopy.pl":F) chmod +x contrib/client-side/svncopy/svncopy.pl ;;
31633 "contrib/client-side/svncopy/testsvncopy.pl":F) chmod +x contrib/client-side/svncopy/testsvncopy.pl ;;31714 "contrib/client-side/svncopy/testsvncopy.pl":F) chmod +x contrib/client-side/svncopy/testsvncopy.pl ;;
31634 "contrib/hook-scripts/commit-email.pl":F) chmod +x contrib/hook-scripts/commit-email.pl ;;31715 "contrib/hook-scripts/commit-email.pl":F) chmod +x contrib/hook-scripts/commit-email.pl ;;
3163531716
=== modified file 'configure.ac'
--- configure.ac 2009-08-24 19:09:22 +0000
+++ configure.ac 2009-12-12 13:21:14 +0000
@@ -40,6 +40,10 @@
40# Look for a C pre-processor40# Look for a C pre-processor
41AC_PROG_CPP41AC_PROG_CPP
4242
43# Look for a good sed
44# AC_PROG_SED was introduced in Autoconf 2.59b
45m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"])
46
43# Grab target_cpu, so we can use it in the Solaris pkginfo file47# Grab target_cpu, so we can use it in the Solaris pkginfo file
44AC_CANONICAL_TARGET48AC_CANONICAL_TARGET
4549
@@ -79,8 +83,8 @@
7983
80# Either a space-separated list of allowable Neon versions, or "any" to84# Either a space-separated list of allowable Neon versions, or "any" to
81# mean allow anything.85# mean allow anything.
82NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28"86NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28 0\.29"
83NEON_RECOMMENDED_VER=0.28.487NEON_RECOMMENDED_VER="0.29.0"
84NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz"88NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz"
85dnl You can skip the neon version check only if you know what you are doing 89dnl You can skip the neon version check only if you know what you are doing
86AC_ARG_ENABLE(neon-version-check,90AC_ARG_ENABLE(neon-version-check,
@@ -532,7 +536,7 @@
532536
533if test "$svn_lib_berkeley_db" = "yes"; then537if test "$svn_lib_berkeley_db" = "yes"; then
534 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"538 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
535 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"539 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
536 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"540 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
537 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"541 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
538 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"542 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
@@ -540,25 +544,25 @@
540 544
541if test "$svn_lib_neon" = "yes"; then545if test "$svn_lib_neon" = "yes"; then
542 BUILD_RULES="$BUILD_RULES neon-lib"546 BUILD_RULES="$BUILD_RULES neon-lib"
543 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-ramod-lib/install-ramod-lib install-neon-lib/'`"547 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-neon-lib/'`"
544 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib"548 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib"
545fi549fi
546550
547if test "$svn_lib_serf" = "yes"; then551if test "$svn_lib_serf" = "yes"; then
548 BUILD_RULES="$BUILD_RULES serf-lib"552 BUILD_RULES="$BUILD_RULES serf-lib"
549 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"553 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
550 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"554 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
551fi555fi
552556
553if test "$svn_lib_kwallet" = "yes"; then557if test "$svn_lib_kwallet" = "yes"; then
554 BUILD_RULES="$BUILD_RULES kwallet-lib"558 BUILD_RULES="$BUILD_RULES kwallet-lib"
555 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-lib/install-lib install-kwallet-lib/'`"559 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
556 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"560 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
557fi561fi
558562
559if test "$with_gnome_keyring" = "yes"; then563if test "$with_gnome_keyring" = "yes"; then
560 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"564 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
561 INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-lib/install-lib install-gnome-keyring-lib/'`"565 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
562 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"566 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
563fi567fi
564568
@@ -683,15 +687,15 @@
683if test "$enable_debugging" = "yes" ; then687if test "$enable_debugging" = "yes" ; then
684 dnl At the moment, we don't want optimization, because we're688 dnl At the moment, we don't want optimization, because we're
685 dnl debugging.689 dnl debugging.
686 CFLAGS=["`echo $CFLAGS' ' | sed -e 's/-O[^ ]* //g'`"]690 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
687 CXXFLAGS=["`echo $CXXFLAGS' ' | sed -e 's/-O[^ ]* //g'`"]691 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
688 dnl SVN_DEBUG enables specific features for developer builds692 dnl SVN_DEBUG enables specific features for developer builds
689 dnl AP_DEBUG enables specific (Apache) features for developer builds693 dnl AP_DEBUG enables specific (Apache) features for developer builds
690 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"694 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
691 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"695 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
692elif test "$enable_debugging" = "no" ; then696elif test "$enable_debugging" = "no" ; then
693 CFLAGS=["`echo $CFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"]697 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' | $SED -e 's/-g//g'`"]
694 CXXFLAGS=["`echo $CXXFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"]698 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' | $SED -e 's/-g//g'`"]
695 dnl Compile with NDEBUG to get rid of assertions699 dnl Compile with NDEBUG to get rid of assertions
696 CFLAGS="$CFLAGS -DNDEBUG"700 CFLAGS="$CFLAGS -DNDEBUG"
697 CXXFLAGS="$CXXFLAGS -DNDEBUG"701 CXXFLAGS="$CXXFLAGS -DNDEBUG"
@@ -989,12 +993,14 @@
989993
990AC_CONFIG_HEADERS(subversion/svn_private_config.h)994AC_CONFIG_HEADERS(subversion/svn_private_config.h)
991AC_CONFIG_COMMANDS([svn_private_config.h],995AC_CONFIG_COMMANDS([svn_private_config.h],
992 [sed -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" subversion/svn_private_config.h > subversion/svn_private_config.h.new996 [$SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" subversion/svn_private_config.h > subversion/svn_private_config.h.new
993 mv -f subversion/svn_private_config.h.new subversion/svn_private_config.h],997 mv -f subversion/svn_private_config.h.new subversion/svn_private_config.h],
994 [SVN_DB_HEADER="$SVN_DB_HEADER"])998 [SED="$SED"
999 SVN_DB_HEADER="$SVN_DB_HEADER"])
995AC_CONFIG_FILES([Makefile])1000AC_CONFIG_FILES([Makefile])
9961001
997SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)1002SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1003SVN_CONFIG_SCRIPT(contrib/client-side/svn_load_dirs/svn_load_dirs.pl)
998SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/svncopy.pl)1004SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/svncopy.pl)
999SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/testsvncopy.pl)1005SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/testsvncopy.pl)
1000SVN_CONFIG_SCRIPT(contrib/hook-scripts/commit-email.pl)1006SVN_CONFIG_SCRIPT(contrib/hook-scripts/commit-email.pl)
10011007
=== added directory 'contrib/client-side/svn_load_dirs'
=== added file 'contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt'
--- contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt 1970-01-01 00:00:00 +0000
+++ contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt 2009-12-12 13:21:15 +0000
@@ -0,0 +1,190 @@
1http://www.opensource.org/licenses/academic.php
2
3Academic Free License ("AFL") v. 3.0
4
5This Academic Free License (the "License") applies to any original
6work of authorship (the "Original Work") whose owner (the "Licensor")
7has placed the following licensing notice adjacent to the copyright
8notice for the Original Work:
9
10 Licensed under the Academic Free License version 3.0
11
12 1) Grant of Copyright License. Licensor grants You a worldwide,
13 royalty-free, non-exclusive, sublicensable license, for the
14 duration of the copyright, to do the following:
15 a) to reproduce the Original Work in copies, either alone or as
16 part of a collective work;
17 b) to translate, adapt, alter, transform, modify, or arrange the
18 Original Work, thereby creating derivative works ("Derivative
19 Works") based upon the Original Work;
20 c) to distribute or communicate copies of the Original Work and
21 Derivative Works to the public, under any license of your
22 choice that does not contradict the terms and conditions,
23 including Licensor's reserved rights and remedies, in this
24 Academic Free License;
25 d) to perform the Original Work publicly; and
26 e) to display the Original Work publicly.
27
28 2) Grant of Patent License. Licensor grants You a worldwide,
29 royalty-free, non- exclusive, sublicensable license, under patent
30 claims owned or controlled by the Licensor that are embodied in
31 the Original Work as furnished by the Licensor, for the duration
32 of the patents, to make, use, sell, offer for sale, have made, and
33 import the Original Work and Derivative Works.
34
35 3) Grant of Source Code License. The term "Source Code" means the
36 preferred form of the Original Work for making modifications to it
37 and all available documentation describing how to modify the
38 Original Work. Licensor agrees to provide a machine-readable copy
39 of the Source Code of the Original Work along with each copy of
40 the Original Work that Licensor distributes. Licensor reserves the
41 right to satisfy this obligation by placing a machine-readable
42 copy of the Source Code in an information repository reasonably
43 calculated to permit inexpensive and convenient access by You for
44 as long as Licensor continues to distribute the Original Work.
45
46 4) Exclusions From License Grant. Neither the names of Licensor, nor
47 the names of any contributors to the Original Work, nor any of
48 their trademarks or service marks, may be used to endorse or
49 promote products derived from this Original Work without express
50 prior permission of the Licensor. Except as expressly stated
51 herein, nothing in this License grants any license to Licensor's
52 trademarks, copyrights, patents, trade secrets or any other
53 intellectual property. No patent license is granted to make, use,
54 sell, offer for sale, have made, or import embodiments of any
55 patent claims other than the licensed claims defined in Section
56 2. No license is granted to the trademarks of Licensor even if
57 such marks are included in the Original Work. Nothing in this
58 License shall be interpreted to prohibit Licensor from licensing
59 under terms different from this License any Original Work that
60 Licensor otherwise would have a right to license.
61
62 5) External Deployment. The term "External Deployment" means the use,
63 distribution, or communication of the Original Work or Derivative
64 Works in any way such that the Original Work or Derivative Works
65 may be used by anyone other than You, whether those works are
66 distributed or communicated to those persons or made available as
67 an application intended for use over a network. As an express
68 condition for the grants of license hereunder, You must treat any
69 External Deployment by You of the Original Work or a Derivative
70 Work as a distribution under section 1(c).
71
72 6) Attribution Rights. You must retain, in the Source Code of any
73 Derivative Works that You create, all copyright, patent, or
74 trademark notices from the Source Code of the Original Work, as
75 well as any notices of licensing and any descriptive text
76 identified therein as an "Attribution Notice." You must cause the
77 Source Code for any Derivative Works that You create to carry a
78 prominent Attribution Notice reasonably calculated to inform
79 recipients that You have modified the Original Work.
80
81 7) Warranty of Provenance and Disclaimer of Warranty. Licensor
82 warrants that the copyright in and to the Original Work and the
83 patent rights granted herein by Licensor are owned by the Licensor
84 or are sublicensed to You under the terms of this License with the
85 permission of the contributor(s) of those copyrights and patent
86 rights. Except as expressly stated in the immediately preceding
87 sentence, the Original Work is provided under this License on an
88 "AS IS" BASIS and WITHOUT WARRANTY, either express or implied,
89 including, without limitation, the warranties of non-infringement,
90 merchantability or fitness for a particular purpose. THE ENTIRE
91 RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This
92 DISCLAIMER OF WARRANTY constitutes an essential part of this
93 License. No license to the Original Work is granted by this
94 License except under this disclaimer.
95
96 8) Limitation of Liability. Under no circumstances and under no legal
97 theory, whether in tort (including negligence), contract, or
98 otherwise, shall the Licensor be liable to anyone for any
99 indirect, special, incidental, or consequential damages of any
100 character arising as a result of this License or the use of the
101 Original Work including, without limitation, damages for loss of
102 goodwill, work stoppage, computer failure or malfunction, or any
103 and all other commercial damages or losses. This limitation of
104 liability shall not apply to the extent applicable law prohibits
105 such limitation.
106
107 9) Acceptance and Termination. If, at any time, You expressly
108 assented to this License, that assent indicates your clear and
109 irrevocable acceptance of this License and all of its terms and
110 conditions. If You distribute or communicate copies of the
111 Original Work or a Derivative Work, You must make a reasonable
112 effort under the circumstances to obtain the express assent of
113 recipients to the terms of this License. This License conditions
114 your rights to undertake the activities listed in Section 1,
115 including your right to create Derivative Works based upon the
116 Original Work, and doing so without honoring these terms and
117 conditions is prohibited by copyright law and international
118 treaty. Nothing in this License is intended to affect copyright
119 exceptions and limitations (including "fair use" or "fair
120 dealing"). This License shall terminate immediately and You may no
121 longer exercise any of the rights granted to You by this License
122 upon your failure to honor the conditions in Section 1(c).
123
12410) Termination for Patent Action. This License shall terminate
125 automatically and You may no longer exercise any of the rights
126 granted to You by this License as of the date You commence an
127 action, including a cross-claim or counterclaim, against Licensor
128 or any licensee alleging that the Original Work infringes a
129 patent. This termination provision shall not apply for an action
130 alleging patent infringement by combinations of the Original Work
131 with other software or hardware.
132
13311) Jurisdiction, Venue and Governing Law. Any action or suit relating
134 to this License may be brought only in the courts of a
135 jurisdiction wherein the Licensor resides or in which Licensor
136 conducts its primary business, and under the laws of that
137 jurisdiction excluding its conflict-of-law provisions. The
138 application of the United Nations Convention on Contracts for the
139 International Sale of Goods is expressly excluded. Any use of the
140 Original Work outside the scope of this License or after its
141 termination shall be subject to the requirements and penalties of
142 copyright or patent law in the appropriate jurisdiction. This
143 section shall survive the termination of this License.
144
14512) Attorneys' Fees. In any action to enforce the terms of this
146 License or seeking damages relating thereto, the prevailing party
147 shall be entitled to recover its costs and expenses, including,
148 without limitation, reasonable attorneys' fees and costs incurred
149 in connection with such action, including any appeal of such
150 action. This section shall survive the termination of this
151 License.
152
15313) Miscellaneous. If any provision of this License is held to be
154 unenforceable, such provision shall be reformed only to the extent
155 necessary to make it enforceable.
156
15714) Definition of "You" in This License. "You" throughout this
158 License, whether in upper or lower case, means an individual or a
159 legal entity exercising rights under, and complying with all of
160 the terms of, this License. For legal entities, "You" includes any
161 entity that controls, is controlled by, or is under common control
162 with you. For purposes of this definition, "control" means (i) the
163 power, direct or indirect, to cause the direction or management of
164 such entity, whether by contract or otherwise, or (ii) ownership
165 of fifty percent (50%) or more of the outstanding shares, or (iii)
166 beneficial ownership of such entity.
167
16815) Right to Use. You may use the Original Work in all ways not
169 otherwise restricted or conditioned by this License or by law, and
170 Licensor promises not to interfere with or be responsible for such
171 uses by You.
172
17316) Modification of This License. This License is Copyright © 2005
174 Lawrence Rosen. Permission is granted to copy, distribute, or
175 communicate this License without modification. Nothing in this
176 License permits You to modify this License as applied to the
177 Original Work or to Derivative Works. However, You may modify the
178 text of this License and copy, distribute or communicate your
179 modified version (the "Modified License") and apply it to other
180 original works of authorship subject to the following conditions:
181 (i) You may not indicate in any way that your Modified License is
182 the "Academic Free License" or "AFL" and you may not use those
183 names in the name of your Modified License; (ii) You must replace
184 the notice specified in the first paragraph above with the notice
185 "Licensed under <insert your license name here>" or with a notice
186 of your own that is not confusingly similar to the notice in this
187 License; and (iii) You may not claim that your original works are
188 open source software unless your Modified License has been
189 approved by Open Source Initiative (OSI) and You comply with its
190 license review and certification process.
0191
=== added file 'contrib/client-side/svn_load_dirs/svn_load_dirs.README'
--- contrib/client-side/svn_load_dirs/svn_load_dirs.README 1970-01-01 00:00:00 +0000
+++ contrib/client-side/svn_load_dirs/svn_load_dirs.README 2009-12-12 13:21:14 +0000
@@ -0,0 +1,270 @@
1Introduction
2============
3
4This Perl script is designed to load a number of directories into
5Subversion. This is useful if you have a number of .zip's or
6tar.{Z,gz,bz2}'s for a particular package and want to load them into
7Subversion.
8
9Command Line Options
10====================
11
12Run the script with no command line arguments to see all the command
13line options it takes.
14
15When Not To Use This Script
16===========================
17
18This script assumes that these packages were not previously in a
19source control system, in particular CVS, because then you would use
20another script to migrate the repository over, and in CVS' case, you
21would use cvs2svn. This script will properly tag each release in the
22tags directory if you use the -t command line option.
23
24Automatically Setting Properties On New Files & Directories
25===========================================================
26
27The script also accepts a separate configuration file for applying
28properties to specific files and directories matching a regular
29expression that are *added* to the repository. This script will not
30modify properties of already existing files or directories in the
31repository. This configuration file is specified to svn_load_dirs.pl
32using the -p command line option. The format of the file is either
33two or four columns:
34
35regular_expression control property_name property_value
36
37 The `regular_expression' is a Perl style regular expression. It is
38 matched in a case-insensitive against filenames.
39
40 The `control' must either be set to `break' or `cont'. It is used
41 to tell svn_load_dirs.pl if the following lines in the
42 configuration file should be examined for a match or if all
43 matching should stop. If `control' is set to `break', then no more
44 lines from the configuration file will be matched. If `control' is
45 set to `cont', which is short for continue, then more comparisons
46 will be made. Multiple properties can be set for one file or
47 directory this way.
48
49 The last two, `property_name' and `property_value' are optional and
50 are applied to matching files and directories.
51
52If you have whitespace in any of the `regular_expression',
53`property_name' or `property_value' columns, you must surround the
54value with either a single or double quote. You can protect single or
55double quotes with a \ character. The \ character is removed by this
56script *only* for whitespace and quote characters, so you do not need
57to protect any other characters, beyond what you would normally
58protect for the regular expression.
59
60This sample configuration file was used to load on a Unix box a number
61of Zip files containing Windows files with CRLF end of lines.
62
63 \.doc$ break svn:mime-type application/msword
64 \.ds(p|w)$ break svn:eol-style CRLF
65 \.ilk$ break svn:eol-style CRLF
66 \.ncb$ break svn:eol-style CRLF
67 \.opt$ break svn:eol-style CRLF
68 \.exe$ break svn:mime-type application/octet-stream
69 dos2unix-eol\.sh$ break
70 .* break svn:eol-style native
71
72In this example, all the files should be converted to the native end
73of line style, which the last line of the configuration handles. The
74exception is dos2unix-eol.sh, which contains embedded CR's used to
75find and replace Windows CRLF end of line characters with Unix's LF
76characters. Since svn and svn_load_dirs.pl converts all CR, CRLF and
77LF's to the native end of line style when `svn:eol-style' is set to
78`native', this file should be left untouched. Hence, the `break' with
79no property settings.
80
81The Windows Visual C++ and Visual Studio files (*.dsp, *.dsw, etc.)
82should retain their CRLF line endings on any operating system and any
83*.doc files are always treated as binary files, hence the
84`svn:mime-type' setting of `application/msword'.
85
86Example Import
87==============
88
89An example import follows:
90
91Steps:
92
931) Unpack your .tar.{Z,gz,bz2}'s or .zips into a directory that is not
94 in a Subversion repository.
95
96 Example:
97
98 I'll use an example from my Orca distribution:
99
100 % cd /tmp
101 % zcat orca-0.18.tar.gz | tar xf -
102 % zcat orca-0.27b2.tar.gz | tar xf -
103
1042) Decide on the directory structure you want to use to contain the
105 project you are loading.
106
107 There are three main directory structures you can use. If you have
108 a single project, then use the structure Subversion uses for
109 itself, that is
110
111 /branches
112 /tags
113 /trunk
114
115 and load the project into /trunk and the tags into the tags
116 directory.
117
118 If you have more than one project and you want to treat each
119 project separately, then use one of the following structures:
120
121 /branches
122 /tags
123 /tags/project1
124 /tags/project2
125 /tags/project3
126 /trunk
127 /trunk/project1
128 /trunk/project2
129 /trunk/project3
130
131 or
132
133 /project1/branches
134 /project1/tags
135 /project1/trunk
136 /project2/branches
137 /project2/tags
138 /project2/trunk
139
140 Example:
141
142 To load Orca using the second directory structure into the
143 subversion repository rooted at http://svn.orcaware.com:8000/repos
144
145 % cd /tmp
146 % svn co http://svn.orcaware.com:8000/repos
147 % cd repos
148 % mkdir tags tags/orca trunk trunk/orca
149 % svn add tags trunk
150 % svn commit -m 'Create initial directory tree structure for projects.'
151
152 This script will create any subdirectories required to import your
153 directories into the repository, so these steps may not be required.
154
1553) Decide on the URL to use to access the subversion repository with
156 this script and the relative directory paths to the directories to
157 import your project into and to place the tags into.
158
159 The usage of the script is
160
161 ./svn_load_dirs.pl [-t tag_dir] svn_url import_dir dir_v1 [dir_v2 [..]]
162
163 The import_dir and tag_dir command line options are directory paths
164 relative to svn_url and tell the script where to load your project
165 and optionally the tags. Both import_dir and tag_dir cannot
166 contain any ..'s and so svn_url must contain both import_dir and
167 tag_dir.
168
169 This script supports importing your directories into subdirectories
170 of the root of the subversion repository.
171
172 Example:
173
174 In the previous step, if you wanted to load a project named orca
175 into the second directory structure, say
176
177 /orca/branches
178 /orca/tags
179 /orca/trunk
180
181 and you didn't care about tags, then you could use as svn_url the
182 URL
183
184 http://svn.orcaware.com:8000/repos/orca
185
186 and use . as import_dir.
187
188 In this case, the script will only check out the orca subdirectory.
189 This is handy if the entire repository is very large and you don't
190 want this script to check the whole repository under /repos out to
191 load files into it.
192
193 The only caveat is that svn_url must exist already in the
194 repository. So in this case, you would have to already have
195 created the orca subdirectory in the repository.
196
1974) Decide on the tags you want on your directories. If you don't want
198 any tags, then ignore this step.
199
200 The script takes a -t command line argument that is a directory
201 path relative to the svn_url that you supply to this script from
202 step 3 above. Again, the URL from step 3 does not need to be the
203 URL of the root of the subversion repository, so you can work in
204 the subdirectory just fine.
205
206 Look at the directories that will be loaded into the repository and
207 come up with a Perl regular expression that matches only the
208 portion of the directory name that identifies each directory. You
209 may need to rename your directories so that they contain a version
210 number you can use to tag them properly.
211
212 The regular expression should be placed into the directory path
213 given to -t surrounded by @'s. Make sure to protect the regular
214 expression from the shell by using quotes.
215
216 You can have multiple sets of regular expressions in the directory
217 path.
218
219 There is no way to escape the @ characters.
220
221 Example:
222
223 For the Orca directories orca-0.18 and orca-0.27b2 I can use the
224 regular expression \d+\.\w+. I want the tags to be located in
225 the tags/orca/VERSION_NUMBER directory. So I would use:
226
227 -t 'tags/orca/@\d+\.\w+@'
228
2295) Back up your Subversion repository in case you are not happy with
230 the results of running the script or the script fails for some
231 reason.
232
233 Example:
234
235 % /opt/i386-linux/apache-2.0/bin/apachectl stop
236 % cd /export/svn
237 % tar cvf repos_backup.tar repos
238 % /opt/i386-linux/apache-2.0/bin/apachectl start
239
2406) Run this script. The first argument is the root of the Subversion
241 package directory where you want to install the directories. The
242 directories are loaded in order that they appear on the command
243 line.
244
245 Example:
246
247 svn_load_dirs.pl http://svn.orcaware.com:8000/repos \
248 trunk/orca -t 'tags/orca/@\d+\.\w+@' orca-0.18 orca-0.27b2
249
250 The output from this script are:
251
252 A Added file or directory.
253 U File's contents have been updated.
254 d File or directory is deleted because an enclosing directory is
255 deleted.
256 D File or directory is deleted.
257
2587) Check the results by either checking out a new tree and or browsing
259 the repository with a browser. If they are not what you want, back
260 out the changes.
261
262 Example:
263
264 These commands back out the changes:
265
266 % /opt/i386-linux/apache-2.0/bin/apachectl stop
267 % cd /export/svn
268 % rm -fr repos
269 % tar xvf repos_backup.tar
270 % /opt/i386-linux/apache-2.0/bin/apachectl start
0271
=== added file 'contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in'
--- contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in 1970-01-01 00:00:00 +0000
+++ contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in 2009-12-12 13:21:15 +0000
@@ -0,0 +1,2049 @@
1#!/usr/bin/perl -w
2
3# Copyright (c) 2002,2003,2004,2005,2006,2007,2009 Dolby. All rights reserved.
4#
5# Licensed under the Academic Free License version 3.0. See LICENSE_AFL3.txt
6# or http://www.opensource.org/licenses/academic.php for a copy of the license
7# text.
8
9# $HeadURL: http://svn.collab.net/repos/svn/branches/1.6.x/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in $
10# $LastChangedDate: 2009-10-12 12:57:16 +0000 (Mon, 12 Oct 2009) $
11# $LastChangedBy: hwright $
12# $LastChangedRevision: 39956 $
13
14$| = 1;
15
16use strict;
17use Carp;
18use Cwd;
19use Digest::MD5 2.20;
20use File::Copy 2.03;
21use File::Find;
22use File::Path 1.0404;
23use File::Temp 0.12 qw(tempdir tempfile);
24use Getopt::Long 2.25;
25use Text::Wrap;
26use URI 1.17;
27use English;
28
29$Text::Wrap::columns = 72;
30
31# Specify the location of the svn command.
32my $svn = '@SVN_BINDIR@/svn';
33
34# Process the command line options.
35
36# The base URL for the portion of the repository to work in. Note
37# that this does not have to be the root of the subversion repository,
38# it can point to a subdirectory in the repository.
39my $repos_base_url;
40
41# The relative path from the repository base URL to work in to the
42# directory to load the input directories into.
43my $repos_load_rel_path;
44
45# To specify where tags, which are simply copies of the imported
46# directory, should be placed relative to the repository base URL, use
47# the -t command line option. This value must contain regular
48# expressions that match portions of the input directory names to
49# create an unique tag for each input directory. The regular
50# expressions are surrounded by a specified character to distinguish
51# the regular expression from the normal directory path.
52my $opt_import_tag_location;
53
54# Do not ask for any user input. Just go ahead and do everything.
55my $opt_no_user_input;
56
57# Do not automatically set the svn:executable property based on the
58# file's exe bit.
59my $opt_no_auto_exe;
60
61# Username to use for commits.
62my $opt_svn_username;
63
64# Password to use for commits.
65my $opt_svn_password;
66
67# Verbosity level.
68my $opt_verbose;
69
70# Path to already checked-out working copy.
71my $opt_existing_wc_dir;
72
73# List of filename patterns to ignore (as in .subversion/config's
74# "global-ignores" option).
75my $opt_glob_ignores;
76
77# This is the character used to separate regular expressions occuring
78# in the tag directory path from the path itself.
79my $REGEX_SEP_CHAR = '@';
80
81# This specifies a configuration file that contains a list of regular
82# expressions to check against a file and the properties to set on
83# matching files.
84my $property_config_filename;
85
86GetOptions('no_user_input' => \$opt_no_user_input,
87 'no_auto_exe' => \$opt_no_auto_exe,
88 'property_cfg_filename=s' => \$property_config_filename,
89 'svn_password=s' => \$opt_svn_password,
90 'svn_username=s' => \$opt_svn_username,
91 'tag_location=s' => \$opt_import_tag_location,
92 'verbose+' => \$opt_verbose,
93 'wc=s' => \$opt_existing_wc_dir,
94 'glob_ignores=s' => \$opt_glob_ignores)
95 or &usage;
96&usage("$0: too few arguments") if @ARGV < 2;
97
98$repos_base_url = shift;
99$repos_load_rel_path = shift;
100
101# Check that the repository base URL and the import directories do not
102# contain any ..'s.
103if ($repos_base_url =~ /\.{2}/)
104 {
105 die "$0: repos base URL $repos_base_url cannot contain ..'s.\n";
106 }
107if ($repos_load_rel_path =~ /\.{2}/)
108 {
109 die "$0: repos import relative directory path $repos_load_rel_path ",
110 "cannot contain ..'s.\n";
111 }
112
113# If there are no directories listed on the command line, then the
114# directories are read from standard input. In this case, the
115# -no_user_input command line option must be specified.
116if (!@ARGV and !$opt_no_user_input)
117 {
118 &usage("$0: must use -no_user_input if no dirs listed on command line.");
119 }
120
121# The tag option cannot be used when directories are read from
122# standard input because tags may collide and no user input can be
123# taken to verify that the input is ok.
124if (!@ARGV and $opt_import_tag_location)
125 {
126 &usage("$0: cannot use -tag_location when dirs are read from stdin.");
127 }
128
129# If the tag directory is set, then the import directory cannot be '.'.
130if (defined $opt_import_tag_location and $repos_load_rel_path eq '.')
131 {
132 &usage("$0: cannot set import_dir to '.' and use -t command line option.");
133 }
134
135# Set the svn command line options that are used anytime svn connects
136# to the repository.
137my @svn_use_repos_cmd_opts;
138&set_svn_use_repos_cmd_opts($opt_svn_username, $opt_svn_password);
139
140# Check that the tag directories do not contain any ..'s. Also, the
141# import and tag directories cannot be absolute.
142if (defined $opt_import_tag_location and $opt_import_tag_location =~ /\.{2}/)
143 {
144 die "$0: repos tag relative directory path $opt_import_tag_location ",
145 "cannot contain ..'s.\n";
146 }
147if ($repos_load_rel_path =~ m|^/|)
148 {
149 die "$0: repos import relative directory path $repos_load_rel_path ",
150 "cannot start with /.\n";
151 }
152if (defined $opt_import_tag_location and $opt_import_tag_location =~ m|^/|)
153 {
154 die "$0: repos tagrelative directory path $opt_import_tag_location ",
155 "cannot start with /.\n";
156 }
157
158if (defined $opt_existing_wc_dir)
159 {
160 unless (-e $opt_existing_wc_dir)
161 {
162 die "$0: working copy '$opt_existing_wc_dir' does not exist.\n";
163 }
164
165 unless (-d _)
166 {
167 die "$0: working copy '$opt_existing_wc_dir' is not a directory.\n";
168 }
169
170 unless (-d "$opt_existing_wc_dir/.svn")
171 {
172 die "$0: working copy '$opt_existing_wc_dir' does not have .svn ",
173 "directory.\n";
174 }
175
176 $opt_existing_wc_dir = Cwd::abs_path($opt_existing_wc_dir)
177 }
178
179# If no glob_ignores specified, try to deduce from config file,
180# or use the default below.
181my $ignores_str =
182 '*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store';
183
184if ( defined $opt_glob_ignores)
185 {
186 $ignores_str = $opt_glob_ignores;
187 }
188elsif ( -f "$ENV{HOME}/.subversion/config" )
189 {
190 open my $conf, "$ENV{HOME}/.subversion/config";
191 while (<$conf>)
192 {
193 if ( /^global-ignores\s*=\s*(.*?)\s*$/ )
194 {
195 $ignores_str = $1;
196 last;
197 }
198 }
199 }
200
201my @glob_ignores = map
202 {
203 s/\./\\\./g; s/\*/\.\*/g; "^$_\$";
204 } split(/\s+/, $ignores_str);
205unshift @glob_ignores, '\.svn$';
206
207# Convert the string URL into a URI object.
208$repos_base_url =~ s|/*$||;
209my $repos_base_uri = URI->new($repos_base_url);
210
211# Check that $repos_load_rel_path is not a directory here implying
212# that a command line option was forgotten.
213if ($repos_load_rel_path ne '.' and -d $repos_load_rel_path)
214 {
215 die "$0: import_dir '$repos_load_rel_path' is a directory.\n";
216 }
217
218# The remaining command line arguments should be directories. Check
219# that they all exist and that there are no duplicates.
220if (@ARGV)
221 {
222 my %dirs;
223 foreach my $dir (@ARGV)
224 {
225 unless (-e $dir)
226 {
227 die "$0: directory '$dir' does not exist.\n";
228 }
229
230 unless (-d _)
231 {
232 die "$0: directory '$dir' is not a directory.\n";
233 }
234
235 if ($dirs{$dir})
236 {
237 die "$0: directory '$dir' is listed more than once on command ",
238 "line.\n";
239 }
240 $dirs{$dir} = 1;
241 }
242 }
243
244# Create the tag locations and print them for the user to review.
245# Check that there are no duplicate tags.
246my %load_tags;
247if (@ARGV and defined $opt_import_tag_location)
248 {
249 my %seen_tags;
250
251 foreach my $load_dir (@ARGV)
252 {
253 my $load_tag = &get_tag_dir($load_dir);
254
255 print "Directory $load_dir will be tagged as $load_tag\n";
256
257 if ($seen_tags{$load_tag})
258 {
259 die "$0: duplicate tag generated.\n";
260 }
261 $seen_tags{$load_tag} = 1;
262
263 $load_tags{$load_dir} = $load_tag;
264 }
265
266 exit 0 unless &get_answer("Please examine identified tags. Are they " .
267 "acceptable? (Y/n) ", 'ny', 1);
268 print "\n";
269 }
270
271# Load the property configuration filename, if one was specified, into
272# an array of hashes, where each hash contains a regular expression
273# and a property to apply to the file if the regular expression
274# matches.
275my @property_settings;
276if (defined $property_config_filename and length $property_config_filename)
277 {
278 open(CFG, $property_config_filename)
279 or die "$0: cannot open '$property_config_filename' for reading: $!\n";
280
281 my $ok = 1;
282
283 while (my $line = <CFG>)
284 {
285 next if $line =~ /^\s*$/;
286 next if $line =~ /^\s*#/;
287
288 # Split the input line into words taking into account that
289 # single or double quotes may define a single word with
290 # whitespace in it. The format for the file is
291 # regex control property_name property_value
292 my @line = &split_line($line);
293 next if @line == 0;
294
295 unless (@line == 2 or @line == 4)
296 {
297 warn "$0: line $. of '$property_config_filename' has to have 2 ",
298 "or 4 columns.\n";
299 $ok = 0;
300 next;
301 }
302 my ($regex, $control, $property_name, $property_value) = @line;
303
304 unless ($control eq 'break' or $control eq 'cont')
305 {
306 warn "$0: line $. of '$property_config_filename' has illegal ",
307 "value for column 3 '$control', must be 'break' or 'cont'.\n";
308 $ok = 0;
309 next;
310 }
311
312 # Compile the regular expression.
313 my $re;
314 eval { $re = qr/$regex/i };
315 if ($@)
316 {
317 warn "$0: line $. of '$property_config_filename' regex '$regex' ",
318 "does not compile:\n$@\n";
319 $ok = 0;
320 next;
321 }
322
323 push(@property_settings, {name => $property_name,
324 value => $property_value,
325 control => $control,
326 re => $re});
327 }
328 close(CFG)
329 or warn "$0: error in closing '$property_config_filename' for ",
330 "reading: $!\n";
331
332 exit 1 unless $ok;
333 }
334
335# Check that the svn base URL works by running svn log on it. Only
336# get the HEAD revision log message; there's no need to waste
337# bandwidth seeing all of the log messages.
338print "Checking that the base URL is a Subversion repository.\n";
339read_from_process($svn, 'log', '-r', 'HEAD',
340 @svn_use_repos_cmd_opts, $repos_base_uri);
341print "\n";
342
343my $orig_cwd = cwd;
344
345# The first step is to determine the root of the svn repository. Do
346# this with the svn log command. Take the svn_url hostname and port
347# as the initial url and append to it successive portions of the final
348# path until svn log succeeds.
349print "Finding the root URL of the Subversion repository.\n";
350my $repos_root_uri;
351my $repos_root_uri_path;
352my $repos_base_path_segment;
353{
354 my $r = $repos_base_uri->clone;
355 my @path_segments = grep { length($_) } $r->path_segments;
356 my @repos_base_path_segments = @path_segments;
357 unshift(@path_segments, '');
358 $r->path('');
359 my @r_path_segments;
360
361 while (@path_segments)
362 {
363 $repos_root_uri_path = shift @path_segments;
364 push(@r_path_segments, $repos_root_uri_path);
365 $r->path_segments(@r_path_segments);
366 if (safe_read_from_pipe($svn, 'log', '-r', 'HEAD',
367 @svn_use_repos_cmd_opts, $r) == 0)
368 {
369 $repos_root_uri = $r;
370 last;
371 }
372 shift @repos_base_path_segments;
373 }
374 $repos_base_path_segment = join('/', @repos_base_path_segments);
375}
376
377if ($repos_root_uri)
378 {
379 print "Determined that the svn root URL is $repos_root_uri.\n\n";
380 }
381else
382 {
383 die "$0: cannot determine root svn URL.\n";
384 }
385
386# Create a temporary directory for svn to work in.
387my $temp_dir = tempdir( "svn_load_dirs_XXXXXXXXXX", TMPDIR => 1 );
388
389# Put in a signal handler to clean up any temporary directories.
390sub catch_signal {
391 my $signal = shift;
392 warn "$0: caught signal $signal. Quitting now.\n";
393 exit 1;
394}
395
396$SIG{HUP} = \&catch_signal;
397$SIG{INT} = \&catch_signal;
398$SIG{TERM} = \&catch_signal;
399$SIG{PIPE} = \&catch_signal;
400
401# Create an object that when DESTROY'ed will delete the temporary
402# directory. The CLEANUP flag to tempdir should do this, but they
403# call rmtree with 1 as the last argument which takes extra security
404# measures that do not clean up the .svn directories.
405my $temp_dir_cleanup = Temp::Delete->new;
406
407# Determine the native end of line style for this system. Do this the
408# most portable way, by writing a file with a single \n in non-binary
409# mode and then reading the file in binary mode.
410my $native_eol = &determine_native_eol;
411
412# Check if all the directories exist to load the directories into the
413# repository. If not, ask if they should be created. For tags, do
414# not create the tag directory itself, that is done on the svn cp.
415{
416 print "Finding if any directories need to be created in repository.\n";
417
418 my @dirs_to_create;
419 my @urls_to_create;
420 my %seen_dir;
421 my @load_tags_without_last_segment;
422
423 # Assume that the last portion of the tag directory contains the
424 # version number and remove it from the directories to create,
425 # because the tag directory will be created by svn cp.
426 foreach my $load_tag (sort values %load_tags)
427 {
428 # Skip this tag if there is only one segment in its name.
429 my $index = rindex($load_tag, '/');
430 next if $index == -1;
431
432 # Trim off the last segment and record the result.
433 push(@load_tags_without_last_segment, substr($load_tag, 0, $index));
434 }
435
436 foreach my $dir ($repos_load_rel_path, @load_tags_without_last_segment)
437 {
438 next unless length $dir;
439 my $d = '';
440 foreach my $segment (split('/', $dir))
441 {
442 $d = length $d ? "$d/$segment" : $segment;
443 my $url = "$repos_base_url/$d";
444 unless ($seen_dir{$d})
445 {
446 $seen_dir{$d} = 1;
447 if (safe_read_from_pipe($svn, 'log', '-r', 'HEAD',
448 @svn_use_repos_cmd_opts, $url) != 0)
449 {
450 push(@dirs_to_create, $d);
451 push(@urls_to_create, $url);
452 }
453 }
454 }
455 }
456
457 if (@dirs_to_create)
458 {
459 print "The following directories do not exist and need to exist:\n";
460 foreach my $dir (@dirs_to_create)
461 {
462 print " $dir\n";
463 }
464 exit 0 unless &get_answer("You must add them now to load the " .
465 "directories. Continue (Y/n)? ", 'ny', 1);
466
467 my $message = "Create directories to load project into.\n\n";
468
469 foreach my $dir (@dirs_to_create)
470 {
471 if (length $repos_base_path_segment)
472 {
473 $message .= "* $repos_base_path_segment/$dir: New directory.\n";
474 }
475 else
476 {
477 $message .= "* $dir: New directory.\n";
478 }
479 }
480 $message = wrap('', ' ', $message);
481
482 read_from_process($svn, 'mkdir', @svn_use_repos_cmd_opts,
483 '-m', $message, @urls_to_create);
484 }
485 else
486 {
487 print "No directories need to be created to prepare repository.\n";
488 }
489}
490
491# Either checkout a new working copy from the repository or use an
492# existing working copy.
493if (defined $opt_existing_wc_dir)
494 {
495 # Update an already existing working copy.
496 print "Not checking out anything; using existing working directory at\n";
497 print "$opt_existing_wc_dir\n";
498
499 chdir($opt_existing_wc_dir)
500 or die "$0: cannot chdir '$opt_existing_wc_dir': $!\n";
501
502 read_from_process($svn, 'update', @svn_use_repos_cmd_opts);
503 }
504else
505 {
506 # Check out the svn repository starting at the svn URL into a
507 # fixed directory name.
508 my $checkout_dir_name = 'my_import_wc';
509
510 # Check out only the directory being imported to, otherwise the
511 # checkout of the entire base URL can be very huge, if it contains
512 # a large number of tags.
513 my $checkout_url;
514 if ($repos_load_rel_path eq '.')
515 {
516 $checkout_url = $repos_base_url;
517 }
518 else
519 {
520 $checkout_url = "$repos_base_url/$repos_load_rel_path";
521 }
522
523 print "Checking out $checkout_url into $temp_dir/$checkout_dir_name\n";
524
525 chdir($temp_dir)
526 or die "$0: cannot chdir '$temp_dir': $!\n";
527
528 read_from_process($svn, 'checkout',
529 @svn_use_repos_cmd_opts,
530 $checkout_url, $checkout_dir_name);
531
532 chdir($checkout_dir_name)
533 or die "$0: cannot chdir '$checkout_dir_name': $!\n";
534 }
535
536# At this point, the current working directory is the top level
537# directory of the working copy. Record the absolute path to this
538# location because the script will chdir back here later on.
539my $wc_import_dir_cwd = cwd;
540
541# Set up the names for the path to the import and tag directories.
542my $repos_load_abs_path;
543if ($repos_load_rel_path eq '.')
544 {
545 $repos_load_abs_path = length($repos_base_path_segment) ?
546 $repos_base_path_segment : "/";
547 }
548else
549 {
550 $repos_load_abs_path = length($repos_base_path_segment) ?
551 "$repos_base_path_segment/$repos_load_rel_path" :
552 $repos_load_rel_path;
553 }
554
555# Now go through each source directory and copy each file from the
556# source directory to the target directory. For new target files, add
557# them to svn. For files that no longer exist, delete them.
558my $print_rename_message = 1;
559my @load_dirs = @ARGV;
560while (defined (my $load_dir = &get_next_load_dir))
561 {
562 my $load_tag = $load_tags{$load_dir};
563
564 if (defined $load_tag)
565 {
566 print "\nLoading $load_dir and will save in tag $load_tag.\n";
567 }
568 else
569 {
570 print "\nLoading $load_dir.\n";
571 }
572
573 # The first hash is keyed by the old name in a rename and the
574 # second by the new name. The last variable contains a list of
575 # old and new filenames in a rename.
576 my %rename_from_files;
577 my %rename_to_files;
578 my @renamed_filenames;
579
580 unless ($opt_no_user_input)
581 {
582 my $repeat_loop;
583 do
584 {
585 $repeat_loop = 0;
586
587 my %add_files;
588 my %del_files;
589
590 # Get the list of files and directories in the repository
591 # working copy. This hash is called %del_files because
592 # each file or directory will be deleted from the hash
593 # using the list of files and directories in the source
594 # directory, leaving the files and directories that need
595 # to be deleted.
596 %del_files = &recursive_ls_and_hash($wc_import_dir_cwd);
597
598 # This anonymous subroutine finds all the files and
599 # directories in the directory to load. It notes the file
600 # type and for each file found, it deletes it from
601 # %del_files.
602 my $wanted = sub
603 {
604 s#^\./##;
605 return if $_ eq '.';
606
607 my $source_path = $_;
608 my $dest_path = "$wc_import_dir_cwd/$_";
609
610 my ($source_type) = &file_info($source_path);
611 my ($dest_type) = &file_info($dest_path);
612
613 # Fail if the destination type exists but is of a
614 # different type of file than the source type.
615 if ($dest_type ne '0' and $source_type ne $dest_type)
616 {
617 die "$0: does not handle changing source and destination ",
618 "type for '$source_path'.\n";
619 }
620
621 if ($source_type ne 'd' and
622 $source_type ne 'f' and
623 $source_type ne 'l')
624 {
625 warn "$0: skipping loading file '$source_path' of type ",
626 "'$source_type'.\n";
627 unless ($opt_no_user_input)
628 {
629 print STDERR "Press return to continue: ";
630 <STDIN>;
631 }
632 return;
633 }
634
635 unless (defined delete $del_files{$source_path})
636 {
637 $add_files{$source_path}{type} = $source_type;
638 }
639 };
640
641 # Now change into the directory containing the files to
642 # load. First change to the original directory where this
643 # script was run so that if the specified directory is a
644 # relative directory path, then the script can change into
645 # it.
646 chdir($orig_cwd)
647 or die "$0: cannot chdir '$orig_cwd': $!\n";
648 chdir($load_dir)
649 or die "$0: cannot chdir '$load_dir': $!\n";
650
651 find({no_chdir => 1,
652 preprocess => sub { sort { $b cmp $a }
653 grep { $_ !~ /^[._]svn$/ } @_ },
654 wanted => $wanted
655 }, '.');
656
657 # At this point %add_files contains the list of new files
658 # and directories to be created in the working copy tree
659 # and %del_files contains the files and directories that
660 # need to be deleted. Because there may be renames that
661 # have taken place, give the user the opportunity to
662 # rename any deleted files and directories to ones being
663 # added.
664 my @add_files = sort keys %add_files;
665 my @del_files = sort keys %del_files;
666
667 # Because the source code management system may keep the
668 # original renamed file or directory in the working copy
669 # until a commit, remove them from the list of deleted
670 # files or directories.
671 &filter_renamed_files(\@del_files, \%rename_from_files);
672
673 # Now change into the working copy directory in case any
674 # renames need to be performed.
675 chdir($wc_import_dir_cwd)
676 or die "$0: cannot chdir '$wc_import_dir_cwd': $!\n";
677
678 # Only do renames if there are both added and deleted
679 # files and directories.
680 if (@add_files and @del_files)
681 {
682 my $max = @add_files > @del_files ? @add_files : @del_files;
683
684 # Print the files that have been added and deleted.
685 # Find the deleted file with the longest name and use
686 # that for the width of the filename column. Add one
687 # to the filename width to let the directory /
688 # character be appended to a directory name.
689 my $line_number_width = 4;
690 my $filename_width = 0;
691 foreach my $f (@del_files)
692 {
693 my $l = length($f);
694 $filename_width = $l if $l > $filename_width;
695 }
696 ++$filename_width;
697 my $printf_format = "%${line_number_width}d";
698
699 if ($print_rename_message)
700 {
701 $print_rename_message = 0;
702 print "\n",
703 "The following table lists files and directories that\n",
704 "exist in either the Subversion repository or the\n",
705 "directory to be imported but not both. You now have\n",
706 "the opportunity to match them up as renames instead\n",
707 "of deletes and adds. This is a Good Thing as it'll\n",
708 "make the repository take less space.\n\n",
709 "The left column lists files and directories that\n",
710 "exist in the Subversion repository and do not exist\n",
711 "in the directory being imported. The right column\n",
712 "lists files and directories that exist in the\n",
713 "directory being imported. Match up a deleted item\n",
714 "from the left column with an added item from the\n",
715 "right column. Note the line numbers on the left\n",
716 "which you type into this script to have a rename\n",
717 "performed.\n";
718 }
719
720 # Sort the added and deleted files and directories by
721 # the lowercase versions of their basenames instead of
722 # their complete path, which makes finding files that
723 # were moved into different directories easier to
724 # match up.
725 @add_files = map { $_->[0] }
726 sort { $a->[1] cmp $b->[1] }
727 map { [$_->[0], lc($_->[1])] }
728 map { [$_, m#([^/]+)$#] }
729 @add_files;
730 @del_files = map { $_->[0] }
731 sort { $a->[1] cmp $b->[1] }
732 map { [$_->[0], lc($_->[1])] }
733 map { [$_, m#([^/]+)$#] }
734 @del_files;
735
736 RELIST:
737
738 for (my $i=0; $i<$max; ++$i)
739 {
740 my $add_filename = '';
741 my $del_filename = '';
742 if ($i < @add_files)
743 {
744 $add_filename = $add_files[$i];
745 if ($add_files{$add_filename}{type} eq 'd')
746 {
747 $add_filename .= '/';
748 }
749 }
750 if ($i < @del_files)
751 {
752 $del_filename = $del_files[$i];
753 if ($del_files{$del_filename}{type} eq 'd')
754 {
755 $del_filename .= '/';
756 }
757 }
758
759 if ($i % 22 == 0)
760 {
761 print
762 "\n",
763 " " x $line_number_width,
764 " ",
765 "Deleted", " " x ($filename_width-length("Deleted")),
766 " ",
767 "Added\n";
768 }
769
770 printf $printf_format, $i;
771 print " ", $del_filename,
772 "_" x ($filename_width - length($del_filename)),
773 " ", $add_filename, "\n";
774
775 if (($i+1) % 22 == 0)
776 {
777 unless (&get_answer("Continue printing (Y/n)? ",
778 'ny', 1))
779 {
780 last;
781 }
782 }
783 }
784
785 # Get the feedback from the user.
786 my $line;
787 my $add_filename;
788 my $add_index;
789 my $del_filename;
790 my $del_index;
791 my $got_line = 0;
792 do {
793 print "Enter two indexes for each column to rename, ",
794 "(R)elist, or (F)inish: ";
795 $line = <STDIN>;
796 $line = '' unless defined $line;
797 if ($line =~ /^R$/i )
798 {
799 goto RELIST;
800 }
801
802 if ($line =~ /^F$/i)
803 {
804 $got_line = 1;
805 }
806 elsif ($line =~ /^(\d+)\s+(\d+)$/)
807 {
808 print "\n";
809
810 $del_index = $1;
811 $add_index = $2;
812 if ($del_index >= @del_files)
813 {
814 print "Delete index $del_index is larger than ",
815 "maximum index of ", scalar @del_files - 1,
816 ".\n";
817 $del_index = undef;
818 }
819 if ($add_index > @add_files)
820 {
821 print "Add index $add_index is larger than maximum ",
822 "index of ", scalar @add_files - 1, ".\n";
823 $add_index = undef;
824 }
825 $got_line = defined $del_index && defined $add_index;
826
827 # Check that the file or directory to be renamed
828 # has the same file type.
829 if ($got_line)
830 {
831 $add_filename = $add_files[$add_index];
832 $del_filename = $del_files[$del_index];
833 if ($add_files{$add_filename}{type} ne
834 $del_files{$del_filename}{type})
835 {
836 print "File types for $del_filename and ",
837 "$add_filename differ.\n";
838 $got_line = undef;
839 }
840 }
841 }
842 } until ($got_line);
843
844 if ($line !~ /^F$/i)
845 {
846 print "Renaming $del_filename to $add_filename.\n";
847
848 $repeat_loop = 1;
849
850 # Because subversion cannot rename the same file
851 # or directory twice, which includes doing a
852 # rename of a file in a directory that was
853 # previously renamed, a commit has to be
854 # performed. Check if the file or directory being
855 # renamed now would cause such a problem and
856 # commit if so.
857 my $do_commit_now = 0;
858 foreach my $rename_to_filename (keys %rename_to_files)
859 {
860 if (contained_in($del_filename,
861 $rename_to_filename,
862 $rename_to_files{$rename_to_filename}{type}))
863 {
864 $do_commit_now = 1;
865 last;
866 }
867 }
868
869 if ($do_commit_now)
870 {
871 print "Now committing previously run renames.\n";
872 &commit_renames($load_dir,
873 \@renamed_filenames,
874 \%rename_from_files,
875 \%rename_to_files);
876 }
877
878 push(@renamed_filenames, $del_filename, $add_filename);
879 {
880 my $d = $del_files{$del_filename};
881 $rename_from_files{$del_filename} = $d;
882 $rename_to_files{$add_filename} = $d;
883 }
884
885 # Check that any required directories to do the
886 # rename exist.
887 my @add_segments = split('/', $add_filename);
888 pop(@add_segments);
889 my $add_dir = '';
890 my @add_dirs;
891 foreach my $segment (@add_segments)
892 {
893 $add_dir = length($add_dir) ? "$add_dir/$segment" :
894 $segment;
895 unless (-d $add_dir)
896 {
897 push(@add_dirs, $add_dir);
898 }
899 }
900
901 if (@add_dirs)
902 {
903 read_from_process($svn, 'mkdir', @add_dirs);
904 }
905
906 read_from_process($svn, 'mv',
907 $del_filename, $add_filename);
908 }
909 }
910 } while ($repeat_loop);
911 }
912
913 # If there are any renames that have not been committed, then do
914 # that now.
915 if (@renamed_filenames)
916 {
917 &commit_renames($load_dir,
918 \@renamed_filenames,
919 \%rename_from_files,
920 \%rename_to_files);
921 }
922
923 # At this point all renames have been performed. Now get the
924 # final list of files and directories in the working copy
925 # directory. The %add_files hash will contain the list of files
926 # and directories to add to the working copy and %del_files starts
927 # with all the files already in the working copy and gets files
928 # removed that are in the imported directory, which results in a
929 # list of files that should be deleted. %upd_files holds the list
930 # of files that have been updated.
931 my %add_files;
932 my %del_files = &recursive_ls_and_hash($wc_import_dir_cwd);
933 my %upd_files;
934
935 # This anonymous subroutine copies files from the source directory
936 # to the working copy directory.
937 my $wanted = sub
938 {
939 s#^\./##;
940 return if $_ eq '.';
941
942 my $source_path = $_;
943 my $dest_path = "$wc_import_dir_cwd/$_";
944
945 my ($source_type, $source_is_exe) = &file_info($source_path);
946 my ($dest_type) = &file_info($dest_path);
947
948 return if ($source_type ne 'd' and
949 $source_type ne 'f' and
950 $source_type ne 'l');
951
952 # Fail if the destination type exists but is of a different
953 # type of file than the source type.
954 if ($dest_type ne '0' and $source_type ne $dest_type)
955 {
956 die "$0: does not handle changing source and destination type ",
957 "for '$source_path'.\n";
958 }
959
960 # Determine if the file is being added or is an update to an
961 # already existing file using the file's digest.
962 my $del_info = delete $del_files{$source_path};
963 if (defined $del_info)
964 {
965 if (defined (my $del_digest = $del_info->{digest}))
966 {
967 my $new_digest = &digest_hash_file($source_path);
968 if ($new_digest ne $del_digest)
969 {
970 print "U $source_path\n";
971 $upd_files{$source_path} = $del_info;
972 }
973 }
974 }
975 else
976 {
977 print "A $source_path\n";
978 $add_files{$source_path}{type} = $source_type;
979
980 # Create an array reference to hold the list of properties
981 # to apply to this object.
982 unless (defined $add_files{$source_path}{properties})
983 {
984 $add_files{$source_path}{properties} = [];
985 }
986
987 # Go through the list of properties for a match on this
988 # file or directory and if there is a match, then apply
989 # the property to it.
990 foreach my $property (@property_settings)
991 {
992 my $re = $property->{re};
993 if ($source_path =~ $re)
994 {
995 my $property_name = $property->{name};
996 my $property_value = $property->{value};
997
998 # The property value may not be set in the
999 # configuration file, since the user may just want
1000 # to set the control flag.
1001 if (defined $property_name and defined $property_value)
1002 {
1003 # Ignore properties that do not apply to
1004 # directories.
1005 if ($source_type eq 'd')
1006 {
1007 if ($property_name eq 'svn:eol-style' or
1008 $property_name eq 'svn:executable' or
1009 $property_name eq 'svn:keywords' or
1010 $property_name eq 'svn:mime-type')
1011 {
1012 next;
1013 }
1014 }
1015
1016 # Ignore properties that do not apply to
1017 # files.
1018 if ($source_type eq 'f')
1019 {
1020 if ($property_name eq 'svn:externals' or
1021 $property_name eq 'svn:ignore')
1022 {
1023 next;
1024 }
1025 }
1026
1027 print "Adding to '$source_path' property ",
1028 "'$property_name' with value ",
1029 "'$property_value'.\n";
1030
1031 push(@{$add_files{$source_path}{properties}},
1032 $property);
1033 }
1034
1035 last if $property->{control} eq 'break';
1036 }
1037 }
1038 }
1039
1040 # Add svn:executable to files that have their executable bit
1041 # set.
1042 if ($source_is_exe and !$opt_no_auto_exe)
1043 {
1044 print "Adding to '$source_path' property 'svn:executable' with ",
1045 "value '*'.\n";
1046 my $property = {name => 'svn:executable', value => '*'};
1047 push (@{$add_files{$source_path}{properties}},
1048 $property);
1049 }
1050
1051 # Now make sure the file or directory in the source directory
1052 # exists in the repository.
1053 if ($source_type eq 'd')
1054 {
1055 if ($dest_type eq '0')
1056 {
1057 mkdir($dest_path)
1058 or die "$0: cannot mkdir '$dest_path': $!\n";
1059 }
1060 }
1061 elsif
1062 ($source_type eq 'l') {
1063 my $link_target = readlink($source_path)
1064 or die "$0: cannot readlink '$source_path': $!\n";
1065 if ($dest_type eq 'l')
1066 {
1067 my $old_target = readlink($dest_path)
1068 or die "$0: cannot readlink '$dest_path': $!\n";
1069 return if ($old_target eq $link_target);
1070 unlink($dest_path)
1071 or die "$0: unlink '$dest_path' failed: $!\n";
1072 }
1073 symlink($link_target, $dest_path)
1074 or die "$0: cannot symlink '$dest_path' to '$link_target': $!\n";
1075 }
1076 elsif
1077 ($source_type eq 'f') {
1078 # Only copy the file if the digests do not match.
1079 if ($add_files{$source_path} or $upd_files{$source_path})
1080 {
1081 copy($source_path, $dest_path)
1082 or die "$0: copy '$source_path' to '$dest_path': $!\n";
1083 }
1084 }
1085 else
1086 {
1087 die "$0: does not handle copying files of type '$source_type'.\n";
1088 }
1089 };
1090
1091 # Now change into the directory containing the files to load.
1092 # First change to the original directory where this script was run
1093 # so that if the specified directory is a relative directory path,
1094 # then the script can change into it.
1095 chdir($orig_cwd)
1096 or die "$0: cannot chdir '$orig_cwd': $!\n";
1097 chdir($load_dir)
1098 or die "$0: cannot chdir '$load_dir': $!\n";
1099
1100 find({no_chdir => 1,
1101 preprocess => sub { sort { $b cmp $a }
1102 grep { $_ !~ /^[._]svn$/ } @_ },
1103 wanted => $wanted
1104 }, '.');
1105
1106 # The files and directories that are in %del_files are the files
1107 # and directories that need to be deleted. Because svn will
1108 # return an error if a file or directory is deleted in a directory
1109 # that subsequently is deleted, first find all directories and
1110 # remove from the list any files and directories inside those
1111 # directories from this list. Work through the list repeatedly
1112 # working from short to long names so that directories containing
1113 # other files and directories will be deleted first.
1114 my $repeat_loop;
1115 do
1116 {
1117 $repeat_loop = 0;
1118 my @del_files = sort {length($a) <=> length($b) || $a cmp $b}
1119 keys %del_files;
1120 &filter_renamed_files(\@del_files, \%rename_from_files);
1121 foreach my $file (@del_files)
1122 {
1123 if ($del_files{$file}{type} eq 'd')
1124 {
1125 my $dir = "$file/";
1126 my $dir_length = length($dir);
1127 foreach my $f (@del_files)
1128 {
1129 next if $file eq $f;
1130 if (length($f) >= $dir_length and
1131 substr($f, 0, $dir_length) eq $dir)
1132 {
1133 print "d $f\n";
1134 delete $del_files{$f};
1135 $repeat_loop = 1;
1136 }
1137 }
1138
1139 # If there were any deletions of files and/or
1140 # directories inside a directory that will be deleted,
1141 # then restart the entire loop again, because one or
1142 # more keys have been deleted from %del_files.
1143 # Equally important is not to stop this loop if no
1144 # deletions have been done, otherwise later
1145 # directories that may contain files and directories
1146 # to be deleted will not be deleted.
1147 last if $repeat_loop;
1148 }
1149 }
1150 } while ($repeat_loop);
1151
1152 # What is left are files that are not in any directories to be
1153 # deleted and directories to be deleted. To delete the files,
1154 # deeper files and directories must be deleted first. Because we
1155 # have a hash keyed by remaining files and directories to be
1156 # deleted, instead of trying to figure out which directories and
1157 # files are contained in other directories, just reverse sort by
1158 # the path length and then alphabetically.
1159 my @del_files = sort {length($b) <=> length($a) || $a cmp $b }
1160 keys %del_files;
1161 &filter_renamed_files(\@del_files, \%rename_from_files);
1162 foreach my $file (@del_files)
1163 {
1164 print "D $file\n";
1165 }
1166
1167 # Now change back to the trunk directory and run the svn commands.
1168 chdir($wc_import_dir_cwd)
1169 or die "$0: cannot chdir '$wc_import_dir_cwd': $!\n";
1170
1171 # If any of the added files have the svn:eol-style property set,
1172 # then pass -b to diff, otherwise diff may fail because the end of
1173 # lines have changed and the source file and file in the
1174 # repository will not be identical.
1175 my @diff_ignore_space_changes;
1176
1177 if (keys %add_files)
1178 {
1179 my @add_files = sort {length($a) <=> length($b) || $a cmp $b}
1180 keys %add_files;
1181 my $target_filename = &make_targets_file(@add_files);
1182 read_from_process($svn, 'add', '-N', '--targets', $target_filename);
1183 unlink($target_filename);
1184
1185 # Add properties on the added files.
1186 foreach my $add_file (@add_files)
1187 {
1188 foreach my $property (@{$add_files{$add_file}{properties}})
1189 {
1190 my $property_name = $property->{name};
1191 my $property_value = $property->{value};
1192
1193 if ($property_name eq 'svn:eol-style')
1194 {
1195 @diff_ignore_space_changes = ('-b');
1196 }
1197
1198 # Write the value to a temporary file in case it's multi-line
1199 my ($handle, $tmpfile) = tempfile(DIR => $temp_dir);
1200 print $handle $property_value;
1201 close($handle);
1202
1203 read_from_process($svn,
1204 'propset',
1205 $property_name,
1206 '--file',
1207 $tmpfile,
1208 $add_file);
1209 }
1210 }
1211 }
1212 if (@del_files)
1213 {
1214 my $target_filename = &make_targets_file(@del_files);
1215 read_from_process($svn, 'rm', '--targets', $target_filename);
1216 unlink($target_filename);
1217 }
1218
1219 # Go through the list of updated files and check the svn:eol-style
1220 # property. If it is set to native, then convert all CR, CRLF and
1221 # LF's in the file to the native end of line characters. Also,
1222 # modify diff's command line so that it will ignore the change in
1223 # end of line style.
1224 if (keys %upd_files)
1225 {
1226 my @upd_files = sort {length($a) <=> length($b) || $a cmp $b}
1227 keys %upd_files;
1228 foreach my $upd_file (@upd_files)
1229 {
1230 # Always append @BASE to a filename in case they contain a
1231 # @ character, in which case the Subversion command line
1232 # client will attempt to parse the characters after the @
1233 # as a revision and most likely fail, or if the characters
1234 # after the @ are a valid revision, then it'll possibly
1235 # get the incorrect information. So always append @BASE
1236 # and any preceding @'s will be treated normally and the
1237 # correct information will be retrieved.
1238 my @command = ($svn,
1239 'propget',
1240 'svn:eol-style',
1241 "$upd_file\@BASE");
1242 my @lines = read_from_process(@command);
1243 next unless @lines;
1244 if (@lines > 1)
1245 {
1246 warn "$0: '@command' returned more than one line of output: ",
1247 "'@lines'.\n";
1248 next;
1249 }
1250
1251 my $eol_style = $lines[0];
1252 if ($eol_style eq 'native')
1253 {
1254 @diff_ignore_space_changes = ('-b');
1255 if (&convert_file_to_native_eol($upd_file))
1256 {
1257 print "Native eol-style conversion modified $upd_file.\n";
1258 }
1259 }
1260 }
1261 }
1262
1263 my $message = wrap('', '', "Load $load_dir into $repos_load_abs_path.\n");
1264 read_from_process($svn, 'commit',
1265 @svn_use_repos_cmd_opts,
1266 '-m', $message);
1267
1268 # If an update is not run now after a commit, then some file and
1269 # directory paths will have an older revisions associated with
1270 # them and any future commits will fail because they are out of
1271 # date.
1272 read_from_process($svn, 'update', @svn_use_repos_cmd_opts);
1273
1274 # Now remove any files and directories to be deleted in the
1275 # repository.
1276 if (@del_files)
1277 {
1278 rmtree(\@del_files, 1, 0);
1279 }
1280
1281 # Now make the tag by doing a copy in the svn repository itself.
1282 if (defined $load_tag)
1283 {
1284 my $repos_tag_abs_path = length($repos_base_path_segment) ?
1285 "$repos_base_path_segment/$load_tag" :
1286 $load_tag;
1287
1288 my $from_url = $repos_load_rel_path eq '.' ?
1289 $repos_load_rel_path :
1290 "$repos_base_url/$repos_load_rel_path";
1291 my $to_url = "$repos_base_url/$load_tag";
1292
1293 $message = wrap("",
1294 "",
1295 "Tag $repos_load_abs_path as " .
1296 "$repos_tag_abs_path.\n");
1297 read_from_process($svn, 'cp', @svn_use_repos_cmd_opts,
1298 '-m', $message, $from_url, $to_url);
1299
1300 # Now check out the tag and run a recursive diff between the
1301 # original source directory and the tag for a consistency
1302 # check.
1303 my $checkout_dir_name = "my_tag_wc_named_$load_tag";
1304 print "Checking out $to_url into $temp_dir/$checkout_dir_name\n";
1305
1306 chdir($temp_dir)
1307 or die "$0: cannot chdir '$temp_dir': $!\n";
1308
1309 read_from_process($svn, 'checkout',
1310 @svn_use_repos_cmd_opts,
1311 $to_url, $checkout_dir_name);
1312
1313 chdir($checkout_dir_name)
1314 or die "$0: cannot chdir '$checkout_dir_name': $!\n";
1315
1316 chdir($orig_cwd)
1317 or die "$0: cannot chdir '$orig_cwd': $!\n";
1318 read_from_process('diff', '-u', @diff_ignore_space_changes,
1319 '-x', '.svn',
1320 '-r', $load_dir, "$temp_dir/$checkout_dir_name");
1321 }
1322 }
1323
1324exit 0;
1325
1326sub usage
1327{
1328 warn "@_\n" if @_;
1329 die "usage: $0 [options] svn_url svn_import_dir [dir_v1 [dir_v2 [..]]]\n",
1330 " svn_url is the file:// or http:// URL of the svn repository\n",
1331 " svn_import_dir is the path relative to svn_url where to load dirs\n",
1332 " dir_v1 .. list dirs to import otherwise read from stdin\n",
1333 "options are\n",
1334 " -no_user_input don't ask yes/no questions and assume yes answer\n",
1335 " -no_auto_exe don't set svn:executable for executable files\n",
1336 " -p filename table listing properties to apply to matching files\n",
1337 " -svn_username username to perform commits as\n",
1338 " -svn_password password to supply to svn commit\n",
1339 " -t tag_dir create a tag copy in tag_dir, relative to svn_url\n",
1340 " -v increase program verbosity, multiple -v's allowed\n",
1341 " -wc path use the already checked-out working copy at path\n",
1342 " instead of checkout out a fresh working copy\n",
1343 " -glob_ignores List of filename patterns to ignore (as in svn's\n",
1344 " global-ignores config option)\n";
1345}
1346
1347# Get the next directory to load, either from the command line or from
1348# standard input.
1349my $get_next_load_dir_init = 0;
1350my @get_next_load_dirs;
1351sub get_next_load_dir
1352{
1353 if (@ARGV)
1354 {
1355 unless ($get_next_load_dir_init)
1356 {
1357 $get_next_load_dir_init = 1;
1358 @get_next_load_dirs = @ARGV;
1359 }
1360 return shift @get_next_load_dirs;
1361 }
1362
1363 if ($opt_verbose)
1364 {
1365 print "Waiting for next directory to import on standard input:\n";
1366 }
1367 my $line = <STDIN>;
1368
1369 print "\n" if $opt_verbose;
1370
1371 chomp $line;
1372 if ($line =~ m|(\S+)\s+(\S+)|)
1373 {
1374 $line = $1;
1375 set_svn_use_repos_cmd_opts($2, $opt_svn_password);
1376 }
1377 $line;
1378}
1379
1380# This constant stores the commonly used string to indicate that a
1381# subroutine has been passed an incorrect number of arguments.
1382use vars qw($INCORRECT_NUMBER_OF_ARGS);
1383$INCORRECT_NUMBER_OF_ARGS = "passed incorrect number of arguments.\n";
1384
1385# Creates a temporary file in the temporary directory and stores the
1386# arguments in it for use by the svn --targets command line option.
1387# If any part of the file creation failed, exit the program, as
1388# there's no workaround. Use a unique number as a counter to the
1389# files.
1390my $make_targets_file_counter;
1391sub make_targets_file
1392{
1393 unless (@_)
1394 {
1395 confess "$0: make_targets_file $INCORRECT_NUMBER_OF_ARGS";
1396 }
1397
1398 $make_targets_file_counter = 1 unless defined $make_targets_file_counter;
1399
1400 my $filename = sprintf "%s/targets.%05d",
1401 $temp_dir,
1402 $make_targets_file_counter;
1403 ++$make_targets_file_counter;
1404
1405 open(TARGETS, ">$filename")
1406 or die "$0: cannot open '$filename' for writing: $!\n";
1407
1408 foreach my $file (@_)
1409 {
1410 print TARGETS "$file\n";
1411 }
1412
1413 close(TARGETS)
1414 or die "$0: error in closing '$filename' for writing: $!\n";
1415
1416 $filename;
1417}
1418
1419# Set the svn command line options that are used anytime svn connects
1420# to the repository.
1421sub set_svn_use_repos_cmd_opts
1422{
1423 unless (@_ == 2)
1424 {
1425 confess "$0: set_svn_use_repos_cmd_opts $INCORRECT_NUMBER_OF_ARGS";
1426 }
1427
1428 my $username = shift;
1429 my $password = shift;
1430
1431 @svn_use_repos_cmd_opts = ('--non-interactive');
1432 if (defined $username and length $username)
1433 {
1434 push(@svn_use_repos_cmd_opts, '--username', $username);
1435 }
1436 if (defined $password)
1437 {
1438 push(@svn_use_repos_cmd_opts, '--password', $password);
1439 }
1440}
1441
1442sub get_tag_dir
1443{
1444 unless (@_ == 1)
1445 {
1446 confess "$0: get_tag_dir $INCORRECT_NUMBER_OF_ARGS";
1447 }
1448
1449 my $load_dir = shift;
1450
1451 # Take the tag relative directory, search for pairs of
1452 # REGEX_SEP_CHAR's and use the regular expression inside the pair to
1453 # put in the tag directory name.
1454 my $tag_location = $opt_import_tag_location;
1455 my $load_tag = '';
1456 while ((my $i = index($tag_location, $REGEX_SEP_CHAR)) >= 0)
1457 {
1458 $load_tag .= substr($tag_location, 0, $i, '');
1459 substr($tag_location, 0, 1, '');
1460 my $j = index($tag_location, $REGEX_SEP_CHAR);
1461 if ($j < 0)
1462 {
1463 die "$0: -t value '$opt_import_tag_location' does not have ",
1464 "matching $REGEX_SEP_CHAR.\n";
1465 }
1466 my $regex = substr($tag_location, 0, $j, '');
1467 $regex = "($regex)" unless ($regex =~ /\(.+\)/);
1468 substr($tag_location, 0, 1, '');
1469 my @results = $load_dir =~ m/$regex/;
1470 $load_tag .= join('', @results);
1471 }
1472 $load_tag .= $tag_location;
1473
1474 $load_tag;
1475}
1476
1477# Return a two element array. The first element is a single character
1478# that represents the type of object the path points to. The second
1479# is a boolean (1 for true, '' for false) if the path points to a file
1480# and if the file is executable.
1481sub file_info
1482{
1483 lstat(shift) or return ('0', '');
1484 -b _ and return ('b', '');
1485 -c _ and return ('c', '');
1486 -d _ and return ('d', '');
1487 -f _ and return ('f', -x _);
1488 -l _ and return ('l', '');
1489 -p _ and return ('p', '');
1490 -S _ and return ('S', '');
1491 return '?';
1492}
1493
1494# Start a child process safely without using /bin/sh.
1495sub safe_read_from_pipe
1496{
1497 unless (@_)
1498 {
1499 croak "$0: safe_read_from_pipe $INCORRECT_NUMBER_OF_ARGS";
1500 }
1501
1502 my $openfork_available = "MSWin32" ne $OSNAME;
1503 if ($openfork_available)
1504 {
1505 print "Running @_\n";
1506 my $pid = open(SAFE_READ, "-|");
1507 unless (defined $pid)
1508 {
1509 die "$0: cannot fork: $!\n";
1510 }
1511 unless ($pid)
1512 {
1513 # child
1514 open(STDERR, ">&STDOUT")
1515 or die "$0: cannot dup STDOUT: $!\n";
1516 exec(@_)
1517 or die "$0: cannot exec '@_': $!\n";
1518 }
1519 }
1520 else
1521 {
1522 # Redirect the comment into a temp file and use that to work around
1523 # Windoze's (non-)handling of multi-line commands.
1524 my @commandline = ();
1525 my $command;
1526 my $comment;
1527
1528 while ($command = shift)
1529 {
1530 if ("-m" eq $command)
1531 {
1532 my $comment = shift;
1533 my ($handle, $tmpfile) = tempfile(DIR => $temp_dir);
1534 print $handle $comment;
1535 close($handle);
1536
1537 push(@commandline, "--file");
1538 push(@commandline, $tmpfile);
1539 }
1540 else
1541 {
1542 # Munge the command to protect it from the command line
1543 $command =~ s/\"/\\\"/g;
1544 if ($command =~ m"\s") { $command = "\"$command\""; }
1545 if ($command eq "") { $command = "\"\""; }
1546 if ($command =~ m"\n")
1547 {
1548 warn "$0: carriage return detected in command - may not work\n";
1549 }
1550 push(@commandline, $command);
1551 }
1552 }
1553
1554 print "Running @commandline\n";
1555 if ( $comment ) { print $comment; }
1556
1557 # Now do the pipe.
1558 open(SAFE_READ, "@commandline |")
1559 or die "$0: cannot pipe to command: $!\n";
1560 }
1561
1562 # parent
1563 my @output;
1564 while (<SAFE_READ>)
1565 {
1566 chomp;
1567 push(@output, $_);
1568 }
1569 close(SAFE_READ);
1570 my $result = $?;
1571 my $exit = $result >> 8;
1572 my $signal = $result & 127;
1573 my $cd = $result & 128 ? "with core dump" : "";
1574 if ($signal or $cd)
1575 {
1576 warn "$0: pipe from '@_' failed $cd: exit=$exit signal=$signal\n";
1577 }
1578 if (wantarray)
1579 {
1580 return ($result, @output);
1581 }
1582 else
1583 {
1584 return $result;
1585 }
1586}
1587
1588# Use safe_read_from_pipe to start a child process safely and exit the
1589# script if the child failed for whatever reason.
1590sub read_from_process
1591{
1592 unless (@_)
1593 {
1594 croak "$0: read_from_process $INCORRECT_NUMBER_OF_ARGS";
1595 }
1596 my ($status, @output) = &safe_read_from_pipe(@_);
1597 if ($status)
1598 {
1599 print STDERR "$0: @_ failed with this output:\n", join("\n", @output),
1600 "\n";
1601 unless ($opt_no_user_input)
1602 {
1603 print STDERR
1604 "Press return to quit and clean up svn working directory: ";
1605 <STDIN>;
1606 }
1607 exit 1;
1608 }
1609 else
1610 {
1611 return @output;
1612 }
1613}
1614
1615# Get a list of all the files and directories in the specified
1616# directory, the type of file and a digest hash of file types.
1617sub recursive_ls_and_hash
1618{
1619 unless (@_ == 1)
1620 {
1621 croak "$0: recursive_ls_and_hash $INCORRECT_NUMBER_OF_ARGS";
1622 }
1623
1624 # This is the directory to change into.
1625 my $dir = shift;
1626
1627 # Get the current directory so that the script can change into the
1628 # current working directory after changing into the specified
1629 # directory.
1630 my $return_cwd = cwd;
1631
1632 chdir($dir)
1633 or die "$0: cannot chdir '$dir': $!\n";
1634
1635 my %files;
1636
1637 my $wanted = sub
1638 {
1639 s#^\./##;
1640 return if $_ eq '.';
1641 my ($file_type) = &file_info($_);
1642 my $file_digest;
1643 if ($file_type eq 'f' or ($file_type eq 'l' and stat($_) and -f _))
1644 {
1645 $file_digest = &digest_hash_file($_);
1646 }
1647 $files{$_} = {type => $file_type,
1648 digest => $file_digest};
1649 };
1650 find({no_chdir => 1,
1651 preprocess => sub
1652 {
1653 grep
1654 {
1655 my $ok=1;
1656 foreach my $x (@glob_ignores)
1657 {
1658 if ( $_ =~ /$x/ ) {$ok=0;last;}
1659 }
1660 $ok
1661 } @_
1662 },
1663 wanted => $wanted
1664 }, '.');
1665
1666 chdir($return_cwd)
1667 or die "$0: cannot chdir '$return_cwd': $!\n";
1668
1669 %files;
1670}
1671
1672# Given a list of files and directories which have been renamed but
1673# not commtited, commit them with a proper log message.
1674sub commit_renames
1675{
1676 unless (@_ == 4)
1677 {
1678 croak "$0: commit_renames $INCORRECT_NUMBER_OF_ARGS";
1679 }
1680
1681 my $load_dir = shift;
1682 my $renamed_filenames = shift;
1683 my $rename_from_files = shift;
1684 my $rename_to_files = shift;
1685
1686 my $number_renames = @$renamed_filenames/2;
1687
1688 my $message = "To prepare to load $load_dir into $repos_load_abs_path, " .
1689 "perform $number_renames rename" .
1690 ($number_renames > 1 ? "s" : "") . ".\n";
1691
1692 # Text::Wrap::wrap appears to replace multiple consecutive \n's with
1693 # one \n, so wrap the text and then append the second \n.
1694 $message = wrap("", "", $message) . "\n";
1695 while (@$renamed_filenames)
1696 {
1697 my $from = "$repos_load_abs_path/" . shift @$renamed_filenames;
1698 my $to = "$repos_load_abs_path/" . shift @$renamed_filenames;
1699 $message .= wrap("", " ", "* $to: Renamed from $from.\n");
1700 }
1701
1702 # Change to the top of the working copy so that any
1703 # directories will also be updated.
1704 my $cwd = cwd;
1705 chdir($wc_import_dir_cwd)
1706 or die "$0: cannot chdir '$wc_import_dir_cwd': $!\n";
1707 read_from_process($svn, 'commit', @svn_use_repos_cmd_opts, '-m', $message);
1708 read_from_process($svn, 'update', @svn_use_repos_cmd_opts);
1709 chdir($cwd)
1710 or die "$0: cannot chdir '$cwd': $!\n";
1711
1712 # Some versions of subversion have a bug where renamed files
1713 # or directories are not deleted after a commit, so do that
1714 # here.
1715 my @del_files = sort {length($b) <=> length($a) || $a cmp $b }
1716 keys %$rename_from_files;
1717 rmtree(\@del_files, 1, 0);
1718
1719 # Empty the list of old and new renamed names.
1720 undef %$rename_from_files;
1721 undef %$rename_to_files;
1722}
1723
1724# Take a one file or directory and see if its name is equal to a
1725# second or is contained in the second if the second file's file type
1726# is a directory.
1727sub contained_in
1728{
1729 unless (@_ == 3)
1730 {
1731 croak "$0: contain_in $INCORRECT_NUMBER_OF_ARGS";
1732 }
1733
1734 my $contained = shift;
1735 my $container = shift;
1736 my $container_type = shift;
1737
1738 if ($container eq $contained)
1739 {
1740 return 1;
1741 }
1742
1743 if ($container_type eq 'd')
1744 {
1745 my $dirname = "$container/";
1746 my $dirname_length = length($dirname);
1747
1748 if ($dirname_length <= length($contained) and
1749 $dirname eq substr($contained, 0, $dirname_length))
1750 {
1751 return 1;
1752 }
1753 }
1754
1755 return 0;
1756}
1757
1758# Take an array reference containing a list of files and directories
1759# and take a hash reference and remove from the array reference any
1760# files and directories and the files the directory contains listed in
1761# the hash.
1762sub filter_renamed_files
1763{
1764 unless (@_ == 2)
1765 {
1766 croak "$0: filter_renamed_files $INCORRECT_NUMBER_OF_ARGS";
1767 }
1768
1769 my $array_ref = shift;
1770 my $hash_ref = shift;
1771
1772 foreach my $remove_filename (keys %$hash_ref)
1773 {
1774 my $remove_file_type = $hash_ref->{$remove_filename}{type};
1775 for (my $i=0; $i<@$array_ref;)
1776 {
1777 if (contained_in($array_ref->[$i],
1778 $remove_filename,
1779 $remove_file_type))
1780 {
1781 splice(@$array_ref, $i, 1);
1782 next;
1783 }
1784 ++$i;
1785 }
1786 }
1787}
1788
1789# Get a digest hash of the specified filename.
1790sub digest_hash_file
1791{
1792 unless (@_ == 1)
1793 {
1794 croak "$0: digest_hash_file $INCORRECT_NUMBER_OF_ARGS";
1795 }
1796
1797 my $filename = shift;
1798
1799 my $ctx = Digest::MD5->new;
1800 if (open(READ, $filename))
1801 {
1802 binmode READ;
1803 $ctx->addfile(*READ);
1804 close(READ);
1805 }
1806 else
1807 {
1808 die "$0: cannot open '$filename' for reading: $!\n";
1809 }
1810 $ctx->digest;
1811}
1812
1813# Read standard input until a line contains the required input or an
1814# empty line to signify the default answer.
1815sub get_answer
1816{
1817 unless (@_ == 3)
1818 {
1819 croak "$0: get_answer $INCORRECT_NUMBER_OF_ARGS";
1820 }
1821
1822 my $message = shift;
1823 my $answers = shift;
1824 my $def_ans = shift;
1825
1826 return $def_ans if $opt_no_user_input;
1827
1828 my $char;
1829 do
1830 {
1831 print $message;
1832 $char = '';
1833 my $line = <STDIN>;
1834 if (defined $line and length $line)
1835 {
1836 $char = substr($line, 0, 1);
1837 $char = '' if $char eq "\n";
1838 }
1839 } until $char eq '' or $answers =~ /$char/ig;
1840
1841 return $def_ans if $char eq '';
1842 return pos($answers) - 1;
1843}
1844
1845# Determine the native end of line on this system by writing a \n in
1846# non-binary mode to an empty file and reading the same file back in
1847# binary mode.
1848sub determine_native_eol
1849{
1850 my $filename = "$temp_dir/svn_load_dirs_eol_test.$$";
1851 if (-e $filename)
1852 {
1853 unlink($filename)
1854 or die "$0: cannot unlink '$filename': $!\n";
1855 }
1856
1857 # Write the \n in non-binary mode.
1858 open(NL_TEST, ">$filename")
1859 or die "$0: cannot open '$filename' for writing: $!\n";
1860 print NL_TEST "\n";
1861 close(NL_TEST)
1862 or die "$0: error in closing '$filename' for writing: $!\n";
1863
1864 # Read the \n in binary mode.
1865 open(NL_TEST, $filename)
1866 or die "$0: cannot open '$filename' for reading: $!\n";
1867 binmode NL_TEST;
1868 local $/;
1869 undef $/;
1870 my $eol = <NL_TEST>;
1871 close(NL_TEST)
1872 or die "$0: cannot close '$filename' for reading: $!\n";
1873 unlink($filename)
1874 or die "$0: cannot unlink '$filename': $!\n";
1875
1876 my $eol_length = length($eol);
1877 unless ($eol_length)
1878 {
1879 die "$0: native eol length on this system is 0.\n";
1880 }
1881
1882 print "Native EOL on this system is ";
1883 for (my $i=0; $i<$eol_length; ++$i)
1884 {
1885 printf "\\%03o", ord(substr($eol, $i, 1));
1886 }
1887 print ".\n\n";
1888
1889 $eol;
1890}
1891
1892# Take a filename, open the file and replace all CR, CRLF and LF's
1893# with the native end of line style for this system.
1894sub convert_file_to_native_eol
1895{
1896 unless (@_ == 1)
1897 {
1898 croak "$0: convert_file_to_native_eol $INCORRECT_NUMBER_OF_ARGS";
1899 }
1900
1901 my $filename = shift;
1902 open(FILE, $filename)
1903 or die "$0: cannot open '$filename' for reading: $!\n";
1904 binmode FILE;
1905 local $/;
1906 undef $/;
1907 my $in = <FILE>;
1908 close(FILE)
1909 or die "$0: error in closing '$filename' for reading: $!\n";
1910 my $out = '';
1911
1912 # Go through the file and transform it byte by byte.
1913 my $i = 0;
1914 while ($i < length($in))
1915 {
1916 my $cc = substr($in, $i, 2);
1917 if ($cc eq "\015\012")
1918 {
1919 $out .= $native_eol;
1920 $i += 2;
1921 next;
1922 }
1923
1924 my $c = substr($cc, 0, 1);
1925 if ($c eq "\012" or $c eq "\015")
1926 {
1927 $out .= $native_eol;
1928 }
1929 else
1930 {
1931 $out .= $c;
1932 }
1933 ++$i;
1934 }
1935
1936 return 0 if $in eq $out;
1937
1938 my $tmp_filename = ".svn/tmp/svn_load_dirs.$$";
1939 open(FILE, ">$tmp_filename")
1940 or die "$0: cannot open '$tmp_filename' for writing: $!\n";
1941 binmode FILE;
1942 print FILE $out;
1943 close(FILE)
1944 or die "$0: cannot close '$tmp_filename' for writing: $!\n";
1945 rename($tmp_filename, $filename)
1946 or die "$0: cannot rename '$tmp_filename' to '$filename': $!\n";
1947
1948 return 1;
1949}
1950
1951# Split the input line into words taking into account that single or
1952# double quotes may define a single word with whitespace in it.
1953sub split_line
1954{
1955 unless (@_ == 1)
1956 {
1957 croak "$0: split_line $INCORRECT_NUMBER_OF_ARGS";
1958 }
1959
1960 my $line = shift;
1961
1962 # Strip leading whitespace. Do not strip trailing whitespace which
1963 # may be part of quoted text that was never closed.
1964 $line =~ s/^\s+//;
1965
1966 my $line_length = length $line;
1967 my @words = ();
1968 my $current_word = '';
1969 my $in_quote = '';
1970 my $in_protect = '';
1971 my $in_space = '';
1972 my $i = 0;
1973
1974 while ($i < $line_length)
1975 {
1976 my $c = substr($line, $i, 1);
1977 ++$i;
1978
1979 if ($in_protect)
1980 {
1981 if ($c eq $in_quote)
1982 {
1983 $current_word .= $c;
1984 }
1985 elsif ($c eq '"' or $c eq "'")
1986 {
1987 $current_word .= $c;
1988 }
1989 else
1990 {
1991 $current_word .= "$in_protect$c";
1992 }
1993 $in_protect = '';
1994 }
1995 elsif ($c eq '\\')
1996 {
1997 $in_protect = $c;
1998 }
1999 elsif ($in_quote)
2000 {
2001 if ($c eq $in_quote)
2002 {
2003 $in_quote = '';
2004 }
2005 else
2006 {
2007 $current_word .= $c;
2008 }
2009 }
2010 elsif ($c eq '"' or $c eq "'")
2011 {
2012 $in_quote = $c;
2013 }
2014 elsif ($c =~ m/^\s$/)
2015 {
2016 unless ($in_space)
2017 {
2018 push(@words, $current_word);
2019 $current_word = '';
2020 }
2021 }
2022 else
2023 {
2024 $current_word .= $c;
2025 }
2026
2027 $in_space = $c =~ m/^\s$/;
2028 }
2029
2030 # Handle any leftovers.
2031 $current_word .= $in_protect if $in_protect;
2032 push(@words, $current_word) if length $current_word;
2033
2034 @words;
2035}
2036
2037# This package exists just to delete the temporary directory.
2038package Temp::Delete;
2039
2040sub new
2041{
2042 bless {}, shift;
2043}
2044
2045sub DESTROY
2046{
2047 print "Cleaning up $temp_dir\n";
2048 File::Path::rmtree([$temp_dir], 0, 0);
2049}
02050
=== added file 'contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example'
--- contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example 1970-01-01 00:00:00 +0000
+++ contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example 2009-12-12 13:21:15 +0000
@@ -0,0 +1,29 @@
1# This is sample table for svn_load_dirs.pl -p command line option.
2\.(ai|eps|ps)$ break svn:mime-type application/postscript
3\.bz2$ break svn:mime-type application/x-bzip2
4\.css$ break svn:mime-type text/css
5\.doc$ break svn:mime-type application/msword
6\.ds(p|w)$ break svn:eol-style CRLF
7\.exe$ break svn:mime-type application/octet-stream
8\.gif$ break svn:mime-type image/gif
9\.gtar$ break svn:mime-type application/x-gtar
10\.(gz|tgz)$ break svn:mime-type application/x-gzip
11\.hqx$ break svn:mime-type application/mac-binhex40
12\.html?$ break svn:mime-type text/html
13\.ilk$ break svn:eol-style CRLF
14\.(jpeg|jpg|jpe)$ break svn:mime-type image/jpeg
15\.js$ break svn:mime-type application/x-javascript
16\.(mov|qt)$ break svn:mime-type video/quicktime
17\.ncb$ break svn:eol-style CRLF
18\.opt$ break svn:eol-style CRLF
19\.pdf$ break svn:mime-type application/pdf
20\.png$ break svn:mime-type image/png
21\.pp(s|t)$ break svn:mime-type application/vnd.ms-powerpoint
22\.rtf$ break svn:mime-type application/rtf
23\.swf$ break svn:mime-type application/x-shockwave-flash
24\.tar$ break svn:mime-type application/x-tar
25\.tiff?$ break svn:mime-type image/tiff
26\.xls$ break svn:mime-type application/vnd.ms-excel
27\.zip$ break svn:mime-type application/zip
28dos2unix-eol\.sh$ break
29#.* break svn:eol-style native
030
=== added file 'contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py'
--- contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py 1970-01-01 00:00:00 +0000
+++ contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py 2009-12-12 13:21:15 +0000
@@ -0,0 +1,452 @@
1#!/usr/bin/env python
2#
3# svnmerge-migrate-history-remotely.py: Remotely migrate merge history from
4# svnmerge.py's format to Subversion 1.5's format.
5#
6# ====================================================================
7# Copyright (c) 2008 CollabNet. All rights reserved.
8#
9# This software is licensed as described in the file COPYING, which
10# you should have received as part of this distribution. The terms
11# are also available at http://subversion.tigris.org/license-1.html.
12# If newer versions of this license are posted there, you may use a
13# newer version instead, at your option.
14#
15# This software consists of voluntary contributions made by many
16# individuals. For exact contribution history, see the revision
17# history and logs, available at http://subversion.tigris.org/.
18# ====================================================================
19
20# $HeadURL: http://svn.collab.net/repos/svn/branches/1.6.x/contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py $
21# $Date: 2009-01-20 22:25:54 +0000 (Tue, 20 Jan 2009) $
22# $Author: cmpilato $
23# $Rev: 35358 $
24
25
26### THE SVNMERGE HISTORY MIGRATION ALGORITHM EMPLOYED HEREIN
27###
28### 1. Fetch properties for PATH, looking specifically for
29### 'svnmerge-blocked', and 'svnmerge-integrated'.
30###
31### 2. Convert properties into real mergeinfo. NOTE: svnmerge-*
32### properties have a slightly different and more flexible syntax.
33###
34### 3. Combine mergeinfos together.
35###
36### 4. [non-naive] Subtract natural history of the merge target from
37### its own mergeinfo.
38###
39### 5. [non-naive] Filter mergeinfo by merge source natural history
40### (so that mergeinfo only reflects real locations).
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: