Merge lp:~maxb/ubuntu/lucid/subversion/merge into lp:ubuntu/lucid/subversion
- Lucid (10.04)
- merge
- Merge into lucid
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu branches | Pending | ||
Review via email:
|
Commit message
Description of the change
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
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Max Bowsher (maxb) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'CHANGES' | |||
2 | --- CHANGES 2009-08-24 19:09:22 +0000 | |||
3 | +++ CHANGES 2009-12-12 13:21:15 +0000 | |||
4 | @@ -1,9 +1,40 @@ | |||
5 | 1 | Version 1.6.6 | ||
6 | 2 | (16 Oct 2009, from /branches/1.6.x) | ||
7 | 3 | http://svn.collab.net/repos/svn/tags/1.6.6 | ||
8 | 4 | |||
9 | 5 | User-visible changes: | ||
10 | 6 | * fix crash during 'svn update' (r39673) | ||
11 | 7 | * respect Apache's ServerSignature directive (r40008, -21, -31) | ||
12 | 8 | * don't add a file with mixed line endings, and then abort (issue #2713) | ||
13 | 9 | * support Neon 0.29. | ||
14 | 10 | * fix a crash in 'svn rm --force' (r37953) | ||
15 | 11 | * handle tree conflicts involving replacements (issue #3486) | ||
16 | 12 | * allow non-threadsafe sqlite if APR has no threads (r39301) | ||
17 | 13 | * print newline before plaintext SSL cert / password prompts (r38982, r39302) | ||
18 | 14 | * improve merge performance with implicit subtree mergeinfo (issue #3443) | ||
19 | 15 | * fix "libsvn_ra_svn/marshal.c assertion failed (opt || cstr)" (issue #3485) | ||
20 | 16 | * make file externals work for binary files (issue #3368) | ||
21 | 17 | * perform MIME type matching case-insensitively (issue #3479) | ||
22 | 18 | * do not treat non-existent revisions as HEAD in 'svn export' (issue #3400) | ||
23 | 19 | * revert r36720's default MIME type change back to "text/plain" (issue #3508) | ||
24 | 20 | * improve "tree conflict already exists" error message (r38872) | ||
25 | 21 | * fix failure to commit replacement of a directory (issue #3281) | ||
26 | 22 | * fix mod_dav_svn parent dir links to preserve peg revisions (issue #3425) | ||
27 | 23 | |||
28 | 24 | Developer-visible changes: | ||
29 | 25 | * fix 2 failing tests in ruby bindings (r38886) | ||
30 | 26 | * do not require GNU grep for build (issue #3453) | ||
31 | 27 | * use '$SED' instead of 'sed' in build scripts (issue #3458) | ||
32 | 28 | * add svn.client.{log5,merge_peg3} to python bindings (r39635, -6, -7) | ||
33 | 29 | * include the time of a test run in tests.log (r39887) | ||
34 | 30 | |||
35 | 31 | |||
36 | 1 | Version 1.6.5 | 32 | Version 1.6.5 |
37 | 2 | (21 Aug 2009, from /branches/1.6.x) | 33 | (21 Aug 2009, from /branches/1.6.x) |
38 | 3 | http://svn.collab.net/repos/svn/tags/1.6.5 | 34 | http://svn.collab.net/repos/svn/tags/1.6.5 |
39 | 4 | 35 | ||
40 | 5 | User-visible changes: | 36 | User-visible changes: |
42 | 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) |
43 | 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) |
44 | 8 | * properly escape lock comments over ra_neon (r38101, -2) | 39 | * properly escape lock comments over ra_neon (r38101, -2) |
45 | 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) |
46 | 10 | 41 | ||
47 | === modified file 'README.Debian-tarball' | |||
48 | --- README.Debian-tarball 2009-08-24 19:09:22 +0000 | |||
49 | +++ README.Debian-tarball 2009-12-12 13:21:14 +0000 | |||
50 | @@ -1,4 +1,4 @@ | |||
52 | 1 | This tarball is the same as official subversion-1.6.5.tar.gz, | 1 | This tarball is the same as official subversion-1.6.6.tar.gz, |
53 | 2 | except that several unlicensed or unclearly-licensed files were | 2 | except that several unlicensed or unclearly-licensed files were |
54 | 3 | removed: | 3 | removed: |
55 | 4 | 4 | ||
56 | @@ -7,13 +7,9 @@ | |||
57 | 7 | contrib/client-side/diffwrap.bat | 7 | contrib/client-side/diffwrap.bat |
58 | 8 | contrib/client-side/svn-log.pl | 8 | contrib/client-side/svn-log.pl |
59 | 9 | contrib/client-side/svn_all_diffs.pl | 9 | contrib/client-side/svn_all_diffs.pl |
60 | 10 | contrib/client-side/svn_load_dirs | ||
61 | 11 | contrib/client-side/vim | 10 | contrib/client-side/vim |
62 | 12 | contrib/hook-scripts/detect-merge-conflicts.sh | 11 | contrib/hook-scripts/detect-merge-conflicts.sh |
63 | 13 | contrib/server-side/backup-recipe.sh | 12 | contrib/server-side/backup-recipe.sh |
64 | 14 | contrib/server-side/load_repo_with_mergesensitive_copy.sh | 13 | contrib/server-side/load_repo_with_mergesensitive_copy.sh |
65 | 15 | 14 | ||
70 | 16 | and 'configure.ac' at the top level was edited to remove references to | 15 | Peter Samuelson, 17 Oct 2009 |
67 | 17 | svn_load_dirs.pl. | ||
68 | 18 | |||
69 | 19 | Peter Samuelson, 20 Aug 2009 | ||
71 | 20 | 16 | ||
72 | === modified file 'build-outputs.mk' | |||
73 | --- build-outputs.mk 2009-08-24 19:09:22 +0000 | |||
74 | +++ build-outputs.mk 2009-12-12 13:21:15 +0000 | |||
75 | @@ -1598,7 +1598,7 @@ | |||
76 | 1598 | 1598 | ||
77 | 1599 | subversion/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 | 1599 | subversion/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 |
78 | 1600 | 1600 | ||
80 | 1601 | subversion/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.h | 1601 | subversion/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 |
81 | 1602 | 1602 | ||
82 | 1603 | subversion/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 | 1603 | subversion/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 |
83 | 1604 | 1604 | ||
84 | 1605 | 1605 | ||
85 | === added file 'build/ac-macros/apr_memcache.m4' | |||
86 | --- build/ac-macros/apr_memcache.m4 1970-01-01 00:00:00 +0000 | |||
87 | +++ build/ac-macros/apr_memcache.m4 2009-12-12 13:21:15 +0000 | |||
88 | @@ -0,0 +1,84 @@ | |||
89 | 1 | dnl | ||
90 | 2 | dnl SVN_LIB_APR_MEMCACHE | ||
91 | 3 | dnl | ||
92 | 4 | dnl Check configure options and assign variables related to | ||
93 | 5 | dnl the apr_memcache client library. | ||
94 | 6 | dnl Sets svn_lib_apr_memcache to "yes" if memcache code is accessible | ||
95 | 7 | dnl either from the standalone apr_memcache library or from apr-util. | ||
96 | 8 | dnl | ||
97 | 9 | |||
98 | 10 | AC_DEFUN(SVN_LIB_APR_MEMCACHE, | ||
99 | 11 | [ | ||
100 | 12 | apr_memcache_found=no | ||
101 | 13 | |||
102 | 14 | AC_ARG_WITH(apr_memcache,AC_HELP_STRING([--with-apr_memcache=PREFIX], | ||
103 | 15 | [Standalone apr_memcache client library]), | ||
104 | 16 | [ | ||
105 | 17 | if test "$withval" = "yes" ; then | ||
106 | 18 | AC_MSG_ERROR([--with-apr_memcache requires an argument.]) | ||
107 | 19 | else | ||
108 | 20 | AC_MSG_NOTICE([looking for separate apr_memcache package]) | ||
109 | 21 | apr_memcache_prefix=$withval | ||
110 | 22 | save_cppflags="$CPPFLAGS" | ||
111 | 23 | CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$apr_memcache_prefix/include/apr_memcache-0" | ||
112 | 24 | AC_CHECK_HEADER(apr_memcache.h,[ | ||
113 | 25 | save_ldflags="$LDFLAGS" | ||
114 | 26 | LDFLAGS="$LDFLAGS -L$apr_memcache_prefix/lib" | ||
115 | 27 | AC_CHECK_LIB(apr_memcache, apr_memcache_create, | ||
116 | 28 | [apr_memcache_found="standalone"]) | ||
117 | 29 | LDFLAGS="$save_ldflags"]) | ||
118 | 30 | CPPFLAGS="$save_cppflags" | ||
119 | 31 | fi | ||
120 | 32 | ], [ | ||
121 | 33 | if test -d "$srcdir/apr_memcache"; then | ||
122 | 34 | apr_memcache_found=reconfig | ||
123 | 35 | else | ||
124 | 36 | dnl Try just looking in apr-util (>= 1.3 has it already). | ||
125 | 37 | AC_MSG_NOTICE([looking for apr_memcache as part of apr-util]) | ||
126 | 38 | save_cppflags="$CPPFLAGS" | ||
127 | 39 | CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES" | ||
128 | 40 | AC_CHECK_HEADER(apr_memcache.h,[ | ||
129 | 41 | save_ldflags="$LDFLAGS" | ||
130 | 42 | LDFLAGS="$LDFLAGS $SVN_APRUTIL_EXPORT_LIBS" | ||
131 | 43 | AC_CHECK_LIB(aprutil-1, apr_memcache_create, | ||
132 | 44 | [apr_memcache_found="aprutil"]) | ||
133 | 45 | LDFLAGS="$save_ldflags"]) | ||
134 | 46 | CPPFLAGS="$save_cppflags" | ||
135 | 47 | |||
136 | 48 | fi | ||
137 | 49 | ]) | ||
138 | 50 | |||
139 | 51 | |||
140 | 52 | if test $apr_memcache_found = "reconfig"; then | ||
141 | 53 | SVN_EXTERNAL_PROJECT([apr_memcache], [--with-apr=$apr_config --with-apr-util=$apu_config]) | ||
142 | 54 | apr_memcache_prefix=$prefix | ||
143 | 55 | SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix" | ||
144 | 56 | SVN_APR_MEMCACHE_INCLUDES="-I$srcdir/memcache" | ||
145 | 57 | SVN_APR_MEMCACHE_LIBS="$abs_builddir/memcache/libapr_memcache.la" | ||
146 | 58 | SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache" | ||
147 | 59 | fi | ||
148 | 60 | |||
149 | 61 | if test $apr_memcache_found = "standalone"; then | ||
150 | 62 | SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix" | ||
151 | 63 | SVN_APR_MEMCACHE_INCLUDES="-I$apr_memcache_prefix/include/apr_memcache-0" | ||
152 | 64 | SVN_APR_MEMCACHE_LIBS="$apr_memcache_prefix/lib/libapr_memcache.la" | ||
153 | 65 | SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache" | ||
154 | 66 | svn_lib_apr_memcache=yes | ||
155 | 67 | elif test $apr_memcache_found = "aprutil"; then | ||
156 | 68 | dnl We are already linking apr-util everywhere, so no special treatement needed. | ||
157 | 69 | SVN_APR_MEMCACHE_PREFIX="" | ||
158 | 70 | SVN_APR_MEMCACHE_INCLUDES="" | ||
159 | 71 | SVN_APR_MEMCACHE_LIBS="" | ||
160 | 72 | SVN_APR_MEMCACHE_EXPORT_LIBS="" | ||
161 | 73 | svn_lib_apr_memcache=yes | ||
162 | 74 | elif test $apr_memcache_found = "reconfig"; then | ||
163 | 75 | svn_lib_apr_memcache=yes | ||
164 | 76 | else | ||
165 | 77 | svn_lib_apr_memcache=no | ||
166 | 78 | fi | ||
167 | 79 | |||
168 | 80 | AC_SUBST(SVN_APR_MEMCACHE_PREFIX) | ||
169 | 81 | AC_SUBST(SVN_APR_MEMCACHE_INCLUDES) | ||
170 | 82 | AC_SUBST(SVN_APR_MEMCACHE_LIBS) | ||
171 | 83 | AC_SUBST(SVN_APR_MEMCACHE_EXPORT_LIBS) | ||
172 | 84 | ]) | ||
173 | 0 | 85 | ||
174 | === removed file 'build/ac-macros/apr_memcache.m4' | |||
175 | --- build/ac-macros/apr_memcache.m4 2009-04-09 17:30:40 +0000 | |||
176 | +++ build/ac-macros/apr_memcache.m4 1970-01-01 00:00:00 +0000 | |||
177 | @@ -1,84 +0,0 @@ | |||
178 | 1 | dnl | ||
179 | 2 | dnl SVN_LIB_APR_MEMCACHE | ||
180 | 3 | dnl | ||
181 | 4 | dnl Check configure options and assign variables related to | ||
182 | 5 | dnl the apr_memcache client library. | ||
183 | 6 | dnl Sets svn_lib_apr_memcache to "yes" if memcache code is accessible | ||
184 | 7 | dnl either from the standalone apr_memcache library or from apr-util. | ||
185 | 8 | dnl | ||
186 | 9 | |||
187 | 10 | AC_DEFUN(SVN_LIB_APR_MEMCACHE, | ||
188 | 11 | [ | ||
189 | 12 | apr_memcache_found=no | ||
190 | 13 | |||
191 | 14 | AC_ARG_WITH(apr_memcache,AC_HELP_STRING([--with-apr_memcache=PREFIX], | ||
192 | 15 | [Standalone apr_memcache client library]), | ||
193 | 16 | [ | ||
194 | 17 | if test "$withval" = "yes" ; then | ||
195 | 18 | AC_MSG_ERROR([--with-apr_memcache requires an argument.]) | ||
196 | 19 | else | ||
197 | 20 | AC_MSG_NOTICE([looking for separate apr_memcache package]) | ||
198 | 21 | apr_memcache_prefix=$withval | ||
199 | 22 | save_cppflags="$CPPFLAGS" | ||
200 | 23 | CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$apr_memcache_prefix/include/apr_memcache-0" | ||
201 | 24 | AC_CHECK_HEADER(apr_memcache.h,[ | ||
202 | 25 | save_ldflags="$LDFLAGS" | ||
203 | 26 | LDFLAGS="$LDFLAGS -L$apr_memcache_prefix/lib" | ||
204 | 27 | AC_CHECK_LIB(apr_memcache, apr_memcache_create, | ||
205 | 28 | [apr_memcache_found="standalone"]) | ||
206 | 29 | LDFLAGS="$save_ldflags"]) | ||
207 | 30 | CPPFLAGS="$save_cppflags" | ||
208 | 31 | fi | ||
209 | 32 | ], [ | ||
210 | 33 | if test -d "$srcdir/apr_memcache"; then | ||
211 | 34 | apr_memcache_found=reconfig | ||
212 | 35 | else | ||
213 | 36 | dnl Try just looking in apr-util (>= 1.3 has it already). | ||
214 | 37 | AC_MSG_NOTICE([looking for apr_memcache as part of apr-util]) | ||
215 | 38 | save_cppflags="$CPPFLAGS" | ||
216 | 39 | CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES" | ||
217 | 40 | AC_CHECK_HEADER(apr_memcache.h,[ | ||
218 | 41 | save_ldflags="$LDFLAGS" | ||
219 | 42 | LDFLAGS="$LDFLAGS $SVN_APRUTIL_EXPORT_LIBS" | ||
220 | 43 | AC_CHECK_LIB(aprutil-1, apr_memcache_create, | ||
221 | 44 | [apr_memcache_found="aprutil"]) | ||
222 | 45 | LDFLAGS="$save_ldflags"]) | ||
223 | 46 | CPPFLAGS="$save_cppflags" | ||
224 | 47 | |||
225 | 48 | fi | ||
226 | 49 | ]) | ||
227 | 50 | |||
228 | 51 | |||
229 | 52 | if test $apr_memcache_found = "reconfig"; then | ||
230 | 53 | SVN_EXTERNAL_PROJECT([apr_memcache], [--with-apr=$apr_config --with-apr-util=$apu_config]) | ||
231 | 54 | apr_memcache_prefix=$prefix | ||
232 | 55 | SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix" | ||
233 | 56 | SVN_APR_MEMCACHE_INCLUDES="-I$srcdir/memcache" | ||
234 | 57 | SVN_APR_MEMCACHE_LIBS="$abs_builddir/memcache/libapr_memcache.la" | ||
235 | 58 | SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache" | ||
236 | 59 | fi | ||
237 | 60 | |||
238 | 61 | if test $apr_memcache_found = "standalone"; then | ||
239 | 62 | SVN_APR_MEMCACHE_PREFIX="$apr_memcache_prefix" | ||
240 | 63 | SVN_APR_MEMCACHE_INCLUDES="-I$apr_memcache_prefix/include/apr_memcache-0" | ||
241 | 64 | SVN_APR_MEMCACHE_LIBS="$apr_memcache_prefix/lib/libapr_memcache.la" | ||
242 | 65 | SVN_APR_MEMCACHE_EXPORT_LIBS="-L$apr_memcache_prefix/lib -lapr_memcache" | ||
243 | 66 | svn_lib_apr_memcache=yes | ||
244 | 67 | elif test $apr_memcache_found = "aprutil"; then | ||
245 | 68 | dnl We are already linking apr-util everywhere, so no special treatement needed. | ||
246 | 69 | SVN_APR_MEMCACHE_PREFIX="" | ||
247 | 70 | SVN_APR_MEMCACHE_INCLUDES="" | ||
248 | 71 | SVN_APR_MEMCACHE_LIBS="" | ||
249 | 72 | SVN_APR_MEMCACHE_EXPORT_LIBS="" | ||
250 | 73 | svn_lib_apr_memcache=yes | ||
251 | 74 | elif test $apr_memcache_found = "reconfig"; then | ||
252 | 75 | svn_lib_apr_memcache=yes | ||
253 | 76 | else | ||
254 | 77 | svn_lib_apr_memcache=no | ||
255 | 78 | fi | ||
256 | 79 | |||
257 | 80 | AC_SUBST(SVN_APR_MEMCACHE_PREFIX) | ||
258 | 81 | AC_SUBST(SVN_APR_MEMCACHE_INCLUDES) | ||
259 | 82 | AC_SUBST(SVN_APR_MEMCACHE_LIBS) | ||
260 | 83 | AC_SUBST(SVN_APR_MEMCACHE_EXPORT_LIBS) | ||
261 | 84 | ]) | ||
262 | 85 | 0 | ||
263 | === modified file 'build/ac-macros/berkeley-db.m4' | |||
264 | --- build/ac-macros/berkeley-db.m4 2009-08-24 19:09:22 +0000 | |||
265 | +++ build/ac-macros/berkeley-db.m4 2009-12-12 13:21:15 +0000 | |||
266 | @@ -63,17 +63,17 @@ | |||
267 | 63 | fi | 63 | fi |
268 | 64 | else | 64 | else |
269 | 65 | if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then | 65 | if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then |
271 | 66 | svn_berkeley_db_header=["`echo "$withval" | sed -e "s/\([^:]*\):.*/\1/"`"] | 66 | svn_berkeley_db_header=["`echo "$withval" | $SED -e "s/\([^:]*\):.*/\1/"`"] |
272 | 67 | SVN_DB_INCLUDES="" | 67 | SVN_DB_INCLUDES="" |
274 | 68 | for i in [`echo "$withval" | sed -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`]; do | 68 | for i in [`echo "$withval" | $SED -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`]; do |
275 | 69 | SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i" | 69 | SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i" |
276 | 70 | done | 70 | done |
277 | 71 | SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }" | 71 | SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }" |
279 | 72 | for l in [`echo "$withval" | sed -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`]; do | 72 | for l in [`echo "$withval" | $SED -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`]; do |
280 | 73 | LDFLAGS="$LDFLAGS -L$l" | 73 | LDFLAGS="$LDFLAGS -L$l" |
281 | 74 | done | 74 | done |
282 | 75 | SVN_DB_LIBS="" | 75 | SVN_DB_LIBS="" |
284 | 76 | for l in [`echo "$withval" | sed -e "s/.*:\([^:]*\)/\1/"`]; do | 76 | for l in [`echo "$withval" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do |
285 | 77 | SVN_DB_LIBS="$SVN_DB_LIBS -l$l" | 77 | SVN_DB_LIBS="$SVN_DB_LIBS -l$l" |
286 | 78 | done | 78 | done |
287 | 79 | SVN_DB_LIBS="${SVN_DB_LIBS## }" | 79 | SVN_DB_LIBS="${SVN_DB_LIBS## }" |
288 | @@ -161,7 +161,7 @@ | |||
289 | 161 | # Or that it resides in a non-standard location which we would have | 161 | # Or that it resides in a non-standard location which we would have |
290 | 162 | # to compensate with using something like -R`$apu_config --prefix`/lib. | 162 | # to compensate with using something like -R`$apu_config --prefix`/lib. |
291 | 163 | # | 163 | # |
293 | 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:]]*'`}"] |
294 | 165 | 165 | ||
295 | 166 | CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS" | 166 | CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS" |
296 | 167 | LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS" | 167 | LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS" |
297 | 168 | 168 | ||
298 | === added file 'build/ac-macros/ctypesgen.m4' | |||
299 | --- build/ac-macros/ctypesgen.m4 1970-01-01 00:00:00 +0000 | |||
300 | +++ build/ac-macros/ctypesgen.m4 2009-12-12 13:21:15 +0000 | |||
301 | @@ -0,0 +1,60 @@ | |||
302 | 1 | dnl | ||
303 | 2 | dnl ctypesgen.m4: Locates ctypesgen for building/installing ctypes-python. | ||
304 | 3 | dnl | ||
305 | 4 | |||
306 | 5 | AC_DEFUN(SVN_CHECK_CTYPESGEN, | ||
307 | 6 | [ | ||
308 | 7 | AC_ARG_WITH(ctypesgen, | ||
309 | 8 | AS_HELP_STRING([--with-ctypesgen=PATH], | ||
310 | 9 | [Specify the path to ctypesgen. This can either | ||
311 | 10 | be the full path to a ctypesgen installation, | ||
312 | 11 | the full path to a ctypesgen source tree or the | ||
313 | 12 | full path to ctypesgen.py.]), | ||
314 | 13 | [ | ||
315 | 14 | case "$withval" in | ||
316 | 15 | "no") | ||
317 | 16 | SVN_FIND_CTYPESGEN(no) | ||
318 | 17 | ;; | ||
319 | 18 | "yes") | ||
320 | 19 | SVN_FIND_CTYPESGEN(check) | ||
321 | 20 | ;; | ||
322 | 21 | *) | ||
323 | 22 | SVN_FIND_CTYPESGEN($withval) | ||
324 | 23 | ;; | ||
325 | 24 | esac | ||
326 | 25 | ], | ||
327 | 26 | [ | ||
328 | 27 | SVN_FIND_CTYPESGEN(check) | ||
329 | 28 | ]) | ||
330 | 29 | ]) | ||
331 | 30 | |||
332 | 31 | AC_DEFUN(SVN_FIND_CTYPESGEN, | ||
333 | 32 | [ | ||
334 | 33 | where=$1 | ||
335 | 34 | |||
336 | 35 | CTYPESGEN=none | ||
337 | 36 | |||
338 | 37 | if test $where = check; then | ||
339 | 38 | AC_PATH_PROG(CTYPESGEN, "ctypesgen.py", none) | ||
340 | 39 | elif test $where != no; then | ||
341 | 40 | AC_MSG_CHECKING([for ctypesgen.py]) | ||
342 | 41 | |||
343 | 42 | if test -f "$where"; then | ||
344 | 43 | CTYPESGEN="$where" | ||
345 | 44 | elif test -f "$where/bin/ctypesgen.py"; then | ||
346 | 45 | CTYPESGEN="$where/bin/ctypesgen.py" | ||
347 | 46 | else | ||
348 | 47 | CTYPESGEN="$where/ctypesgen.py" | ||
349 | 48 | fi | ||
350 | 49 | |||
351 | 50 | if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then | ||
352 | 51 | AC_MSG_ERROR([Could not find ctypesgen at $where/ctypesgen.py or at | ||
353 | 52 | $where/bin/ctypesgen.py]) | ||
354 | 53 | else | ||
355 | 54 | AC_MSG_RESULT([$CTYPESGEN]) | ||
356 | 55 | fi | ||
357 | 56 | fi | ||
358 | 57 | |||
359 | 58 | dnl We use CTYPESGEN in the Makefile | ||
360 | 59 | AC_SUBST(CTYPESGEN) | ||
361 | 60 | ]) | ||
362 | 0 | 61 | ||
363 | === removed file 'build/ac-macros/ctypesgen.m4' | |||
364 | --- build/ac-macros/ctypesgen.m4 2009-04-09 17:30:40 +0000 | |||
365 | +++ build/ac-macros/ctypesgen.m4 1970-01-01 00:00:00 +0000 | |||
366 | @@ -1,60 +0,0 @@ | |||
367 | 1 | dnl | ||
368 | 2 | dnl ctypesgen.m4: Locates ctypesgen for building/installing ctypes-python. | ||
369 | 3 | dnl | ||
370 | 4 | |||
371 | 5 | AC_DEFUN(SVN_CHECK_CTYPESGEN, | ||
372 | 6 | [ | ||
373 | 7 | AC_ARG_WITH(ctypesgen, | ||
374 | 8 | AS_HELP_STRING([--with-ctypesgen=PATH], | ||
375 | 9 | [Specify the path to ctypesgen. This can either | ||
376 | 10 | be the full path to a ctypesgen installation, | ||
377 | 11 | the full path to a ctypesgen source tree or the | ||
378 | 12 | full path to ctypesgen.py.]), | ||
379 | 13 | [ | ||
380 | 14 | case "$withval" in | ||
381 | 15 | "no") | ||
382 | 16 | SVN_FIND_CTYPESGEN(no) | ||
383 | 17 | ;; | ||
384 | 18 | "yes") | ||
385 | 19 | SVN_FIND_CTYPESGEN(check) | ||
386 | 20 | ;; | ||
387 | 21 | *) | ||
388 | 22 | SVN_FIND_CTYPESGEN($withval) | ||
389 | 23 | ;; | ||
390 | 24 | esac | ||
391 | 25 | ], | ||
392 | 26 | [ | ||
393 | 27 | SVN_FIND_CTYPESGEN(check) | ||
394 | 28 | ]) | ||
395 | 29 | ]) | ||
396 | 30 | |||
397 | 31 | AC_DEFUN(SVN_FIND_CTYPESGEN, | ||
398 | 32 | [ | ||
399 | 33 | where=$1 | ||
400 | 34 | |||
401 | 35 | CTYPESGEN=none | ||
402 | 36 | |||
403 | 37 | if test $where = check; then | ||
404 | 38 | AC_PATH_PROG(CTYPESGEN, "ctypesgen.py", none) | ||
405 | 39 | elif test $where != no; then | ||
406 | 40 | AC_MSG_CHECKING([for ctypesgen.py]) | ||
407 | 41 | |||
408 | 42 | if test -f "$where"; then | ||
409 | 43 | CTYPESGEN="$where" | ||
410 | 44 | elif test -f "$where/bin/ctypesgen.py"; then | ||
411 | 45 | CTYPESGEN="$where/bin/ctypesgen.py" | ||
412 | 46 | else | ||
413 | 47 | CTYPESGEN="$where/ctypesgen.py" | ||
414 | 48 | fi | ||
415 | 49 | |||
416 | 50 | if test ! -f "$CTYPESGEN" || test ! -x "$CTYPESGEN"; then | ||
417 | 51 | AC_MSG_ERROR([Could not find ctypesgen at $where/ctypesgen.py or at | ||
418 | 52 | $where/bin/ctypesgen.py]) | ||
419 | 53 | else | ||
420 | 54 | AC_MSG_RESULT([$CTYPESGEN]) | ||
421 | 55 | fi | ||
422 | 56 | fi | ||
423 | 57 | |||
424 | 58 | dnl We use CTYPESGEN in the Makefile | ||
425 | 59 | AC_SUBST(CTYPESGEN) | ||
426 | 60 | ]) | ||
427 | 61 | 0 | ||
428 | === added file 'build/ac-macros/kwallet.m4' | |||
429 | --- build/ac-macros/kwallet.m4 1970-01-01 00:00:00 +0000 | |||
430 | +++ build/ac-macros/kwallet.m4 2009-12-12 13:21:15 +0000 | |||
431 | @@ -0,0 +1,99 @@ | |||
432 | 1 | dnl | ||
433 | 2 | dnl SVN_LIB_KWALLET | ||
434 | 3 | dnl | ||
435 | 4 | dnl Check configure options and assign variables related to KWallet support | ||
436 | 5 | dnl | ||
437 | 6 | |||
438 | 7 | AC_DEFUN(SVN_LIB_KWALLET, | ||
439 | 8 | [ | ||
440 | 9 | AC_ARG_WITH(kwallet, | ||
441 | 10 | [AS_HELP_STRING([[--with-kwallet[=PATH]]], | ||
442 | 11 | [Enable use of KWallet (KDE 4) for auth credentials])], | ||
443 | 12 | [svn_lib_kwallet="$withval"], | ||
444 | 13 | [svn_lib_kwallet=no]) | ||
445 | 14 | |||
446 | 15 | AC_MSG_CHECKING([whether to look for KWallet]) | ||
447 | 16 | if test "$svn_lib_kwallet" != "no"; then | ||
448 | 17 | AC_MSG_RESULT([yes]) | ||
449 | 18 | if test "$enable_shared" = "yes"; then | ||
450 | 19 | if test "$APR_HAS_DSO" = "yes"; then | ||
451 | 20 | if test "$USE_NLS" = "yes"; then | ||
452 | 21 | if test -n "$PKG_CONFIG"; then | ||
453 | 22 | if test "$HAVE_DBUS" = "yes"; then | ||
454 | 23 | AC_MSG_CHECKING([for QtCore, QtDBus, QtGui]) | ||
455 | 24 | if $PKG_CONFIG --exists QtCore QtDBus QtGui; then | ||
456 | 25 | AC_MSG_RESULT([yes]) | ||
457 | 26 | if test "$svn_lib_kwallet" != "yes"; then | ||
458 | 27 | AC_MSG_CHECKING([for kde4-config]) | ||
459 | 28 | kde4_config="$svn_lib_kwallet/bin/kde4-config" | ||
460 | 29 | if test -f "$kde4_config" && test -x "$kde4_config"; then | ||
461 | 30 | HAVE_KDE4_CONFIG="yes" | ||
462 | 31 | AC_MSG_RESULT([yes]) | ||
463 | 32 | else | ||
464 | 33 | AC_MSG_RESULT([no]) | ||
465 | 34 | fi | ||
466 | 35 | else | ||
467 | 36 | AC_CHECK_PROG(HAVE_KDE4_CONFIG, kde4-config, yes) | ||
468 | 37 | kde4_config="kde4-config" | ||
469 | 38 | fi | ||
470 | 39 | if test "$HAVE_KDE4_CONFIG" = "yes"; then | ||
471 | 40 | AC_MSG_CHECKING([for KWallet]) | ||
472 | 41 | old_CXXFLAGS="$CXXFLAGS" | ||
473 | 42 | old_LDFLAGS="$LDFLAGS" | ||
474 | 43 | old_LIBS="$LIBS" | ||
475 | 44 | for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui`]; do | ||
476 | 45 | if test -n ["`echo "$d" | $GREP -- '^-D[^[:space:]]*'`"]; then | ||
477 | 46 | CPPFLAGS="$CPPFLAGS $d" | ||
478 | 47 | fi | ||
479 | 48 | done | ||
480 | 49 | qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" | ||
481 | 50 | kde_dir="`$kde4_config --prefix`" | ||
482 | 51 | SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_dir/include" | ||
483 | 52 | qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`" | ||
484 | 53 | SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options" | ||
485 | 54 | CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES" | ||
486 | 55 | LIBS="$LIBS $SVN_KWALLET_LIBS" | ||
487 | 56 | qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`" | ||
488 | 57 | LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$kde_dir/lib`$kde4_config --libsuffix`" | ||
489 | 58 | AC_LANG(C++) | ||
490 | 59 | AC_LINK_IFELSE([ | ||
491 | 60 | #include <kwallet.h> | ||
492 | 61 | int main() | ||
493 | 62 | {KWallet::Wallet::walletList();}], svn_lib_kwallet="yes", svn_lib_kwallet="no") | ||
494 | 63 | AC_LANG(C) | ||
495 | 64 | if test "$svn_lib_kwallet" = "yes"; then | ||
496 | 65 | AC_MSG_RESULT([yes]) | ||
497 | 66 | CXXFLAGS="$old_CXXFLAGS" | ||
498 | 67 | LIBS="$old_LIBS" | ||
499 | 68 | else | ||
500 | 69 | AC_MSG_RESULT([no]) | ||
501 | 70 | AC_MSG_ERROR([cannot find KWallet]) | ||
502 | 71 | fi | ||
503 | 72 | else | ||
504 | 73 | AC_MSG_ERROR([cannot find kde4-config]) | ||
505 | 74 | fi | ||
506 | 75 | else | ||
507 | 76 | AC_MSG_RESULT([no]) | ||
508 | 77 | AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui]) | ||
509 | 78 | fi | ||
510 | 79 | else | ||
511 | 80 | AC_MSG_ERROR([cannot find D-Bus]) | ||
512 | 81 | fi | ||
513 | 82 | else | ||
514 | 83 | AC_MSG_ERROR([cannot find pkg-config]) | ||
515 | 84 | fi | ||
516 | 85 | else | ||
517 | 86 | AC_MSG_ERROR([missing support for internationalization]) | ||
518 | 87 | fi | ||
519 | 88 | else | ||
520 | 89 | AC_MSG_ERROR([APR does not have support for DSOs]) | ||
521 | 90 | fi | ||
522 | 91 | else | ||
523 | 92 | AC_MSG_ERROR([--with-kwallet conflicts with --disable-shared]) | ||
524 | 93 | fi | ||
525 | 94 | else | ||
526 | 95 | AC_MSG_RESULT([no]) | ||
527 | 96 | fi | ||
528 | 97 | AC_SUBST(SVN_KWALLET_INCLUDES) | ||
529 | 98 | AC_SUBST(SVN_KWALLET_LIBS) | ||
530 | 99 | ]) | ||
531 | 0 | 100 | ||
532 | === removed file 'build/ac-macros/kwallet.m4' | |||
533 | --- build/ac-macros/kwallet.m4 2009-04-09 17:30:40 +0000 | |||
534 | +++ build/ac-macros/kwallet.m4 1970-01-01 00:00:00 +0000 | |||
535 | @@ -1,97 +0,0 @@ | |||
536 | 1 | dnl | ||
537 | 2 | dnl SVN_LIB_KWALLET | ||
538 | 3 | dnl | ||
539 | 4 | dnl Check configure options and assign variables related to KWallet support | ||
540 | 5 | dnl | ||
541 | 6 | |||
542 | 7 | AC_DEFUN(SVN_LIB_KWALLET, | ||
543 | 8 | [ | ||
544 | 9 | AC_ARG_WITH(kwallet, | ||
545 | 10 | [AS_HELP_STRING([[--with-kwallet[=PATH]]], | ||
546 | 11 | [Enable use of KWallet (KDE 4) for auth credentials])], | ||
547 | 12 | [svn_lib_kwallet="$withval"], | ||
548 | 13 | [svn_lib_kwallet=no]) | ||
549 | 14 | |||
550 | 15 | AC_MSG_CHECKING([whether to look for KWallet]) | ||
551 | 16 | if test "$svn_lib_kwallet" != "no"; then | ||
552 | 17 | AC_MSG_RESULT([yes]) | ||
553 | 18 | if test "$enable_shared" = "yes"; then | ||
554 | 19 | if test "$APR_HAS_DSO" = "yes"; then | ||
555 | 20 | if test "$USE_NLS" = "yes"; then | ||
556 | 21 | if test -n "$PKG_CONFIG"; then | ||
557 | 22 | if test "$HAVE_DBUS" = "yes"; then | ||
558 | 23 | AC_MSG_CHECKING([for QtCore, QtDBus, QtGui]) | ||
559 | 24 | if $PKG_CONFIG --exists QtCore QtDBus QtGui; then | ||
560 | 25 | AC_MSG_RESULT([yes]) | ||
561 | 26 | if test "$svn_lib_kwallet" != "yes"; then | ||
562 | 27 | AC_MSG_CHECKING([for kde4-config]) | ||
563 | 28 | kde4_config="$svn_lib_kwallet/bin/kde4-config" | ||
564 | 29 | if test -f "$kde4_config" && test -x "$kde4_config"; then | ||
565 | 30 | HAVE_KDE4_CONFIG="yes" | ||
566 | 31 | AC_MSG_RESULT([yes]) | ||
567 | 32 | else | ||
568 | 33 | AC_MSG_RESULT([no]) | ||
569 | 34 | fi | ||
570 | 35 | else | ||
571 | 36 | AC_CHECK_PROG(HAVE_KDE4_CONFIG, kde4-config, yes) | ||
572 | 37 | kde4_config="kde4-config" | ||
573 | 38 | fi | ||
574 | 39 | if test "$HAVE_KDE4_CONFIG" = "yes"; then | ||
575 | 40 | AC_MSG_CHECKING([for KWallet]) | ||
576 | 41 | old_CXXFLAGS="$CXXFLAGS" | ||
577 | 42 | old_LDFLAGS="$LDFLAGS" | ||
578 | 43 | old_LIBS="$LIBS" | ||
579 | 44 | for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui | $GREP -o -- -D[^[:space:]]*`]; do | ||
580 | 45 | CPPFLAGS="$CPPFLAGS $d" | ||
581 | 46 | done | ||
582 | 47 | qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" | ||
583 | 48 | kde_dir="`$kde4_config --prefix`" | ||
584 | 49 | SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_dir/include" | ||
585 | 50 | qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`" | ||
586 | 51 | SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options" | ||
587 | 52 | CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES" | ||
588 | 53 | LIBS="$LIBS $SVN_KWALLET_LIBS" | ||
589 | 54 | qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`" | ||
590 | 55 | LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$kde_dir/lib`$kde4_config --libsuffix`" | ||
591 | 56 | AC_LANG(C++) | ||
592 | 57 | AC_LINK_IFELSE([ | ||
593 | 58 | #include <kwallet.h> | ||
594 | 59 | int main() | ||
595 | 60 | {KWallet::Wallet::walletList();}], svn_lib_kwallet="yes", svn_lib_kwallet="no") | ||
596 | 61 | AC_LANG(C) | ||
597 | 62 | if test "$svn_lib_kwallet" = "yes"; then | ||
598 | 63 | AC_MSG_RESULT([yes]) | ||
599 | 64 | CXXFLAGS="$old_CXXFLAGS" | ||
600 | 65 | LIBS="$old_LIBS" | ||
601 | 66 | else | ||
602 | 67 | AC_MSG_RESULT([no]) | ||
603 | 68 | AC_MSG_ERROR([cannot find KWallet]) | ||
604 | 69 | fi | ||
605 | 70 | else | ||
606 | 71 | AC_MSG_ERROR([cannot find kde4-config]) | ||
607 | 72 | fi | ||
608 | 73 | else | ||
609 | 74 | AC_MSG_RESULT([no]) | ||
610 | 75 | AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui]) | ||
611 | 76 | fi | ||
612 | 77 | else | ||
613 | 78 | AC_MSG_ERROR([cannot find D-Bus]) | ||
614 | 79 | fi | ||
615 | 80 | else | ||
616 | 81 | AC_MSG_ERROR([cannot find pkg-config]) | ||
617 | 82 | fi | ||
618 | 83 | else | ||
619 | 84 | AC_MSG_ERROR([missing support for internationalization]) | ||
620 | 85 | fi | ||
621 | 86 | else | ||
622 | 87 | AC_MSG_ERROR([APR does not have support for DSOs]) | ||
623 | 88 | fi | ||
624 | 89 | else | ||
625 | 90 | AC_MSG_ERROR([--with-kwallet conflicts with --disable-shared]) | ||
626 | 91 | fi | ||
627 | 92 | else | ||
628 | 93 | AC_MSG_RESULT([no]) | ||
629 | 94 | fi | ||
630 | 95 | AC_SUBST(SVN_KWALLET_INCLUDES) | ||
631 | 96 | AC_SUBST(SVN_KWALLET_LIBS) | ||
632 | 97 | ]) | ||
633 | 98 | 0 | ||
634 | === modified file 'build/ac-macros/neon.m4' | |||
635 | --- build/ac-macros/neon.m4 2009-06-09 23:53:06 +0000 | |||
636 | +++ build/ac-macros/neon.m4 2009-12-12 13:21:15 +0000 | |||
637 | @@ -141,7 +141,7 @@ | |||
638 | 141 | if test "$NEON_PKG_CONFIG" = "yes" ; then | 141 | if test "$NEON_PKG_CONFIG" = "yes" ; then |
639 | 142 | NEON_VERSION=`$PKG_CONFIG neon --modversion` | 142 | NEON_VERSION=`$PKG_CONFIG neon --modversion` |
640 | 143 | else | 143 | else |
642 | 144 | NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'` | 144 | NEON_VERSION=`$neon_config --version | $SED -e 's/^neon //'` |
643 | 145 | fi | 145 | fi |
644 | 146 | AC_MSG_RESULT([$NEON_VERSION]) | 146 | AC_MSG_RESULT([$NEON_VERSION]) |
645 | 147 | 147 | ||
646 | @@ -165,8 +165,8 @@ | |||
647 | 165 | test "$svn_allowed_neon" = "any"; then | 165 | test "$svn_allowed_neon" = "any"; then |
648 | 166 | svn_allowed_neon_on_system="yes" | 166 | svn_allowed_neon_on_system="yes" |
649 | 167 | if test "$NEON_PKG_CONFIG" = "yes"; then | 167 | if test "$NEON_PKG_CONFIG" = "yes"; then |
652 | 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'`] |
653 | 169 | CFLAGS=["$CFLAGS `$PKG_CONFIG neon --cflags | sed -e 's/-I[^ ]*//g'`"] | 169 | CFLAGS=["$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`"] |
654 | 170 | old_CFLAGS="$CFLAGS" | 170 | old_CFLAGS="$CFLAGS" |
655 | 171 | old_LIBS="$LIBS" | 171 | old_LIBS="$LIBS" |
656 | 172 | NEON_LIBS=`$PKG_CONFIG neon --libs` | 172 | NEON_LIBS=`$PKG_CONFIG neon --libs` |
657 | @@ -186,8 +186,8 @@ | |||
658 | 186 | CFLAGS="$old_CFLAGS" | 186 | CFLAGS="$old_CFLAGS" |
659 | 187 | LIBS="$old_LIBS" | 187 | LIBS="$old_LIBS" |
660 | 188 | else | 188 | else |
663 | 189 | SVN_NEON_INCLUDES=[`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`] | 189 | SVN_NEON_INCLUDES=[`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'`] |
664 | 190 | CFLAGS=["$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"] | 190 | CFLAGS=["$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`"] |
665 | 191 | NEON_LIBS=`$neon_config --libs` | 191 | NEON_LIBS=`$neon_config --libs` |
666 | 192 | fi | 192 | fi |
667 | 193 | svn_lib_neon="yes" | 193 | svn_lib_neon="yes" |
668 | 194 | 194 | ||
669 | === added file 'build/ac-macros/sqlite.m4' | |||
670 | --- build/ac-macros/sqlite.m4 1970-01-01 00:00:00 +0000 | |||
671 | +++ build/ac-macros/sqlite.m4 2009-12-12 13:21:15 +0000 | |||
672 | @@ -0,0 +1,228 @@ | |||
673 | 1 | dnl SVN_LIB_SQLITE(minimum_ver, recommended_ver, url) | ||
674 | 2 | dnl | ||
675 | 3 | dnl Search for a suitable version of sqlite. minimum_ver is a | ||
676 | 4 | dnl version string which is the lowest suitable version we can use. | ||
677 | 5 | dnl recommended_ver is the recommended version of sqlite, which is | ||
678 | 6 | dnl not necessarily the latest version released. url is the URL of | ||
679 | 7 | dnl the recommended version of sqlite. | ||
680 | 8 | dnl | ||
681 | 9 | dnl If a --with-sqlite=PREFIX option is passed, look for a suitable sqlite | ||
682 | 10 | dnl either installed under the directory PREFIX or as an amalgamation file | ||
683 | 11 | dnl at the path PREFIX. In this case ignore any sqlite-amalgamation/ subdir | ||
684 | 12 | dnl within the source tree. | ||
685 | 13 | dnl | ||
686 | 14 | dnl If no --with-sqlite option is passed, look first for | ||
687 | 15 | dnl sqlite-amalgamation/sqlite3.c which should be the amalgamated version of | ||
688 | 16 | dnl the source distribution. If the amalgamation exists and is the wrong | ||
689 | 17 | dnl version, exit with a failure. If no sqlite-amalgamation/ subdir is | ||
690 | 18 | dnl present, search for a sqlite installed on the system. | ||
691 | 19 | dnl | ||
692 | 20 | dnl If the search for sqlite fails, set svn_lib_sqlite to no, otherwise set | ||
693 | 21 | dnl it to yes. | ||
694 | 22 | |||
695 | 23 | AC_DEFUN(SVN_LIB_SQLITE, | ||
696 | 24 | [ | ||
697 | 25 | SQLITE_MINIMUM_VER="$1" | ||
698 | 26 | SQLITE_RECOMMENDED_VER="$2" | ||
699 | 27 | SQLITE_URL="$3" | ||
700 | 28 | SQLITE_PKGNAME="sqlite3" | ||
701 | 29 | |||
702 | 30 | SVN_SQLITE_MIN_VERNUM_PARSE | ||
703 | 31 | |||
704 | 32 | AC_MSG_NOTICE([checking sqlite library]) | ||
705 | 33 | |||
706 | 34 | AC_ARG_WITH(sqlite, | ||
707 | 35 | AS_HELP_STRING([--with-sqlite=PREFIX], | ||
708 | 36 | [Use installed SQLite library or amalgamation file.]), | ||
709 | 37 | [ | ||
710 | 38 | if test "$withval" = "yes" ; then | ||
711 | 39 | AC_MSG_ERROR([--with-sqlite requires an argument.]) | ||
712 | 40 | else | ||
713 | 41 | sqlite_dir="$withval" | ||
714 | 42 | fi | ||
715 | 43 | |||
716 | 44 | if test -d $sqlite_dir; then | ||
717 | 45 | dnl pointed at an sqlite installation | ||
718 | 46 | SVN_SQLITE_DIR_CONFIG($sqlite_dir) | ||
719 | 47 | else | ||
720 | 48 | dnl pointed at the amalgamation file | ||
721 | 49 | SVN_SQLITE_FILE_CONFIG($sqlite_dir) | ||
722 | 50 | fi | ||
723 | 51 | |||
724 | 52 | if test -z "$svn_lib_sqlite"; then | ||
725 | 53 | AC_MSG_WARN([no suitable sqlite found in $sqlite_dir]) | ||
726 | 54 | SVN_DOWNLOAD_SQLITE | ||
727 | 55 | fi | ||
728 | 56 | ], | ||
729 | 57 | [ | ||
730 | 58 | dnl see if the sqlite amalgamation exists in the source tree | ||
731 | 59 | SVN_SQLITE_FILE_CONFIG($abs_srcdir/sqlite-amalgamation/sqlite3.c) | ||
732 | 60 | |||
733 | 61 | if test -z "$svn_lib_sqlite"; then | ||
734 | 62 | dnl check the "standard" location of /usr | ||
735 | 63 | SVN_SQLITE_DIR_CONFIG() | ||
736 | 64 | fi | ||
737 | 65 | |||
738 | 66 | if test -z "$svn_lib_sqlite"; then | ||
739 | 67 | dnl no --with-sqlite switch, and no sqlite subdir, look in PATH | ||
740 | 68 | SVN_SQLITE_PKG_CONFIG | ||
741 | 69 | fi | ||
742 | 70 | |||
743 | 71 | if test -z "$svn_lib_sqlite"; then | ||
744 | 72 | SVN_DOWNLOAD_SQLITE | ||
745 | 73 | fi | ||
746 | 74 | ]) | ||
747 | 75 | |||
748 | 76 | AC_SUBST(SVN_SQLITE_INCLUDES) | ||
749 | 77 | AC_SUBST(SVN_SQLITE_LIBS) | ||
750 | 78 | ]) | ||
751 | 79 | |||
752 | 80 | dnl SVN_SQLITE_PKG_CONFIG | ||
753 | 81 | dnl | ||
754 | 82 | dnl Look for sqlite in PATH using pkg-config. | ||
755 | 83 | AC_DEFUN(SVN_SQLITE_PKG_CONFIG, | ||
756 | 84 | [ | ||
757 | 85 | if test -n "$PKG_CONFIG"; then | ||
758 | 86 | AC_MSG_CHECKING([sqlite library version (via pkg-config)]) | ||
759 | 87 | sqlite_version=`$PKG_CONFIG $SQLITE_PKGNAME --modversion --silence-errors` | ||
760 | 88 | |||
761 | 89 | if test -n "$sqlite_version"; then | ||
762 | 90 | SVN_SQLITE_VERNUM_PARSE | ||
763 | 91 | |||
764 | 92 | if test "$sqlite_ver_num" -ge "$sqlite_min_ver_num"; then | ||
765 | 93 | AC_MSG_RESULT([$sqlite_version]) | ||
766 | 94 | svn_lib_sqlite="yes" | ||
767 | 95 | SVN_SQLITE_INCLUDES="`$PKG_CONFIG $SQLITE_PKGNAME --cflags`" | ||
768 | 96 | SVN_SQLITE_LIBS="`$PKG_CONFIG $SQLITE_PKGNAME --libs`" | ||
769 | 97 | else | ||
770 | 98 | AC_MSG_RESULT([none or unsupported $sqlite_version]) | ||
771 | 99 | fi | ||
772 | 100 | fi | ||
773 | 101 | fi | ||
774 | 102 | |||
775 | 103 | if test -z "$svn_lib_sqlite"; then | ||
776 | 104 | AC_MSG_RESULT(no) | ||
777 | 105 | fi | ||
778 | 106 | ]) | ||
779 | 107 | |||
780 | 108 | dnl SVN_SQLITE_DIR_CONFIG(sqlite_dir) | ||
781 | 109 | dnl | ||
782 | 110 | dnl Check to see if we've got an appropriate sqlite library at sqlite_dir. | ||
783 | 111 | dnl If we don't, fail. | ||
784 | 112 | AC_DEFUN(SVN_SQLITE_DIR_CONFIG, | ||
785 | 113 | [ | ||
786 | 114 | if test -z "$1"; then | ||
787 | 115 | sqlite_dir="" | ||
788 | 116 | sqlite_include="sqlite3.h" | ||
789 | 117 | else | ||
790 | 118 | sqlite_dir="$1" | ||
791 | 119 | sqlite_include="$1/include/sqlite3.h" | ||
792 | 120 | fi | ||
793 | 121 | |||
794 | 122 | save_CPPFLAGS="$CPPFLAGS" | ||
795 | 123 | save_LDFLAGS="$LDFLAGS" | ||
796 | 124 | |||
797 | 125 | if test ! -z "$1"; then | ||
798 | 126 | CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include" | ||
799 | 127 | LDFLAGS="$LDFLAGS -L$sqlite_dir/lib" | ||
800 | 128 | fi | ||
801 | 129 | |||
802 | 130 | AC_CHECK_HEADER(sqlite3.h, | ||
803 | 131 | [ | ||
804 | 132 | AC_MSG_CHECKING([sqlite library version (via header)]) | ||
805 | 133 | AC_EGREP_CPP(SQLITE_VERSION_OKAY,[ | ||
806 | 134 | #include "$sqlite_include" | ||
807 | 135 | #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num | ||
808 | 136 | SQLITE_VERSION_OKAY | ||
809 | 137 | #endif], | ||
810 | 138 | [AC_MSG_RESULT([okay]) | ||
811 | 139 | AC_CHECK_LIB(sqlite3, sqlite3_close, [ | ||
812 | 140 | svn_lib_sqlite="yes" | ||
813 | 141 | if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then | ||
814 | 142 | SVN_SQLITE_LIBS="-lsqlite3" | ||
815 | 143 | else | ||
816 | 144 | SVN_SQLITE_INCLUDES="-I$sqlite_dir/include" | ||
817 | 145 | SVN_SQLITE_LIBS="-L$sqlite_dir/lib -lsqlite3" | ||
818 | 146 | fi | ||
819 | 147 | ])], [AC_MSG_RESULT([unsupported SQLite version])]) | ||
820 | 148 | ]) | ||
821 | 149 | |||
822 | 150 | CPPFLAGS="$save_CPPFLAGS" | ||
823 | 151 | LDFLAGS="$save_LDFLAGS" | ||
824 | 152 | ]) | ||
825 | 153 | |||
826 | 154 | dnl SVN_SQLITE_FILE_CONFIG(sqlite_file) | ||
827 | 155 | dnl | ||
828 | 156 | dnl Check to see if we've got an appropriate sqlite amalgamation file | ||
829 | 157 | dnl at sqlite_file. If not, fail. | ||
830 | 158 | AC_DEFUN(SVN_SQLITE_FILE_CONFIG, | ||
831 | 159 | [ | ||
832 | 160 | sqlite_amalg="$1" | ||
833 | 161 | if test ! -e $sqlite_amalg; then | ||
834 | 162 | echo "amalgamation not found at $sqlite_amalg" | ||
835 | 163 | else | ||
836 | 164 | AC_MSG_CHECKING([sqlite amalgamation file version]) | ||
837 | 165 | AC_EGREP_CPP(SQLITE_VERSION_OKAY,[ | ||
838 | 166 | #include "$sqlite_amalg" | ||
839 | 167 | #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num | ||
840 | 168 | SQLITE_VERSION_OKAY | ||
841 | 169 | #endif], | ||
842 | 170 | [AC_MSG_RESULT([amalgamation found and is okay]) | ||
843 | 171 | AC_DEFINE(SVN_SQLITE_INLINE, 1, | ||
844 | 172 | [Defined if svn should use the amalgamated version of sqlite]) | ||
845 | 173 | SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`" | ||
846 | 174 | svn_lib_sqlite="yes"], | ||
847 | 175 | [AC_MSG_RESULT([unsupported amalgamation SQLite version])]) | ||
848 | 176 | fi | ||
849 | 177 | ]) | ||
850 | 178 | |||
851 | 179 | dnl SVN_SQLITE_VERNUM_PARSE() | ||
852 | 180 | dnl | ||
853 | 181 | dnl Parse a x.y[.z] version string sqlite_version into a number sqlite_ver_num. | ||
854 | 182 | AC_DEFUN(SVN_SQLITE_VERNUM_PARSE, | ||
855 | 183 | [ | ||
856 | 184 | sqlite_major=`expr $sqlite_version : '\([[0-9]]*\)'` | ||
857 | 185 | sqlite_minor=`expr $sqlite_version : '[[0-9]]*\.\([[0-9]]*\)'` | ||
858 | 186 | sqlite_micro=`expr $sqlite_version : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` | ||
859 | 187 | if test -z "$sqlite_micro"; then | ||
860 | 188 | sqlite_micro=0 | ||
861 | 189 | fi | ||
862 | 190 | sqlite_ver_num=`expr $sqlite_major \* 1000000 \ | ||
863 | 191 | \+ $sqlite_minor \* 1000 \ | ||
864 | 192 | \+ $sqlite_micro` | ||
865 | 193 | ]) | ||
866 | 194 | |||
867 | 195 | dnl SVN_SQLITE_MIN_VERNUM_PARSE() | ||
868 | 196 | dnl | ||
869 | 197 | dnl Parse a x.y.z version string SQLITE_MINIMUM_VER into a number | ||
870 | 198 | dnl sqlite_min_ver_num. | ||
871 | 199 | AC_DEFUN(SVN_SQLITE_MIN_VERNUM_PARSE, | ||
872 | 200 | [ | ||
873 | 201 | sqlite_min_major=`expr $SQLITE_MINIMUM_VER : '\([[0-9]]*\)'` | ||
874 | 202 | sqlite_min_minor=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.\([[0-9]]*\)'` | ||
875 | 203 | sqlite_min_micro=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` | ||
876 | 204 | sqlite_min_ver_num=`expr $sqlite_min_major \* 1000000 \ | ||
877 | 205 | \+ $sqlite_min_minor \* 1000 \ | ||
878 | 206 | \+ $sqlite_min_micro` | ||
879 | 207 | ]) | ||
880 | 208 | |||
881 | 209 | dnl SVN_DOWNLOAD_SQLITE() | ||
882 | 210 | dnl no sqlite found, print out a message telling the user what to do | ||
883 | 211 | AC_DEFUN(SVN_DOWNLOAD_SQLITE, | ||
884 | 212 | [ | ||
885 | 213 | echo "" | ||
886 | 214 | echo "An appropriate version of sqlite could not be found. We recommmend" | ||
887 | 215 | echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}." | ||
888 | 216 | echo "Please either install a newer sqlite on this system" | ||
889 | 217 | echo "" | ||
890 | 218 | echo "or" | ||
891 | 219 | echo "" | ||
892 | 220 | echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:" | ||
893 | 221 | echo " ${SQLITE_URL}" | ||
894 | 222 | echo "unpack the archive using tar/gunzip and copy sqlite3.c from the" | ||
895 | 223 | echo "resulting directory to:" | ||
896 | 224 | echo "$abs_srcdir/sqlite-amalgamation/sqlite3.c" | ||
897 | 225 | echo "This file also ships as part of the subversion-deps distribution." | ||
898 | 226 | echo "" | ||
899 | 227 | AC_MSG_ERROR([Subversion requires SQLite]) | ||
900 | 228 | ]) | ||
901 | 0 | 229 | ||
902 | === removed file 'build/ac-macros/sqlite.m4' | |||
903 | --- build/ac-macros/sqlite.m4 2009-04-09 17:30:40 +0000 | |||
904 | +++ build/ac-macros/sqlite.m4 1970-01-01 00:00:00 +0000 | |||
905 | @@ -1,228 +0,0 @@ | |||
906 | 1 | dnl SVN_LIB_SQLITE(minimum_ver, recommended_ver, url) | ||
907 | 2 | dnl | ||
908 | 3 | dnl Search for a suitable version of sqlite. minimum_ver is a | ||
909 | 4 | dnl version string which is the lowest suitable version we can use. | ||
910 | 5 | dnl recommended_ver is the recommended version of sqlite, which is | ||
911 | 6 | dnl not necessarily the latest version released. url is the URL of | ||
912 | 7 | dnl the recommended version of sqlite. | ||
913 | 8 | dnl | ||
914 | 9 | dnl If a --with-sqlite=PREFIX option is passed, look for a suitable sqlite | ||
915 | 10 | dnl either installed under the directory PREFIX or as an amalgamation file | ||
916 | 11 | dnl at the path PREFIX. In this case ignore any sqlite-amalgamation/ subdir | ||
917 | 12 | dnl within the source tree. | ||
918 | 13 | dnl | ||
919 | 14 | dnl If no --with-sqlite option is passed, look first for | ||
920 | 15 | dnl sqlite-amalgamation/sqlite3.c which should be the amalgamated version of | ||
921 | 16 | dnl the source distribution. If the amalgamation exists and is the wrong | ||
922 | 17 | dnl version, exit with a failure. If no sqlite-amalgamation/ subdir is | ||
923 | 18 | dnl present, search for a sqlite installed on the system. | ||
924 | 19 | dnl | ||
925 | 20 | dnl If the search for sqlite fails, set svn_lib_sqlite to no, otherwise set | ||
926 | 21 | dnl it to yes. | ||
927 | 22 | |||
928 | 23 | AC_DEFUN(SVN_LIB_SQLITE, | ||
929 | 24 | [ | ||
930 | 25 | SQLITE_MINIMUM_VER="$1" | ||
931 | 26 | SQLITE_RECOMMENDED_VER="$2" | ||
932 | 27 | SQLITE_URL="$3" | ||
933 | 28 | SQLITE_PKGNAME="sqlite3" | ||
934 | 29 | |||
935 | 30 | SVN_SQLITE_MIN_VERNUM_PARSE | ||
936 | 31 | |||
937 | 32 | AC_MSG_NOTICE([checking sqlite library]) | ||
938 | 33 | |||
939 | 34 | AC_ARG_WITH(sqlite, | ||
940 | 35 | AS_HELP_STRING([--with-sqlite=PREFIX], | ||
941 | 36 | [Use installed SQLite library or amalgamation file.]), | ||
942 | 37 | [ | ||
943 | 38 | if test "$withval" = "yes" ; then | ||
944 | 39 | AC_MSG_ERROR([--with-sqlite requires an argument.]) | ||
945 | 40 | else | ||
946 | 41 | sqlite_dir="$withval" | ||
947 | 42 | fi | ||
948 | 43 | |||
949 | 44 | if test -d $sqlite_dir; then | ||
950 | 45 | dnl pointed at an sqlite installation | ||
951 | 46 | SVN_SQLITE_DIR_CONFIG($sqlite_dir) | ||
952 | 47 | else | ||
953 | 48 | dnl pointed at the amalgamation file | ||
954 | 49 | SVN_SQLITE_FILE_CONFIG($sqlite_dir) | ||
955 | 50 | fi | ||
956 | 51 | |||
957 | 52 | if test -z "$svn_lib_sqlite"; then | ||
958 | 53 | AC_MSG_WARN([no suitable sqlite found in $sqlite_dir]) | ||
959 | 54 | SVN_DOWNLOAD_SQLITE | ||
960 | 55 | fi | ||
961 | 56 | ], | ||
962 | 57 | [ | ||
963 | 58 | dnl see if the sqlite amalgamation exists in the source tree | ||
964 | 59 | SVN_SQLITE_FILE_CONFIG($abs_srcdir/sqlite-amalgamation/sqlite3.c) | ||
965 | 60 | |||
966 | 61 | if test -z "$svn_lib_sqlite"; then | ||
967 | 62 | dnl check the "standard" location of /usr | ||
968 | 63 | SVN_SQLITE_DIR_CONFIG() | ||
969 | 64 | fi | ||
970 | 65 | |||
971 | 66 | if test -z "$svn_lib_sqlite"; then | ||
972 | 67 | dnl no --with-sqlite switch, and no sqlite subdir, look in PATH | ||
973 | 68 | SVN_SQLITE_PKG_CONFIG | ||
974 | 69 | fi | ||
975 | 70 | |||
976 | 71 | if test -z "$svn_lib_sqlite"; then | ||
977 | 72 | SVN_DOWNLOAD_SQLITE | ||
978 | 73 | fi | ||
979 | 74 | ]) | ||
980 | 75 | |||
981 | 76 | AC_SUBST(SVN_SQLITE_INCLUDES) | ||
982 | 77 | AC_SUBST(SVN_SQLITE_LIBS) | ||
983 | 78 | ]) | ||
984 | 79 | |||
985 | 80 | dnl SVN_SQLITE_PKG_CONFIG | ||
986 | 81 | dnl | ||
987 | 82 | dnl Look for sqlite in PATH using pkg-config. | ||
988 | 83 | AC_DEFUN(SVN_SQLITE_PKG_CONFIG, | ||
989 | 84 | [ | ||
990 | 85 | if test -n "$PKG_CONFIG"; then | ||
991 | 86 | AC_MSG_CHECKING([sqlite library version (via pkg-config)]) | ||
992 | 87 | sqlite_version=`$PKG_CONFIG $SQLITE_PKGNAME --modversion --silence-errors` | ||
993 | 88 | |||
994 | 89 | if test -n "$sqlite_version"; then | ||
995 | 90 | SVN_SQLITE_VERNUM_PARSE | ||
996 | 91 | |||
997 | 92 | if test "$sqlite_ver_num" -ge "$sqlite_min_ver_num"; then | ||
998 | 93 | AC_MSG_RESULT([$sqlite_version]) | ||
999 | 94 | svn_lib_sqlite="yes" | ||
1000 | 95 | SVN_SQLITE_INCLUDES="`$PKG_CONFIG $SQLITE_PKGNAME --cflags`" | ||
1001 | 96 | SVN_SQLITE_LIBS="`$PKG_CONFIG $SQLITE_PKGNAME --libs`" | ||
1002 | 97 | else | ||
1003 | 98 | AC_MSG_RESULT([none or unsupported $sqlite_version]) | ||
1004 | 99 | fi | ||
1005 | 100 | fi | ||
1006 | 101 | fi | ||
1007 | 102 | |||
1008 | 103 | if test -z "$svn_lib_sqlite"; then | ||
1009 | 104 | AC_MSG_RESULT(no) | ||
1010 | 105 | fi | ||
1011 | 106 | ]) | ||
1012 | 107 | |||
1013 | 108 | dnl SVN_SQLITE_DIR_CONFIG(sqlite_dir) | ||
1014 | 109 | dnl | ||
1015 | 110 | dnl Check to see if we've got an appropriate sqlite library at sqlite_dir. | ||
1016 | 111 | dnl If we don't, fail. | ||
1017 | 112 | AC_DEFUN(SVN_SQLITE_DIR_CONFIG, | ||
1018 | 113 | [ | ||
1019 | 114 | if test -z "$1"; then | ||
1020 | 115 | sqlite_dir="" | ||
1021 | 116 | sqlite_include="sqlite3.h" | ||
1022 | 117 | else | ||
1023 | 118 | sqlite_dir="$1" | ||
1024 | 119 | sqlite_include="$1/include/sqlite3.h" | ||
1025 | 120 | fi | ||
1026 | 121 | |||
1027 | 122 | save_CPPFLAGS="$CPPFLAGS" | ||
1028 | 123 | save_LDFLAGS="$LDFLAGS" | ||
1029 | 124 | |||
1030 | 125 | if test ! -z "$1"; then | ||
1031 | 126 | CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include" | ||
1032 | 127 | LDFLAGS="$LDFLAGS -L$sqlite_dir/lib" | ||
1033 | 128 | fi | ||
1034 | 129 | |||
1035 | 130 | AC_CHECK_HEADER(sqlite3.h, | ||
1036 | 131 | [ | ||
1037 | 132 | AC_MSG_CHECKING([sqlite library version (via header)]) | ||
1038 | 133 | AC_EGREP_CPP(SQLITE_VERSION_OKAY,[ | ||
1039 | 134 | #include "$sqlite_include" | ||
1040 | 135 | #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num | ||
1041 | 136 | SQLITE_VERSION_OKAY | ||
1042 | 137 | #endif], | ||
1043 | 138 | [AC_MSG_RESULT([okay]) | ||
1044 | 139 | AC_CHECK_LIB(sqlite3, sqlite3_close, [ | ||
1045 | 140 | svn_lib_sqlite="yes" | ||
1046 | 141 | if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then | ||
1047 | 142 | SVN_SQLITE_LIBS="-lsqlite3" | ||
1048 | 143 | else | ||
1049 | 144 | SVN_SQLITE_INCLUDES="-I$sqlite_dir/include" | ||
1050 | 145 | SVN_SQLITE_LIBS="-L$sqlite_dir/lib -lsqlite3" | ||
1051 | 146 | fi | ||
1052 | 147 | ])], [AC_MSG_RESULT([unsupported SQLite version])]) | ||
1053 | 148 | ]) | ||
1054 | 149 | |||
1055 | 150 | CPPFLAGS="$save_CPPFLAGS" | ||
1056 | 151 | LDFLAGS="$save_LDFLAGS" | ||
1057 | 152 | ]) | ||
1058 | 153 | |||
1059 | 154 | dnl SVN_SQLITE_FILE_CONFIG(sqlite_file) | ||
1060 | 155 | dnl | ||
1061 | 156 | dnl Check to see if we've got an appropriate sqlite amalgamation file | ||
1062 | 157 | dnl at sqlite_file. If not, fail. | ||
1063 | 158 | AC_DEFUN(SVN_SQLITE_FILE_CONFIG, | ||
1064 | 159 | [ | ||
1065 | 160 | sqlite_amalg="$1" | ||
1066 | 161 | if test ! -e $sqlite_amalg; then | ||
1067 | 162 | echo "amalgamation not found at $sqlite_amalg" | ||
1068 | 163 | else | ||
1069 | 164 | AC_MSG_CHECKING([sqlite amalgamation file version]) | ||
1070 | 165 | AC_EGREP_CPP(SQLITE_VERSION_OKAY,[ | ||
1071 | 166 | #include "$sqlite_amalg" | ||
1072 | 167 | #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num | ||
1073 | 168 | SQLITE_VERSION_OKAY | ||
1074 | 169 | #endif], | ||
1075 | 170 | [AC_MSG_RESULT([amalgamation found and is okay]) | ||
1076 | 171 | AC_DEFINE(SVN_SQLITE_INLINE, 1, | ||
1077 | 172 | [Defined if svn should use the amalgamated version of sqlite]) | ||
1078 | 173 | SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`" | ||
1079 | 174 | svn_lib_sqlite="yes"], | ||
1080 | 175 | [AC_MSG_RESULT([unsupported amalgamation SQLite version])]) | ||
1081 | 176 | fi | ||
1082 | 177 | ]) | ||
1083 | 178 | |||
1084 | 179 | dnl SVN_SQLITE_VERNUM_PARSE() | ||
1085 | 180 | dnl | ||
1086 | 181 | dnl Parse a x.y[.z] version string sqlite_version into a number sqlite_ver_num. | ||
1087 | 182 | AC_DEFUN(SVN_SQLITE_VERNUM_PARSE, | ||
1088 | 183 | [ | ||
1089 | 184 | sqlite_major=`expr $sqlite_version : '\([[0-9]]*\)'` | ||
1090 | 185 | sqlite_minor=`expr $sqlite_version : '[[0-9]]*\.\([[0-9]]*\)'` | ||
1091 | 186 | sqlite_micro=`expr $sqlite_version : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` | ||
1092 | 187 | if test -z "$sqlite_micro"; then | ||
1093 | 188 | sqlite_micro=0 | ||
1094 | 189 | fi | ||
1095 | 190 | sqlite_ver_num=`expr $sqlite_major \* 1000000 \ | ||
1096 | 191 | \+ $sqlite_minor \* 1000 \ | ||
1097 | 192 | \+ $sqlite_micro` | ||
1098 | 193 | ]) | ||
1099 | 194 | |||
1100 | 195 | dnl SVN_SQLITE_MIN_VERNUM_PARSE() | ||
1101 | 196 | dnl | ||
1102 | 197 | dnl Parse a x.y.z version string SQLITE_MINIMUM_VER into a number | ||
1103 | 198 | dnl sqlite_min_ver_num. | ||
1104 | 199 | AC_DEFUN(SVN_SQLITE_MIN_VERNUM_PARSE, | ||
1105 | 200 | [ | ||
1106 | 201 | sqlite_min_major=`expr $SQLITE_MINIMUM_VER : '\([[0-9]]*\)'` | ||
1107 | 202 | sqlite_min_minor=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.\([[0-9]]*\)'` | ||
1108 | 203 | sqlite_min_micro=`expr $SQLITE_MINIMUM_VER : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` | ||
1109 | 204 | sqlite_min_ver_num=`expr $sqlite_min_major \* 1000000 \ | ||
1110 | 205 | \+ $sqlite_min_minor \* 1000 \ | ||
1111 | 206 | \+ $sqlite_min_micro` | ||
1112 | 207 | ]) | ||
1113 | 208 | |||
1114 | 209 | dnl SVN_DOWNLOAD_SQLITE() | ||
1115 | 210 | dnl no sqlite found, print out a message telling the user what to do | ||
1116 | 211 | AC_DEFUN(SVN_DOWNLOAD_SQLITE, | ||
1117 | 212 | [ | ||
1118 | 213 | echo "" | ||
1119 | 214 | echo "An appropriate version of sqlite could not be found. We recommmend" | ||
1120 | 215 | echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}." | ||
1121 | 216 | echo "Please either install a newer sqlite on this system" | ||
1122 | 217 | echo "" | ||
1123 | 218 | echo "or" | ||
1124 | 219 | echo "" | ||
1125 | 220 | echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:" | ||
1126 | 221 | echo " ${SQLITE_URL}" | ||
1127 | 222 | echo "unpack the archive using tar/gunzip and copy sqlite3.c from the" | ||
1128 | 223 | echo "resulting directory to:" | ||
1129 | 224 | echo "$abs_srcdir/sqlite-amalgamation/sqlite3.c" | ||
1130 | 225 | echo "This file also ships as part of the subversion-deps distribution." | ||
1131 | 226 | echo "" | ||
1132 | 227 | AC_MSG_ERROR([Subversion requires SQLite]) | ||
1133 | 228 | ]) | ||
1134 | 229 | 0 | ||
1135 | === modified file 'build/ac-macros/svn-macros.m4' | |||
1136 | --- build/ac-macros/svn-macros.m4 2009-06-06 22:57:04 +0000 | |||
1137 | +++ build/ac-macros/svn-macros.m4 2009-12-12 13:21:15 +0000 | |||
1138 | @@ -60,7 +60,7 @@ | |||
1139 | 60 | cd $1 | 60 | cd $1 |
1140 | 61 | 61 | ||
1141 | 62 | # A "../" for each directory in /$config_subdirs. | 62 | # A "../" for each directory in /$config_subdirs. |
1143 | 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'`] |
1144 | 64 | 64 | ||
1145 | 65 | # Make the cache file name correct relative to the subdirectory. | 65 | # Make the cache file name correct relative to the subdirectory. |
1146 | 66 | case "$cache_file" in | 66 | case "$cache_file" in |
1147 | 67 | 67 | ||
1148 | === modified file 'build/ac-macros/swig.m4' | |||
1149 | --- build/ac-macros/swig.m4 2009-06-09 23:53:06 +0000 | |||
1150 | +++ build/ac-macros/swig.m4 2009-12-12 13:21:15 +0000 | |||
1151 | @@ -53,7 +53,7 @@ | |||
1152 | 53 | if test "$SWIG" != "none"; then | 53 | if test "$SWIG" != "none"; then |
1153 | 54 | AC_MSG_CHECKING([swig version]) | 54 | AC_MSG_CHECKING([swig version]) |
1154 | 55 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ | 55 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ |
1156 | 56 | sed -ne 's/^.*Version \(.*\)$/\1/p'`" | 56 | $SED -ne 's/^.*Version \(.*\)$/\1/p'`" |
1157 | 57 | # We want the version as an integer so we can test against | 57 | # We want the version as an integer so we can test against |
1158 | 58 | # which version we're using. SWIG doesn't provide this | 58 | # which version we're using. SWIG doesn't provide this |
1159 | 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. |
1160 | @@ -62,7 +62,7 @@ | |||
1161 | 62 | # and the patch level is zero padded to three places. | 62 | # and the patch level is zero padded to three places. |
1162 | 63 | # e.g. 1.3.24 becomes 103024 | 63 | # e.g. 1.3.24 becomes 103024 |
1163 | 64 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ | 64 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ |
1165 | 65 | sed -e 's/[[^0-9\.]].*$//' \ | 65 | $SED -e 's/[[^0-9\.]].*$//' \ |
1166 | 66 | -e 's/\.\([[0-9]]\)$/.0\1/' \ | 66 | -e 's/\.\([[0-9]]\)$/.0\1/' \ |
1167 | 67 | -e 's/\.\([[0-9]][[0-9]]\)$/.0\1/' \ | 67 | -e 's/\.\([[0-9]][[0-9]]\)$/.0\1/' \ |
1168 | 68 | -e 's/\.\([[0-9]]\)\./0\1/; s/\.//g;'`" | 68 | -e 's/\.\([[0-9]]\)\./0\1/; s/\.//g;'`" |
1169 | @@ -190,7 +190,7 @@ | |||
1170 | 190 | 190 | ||
1171 | 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],[ |
1172 | 192 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS | 192 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS |
1174 | 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"`" |
1175 | 194 | ]) | 194 | ]) |
1176 | 195 | SWIG_RB_COMPILE="$svn_cv_ruby_compile" | 195 | SWIG_RB_COMPILE="$svn_cv_ruby_compile" |
1177 | 196 | 196 | ||
1178 | @@ -210,7 +210,7 @@ | |||
1179 | 210 | AC_MSG_CHECKING([for rb_errinfo]) | 210 | AC_MSG_CHECKING([for rb_errinfo]) |
1180 | 211 | old_CFLAGS="$CFLAGS" | 211 | old_CFLAGS="$CFLAGS" |
1181 | 212 | old_LIBS="$LIBS" | 212 | old_LIBS="$LIBS" |
1183 | 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" |
1184 | 214 | LIBS="$SWIG_RB_LIBS" | 214 | LIBS="$SWIG_RB_LIBS" |
1185 | 215 | AC_LINK_IFELSE([ | 215 | AC_LINK_IFELSE([ |
1186 | 216 | #include <ruby.h> | 216 | #include <ruby.h> |
1187 | @@ -239,7 +239,7 @@ | |||
1188 | 239 | AC_MSG_CHECKING([where to install Ruby scripts]) | 239 | AC_MSG_CHECKING([where to install Ruby scripts]) |
1189 | 240 | AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[ | 240 | AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[ |
1190 | 241 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ | 241 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ |
1192 | 242 | sed -e "s,^$rbconfig_sitedir,,"`" | 242 | $SED -e "s,^$rbconfig_sitedir,,"`" |
1193 | 243 | ]) | 243 | ]) |
1194 | 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}" |
1195 | 245 | AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR]) | 245 | AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR]) |
1196 | @@ -247,7 +247,7 @@ | |||
1197 | 247 | AC_MSG_CHECKING([where to install Ruby extensions]) | 247 | AC_MSG_CHECKING([where to install Ruby extensions]) |
1198 | 248 | AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[ | 248 | AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[ |
1199 | 249 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ | 249 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ |
1201 | 250 | sed -e "s,^$rbconfig_sitedir,,"`" | 250 | $SED -e "s,^$rbconfig_sitedir,,"`" |
1202 | 251 | ]) | 251 | ]) |
1203 | 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}" |
1204 | 253 | AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR]) | 253 | AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR]) |
1205 | 254 | 254 | ||
1206 | === modified file 'build/run_tests.py' | |||
1207 | --- build/run_tests.py 2009-06-09 23:53:06 +0000 | |||
1208 | +++ build/run_tests.py 2009-12-12 13:21:15 +0000 | |||
1209 | @@ -16,6 +16,7 @@ | |||
1210 | 16 | ''' | 16 | ''' |
1211 | 17 | 17 | ||
1212 | 18 | import os, sys | 18 | import os, sys |
1213 | 19 | import time | ||
1214 | 19 | 20 | ||
1215 | 20 | import getopt | 21 | import getopt |
1216 | 21 | try: | 22 | try: |
1217 | @@ -135,6 +136,7 @@ | |||
1218 | 135 | self.log.write('START: %s\n' % progbase) | 136 | self.log.write('START: %s\n' % progbase) |
1219 | 136 | self.log.flush() | 137 | self.log.flush() |
1220 | 137 | 138 | ||
1221 | 139 | start_time = time.time() | ||
1222 | 138 | if progbase[-3:] == '.py': | 140 | if progbase[-3:] == '.py': |
1223 | 139 | progname = sys.executable | 141 | progname = sys.executable |
1224 | 140 | cmdline = [quote(progname), | 142 | cmdline = [quote(progname), |
1225 | @@ -197,7 +199,14 @@ | |||
1226 | 197 | print('FAILURE') | 199 | print('FAILURE') |
1227 | 198 | else: | 200 | else: |
1228 | 199 | print('success') | 201 | print('success') |
1230 | 200 | self.log.write('END: %s\n\n' % progbase) | 202 | elapsed_time = time.strftime('%H:%M:%S', |
1231 | 203 | time.gmtime(time.time() - start_time)) | ||
1232 | 204 | if self.log: | ||
1233 | 205 | self.log.write('END: %s\n' % progbase) | ||
1234 | 206 | self.log.write('ELAPSED: %s %s\n\n' % (progbase, elapsed_time)) | ||
1235 | 207 | else: | ||
1236 | 208 | print('END: %s\n' % progbase) | ||
1237 | 209 | print('ELAPSED: %s %s\n' % (progbase, elapsed_time)) | ||
1238 | 201 | return failed | 210 | return failed |
1239 | 202 | 211 | ||
1240 | 203 | def _run_prog(self, progname, arglist): | 212 | def _run_prog(self, progname, arglist): |
1241 | 204 | 213 | ||
1242 | === added file 'build/transform_sql.py' | |||
1243 | --- build/transform_sql.py 1970-01-01 00:00:00 +0000 | |||
1244 | +++ build/transform_sql.py 2009-12-12 13:21:15 +0000 | |||
1245 | @@ -0,0 +1,62 @@ | |||
1246 | 1 | #!/usr/bin/env python | ||
1247 | 2 | # | ||
1248 | 3 | # transform_sql.py -- create a header file with the appropriate SQL variables | ||
1249 | 4 | # from an SQL file | ||
1250 | 5 | # | ||
1251 | 6 | |||
1252 | 7 | |||
1253 | 8 | import os | ||
1254 | 9 | import re | ||
1255 | 10 | import sys | ||
1256 | 11 | |||
1257 | 12 | |||
1258 | 13 | def usage_and_exit(msg): | ||
1259 | 14 | if msg: | ||
1260 | 15 | sys.stderr.write('%s\n\n' % msg) | ||
1261 | 16 | sys.stderr.write( | ||
1262 | 17 | 'USAGE: %s SQLITE_FILE [OUTPUT_FILE]\n' | ||
1263 | 18 | ' stdout will be used if OUTPUT_FILE is not provided.\n' | ||
1264 | 19 | % os.path.basename(sys.argv[0])) | ||
1265 | 20 | sys.stderr.flush() | ||
1266 | 21 | sys.exit(1) | ||
1267 | 22 | |||
1268 | 23 | |||
1269 | 24 | def main(input, output, filename): | ||
1270 | 25 | input = input.read() | ||
1271 | 26 | |||
1272 | 27 | var_name = re.sub('[-.]', '_', filename) | ||
1273 | 28 | |||
1274 | 29 | output.write( | ||
1275 | 30 | '/* This file is automatically generated from %s.\n' | ||
1276 | 31 | ' * Do not edit this file -- edit the source and rerun gen-make.py */\n' | ||
1277 | 32 | '\n' | ||
1278 | 33 | % (filename,)) | ||
1279 | 34 | |||
1280 | 35 | output.write('#define %s \\\n' % var_name.upper()) | ||
1281 | 36 | |||
1282 | 37 | regex = re.compile(r'/\*.*?\*/', re.MULTILINE|re.DOTALL) | ||
1283 | 38 | input = regex.sub('', input) | ||
1284 | 39 | |||
1285 | 40 | for line in input.split('\n'): | ||
1286 | 41 | line = line.replace('"', '\\"') | ||
1287 | 42 | |||
1288 | 43 | if line.strip(): | ||
1289 | 44 | # got something besides whitespace. write it out. | ||
1290 | 45 | output.write(' "' + line + '"\\\n') | ||
1291 | 46 | |||
1292 | 47 | output.write(' ""\n') | ||
1293 | 48 | |||
1294 | 49 | |||
1295 | 50 | if __name__ == '__main__': | ||
1296 | 51 | if len(sys.argv) < 2 or len(sys.argv) > 3: | ||
1297 | 52 | usage_and_exit('Incorrect number of arguments') | ||
1298 | 53 | |||
1299 | 54 | # Note: we could use stdin, but then we'd have no var_name | ||
1300 | 55 | input_file = open(sys.argv[1], 'r') | ||
1301 | 56 | |||
1302 | 57 | if len(sys.argv) > 2: | ||
1303 | 58 | output_file = open(sys.argv[2], 'w') | ||
1304 | 59 | else: | ||
1305 | 60 | output_file = sys.stdout | ||
1306 | 61 | |||
1307 | 62 | main(input_file, output_file, os.path.basename(sys.argv[1])) | ||
1308 | 0 | 63 | ||
1309 | === removed file 'build/transform_sql.py' | |||
1310 | --- build/transform_sql.py 2009-04-09 17:30:40 +0000 | |||
1311 | +++ build/transform_sql.py 1970-01-01 00:00:00 +0000 | |||
1312 | @@ -1,62 +0,0 @@ | |||
1313 | 1 | #!/usr/bin/env python | ||
1314 | 2 | # | ||
1315 | 3 | # transform_sql.py -- create a header file with the appropriate SQL variables | ||
1316 | 4 | # from an SQL file | ||
1317 | 5 | # | ||
1318 | 6 | |||
1319 | 7 | |||
1320 | 8 | import os | ||
1321 | 9 | import re | ||
1322 | 10 | import sys | ||
1323 | 11 | |||
1324 | 12 | |||
1325 | 13 | def usage_and_exit(msg): | ||
1326 | 14 | if msg: | ||
1327 | 15 | sys.stderr.write('%s\n\n' % msg) | ||
1328 | 16 | sys.stderr.write( | ||
1329 | 17 | 'USAGE: %s SQLITE_FILE [OUTPUT_FILE]\n' | ||
1330 | 18 | ' stdout will be used if OUTPUT_FILE is not provided.\n' | ||
1331 | 19 | % os.path.basename(sys.argv[0])) | ||
1332 | 20 | sys.stderr.flush() | ||
1333 | 21 | sys.exit(1) | ||
1334 | 22 | |||
1335 | 23 | |||
1336 | 24 | def main(input, output, filename): | ||
1337 | 25 | input = input.read() | ||
1338 | 26 | |||
1339 | 27 | var_name = re.sub('[-.]', '_', filename) | ||
1340 | 28 | |||
1341 | 29 | output.write( | ||
1342 | 30 | '/* This file is automatically generated from %s.\n' | ||
1343 | 31 | ' * Do not edit this file -- edit the source and rerun gen-make.py */\n' | ||
1344 | 32 | '\n' | ||
1345 | 33 | % (filename,)) | ||
1346 | 34 | |||
1347 | 35 | output.write('#define %s \\\n' % var_name.upper()) | ||
1348 | 36 | |||
1349 | 37 | regex = re.compile(r'/\*.*?\*/', re.MULTILINE|re.DOTALL) | ||
1350 | 38 | input = regex.sub('', input) | ||
1351 | 39 | |||
1352 | 40 | for line in input.split('\n'): | ||
1353 | 41 | line = line.replace('"', '\\"') | ||
1354 | 42 | |||
1355 | 43 | if line.strip(): | ||
1356 | 44 | # got something besides whitespace. write it out. | ||
1357 | 45 | output.write(' "' + line + '"\\\n') | ||
1358 | 46 | |||
1359 | 47 | output.write(' ""\n') | ||
1360 | 48 | |||
1361 | 49 | |||
1362 | 50 | if __name__ == '__main__': | ||
1363 | 51 | if len(sys.argv) < 2 or len(sys.argv) > 3: | ||
1364 | 52 | usage_and_exit('Incorrect number of arguments') | ||
1365 | 53 | |||
1366 | 54 | # Note: we could use stdin, but then we'd have no var_name | ||
1367 | 55 | input_file = open(sys.argv[1], 'r') | ||
1368 | 56 | |||
1369 | 57 | if len(sys.argv) > 2: | ||
1370 | 58 | output_file = open(sys.argv[2], 'w') | ||
1371 | 59 | else: | ||
1372 | 60 | output_file = sys.stdout | ||
1373 | 61 | |||
1374 | 62 | main(input_file, output_file, os.path.basename(sys.argv[1])) | ||
1375 | 63 | 0 | ||
1376 | === added file 'build/transform_sql.sh' | |||
1377 | --- build/transform_sql.sh 1970-01-01 00:00:00 +0000 | |||
1378 | +++ build/transform_sql.sh 2009-12-12 13:21:15 +0000 | |||
1379 | @@ -0,0 +1,42 @@ | |||
1380 | 1 | #!/bin/sh | ||
1381 | 2 | |||
1382 | 3 | varname=`basename $1 | tr "[a-z]" "[A-Z]" | tr "-" "_" | tr "." "_"` | ||
1383 | 4 | |||
1384 | 5 | echo "/* This file is automatically generated from" | ||
1385 | 6 | echo " * $1" | ||
1386 | 7 | echo " * Do not edit it directly, but edit the source file and rerun 'make'" | ||
1387 | 8 | echo " */" | ||
1388 | 9 | echo | ||
1389 | 10 | echo "#define $varname \\" | ||
1390 | 11 | |||
1391 | 12 | comment=false | ||
1392 | 13 | |||
1393 | 14 | IFS=" | ||
1394 | 15 | " | ||
1395 | 16 | while read line; do | ||
1396 | 17 | line=`echo "$line" | sed -e 's/\/\*.*\*\///g' | sed -e 's/[ ]*$//g'` | ||
1397 | 18 | |||
1398 | 19 | if [ -z "$line" ]; then | ||
1399 | 20 | continue | ||
1400 | 21 | fi | ||
1401 | 22 | |||
1402 | 23 | if [ "$comment" = "false" ] && echo "$line" | fgrep '/*' >/dev/null; then | ||
1403 | 24 | comment=true | ||
1404 | 25 | fi | ||
1405 | 26 | |||
1406 | 27 | if [ "$comment" = "true" ] && echo "$line" | fgrep '*/' >/dev/null; then | ||
1407 | 28 | comment=false | ||
1408 | 29 | continue | ||
1409 | 30 | fi | ||
1410 | 31 | |||
1411 | 32 | if [ "$comment" = "true" ]; then | ||
1412 | 33 | continue | ||
1413 | 34 | fi | ||
1414 | 35 | |||
1415 | 36 | line="`echo "$line" | sed -e 's/"/\\"/g'`" #' hi, emacs syntax coloring! | ||
1416 | 37 | if [ -n "$line" ]; then | ||
1417 | 38 | echo " \"$line \"\\" | ||
1418 | 39 | fi | ||
1419 | 40 | done | ||
1420 | 41 | |||
1421 | 42 | echo ' ""' | ||
1422 | 0 | 43 | ||
1423 | === removed file 'build/transform_sql.sh' | |||
1424 | --- build/transform_sql.sh 2009-04-09 17:30:40 +0000 | |||
1425 | +++ build/transform_sql.sh 1970-01-01 00:00:00 +0000 | |||
1426 | @@ -1,42 +0,0 @@ | |||
1427 | 1 | #!/bin/sh | ||
1428 | 2 | |||
1429 | 3 | varname=`basename $1 | tr "[a-z]" "[A-Z]" | tr "-" "_" | tr "." "_"` | ||
1430 | 4 | |||
1431 | 5 | echo "/* This file is automatically generated from" | ||
1432 | 6 | echo " * $1" | ||
1433 | 7 | echo " * Do not edit it directly, but edit the source file and rerun 'make'" | ||
1434 | 8 | echo " */" | ||
1435 | 9 | echo | ||
1436 | 10 | echo "#define $varname \\" | ||
1437 | 11 | |||
1438 | 12 | comment=false | ||
1439 | 13 | |||
1440 | 14 | IFS=" | ||
1441 | 15 | " | ||
1442 | 16 | while read line; do | ||
1443 | 17 | line=`echo "$line" | sed -e 's/\/\*.*\*\///g' | sed -e 's/[ ]*$//g'` | ||
1444 | 18 | |||
1445 | 19 | if [ -z "$line" ]; then | ||
1446 | 20 | continue | ||
1447 | 21 | fi | ||
1448 | 22 | |||
1449 | 23 | if [ "$comment" = "false" ] && echo "$line" | fgrep '/*' >/dev/null; then | ||
1450 | 24 | comment=true | ||
1451 | 25 | fi | ||
1452 | 26 | |||
1453 | 27 | if [ "$comment" = "true" ] && echo "$line" | fgrep '*/' >/dev/null; then | ||
1454 | 28 | comment=false | ||
1455 | 29 | continue | ||
1456 | 30 | fi | ||
1457 | 31 | |||
1458 | 32 | if [ "$comment" = "true" ]; then | ||
1459 | 33 | continue | ||
1460 | 34 | fi | ||
1461 | 35 | |||
1462 | 36 | line="`echo "$line" | sed -e 's/"/\\"/g'`" #' hi, emacs syntax coloring! | ||
1463 | 37 | if [ -n "$line" ]; then | ||
1464 | 38 | echo " \"$line \"\\" | ||
1465 | 39 | fi | ||
1466 | 40 | done | ||
1467 | 41 | |||
1468 | 42 | echo ' ""' | ||
1469 | 43 | 0 | ||
1470 | === modified file 'configure' | |||
1471 | --- configure 2009-08-24 19:09:22 +0000 | |||
1472 | +++ configure 2009-12-12 13:21:15 +0000 | |||
1473 | @@ -1,6 +1,6 @@ | |||
1474 | 1 | #! /bin/sh | 1 | #! /bin/sh |
1475 | 2 | # Guess values for system-dependent variables and create Makefiles. | 2 | # Guess values for system-dependent variables and create Makefiles. |
1477 | 3 | # Generated by GNU Autoconf 2.63 for subversion 1.6.5. | 3 | # Generated by GNU Autoconf 2.63 for subversion 1.6.6. |
1478 | 4 | # | 4 | # |
1479 | 5 | # Report bugs to <http://subversion.tigris.org/>. | 5 | # Report bugs to <http://subversion.tigris.org/>. |
1480 | 6 | # | 6 | # |
1481 | @@ -750,8 +750,8 @@ | |||
1482 | 750 | # Identity of this package. | 750 | # Identity of this package. |
1483 | 751 | PACKAGE_NAME='subversion' | 751 | PACKAGE_NAME='subversion' |
1484 | 752 | PACKAGE_TARNAME='subversion' | 752 | PACKAGE_TARNAME='subversion' |
1487 | 753 | PACKAGE_VERSION='1.6.5' | 753 | PACKAGE_VERSION='1.6.6' |
1488 | 754 | PACKAGE_STRING='subversion 1.6.5' | 754 | PACKAGE_STRING='subversion 1.6.6' |
1489 | 755 | PACKAGE_BUGREPORT='http://subversion.tigris.org/' | 755 | PACKAGE_BUGREPORT='http://subversion.tigris.org/' |
1490 | 756 | 756 | ||
1491 | 757 | ac_unique_file="subversion/include/svn_types.h" | 757 | ac_unique_file="subversion/include/svn_types.h" |
1492 | @@ -874,7 +874,6 @@ | |||
1493 | 874 | RANLIB | 874 | RANLIB |
1494 | 875 | AR | 875 | AR |
1495 | 876 | ECHO | 876 | ECHO |
1496 | 877 | SED | ||
1497 | 878 | SVN_BINDIR | 877 | SVN_BINDIR |
1498 | 879 | SVN_SQLITE_LIBS | 878 | SVN_SQLITE_LIBS |
1499 | 880 | SVN_SQLITE_INCLUDES | 879 | SVN_SQLITE_INCLUDES |
1500 | @@ -923,6 +922,7 @@ | |||
1501 | 923 | build_vendor | 922 | build_vendor |
1502 | 924 | build_cpu | 923 | build_cpu |
1503 | 925 | build | 924 | build |
1504 | 925 | SED | ||
1505 | 926 | CPP | 926 | CPP |
1506 | 927 | ac_ct_CXX | 927 | ac_ct_CXX |
1507 | 928 | CXXFLAGS | 928 | CXXFLAGS |
1508 | @@ -1588,7 +1588,7 @@ | |||
1509 | 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. |
1510 | 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. |
1511 | 1590 | cat <<_ACEOF | 1590 | cat <<_ACEOF |
1513 | 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. |
1514 | 1592 | 1592 | ||
1515 | 1593 | Usage: $0 [OPTION]... [VAR=VALUE]... | 1593 | Usage: $0 [OPTION]... [VAR=VALUE]... |
1516 | 1594 | 1594 | ||
1517 | @@ -1654,7 +1654,7 @@ | |||
1518 | 1654 | 1654 | ||
1519 | 1655 | if test -n "$ac_init_help"; then | 1655 | if test -n "$ac_init_help"; then |
1520 | 1656 | case $ac_init_help in | 1656 | case $ac_init_help in |
1522 | 1657 | short | recursive ) echo "Configuration of subversion 1.6.5:";; | 1657 | short | recursive ) echo "Configuration of subversion 1.6.6:";; |
1523 | 1658 | esac | 1658 | esac |
1524 | 1659 | cat <<\_ACEOF | 1659 | cat <<\_ACEOF |
1525 | 1660 | 1660 | ||
1526 | @@ -1840,7 +1840,7 @@ | |||
1527 | 1840 | test -n "$ac_init_help" && exit $ac_status | 1840 | test -n "$ac_init_help" && exit $ac_status |
1528 | 1841 | if $ac_init_version; then | 1841 | if $ac_init_version; then |
1529 | 1842 | cat <<\_ACEOF | 1842 | cat <<\_ACEOF |
1531 | 1843 | subversion configure 1.6.5 | 1843 | subversion configure 1.6.6 |
1532 | 1844 | generated by GNU Autoconf 2.63 | 1844 | generated by GNU Autoconf 2.63 |
1533 | 1845 | 1845 | ||
1534 | 1846 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, | 1846 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
1535 | @@ -1854,7 +1854,7 @@ | |||
1536 | 1854 | This file contains any messages produced by compilers while | 1854 | This file contains any messages produced by compilers while |
1537 | 1855 | running configure, to aid debugging if configure makes a mistake. | 1855 | running configure, to aid debugging if configure makes a mistake. |
1538 | 1856 | 1856 | ||
1540 | 1857 | It was created by subversion $as_me 1.6.5, which was | 1857 | It was created by subversion $as_me 1.6.6, which was |
1541 | 1858 | generated by GNU Autoconf 2.63. Invocation command line was | 1858 | generated by GNU Autoconf 2.63. Invocation command line was |
1542 | 1859 | 1859 | ||
1543 | 1860 | $ $0 $@ | 1860 | $ $0 $@ |
1544 | @@ -2256,8 +2256,8 @@ | |||
1545 | 2256 | 2256 | ||
1546 | 2257 | 2257 | ||
1547 | 2258 | 2258 | ||
1550 | 2259 | { $as_echo "$as_me:$LINENO: Configuring Subversion 1.6.5" >&5 | 2259 | { $as_echo "$as_me:$LINENO: Configuring Subversion 1.6.6" >&5 |
1551 | 2260 | $as_echo "$as_me: Configuring Subversion 1.6.5" >&6;} | 2260 | $as_echo "$as_me: Configuring Subversion 1.6.6" >&6;} |
1552 | 2261 | 2261 | ||
1553 | 2262 | abs_srcdir="`cd $srcdir && pwd`" | 2262 | abs_srcdir="`cd $srcdir && pwd`" |
1554 | 2263 | 2263 | ||
1555 | @@ -3843,6 +3843,80 @@ | |||
1556 | 3843 | ac_compiler_gnu=$ac_cv_c_compiler_gnu | 3843 | ac_compiler_gnu=$ac_cv_c_compiler_gnu |
1557 | 3844 | 3844 | ||
1558 | 3845 | 3845 | ||
1559 | 3846 | # Look for a good sed | ||
1560 | 3847 | # AC_PROG_SED was introduced in Autoconf 2.59b | ||
1561 | 3848 | { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 | ||
1562 | 3849 | $as_echo_n "checking for a sed that does not truncate output... " >&6; } | ||
1563 | 3850 | if test "${ac_cv_path_SED+set}" = set; then | ||
1564 | 3851 | $as_echo_n "(cached) " >&6 | ||
1565 | 3852 | else | ||
1566 | 3853 | ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ | ||
1567 | 3854 | for ac_i in 1 2 3 4 5 6 7; do | ||
1568 | 3855 | ac_script="$ac_script$as_nl$ac_script" | ||
1569 | 3856 | done | ||
1570 | 3857 | echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed | ||
1571 | 3858 | $as_unset ac_script || ac_script= | ||
1572 | 3859 | if test -z "$SED"; then | ||
1573 | 3860 | ac_path_SED_found=false | ||
1574 | 3861 | # Loop through the user's path and test for each of PROGNAME-LIST | ||
1575 | 3862 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||
1576 | 3863 | for as_dir in $PATH | ||
1577 | 3864 | do | ||
1578 | 3865 | IFS=$as_save_IFS | ||
1579 | 3866 | test -z "$as_dir" && as_dir=. | ||
1580 | 3867 | for ac_prog in sed gsed; do | ||
1581 | 3868 | for ac_exec_ext in '' $ac_executable_extensions; do | ||
1582 | 3869 | ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" | ||
1583 | 3870 | { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue | ||
1584 | 3871 | # Check for GNU ac_path_SED and select it if it is found. | ||
1585 | 3872 | # Check for GNU $ac_path_SED | ||
1586 | 3873 | case `"$ac_path_SED" --version 2>&1` in | ||
1587 | 3874 | *GNU*) | ||
1588 | 3875 | ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; | ||
1589 | 3876 | *) | ||
1590 | 3877 | ac_count=0 | ||
1591 | 3878 | $as_echo_n 0123456789 >"conftest.in" | ||
1592 | 3879 | while : | ||
1593 | 3880 | do | ||
1594 | 3881 | cat "conftest.in" "conftest.in" >"conftest.tmp" | ||
1595 | 3882 | mv "conftest.tmp" "conftest.in" | ||
1596 | 3883 | cp "conftest.in" "conftest.nl" | ||
1597 | 3884 | $as_echo '' >> "conftest.nl" | ||
1598 | 3885 | "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break | ||
1599 | 3886 | diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break | ||
1600 | 3887 | ac_count=`expr $ac_count + 1` | ||
1601 | 3888 | if test $ac_count -gt ${ac_path_SED_max-0}; then | ||
1602 | 3889 | # Best one so far, save it but keep looking for a better one | ||
1603 | 3890 | ac_cv_path_SED="$ac_path_SED" | ||
1604 | 3891 | ac_path_SED_max=$ac_count | ||
1605 | 3892 | fi | ||
1606 | 3893 | # 10*(2^10) chars as input seems more than enough | ||
1607 | 3894 | test $ac_count -gt 10 && break | ||
1608 | 3895 | done | ||
1609 | 3896 | rm -f conftest.in conftest.tmp conftest.nl conftest.out;; | ||
1610 | 3897 | esac | ||
1611 | 3898 | |||
1612 | 3899 | $ac_path_SED_found && break 3 | ||
1613 | 3900 | done | ||
1614 | 3901 | done | ||
1615 | 3902 | done | ||
1616 | 3903 | IFS=$as_save_IFS | ||
1617 | 3904 | if test -z "$ac_cv_path_SED"; then | ||
1618 | 3905 | { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 | ||
1619 | 3906 | $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} | ||
1620 | 3907 | { (exit 1); exit 1; }; } | ||
1621 | 3908 | fi | ||
1622 | 3909 | else | ||
1623 | 3910 | ac_cv_path_SED=$SED | ||
1624 | 3911 | fi | ||
1625 | 3912 | |||
1626 | 3913 | fi | ||
1627 | 3914 | { $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 | ||
1628 | 3915 | $as_echo "$ac_cv_path_SED" >&6; } | ||
1629 | 3916 | SED="$ac_cv_path_SED" | ||
1630 | 3917 | rm -f conftest.sed | ||
1631 | 3918 | |||
1632 | 3919 | |||
1633 | 3846 | # Grab target_cpu, so we can use it in the Solaris pkginfo file | 3920 | # Grab target_cpu, so we can use it in the Solaris pkginfo file |
1634 | 3847 | # Make sure we can run config.sub. | 3921 | # Make sure we can run config.sub. |
1635 | 3848 | $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || | 3922 | $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || |
1636 | @@ -4480,7 +4554,7 @@ | |||
1637 | 4480 | cd apr | 4554 | cd apr |
1638 | 4481 | 4555 | ||
1639 | 4482 | # A "../" for each directory in /$config_subdirs. | 4556 | # A "../" for each directory in /$config_subdirs. |
1641 | 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'` |
1642 | 4484 | 4558 | ||
1643 | 4485 | # Make the cache file name correct relative to the subdirectory. | 4559 | # Make the cache file name correct relative to the subdirectory. |
1644 | 4486 | case "$cache_file" in | 4560 | case "$cache_file" in |
1645 | @@ -4847,7 +4921,7 @@ | |||
1646 | 4847 | cd apr-util | 4921 | cd apr-util |
1647 | 4848 | 4922 | ||
1648 | 4849 | # A "../" for each directory in /$config_subdirs. | 4923 | # A "../" for each directory in /$config_subdirs. |
1650 | 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'` |
1651 | 4851 | 4925 | ||
1652 | 4852 | # Make the cache file name correct relative to the subdirectory. | 4926 | # Make the cache file name correct relative to the subdirectory. |
1653 | 4853 | case "$cache_file" in | 4927 | case "$cache_file" in |
1654 | @@ -5018,8 +5092,8 @@ | |||
1655 | 5018 | 5092 | ||
1656 | 5019 | # Either a space-separated list of allowable Neon versions, or "any" to | 5093 | # Either a space-separated list of allowable Neon versions, or "any" to |
1657 | 5020 | # mean allow anything. | 5094 | # mean allow anything. |
1660 | 5021 | NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28" | 5095 | NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28 0\.29" |
1661 | 5022 | NEON_RECOMMENDED_VER=0.28.4 | 5096 | NEON_RECOMMENDED_VER="0.29.0" |
1662 | 5023 | NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz" | 5097 | NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz" |
1663 | 5024 | # Check whether --enable-neon-version-check was given. | 5098 | # Check whether --enable-neon-version-check was given. |
1664 | 5025 | if test "${enable_neon_version_check+set}" = set; then | 5099 | if test "${enable_neon_version_check+set}" = set; then |
1665 | @@ -5063,7 +5137,7 @@ | |||
1666 | 5063 | if test "$NEON_PKG_CONFIG" = "yes" ; then | 5137 | if test "$NEON_PKG_CONFIG" = "yes" ; then |
1667 | 5064 | NEON_VERSION=`$PKG_CONFIG neon --modversion` | 5138 | NEON_VERSION=`$PKG_CONFIG neon --modversion` |
1668 | 5065 | else | 5139 | else |
1670 | 5066 | NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'` | 5140 | NEON_VERSION=`$neon_config --version | $SED -e 's/^neon //'` |
1671 | 5067 | fi | 5141 | fi |
1672 | 5068 | { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&5 | 5142 | { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&5 |
1673 | 5069 | $as_echo "$NEON_VERSION" >&6; } | 5143 | $as_echo "$NEON_VERSION" >&6; } |
1674 | @@ -5097,8 +5171,8 @@ | |||
1675 | 5097 | test "$svn_allowed_neon" = "any"; then | 5171 | test "$svn_allowed_neon" = "any"; then |
1676 | 5098 | svn_allowed_neon_on_system="yes" | 5172 | svn_allowed_neon_on_system="yes" |
1677 | 5099 | if test "$NEON_PKG_CONFIG" = "yes"; then | 5173 | if test "$NEON_PKG_CONFIG" = "yes"; then |
1680 | 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'` |
1681 | 5101 | CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | sed -e 's/-I[^ ]*//g'`" | 5175 | CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`" |
1682 | 5102 | old_CFLAGS="$CFLAGS" | 5176 | old_CFLAGS="$CFLAGS" |
1683 | 5103 | old_LIBS="$LIBS" | 5177 | old_LIBS="$LIBS" |
1684 | 5104 | NEON_LIBS=`$PKG_CONFIG neon --libs` | 5178 | NEON_LIBS=`$PKG_CONFIG neon --libs` |
1685 | @@ -5188,8 +5262,8 @@ | |||
1686 | 5188 | CFLAGS="$old_CFLAGS" | 5262 | CFLAGS="$old_CFLAGS" |
1687 | 5189 | LIBS="$old_LIBS" | 5263 | LIBS="$old_LIBS" |
1688 | 5190 | else | 5264 | else |
1691 | 5191 | SVN_NEON_INCLUDES=`$neon_config --cflags | sed -e 's/-D[^ ]*//g'` | 5265 | SVN_NEON_INCLUDES=`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'` |
1692 | 5192 | CFLAGS="$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`" | 5266 | CFLAGS="$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`" |
1693 | 5193 | NEON_LIBS=`$neon_config --libs` | 5267 | NEON_LIBS=`$neon_config --libs` |
1694 | 5194 | fi | 5268 | fi |
1695 | 5195 | svn_lib_neon="yes" | 5269 | svn_lib_neon="yes" |
1696 | @@ -5413,7 +5487,7 @@ | |||
1697 | 5413 | cd neon | 5487 | cd neon |
1698 | 5414 | 5488 | ||
1699 | 5415 | # A "../" for each directory in /$config_subdirs. | 5489 | # A "../" for each directory in /$config_subdirs. |
1701 | 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'` |
1702 | 5417 | 5491 | ||
1703 | 5418 | # Make the cache file name correct relative to the subdirectory. | 5492 | # Make the cache file name correct relative to the subdirectory. |
1704 | 5419 | case "$cache_file" in | 5493 | case "$cache_file" in |
1705 | @@ -5544,7 +5618,7 @@ | |||
1706 | 5544 | if test "$NEON_PKG_CONFIG" = "yes" ; then | 5618 | if test "$NEON_PKG_CONFIG" = "yes" ; then |
1707 | 5545 | NEON_VERSION=`$PKG_CONFIG neon --modversion` | 5619 | NEON_VERSION=`$PKG_CONFIG neon --modversion` |
1708 | 5546 | else | 5620 | else |
1710 | 5547 | NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'` | 5621 | NEON_VERSION=`$neon_config --version | $SED -e 's/^neon //'` |
1711 | 5548 | fi | 5622 | fi |
1712 | 5549 | { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&5 | 5623 | { $as_echo "$as_me:$LINENO: result: $NEON_VERSION" >&5 |
1713 | 5550 | $as_echo "$NEON_VERSION" >&6; } | 5624 | $as_echo "$NEON_VERSION" >&6; } |
1714 | @@ -5578,8 +5652,8 @@ | |||
1715 | 5578 | test "$svn_allowed_neon" = "any"; then | 5652 | test "$svn_allowed_neon" = "any"; then |
1716 | 5579 | svn_allowed_neon_on_system="yes" | 5653 | svn_allowed_neon_on_system="yes" |
1717 | 5580 | if test "$NEON_PKG_CONFIG" = "yes"; then | 5654 | if test "$NEON_PKG_CONFIG" = "yes"; then |
1720 | 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'` |
1721 | 5582 | CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | sed -e 's/-I[^ ]*//g'`" | 5656 | CFLAGS="$CFLAGS `$PKG_CONFIG neon --cflags | $SED -e 's/-I[^ ]*//g'`" |
1722 | 5583 | old_CFLAGS="$CFLAGS" | 5657 | old_CFLAGS="$CFLAGS" |
1723 | 5584 | old_LIBS="$LIBS" | 5658 | old_LIBS="$LIBS" |
1724 | 5585 | NEON_LIBS=`$PKG_CONFIG neon --libs` | 5659 | NEON_LIBS=`$PKG_CONFIG neon --libs` |
1725 | @@ -5669,8 +5743,8 @@ | |||
1726 | 5669 | CFLAGS="$old_CFLAGS" | 5743 | CFLAGS="$old_CFLAGS" |
1727 | 5670 | LIBS="$old_LIBS" | 5744 | LIBS="$old_LIBS" |
1728 | 5671 | else | 5745 | else |
1731 | 5672 | SVN_NEON_INCLUDES=`$neon_config --cflags | sed -e 's/-D[^ ]*//g'` | 5746 | SVN_NEON_INCLUDES=`$neon_config --cflags | $SED -e 's/-D[^ ]*//g'` |
1732 | 5673 | CFLAGS="$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`" | 5747 | CFLAGS="$CFLAGS `$neon_config --cflags | $SED -e 's/-I[^ ]*//g'`" |
1733 | 5674 | NEON_LIBS=`$neon_config --libs` | 5748 | NEON_LIBS=`$neon_config --libs` |
1734 | 5675 | fi | 5749 | fi |
1735 | 5676 | svn_lib_neon="yes" | 5750 | svn_lib_neon="yes" |
1736 | @@ -6358,7 +6432,7 @@ | |||
1737 | 6358 | cd serf | 6432 | cd serf |
1738 | 6359 | 6433 | ||
1739 | 6360 | # A "../" for each directory in /$config_subdirs. | 6434 | # A "../" for each directory in /$config_subdirs. |
1741 | 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'` |
1742 | 6362 | 6436 | ||
1743 | 6363 | # Make the cache file name correct relative to the subdirectory. | 6437 | # Make the cache file name correct relative to the subdirectory. |
1744 | 6364 | case "$cache_file" in | 6438 | case "$cache_file" in |
1745 | @@ -6982,7 +7056,7 @@ | |||
1746 | 6982 | cd apr_memcache | 7056 | cd apr_memcache |
1747 | 6983 | 7057 | ||
1748 | 6984 | # A "../" for each directory in /$config_subdirs. | 7058 | # A "../" for each directory in /$config_subdirs. |
1750 | 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'` |
1751 | 6986 | 7060 | ||
1752 | 6987 | # Make the cache file name correct relative to the subdirectory. | 7061 | # Make the cache file name correct relative to the subdirectory. |
1753 | 6988 | case "$cache_file" in | 7062 | case "$cache_file" in |
1754 | @@ -8603,7 +8677,7 @@ | |||
1755 | 8603 | ;; | 8677 | ;; |
1756 | 8604 | *-*-irix6*) | 8678 | *-*-irix6*) |
1757 | 8605 | # Find out which ABI we are using. | 8679 | # Find out which ABI we are using. |
1759 | 8606 | echo '#line 8606 "configure"' > conftest.$ac_ext | 8680 | echo '#line 8680 "configure"' > conftest.$ac_ext |
1760 | 8607 | if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | 8681 | if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 |
1761 | 8608 | (eval $ac_compile) 2>&5 | 8682 | (eval $ac_compile) 2>&5 |
1762 | 8609 | ac_status=$? | 8683 | ac_status=$? |
1763 | @@ -10724,11 +10798,11 @@ | |||
1764 | 10724 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 10798 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1765 | 10725 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 10799 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1766 | 10726 | -e 's:$: $lt_compiler_flag:'` | 10800 | -e 's:$: $lt_compiler_flag:'` |
1768 | 10727 | (eval echo "\"\$as_me:10727: $lt_compile\"" >&5) | 10801 | (eval echo "\"\$as_me:10801: $lt_compile\"" >&5) |
1769 | 10728 | (eval "$lt_compile" 2>conftest.err) | 10802 | (eval "$lt_compile" 2>conftest.err) |
1770 | 10729 | ac_status=$? | 10803 | ac_status=$? |
1771 | 10730 | cat conftest.err >&5 | 10804 | cat conftest.err >&5 |
1773 | 10731 | echo "$as_me:10731: \$? = $ac_status" >&5 | 10805 | echo "$as_me:10805: \$? = $ac_status" >&5 |
1774 | 10732 | if (exit $ac_status) && test -s "$ac_outfile"; then | 10806 | if (exit $ac_status) && test -s "$ac_outfile"; then |
1775 | 10733 | # The compiler can only warn and ignore the option if not recognized | 10807 | # The compiler can only warn and ignore the option if not recognized |
1776 | 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. |
1777 | @@ -11014,11 +11088,11 @@ | |||
1778 | 11014 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 11088 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1779 | 11015 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 11089 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1780 | 11016 | -e 's:$: $lt_compiler_flag:'` | 11090 | -e 's:$: $lt_compiler_flag:'` |
1782 | 11017 | (eval echo "\"\$as_me:11017: $lt_compile\"" >&5) | 11091 | (eval echo "\"\$as_me:11091: $lt_compile\"" >&5) |
1783 | 11018 | (eval "$lt_compile" 2>conftest.err) | 11092 | (eval "$lt_compile" 2>conftest.err) |
1784 | 11019 | ac_status=$? | 11093 | ac_status=$? |
1785 | 11020 | cat conftest.err >&5 | 11094 | cat conftest.err >&5 |
1787 | 11021 | echo "$as_me:11021: \$? = $ac_status" >&5 | 11095 | echo "$as_me:11095: \$? = $ac_status" >&5 |
1788 | 11022 | if (exit $ac_status) && test -s "$ac_outfile"; then | 11096 | if (exit $ac_status) && test -s "$ac_outfile"; then |
1789 | 11023 | # The compiler can only warn and ignore the option if not recognized | 11097 | # The compiler can only warn and ignore the option if not recognized |
1790 | 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. |
1791 | @@ -11118,11 +11192,11 @@ | |||
1792 | 11118 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 11192 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1793 | 11119 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 11193 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1794 | 11120 | -e 's:$: $lt_compiler_flag:'` | 11194 | -e 's:$: $lt_compiler_flag:'` |
1796 | 11121 | (eval echo "\"\$as_me:11121: $lt_compile\"" >&5) | 11195 | (eval echo "\"\$as_me:11195: $lt_compile\"" >&5) |
1797 | 11122 | (eval "$lt_compile" 2>out/conftest.err) | 11196 | (eval "$lt_compile" 2>out/conftest.err) |
1798 | 11123 | ac_status=$? | 11197 | ac_status=$? |
1799 | 11124 | cat out/conftest.err >&5 | 11198 | cat out/conftest.err >&5 |
1801 | 11125 | echo "$as_me:11125: \$? = $ac_status" >&5 | 11199 | echo "$as_me:11199: \$? = $ac_status" >&5 |
1802 | 11126 | if (exit $ac_status) && test -s out/conftest2.$ac_objext | 11200 | if (exit $ac_status) && test -s out/conftest2.$ac_objext |
1803 | 11127 | then | 11201 | then |
1804 | 11128 | # The compiler can only warn and ignore the option if not recognized | 11202 | # The compiler can only warn and ignore the option if not recognized |
1805 | @@ -13518,7 +13592,7 @@ | |||
1806 | 13518 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 | 13592 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 |
1807 | 13519 | lt_status=$lt_dlunknown | 13593 | lt_status=$lt_dlunknown |
1808 | 13520 | cat > conftest.$ac_ext <<EOF | 13594 | cat > conftest.$ac_ext <<EOF |
1810 | 13521 | #line 13521 "configure" | 13595 | #line 13595 "configure" |
1811 | 13522 | #include "confdefs.h" | 13596 | #include "confdefs.h" |
1812 | 13523 | 13597 | ||
1813 | 13524 | #if HAVE_DLFCN_H | 13598 | #if HAVE_DLFCN_H |
1814 | @@ -13618,7 +13692,7 @@ | |||
1815 | 13618 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 | 13692 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 |
1816 | 13619 | lt_status=$lt_dlunknown | 13693 | lt_status=$lt_dlunknown |
1817 | 13620 | cat > conftest.$ac_ext <<EOF | 13694 | cat > conftest.$ac_ext <<EOF |
1819 | 13621 | #line 13621 "configure" | 13695 | #line 13695 "configure" |
1820 | 13622 | #include "confdefs.h" | 13696 | #include "confdefs.h" |
1821 | 13623 | 13697 | ||
1822 | 13624 | #if HAVE_DLFCN_H | 13698 | #if HAVE_DLFCN_H |
1823 | @@ -16031,11 +16105,11 @@ | |||
1824 | 16031 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 16105 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1825 | 16032 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 16106 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1826 | 16033 | -e 's:$: $lt_compiler_flag:'` | 16107 | -e 's:$: $lt_compiler_flag:'` |
1828 | 16034 | (eval echo "\"\$as_me:16034: $lt_compile\"" >&5) | 16108 | (eval echo "\"\$as_me:16108: $lt_compile\"" >&5) |
1829 | 16035 | (eval "$lt_compile" 2>conftest.err) | 16109 | (eval "$lt_compile" 2>conftest.err) |
1830 | 16036 | ac_status=$? | 16110 | ac_status=$? |
1831 | 16037 | cat conftest.err >&5 | 16111 | cat conftest.err >&5 |
1833 | 16038 | echo "$as_me:16038: \$? = $ac_status" >&5 | 16112 | echo "$as_me:16112: \$? = $ac_status" >&5 |
1834 | 16039 | if (exit $ac_status) && test -s "$ac_outfile"; then | 16113 | if (exit $ac_status) && test -s "$ac_outfile"; then |
1835 | 16040 | # The compiler can only warn and ignore the option if not recognized | 16114 | # The compiler can only warn and ignore the option if not recognized |
1836 | 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. |
1837 | @@ -16135,11 +16209,11 @@ | |||
1838 | 16135 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 16209 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1839 | 16136 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 16210 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1840 | 16137 | -e 's:$: $lt_compiler_flag:'` | 16211 | -e 's:$: $lt_compiler_flag:'` |
1842 | 16138 | (eval echo "\"\$as_me:16138: $lt_compile\"" >&5) | 16212 | (eval echo "\"\$as_me:16212: $lt_compile\"" >&5) |
1843 | 16139 | (eval "$lt_compile" 2>out/conftest.err) | 16213 | (eval "$lt_compile" 2>out/conftest.err) |
1844 | 16140 | ac_status=$? | 16214 | ac_status=$? |
1845 | 16141 | cat out/conftest.err >&5 | 16215 | cat out/conftest.err >&5 |
1847 | 16142 | echo "$as_me:16142: \$? = $ac_status" >&5 | 16216 | echo "$as_me:16216: \$? = $ac_status" >&5 |
1848 | 16143 | if (exit $ac_status) && test -s out/conftest2.$ac_objext | 16217 | if (exit $ac_status) && test -s out/conftest2.$ac_objext |
1849 | 16144 | then | 16218 | then |
1850 | 16145 | # The compiler can only warn and ignore the option if not recognized | 16219 | # The compiler can only warn and ignore the option if not recognized |
1851 | @@ -17718,11 +17792,11 @@ | |||
1852 | 17718 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 17792 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1853 | 17719 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 17793 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1854 | 17720 | -e 's:$: $lt_compiler_flag:'` | 17794 | -e 's:$: $lt_compiler_flag:'` |
1856 | 17721 | (eval echo "\"\$as_me:17721: $lt_compile\"" >&5) | 17795 | (eval echo "\"\$as_me:17795: $lt_compile\"" >&5) |
1857 | 17722 | (eval "$lt_compile" 2>conftest.err) | 17796 | (eval "$lt_compile" 2>conftest.err) |
1858 | 17723 | ac_status=$? | 17797 | ac_status=$? |
1859 | 17724 | cat conftest.err >&5 | 17798 | cat conftest.err >&5 |
1861 | 17725 | echo "$as_me:17725: \$? = $ac_status" >&5 | 17799 | echo "$as_me:17799: \$? = $ac_status" >&5 |
1862 | 17726 | if (exit $ac_status) && test -s "$ac_outfile"; then | 17800 | if (exit $ac_status) && test -s "$ac_outfile"; then |
1863 | 17727 | # The compiler can only warn and ignore the option if not recognized | 17801 | # The compiler can only warn and ignore the option if not recognized |
1864 | 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. |
1865 | @@ -17822,11 +17896,11 @@ | |||
1866 | 17822 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 17896 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1867 | 17823 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 17897 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1868 | 17824 | -e 's:$: $lt_compiler_flag:'` | 17898 | -e 's:$: $lt_compiler_flag:'` |
1870 | 17825 | (eval echo "\"\$as_me:17825: $lt_compile\"" >&5) | 17899 | (eval echo "\"\$as_me:17899: $lt_compile\"" >&5) |
1871 | 17826 | (eval "$lt_compile" 2>out/conftest.err) | 17900 | (eval "$lt_compile" 2>out/conftest.err) |
1872 | 17827 | ac_status=$? | 17901 | ac_status=$? |
1873 | 17828 | cat out/conftest.err >&5 | 17902 | cat out/conftest.err >&5 |
1875 | 17829 | echo "$as_me:17829: \$? = $ac_status" >&5 | 17903 | echo "$as_me:17903: \$? = $ac_status" >&5 |
1876 | 17830 | if (exit $ac_status) && test -s out/conftest2.$ac_objext | 17904 | if (exit $ac_status) && test -s out/conftest2.$ac_objext |
1877 | 17831 | then | 17905 | then |
1878 | 17832 | # The compiler can only warn and ignore the option if not recognized | 17906 | # The compiler can only warn and ignore the option if not recognized |
1879 | @@ -20041,11 +20115,11 @@ | |||
1880 | 20041 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 20115 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1881 | 20042 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 20116 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1882 | 20043 | -e 's:$: $lt_compiler_flag:'` | 20117 | -e 's:$: $lt_compiler_flag:'` |
1884 | 20044 | (eval echo "\"\$as_me:20044: $lt_compile\"" >&5) | 20118 | (eval echo "\"\$as_me:20118: $lt_compile\"" >&5) |
1885 | 20045 | (eval "$lt_compile" 2>conftest.err) | 20119 | (eval "$lt_compile" 2>conftest.err) |
1886 | 20046 | ac_status=$? | 20120 | ac_status=$? |
1887 | 20047 | cat conftest.err >&5 | 20121 | cat conftest.err >&5 |
1889 | 20048 | echo "$as_me:20048: \$? = $ac_status" >&5 | 20122 | echo "$as_me:20122: \$? = $ac_status" >&5 |
1890 | 20049 | if (exit $ac_status) && test -s "$ac_outfile"; then | 20123 | if (exit $ac_status) && test -s "$ac_outfile"; then |
1891 | 20050 | # The compiler can only warn and ignore the option if not recognized | 20124 | # The compiler can only warn and ignore the option if not recognized |
1892 | 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. |
1893 | @@ -20331,11 +20405,11 @@ | |||
1894 | 20331 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 20405 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1895 | 20332 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 20406 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1896 | 20333 | -e 's:$: $lt_compiler_flag:'` | 20407 | -e 's:$: $lt_compiler_flag:'` |
1898 | 20334 | (eval echo "\"\$as_me:20334: $lt_compile\"" >&5) | 20408 | (eval echo "\"\$as_me:20408: $lt_compile\"" >&5) |
1899 | 20335 | (eval "$lt_compile" 2>conftest.err) | 20409 | (eval "$lt_compile" 2>conftest.err) |
1900 | 20336 | ac_status=$? | 20410 | ac_status=$? |
1901 | 20337 | cat conftest.err >&5 | 20411 | cat conftest.err >&5 |
1903 | 20338 | echo "$as_me:20338: \$? = $ac_status" >&5 | 20412 | echo "$as_me:20412: \$? = $ac_status" >&5 |
1904 | 20339 | if (exit $ac_status) && test -s "$ac_outfile"; then | 20413 | if (exit $ac_status) && test -s "$ac_outfile"; then |
1905 | 20340 | # The compiler can only warn and ignore the option if not recognized | 20414 | # The compiler can only warn and ignore the option if not recognized |
1906 | 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. |
1907 | @@ -20435,11 +20509,11 @@ | |||
1908 | 20435 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ | 20509 | -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ |
1909 | 20436 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ | 20510 | -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ |
1910 | 20437 | -e 's:$: $lt_compiler_flag:'` | 20511 | -e 's:$: $lt_compiler_flag:'` |
1912 | 20438 | (eval echo "\"\$as_me:20438: $lt_compile\"" >&5) | 20512 | (eval echo "\"\$as_me:20512: $lt_compile\"" >&5) |
1913 | 20439 | (eval "$lt_compile" 2>out/conftest.err) | 20513 | (eval "$lt_compile" 2>out/conftest.err) |
1914 | 20440 | ac_status=$? | 20514 | ac_status=$? |
1915 | 20441 | cat out/conftest.err >&5 | 20515 | cat out/conftest.err >&5 |
1917 | 20442 | echo "$as_me:20442: \$? = $ac_status" >&5 | 20516 | echo "$as_me:20516: \$? = $ac_status" >&5 |
1918 | 20443 | if (exit $ac_status) && test -s out/conftest2.$ac_objext | 20517 | if (exit $ac_status) && test -s out/conftest2.$ac_objext |
1919 | 20444 | then | 20518 | then |
1920 | 20445 | # The compiler can only warn and ignore the option if not recognized | 20519 | # The compiler can only warn and ignore the option if not recognized |
1921 | @@ -23365,17 +23439,17 @@ | |||
1922 | 23365 | fi | 23439 | fi |
1923 | 23366 | else | 23440 | else |
1924 | 23367 | if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then | 23441 | if echo "$withval" | $EGREP ":.*:.*:" > /dev/null; then |
1926 | 23368 | svn_berkeley_db_header="`echo "$withval" | sed -e "s/\([^:]*\):.*/\1/"`" | 23442 | svn_berkeley_db_header="`echo "$withval" | $SED -e "s/\([^:]*\):.*/\1/"`" |
1927 | 23369 | SVN_DB_INCLUDES="" | 23443 | SVN_DB_INCLUDES="" |
1929 | 23370 | for i in `echo "$withval" | sed -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`; do | 23444 | for i in `echo "$withval" | $SED -e "s/.*:\([^:]*\):[^:]*:.*/\1/"`; do |
1930 | 23371 | SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i" | 23445 | SVN_DB_INCLUDES="$SVN_DB_INCLUDES -I$i" |
1931 | 23372 | done | 23446 | done |
1932 | 23373 | SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }" | 23447 | SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }" |
1934 | 23374 | for l in `echo "$withval" | sed -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`; do | 23448 | for l in `echo "$withval" | $SED -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`; do |
1935 | 23375 | LDFLAGS="$LDFLAGS -L$l" | 23449 | LDFLAGS="$LDFLAGS -L$l" |
1936 | 23376 | done | 23450 | done |
1937 | 23377 | SVN_DB_LIBS="" | 23451 | SVN_DB_LIBS="" |
1939 | 23378 | for l in `echo "$withval" | sed -e "s/.*:\([^:]*\)/\1/"`; do | 23452 | for l in `echo "$withval" | $SED -e "s/.*:\([^:]*\)/\1/"`; do |
1940 | 23379 | SVN_DB_LIBS="$SVN_DB_LIBS -l$l" | 23453 | SVN_DB_LIBS="$SVN_DB_LIBS -l$l" |
1941 | 23380 | done | 23454 | done |
1942 | 23381 | SVN_DB_LIBS="${SVN_DB_LIBS## }" | 23455 | SVN_DB_LIBS="${SVN_DB_LIBS## }" |
1943 | @@ -23431,7 +23505,7 @@ | |||
1944 | 23431 | # Or that it resides in a non-standard location which we would have | 23505 | # Or that it resides in a non-standard location which we would have |
1945 | 23432 | # to compensate with using something like -R`$apu_config --prefix`/lib. | 23506 | # to compensate with using something like -R`$apu_config --prefix`/lib. |
1946 | 23433 | # | 23507 | # |
1948 | 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:]]*'`}" |
1949 | 23435 | 23509 | ||
1950 | 23436 | CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS" | 23510 | CPPFLAGS="$SVN_DB_INCLUDES $SVN_APRUTIL_INCLUDES $CPPFLAGS" |
1951 | 23437 | LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS" | 23511 | LIBS="`$apu_config --ldflags` $SVN_DB_LIBS $LIBS" |
1952 | @@ -25391,8 +25465,10 @@ | |||
1953 | 25391 | old_CXXFLAGS="$CXXFLAGS" | 25465 | old_CXXFLAGS="$CXXFLAGS" |
1954 | 25392 | old_LDFLAGS="$LDFLAGS" | 25466 | old_LDFLAGS="$LDFLAGS" |
1955 | 25393 | old_LIBS="$LIBS" | 25467 | old_LIBS="$LIBS" |
1958 | 25394 | for d in `$PKG_CONFIG --cflags QtCore QtDBus QtGui | $GREP -o -- -D[^[:space:]]*`; do | 25468 | for d in `$PKG_CONFIG --cflags QtCore QtDBus QtGui`; do |
1959 | 25395 | CPPFLAGS="$CPPFLAGS $d" | 25469 | if test -n "`echo "$d" | $GREP -- '^-D[^[:space:]]*'`"; then |
1960 | 25470 | CPPFLAGS="$CPPFLAGS $d" | ||
1961 | 25471 | fi | ||
1962 | 25396 | done | 25472 | done |
1963 | 25397 | qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" | 25473 | qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" |
1964 | 25398 | kde_dir="`$kde4_config --prefix`" | 25474 | kde_dir="`$kde4_config --prefix`" |
1965 | @@ -25527,7 +25603,7 @@ | |||
1966 | 25527 | 25603 | ||
1967 | 25528 | if test "$svn_lib_berkeley_db" = "yes"; then | 25604 | if test "$svn_lib_berkeley_db" = "yes"; then |
1968 | 25529 | BUILD_RULES="$BUILD_RULES bdb-lib bdb-test" | 25605 | BUILD_RULES="$BUILD_RULES bdb-lib bdb-test" |
1970 | 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/'`" |
1971 | 25531 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib" | 25607 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib" |
1972 | 25532 | BDB_TEST_DEPS="\$(BDB_TEST_DEPS)" | 25608 | BDB_TEST_DEPS="\$(BDB_TEST_DEPS)" |
1973 | 25533 | BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)" | 25609 | BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)" |
1974 | @@ -25535,25 +25611,25 @@ | |||
1975 | 25535 | 25611 | ||
1976 | 25536 | if test "$svn_lib_neon" = "yes"; then | 25612 | if test "$svn_lib_neon" = "yes"; then |
1977 | 25537 | BUILD_RULES="$BUILD_RULES neon-lib" | 25613 | BUILD_RULES="$BUILD_RULES neon-lib" |
1979 | 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/'`" |
1980 | 25539 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib" | 25615 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib" |
1981 | 25540 | fi | 25616 | fi |
1982 | 25541 | 25617 | ||
1983 | 25542 | if test "$svn_lib_serf" = "yes"; then | 25618 | if test "$svn_lib_serf" = "yes"; then |
1984 | 25543 | BUILD_RULES="$BUILD_RULES serf-lib" | 25619 | BUILD_RULES="$BUILD_RULES serf-lib" |
1986 | 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/'`" |
1987 | 25545 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib" | 25621 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib" |
1988 | 25546 | fi | 25622 | fi |
1989 | 25547 | 25623 | ||
1990 | 25548 | if test "$svn_lib_kwallet" = "yes"; then | 25624 | if test "$svn_lib_kwallet" = "yes"; then |
1991 | 25549 | BUILD_RULES="$BUILD_RULES kwallet-lib" | 25625 | BUILD_RULES="$BUILD_RULES kwallet-lib" |
1993 | 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/'`" |
1994 | 25551 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib" | 25627 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib" |
1995 | 25552 | fi | 25628 | fi |
1996 | 25553 | 25629 | ||
1997 | 25554 | if test "$with_gnome_keyring" = "yes"; then | 25630 | if test "$with_gnome_keyring" = "yes"; then |
1998 | 25555 | BUILD_RULES="$BUILD_RULES gnome-keyring-lib" | 25631 | BUILD_RULES="$BUILD_RULES gnome-keyring-lib" |
2000 | 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/'`" |
2001 | 25557 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" | 25633 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" |
2002 | 25558 | fi | 25634 | fi |
2003 | 25559 | 25635 | ||
2004 | @@ -26579,13 +26655,13 @@ | |||
2005 | 26579 | 26655 | ||
2006 | 26580 | 26656 | ||
2007 | 26581 | if test "$enable_debugging" = "yes" ; then | 26657 | if test "$enable_debugging" = "yes" ; then |
2010 | 26582 | CFLAGS="`echo $CFLAGS' ' | sed -e 's/-O[^ ]* //g'`" | 26658 | CFLAGS="`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" |
2011 | 26583 | CXXFLAGS="`echo $CXXFLAGS' ' | sed -e 's/-O[^ ]* //g'`" | 26659 | CXXFLAGS="`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`" |
2012 | 26584 | CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG" | 26660 | CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG" |
2013 | 26585 | CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" | 26661 | CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" |
2014 | 26586 | elif test "$enable_debugging" = "no" ; then | 26662 | elif test "$enable_debugging" = "no" ; then |
2017 | 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'`" |
2018 | 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'`" |
2019 | 26589 | CFLAGS="$CFLAGS -DNDEBUG" | 26665 | CFLAGS="$CFLAGS -DNDEBUG" |
2020 | 26590 | CXXFLAGS="$CXXFLAGS -DNDEBUG" | 26666 | CXXFLAGS="$CXXFLAGS -DNDEBUG" |
2021 | 26591 | # elif test "$enable_debugging" = "maybe" ; then | 26667 | # elif test "$enable_debugging" = "maybe" ; then |
2022 | @@ -27884,7 +27960,7 @@ | |||
2023 | 27884 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 | 27960 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 |
2024 | 27885 | $as_echo_n "checking swig version... " >&6; } | 27961 | $as_echo_n "checking swig version... " >&6; } |
2025 | 27886 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ | 27962 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ |
2027 | 27887 | sed -ne 's/^.*Version \(.*\)$/\1/p'`" | 27963 | $SED -ne 's/^.*Version \(.*\)$/\1/p'`" |
2028 | 27888 | # We want the version as an integer so we can test against | 27964 | # We want the version as an integer so we can test against |
2029 | 27889 | # which version we're using. SWIG doesn't provide this | 27965 | # which version we're using. SWIG doesn't provide this |
2030 | 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. |
2031 | @@ -27893,7 +27969,7 @@ | |||
2032 | 27893 | # and the patch level is zero padded to three places. | 27969 | # and the patch level is zero padded to three places. |
2033 | 27894 | # e.g. 1.3.24 becomes 103024 | 27970 | # e.g. 1.3.24 becomes 103024 |
2034 | 27895 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ | 27971 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ |
2036 | 27896 | sed -e 's/[^0-9\.].*$//' \ | 27972 | $SED -e 's/[^0-9\.].*$//' \ |
2037 | 27897 | -e 's/\.\([0-9]\)$/.0\1/' \ | 27973 | -e 's/\.\([0-9]\)$/.0\1/' \ |
2038 | 27898 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ | 27974 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ |
2039 | 27899 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" | 27975 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" |
2040 | @@ -28113,7 +28189,7 @@ | |||
2041 | 28113 | else | 28189 | else |
2042 | 28114 | 28190 | ||
2043 | 28115 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS | 28191 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS |
2045 | 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"`" |
2046 | 28117 | 28193 | ||
2047 | 28118 | fi | 28194 | fi |
2048 | 28119 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 | 28195 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 |
2049 | @@ -28153,7 +28229,7 @@ | |||
2050 | 28153 | $as_echo_n "checking for rb_errinfo... " >&6; } | 28229 | $as_echo_n "checking for rb_errinfo... " >&6; } |
2051 | 28154 | old_CFLAGS="$CFLAGS" | 28230 | old_CFLAGS="$CFLAGS" |
2052 | 28155 | old_LIBS="$LIBS" | 28231 | old_LIBS="$LIBS" |
2054 | 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" |
2055 | 28157 | LIBS="$SWIG_RB_LIBS" | 28233 | LIBS="$SWIG_RB_LIBS" |
2056 | 28158 | cat >conftest.$ac_ext <<_ACEOF | 28234 | cat >conftest.$ac_ext <<_ACEOF |
2057 | 28159 | 28235 | ||
2058 | @@ -28232,7 +28308,7 @@ | |||
2059 | 28232 | else | 28308 | else |
2060 | 28233 | 28309 | ||
2061 | 28234 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ | 28310 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ |
2063 | 28235 | sed -e "s,^$rbconfig_sitedir,,"`" | 28311 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2064 | 28236 | 28312 | ||
2065 | 28237 | fi | 28313 | fi |
2066 | 28238 | 28314 | ||
2067 | @@ -28247,7 +28323,7 @@ | |||
2068 | 28247 | else | 28323 | else |
2069 | 28248 | 28324 | ||
2070 | 28249 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ | 28325 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ |
2072 | 28250 | sed -e "s,^$rbconfig_sitedir,,"`" | 28326 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2073 | 28251 | 28327 | ||
2074 | 28252 | fi | 28328 | fi |
2075 | 28253 | 28329 | ||
2076 | @@ -28397,7 +28473,7 @@ | |||
2077 | 28397 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 | 28473 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 |
2078 | 28398 | $as_echo_n "checking swig version... " >&6; } | 28474 | $as_echo_n "checking swig version... " >&6; } |
2079 | 28399 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ | 28475 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ |
2081 | 28400 | sed -ne 's/^.*Version \(.*\)$/\1/p'`" | 28476 | $SED -ne 's/^.*Version \(.*\)$/\1/p'`" |
2082 | 28401 | # We want the version as an integer so we can test against | 28477 | # We want the version as an integer so we can test against |
2083 | 28402 | # which version we're using. SWIG doesn't provide this | 28478 | # which version we're using. SWIG doesn't provide this |
2084 | 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. |
2085 | @@ -28406,7 +28482,7 @@ | |||
2086 | 28406 | # and the patch level is zero padded to three places. | 28482 | # and the patch level is zero padded to three places. |
2087 | 28407 | # e.g. 1.3.24 becomes 103024 | 28483 | # e.g. 1.3.24 becomes 103024 |
2088 | 28408 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ | 28484 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ |
2090 | 28409 | sed -e 's/[^0-9\.].*$//' \ | 28485 | $SED -e 's/[^0-9\.].*$//' \ |
2091 | 28410 | -e 's/\.\([0-9]\)$/.0\1/' \ | 28486 | -e 's/\.\([0-9]\)$/.0\1/' \ |
2092 | 28411 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ | 28487 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ |
2093 | 28412 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" | 28488 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" |
2094 | @@ -28626,7 +28702,7 @@ | |||
2095 | 28626 | else | 28702 | else |
2096 | 28627 | 28703 | ||
2097 | 28628 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS | 28704 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS |
2099 | 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"`" |
2100 | 28630 | 28706 | ||
2101 | 28631 | fi | 28707 | fi |
2102 | 28632 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 | 28708 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 |
2103 | @@ -28666,7 +28742,7 @@ | |||
2104 | 28666 | $as_echo_n "checking for rb_errinfo... " >&6; } | 28742 | $as_echo_n "checking for rb_errinfo... " >&6; } |
2105 | 28667 | old_CFLAGS="$CFLAGS" | 28743 | old_CFLAGS="$CFLAGS" |
2106 | 28668 | old_LIBS="$LIBS" | 28744 | old_LIBS="$LIBS" |
2108 | 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" |
2109 | 28670 | LIBS="$SWIG_RB_LIBS" | 28746 | LIBS="$SWIG_RB_LIBS" |
2110 | 28671 | cat >conftest.$ac_ext <<_ACEOF | 28747 | cat >conftest.$ac_ext <<_ACEOF |
2111 | 28672 | 28748 | ||
2112 | @@ -28745,7 +28821,7 @@ | |||
2113 | 28745 | else | 28821 | else |
2114 | 28746 | 28822 | ||
2115 | 28747 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ | 28823 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ |
2117 | 28748 | sed -e "s,^$rbconfig_sitedir,,"`" | 28824 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2118 | 28749 | 28825 | ||
2119 | 28750 | fi | 28826 | fi |
2120 | 28751 | 28827 | ||
2121 | @@ -28760,7 +28836,7 @@ | |||
2122 | 28760 | else | 28836 | else |
2123 | 28761 | 28837 | ||
2124 | 28762 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ | 28838 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ |
2126 | 28763 | sed -e "s,^$rbconfig_sitedir,,"`" | 28839 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2127 | 28764 | 28840 | ||
2128 | 28765 | fi | 28841 | fi |
2129 | 28766 | 28842 | ||
2130 | @@ -28910,7 +28986,7 @@ | |||
2131 | 28910 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 | 28986 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 |
2132 | 28911 | $as_echo_n "checking swig version... " >&6; } | 28987 | $as_echo_n "checking swig version... " >&6; } |
2133 | 28912 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ | 28988 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ |
2135 | 28913 | sed -ne 's/^.*Version \(.*\)$/\1/p'`" | 28989 | $SED -ne 's/^.*Version \(.*\)$/\1/p'`" |
2136 | 28914 | # We want the version as an integer so we can test against | 28990 | # We want the version as an integer so we can test against |
2137 | 28915 | # which version we're using. SWIG doesn't provide this | 28991 | # which version we're using. SWIG doesn't provide this |
2138 | 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. |
2139 | @@ -28919,7 +28995,7 @@ | |||
2140 | 28919 | # and the patch level is zero padded to three places. | 28995 | # and the patch level is zero padded to three places. |
2141 | 28920 | # e.g. 1.3.24 becomes 103024 | 28996 | # e.g. 1.3.24 becomes 103024 |
2142 | 28921 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ | 28997 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ |
2144 | 28922 | sed -e 's/[^0-9\.].*$//' \ | 28998 | $SED -e 's/[^0-9\.].*$//' \ |
2145 | 28923 | -e 's/\.\([0-9]\)$/.0\1/' \ | 28999 | -e 's/\.\([0-9]\)$/.0\1/' \ |
2146 | 28924 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ | 29000 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ |
2147 | 28925 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" | 29001 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" |
2148 | @@ -29139,7 +29215,7 @@ | |||
2149 | 29139 | else | 29215 | else |
2150 | 29140 | 29216 | ||
2151 | 29141 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS | 29217 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS |
2153 | 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"`" |
2154 | 29143 | 29219 | ||
2155 | 29144 | fi | 29220 | fi |
2156 | 29145 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 | 29221 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 |
2157 | @@ -29179,7 +29255,7 @@ | |||
2158 | 29179 | $as_echo_n "checking for rb_errinfo... " >&6; } | 29255 | $as_echo_n "checking for rb_errinfo... " >&6; } |
2159 | 29180 | old_CFLAGS="$CFLAGS" | 29256 | old_CFLAGS="$CFLAGS" |
2160 | 29181 | old_LIBS="$LIBS" | 29257 | old_LIBS="$LIBS" |
2162 | 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" |
2163 | 29183 | LIBS="$SWIG_RB_LIBS" | 29259 | LIBS="$SWIG_RB_LIBS" |
2164 | 29184 | cat >conftest.$ac_ext <<_ACEOF | 29260 | cat >conftest.$ac_ext <<_ACEOF |
2165 | 29185 | 29261 | ||
2166 | @@ -29258,7 +29334,7 @@ | |||
2167 | 29258 | else | 29334 | else |
2168 | 29259 | 29335 | ||
2169 | 29260 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ | 29336 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ |
2171 | 29261 | sed -e "s,^$rbconfig_sitedir,,"`" | 29337 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2172 | 29262 | 29338 | ||
2173 | 29263 | fi | 29339 | fi |
2174 | 29264 | 29340 | ||
2175 | @@ -29273,7 +29349,7 @@ | |||
2176 | 29273 | else | 29349 | else |
2177 | 29274 | 29350 | ||
2178 | 29275 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ | 29351 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ |
2180 | 29276 | sed -e "s,^$rbconfig_sitedir,,"`" | 29352 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2181 | 29277 | 29353 | ||
2182 | 29278 | fi | 29354 | fi |
2183 | 29279 | 29355 | ||
2184 | @@ -29426,7 +29502,7 @@ | |||
2185 | 29426 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 | 29502 | { $as_echo "$as_me:$LINENO: checking swig version" >&5 |
2186 | 29427 | $as_echo_n "checking swig version... " >&6; } | 29503 | $as_echo_n "checking swig version... " >&6; } |
2187 | 29428 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ | 29504 | SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ |
2189 | 29429 | sed -ne 's/^.*Version \(.*\)$/\1/p'`" | 29505 | $SED -ne 's/^.*Version \(.*\)$/\1/p'`" |
2190 | 29430 | # We want the version as an integer so we can test against | 29506 | # We want the version as an integer so we can test against |
2191 | 29431 | # which version we're using. SWIG doesn't provide this | 29507 | # which version we're using. SWIG doesn't provide this |
2192 | 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. |
2193 | @@ -29435,7 +29511,7 @@ | |||
2194 | 29435 | # and the patch level is zero padded to three places. | 29511 | # and the patch level is zero padded to three places. |
2195 | 29436 | # e.g. 1.3.24 becomes 103024 | 29512 | # e.g. 1.3.24 becomes 103024 |
2196 | 29437 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ | 29513 | SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ |
2198 | 29438 | sed -e 's/[^0-9\.].*$//' \ | 29514 | $SED -e 's/[^0-9\.].*$//' \ |
2199 | 29439 | -e 's/\.\([0-9]\)$/.0\1/' \ | 29515 | -e 's/\.\([0-9]\)$/.0\1/' \ |
2200 | 29440 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ | 29516 | -e 's/\.\([0-9][0-9]\)$/.0\1/' \ |
2201 | 29441 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" | 29517 | -e 's/\.\([0-9]\)\./0\1/; s/\.//g;'`" |
2202 | @@ -29655,7 +29731,7 @@ | |||
2203 | 29655 | else | 29731 | else |
2204 | 29656 | 29732 | ||
2205 | 29657 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS | 29733 | # Ruby doesn't like '-ansi', so strip that out of CFLAGS |
2207 | 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"`" |
2208 | 29659 | 29735 | ||
2209 | 29660 | fi | 29736 | fi |
2210 | 29661 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 | 29737 | { $as_echo "$as_me:$LINENO: result: $svn_cv_ruby_compile" >&5 |
2211 | @@ -29695,7 +29771,7 @@ | |||
2212 | 29695 | $as_echo_n "checking for rb_errinfo... " >&6; } | 29771 | $as_echo_n "checking for rb_errinfo... " >&6; } |
2213 | 29696 | old_CFLAGS="$CFLAGS" | 29772 | old_CFLAGS="$CFLAGS" |
2214 | 29697 | old_LIBS="$LIBS" | 29773 | old_LIBS="$LIBS" |
2216 | 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" |
2217 | 29699 | LIBS="$SWIG_RB_LIBS" | 29775 | LIBS="$SWIG_RB_LIBS" |
2218 | 29700 | cat >conftest.$ac_ext <<_ACEOF | 29776 | cat >conftest.$ac_ext <<_ACEOF |
2219 | 29701 | 29777 | ||
2220 | @@ -29774,7 +29850,7 @@ | |||
2221 | 29774 | else | 29850 | else |
2222 | 29775 | 29851 | ||
2223 | 29776 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ | 29852 | svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ |
2225 | 29777 | sed -e "s,^$rbconfig_sitedir,,"`" | 29853 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2226 | 29778 | 29854 | ||
2227 | 29779 | fi | 29855 | fi |
2228 | 29780 | 29856 | ||
2229 | @@ -29789,7 +29865,7 @@ | |||
2230 | 29789 | else | 29865 | else |
2231 | 29790 | 29866 | ||
2232 | 29791 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ | 29867 | svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ |
2234 | 29792 | sed -e "s,^$rbconfig_sitedir,,"`" | 29868 | $SED -e "s,^$rbconfig_sitedir,,"`" |
2235 | 29793 | 29869 | ||
2236 | 29794 | fi | 29870 | fi |
2237 | 29795 | 29871 | ||
2238 | @@ -30372,6 +30448,8 @@ | |||
2239 | 30372 | ac_config_files="$ac_config_files tools/backup/hot-backup.py" | 30448 | ac_config_files="$ac_config_files tools/backup/hot-backup.py" |
2240 | 30373 | 30449 | ||
2241 | 30374 | 30450 | ||
2242 | 30451 | SVN_CONFIG_SCRIPT_FILES="$SVN_CONFIG_SCRIPT_FILES contrib/client-side/svn_load_dirs/svn_load_dirs.pl" | ||
2243 | 30452 | ac_config_files="$ac_config_files contrib/client-side/svn_load_dirs/svn_load_dirs.pl" | ||
2244 | 30375 | 30453 | ||
2245 | 30376 | 30454 | ||
2246 | 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" |
2247 | @@ -30818,7 +30896,7 @@ | |||
2248 | 30818 | # report actual input values of CONFIG_FILES etc. instead of their | 30896 | # report actual input values of CONFIG_FILES etc. instead of their |
2249 | 30819 | # values after options handling. | 30897 | # values after options handling. |
2250 | 30820 | ac_log=" | 30898 | ac_log=" |
2252 | 30821 | This file was extended by subversion $as_me 1.6.5, which was | 30899 | This file was extended by subversion $as_me 1.6.6, which was |
2253 | 30822 | generated by GNU Autoconf 2.63. Invocation command line was | 30900 | generated by GNU Autoconf 2.63. Invocation command line was |
2254 | 30823 | 30901 | ||
2255 | 30824 | CONFIG_FILES = $CONFIG_FILES | 30902 | CONFIG_FILES = $CONFIG_FILES |
2256 | @@ -30881,7 +30959,7 @@ | |||
2257 | 30881 | _ACEOF | 30959 | _ACEOF |
2258 | 30882 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | 30960 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
2259 | 30883 | ac_cs_version="\\ | 30961 | ac_cs_version="\\ |
2261 | 30884 | subversion config.status 1.6.5 | 30962 | subversion config.status 1.6.6 |
2262 | 30885 | configured by $0, generated by GNU Autoconf 2.63, | 30963 | configured by $0, generated by GNU Autoconf 2.63, |
2263 | 30886 | with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" | 30964 | with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" |
2264 | 30887 | 30965 | ||
2265 | @@ -30992,7 +31070,8 @@ | |||
2266 | 30992 | # | 31070 | # |
2267 | 30993 | # INIT-COMMANDS | 31071 | # INIT-COMMANDS |
2268 | 30994 | # | 31072 | # |
2270 | 30995 | SVN_DB_HEADER="$SVN_DB_HEADER" | 31073 | SED="$SED" |
2271 | 31074 | SVN_DB_HEADER="$SVN_DB_HEADER" | ||
2272 | 30996 | 31075 | ||
2273 | 30997 | _ACEOF | 31076 | _ACEOF |
2274 | 30998 | 31077 | ||
2275 | @@ -31006,6 +31085,7 @@ | |||
2276 | 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" ;; |
2277 | 31007 | "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; | 31086 | "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; |
2278 | 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" ;; |
2279 | 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" ;; | ||
2280 | 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" ;; |
2281 | 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" ;; |
2282 | 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" ;; |
2283 | @@ -31626,9 +31706,10 @@ | |||
2284 | 31626 | 31706 | ||
2285 | 31627 | 31707 | ||
2286 | 31628 | case $ac_file$ac_mode in | 31708 | case $ac_file$ac_mode in |
2288 | 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.new | 31709 | "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 |
2289 | 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 ;; |
2290 | 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 ;; |
2291 | 31712 | "contrib/client-side/svn_load_dirs/svn_load_dirs.pl":F) chmod +x contrib/client-side/svn_load_dirs/svn_load_dirs.pl ;; | ||
2292 | 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 ;; |
2293 | 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 ;; |
2294 | 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 ;; |
2295 | 31635 | 31716 | ||
2296 | === modified file 'configure.ac' | |||
2297 | --- configure.ac 2009-08-24 19:09:22 +0000 | |||
2298 | +++ configure.ac 2009-12-12 13:21:14 +0000 | |||
2299 | @@ -40,6 +40,10 @@ | |||
2300 | 40 | # Look for a C pre-processor | 40 | # Look for a C pre-processor |
2301 | 41 | AC_PROG_CPP | 41 | AC_PROG_CPP |
2302 | 42 | 42 | ||
2303 | 43 | # Look for a good sed | ||
2304 | 44 | # AC_PROG_SED was introduced in Autoconf 2.59b | ||
2305 | 45 | m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"]) | ||
2306 | 46 | |||
2307 | 43 | # Grab target_cpu, so we can use it in the Solaris pkginfo file | 47 | # Grab target_cpu, so we can use it in the Solaris pkginfo file |
2308 | 44 | AC_CANONICAL_TARGET | 48 | AC_CANONICAL_TARGET |
2309 | 45 | 49 | ||
2310 | @@ -79,8 +83,8 @@ | |||
2311 | 79 | 83 | ||
2312 | 80 | # Either a space-separated list of allowable Neon versions, or "any" to | 84 | # Either a space-separated list of allowable Neon versions, or "any" to |
2313 | 81 | # mean allow anything. | 85 | # mean allow anything. |
2316 | 82 | NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28" | 86 | NEON_ALLOWED_LIST="0\.25 0\.26 0\.27\.2 0\.28 0\.29" |
2317 | 83 | NEON_RECOMMENDED_VER=0.28.4 | 87 | NEON_RECOMMENDED_VER="0.29.0" |
2318 | 84 | NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz" | 88 | NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz" |
2319 | 85 | dnl You can skip the neon version check only if you know what you are doing | 89 | dnl You can skip the neon version check only if you know what you are doing |
2320 | 86 | AC_ARG_ENABLE(neon-version-check, | 90 | AC_ARG_ENABLE(neon-version-check, |
2321 | @@ -532,7 +536,7 @@ | |||
2322 | 532 | 536 | ||
2323 | 533 | if test "$svn_lib_berkeley_db" = "yes"; then | 537 | if test "$svn_lib_berkeley_db" = "yes"; then |
2324 | 534 | BUILD_RULES="$BUILD_RULES bdb-lib bdb-test" | 538 | BUILD_RULES="$BUILD_RULES bdb-lib bdb-test" |
2326 | 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/'`" |
2327 | 536 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib" | 540 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib" |
2328 | 537 | BDB_TEST_DEPS="\$(BDB_TEST_DEPS)" | 541 | BDB_TEST_DEPS="\$(BDB_TEST_DEPS)" |
2329 | 538 | BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)" | 542 | BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)" |
2330 | @@ -540,25 +544,25 @@ | |||
2331 | 540 | 544 | ||
2332 | 541 | if test "$svn_lib_neon" = "yes"; then | 545 | if test "$svn_lib_neon" = "yes"; then |
2333 | 542 | BUILD_RULES="$BUILD_RULES neon-lib" | 546 | BUILD_RULES="$BUILD_RULES neon-lib" |
2335 | 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/'`" |
2336 | 544 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib" | 548 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib" |
2337 | 545 | fi | 549 | fi |
2338 | 546 | 550 | ||
2339 | 547 | if test "$svn_lib_serf" = "yes"; then | 551 | if test "$svn_lib_serf" = "yes"; then |
2340 | 548 | BUILD_RULES="$BUILD_RULES serf-lib" | 552 | BUILD_RULES="$BUILD_RULES serf-lib" |
2342 | 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/'`" |
2343 | 550 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib" | 554 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib" |
2344 | 551 | fi | 555 | fi |
2345 | 552 | 556 | ||
2346 | 553 | if test "$svn_lib_kwallet" = "yes"; then | 557 | if test "$svn_lib_kwallet" = "yes"; then |
2347 | 554 | BUILD_RULES="$BUILD_RULES kwallet-lib" | 558 | BUILD_RULES="$BUILD_RULES kwallet-lib" |
2349 | 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/'`" |
2350 | 556 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib" | 560 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib" |
2351 | 557 | fi | 561 | fi |
2352 | 558 | 562 | ||
2353 | 559 | if test "$with_gnome_keyring" = "yes"; then | 563 | if test "$with_gnome_keyring" = "yes"; then |
2354 | 560 | BUILD_RULES="$BUILD_RULES gnome-keyring-lib" | 564 | BUILD_RULES="$BUILD_RULES gnome-keyring-lib" |
2356 | 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/'`" |
2357 | 562 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" | 566 | INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" |
2358 | 563 | fi | 567 | fi |
2359 | 564 | 568 | ||
2360 | @@ -683,15 +687,15 @@ | |||
2361 | 683 | if test "$enable_debugging" = "yes" ; then | 687 | if test "$enable_debugging" = "yes" ; then |
2362 | 684 | dnl At the moment, we don't want optimization, because we're | 688 | dnl At the moment, we don't want optimization, because we're |
2363 | 685 | dnl debugging. | 689 | dnl debugging. |
2366 | 686 | CFLAGS=["`echo $CFLAGS' ' | sed -e 's/-O[^ ]* //g'`"] | 690 | CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] |
2367 | 687 | CXXFLAGS=["`echo $CXXFLAGS' ' | sed -e 's/-O[^ ]* //g'`"] | 691 | CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"] |
2368 | 688 | dnl SVN_DEBUG enables specific features for developer builds | 692 | dnl SVN_DEBUG enables specific features for developer builds |
2369 | 689 | dnl AP_DEBUG enables specific (Apache) features for developer builds | 693 | dnl AP_DEBUG enables specific (Apache) features for developer builds |
2370 | 690 | CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG" | 694 | CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG" |
2371 | 691 | CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" | 695 | CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" |
2372 | 692 | elif test "$enable_debugging" = "no" ; then | 696 | elif test "$enable_debugging" = "no" ; then |
2375 | 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'`"] |
2376 | 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'`"] |
2377 | 695 | dnl Compile with NDEBUG to get rid of assertions | 699 | dnl Compile with NDEBUG to get rid of assertions |
2378 | 696 | CFLAGS="$CFLAGS -DNDEBUG" | 700 | CFLAGS="$CFLAGS -DNDEBUG" |
2379 | 697 | CXXFLAGS="$CXXFLAGS -DNDEBUG" | 701 | CXXFLAGS="$CXXFLAGS -DNDEBUG" |
2380 | @@ -989,12 +993,14 @@ | |||
2381 | 989 | 993 | ||
2382 | 990 | AC_CONFIG_HEADERS(subversion/svn_private_config.h) | 994 | AC_CONFIG_HEADERS(subversion/svn_private_config.h) |
2383 | 991 | AC_CONFIG_COMMANDS([svn_private_config.h], | 995 | AC_CONFIG_COMMANDS([svn_private_config.h], |
2385 | 992 | [sed -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" subversion/svn_private_config.h > subversion/svn_private_config.h.new | 996 | [$SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" subversion/svn_private_config.h > subversion/svn_private_config.h.new |
2386 | 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], |
2388 | 994 | [SVN_DB_HEADER="$SVN_DB_HEADER"]) | 998 | [SED="$SED" |
2389 | 999 | SVN_DB_HEADER="$SVN_DB_HEADER"]) | ||
2390 | 995 | AC_CONFIG_FILES([Makefile]) | 1000 | AC_CONFIG_FILES([Makefile]) |
2391 | 996 | 1001 | ||
2392 | 997 | SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py) | 1002 | SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py) |
2393 | 1003 | SVN_CONFIG_SCRIPT(contrib/client-side/svn_load_dirs/svn_load_dirs.pl) | ||
2394 | 998 | SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/svncopy.pl) | 1004 | SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/svncopy.pl) |
2395 | 999 | SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/testsvncopy.pl) | 1005 | SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/testsvncopy.pl) |
2396 | 1000 | SVN_CONFIG_SCRIPT(contrib/hook-scripts/commit-email.pl) | 1006 | SVN_CONFIG_SCRIPT(contrib/hook-scripts/commit-email.pl) |
2397 | 1001 | 1007 | ||
2398 | === added directory 'contrib/client-side/svn_load_dirs' | |||
2399 | === added file 'contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt' | |||
2400 | --- contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt 1970-01-01 00:00:00 +0000 | |||
2401 | +++ contrib/client-side/svn_load_dirs/LICENSE_AFL3.txt 2009-12-12 13:21:15 +0000 | |||
2402 | @@ -0,0 +1,190 @@ | |||
2403 | 1 | http://www.opensource.org/licenses/academic.php | ||
2404 | 2 | |||
2405 | 3 | Academic Free License ("AFL") v. 3.0 | ||
2406 | 4 | |||
2407 | 5 | This Academic Free License (the "License") applies to any original | ||
2408 | 6 | work of authorship (the "Original Work") whose owner (the "Licensor") | ||
2409 | 7 | has placed the following licensing notice adjacent to the copyright | ||
2410 | 8 | notice for the Original Work: | ||
2411 | 9 | |||
2412 | 10 | Licensed under the Academic Free License version 3.0 | ||
2413 | 11 | |||
2414 | 12 | 1) Grant of Copyright License. Licensor grants You a worldwide, | ||
2415 | 13 | royalty-free, non-exclusive, sublicensable license, for the | ||
2416 | 14 | duration of the copyright, to do the following: | ||
2417 | 15 | a) to reproduce the Original Work in copies, either alone or as | ||
2418 | 16 | part of a collective work; | ||
2419 | 17 | b) to translate, adapt, alter, transform, modify, or arrange the | ||
2420 | 18 | Original Work, thereby creating derivative works ("Derivative | ||
2421 | 19 | Works") based upon the Original Work; | ||
2422 | 20 | c) to distribute or communicate copies of the Original Work and | ||
2423 | 21 | Derivative Works to the public, under any license of your | ||
2424 | 22 | choice that does not contradict the terms and conditions, | ||
2425 | 23 | including Licensor's reserved rights and remedies, in this | ||
2426 | 24 | Academic Free License; | ||
2427 | 25 | d) to perform the Original Work publicly; and | ||
2428 | 26 | e) to display the Original Work publicly. | ||
2429 | 27 | |||
2430 | 28 | 2) Grant of Patent License. Licensor grants You a worldwide, | ||
2431 | 29 | royalty-free, non- exclusive, sublicensable license, under patent | ||
2432 | 30 | claims owned or controlled by the Licensor that are embodied in | ||
2433 | 31 | the Original Work as furnished by the Licensor, for the duration | ||
2434 | 32 | of the patents, to make, use, sell, offer for sale, have made, and | ||
2435 | 33 | import the Original Work and Derivative Works. | ||
2436 | 34 | |||
2437 | 35 | 3) Grant of Source Code License. The term "Source Code" means the | ||
2438 | 36 | preferred form of the Original Work for making modifications to it | ||
2439 | 37 | and all available documentation describing how to modify the | ||
2440 | 38 | Original Work. Licensor agrees to provide a machine-readable copy | ||
2441 | 39 | of the Source Code of the Original Work along with each copy of | ||
2442 | 40 | the Original Work that Licensor distributes. Licensor reserves the | ||
2443 | 41 | right to satisfy this obligation by placing a machine-readable | ||
2444 | 42 | copy of the Source Code in an information repository reasonably | ||
2445 | 43 | calculated to permit inexpensive and convenient access by You for | ||
2446 | 44 | as long as Licensor continues to distribute the Original Work. | ||
2447 | 45 | |||
2448 | 46 | 4) Exclusions From License Grant. Neither the names of Licensor, nor | ||
2449 | 47 | the names of any contributors to the Original Work, nor any of | ||
2450 | 48 | their trademarks or service marks, may be used to endorse or | ||
2451 | 49 | promote products derived from this Original Work without express | ||
2452 | 50 | prior permission of the Licensor. Except as expressly stated | ||
2453 | 51 | herein, nothing in this License grants any license to Licensor's | ||
2454 | 52 | trademarks, copyrights, patents, trade secrets or any other | ||
2455 | 53 | intellectual property. No patent license is granted to make, use, | ||
2456 | 54 | sell, offer for sale, have made, or import embodiments of any | ||
2457 | 55 | patent claims other than the licensed claims defined in Section | ||
2458 | 56 | 2. No license is granted to the trademarks of Licensor even if | ||
2459 | 57 | such marks are included in the Original Work. Nothing in this | ||
2460 | 58 | License shall be interpreted to prohibit Licensor from licensing | ||
2461 | 59 | under terms different from this License any Original Work that | ||
2462 | 60 | Licensor otherwise would have a right to license. | ||
2463 | 61 | |||
2464 | 62 | 5) External Deployment. The term "External Deployment" means the use, | ||
2465 | 63 | distribution, or communication of the Original Work or Derivative | ||
2466 | 64 | Works in any way such that the Original Work or Derivative Works | ||
2467 | 65 | may be used by anyone other than You, whether those works are | ||
2468 | 66 | distributed or communicated to those persons or made available as | ||
2469 | 67 | an application intended for use over a network. As an express | ||
2470 | 68 | condition for the grants of license hereunder, You must treat any | ||
2471 | 69 | External Deployment by You of the Original Work or a Derivative | ||
2472 | 70 | Work as a distribution under section 1(c). | ||
2473 | 71 | |||
2474 | 72 | 6) Attribution Rights. You must retain, in the Source Code of any | ||
2475 | 73 | Derivative Works that You create, all copyright, patent, or | ||
2476 | 74 | trademark notices from the Source Code of the Original Work, as | ||
2477 | 75 | well as any notices of licensing and any descriptive text | ||
2478 | 76 | identified therein as an "Attribution Notice." You must cause the | ||
2479 | 77 | Source Code for any Derivative Works that You create to carry a | ||
2480 | 78 | prominent Attribution Notice reasonably calculated to inform | ||
2481 | 79 | recipients that You have modified the Original Work. | ||
2482 | 80 | |||
2483 | 81 | 7) Warranty of Provenance and Disclaimer of Warranty. Licensor | ||
2484 | 82 | warrants that the copyright in and to the Original Work and the | ||
2485 | 83 | patent rights granted herein by Licensor are owned by the Licensor | ||
2486 | 84 | or are sublicensed to You under the terms of this License with the | ||
2487 | 85 | permission of the contributor(s) of those copyrights and patent | ||
2488 | 86 | rights. Except as expressly stated in the immediately preceding | ||
2489 | 87 | sentence, the Original Work is provided under this License on an | ||
2490 | 88 | "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, | ||
2491 | 89 | including, without limitation, the warranties of non-infringement, | ||
2492 | 90 | merchantability or fitness for a particular purpose. THE ENTIRE | ||
2493 | 91 | RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This | ||
2494 | 92 | DISCLAIMER OF WARRANTY constitutes an essential part of this | ||
2495 | 93 | License. No license to the Original Work is granted by this | ||
2496 | 94 | License except under this disclaimer. | ||
2497 | 95 | |||
2498 | 96 | 8) Limitation of Liability. Under no circumstances and under no legal | ||
2499 | 97 | theory, whether in tort (including negligence), contract, or | ||
2500 | 98 | otherwise, shall the Licensor be liable to anyone for any | ||
2501 | 99 | indirect, special, incidental, or consequential damages of any | ||
2502 | 100 | character arising as a result of this License or the use of the | ||
2503 | 101 | Original Work including, without limitation, damages for loss of | ||
2504 | 102 | goodwill, work stoppage, computer failure or malfunction, or any | ||
2505 | 103 | and all other commercial damages or losses. This limitation of | ||
2506 | 104 | liability shall not apply to the extent applicable law prohibits | ||
2507 | 105 | such limitation. | ||
2508 | 106 | |||
2509 | 107 | 9) Acceptance and Termination. If, at any time, You expressly | ||
2510 | 108 | assented to this License, that assent indicates your clear and | ||
2511 | 109 | irrevocable acceptance of this License and all of its terms and | ||
2512 | 110 | conditions. If You distribute or communicate copies of the | ||
2513 | 111 | Original Work or a Derivative Work, You must make a reasonable | ||
2514 | 112 | effort under the circumstances to obtain the express assent of | ||
2515 | 113 | recipients to the terms of this License. This License conditions | ||
2516 | 114 | your rights to undertake the activities listed in Section 1, | ||
2517 | 115 | including your right to create Derivative Works based upon the | ||
2518 | 116 | Original Work, and doing so without honoring these terms and | ||
2519 | 117 | conditions is prohibited by copyright law and international | ||
2520 | 118 | treaty. Nothing in this License is intended to affect copyright | ||
2521 | 119 | exceptions and limitations (including "fair use" or "fair | ||
2522 | 120 | dealing"). This License shall terminate immediately and You may no | ||
2523 | 121 | longer exercise any of the rights granted to You by this License | ||
2524 | 122 | upon your failure to honor the conditions in Section 1(c). | ||
2525 | 123 | |||
2526 | 124 | 10) Termination for Patent Action. This License shall terminate | ||
2527 | 125 | automatically and You may no longer exercise any of the rights | ||
2528 | 126 | granted to You by this License as of the date You commence an | ||
2529 | 127 | action, including a cross-claim or counterclaim, against Licensor | ||
2530 | 128 | or any licensee alleging that the Original Work infringes a | ||
2531 | 129 | patent. This termination provision shall not apply for an action | ||
2532 | 130 | alleging patent infringement by combinations of the Original Work | ||
2533 | 131 | with other software or hardware. | ||
2534 | 132 | |||
2535 | 133 | 11) Jurisdiction, Venue and Governing Law. Any action or suit relating | ||
2536 | 134 | to this License may be brought only in the courts of a | ||
2537 | 135 | jurisdiction wherein the Licensor resides or in which Licensor | ||
2538 | 136 | conducts its primary business, and under the laws of that | ||
2539 | 137 | jurisdiction excluding its conflict-of-law provisions. The | ||
2540 | 138 | application of the United Nations Convention on Contracts for the | ||
2541 | 139 | International Sale of Goods is expressly excluded. Any use of the | ||
2542 | 140 | Original Work outside the scope of this License or after its | ||
2543 | 141 | termination shall be subject to the requirements and penalties of | ||
2544 | 142 | copyright or patent law in the appropriate jurisdiction. This | ||
2545 | 143 | section shall survive the termination of this License. | ||
2546 | 144 | |||
2547 | 145 | 12) Attorneys' Fees. In any action to enforce the terms of this | ||
2548 | 146 | License or seeking damages relating thereto, the prevailing party | ||
2549 | 147 | shall be entitled to recover its costs and expenses, including, | ||
2550 | 148 | without limitation, reasonable attorneys' fees and costs incurred | ||
2551 | 149 | in connection with such action, including any appeal of such | ||
2552 | 150 | action. This section shall survive the termination of this | ||
2553 | 151 | License. | ||
2554 | 152 | |||
2555 | 153 | 13) Miscellaneous. If any provision of this License is held to be | ||
2556 | 154 | unenforceable, such provision shall be reformed only to the extent | ||
2557 | 155 | necessary to make it enforceable. | ||
2558 | 156 | |||
2559 | 157 | 14) Definition of "You" in This License. "You" throughout this | ||
2560 | 158 | License, whether in upper or lower case, means an individual or a | ||
2561 | 159 | legal entity exercising rights under, and complying with all of | ||
2562 | 160 | the terms of, this License. For legal entities, "You" includes any | ||
2563 | 161 | entity that controls, is controlled by, or is under common control | ||
2564 | 162 | with you. For purposes of this definition, "control" means (i) the | ||
2565 | 163 | power, direct or indirect, to cause the direction or management of | ||
2566 | 164 | such entity, whether by contract or otherwise, or (ii) ownership | ||
2567 | 165 | of fifty percent (50%) or more of the outstanding shares, or (iii) | ||
2568 | 166 | beneficial ownership of such entity. | ||
2569 | 167 | |||
2570 | 168 | 15) Right to Use. You may use the Original Work in all ways not | ||
2571 | 169 | otherwise restricted or conditioned by this License or by law, and | ||
2572 | 170 | Licensor promises not to interfere with or be responsible for such | ||
2573 | 171 | uses by You. | ||
2574 | 172 | |||
2575 | 173 | 16) Modification of This License. This License is Copyright © 2005 | ||
2576 | 174 | Lawrence Rosen. Permission is granted to copy, distribute, or | ||
2577 | 175 | communicate this License without modification. Nothing in this | ||
2578 | 176 | License permits You to modify this License as applied to the | ||
2579 | 177 | Original Work or to Derivative Works. However, You may modify the | ||
2580 | 178 | text of this License and copy, distribute or communicate your | ||
2581 | 179 | modified version (the "Modified License") and apply it to other | ||
2582 | 180 | original works of authorship subject to the following conditions: | ||
2583 | 181 | (i) You may not indicate in any way that your Modified License is | ||
2584 | 182 | the "Academic Free License" or "AFL" and you may not use those | ||
2585 | 183 | names in the name of your Modified License; (ii) You must replace | ||
2586 | 184 | the notice specified in the first paragraph above with the notice | ||
2587 | 185 | "Licensed under <insert your license name here>" or with a notice | ||
2588 | 186 | of your own that is not confusingly similar to the notice in this | ||
2589 | 187 | License; and (iii) You may not claim that your original works are | ||
2590 | 188 | open source software unless your Modified License has been | ||
2591 | 189 | approved by Open Source Initiative (OSI) and You comply with its | ||
2592 | 190 | license review and certification process. | ||
2593 | 0 | 191 | ||
2594 | === added file 'contrib/client-side/svn_load_dirs/svn_load_dirs.README' | |||
2595 | --- contrib/client-side/svn_load_dirs/svn_load_dirs.README 1970-01-01 00:00:00 +0000 | |||
2596 | +++ contrib/client-side/svn_load_dirs/svn_load_dirs.README 2009-12-12 13:21:14 +0000 | |||
2597 | @@ -0,0 +1,270 @@ | |||
2598 | 1 | Introduction | ||
2599 | 2 | ============ | ||
2600 | 3 | |||
2601 | 4 | This Perl script is designed to load a number of directories into | ||
2602 | 5 | Subversion. This is useful if you have a number of .zip's or | ||
2603 | 6 | tar.{Z,gz,bz2}'s for a particular package and want to load them into | ||
2604 | 7 | Subversion. | ||
2605 | 8 | |||
2606 | 9 | Command Line Options | ||
2607 | 10 | ==================== | ||
2608 | 11 | |||
2609 | 12 | Run the script with no command line arguments to see all the command | ||
2610 | 13 | line options it takes. | ||
2611 | 14 | |||
2612 | 15 | When Not To Use This Script | ||
2613 | 16 | =========================== | ||
2614 | 17 | |||
2615 | 18 | This script assumes that these packages were not previously in a | ||
2616 | 19 | source control system, in particular CVS, because then you would use | ||
2617 | 20 | another script to migrate the repository over, and in CVS' case, you | ||
2618 | 21 | would use cvs2svn. This script will properly tag each release in the | ||
2619 | 22 | tags directory if you use the -t command line option. | ||
2620 | 23 | |||
2621 | 24 | Automatically Setting Properties On New Files & Directories | ||
2622 | 25 | =========================================================== | ||
2623 | 26 | |||
2624 | 27 | The script also accepts a separate configuration file for applying | ||
2625 | 28 | properties to specific files and directories matching a regular | ||
2626 | 29 | expression that are *added* to the repository. This script will not | ||
2627 | 30 | modify properties of already existing files or directories in the | ||
2628 | 31 | repository. This configuration file is specified to svn_load_dirs.pl | ||
2629 | 32 | using the -p command line option. The format of the file is either | ||
2630 | 33 | two or four columns: | ||
2631 | 34 | |||
2632 | 35 | regular_expression control property_name property_value | ||
2633 | 36 | |||
2634 | 37 | The `regular_expression' is a Perl style regular expression. It is | ||
2635 | 38 | matched in a case-insensitive against filenames. | ||
2636 | 39 | |||
2637 | 40 | The `control' must either be set to `break' or `cont'. It is used | ||
2638 | 41 | to tell svn_load_dirs.pl if the following lines in the | ||
2639 | 42 | configuration file should be examined for a match or if all | ||
2640 | 43 | matching should stop. If `control' is set to `break', then no more | ||
2641 | 44 | lines from the configuration file will be matched. If `control' is | ||
2642 | 45 | set to `cont', which is short for continue, then more comparisons | ||
2643 | 46 | will be made. Multiple properties can be set for one file or | ||
2644 | 47 | directory this way. | ||
2645 | 48 | |||
2646 | 49 | The last two, `property_name' and `property_value' are optional and | ||
2647 | 50 | are applied to matching files and directories. | ||
2648 | 51 | |||
2649 | 52 | If you have whitespace in any of the `regular_expression', | ||
2650 | 53 | `property_name' or `property_value' columns, you must surround the | ||
2651 | 54 | value with either a single or double quote. You can protect single or | ||
2652 | 55 | double quotes with a \ character. The \ character is removed by this | ||
2653 | 56 | script *only* for whitespace and quote characters, so you do not need | ||
2654 | 57 | to protect any other characters, beyond what you would normally | ||
2655 | 58 | protect for the regular expression. | ||
2656 | 59 | |||
2657 | 60 | This sample configuration file was used to load on a Unix box a number | ||
2658 | 61 | of Zip files containing Windows files with CRLF end of lines. | ||
2659 | 62 | |||
2660 | 63 | \.doc$ break svn:mime-type application/msword | ||
2661 | 64 | \.ds(p|w)$ break svn:eol-style CRLF | ||
2662 | 65 | \.ilk$ break svn:eol-style CRLF | ||
2663 | 66 | \.ncb$ break svn:eol-style CRLF | ||
2664 | 67 | \.opt$ break svn:eol-style CRLF | ||
2665 | 68 | \.exe$ break svn:mime-type application/octet-stream | ||
2666 | 69 | dos2unix-eol\.sh$ break | ||
2667 | 70 | .* break svn:eol-style native | ||
2668 | 71 | |||
2669 | 72 | In this example, all the files should be converted to the native end | ||
2670 | 73 | of line style, which the last line of the configuration handles. The | ||
2671 | 74 | exception is dos2unix-eol.sh, which contains embedded CR's used to | ||
2672 | 75 | find and replace Windows CRLF end of line characters with Unix's LF | ||
2673 | 76 | characters. Since svn and svn_load_dirs.pl converts all CR, CRLF and | ||
2674 | 77 | LF's to the native end of line style when `svn:eol-style' is set to | ||
2675 | 78 | `native', this file should be left untouched. Hence, the `break' with | ||
2676 | 79 | no property settings. | ||
2677 | 80 | |||
2678 | 81 | The Windows Visual C++ and Visual Studio files (*.dsp, *.dsw, etc.) | ||
2679 | 82 | should retain their CRLF line endings on any operating system and any | ||
2680 | 83 | *.doc files are always treated as binary files, hence the | ||
2681 | 84 | `svn:mime-type' setting of `application/msword'. | ||
2682 | 85 | |||
2683 | 86 | Example Import | ||
2684 | 87 | ============== | ||
2685 | 88 | |||
2686 | 89 | An example import follows: | ||
2687 | 90 | |||
2688 | 91 | Steps: | ||
2689 | 92 | |||
2690 | 93 | 1) Unpack your .tar.{Z,gz,bz2}'s or .zips into a directory that is not | ||
2691 | 94 | in a Subversion repository. | ||
2692 | 95 | |||
2693 | 96 | Example: | ||
2694 | 97 | |||
2695 | 98 | I'll use an example from my Orca distribution: | ||
2696 | 99 | |||
2697 | 100 | % cd /tmp | ||
2698 | 101 | % zcat orca-0.18.tar.gz | tar xf - | ||
2699 | 102 | % zcat orca-0.27b2.tar.gz | tar xf - | ||
2700 | 103 | |||
2701 | 104 | 2) Decide on the directory structure you want to use to contain the | ||
2702 | 105 | project you are loading. | ||
2703 | 106 | |||
2704 | 107 | There are three main directory structures you can use. If you have | ||
2705 | 108 | a single project, then use the structure Subversion uses for | ||
2706 | 109 | itself, that is | ||
2707 | 110 | |||
2708 | 111 | /branches | ||
2709 | 112 | /tags | ||
2710 | 113 | /trunk | ||
2711 | 114 | |||
2712 | 115 | and load the project into /trunk and the tags into the tags | ||
2713 | 116 | directory. | ||
2714 | 117 | |||
2715 | 118 | If you have more than one project and you want to treat each | ||
2716 | 119 | project separately, then use one of the following structures: | ||
2717 | 120 | |||
2718 | 121 | /branches | ||
2719 | 122 | /tags | ||
2720 | 123 | /tags/project1 | ||
2721 | 124 | /tags/project2 | ||
2722 | 125 | /tags/project3 | ||
2723 | 126 | /trunk | ||
2724 | 127 | /trunk/project1 | ||
2725 | 128 | /trunk/project2 | ||
2726 | 129 | /trunk/project3 | ||
2727 | 130 | |||
2728 | 131 | or | ||
2729 | 132 | |||
2730 | 133 | /project1/branches | ||
2731 | 134 | /project1/tags | ||
2732 | 135 | /project1/trunk | ||
2733 | 136 | /project2/branches | ||
2734 | 137 | /project2/tags | ||
2735 | 138 | /project2/trunk | ||
2736 | 139 | |||
2737 | 140 | Example: | ||
2738 | 141 | |||
2739 | 142 | To load Orca using the second directory structure into the | ||
2740 | 143 | subversion repository rooted at http://svn.orcaware.com:8000/repos | ||
2741 | 144 | |||
2742 | 145 | % cd /tmp | ||
2743 | 146 | % svn co http://svn.orcaware.com:8000/repos | ||
2744 | 147 | % cd repos | ||
2745 | 148 | % mkdir tags tags/orca trunk trunk/orca | ||
2746 | 149 | % svn add tags trunk | ||
2747 | 150 | % svn commit -m 'Create initial directory tree structure for projects.' | ||
2748 | 151 | |||
2749 | 152 | This script will create any subdirectories required to import your | ||
2750 | 153 | directories into the repository, so these steps may not be required. | ||
2751 | 154 | |||
2752 | 155 | 3) Decide on the URL to use to access the subversion repository with | ||
2753 | 156 | this script and the relative directory paths to the directories to | ||
2754 | 157 | import your project into and to place the tags into. | ||
2755 | 158 | |||
2756 | 159 | The usage of the script is | ||
2757 | 160 | |||
2758 | 161 | ./svn_load_dirs.pl [-t tag_dir] svn_url import_dir dir_v1 [dir_v2 [..]] | ||
2759 | 162 | |||
2760 | 163 | The import_dir and tag_dir command line options are directory paths | ||
2761 | 164 | relative to svn_url and tell the script where to load your project | ||
2762 | 165 | and optionally the tags. Both import_dir and tag_dir cannot | ||
2763 | 166 | contain any ..'s and so svn_url must contain both import_dir and | ||
2764 | 167 | tag_dir. | ||
2765 | 168 | |||
2766 | 169 | This script supports importing your directories into subdirectories | ||
2767 | 170 | of the root of the subversion repository. | ||
2768 | 171 | |||
2769 | 172 | Example: | ||
2770 | 173 | |||
2771 | 174 | In the previous step, if you wanted to load a project named orca | ||
2772 | 175 | into the second directory structure, say | ||
2773 | 176 | |||
2774 | 177 | /orca/branches | ||
2775 | 178 | /orca/tags | ||
2776 | 179 | /orca/trunk | ||
2777 | 180 | |||
2778 | 181 | and you didn't care about tags, then you could use as svn_url the | ||
2779 | 182 | URL | ||
2780 | 183 | |||
2781 | 184 | http://svn.orcaware.com:8000/repos/orca | ||
2782 | 185 | |||
2783 | 186 | and use . as import_dir. | ||
2784 | 187 | |||
2785 | 188 | In this case, the script will only check out the orca subdirectory. | ||
2786 | 189 | This is handy if the entire repository is very large and you don't | ||
2787 | 190 | want this script to check the whole repository under /repos out to | ||
2788 | 191 | load files into it. | ||
2789 | 192 | |||
2790 | 193 | The only caveat is that svn_url must exist already in the | ||
2791 | 194 | repository. So in this case, you would have to already have | ||
2792 | 195 | created the orca subdirectory in the repository. | ||
2793 | 196 | |||
2794 | 197 | 4) Decide on the tags you want on your directories. If you don't want | ||
2795 | 198 | any tags, then ignore this step. | ||
2796 | 199 | |||
2797 | 200 | The script takes a -t command line argument that is a directory | ||
2798 | 201 | path relative to the svn_url that you supply to this script from | ||
2799 | 202 | step 3 above. Again, the URL from step 3 does not need to be the | ||
2800 | 203 | URL of the root of the subversion repository, so you can work in | ||
2801 | 204 | the subdirectory just fine. | ||
2802 | 205 | |||
2803 | 206 | Look at the directories that will be loaded into the repository and | ||
2804 | 207 | come up with a Perl regular expression that matches only the | ||
2805 | 208 | portion of the directory name that identifies each directory. You | ||
2806 | 209 | may need to rename your directories so that they contain a version | ||
2807 | 210 | number you can use to tag them properly. | ||
2808 | 211 | |||
2809 | 212 | The regular expression should be placed into the directory path | ||
2810 | 213 | given to -t surrounded by @'s. Make sure to protect the regular | ||
2811 | 214 | expression from the shell by using quotes. | ||
2812 | 215 | |||
2813 | 216 | You can have multiple sets of regular expressions in the directory | ||
2814 | 217 | path. | ||
2815 | 218 | |||
2816 | 219 | There is no way to escape the @ characters. | ||
2817 | 220 | |||
2818 | 221 | Example: | ||
2819 | 222 | |||
2820 | 223 | For the Orca directories orca-0.18 and orca-0.27b2 I can use the | ||
2821 | 224 | regular expression \d+\.\w+. I want the tags to be located in | ||
2822 | 225 | the tags/orca/VERSION_NUMBER directory. So I would use: | ||
2823 | 226 | |||
2824 | 227 | -t 'tags/orca/@\d+\.\w+@' | ||
2825 | 228 | |||
2826 | 229 | 5) Back up your Subversion repository in case you are not happy with | ||
2827 | 230 | the results of running the script or the script fails for some | ||
2828 | 231 | reason. | ||
2829 | 232 | |||
2830 | 233 | Example: | ||
2831 | 234 | |||
2832 | 235 | % /opt/i386-linux/apache-2.0/bin/apachectl stop | ||
2833 | 236 | % cd /export/svn | ||
2834 | 237 | % tar cvf repos_backup.tar repos | ||
2835 | 238 | % /opt/i386-linux/apache-2.0/bin/apachectl start | ||
2836 | 239 | |||
2837 | 240 | 6) Run this script. The first argument is the root of the Subversion | ||
2838 | 241 | package directory where you want to install the directories. The | ||
2839 | 242 | directories are loaded in order that they appear on the command | ||
2840 | 243 | line. | ||
2841 | 244 | |||
2842 | 245 | Example: | ||
2843 | 246 | |||
2844 | 247 | svn_load_dirs.pl http://svn.orcaware.com:8000/repos \ | ||
2845 | 248 | trunk/orca -t 'tags/orca/@\d+\.\w+@' orca-0.18 orca-0.27b2 | ||
2846 | 249 | |||
2847 | 250 | The output from this script are: | ||
2848 | 251 | |||
2849 | 252 | A Added file or directory. | ||
2850 | 253 | U File's contents have been updated. | ||
2851 | 254 | d File or directory is deleted because an enclosing directory is | ||
2852 | 255 | deleted. | ||
2853 | 256 | D File or directory is deleted. | ||
2854 | 257 | |||
2855 | 258 | 7) Check the results by either checking out a new tree and or browsing | ||
2856 | 259 | the repository with a browser. If they are not what you want, back | ||
2857 | 260 | out the changes. | ||
2858 | 261 | |||
2859 | 262 | Example: | ||
2860 | 263 | |||
2861 | 264 | These commands back out the changes: | ||
2862 | 265 | |||
2863 | 266 | % /opt/i386-linux/apache-2.0/bin/apachectl stop | ||
2864 | 267 | % cd /export/svn | ||
2865 | 268 | % rm -fr repos | ||
2866 | 269 | % tar xvf repos_backup.tar | ||
2867 | 270 | % /opt/i386-linux/apache-2.0/bin/apachectl start | ||
2868 | 0 | 271 | ||
2869 | === added file 'contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in' | |||
2870 | --- contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in 1970-01-01 00:00:00 +0000 | |||
2871 | +++ contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in 2009-12-12 13:21:15 +0000 | |||
2872 | @@ -0,0 +1,2049 @@ | |||
2873 | 1 | #!/usr/bin/perl -w | ||
2874 | 2 | |||
2875 | 3 | # Copyright (c) 2002,2003,2004,2005,2006,2007,2009 Dolby. All rights reserved. | ||
2876 | 4 | # | ||
2877 | 5 | # Licensed under the Academic Free License version 3.0. See LICENSE_AFL3.txt | ||
2878 | 6 | # or http://www.opensource.org/licenses/academic.php for a copy of the license | ||
2879 | 7 | # text. | ||
2880 | 8 | |||
2881 | 9 | # $HeadURL: http://svn.collab.net/repos/svn/branches/1.6.x/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in $ | ||
2882 | 10 | # $LastChangedDate: 2009-10-12 12:57:16 +0000 (Mon, 12 Oct 2009) $ | ||
2883 | 11 | # $LastChangedBy: hwright $ | ||
2884 | 12 | # $LastChangedRevision: 39956 $ | ||
2885 | 13 | |||
2886 | 14 | $| = 1; | ||
2887 | 15 | |||
2888 | 16 | use strict; | ||
2889 | 17 | use Carp; | ||
2890 | 18 | use Cwd; | ||
2891 | 19 | use Digest::MD5 2.20; | ||
2892 | 20 | use File::Copy 2.03; | ||
2893 | 21 | use File::Find; | ||
2894 | 22 | use File::Path 1.0404; | ||
2895 | 23 | use File::Temp 0.12 qw(tempdir tempfile); | ||
2896 | 24 | use Getopt::Long 2.25; | ||
2897 | 25 | use Text::Wrap; | ||
2898 | 26 | use URI 1.17; | ||
2899 | 27 | use English; | ||
2900 | 28 | |||
2901 | 29 | $Text::Wrap::columns = 72; | ||
2902 | 30 | |||
2903 | 31 | # Specify the location of the svn command. | ||
2904 | 32 | my $svn = '@SVN_BINDIR@/svn'; | ||
2905 | 33 | |||
2906 | 34 | # Process the command line options. | ||
2907 | 35 | |||
2908 | 36 | # The base URL for the portion of the repository to work in. Note | ||
2909 | 37 | # that this does not have to be the root of the subversion repository, | ||
2910 | 38 | # it can point to a subdirectory in the repository. | ||
2911 | 39 | my $repos_base_url; | ||
2912 | 40 | |||
2913 | 41 | # The relative path from the repository base URL to work in to the | ||
2914 | 42 | # directory to load the input directories into. | ||
2915 | 43 | my $repos_load_rel_path; | ||
2916 | 44 | |||
2917 | 45 | # To specify where tags, which are simply copies of the imported | ||
2918 | 46 | # directory, should be placed relative to the repository base URL, use | ||
2919 | 47 | # the -t command line option. This value must contain regular | ||
2920 | 48 | # expressions that match portions of the input directory names to | ||
2921 | 49 | # create an unique tag for each input directory. The regular | ||
2922 | 50 | # expressions are surrounded by a specified character to distinguish | ||
2923 | 51 | # the regular expression from the normal directory path. | ||
2924 | 52 | my $opt_import_tag_location; | ||
2925 | 53 | |||
2926 | 54 | # Do not ask for any user input. Just go ahead and do everything. | ||
2927 | 55 | my $opt_no_user_input; | ||
2928 | 56 | |||
2929 | 57 | # Do not automatically set the svn:executable property based on the | ||
2930 | 58 | # file's exe bit. | ||
2931 | 59 | my $opt_no_auto_exe; | ||
2932 | 60 | |||
2933 | 61 | # Username to use for commits. | ||
2934 | 62 | my $opt_svn_username; | ||
2935 | 63 | |||
2936 | 64 | # Password to use for commits. | ||
2937 | 65 | my $opt_svn_password; | ||
2938 | 66 | |||
2939 | 67 | # Verbosity level. | ||
2940 | 68 | my $opt_verbose; | ||
2941 | 69 | |||
2942 | 70 | # Path to already checked-out working copy. | ||
2943 | 71 | my $opt_existing_wc_dir; | ||
2944 | 72 | |||
2945 | 73 | # List of filename patterns to ignore (as in .subversion/config's | ||
2946 | 74 | # "global-ignores" option). | ||
2947 | 75 | my $opt_glob_ignores; | ||
2948 | 76 | |||
2949 | 77 | # This is the character used to separate regular expressions occuring | ||
2950 | 78 | # in the tag directory path from the path itself. | ||
2951 | 79 | my $REGEX_SEP_CHAR = '@'; | ||
2952 | 80 | |||
2953 | 81 | # This specifies a configuration file that contains a list of regular | ||
2954 | 82 | # expressions to check against a file and the properties to set on | ||
2955 | 83 | # matching files. | ||
2956 | 84 | my $property_config_filename; | ||
2957 | 85 | |||
2958 | 86 | GetOptions('no_user_input' => \$opt_no_user_input, | ||
2959 | 87 | 'no_auto_exe' => \$opt_no_auto_exe, | ||
2960 | 88 | 'property_cfg_filename=s' => \$property_config_filename, | ||
2961 | 89 | 'svn_password=s' => \$opt_svn_password, | ||
2962 | 90 | 'svn_username=s' => \$opt_svn_username, | ||
2963 | 91 | 'tag_location=s' => \$opt_import_tag_location, | ||
2964 | 92 | 'verbose+' => \$opt_verbose, | ||
2965 | 93 | 'wc=s' => \$opt_existing_wc_dir, | ||
2966 | 94 | 'glob_ignores=s' => \$opt_glob_ignores) | ||
2967 | 95 | or &usage; | ||
2968 | 96 | &usage("$0: too few arguments") if @ARGV < 2; | ||
2969 | 97 | |||
2970 | 98 | $repos_base_url = shift; | ||
2971 | 99 | $repos_load_rel_path = shift; | ||
2972 | 100 | |||
2973 | 101 | # Check that the repository base URL and the import directories do not | ||
2974 | 102 | # contain any ..'s. | ||
2975 | 103 | if ($repos_base_url =~ /\.{2}/) | ||
2976 | 104 | { | ||
2977 | 105 | die "$0: repos base URL $repos_base_url cannot contain ..'s.\n"; | ||
2978 | 106 | } | ||
2979 | 107 | if ($repos_load_rel_path =~ /\.{2}/) | ||
2980 | 108 | { | ||
2981 | 109 | die "$0: repos import relative directory path $repos_load_rel_path ", | ||
2982 | 110 | "cannot contain ..'s.\n"; | ||
2983 | 111 | } | ||
2984 | 112 | |||
2985 | 113 | # If there are no directories listed on the command line, then the | ||
2986 | 114 | # directories are read from standard input. In this case, the | ||
2987 | 115 | # -no_user_input command line option must be specified. | ||
2988 | 116 | if (!@ARGV and !$opt_no_user_input) | ||
2989 | 117 | { | ||
2990 | 118 | &usage("$0: must use -no_user_input if no dirs listed on command line."); | ||
2991 | 119 | } | ||
2992 | 120 | |||
2993 | 121 | # The tag option cannot be used when directories are read from | ||
2994 | 122 | # standard input because tags may collide and no user input can be | ||
2995 | 123 | # taken to verify that the input is ok. | ||
2996 | 124 | if (!@ARGV and $opt_import_tag_location) | ||
2997 | 125 | { | ||
2998 | 126 | &usage("$0: cannot use -tag_location when dirs are read from stdin."); | ||
2999 | 127 | } | ||
3000 | 128 | |||
3001 | 129 | # If the tag directory is set, then the import directory cannot be '.'. | ||
3002 | 130 | if (defined $opt_import_tag_location and $repos_load_rel_path eq '.') | ||
3003 | 131 | { | ||
3004 | 132 | &usage("$0: cannot set import_dir to '.' and use -t command line option."); | ||
3005 | 133 | } | ||
3006 | 134 | |||
3007 | 135 | # Set the svn command line options that are used anytime svn connects | ||
3008 | 136 | # to the repository. | ||
3009 | 137 | my @svn_use_repos_cmd_opts; | ||
3010 | 138 | &set_svn_use_repos_cmd_opts($opt_svn_username, $opt_svn_password); | ||
3011 | 139 | |||
3012 | 140 | # Check that the tag directories do not contain any ..'s. Also, the | ||
3013 | 141 | # import and tag directories cannot be absolute. | ||
3014 | 142 | if (defined $opt_import_tag_location and $opt_import_tag_location =~ /\.{2}/) | ||
3015 | 143 | { | ||
3016 | 144 | die "$0: repos tag relative directory path $opt_import_tag_location ", | ||
3017 | 145 | "cannot contain ..'s.\n"; | ||
3018 | 146 | } | ||
3019 | 147 | if ($repos_load_rel_path =~ m|^/|) | ||
3020 | 148 | { | ||
3021 | 149 | die "$0: repos import relative directory path $repos_load_rel_path ", | ||
3022 | 150 | "cannot start with /.\n"; | ||
3023 | 151 | } | ||
3024 | 152 | if (defined $opt_import_tag_location and $opt_import_tag_location =~ m|^/|) | ||
3025 | 153 | { | ||
3026 | 154 | die "$0: repos tagrelative directory path $opt_import_tag_location ", | ||
3027 | 155 | "cannot start with /.\n"; | ||
3028 | 156 | } | ||
3029 | 157 | |||
3030 | 158 | if (defined $opt_existing_wc_dir) | ||
3031 | 159 | { | ||
3032 | 160 | unless (-e $opt_existing_wc_dir) | ||
3033 | 161 | { | ||
3034 | 162 | die "$0: working copy '$opt_existing_wc_dir' does not exist.\n"; | ||
3035 | 163 | } | ||
3036 | 164 | |||
3037 | 165 | unless (-d _) | ||
3038 | 166 | { | ||
3039 | 167 | die "$0: working copy '$opt_existing_wc_dir' is not a directory.\n"; | ||
3040 | 168 | } | ||
3041 | 169 | |||
3042 | 170 | unless (-d "$opt_existing_wc_dir/.svn") | ||
3043 | 171 | { | ||
3044 | 172 | die "$0: working copy '$opt_existing_wc_dir' does not have .svn ", | ||
3045 | 173 | "directory.\n"; | ||
3046 | 174 | } | ||
3047 | 175 | |||
3048 | 176 | $opt_existing_wc_dir = Cwd::abs_path($opt_existing_wc_dir) | ||
3049 | 177 | } | ||
3050 | 178 | |||
3051 | 179 | # If no glob_ignores specified, try to deduce from config file, | ||
3052 | 180 | # or use the default below. | ||
3053 | 181 | my $ignores_str = | ||
3054 | 182 | '*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store'; | ||
3055 | 183 | |||
3056 | 184 | if ( defined $opt_glob_ignores) | ||
3057 | 185 | { | ||
3058 | 186 | $ignores_str = $opt_glob_ignores; | ||
3059 | 187 | } | ||
3060 | 188 | elsif ( -f "$ENV{HOME}/.subversion/config" ) | ||
3061 | 189 | { | ||
3062 | 190 | open my $conf, "$ENV{HOME}/.subversion/config"; | ||
3063 | 191 | while (<$conf>) | ||
3064 | 192 | { | ||
3065 | 193 | if ( /^global-ignores\s*=\s*(.*?)\s*$/ ) | ||
3066 | 194 | { | ||
3067 | 195 | $ignores_str = $1; | ||
3068 | 196 | last; | ||
3069 | 197 | } | ||
3070 | 198 | } | ||
3071 | 199 | } | ||
3072 | 200 | |||
3073 | 201 | my @glob_ignores = map | ||
3074 | 202 | { | ||
3075 | 203 | s/\./\\\./g; s/\*/\.\*/g; "^$_\$"; | ||
3076 | 204 | } split(/\s+/, $ignores_str); | ||
3077 | 205 | unshift @glob_ignores, '\.svn$'; | ||
3078 | 206 | |||
3079 | 207 | # Convert the string URL into a URI object. | ||
3080 | 208 | $repos_base_url =~ s|/*$||; | ||
3081 | 209 | my $repos_base_uri = URI->new($repos_base_url); | ||
3082 | 210 | |||
3083 | 211 | # Check that $repos_load_rel_path is not a directory here implying | ||
3084 | 212 | # that a command line option was forgotten. | ||
3085 | 213 | if ($repos_load_rel_path ne '.' and -d $repos_load_rel_path) | ||
3086 | 214 | { | ||
3087 | 215 | die "$0: import_dir '$repos_load_rel_path' is a directory.\n"; | ||
3088 | 216 | } | ||
3089 | 217 | |||
3090 | 218 | # The remaining command line arguments should be directories. Check | ||
3091 | 219 | # that they all exist and that there are no duplicates. | ||
3092 | 220 | if (@ARGV) | ||
3093 | 221 | { | ||
3094 | 222 | my %dirs; | ||
3095 | 223 | foreach my $dir (@ARGV) | ||
3096 | 224 | { | ||
3097 | 225 | unless (-e $dir) | ||
3098 | 226 | { | ||
3099 | 227 | die "$0: directory '$dir' does not exist.\n"; | ||
3100 | 228 | } | ||
3101 | 229 | |||
3102 | 230 | unless (-d _) | ||
3103 | 231 | { | ||
3104 | 232 | die "$0: directory '$dir' is not a directory.\n"; | ||
3105 | 233 | } | ||
3106 | 234 | |||
3107 | 235 | if ($dirs{$dir}) | ||
3108 | 236 | { | ||
3109 | 237 | die "$0: directory '$dir' is listed more than once on command ", | ||
3110 | 238 | "line.\n"; | ||
3111 | 239 | } | ||
3112 | 240 | $dirs{$dir} = 1; | ||
3113 | 241 | } | ||
3114 | 242 | } | ||
3115 | 243 | |||
3116 | 244 | # Create the tag locations and print them for the user to review. | ||
3117 | 245 | # Check that there are no duplicate tags. | ||
3118 | 246 | my %load_tags; | ||
3119 | 247 | if (@ARGV and defined $opt_import_tag_location) | ||
3120 | 248 | { | ||
3121 | 249 | my %seen_tags; | ||
3122 | 250 | |||
3123 | 251 | foreach my $load_dir (@ARGV) | ||
3124 | 252 | { | ||
3125 | 253 | my $load_tag = &get_tag_dir($load_dir); | ||
3126 | 254 | |||
3127 | 255 | print "Directory $load_dir will be tagged as $load_tag\n"; | ||
3128 | 256 | |||
3129 | 257 | if ($seen_tags{$load_tag}) | ||
3130 | 258 | { | ||
3131 | 259 | die "$0: duplicate tag generated.\n"; | ||
3132 | 260 | } | ||
3133 | 261 | $seen_tags{$load_tag} = 1; | ||
3134 | 262 | |||
3135 | 263 | $load_tags{$load_dir} = $load_tag; | ||
3136 | 264 | } | ||
3137 | 265 | |||
3138 | 266 | exit 0 unless &get_answer("Please examine identified tags. Are they " . | ||
3139 | 267 | "acceptable? (Y/n) ", 'ny', 1); | ||
3140 | 268 | print "\n"; | ||
3141 | 269 | } | ||
3142 | 270 | |||
3143 | 271 | # Load the property configuration filename, if one was specified, into | ||
3144 | 272 | # an array of hashes, where each hash contains a regular expression | ||
3145 | 273 | # and a property to apply to the file if the regular expression | ||
3146 | 274 | # matches. | ||
3147 | 275 | my @property_settings; | ||
3148 | 276 | if (defined $property_config_filename and length $property_config_filename) | ||
3149 | 277 | { | ||
3150 | 278 | open(CFG, $property_config_filename) | ||
3151 | 279 | or die "$0: cannot open '$property_config_filename' for reading: $!\n"; | ||
3152 | 280 | |||
3153 | 281 | my $ok = 1; | ||
3154 | 282 | |||
3155 | 283 | while (my $line = <CFG>) | ||
3156 | 284 | { | ||
3157 | 285 | next if $line =~ /^\s*$/; | ||
3158 | 286 | next if $line =~ /^\s*#/; | ||
3159 | 287 | |||
3160 | 288 | # Split the input line into words taking into account that | ||
3161 | 289 | # single or double quotes may define a single word with | ||
3162 | 290 | # whitespace in it. The format for the file is | ||
3163 | 291 | # regex control property_name property_value | ||
3164 | 292 | my @line = &split_line($line); | ||
3165 | 293 | next if @line == 0; | ||
3166 | 294 | |||
3167 | 295 | unless (@line == 2 or @line == 4) | ||
3168 | 296 | { | ||
3169 | 297 | warn "$0: line $. of '$property_config_filename' has to have 2 ", | ||
3170 | 298 | "or 4 columns.\n"; | ||
3171 | 299 | $ok = 0; | ||
3172 | 300 | next; | ||
3173 | 301 | } | ||
3174 | 302 | my ($regex, $control, $property_name, $property_value) = @line; | ||
3175 | 303 | |||
3176 | 304 | unless ($control eq 'break' or $control eq 'cont') | ||
3177 | 305 | { | ||
3178 | 306 | warn "$0: line $. of '$property_config_filename' has illegal ", | ||
3179 | 307 | "value for column 3 '$control', must be 'break' or 'cont'.\n"; | ||
3180 | 308 | $ok = 0; | ||
3181 | 309 | next; | ||
3182 | 310 | } | ||
3183 | 311 | |||
3184 | 312 | # Compile the regular expression. | ||
3185 | 313 | my $re; | ||
3186 | 314 | eval { $re = qr/$regex/i }; | ||
3187 | 315 | if ($@) | ||
3188 | 316 | { | ||
3189 | 317 | warn "$0: line $. of '$property_config_filename' regex '$regex' ", | ||
3190 | 318 | "does not compile:\n$@\n"; | ||
3191 | 319 | $ok = 0; | ||
3192 | 320 | next; | ||
3193 | 321 | } | ||
3194 | 322 | |||
3195 | 323 | push(@property_settings, {name => $property_name, | ||
3196 | 324 | value => $property_value, | ||
3197 | 325 | control => $control, | ||
3198 | 326 | re => $re}); | ||
3199 | 327 | } | ||
3200 | 328 | close(CFG) | ||
3201 | 329 | or warn "$0: error in closing '$property_config_filename' for ", | ||
3202 | 330 | "reading: $!\n"; | ||
3203 | 331 | |||
3204 | 332 | exit 1 unless $ok; | ||
3205 | 333 | } | ||
3206 | 334 | |||
3207 | 335 | # Check that the svn base URL works by running svn log on it. Only | ||
3208 | 336 | # get the HEAD revision log message; there's no need to waste | ||
3209 | 337 | # bandwidth seeing all of the log messages. | ||
3210 | 338 | print "Checking that the base URL is a Subversion repository.\n"; | ||
3211 | 339 | read_from_process($svn, 'log', '-r', 'HEAD', | ||
3212 | 340 | @svn_use_repos_cmd_opts, $repos_base_uri); | ||
3213 | 341 | print "\n"; | ||
3214 | 342 | |||
3215 | 343 | my $orig_cwd = cwd; | ||
3216 | 344 | |||
3217 | 345 | # The first step is to determine the root of the svn repository. Do | ||
3218 | 346 | # this with the svn log command. Take the svn_url hostname and port | ||
3219 | 347 | # as the initial url and append to it successive portions of the final | ||
3220 | 348 | # path until svn log succeeds. | ||
3221 | 349 | print "Finding the root URL of the Subversion repository.\n"; | ||
3222 | 350 | my $repos_root_uri; | ||
3223 | 351 | my $repos_root_uri_path; | ||
3224 | 352 | my $repos_base_path_segment; | ||
3225 | 353 | { | ||
3226 | 354 | my $r = $repos_base_uri->clone; | ||
3227 | 355 | my @path_segments = grep { length($_) } $r->path_segments; | ||
3228 | 356 | my @repos_base_path_segments = @path_segments; | ||
3229 | 357 | unshift(@path_segments, ''); | ||
3230 | 358 | $r->path(''); | ||
3231 | 359 | my @r_path_segments; | ||
3232 | 360 | |||
3233 | 361 | while (@path_segments) | ||
3234 | 362 | { | ||
3235 | 363 | $repos_root_uri_path = shift @path_segments; | ||
3236 | 364 | push(@r_path_segments, $repos_root_uri_path); | ||
3237 | 365 | $r->path_segments(@r_path_segments); | ||
3238 | 366 | if (safe_read_from_pipe($svn, 'log', '-r', 'HEAD', | ||
3239 | 367 | @svn_use_repos_cmd_opts, $r) == 0) | ||
3240 | 368 | { | ||
3241 | 369 | $repos_root_uri = $r; | ||
3242 | 370 | last; | ||
3243 | 371 | } | ||
3244 | 372 | shift @repos_base_path_segments; | ||
3245 | 373 | } | ||
3246 | 374 | $repos_base_path_segment = join('/', @repos_base_path_segments); | ||
3247 | 375 | } | ||
3248 | 376 | |||
3249 | 377 | if ($repos_root_uri) | ||
3250 | 378 | { | ||
3251 | 379 | print "Determined that the svn root URL is $repos_root_uri.\n\n"; | ||
3252 | 380 | } | ||
3253 | 381 | else | ||
3254 | 382 | { | ||
3255 | 383 | die "$0: cannot determine root svn URL.\n"; | ||
3256 | 384 | } | ||
3257 | 385 | |||
3258 | 386 | # Create a temporary directory for svn to work in. | ||
3259 | 387 | my $temp_dir = tempdir( "svn_load_dirs_XXXXXXXXXX", TMPDIR => 1 ); | ||
3260 | 388 | |||
3261 | 389 | # Put in a signal handler to clean up any temporary directories. | ||
3262 | 390 | sub catch_signal { | ||
3263 | 391 | my $signal = shift; | ||
3264 | 392 | warn "$0: caught signal $signal. Quitting now.\n"; | ||
3265 | 393 | exit 1; | ||
3266 | 394 | } | ||
3267 | 395 | |||
3268 | 396 | $SIG{HUP} = \&catch_signal; | ||
3269 | 397 | $SIG{INT} = \&catch_signal; | ||
3270 | 398 | $SIG{TERM} = \&catch_signal; | ||
3271 | 399 | $SIG{PIPE} = \&catch_signal; | ||
3272 | 400 | |||
3273 | 401 | # Create an object that when DESTROY'ed will delete the temporary | ||
3274 | 402 | # directory. The CLEANUP flag to tempdir should do this, but they | ||
3275 | 403 | # call rmtree with 1 as the last argument which takes extra security | ||
3276 | 404 | # measures that do not clean up the .svn directories. | ||
3277 | 405 | my $temp_dir_cleanup = Temp::Delete->new; | ||
3278 | 406 | |||
3279 | 407 | # Determine the native end of line style for this system. Do this the | ||
3280 | 408 | # most portable way, by writing a file with a single \n in non-binary | ||
3281 | 409 | # mode and then reading the file in binary mode. | ||
3282 | 410 | my $native_eol = &determine_native_eol; | ||
3283 | 411 | |||
3284 | 412 | # Check if all the directories exist to load the directories into the | ||
3285 | 413 | # repository. If not, ask if they should be created. For tags, do | ||
3286 | 414 | # not create the tag directory itself, that is done on the svn cp. | ||
3287 | 415 | { | ||
3288 | 416 | print "Finding if any directories need to be created in repository.\n"; | ||
3289 | 417 | |||
3290 | 418 | my @dirs_to_create; | ||
3291 | 419 | my @urls_to_create; | ||
3292 | 420 | my %seen_dir; | ||
3293 | 421 | my @load_tags_without_last_segment; | ||
3294 | 422 | |||
3295 | 423 | # Assume that the last portion of the tag directory contains the | ||
3296 | 424 | # version number and remove it from the directories to create, | ||
3297 | 425 | # because the tag directory will be created by svn cp. | ||
3298 | 426 | foreach my $load_tag (sort values %load_tags) | ||
3299 | 427 | { | ||
3300 | 428 | # Skip this tag if there is only one segment in its name. | ||
3301 | 429 | my $index = rindex($load_tag, '/'); | ||
3302 | 430 | next if $index == -1; | ||
3303 | 431 | |||
3304 | 432 | # Trim off the last segment and record the result. | ||
3305 | 433 | push(@load_tags_without_last_segment, substr($load_tag, 0, $index)); | ||
3306 | 434 | } | ||
3307 | 435 | |||
3308 | 436 | foreach my $dir ($repos_load_rel_path, @load_tags_without_last_segment) | ||
3309 | 437 | { | ||
3310 | 438 | next unless length $dir; | ||
3311 | 439 | my $d = ''; | ||
3312 | 440 | foreach my $segment (split('/', $dir)) | ||
3313 | 441 | { | ||
3314 | 442 | $d = length $d ? "$d/$segment" : $segment; | ||
3315 | 443 | my $url = "$repos_base_url/$d"; | ||
3316 | 444 | unless ($seen_dir{$d}) | ||
3317 | 445 | { | ||
3318 | 446 | $seen_dir{$d} = 1; | ||
3319 | 447 | if (safe_read_from_pipe($svn, 'log', '-r', 'HEAD', | ||
3320 | 448 | @svn_use_repos_cmd_opts, $url) != 0) | ||
3321 | 449 | { | ||
3322 | 450 | push(@dirs_to_create, $d); | ||
3323 | 451 | push(@urls_to_create, $url); | ||
3324 | 452 | } | ||
3325 | 453 | } | ||
3326 | 454 | } | ||
3327 | 455 | } | ||
3328 | 456 | |||
3329 | 457 | if (@dirs_to_create) | ||
3330 | 458 | { | ||
3331 | 459 | print "The following directories do not exist and need to exist:\n"; | ||
3332 | 460 | foreach my $dir (@dirs_to_create) | ||
3333 | 461 | { | ||
3334 | 462 | print " $dir\n"; | ||
3335 | 463 | } | ||
3336 | 464 | exit 0 unless &get_answer("You must add them now to load the " . | ||
3337 | 465 | "directories. Continue (Y/n)? ", 'ny', 1); | ||
3338 | 466 | |||
3339 | 467 | my $message = "Create directories to load project into.\n\n"; | ||
3340 | 468 | |||
3341 | 469 | foreach my $dir (@dirs_to_create) | ||
3342 | 470 | { | ||
3343 | 471 | if (length $repos_base_path_segment) | ||
3344 | 472 | { | ||
3345 | 473 | $message .= "* $repos_base_path_segment/$dir: New directory.\n"; | ||
3346 | 474 | } | ||
3347 | 475 | else | ||
3348 | 476 | { | ||
3349 | 477 | $message .= "* $dir: New directory.\n"; | ||
3350 | 478 | } | ||
3351 | 479 | } | ||
3352 | 480 | $message = wrap('', ' ', $message); | ||
3353 | 481 | |||
3354 | 482 | read_from_process($svn, 'mkdir', @svn_use_repos_cmd_opts, | ||
3355 | 483 | '-m', $message, @urls_to_create); | ||
3356 | 484 | } | ||
3357 | 485 | else | ||
3358 | 486 | { | ||
3359 | 487 | print "No directories need to be created to prepare repository.\n"; | ||
3360 | 488 | } | ||
3361 | 489 | } | ||
3362 | 490 | |||
3363 | 491 | # Either checkout a new working copy from the repository or use an | ||
3364 | 492 | # existing working copy. | ||
3365 | 493 | if (defined $opt_existing_wc_dir) | ||
3366 | 494 | { | ||
3367 | 495 | # Update an already existing working copy. | ||
3368 | 496 | print "Not checking out anything; using existing working directory at\n"; | ||
3369 | 497 | print "$opt_existing_wc_dir\n"; | ||
3370 | 498 | |||
3371 | 499 | chdir($opt_existing_wc_dir) | ||
3372 | 500 | or die "$0: cannot chdir '$opt_existing_wc_dir': $!\n"; | ||
3373 | 501 | |||
3374 | 502 | read_from_process($svn, 'update', @svn_use_repos_cmd_opts); | ||
3375 | 503 | } | ||
3376 | 504 | else | ||
3377 | 505 | { | ||
3378 | 506 | # Check out the svn repository starting at the svn URL into a | ||
3379 | 507 | # fixed directory name. | ||
3380 | 508 | my $checkout_dir_name = 'my_import_wc'; | ||
3381 | 509 | |||
3382 | 510 | # Check out only the directory being imported to, otherwise the | ||
3383 | 511 | # checkout of the entire base URL can be very huge, if it contains | ||
3384 | 512 | # a large number of tags. | ||
3385 | 513 | my $checkout_url; | ||
3386 | 514 | if ($repos_load_rel_path eq '.') | ||
3387 | 515 | { | ||
3388 | 516 | $checkout_url = $repos_base_url; | ||
3389 | 517 | } | ||
3390 | 518 | else | ||
3391 | 519 | { | ||
3392 | 520 | $checkout_url = "$repos_base_url/$repos_load_rel_path"; | ||
3393 | 521 | } | ||
3394 | 522 | |||
3395 | 523 | print "Checking out $checkout_url into $temp_dir/$checkout_dir_name\n"; | ||
3396 | 524 | |||
3397 | 525 | chdir($temp_dir) | ||
3398 | 526 | or die "$0: cannot chdir '$temp_dir': $!\n"; | ||
3399 | 527 | |||
3400 | 528 | read_from_process($svn, 'checkout', | ||
3401 | 529 | @svn_use_repos_cmd_opts, | ||
3402 | 530 | $checkout_url, $checkout_dir_name); | ||
3403 | 531 | |||
3404 | 532 | chdir($checkout_dir_name) | ||
3405 | 533 | or die "$0: cannot chdir '$checkout_dir_name': $!\n"; | ||
3406 | 534 | } | ||
3407 | 535 | |||
3408 | 536 | # At this point, the current working directory is the top level | ||
3409 | 537 | # directory of the working copy. Record the absolute path to this | ||
3410 | 538 | # location because the script will chdir back here later on. | ||
3411 | 539 | my $wc_import_dir_cwd = cwd; | ||
3412 | 540 | |||
3413 | 541 | # Set up the names for the path to the import and tag directories. | ||
3414 | 542 | my $repos_load_abs_path; | ||
3415 | 543 | if ($repos_load_rel_path eq '.') | ||
3416 | 544 | { | ||
3417 | 545 | $repos_load_abs_path = length($repos_base_path_segment) ? | ||
3418 | 546 | $repos_base_path_segment : "/"; | ||
3419 | 547 | } | ||
3420 | 548 | else | ||
3421 | 549 | { | ||
3422 | 550 | $repos_load_abs_path = length($repos_base_path_segment) ? | ||
3423 | 551 | "$repos_base_path_segment/$repos_load_rel_path" : | ||
3424 | 552 | $repos_load_rel_path; | ||
3425 | 553 | } | ||
3426 | 554 | |||
3427 | 555 | # Now go through each source directory and copy each file from the | ||
3428 | 556 | # source directory to the target directory. For new target files, add | ||
3429 | 557 | # them to svn. For files that no longer exist, delete them. | ||
3430 | 558 | my $print_rename_message = 1; | ||
3431 | 559 | my @load_dirs = @ARGV; | ||
3432 | 560 | while (defined (my $load_dir = &get_next_load_dir)) | ||
3433 | 561 | { | ||
3434 | 562 | my $load_tag = $load_tags{$load_dir}; | ||
3435 | 563 | |||
3436 | 564 | if (defined $load_tag) | ||
3437 | 565 | { | ||
3438 | 566 | print "\nLoading $load_dir and will save in tag $load_tag.\n"; | ||
3439 | 567 | } | ||
3440 | 568 | else | ||
3441 | 569 | { | ||
3442 | 570 | print "\nLoading $load_dir.\n"; | ||
3443 | 571 | } | ||
3444 | 572 | |||
3445 | 573 | # The first hash is keyed by the old name in a rename and the | ||
3446 | 574 | # second by the new name. The last variable contains a list of | ||
3447 | 575 | # old and new filenames in a rename. | ||
3448 | 576 | my %rename_from_files; | ||
3449 | 577 | my %rename_to_files; | ||
3450 | 578 | my @renamed_filenames; | ||
3451 | 579 | |||
3452 | 580 | unless ($opt_no_user_input) | ||
3453 | 581 | { | ||
3454 | 582 | my $repeat_loop; | ||
3455 | 583 | do | ||
3456 | 584 | { | ||
3457 | 585 | $repeat_loop = 0; | ||
3458 | 586 | |||
3459 | 587 | my %add_files; | ||
3460 | 588 | my %del_files; | ||
3461 | 589 | |||
3462 | 590 | # Get the list of files and directories in the repository | ||
3463 | 591 | # working copy. This hash is called %del_files because | ||
3464 | 592 | # each file or directory will be deleted from the hash | ||
3465 | 593 | # using the list of files and directories in the source | ||
3466 | 594 | # directory, leaving the files and directories that need | ||
3467 | 595 | # to be deleted. | ||
3468 | 596 | %del_files = &recursive_ls_and_hash($wc_import_dir_cwd); | ||
3469 | 597 | |||
3470 | 598 | # This anonymous subroutine finds all the files and | ||
3471 | 599 | # directories in the directory to load. It notes the file | ||
3472 | 600 | # type and for each file found, it deletes it from | ||
3473 | 601 | # %del_files. | ||
3474 | 602 | my $wanted = sub | ||
3475 | 603 | { | ||
3476 | 604 | s#^\./##; | ||
3477 | 605 | return if $_ eq '.'; | ||
3478 | 606 | |||
3479 | 607 | my $source_path = $_; | ||
3480 | 608 | my $dest_path = "$wc_import_dir_cwd/$_"; | ||
3481 | 609 | |||
3482 | 610 | my ($source_type) = &file_info($source_path); | ||
3483 | 611 | my ($dest_type) = &file_info($dest_path); | ||
3484 | 612 | |||
3485 | 613 | # Fail if the destination type exists but is of a | ||
3486 | 614 | # different type of file than the source type. | ||
3487 | 615 | if ($dest_type ne '0' and $source_type ne $dest_type) | ||
3488 | 616 | { | ||
3489 | 617 | die "$0: does not handle changing source and destination ", | ||
3490 | 618 | "type for '$source_path'.\n"; | ||
3491 | 619 | } | ||
3492 | 620 | |||
3493 | 621 | if ($source_type ne 'd' and | ||
3494 | 622 | $source_type ne 'f' and | ||
3495 | 623 | $source_type ne 'l') | ||
3496 | 624 | { | ||
3497 | 625 | warn "$0: skipping loading file '$source_path' of type ", | ||
3498 | 626 | "'$source_type'.\n"; | ||
3499 | 627 | unless ($opt_no_user_input) | ||
3500 | 628 | { | ||
3501 | 629 | print STDERR "Press return to continue: "; | ||
3502 | 630 | <STDIN>; | ||
3503 | 631 | } | ||
3504 | 632 | return; | ||
3505 | 633 | } | ||
3506 | 634 | |||
3507 | 635 | unless (defined delete $del_files{$source_path}) | ||
3508 | 636 | { | ||
3509 | 637 | $add_files{$source_path}{type} = $source_type; | ||
3510 | 638 | } | ||
3511 | 639 | }; | ||
3512 | 640 | |||
3513 | 641 | # Now change into the directory containing the files to | ||
3514 | 642 | # load. First change to the original directory where this | ||
3515 | 643 | # script was run so that if the specified directory is a | ||
3516 | 644 | # relative directory path, then the script can change into | ||
3517 | 645 | # it. | ||
3518 | 646 | chdir($orig_cwd) | ||
3519 | 647 | or die "$0: cannot chdir '$orig_cwd': $!\n"; | ||
3520 | 648 | chdir($load_dir) | ||
3521 | 649 | or die "$0: cannot chdir '$load_dir': $!\n"; | ||
3522 | 650 | |||
3523 | 651 | find({no_chdir => 1, | ||
3524 | 652 | preprocess => sub { sort { $b cmp $a } | ||
3525 | 653 | grep { $_ !~ /^[._]svn$/ } @_ }, | ||
3526 | 654 | wanted => $wanted | ||
3527 | 655 | }, '.'); | ||
3528 | 656 | |||
3529 | 657 | # At this point %add_files contains the list of new files | ||
3530 | 658 | # and directories to be created in the working copy tree | ||
3531 | 659 | # and %del_files contains the files and directories that | ||
3532 | 660 | # need to be deleted. Because there may be renames that | ||
3533 | 661 | # have taken place, give the user the opportunity to | ||
3534 | 662 | # rename any deleted files and directories to ones being | ||
3535 | 663 | # added. | ||
3536 | 664 | my @add_files = sort keys %add_files; | ||
3537 | 665 | my @del_files = sort keys %del_files; | ||
3538 | 666 | |||
3539 | 667 | # Because the source code management system may keep the | ||
3540 | 668 | # original renamed file or directory in the working copy | ||
3541 | 669 | # until a commit, remove them from the list of deleted | ||
3542 | 670 | # files or directories. | ||
3543 | 671 | &filter_renamed_files(\@del_files, \%rename_from_files); | ||
3544 | 672 | |||
3545 | 673 | # Now change into the working copy directory in case any | ||
3546 | 674 | # renames need to be performed. | ||
3547 | 675 | chdir($wc_import_dir_cwd) | ||
3548 | 676 | or die "$0: cannot chdir '$wc_import_dir_cwd': $!\n"; | ||
3549 | 677 | |||
3550 | 678 | # Only do renames if there are both added and deleted | ||
3551 | 679 | # files and directories. | ||
3552 | 680 | if (@add_files and @del_files) | ||
3553 | 681 | { | ||
3554 | 682 | my $max = @add_files > @del_files ? @add_files : @del_files; | ||
3555 | 683 | |||
3556 | 684 | # Print the files that have been added and deleted. | ||
3557 | 685 | # Find the deleted file with the longest name and use | ||
3558 | 686 | # that for the width of the filename column. Add one | ||
3559 | 687 | # to the filename width to let the directory / | ||
3560 | 688 | # character be appended to a directory name. | ||
3561 | 689 | my $line_number_width = 4; | ||
3562 | 690 | my $filename_width = 0; | ||
3563 | 691 | foreach my $f (@del_files) | ||
3564 | 692 | { | ||
3565 | 693 | my $l = length($f); | ||
3566 | 694 | $filename_width = $l if $l > $filename_width; | ||
3567 | 695 | } | ||
3568 | 696 | ++$filename_width; | ||
3569 | 697 | my $printf_format = "%${line_number_width}d"; | ||
3570 | 698 | |||
3571 | 699 | if ($print_rename_message) | ||
3572 | 700 | { | ||
3573 | 701 | $print_rename_message = 0; | ||
3574 | 702 | print "\n", | ||
3575 | 703 | "The following table lists files and directories that\n", | ||
3576 | 704 | "exist in either the Subversion repository or the\n", | ||
3577 | 705 | "directory to be imported but not both. You now have\n", | ||
3578 | 706 | "the opportunity to match them up as renames instead\n", | ||
3579 | 707 | "of deletes and adds. This is a Good Thing as it'll\n", | ||
3580 | 708 | "make the repository take less space.\n\n", | ||
3581 | 709 | "The left column lists files and directories that\n", | ||
3582 | 710 | "exist in the Subversion repository and do not exist\n", | ||
3583 | 711 | "in the directory being imported. The right column\n", | ||
3584 | 712 | "lists files and directories that exist in the\n", | ||
3585 | 713 | "directory being imported. Match up a deleted item\n", | ||
3586 | 714 | "from the left column with an added item from the\n", | ||
3587 | 715 | "right column. Note the line numbers on the left\n", | ||
3588 | 716 | "which you type into this script to have a rename\n", | ||
3589 | 717 | "performed.\n"; | ||
3590 | 718 | } | ||
3591 | 719 | |||
3592 | 720 | # Sort the added and deleted files and directories by | ||
3593 | 721 | # the lowercase versions of their basenames instead of | ||
3594 | 722 | # their complete path, which makes finding files that | ||
3595 | 723 | # were moved into different directories easier to | ||
3596 | 724 | # match up. | ||
3597 | 725 | @add_files = map { $_->[0] } | ||
3598 | 726 | sort { $a->[1] cmp $b->[1] } | ||
3599 | 727 | map { [$_->[0], lc($_->[1])] } | ||
3600 | 728 | map { [$_, m#([^/]+)$#] } | ||
3601 | 729 | @add_files; | ||
3602 | 730 | @del_files = map { $_->[0] } | ||
3603 | 731 | sort { $a->[1] cmp $b->[1] } | ||
3604 | 732 | map { [$_->[0], lc($_->[1])] } | ||
3605 | 733 | map { [$_, m#([^/]+)$#] } | ||
3606 | 734 | @del_files; | ||
3607 | 735 | |||
3608 | 736 | RELIST: | ||
3609 | 737 | |||
3610 | 738 | for (my $i=0; $i<$max; ++$i) | ||
3611 | 739 | { | ||
3612 | 740 | my $add_filename = ''; | ||
3613 | 741 | my $del_filename = ''; | ||
3614 | 742 | if ($i < @add_files) | ||
3615 | 743 | { | ||
3616 | 744 | $add_filename = $add_files[$i]; | ||
3617 | 745 | if ($add_files{$add_filename}{type} eq 'd') | ||
3618 | 746 | { | ||
3619 | 747 | $add_filename .= '/'; | ||
3620 | 748 | } | ||
3621 | 749 | } | ||
3622 | 750 | if ($i < @del_files) | ||
3623 | 751 | { | ||
3624 | 752 | $del_filename = $del_files[$i]; | ||
3625 | 753 | if ($del_files{$del_filename}{type} eq 'd') | ||
3626 | 754 | { | ||
3627 | 755 | $del_filename .= '/'; | ||
3628 | 756 | } | ||
3629 | 757 | } | ||
3630 | 758 | |||
3631 | 759 | if ($i % 22 == 0) | ||
3632 | 760 | { | ||
3633 | 761 | |||
3634 | 762 | "\n", | ||
3635 | 763 | " " x $line_number_width, | ||
3636 | 764 | " ", | ||
3637 | 765 | "Deleted", " " x ($filename_width-length("Deleted")), | ||
3638 | 766 | " ", | ||
3639 | 767 | "Added\n"; | ||
3640 | 768 | } | ||
3641 | 769 | |||
3642 | 770 | printf $printf_format, $i; | ||
3643 | 771 | print " ", $del_filename, | ||
3644 | 772 | "_" x ($filename_width - length($del_filename)), | ||
3645 | 773 | " ", $add_filename, "\n"; | ||
3646 | 774 | |||
3647 | 775 | if (($i+1) % 22 == 0) | ||
3648 | 776 | { | ||
3649 | 777 | unless (&get_answer("Continue printing (Y/n)? ", | ||
3650 | 778 | 'ny', 1)) | ||
3651 | 779 | { | ||
3652 | 780 | last; | ||
3653 | 781 | } | ||
3654 | 782 | } | ||
3655 | 783 | } | ||
3656 | 784 | |||
3657 | 785 | # Get the feedback from the user. | ||
3658 | 786 | my $line; | ||
3659 | 787 | my $add_filename; | ||
3660 | 788 | my $add_index; | ||
3661 | 789 | my $del_filename; | ||
3662 | 790 | my $del_index; | ||
3663 | 791 | my $got_line = 0; | ||
3664 | 792 | do { | ||
3665 | 793 | print "Enter two indexes for each column to rename, ", | ||
3666 | 794 | "(R)elist, or (F)inish: "; | ||
3667 | 795 | $line = <STDIN>; | ||
3668 | 796 | $line = '' unless defined $line; | ||
3669 | 797 | if ($line =~ /^R$/i ) | ||
3670 | 798 | { | ||
3671 | 799 | goto RELIST; | ||
3672 | 800 | } | ||
3673 | 801 | |||
3674 | 802 | if ($line =~ /^F$/i) | ||
3675 | 803 | { | ||
3676 | 804 | $got_line = 1; | ||
3677 | 805 | } | ||
3678 | 806 | elsif ($line =~ /^(\d+)\s+(\d+)$/) | ||
3679 | 807 | { | ||
3680 | 808 | print "\n"; | ||
3681 | 809 | |||
3682 | 810 | $del_index = $1; | ||
3683 | 811 | $add_index = $2; | ||
3684 | 812 | if ($del_index >= @del_files) | ||
3685 | 813 | { | ||
3686 | 814 | print "Delete index $del_index is larger than ", | ||
3687 | 815 | "maximum index of ", scalar @del_files - 1, | ||
3688 | 816 | ".\n"; | ||
3689 | 817 | $del_index = undef; | ||
3690 | 818 | } | ||
3691 | 819 | if ($add_index > @add_files) | ||
3692 | 820 | { | ||
3693 | 821 | print "Add index $add_index is larger than maximum ", | ||
3694 | 822 | "index of ", scalar @add_files - 1, ".\n"; | ||
3695 | 823 | $add_index = undef; | ||
3696 | 824 | } | ||
3697 | 825 | $got_line = defined $del_index && defined $add_index; | ||
3698 | 826 | |||
3699 | 827 | # Check that the file or directory to be renamed | ||
3700 | 828 | # has the same file type. | ||
3701 | 829 | if ($got_line) | ||
3702 | 830 | { | ||
3703 | 831 | $add_filename = $add_files[$add_index]; | ||
3704 | 832 | $del_filename = $del_files[$del_index]; | ||
3705 | 833 | if ($add_files{$add_filename}{type} ne | ||
3706 | 834 | $del_files{$del_filename}{type}) | ||
3707 | 835 | { | ||
3708 | 836 | print "File types for $del_filename and ", | ||
3709 | 837 | "$add_filename differ.\n"; | ||
3710 | 838 | $got_line = undef; | ||
3711 | 839 | } | ||
3712 | 840 | } | ||
3713 | 841 | } | ||
3714 | 842 | } until ($got_line); | ||
3715 | 843 | |||
3716 | 844 | if ($line !~ /^F$/i) | ||
3717 | 845 | { | ||
3718 | 846 | print "Renaming $del_filename to $add_filename.\n"; | ||
3719 | 847 | |||
3720 | 848 | $repeat_loop = 1; | ||
3721 | 849 | |||
3722 | 850 | # Because subversion cannot rename the same file | ||
3723 | 851 | # or directory twice, which includes doing a | ||
3724 | 852 | # rename of a file in a directory that was | ||
3725 | 853 | # previously renamed, a commit has to be | ||
3726 | 854 | # performed. Check if the file or directory being | ||
3727 | 855 | # renamed now would cause such a problem and | ||
3728 | 856 | # commit if so. | ||
3729 | 857 | my $do_commit_now = 0; | ||
3730 | 858 | foreach my $rename_to_filename (keys %rename_to_files) | ||
3731 | 859 | { | ||
3732 | 860 | if (contained_in($del_filename, | ||
3733 | 861 | $rename_to_filename, | ||
3734 | 862 | $rename_to_files{$rename_to_filename}{type})) | ||
3735 | 863 | { | ||
3736 | 864 | $do_commit_now = 1; | ||
3737 | 865 | last; | ||
3738 | 866 | } | ||
3739 | 867 | } | ||
3740 | 868 | |||
3741 | 869 | if ($do_commit_now) | ||
3742 | 870 | { | ||
3743 | 871 | print "Now committing previously run renames.\n"; | ||
3744 | 872 | &commit_renames($load_dir, | ||
3745 | 873 | \@renamed_filenames, | ||
3746 | 874 | \%rename_from_files, | ||
3747 | 875 | \%rename_to_files); | ||
3748 | 876 | } | ||
3749 | 877 | |||
3750 | 878 | push(@renamed_filenames, $del_filename, $add_filename); | ||
3751 | 879 | { | ||
3752 | 880 | my $d = $del_files{$del_filename}; | ||
3753 | 881 | $rename_from_files{$del_filename} = $d; | ||
3754 | 882 | $rename_to_files{$add_filename} = $d; | ||
3755 | 883 | } | ||
3756 | 884 | |||
3757 | 885 | # Check that any required directories to do the | ||
3758 | 886 | # rename exist. | ||
3759 | 887 | my @add_segments = split('/', $add_filename); | ||
3760 | 888 | pop(@add_segments); | ||
3761 | 889 | my $add_dir = ''; | ||
3762 | 890 | my @add_dirs; | ||
3763 | 891 | foreach my $segment (@add_segments) | ||
3764 | 892 | { | ||
3765 | 893 | $add_dir = length($add_dir) ? "$add_dir/$segment" : | ||
3766 | 894 | $segment; | ||
3767 | 895 | unless (-d $add_dir) | ||
3768 | 896 | { | ||
3769 | 897 | push(@add_dirs, $add_dir); | ||
3770 | 898 | } | ||
3771 | 899 | } | ||
3772 | 900 | |||
3773 | 901 | if (@add_dirs) | ||
3774 | 902 | { | ||
3775 | 903 | read_from_process($svn, 'mkdir', @add_dirs); | ||
3776 | 904 | } | ||
3777 | 905 | |||
3778 | 906 | read_from_process($svn, 'mv', | ||
3779 | 907 | $del_filename, $add_filename); | ||
3780 | 908 | } | ||
3781 | 909 | } | ||
3782 | 910 | } while ($repeat_loop); | ||
3783 | 911 | } | ||
3784 | 912 | |||
3785 | 913 | # If there are any renames that have not been committed, then do | ||
3786 | 914 | # that now. | ||
3787 | 915 | if (@renamed_filenames) | ||
3788 | 916 | { | ||
3789 | 917 | &commit_renames($load_dir, | ||
3790 | 918 | \@renamed_filenames, | ||
3791 | 919 | \%rename_from_files, | ||
3792 | 920 | \%rename_to_files); | ||
3793 | 921 | } | ||
3794 | 922 | |||
3795 | 923 | # At this point all renames have been performed. Now get the | ||
3796 | 924 | # final list of files and directories in the working copy | ||
3797 | 925 | # directory. The %add_files hash will contain the list of files | ||
3798 | 926 | # and directories to add to the working copy and %del_files starts | ||
3799 | 927 | # with all the files already in the working copy and gets files | ||
3800 | 928 | # removed that are in the imported directory, which results in a | ||
3801 | 929 | # list of files that should be deleted. %upd_files holds the list | ||
3802 | 930 | # of files that have been updated. | ||
3803 | 931 | my %add_files; | ||
3804 | 932 | my %del_files = &recursive_ls_and_hash($wc_import_dir_cwd); | ||
3805 | 933 | my %upd_files; | ||
3806 | 934 | |||
3807 | 935 | # This anonymous subroutine copies files from the source directory | ||
3808 | 936 | # to the working copy directory. | ||
3809 | 937 | my $wanted = sub | ||
3810 | 938 | { | ||
3811 | 939 | s#^\./##; | ||
3812 | 940 | return if $_ eq '.'; | ||
3813 | 941 | |||
3814 | 942 | my $source_path = $_; | ||
3815 | 943 | my $dest_path = "$wc_import_dir_cwd/$_"; | ||
3816 | 944 | |||
3817 | 945 | my ($source_type, $source_is_exe) = &file_info($source_path); | ||
3818 | 946 | my ($dest_type) = &file_info($dest_path); | ||
3819 | 947 | |||
3820 | 948 | return if ($source_type ne 'd' and | ||
3821 | 949 | $source_type ne 'f' and | ||
3822 | 950 | $source_type ne 'l'); | ||
3823 | 951 | |||
3824 | 952 | # Fail if the destination type exists but is of a different | ||
3825 | 953 | # type of file than the source type. | ||
3826 | 954 | if ($dest_type ne '0' and $source_type ne $dest_type) | ||
3827 | 955 | { | ||
3828 | 956 | die "$0: does not handle changing source and destination type ", | ||
3829 | 957 | "for '$source_path'.\n"; | ||
3830 | 958 | } | ||
3831 | 959 | |||
3832 | 960 | # Determine if the file is being added or is an update to an | ||
3833 | 961 | # already existing file using the file's digest. | ||
3834 | 962 | my $del_info = delete $del_files{$source_path}; | ||
3835 | 963 | if (defined $del_info) | ||
3836 | 964 | { | ||
3837 | 965 | if (defined (my $del_digest = $del_info->{digest})) | ||
3838 | 966 | { | ||
3839 | 967 | my $new_digest = &digest_hash_file($source_path); | ||
3840 | 968 | if ($new_digest ne $del_digest) | ||
3841 | 969 | { | ||
3842 | 970 | print "U $source_path\n"; | ||
3843 | 971 | $upd_files{$source_path} = $del_info; | ||
3844 | 972 | } | ||
3845 | 973 | } | ||
3846 | 974 | } | ||
3847 | 975 | else | ||
3848 | 976 | { | ||
3849 | 977 | print "A $source_path\n"; | ||
3850 | 978 | $add_files{$source_path}{type} = $source_type; | ||
3851 | 979 | |||
3852 | 980 | # Create an array reference to hold the list of properties | ||
3853 | 981 | # to apply to this object. | ||
3854 | 982 | unless (defined $add_files{$source_path}{properties}) | ||
3855 | 983 | { | ||
3856 | 984 | $add_files{$source_path}{properties} = []; | ||
3857 | 985 | } | ||
3858 | 986 | |||
3859 | 987 | # Go through the list of properties for a match on this | ||
3860 | 988 | # file or directory and if there is a match, then apply | ||
3861 | 989 | # the property to it. | ||
3862 | 990 | foreach my $property (@property_settings) | ||
3863 | 991 | { | ||
3864 | 992 | my $re = $property->{re}; | ||
3865 | 993 | if ($source_path =~ $re) | ||
3866 | 994 | { | ||
3867 | 995 | my $property_name = $property->{name}; | ||
3868 | 996 | my $property_value = $property->{value}; | ||
3869 | 997 | |||
3870 | 998 | # The property value may not be set in the | ||
3871 | 999 | # configuration file, since the user may just want | ||
3872 | 1000 | # to set the control flag. | ||
3873 | 1001 | if (defined $property_name and defined $property_value) | ||
3874 | 1002 | { | ||
3875 | 1003 | # Ignore properties that do not apply to | ||
3876 | 1004 | # directories. | ||
3877 | 1005 | if ($source_type eq 'd') | ||
3878 | 1006 | { | ||
3879 | 1007 | if ($property_name eq 'svn:eol-style' or | ||
3880 | 1008 | $property_name eq 'svn:executable' or | ||
3881 | 1009 | $property_name eq 'svn:keywords' or | ||
3882 | 1010 | $property_name eq 'svn:mime-type') | ||
3883 | 1011 | { | ||
3884 | 1012 | next; | ||
3885 | 1013 | } | ||
3886 | 1014 | } | ||
3887 | 1015 | |||
3888 | 1016 | # Ignore properties that do not apply to | ||
3889 | 1017 | # files. | ||
3890 | 1018 | if ($source_type eq 'f') | ||
3891 | 1019 | { | ||
3892 | 1020 | if ($property_name eq 'svn:externals' or | ||
3893 | 1021 | $property_name eq 'svn:ignore') | ||
3894 | 1022 | { | ||
3895 | 1023 | next; | ||
3896 | 1024 | } | ||
3897 | 1025 | } | ||
3898 | 1026 | |||
3899 | 1027 | print "Adding to '$source_path' property ", | ||
3900 | 1028 | "'$property_name' with value ", | ||
3901 | 1029 | "'$property_value'.\n"; | ||
3902 | 1030 | |||
3903 | 1031 | push(@{$add_files{$source_path}{properties}}, | ||
3904 | 1032 | $property); | ||
3905 | 1033 | } | ||
3906 | 1034 | |||
3907 | 1035 | last if $property->{control} eq 'break'; | ||
3908 | 1036 | } | ||
3909 | 1037 | } | ||
3910 | 1038 | } | ||
3911 | 1039 | |||
3912 | 1040 | # Add svn:executable to files that have their executable bit | ||
3913 | 1041 | # set. | ||
3914 | 1042 | if ($source_is_exe and !$opt_no_auto_exe) | ||
3915 | 1043 | { | ||
3916 | 1044 | print "Adding to '$source_path' property 'svn:executable' with ", | ||
3917 | 1045 | "value '*'.\n"; | ||
3918 | 1046 | my $property = {name => 'svn:executable', value => '*'}; | ||
3919 | 1047 | push (@{$add_files{$source_path}{properties}}, | ||
3920 | 1048 | $property); | ||
3921 | 1049 | } | ||
3922 | 1050 | |||
3923 | 1051 | # Now make sure the file or directory in the source directory | ||
3924 | 1052 | # exists in the repository. | ||
3925 | 1053 | if ($source_type eq 'd') | ||
3926 | 1054 | { | ||
3927 | 1055 | if ($dest_type eq '0') | ||
3928 | 1056 | { | ||
3929 | 1057 | mkdir($dest_path) | ||
3930 | 1058 | or die "$0: cannot mkdir '$dest_path': $!\n"; | ||
3931 | 1059 | } | ||
3932 | 1060 | } | ||
3933 | 1061 | elsif | ||
3934 | 1062 | ($source_type eq 'l') { | ||
3935 | 1063 | my $link_target = readlink($source_path) | ||
3936 | 1064 | or die "$0: cannot readlink '$source_path': $!\n"; | ||
3937 | 1065 | if ($dest_type eq 'l') | ||
3938 | 1066 | { | ||
3939 | 1067 | my $old_target = readlink($dest_path) | ||
3940 | 1068 | or die "$0: cannot readlink '$dest_path': $!\n"; | ||
3941 | 1069 | return if ($old_target eq $link_target); | ||
3942 | 1070 | unlink($dest_path) | ||
3943 | 1071 | or die "$0: unlink '$dest_path' failed: $!\n"; | ||
3944 | 1072 | } | ||
3945 | 1073 | symlink($link_target, $dest_path) | ||
3946 | 1074 | or die "$0: cannot symlink '$dest_path' to '$link_target': $!\n"; | ||
3947 | 1075 | } | ||
3948 | 1076 | elsif | ||
3949 | 1077 | ($source_type eq 'f') { | ||
3950 | 1078 | # Only copy the file if the digests do not match. | ||
3951 | 1079 | if ($add_files{$source_path} or $upd_files{$source_path}) | ||
3952 | 1080 | { | ||
3953 | 1081 | copy($source_path, $dest_path) | ||
3954 | 1082 | or die "$0: copy '$source_path' to '$dest_path': $!\n"; | ||
3955 | 1083 | } | ||
3956 | 1084 | } | ||
3957 | 1085 | else | ||
3958 | 1086 | { | ||
3959 | 1087 | die "$0: does not handle copying files of type '$source_type'.\n"; | ||
3960 | 1088 | } | ||
3961 | 1089 | }; | ||
3962 | 1090 | |||
3963 | 1091 | # Now change into the directory containing the files to load. | ||
3964 | 1092 | # First change to the original directory where this script was run | ||
3965 | 1093 | # so that if the specified directory is a relative directory path, | ||
3966 | 1094 | # then the script can change into it. | ||
3967 | 1095 | chdir($orig_cwd) | ||
3968 | 1096 | or die "$0: cannot chdir '$orig_cwd': $!\n"; | ||
3969 | 1097 | chdir($load_dir) | ||
3970 | 1098 | or die "$0: cannot chdir '$load_dir': $!\n"; | ||
3971 | 1099 | |||
3972 | 1100 | find({no_chdir => 1, | ||
3973 | 1101 | preprocess => sub { sort { $b cmp $a } | ||
3974 | 1102 | grep { $_ !~ /^[._]svn$/ } @_ }, | ||
3975 | 1103 | wanted => $wanted | ||
3976 | 1104 | }, '.'); | ||
3977 | 1105 | |||
3978 | 1106 | # The files and directories that are in %del_files are the files | ||
3979 | 1107 | # and directories that need to be deleted. Because svn will | ||
3980 | 1108 | # return an error if a file or directory is deleted in a directory | ||
3981 | 1109 | # that subsequently is deleted, first find all directories and | ||
3982 | 1110 | # remove from the list any files and directories inside those | ||
3983 | 1111 | # directories from this list. Work through the list repeatedly | ||
3984 | 1112 | # working from short to long names so that directories containing | ||
3985 | 1113 | # other files and directories will be deleted first. | ||
3986 | 1114 | my $repeat_loop; | ||
3987 | 1115 | do | ||
3988 | 1116 | { | ||
3989 | 1117 | $repeat_loop = 0; | ||
3990 | 1118 | my @del_files = sort {length($a) <=> length($b) || $a cmp $b} | ||
3991 | 1119 | keys %del_files; | ||
3992 | 1120 | &filter_renamed_files(\@del_files, \%rename_from_files); | ||
3993 | 1121 | foreach my $file (@del_files) | ||
3994 | 1122 | { | ||
3995 | 1123 | if ($del_files{$file}{type} eq 'd') | ||
3996 | 1124 | { | ||
3997 | 1125 | my $dir = "$file/"; | ||
3998 | 1126 | my $dir_length = length($dir); | ||
3999 | 1127 | foreach my $f (@del_files) | ||
4000 | 1128 | { | ||
4001 | 1129 | next if $file eq $f; | ||
4002 | 1130 | if (length($f) >= $dir_length and | ||
4003 | 1131 | substr($f, 0, $dir_length) eq $dir) | ||
4004 | 1132 | { | ||
4005 | 1133 | print "d $f\n"; | ||
4006 | 1134 | delete $del_files{$f}; | ||
4007 | 1135 | $repeat_loop = 1; | ||
4008 | 1136 | } | ||
4009 | 1137 | } | ||
4010 | 1138 | |||
4011 | 1139 | # If there were any deletions of files and/or | ||
4012 | 1140 | # directories inside a directory that will be deleted, | ||
4013 | 1141 | # then restart the entire loop again, because one or | ||
4014 | 1142 | # more keys have been deleted from %del_files. | ||
4015 | 1143 | # Equally important is not to stop this loop if no | ||
4016 | 1144 | # deletions have been done, otherwise later | ||
4017 | 1145 | # directories that may contain files and directories | ||
4018 | 1146 | # to be deleted will not be deleted. | ||
4019 | 1147 | last if $repeat_loop; | ||
4020 | 1148 | } | ||
4021 | 1149 | } | ||
4022 | 1150 | } while ($repeat_loop); | ||
4023 | 1151 | |||
4024 | 1152 | # What is left are files that are not in any directories to be | ||
4025 | 1153 | # deleted and directories to be deleted. To delete the files, | ||
4026 | 1154 | # deeper files and directories must be deleted first. Because we | ||
4027 | 1155 | # have a hash keyed by remaining files and directories to be | ||
4028 | 1156 | # deleted, instead of trying to figure out which directories and | ||
4029 | 1157 | # files are contained in other directories, just reverse sort by | ||
4030 | 1158 | # the path length and then alphabetically. | ||
4031 | 1159 | my @del_files = sort {length($b) <=> length($a) || $a cmp $b } | ||
4032 | 1160 | keys %del_files; | ||
4033 | 1161 | &filter_renamed_files(\@del_files, \%rename_from_files); | ||
4034 | 1162 | foreach my $file (@del_files) | ||
4035 | 1163 | { | ||
4036 | 1164 | print "D $file\n"; | ||
4037 | 1165 | } | ||
4038 | 1166 | |||
4039 | 1167 | # Now change back to the trunk directory and run the svn commands. | ||
4040 | 1168 | chdir($wc_import_dir_cwd) | ||
4041 | 1169 | or die "$0: cannot chdir '$wc_import_dir_cwd': $!\n"; | ||
4042 | 1170 | |||
4043 | 1171 | # If any of the added files have the svn:eol-style property set, | ||
4044 | 1172 | # then pass -b to diff, otherwise diff may fail because the end of | ||
4045 | 1173 | # lines have changed and the source file and file in the | ||
4046 | 1174 | # repository will not be identical. | ||
4047 | 1175 | my @diff_ignore_space_changes; | ||
4048 | 1176 | |||
4049 | 1177 | if (keys %add_files) | ||
4050 | 1178 | { | ||
4051 | 1179 | my @add_files = sort {length($a) <=> length($b) || $a cmp $b} | ||
4052 | 1180 | keys %add_files; | ||
4053 | 1181 | my $target_filename = &make_targets_file(@add_files); | ||
4054 | 1182 | read_from_process($svn, 'add', '-N', '--targets', $target_filename); | ||
4055 | 1183 | unlink($target_filename); | ||
4056 | 1184 | |||
4057 | 1185 | # Add properties on the added files. | ||
4058 | 1186 | foreach my $add_file (@add_files) | ||
4059 | 1187 | { | ||
4060 | 1188 | foreach my $property (@{$add_files{$add_file}{properties}}) | ||
4061 | 1189 | { | ||
4062 | 1190 | my $property_name = $property->{name}; | ||
4063 | 1191 | my $property_value = $property->{value}; | ||
4064 | 1192 | |||
4065 | 1193 | if ($property_name eq 'svn:eol-style') | ||
4066 | 1194 | { | ||
4067 | 1195 | @diff_ignore_space_changes = ('-b'); | ||
4068 | 1196 | } | ||
4069 | 1197 | |||
4070 | 1198 | # Write the value to a temporary file in case it's multi-line | ||
4071 | 1199 | my ($handle, $tmpfile) = tempfile(DIR => $temp_dir); | ||
4072 | 1200 | print $handle $property_value; | ||
4073 | 1201 | close($handle); | ||
4074 | 1202 | |||
4075 | 1203 | read_from_process($svn, | ||
4076 | 1204 | 'propset', | ||
4077 | 1205 | $property_name, | ||
4078 | 1206 | '--file', | ||
4079 | 1207 | $tmpfile, | ||
4080 | 1208 | $add_file); | ||
4081 | 1209 | } | ||
4082 | 1210 | } | ||
4083 | 1211 | } | ||
4084 | 1212 | if (@del_files) | ||
4085 | 1213 | { | ||
4086 | 1214 | my $target_filename = &make_targets_file(@del_files); | ||
4087 | 1215 | read_from_process($svn, 'rm', '--targets', $target_filename); | ||
4088 | 1216 | unlink($target_filename); | ||
4089 | 1217 | } | ||
4090 | 1218 | |||
4091 | 1219 | # Go through the list of updated files and check the svn:eol-style | ||
4092 | 1220 | # property. If it is set to native, then convert all CR, CRLF and | ||
4093 | 1221 | # LF's in the file to the native end of line characters. Also, | ||
4094 | 1222 | # modify diff's command line so that it will ignore the change in | ||
4095 | 1223 | # end of line style. | ||
4096 | 1224 | if (keys %upd_files) | ||
4097 | 1225 | { | ||
4098 | 1226 | my @upd_files = sort {length($a) <=> length($b) || $a cmp $b} | ||
4099 | 1227 | keys %upd_files; | ||
4100 | 1228 | foreach my $upd_file (@upd_files) | ||
4101 | 1229 | { | ||
4102 | 1230 | # Always append @BASE to a filename in case they contain a | ||
4103 | 1231 | # @ character, in which case the Subversion command line | ||
4104 | 1232 | # client will attempt to parse the characters after the @ | ||
4105 | 1233 | # as a revision and most likely fail, or if the characters | ||
4106 | 1234 | # after the @ are a valid revision, then it'll possibly | ||
4107 | 1235 | # get the incorrect information. So always append @BASE | ||
4108 | 1236 | # and any preceding @'s will be treated normally and the | ||
4109 | 1237 | # correct information will be retrieved. | ||
4110 | 1238 | my @command = ($svn, | ||
4111 | 1239 | 'propget', | ||
4112 | 1240 | 'svn:eol-style', | ||
4113 | 1241 | "$upd_file\@BASE"); | ||
4114 | 1242 | my @lines = read_from_process(@command); | ||
4115 | 1243 | next unless @lines; | ||
4116 | 1244 | if (@lines > 1) | ||
4117 | 1245 | { | ||
4118 | 1246 | warn "$0: '@command' returned more than one line of output: ", | ||
4119 | 1247 | "'@lines'.\n"; | ||
4120 | 1248 | next; | ||
4121 | 1249 | } | ||
4122 | 1250 | |||
4123 | 1251 | my $eol_style = $lines[0]; | ||
4124 | 1252 | if ($eol_style eq 'native') | ||
4125 | 1253 | { | ||
4126 | 1254 | @diff_ignore_space_changes = ('-b'); | ||
4127 | 1255 | if (&convert_file_to_native_eol($upd_file)) | ||
4128 | 1256 | { | ||
4129 | 1257 | print "Native eol-style conversion modified $upd_file.\n"; | ||
4130 | 1258 | } | ||
4131 | 1259 | } | ||
4132 | 1260 | } | ||
4133 | 1261 | } | ||
4134 | 1262 | |||
4135 | 1263 | my $message = wrap('', '', "Load $load_dir into $repos_load_abs_path.\n"); | ||
4136 | 1264 | read_from_process($svn, 'commit', | ||
4137 | 1265 | @svn_use_repos_cmd_opts, | ||
4138 | 1266 | '-m', $message); | ||
4139 | 1267 | |||
4140 | 1268 | # If an update is not run now after a commit, then some file and | ||
4141 | 1269 | # directory paths will have an older revisions associated with | ||
4142 | 1270 | # them and any future commits will fail because they are out of | ||
4143 | 1271 | # date. | ||
4144 | 1272 | read_from_process($svn, 'update', @svn_use_repos_cmd_opts); | ||
4145 | 1273 | |||
4146 | 1274 | # Now remove any files and directories to be deleted in the | ||
4147 | 1275 | # repository. | ||
4148 | 1276 | if (@del_files) | ||
4149 | 1277 | { | ||
4150 | 1278 | rmtree(\@del_files, 1, 0); | ||
4151 | 1279 | } | ||
4152 | 1280 | |||
4153 | 1281 | # Now make the tag by doing a copy in the svn repository itself. | ||
4154 | 1282 | if (defined $load_tag) | ||
4155 | 1283 | { | ||
4156 | 1284 | my $repos_tag_abs_path = length($repos_base_path_segment) ? | ||
4157 | 1285 | "$repos_base_path_segment/$load_tag" : | ||
4158 | 1286 | $load_tag; | ||
4159 | 1287 | |||
4160 | 1288 | my $from_url = $repos_load_rel_path eq '.' ? | ||
4161 | 1289 | $repos_load_rel_path : | ||
4162 | 1290 | "$repos_base_url/$repos_load_rel_path"; | ||
4163 | 1291 | my $to_url = "$repos_base_url/$load_tag"; | ||
4164 | 1292 | |||
4165 | 1293 | $message = wrap("", | ||
4166 | 1294 | "", | ||
4167 | 1295 | "Tag $repos_load_abs_path as " . | ||
4168 | 1296 | "$repos_tag_abs_path.\n"); | ||
4169 | 1297 | read_from_process($svn, 'cp', @svn_use_repos_cmd_opts, | ||
4170 | 1298 | '-m', $message, $from_url, $to_url); | ||
4171 | 1299 | |||
4172 | 1300 | # Now check out the tag and run a recursive diff between the | ||
4173 | 1301 | # original source directory and the tag for a consistency | ||
4174 | 1302 | # check. | ||
4175 | 1303 | my $checkout_dir_name = "my_tag_wc_named_$load_tag"; | ||
4176 | 1304 | print "Checking out $to_url into $temp_dir/$checkout_dir_name\n"; | ||
4177 | 1305 | |||
4178 | 1306 | chdir($temp_dir) | ||
4179 | 1307 | or die "$0: cannot chdir '$temp_dir': $!\n"; | ||
4180 | 1308 | |||
4181 | 1309 | read_from_process($svn, 'checkout', | ||
4182 | 1310 | @svn_use_repos_cmd_opts, | ||
4183 | 1311 | $to_url, $checkout_dir_name); | ||
4184 | 1312 | |||
4185 | 1313 | chdir($checkout_dir_name) | ||
4186 | 1314 | or die "$0: cannot chdir '$checkout_dir_name': $!\n"; | ||
4187 | 1315 | |||
4188 | 1316 | chdir($orig_cwd) | ||
4189 | 1317 | or die "$0: cannot chdir '$orig_cwd': $!\n"; | ||
4190 | 1318 | read_from_process('diff', '-u', @diff_ignore_space_changes, | ||
4191 | 1319 | '-x', '.svn', | ||
4192 | 1320 | '-r', $load_dir, "$temp_dir/$checkout_dir_name"); | ||
4193 | 1321 | } | ||
4194 | 1322 | } | ||
4195 | 1323 | |||
4196 | 1324 | exit 0; | ||
4197 | 1325 | |||
4198 | 1326 | sub usage | ||
4199 | 1327 | { | ||
4200 | 1328 | warn "@_\n" if @_; | ||
4201 | 1329 | die "usage: $0 [options] svn_url svn_import_dir [dir_v1 [dir_v2 [..]]]\n", | ||
4202 | 1330 | " svn_url is the file:// or http:// URL of the svn repository\n", | ||
4203 | 1331 | " svn_import_dir is the path relative to svn_url where to load dirs\n", | ||
4204 | 1332 | " dir_v1 .. list dirs to import otherwise read from stdin\n", | ||
4205 | 1333 | "options are\n", | ||
4206 | 1334 | " -no_user_input don't ask yes/no questions and assume yes answer\n", | ||
4207 | 1335 | " -no_auto_exe don't set svn:executable for executable files\n", | ||
4208 | 1336 | " -p filename table listing properties to apply to matching files\n", | ||
4209 | 1337 | " -svn_username username to perform commits as\n", | ||
4210 | 1338 | " -svn_password password to supply to svn commit\n", | ||
4211 | 1339 | " -t tag_dir create a tag copy in tag_dir, relative to svn_url\n", | ||
4212 | 1340 | " -v increase program verbosity, multiple -v's allowed\n", | ||
4213 | 1341 | " -wc path use the already checked-out working copy at path\n", | ||
4214 | 1342 | " instead of checkout out a fresh working copy\n", | ||
4215 | 1343 | " -glob_ignores List of filename patterns to ignore (as in svn's\n", | ||
4216 | 1344 | " global-ignores config option)\n"; | ||
4217 | 1345 | } | ||
4218 | 1346 | |||
4219 | 1347 | # Get the next directory to load, either from the command line or from | ||
4220 | 1348 | # standard input. | ||
4221 | 1349 | my $get_next_load_dir_init = 0; | ||
4222 | 1350 | my @get_next_load_dirs; | ||
4223 | 1351 | sub get_next_load_dir | ||
4224 | 1352 | { | ||
4225 | 1353 | if (@ARGV) | ||
4226 | 1354 | { | ||
4227 | 1355 | unless ($get_next_load_dir_init) | ||
4228 | 1356 | { | ||
4229 | 1357 | $get_next_load_dir_init = 1; | ||
4230 | 1358 | @get_next_load_dirs = @ARGV; | ||
4231 | 1359 | } | ||
4232 | 1360 | return shift @get_next_load_dirs; | ||
4233 | 1361 | } | ||
4234 | 1362 | |||
4235 | 1363 | if ($opt_verbose) | ||
4236 | 1364 | { | ||
4237 | 1365 | print "Waiting for next directory to import on standard input:\n"; | ||
4238 | 1366 | } | ||
4239 | 1367 | my $line = <STDIN>; | ||
4240 | 1368 | |||
4241 | 1369 | print "\n" if $opt_verbose; | ||
4242 | 1370 | |||
4243 | 1371 | chomp $line; | ||
4244 | 1372 | if ($line =~ m|(\S+)\s+(\S+)|) | ||
4245 | 1373 | { | ||
4246 | 1374 | $line = $1; | ||
4247 | 1375 | set_svn_use_repos_cmd_opts($2, $opt_svn_password); | ||
4248 | 1376 | } | ||
4249 | 1377 | $line; | ||
4250 | 1378 | } | ||
4251 | 1379 | |||
4252 | 1380 | # This constant stores the commonly used string to indicate that a | ||
4253 | 1381 | # subroutine has been passed an incorrect number of arguments. | ||
4254 | 1382 | use vars qw($INCORRECT_NUMBER_OF_ARGS); | ||
4255 | 1383 | $INCORRECT_NUMBER_OF_ARGS = "passed incorrect number of arguments.\n"; | ||
4256 | 1384 | |||
4257 | 1385 | # Creates a temporary file in the temporary directory and stores the | ||
4258 | 1386 | # arguments in it for use by the svn --targets command line option. | ||
4259 | 1387 | # If any part of the file creation failed, exit the program, as | ||
4260 | 1388 | # there's no workaround. Use a unique number as a counter to the | ||
4261 | 1389 | # files. | ||
4262 | 1390 | my $make_targets_file_counter; | ||
4263 | 1391 | sub make_targets_file | ||
4264 | 1392 | { | ||
4265 | 1393 | unless (@_) | ||
4266 | 1394 | { | ||
4267 | 1395 | confess "$0: make_targets_file $INCORRECT_NUMBER_OF_ARGS"; | ||
4268 | 1396 | } | ||
4269 | 1397 | |||
4270 | 1398 | $make_targets_file_counter = 1 unless defined $make_targets_file_counter; | ||
4271 | 1399 | |||
4272 | 1400 | my $filename = sprintf "%s/targets.%05d", | ||
4273 | 1401 | $temp_dir, | ||
4274 | 1402 | $make_targets_file_counter; | ||
4275 | 1403 | ++$make_targets_file_counter; | ||
4276 | 1404 | |||
4277 | 1405 | open(TARGETS, ">$filename") | ||
4278 | 1406 | or die "$0: cannot open '$filename' for writing: $!\n"; | ||
4279 | 1407 | |||
4280 | 1408 | foreach my $file (@_) | ||
4281 | 1409 | { | ||
4282 | 1410 | print TARGETS "$file\n"; | ||
4283 | 1411 | } | ||
4284 | 1412 | |||
4285 | 1413 | close(TARGETS) | ||
4286 | 1414 | or die "$0: error in closing '$filename' for writing: $!\n"; | ||
4287 | 1415 | |||
4288 | 1416 | $filename; | ||
4289 | 1417 | } | ||
4290 | 1418 | |||
4291 | 1419 | # Set the svn command line options that are used anytime svn connects | ||
4292 | 1420 | # to the repository. | ||
4293 | 1421 | sub set_svn_use_repos_cmd_opts | ||
4294 | 1422 | { | ||
4295 | 1423 | unless (@_ == 2) | ||
4296 | 1424 | { | ||
4297 | 1425 | confess "$0: set_svn_use_repos_cmd_opts $INCORRECT_NUMBER_OF_ARGS"; | ||
4298 | 1426 | } | ||
4299 | 1427 | |||
4300 | 1428 | my $username = shift; | ||
4301 | 1429 | my $password = shift; | ||
4302 | 1430 | |||
4303 | 1431 | @svn_use_repos_cmd_opts = ('--non-interactive'); | ||
4304 | 1432 | if (defined $username and length $username) | ||
4305 | 1433 | { | ||
4306 | 1434 | push(@svn_use_repos_cmd_opts, '--username', $username); | ||
4307 | 1435 | } | ||
4308 | 1436 | if (defined $password) | ||
4309 | 1437 | { | ||
4310 | 1438 | push(@svn_use_repos_cmd_opts, '--password', $password); | ||
4311 | 1439 | } | ||
4312 | 1440 | } | ||
4313 | 1441 | |||
4314 | 1442 | sub get_tag_dir | ||
4315 | 1443 | { | ||
4316 | 1444 | unless (@_ == 1) | ||
4317 | 1445 | { | ||
4318 | 1446 | confess "$0: get_tag_dir $INCORRECT_NUMBER_OF_ARGS"; | ||
4319 | 1447 | } | ||
4320 | 1448 | |||
4321 | 1449 | my $load_dir = shift; | ||
4322 | 1450 | |||
4323 | 1451 | # Take the tag relative directory, search for pairs of | ||
4324 | 1452 | # REGEX_SEP_CHAR's and use the regular expression inside the pair to | ||
4325 | 1453 | # put in the tag directory name. | ||
4326 | 1454 | my $tag_location = $opt_import_tag_location; | ||
4327 | 1455 | my $load_tag = ''; | ||
4328 | 1456 | while ((my $i = index($tag_location, $REGEX_SEP_CHAR)) >= 0) | ||
4329 | 1457 | { | ||
4330 | 1458 | $load_tag .= substr($tag_location, 0, $i, ''); | ||
4331 | 1459 | substr($tag_location, 0, 1, ''); | ||
4332 | 1460 | my $j = index($tag_location, $REGEX_SEP_CHAR); | ||
4333 | 1461 | if ($j < 0) | ||
4334 | 1462 | { | ||
4335 | 1463 | die "$0: -t value '$opt_import_tag_location' does not have ", | ||
4336 | 1464 | "matching $REGEX_SEP_CHAR.\n"; | ||
4337 | 1465 | } | ||
4338 | 1466 | my $regex = substr($tag_location, 0, $j, ''); | ||
4339 | 1467 | $regex = "($regex)" unless ($regex =~ /\(.+\)/); | ||
4340 | 1468 | substr($tag_location, 0, 1, ''); | ||
4341 | 1469 | my @results = $load_dir =~ m/$regex/; | ||
4342 | 1470 | $load_tag .= join('', @results); | ||
4343 | 1471 | } | ||
4344 | 1472 | $load_tag .= $tag_location; | ||
4345 | 1473 | |||
4346 | 1474 | $load_tag; | ||
4347 | 1475 | } | ||
4348 | 1476 | |||
4349 | 1477 | # Return a two element array. The first element is a single character | ||
4350 | 1478 | # that represents the type of object the path points to. The second | ||
4351 | 1479 | # is a boolean (1 for true, '' for false) if the path points to a file | ||
4352 | 1480 | # and if the file is executable. | ||
4353 | 1481 | sub file_info | ||
4354 | 1482 | { | ||
4355 | 1483 | lstat(shift) or return ('0', ''); | ||
4356 | 1484 | -b _ and return ('b', ''); | ||
4357 | 1485 | -c _ and return ('c', ''); | ||
4358 | 1486 | -d _ and return ('d', ''); | ||
4359 | 1487 | -f _ and return ('f', -x _); | ||
4360 | 1488 | -l _ and return ('l', ''); | ||
4361 | 1489 | -p _ and return ('p', ''); | ||
4362 | 1490 | -S _ and return ('S', ''); | ||
4363 | 1491 | return '?'; | ||
4364 | 1492 | } | ||
4365 | 1493 | |||
4366 | 1494 | # Start a child process safely without using /bin/sh. | ||
4367 | 1495 | sub safe_read_from_pipe | ||
4368 | 1496 | { | ||
4369 | 1497 | unless (@_) | ||
4370 | 1498 | { | ||
4371 | 1499 | croak "$0: safe_read_from_pipe $INCORRECT_NUMBER_OF_ARGS"; | ||
4372 | 1500 | } | ||
4373 | 1501 | |||
4374 | 1502 | my $openfork_available = "MSWin32" ne $OSNAME; | ||
4375 | 1503 | if ($openfork_available) | ||
4376 | 1504 | { | ||
4377 | 1505 | print "Running @_\n"; | ||
4378 | 1506 | my $pid = open(SAFE_READ, "-|"); | ||
4379 | 1507 | unless (defined $pid) | ||
4380 | 1508 | { | ||
4381 | 1509 | die "$0: cannot fork: $!\n"; | ||
4382 | 1510 | } | ||
4383 | 1511 | unless ($pid) | ||
4384 | 1512 | { | ||
4385 | 1513 | # child | ||
4386 | 1514 | open(STDERR, ">&STDOUT") | ||
4387 | 1515 | or die "$0: cannot dup STDOUT: $!\n"; | ||
4388 | 1516 | exec(@_) | ||
4389 | 1517 | or die "$0: cannot exec '@_': $!\n"; | ||
4390 | 1518 | } | ||
4391 | 1519 | } | ||
4392 | 1520 | else | ||
4393 | 1521 | { | ||
4394 | 1522 | # Redirect the comment into a temp file and use that to work around | ||
4395 | 1523 | # Windoze's (non-)handling of multi-line commands. | ||
4396 | 1524 | my @commandline = (); | ||
4397 | 1525 | my $command; | ||
4398 | 1526 | my $comment; | ||
4399 | 1527 | |||
4400 | 1528 | while ($command = shift) | ||
4401 | 1529 | { | ||
4402 | 1530 | if ("-m" eq $command) | ||
4403 | 1531 | { | ||
4404 | 1532 | my $comment = shift; | ||
4405 | 1533 | my ($handle, $tmpfile) = tempfile(DIR => $temp_dir); | ||
4406 | 1534 | print $handle $comment; | ||
4407 | 1535 | close($handle); | ||
4408 | 1536 | |||
4409 | 1537 | push(@commandline, "--file"); | ||
4410 | 1538 | push(@commandline, $tmpfile); | ||
4411 | 1539 | } | ||
4412 | 1540 | else | ||
4413 | 1541 | { | ||
4414 | 1542 | # Munge the command to protect it from the command line | ||
4415 | 1543 | $command =~ s/\"/\\\"/g; | ||
4416 | 1544 | if ($command =~ m"\s") { $command = "\"$command\""; } | ||
4417 | 1545 | if ($command eq "") { $command = "\"\""; } | ||
4418 | 1546 | if ($command =~ m"\n") | ||
4419 | 1547 | { | ||
4420 | 1548 | warn "$0: carriage return detected in command - may not work\n"; | ||
4421 | 1549 | } | ||
4422 | 1550 | push(@commandline, $command); | ||
4423 | 1551 | } | ||
4424 | 1552 | } | ||
4425 | 1553 | |||
4426 | 1554 | print "Running @commandline\n"; | ||
4427 | 1555 | if ( $comment ) { print $comment; } | ||
4428 | 1556 | |||
4429 | 1557 | # Now do the pipe. | ||
4430 | 1558 | open(SAFE_READ, "@commandline |") | ||
4431 | 1559 | or die "$0: cannot pipe to command: $!\n"; | ||
4432 | 1560 | } | ||
4433 | 1561 | |||
4434 | 1562 | # parent | ||
4435 | 1563 | my @output; | ||
4436 | 1564 | while (<SAFE_READ>) | ||
4437 | 1565 | { | ||
4438 | 1566 | chomp; | ||
4439 | 1567 | push(@output, $_); | ||
4440 | 1568 | } | ||
4441 | 1569 | close(SAFE_READ); | ||
4442 | 1570 | my $result = $?; | ||
4443 | 1571 | my $exit = $result >> 8; | ||
4444 | 1572 | my $signal = $result & 127; | ||
4445 | 1573 | my $cd = $result & 128 ? "with core dump" : ""; | ||
4446 | 1574 | if ($signal or $cd) | ||
4447 | 1575 | { | ||
4448 | 1576 | warn "$0: pipe from '@_' failed $cd: exit=$exit signal=$signal\n"; | ||
4449 | 1577 | } | ||
4450 | 1578 | if (wantarray) | ||
4451 | 1579 | { | ||
4452 | 1580 | return ($result, @output); | ||
4453 | 1581 | } | ||
4454 | 1582 | else | ||
4455 | 1583 | { | ||
4456 | 1584 | return $result; | ||
4457 | 1585 | } | ||
4458 | 1586 | } | ||
4459 | 1587 | |||
4460 | 1588 | # Use safe_read_from_pipe to start a child process safely and exit the | ||
4461 | 1589 | # script if the child failed for whatever reason. | ||
4462 | 1590 | sub read_from_process | ||
4463 | 1591 | { | ||
4464 | 1592 | unless (@_) | ||
4465 | 1593 | { | ||
4466 | 1594 | croak "$0: read_from_process $INCORRECT_NUMBER_OF_ARGS"; | ||
4467 | 1595 | } | ||
4468 | 1596 | my ($status, @output) = &safe_read_from_pipe(@_); | ||
4469 | 1597 | if ($status) | ||
4470 | 1598 | { | ||
4471 | 1599 | print STDERR "$0: @_ failed with this output:\n", join("\n", @output), | ||
4472 | 1600 | "\n"; | ||
4473 | 1601 | unless ($opt_no_user_input) | ||
4474 | 1602 | { | ||
4475 | 1603 | print STDERR | ||
4476 | 1604 | "Press return to quit and clean up svn working directory: "; | ||
4477 | 1605 | <STDIN>; | ||
4478 | 1606 | } | ||
4479 | 1607 | exit 1; | ||
4480 | 1608 | } | ||
4481 | 1609 | else | ||
4482 | 1610 | { | ||
4483 | 1611 | return @output; | ||
4484 | 1612 | } | ||
4485 | 1613 | } | ||
4486 | 1614 | |||
4487 | 1615 | # Get a list of all the files and directories in the specified | ||
4488 | 1616 | # directory, the type of file and a digest hash of file types. | ||
4489 | 1617 | sub recursive_ls_and_hash | ||
4490 | 1618 | { | ||
4491 | 1619 | unless (@_ == 1) | ||
4492 | 1620 | { | ||
4493 | 1621 | croak "$0: recursive_ls_and_hash $INCORRECT_NUMBER_OF_ARGS"; | ||
4494 | 1622 | } | ||
4495 | 1623 | |||
4496 | 1624 | # This is the directory to change into. | ||
4497 | 1625 | my $dir = shift; | ||
4498 | 1626 | |||
4499 | 1627 | # Get the current directory so that the script can change into the | ||
4500 | 1628 | # current working directory after changing into the specified | ||
4501 | 1629 | # directory. | ||
4502 | 1630 | my $return_cwd = cwd; | ||
4503 | 1631 | |||
4504 | 1632 | chdir($dir) | ||
4505 | 1633 | or die "$0: cannot chdir '$dir': $!\n"; | ||
4506 | 1634 | |||
4507 | 1635 | my %files; | ||
4508 | 1636 | |||
4509 | 1637 | my $wanted = sub | ||
4510 | 1638 | { | ||
4511 | 1639 | s#^\./##; | ||
4512 | 1640 | return if $_ eq '.'; | ||
4513 | 1641 | my ($file_type) = &file_info($_); | ||
4514 | 1642 | my $file_digest; | ||
4515 | 1643 | if ($file_type eq 'f' or ($file_type eq 'l' and stat($_) and -f _)) | ||
4516 | 1644 | { | ||
4517 | 1645 | $file_digest = &digest_hash_file($_); | ||
4518 | 1646 | } | ||
4519 | 1647 | $files{$_} = {type => $file_type, | ||
4520 | 1648 | digest => $file_digest}; | ||
4521 | 1649 | }; | ||
4522 | 1650 | find({no_chdir => 1, | ||
4523 | 1651 | preprocess => sub | ||
4524 | 1652 | { | ||
4525 | 1653 | grep | ||
4526 | 1654 | { | ||
4527 | 1655 | my $ok=1; | ||
4528 | 1656 | foreach my $x (@glob_ignores) | ||
4529 | 1657 | { | ||
4530 | 1658 | if ( $_ =~ /$x/ ) {$ok=0;last;} | ||
4531 | 1659 | } | ||
4532 | 1660 | $ok | ||
4533 | 1661 | } @_ | ||
4534 | 1662 | }, | ||
4535 | 1663 | wanted => $wanted | ||
4536 | 1664 | }, '.'); | ||
4537 | 1665 | |||
4538 | 1666 | chdir($return_cwd) | ||
4539 | 1667 | or die "$0: cannot chdir '$return_cwd': $!\n"; | ||
4540 | 1668 | |||
4541 | 1669 | %files; | ||
4542 | 1670 | } | ||
4543 | 1671 | |||
4544 | 1672 | # Given a list of files and directories which have been renamed but | ||
4545 | 1673 | # not commtited, commit them with a proper log message. | ||
4546 | 1674 | sub commit_renames | ||
4547 | 1675 | { | ||
4548 | 1676 | unless (@_ == 4) | ||
4549 | 1677 | { | ||
4550 | 1678 | croak "$0: commit_renames $INCORRECT_NUMBER_OF_ARGS"; | ||
4551 | 1679 | } | ||
4552 | 1680 | |||
4553 | 1681 | my $load_dir = shift; | ||
4554 | 1682 | my $renamed_filenames = shift; | ||
4555 | 1683 | my $rename_from_files = shift; | ||
4556 | 1684 | my $rename_to_files = shift; | ||
4557 | 1685 | |||
4558 | 1686 | my $number_renames = @$renamed_filenames/2; | ||
4559 | 1687 | |||
4560 | 1688 | my $message = "To prepare to load $load_dir into $repos_load_abs_path, " . | ||
4561 | 1689 | "perform $number_renames rename" . | ||
4562 | 1690 | ($number_renames > 1 ? "s" : "") . ".\n"; | ||
4563 | 1691 | |||
4564 | 1692 | # Text::Wrap::wrap appears to replace multiple consecutive \n's with | ||
4565 | 1693 | # one \n, so wrap the text and then append the second \n. | ||
4566 | 1694 | $message = wrap("", "", $message) . "\n"; | ||
4567 | 1695 | while (@$renamed_filenames) | ||
4568 | 1696 | { | ||
4569 | 1697 | my $from = "$repos_load_abs_path/" . shift @$renamed_filenames; | ||
4570 | 1698 | my $to = "$repos_load_abs_path/" . shift @$renamed_filenames; | ||
4571 | 1699 | $message .= wrap("", " ", "* $to: Renamed from $from.\n"); | ||
4572 | 1700 | } | ||
4573 | 1701 | |||
4574 | 1702 | # Change to the top of the working copy so that any | ||
4575 | 1703 | # directories will also be updated. | ||
4576 | 1704 | my $cwd = cwd; | ||
4577 | 1705 | chdir($wc_import_dir_cwd) | ||
4578 | 1706 | or die "$0: cannot chdir '$wc_import_dir_cwd': $!\n"; | ||
4579 | 1707 | read_from_process($svn, 'commit', @svn_use_repos_cmd_opts, '-m', $message); | ||
4580 | 1708 | read_from_process($svn, 'update', @svn_use_repos_cmd_opts); | ||
4581 | 1709 | chdir($cwd) | ||
4582 | 1710 | or die "$0: cannot chdir '$cwd': $!\n"; | ||
4583 | 1711 | |||
4584 | 1712 | # Some versions of subversion have a bug where renamed files | ||
4585 | 1713 | # or directories are not deleted after a commit, so do that | ||
4586 | 1714 | # here. | ||
4587 | 1715 | my @del_files = sort {length($b) <=> length($a) || $a cmp $b } | ||
4588 | 1716 | keys %$rename_from_files; | ||
4589 | 1717 | rmtree(\@del_files, 1, 0); | ||
4590 | 1718 | |||
4591 | 1719 | # Empty the list of old and new renamed names. | ||
4592 | 1720 | undef %$rename_from_files; | ||
4593 | 1721 | undef %$rename_to_files; | ||
4594 | 1722 | } | ||
4595 | 1723 | |||
4596 | 1724 | # Take a one file or directory and see if its name is equal to a | ||
4597 | 1725 | # second or is contained in the second if the second file's file type | ||
4598 | 1726 | # is a directory. | ||
4599 | 1727 | sub contained_in | ||
4600 | 1728 | { | ||
4601 | 1729 | unless (@_ == 3) | ||
4602 | 1730 | { | ||
4603 | 1731 | croak "$0: contain_in $INCORRECT_NUMBER_OF_ARGS"; | ||
4604 | 1732 | } | ||
4605 | 1733 | |||
4606 | 1734 | my $contained = shift; | ||
4607 | 1735 | my $container = shift; | ||
4608 | 1736 | my $container_type = shift; | ||
4609 | 1737 | |||
4610 | 1738 | if ($container eq $contained) | ||
4611 | 1739 | { | ||
4612 | 1740 | return 1; | ||
4613 | 1741 | } | ||
4614 | 1742 | |||
4615 | 1743 | if ($container_type eq 'd') | ||
4616 | 1744 | { | ||
4617 | 1745 | my $dirname = "$container/"; | ||
4618 | 1746 | my $dirname_length = length($dirname); | ||
4619 | 1747 | |||
4620 | 1748 | if ($dirname_length <= length($contained) and | ||
4621 | 1749 | $dirname eq substr($contained, 0, $dirname_length)) | ||
4622 | 1750 | { | ||
4623 | 1751 | return 1; | ||
4624 | 1752 | } | ||
4625 | 1753 | } | ||
4626 | 1754 | |||
4627 | 1755 | return 0; | ||
4628 | 1756 | } | ||
4629 | 1757 | |||
4630 | 1758 | # Take an array reference containing a list of files and directories | ||
4631 | 1759 | # and take a hash reference and remove from the array reference any | ||
4632 | 1760 | # files and directories and the files the directory contains listed in | ||
4633 | 1761 | # the hash. | ||
4634 | 1762 | sub filter_renamed_files | ||
4635 | 1763 | { | ||
4636 | 1764 | unless (@_ == 2) | ||
4637 | 1765 | { | ||
4638 | 1766 | croak "$0: filter_renamed_files $INCORRECT_NUMBER_OF_ARGS"; | ||
4639 | 1767 | } | ||
4640 | 1768 | |||
4641 | 1769 | my $array_ref = shift; | ||
4642 | 1770 | my $hash_ref = shift; | ||
4643 | 1771 | |||
4644 | 1772 | foreach my $remove_filename (keys %$hash_ref) | ||
4645 | 1773 | { | ||
4646 | 1774 | my $remove_file_type = $hash_ref->{$remove_filename}{type}; | ||
4647 | 1775 | for (my $i=0; $i<@$array_ref;) | ||
4648 | 1776 | { | ||
4649 | 1777 | if (contained_in($array_ref->[$i], | ||
4650 | 1778 | $remove_filename, | ||
4651 | 1779 | $remove_file_type)) | ||
4652 | 1780 | { | ||
4653 | 1781 | splice(@$array_ref, $i, 1); | ||
4654 | 1782 | next; | ||
4655 | 1783 | } | ||
4656 | 1784 | ++$i; | ||
4657 | 1785 | } | ||
4658 | 1786 | } | ||
4659 | 1787 | } | ||
4660 | 1788 | |||
4661 | 1789 | # Get a digest hash of the specified filename. | ||
4662 | 1790 | sub digest_hash_file | ||
4663 | 1791 | { | ||
4664 | 1792 | unless (@_ == 1) | ||
4665 | 1793 | { | ||
4666 | 1794 | croak "$0: digest_hash_file $INCORRECT_NUMBER_OF_ARGS"; | ||
4667 | 1795 | } | ||
4668 | 1796 | |||
4669 | 1797 | my $filename = shift; | ||
4670 | 1798 | |||
4671 | 1799 | my $ctx = Digest::MD5->new; | ||
4672 | 1800 | if (open(READ, $filename)) | ||
4673 | 1801 | { | ||
4674 | 1802 | binmode READ; | ||
4675 | 1803 | $ctx->addfile(*READ); | ||
4676 | 1804 | close(READ); | ||
4677 | 1805 | } | ||
4678 | 1806 | else | ||
4679 | 1807 | { | ||
4680 | 1808 | die "$0: cannot open '$filename' for reading: $!\n"; | ||
4681 | 1809 | } | ||
4682 | 1810 | $ctx->digest; | ||
4683 | 1811 | } | ||
4684 | 1812 | |||
4685 | 1813 | # Read standard input until a line contains the required input or an | ||
4686 | 1814 | # empty line to signify the default answer. | ||
4687 | 1815 | sub get_answer | ||
4688 | 1816 | { | ||
4689 | 1817 | unless (@_ == 3) | ||
4690 | 1818 | { | ||
4691 | 1819 | croak "$0: get_answer $INCORRECT_NUMBER_OF_ARGS"; | ||
4692 | 1820 | } | ||
4693 | 1821 | |||
4694 | 1822 | my $message = shift; | ||
4695 | 1823 | my $answers = shift; | ||
4696 | 1824 | my $def_ans = shift; | ||
4697 | 1825 | |||
4698 | 1826 | return $def_ans if $opt_no_user_input; | ||
4699 | 1827 | |||
4700 | 1828 | my $char; | ||
4701 | 1829 | do | ||
4702 | 1830 | { | ||
4703 | 1831 | print $message; | ||
4704 | 1832 | $char = ''; | ||
4705 | 1833 | my $line = <STDIN>; | ||
4706 | 1834 | if (defined $line and length $line) | ||
4707 | 1835 | { | ||
4708 | 1836 | $char = substr($line, 0, 1); | ||
4709 | 1837 | $char = '' if $char eq "\n"; | ||
4710 | 1838 | } | ||
4711 | 1839 | } until $char eq '' or $answers =~ /$char/ig; | ||
4712 | 1840 | |||
4713 | 1841 | return $def_ans if $char eq ''; | ||
4714 | 1842 | return pos($answers) - 1; | ||
4715 | 1843 | } | ||
4716 | 1844 | |||
4717 | 1845 | # Determine the native end of line on this system by writing a \n in | ||
4718 | 1846 | # non-binary mode to an empty file and reading the same file back in | ||
4719 | 1847 | # binary mode. | ||
4720 | 1848 | sub determine_native_eol | ||
4721 | 1849 | { | ||
4722 | 1850 | my $filename = "$temp_dir/svn_load_dirs_eol_test.$$"; | ||
4723 | 1851 | if (-e $filename) | ||
4724 | 1852 | { | ||
4725 | 1853 | unlink($filename) | ||
4726 | 1854 | or die "$0: cannot unlink '$filename': $!\n"; | ||
4727 | 1855 | } | ||
4728 | 1856 | |||
4729 | 1857 | # Write the \n in non-binary mode. | ||
4730 | 1858 | open(NL_TEST, ">$filename") | ||
4731 | 1859 | or die "$0: cannot open '$filename' for writing: $!\n"; | ||
4732 | 1860 | print NL_TEST "\n"; | ||
4733 | 1861 | close(NL_TEST) | ||
4734 | 1862 | or die "$0: error in closing '$filename' for writing: $!\n"; | ||
4735 | 1863 | |||
4736 | 1864 | # Read the \n in binary mode. | ||
4737 | 1865 | open(NL_TEST, $filename) | ||
4738 | 1866 | or die "$0: cannot open '$filename' for reading: $!\n"; | ||
4739 | 1867 | binmode NL_TEST; | ||
4740 | 1868 | local $/; | ||
4741 | 1869 | undef $/; | ||
4742 | 1870 | my $eol = <NL_TEST>; | ||
4743 | 1871 | close(NL_TEST) | ||
4744 | 1872 | or die "$0: cannot close '$filename' for reading: $!\n"; | ||
4745 | 1873 | unlink($filename) | ||
4746 | 1874 | or die "$0: cannot unlink '$filename': $!\n"; | ||
4747 | 1875 | |||
4748 | 1876 | my $eol_length = length($eol); | ||
4749 | 1877 | unless ($eol_length) | ||
4750 | 1878 | { | ||
4751 | 1879 | die "$0: native eol length on this system is 0.\n"; | ||
4752 | 1880 | } | ||
4753 | 1881 | |||
4754 | 1882 | print "Native EOL on this system is "; | ||
4755 | 1883 | for (my $i=0; $i<$eol_length; ++$i) | ||
4756 | 1884 | { | ||
4757 | 1885 | printf "\\%03o", ord(substr($eol, $i, 1)); | ||
4758 | 1886 | } | ||
4759 | 1887 | print ".\n\n"; | ||
4760 | 1888 | |||
4761 | 1889 | $eol; | ||
4762 | 1890 | } | ||
4763 | 1891 | |||
4764 | 1892 | # Take a filename, open the file and replace all CR, CRLF and LF's | ||
4765 | 1893 | # with the native end of line style for this system. | ||
4766 | 1894 | sub convert_file_to_native_eol | ||
4767 | 1895 | { | ||
4768 | 1896 | unless (@_ == 1) | ||
4769 | 1897 | { | ||
4770 | 1898 | croak "$0: convert_file_to_native_eol $INCORRECT_NUMBER_OF_ARGS"; | ||
4771 | 1899 | } | ||
4772 | 1900 | |||
4773 | 1901 | my $filename = shift; | ||
4774 | 1902 | open(FILE, $filename) | ||
4775 | 1903 | or die "$0: cannot open '$filename' for reading: $!\n"; | ||
4776 | 1904 | binmode FILE; | ||
4777 | 1905 | local $/; | ||
4778 | 1906 | undef $/; | ||
4779 | 1907 | my $in = <FILE>; | ||
4780 | 1908 | close(FILE) | ||
4781 | 1909 | or die "$0: error in closing '$filename' for reading: $!\n"; | ||
4782 | 1910 | my $out = ''; | ||
4783 | 1911 | |||
4784 | 1912 | # Go through the file and transform it byte by byte. | ||
4785 | 1913 | my $i = 0; | ||
4786 | 1914 | while ($i < length($in)) | ||
4787 | 1915 | { | ||
4788 | 1916 | my $cc = substr($in, $i, 2); | ||
4789 | 1917 | if ($cc eq "\015\012") | ||
4790 | 1918 | { | ||
4791 | 1919 | $out .= $native_eol; | ||
4792 | 1920 | $i += 2; | ||
4793 | 1921 | next; | ||
4794 | 1922 | } | ||
4795 | 1923 | |||
4796 | 1924 | my $c = substr($cc, 0, 1); | ||
4797 | 1925 | if ($c eq "\012" or $c eq "\015") | ||
4798 | 1926 | { | ||
4799 | 1927 | $out .= $native_eol; | ||
4800 | 1928 | } | ||
4801 | 1929 | else | ||
4802 | 1930 | { | ||
4803 | 1931 | $out .= $c; | ||
4804 | 1932 | } | ||
4805 | 1933 | ++$i; | ||
4806 | 1934 | } | ||
4807 | 1935 | |||
4808 | 1936 | return 0 if $in eq $out; | ||
4809 | 1937 | |||
4810 | 1938 | my $tmp_filename = ".svn/tmp/svn_load_dirs.$$"; | ||
4811 | 1939 | open(FILE, ">$tmp_filename") | ||
4812 | 1940 | or die "$0: cannot open '$tmp_filename' for writing: $!\n"; | ||
4813 | 1941 | binmode FILE; | ||
4814 | 1942 | print FILE $out; | ||
4815 | 1943 | close(FILE) | ||
4816 | 1944 | or die "$0: cannot close '$tmp_filename' for writing: $!\n"; | ||
4817 | 1945 | rename($tmp_filename, $filename) | ||
4818 | 1946 | or die "$0: cannot rename '$tmp_filename' to '$filename': $!\n"; | ||
4819 | 1947 | |||
4820 | 1948 | return 1; | ||
4821 | 1949 | } | ||
4822 | 1950 | |||
4823 | 1951 | # Split the input line into words taking into account that single or | ||
4824 | 1952 | # double quotes may define a single word with whitespace in it. | ||
4825 | 1953 | sub split_line | ||
4826 | 1954 | { | ||
4827 | 1955 | unless (@_ == 1) | ||
4828 | 1956 | { | ||
4829 | 1957 | croak "$0: split_line $INCORRECT_NUMBER_OF_ARGS"; | ||
4830 | 1958 | } | ||
4831 | 1959 | |||
4832 | 1960 | my $line = shift; | ||
4833 | 1961 | |||
4834 | 1962 | # Strip leading whitespace. Do not strip trailing whitespace which | ||
4835 | 1963 | # may be part of quoted text that was never closed. | ||
4836 | 1964 | $line =~ s/^\s+//; | ||
4837 | 1965 | |||
4838 | 1966 | my $line_length = length $line; | ||
4839 | 1967 | my @words = (); | ||
4840 | 1968 | my $current_word = ''; | ||
4841 | 1969 | my $in_quote = ''; | ||
4842 | 1970 | my $in_protect = ''; | ||
4843 | 1971 | my $in_space = ''; | ||
4844 | 1972 | my $i = 0; | ||
4845 | 1973 | |||
4846 | 1974 | while ($i < $line_length) | ||
4847 | 1975 | { | ||
4848 | 1976 | my $c = substr($line, $i, 1); | ||
4849 | 1977 | ++$i; | ||
4850 | 1978 | |||
4851 | 1979 | if ($in_protect) | ||
4852 | 1980 | { | ||
4853 | 1981 | if ($c eq $in_quote) | ||
4854 | 1982 | { | ||
4855 | 1983 | $current_word .= $c; | ||
4856 | 1984 | } | ||
4857 | 1985 | elsif ($c eq '"' or $c eq "'") | ||
4858 | 1986 | { | ||
4859 | 1987 | $current_word .= $c; | ||
4860 | 1988 | } | ||
4861 | 1989 | else | ||
4862 | 1990 | { | ||
4863 | 1991 | $current_word .= "$in_protect$c"; | ||
4864 | 1992 | } | ||
4865 | 1993 | $in_protect = ''; | ||
4866 | 1994 | } | ||
4867 | 1995 | elsif ($c eq '\\') | ||
4868 | 1996 | { | ||
4869 | 1997 | $in_protect = $c; | ||
4870 | 1998 | } | ||
4871 | 1999 | elsif ($in_quote) | ||
4872 | 2000 | { | ||
4873 | 2001 | if ($c eq $in_quote) | ||
4874 | 2002 | { | ||
4875 | 2003 | $in_quote = ''; | ||
4876 | 2004 | } | ||
4877 | 2005 | else | ||
4878 | 2006 | { | ||
4879 | 2007 | $current_word .= $c; | ||
4880 | 2008 | } | ||
4881 | 2009 | } | ||
4882 | 2010 | elsif ($c eq '"' or $c eq "'") | ||
4883 | 2011 | { | ||
4884 | 2012 | $in_quote = $c; | ||
4885 | 2013 | } | ||
4886 | 2014 | elsif ($c =~ m/^\s$/) | ||
4887 | 2015 | { | ||
4888 | 2016 | unless ($in_space) | ||
4889 | 2017 | { | ||
4890 | 2018 | push(@words, $current_word); | ||
4891 | 2019 | $current_word = ''; | ||
4892 | 2020 | } | ||
4893 | 2021 | } | ||
4894 | 2022 | else | ||
4895 | 2023 | { | ||
4896 | 2024 | $current_word .= $c; | ||
4897 | 2025 | } | ||
4898 | 2026 | |||
4899 | 2027 | $in_space = $c =~ m/^\s$/; | ||
4900 | 2028 | } | ||
4901 | 2029 | |||
4902 | 2030 | # Handle any leftovers. | ||
4903 | 2031 | $current_word .= $in_protect if $in_protect; | ||
4904 | 2032 | push(@words, $current_word) if length $current_word; | ||
4905 | 2033 | |||
4906 | 2034 | @words; | ||
4907 | 2035 | } | ||
4908 | 2036 | |||
4909 | 2037 | # This package exists just to delete the temporary directory. | ||
4910 | 2038 | package Temp::Delete; | ||
4911 | 2039 | |||
4912 | 2040 | sub new | ||
4913 | 2041 | { | ||
4914 | 2042 | bless {}, shift; | ||
4915 | 2043 | } | ||
4916 | 2044 | |||
4917 | 2045 | sub DESTROY | ||
4918 | 2046 | { | ||
4919 | 2047 | print "Cleaning up $temp_dir\n"; | ||
4920 | 2048 | File::Path::rmtree([$temp_dir], 0, 0); | ||
4921 | 2049 | } | ||
4922 | 0 | 2050 | ||
4923 | === added file 'contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example' | |||
4924 | --- contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example 1970-01-01 00:00:00 +0000 | |||
4925 | +++ contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example 2009-12-12 13:21:15 +0000 | |||
4926 | @@ -0,0 +1,29 @@ | |||
4927 | 1 | # This is sample table for svn_load_dirs.pl -p command line option. | ||
4928 | 2 | \.(ai|eps|ps)$ break svn:mime-type application/postscript | ||
4929 | 3 | \.bz2$ break svn:mime-type application/x-bzip2 | ||
4930 | 4 | \.css$ break svn:mime-type text/css | ||
4931 | 5 | \.doc$ break svn:mime-type application/msword | ||
4932 | 6 | \.ds(p|w)$ break svn:eol-style CRLF | ||
4933 | 7 | \.exe$ break svn:mime-type application/octet-stream | ||
4934 | 8 | \.gif$ break svn:mime-type image/gif | ||
4935 | 9 | \.gtar$ break svn:mime-type application/x-gtar | ||
4936 | 10 | \.(gz|tgz)$ break svn:mime-type application/x-gzip | ||
4937 | 11 | \.hqx$ break svn:mime-type application/mac-binhex40 | ||
4938 | 12 | \.html?$ break svn:mime-type text/html | ||
4939 | 13 | \.ilk$ break svn:eol-style CRLF | ||
4940 | 14 | \.(jpeg|jpg|jpe)$ break svn:mime-type image/jpeg | ||
4941 | 15 | \.js$ break svn:mime-type application/x-javascript | ||
4942 | 16 | \.(mov|qt)$ break svn:mime-type video/quicktime | ||
4943 | 17 | \.ncb$ break svn:eol-style CRLF | ||
4944 | 18 | \.opt$ break svn:eol-style CRLF | ||
4945 | 19 | \.pdf$ break svn:mime-type application/pdf | ||
4946 | 20 | \.png$ break svn:mime-type image/png | ||
4947 | 21 | \.pp(s|t)$ break svn:mime-type application/vnd.ms-powerpoint | ||
4948 | 22 | \.rtf$ break svn:mime-type application/rtf | ||
4949 | 23 | \.swf$ break svn:mime-type application/x-shockwave-flash | ||
4950 | 24 | \.tar$ break svn:mime-type application/x-tar | ||
4951 | 25 | \.tiff?$ break svn:mime-type image/tiff | ||
4952 | 26 | \.xls$ break svn:mime-type application/vnd.ms-excel | ||
4953 | 27 | \.zip$ break svn:mime-type application/zip | ||
4954 | 28 | dos2unix-eol\.sh$ break | ||
4955 | 29 | #.* break svn:eol-style native | ||
4956 | 0 | 30 | ||
4957 | === added file 'contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py' | |||
4958 | --- contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py 1970-01-01 00:00:00 +0000 | |||
4959 | +++ contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py 2009-12-12 13:21:15 +0000 | |||
4960 | @@ -0,0 +1,452 @@ | |||
4961 | 1 | #!/usr/bin/env python | ||
4962 | 2 | # | ||
4963 | 3 | # svnmerge-migrate-history-remotely.py: Remotely migrate merge history from | ||
4964 | 4 | # svnmerge.py's format to Subversion 1.5's format. | ||
4965 | 5 | # | ||
4966 | 6 | # ==================================================================== | ||
4967 | 7 | # Copyright (c) 2008 CollabNet. All rights reserved. | ||
4968 | 8 | # | ||
4969 | 9 | # This software is licensed as described in the file COPYING, which | ||
4970 | 10 | # you should have received as part of this distribution. The terms | ||
4971 | 11 | # are also available at http://subversion.tigris.org/license-1.html. | ||
4972 | 12 | # If newer versions of this license are posted there, you may use a | ||
4973 | 13 | # newer version instead, at your option. | ||
4974 | 14 | # | ||
4975 | 15 | # This software consists of voluntary contributions made by many | ||
4976 | 16 | # individuals. For exact contribution history, see the revision | ||
4977 | 17 | # history and logs, available at http://subversion.tigris.org/. | ||
4978 | 18 | # ==================================================================== | ||
4979 | 19 | |||
4980 | 20 | # $HeadURL: http://svn.collab.net/repos/svn/branches/1.6.x/contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py $ | ||
4981 | 21 | # $Date: 2009-01-20 22:25:54 +0000 (Tue, 20 Jan 2009) $ | ||
4982 | 22 | # $Author: cmpilato $ | ||
4983 | 23 | # $Rev: 35358 $ | ||
4984 | 24 | |||
4985 | 25 | |||
4986 | 26 | ### THE SVNMERGE HISTORY MIGRATION ALGORITHM EMPLOYED HEREIN | ||
4987 | 27 | ### | ||
4988 | 28 | ### 1. Fetch properties for PATH, looking specifically for | ||
4989 | 29 | ### 'svnmerge-blocked', and 'svnmerge-integrated'. | ||
4990 | 30 | ### | ||
4991 | 31 | ### 2. Convert properties into real mergeinfo. NOTE: svnmerge-* | ||
4992 | 32 | ### properties have a slightly different and more flexible syntax. | ||
4993 | 33 | ### | ||
4994 | 34 | ### 3. Combine mergeinfos together. | ||
4995 | 35 | ### | ||
4996 | 36 | ### 4. [non-naive] Subtract natural history of the merge target from | ||
4997 | 37 | ### its own mergeinfo. | ||
4998 | 38 | ### | ||
4999 | 39 | ### 5. [non-naive] Filter mergeinfo by merge source natural history | ||
5000 | 40 | ### (so that mergeinfo only reflects real locations). |
The diff has been truncated for viewing.
This has been uploaded to the archive.