[prev in list] [next in list] [prev in thread] [next in thread]
List: subversion-commits
Subject: svn commit: r1847678 [24/25] - in /subversion/branches/swig-py3: ./ build/ build/ac-macros/ build/ge
From: cmpilato () apache ! org
Date: 2018-11-28 21:25:35
Message-ID: 20181128212540.B1DBF3A2F2C () svn01-us-west ! apache ! org
[Download RAW message or body]
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_fs/fs-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_fs/fs-test.c Wed Nov 28 \
21:25:32 2018 @@ -7369,6 +7369,78 @@ closest_copy_test_svn_4677(const svn_tes
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_closest_copy_file_replaced_with_dir(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_fs_t *fs;
+ svn_fs_txn_t *txn;
+ svn_fs_root_t *txn_root;
+ svn_fs_root_t *rev_root;
+ svn_revnum_t youngest_rev;
+ svn_fs_root_t *copy_root;
+ const char *copy_path;
+
+ /* Prepare a filesystem. */
+ SVN_ERR(svn_test__create_fs(&fs, "test-closest-copy-file-replaced-with-dir",
+ opts, pool));
+
+ youngest_rev = 0;
+
+ /* Modeled after the case described in the thread:
+ "[PATCH] A test for "Can't get entries" error"
+ https://lists.apache.org/thread.html/693a95b0da834387e78a7f08df2392b634397d32f37428c81c02f8c5@%3Cdev.subversion.apache.org%3E
+ */
+ /* r1: Add a directory with a file. */
+ SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ SVN_ERR(svn_fs_make_dir(txn_root, "/A", pool));
+ SVN_ERR(svn_fs_make_file(txn_root, "/A/mu", pool));
+ SVN_ERR(test_commit_txn(&youngest_rev, txn, NULL, pool));
+ SVN_TEST_INT_ASSERT(youngest_rev, 1);
+
+ /* r2: Copy the directory. */
+ SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ SVN_ERR(svn_fs_revision_root(&rev_root, fs, 1, pool));
+ SVN_ERR(svn_fs_copy(rev_root, "/A", txn_root, "/B", pool));
+ SVN_ERR(test_commit_txn(&youngest_rev, txn, NULL, pool));
+ SVN_TEST_INT_ASSERT(youngest_rev, 2);
+
+ /* r3: Delete the file. */
+ SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ SVN_ERR(svn_fs_delete(txn_root, "/B/mu", pool));
+ SVN_ERR(test_commit_txn(&youngest_rev, txn, NULL, pool));
+ SVN_TEST_INT_ASSERT(youngest_rev, 3);
+
+ /* r4: Replace the file with a new directory containing a file. */
+ SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ SVN_ERR(svn_fs_make_dir(txn_root, "/B/mu", pool));
+ SVN_ERR(svn_fs_make_file(txn_root, "/B/mu/iota", pool));
+ SVN_ERR(test_commit_txn(&youngest_rev, txn, NULL, pool));
+ SVN_TEST_INT_ASSERT(youngest_rev, 4);
+
+ /* Test a couple of svn_fs_closest_copy() calls; the second call used
+ to fail with an unexpected SVN_ERR_FS_NOT_DIRECTORY error. */
+
+ SVN_ERR(svn_fs_revision_root(&rev_root, fs, 2, pool));
+ SVN_ERR(svn_fs_closest_copy(©_root, ©_path, rev_root, "/B/mu", pool));
+
+ SVN_TEST_ASSERT(copy_root != NULL);
+ SVN_TEST_INT_ASSERT(svn_fs_revision_root_revision(copy_root), 2);
+ SVN_TEST_STRING_ASSERT(copy_path, "/B");
+
+ SVN_ERR(svn_fs_revision_root(&rev_root, fs, 4, pool));
+ SVN_ERR(svn_fs_closest_copy(©_root, ©_path, rev_root, "/B/mu/iota", \
pool)); +
+ SVN_TEST_ASSERT(copy_root == NULL);
+ SVN_TEST_ASSERT(copy_path == NULL);
+
+ return SVN_NO_ERROR;
+}
+
/* ------------------------------------------------------------------------ */
/* The test table. */
@@ -7513,6 +7585,8 @@ static struct svn_test_descriptor_t test
"test rep-sharing on content rather than SHA1"),
SVN_TEST_OPTS_PASS(closest_copy_test_svn_4677,
"test issue SVN-4677 regression"),
+ SVN_TEST_OPTS_PASS(test_closest_copy_file_replaced_with_dir,
+ "svn_fs_closest_copy after replacing file with dir"),
SVN_TEST_NULL
};
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_repos/authz-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_repos/authz-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_repos/authz-test.c \
(original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_repos/authz-test.c Wed Nov \
28 21:25:32 2018 @@ -444,6 +444,73 @@ test_global_rights(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+issue_4741_groups(apr_pool_t *pool)
+{
+ const char rules[] =
+ "[groups]" NL
+ "g1 = userA" NL
+ "g2 = userB" NL
+ "g = @g1, @g2" NL
+ "" NL
+ "[/]" NL
+ "* =" NL
+ "@g = rw" NL
+ ;
+
+ svn_stringbuf_t *buf = svn_stringbuf_create(rules, pool);
+ svn_stream_t *stream = svn_stream_from_stringbuf(buf, pool);
+ svn_authz_t *authz;
+ svn_boolean_t access_granted;
+
+ SVN_ERR(svn_repos_authz_parse(&authz, stream, NULL, pool));
+
+ SVN_ERR(svn_repos_authz_check_access(authz, "repo", "/", "userA",
+ svn_authz_write, &access_granted,
+ pool));
+ SVN_TEST_ASSERT(access_granted == TRUE);
+
+ SVN_ERR(svn_repos_authz_check_access(authz, "repo", "/", "userB",
+ svn_authz_write, &access_granted,
+ pool));
+ SVN_TEST_ASSERT(access_granted == TRUE);
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+reposful_reposless_stanzas_inherit(apr_pool_t *pool)
+{
+ const char rules[] =
+ "[groups]" NL
+ "company = user1, user2, user3" NL
+ "customer = customer1, customer2" NL
+ "" NL
+ "# company can read-write on everything" NL
+ "[/]" NL
+ "@company = rw" NL
+ "" NL
+ "[project1:/]" NL
+ "@customer = r" NL
+ "" NL
+ "[project2:/]" NL;
+
+ svn_stringbuf_t *buf = svn_stringbuf_create(rules, pool);
+ svn_stream_t *stream = svn_stream_from_stringbuf(buf, pool);
+ svn_authz_t *authz;
+ svn_boolean_t access_granted;
+
+ SVN_ERR(svn_repos_authz_parse(&authz, stream, NULL, pool));
+
+ SVN_ERR(svn_repos_authz_check_access(authz, "project1", "/foo", "user1",
+ svn_authz_write | svn_authz_recursive,
+ &access_granted,
+ pool));
+ SVN_TEST_ASSERT(access_granted == TRUE);
+
+ return SVN_NO_ERROR;
+}
+
static int max_threads = 4;
static struct svn_test_descriptor_t test_funcs[] =
@@ -453,6 +520,10 @@ static struct svn_test_descriptor_t test
"test svn_authz__parse"),
SVN_TEST_PASS2(test_global_rights,
"test svn_authz__get_global_rights"),
+ SVN_TEST_PASS2(issue_4741_groups,
+ "issue 4741 groups"),
+ SVN_TEST_XFAIL2(reposful_reposless_stanzas_inherit,
+ "[foo:/] inherits [/]"),
SVN_TEST_NULL
};
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_repos/repos-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_repos/repos-test.c \
(original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_repos/repos-test.c Wed Nov \
28 21:25:32 2018 @@ -4461,7 +4461,7 @@ test_list(const svn_test_opts_t *opts,
SVN_ERR(svn_repos_list(rev_root, "/A", patterns, svn_depth_infinity, FALSE,
NULL, NULL, list_callback, &counter, NULL, NULL,
pool));
- SVN_TEST_ASSERT(counter == 6);
+ SVN_TEST_ASSERT(counter == 7);
return SVN_NO_ERROR;
}
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_subr/mergeinfo-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_subr/mergeinfo-test.c \
(original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_subr/mergeinfo-test.c Wed \
Nov 28 21:25:32 2018 @@ -1673,100 +1673,27 @@ \
test_remove_prefix_from_catalog(apr_pool static svn_error_t *
test_rangelist_merge_overlap(apr_pool_t *pool)
{
- svn_rangelist_t * changes;
- /* 15014-19472,19473-19612*,19613-19614,19615-19630*,19631-19634,19635-20055* */
- svn_rangelist_t * rangelist = apr_array_make(pool, 1, sizeof(svn_merge_range_t \
*));
- svn_merge_range_t *mrange = apr_pcalloc(pool, sizeof(*mrange));
-
- /* This range is optional for reproducing issue #4686 */
- mrange->start = 15013;
- mrange->end = 19472;
- mrange->inheritable = TRUE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19472;
- mrange->end = 19612;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- /* This range is optional for reproducing issue #4686 */
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19612;
- mrange->end = 19614;
- mrange->inheritable = TRUE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19614;
- mrange->end = 19630;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19630;
- mrange->end = 19634;
- mrange->inheritable = TRUE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- /* This range is optional for reproducing issue #4686 */
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19634;
- mrange->end = 20055;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- /* 15014-20515* */
- changes = apr_array_make(pool, 1, sizeof(svn_merge_range_t *));
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 15013;
- mrange->end = 20515;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(changes, svn_merge_range_t *) = mrange;
-#if 0
- {
- svn_string_t * tmpString;
-
- svn_rangelist_to_string(&tmpString, rangelist, pool);
- printf("rangelist %s\n", tmpString->data);
- }
- {
- svn_string_t * tmpString;
-
- svn_rangelist_to_string(&tmpString, changes, pool);
- printf("changes %s\n", tmpString->data);
- }
-#endif
-
+ const char *rangelist_str = "19473-19612*,19615-19630*,19631-19634";
+ const char *changes_str = "15014-20515*";
+ const char *expected_str = "15014-19630*,19631-19634,19635-20515*";
+ /* wrong result: "15014-19630*,19634-19631*,19631-19634,19635-20515*" */
+ svn_rangelist_t *rangelist, *changes;
+ svn_string_t *result_string;
+
+ /* prepare the inputs */
+ SVN_ERR(svn_rangelist__parse(&rangelist, rangelist_str, pool));
+ SVN_ERR(svn_rangelist__parse(&changes, changes_str, pool));
SVN_TEST_ASSERT(svn_rangelist__is_canonical(rangelist));
SVN_TEST_ASSERT(svn_rangelist__is_canonical(changes));
+ /* perform the merge */
SVN_ERR(svn_rangelist_merge2(rangelist, changes, pool, pool));
+ /* check the output */
SVN_TEST_ASSERT(svn_rangelist__is_canonical(rangelist));
+ SVN_ERR(svn_rangelist_to_string(&result_string, rangelist, pool));
+ SVN_TEST_STRING_ASSERT(result_string->data, expected_str);
-#if 0
- {
- svn_string_t * tmpString;
-
- svn_rangelist_to_string(&tmpString, rangelist, pool);
- printf("result %s\n", tmpString->data);
- }
-#endif
-
- /* wrong result
- result 15014-19472,19473-19612*,19613-19614,19615-19630*,19634-19631*,19631-19634,19635-20515*
- */
-
- {
- svn_string_t * tmp_string;
- svn_rangelist_t *range_list;
-
- SVN_ERR(svn_rangelist_to_string(&tmp_string, rangelist, pool));
-
- SVN_ERR(svn_rangelist__parse(&range_list, tmp_string->data, pool));
- }
-
return SVN_NO_ERROR;
}
@@ -1900,9 +1827,9 @@ static struct svn_test_descriptor_t test
"diff of rangelists"),
SVN_TEST_PASS2(test_remove_prefix_from_catalog,
"removal of prefix paths from catalog keys"),
- SVN_TEST_XFAIL2(test_rangelist_merge_overlap,
+ SVN_TEST_PASS2(test_rangelist_merge_overlap,
"merge of rangelists with overlaps (issue 4686)"),
- SVN_TEST_XFAIL2(test_rangelist_loop,
+ SVN_TEST_PASS2(test_rangelist_loop,
"test rangelist edgecases via loop"),
SVN_TEST_NULL
};
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_subr/utf-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_subr/utf-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_subr/utf-test.c (original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_subr/utf-test.c Wed Nov 28 \
21:25:32 2018 @@ -752,8 +752,10 @@ test_utf_conversions(apr_pool_t *pool)
{
svn_boolean_t sixteenbit;
svn_boolean_t bigendian;
+ apr_size_t sourcelen;
const char *source;
const char *result;
+ svn_boolean_t counted;
} tests[] = {
#define UTF_32_LE FALSE, FALSE
@@ -762,32 +764,36 @@ test_utf_conversions(apr_pool_t *pool)
#define UTF_16_BE TRUE, TRUE
/* Normal character conversion */
- { UTF_32_LE, "t\0\0\0" "e\0\0\0" "s\0\0\0" "t\0\0\0" "\0\0\0\0", "test" },
- { UTF_32_BE, "\0\0\0t" "\0\0\0e" "\0\0\0s" "\0\0\0t" "\0\0\0\0", "test" },
- { UTF_16_LE, "t\0" "e\0" "s\0" "t\0" "\0\0", "test" },
- { UTF_16_BE, "\0t" "\0e" "\0s" "\0t" "\0\0", "test" },
+ { UTF_32_LE, 4, "t\0\0\0" "e\0\0\0" "s\0\0\0" "t\0\0\0" "\0\0\0\0", "test", \
FALSE }, + { UTF_32_BE, 4, "\0\0\0t" "\0\0\0e" "\0\0\0s" "\0\0\0t" "\0\0\0\0", \
"test", FALSE }, + { UTF_16_LE, 4, "t\0" "e\0" "s\0" "t\0" "\0\0", "test", FALSE \
}, + { UTF_16_BE, 4, "\0t" "\0e" "\0s" "\0t" "\0\0", "test", FALSE },
/* Valid surrogate pairs */
- { UTF_16_LE, "\x00\xD8" "\x00\xDC" "\0\0", "\xf0\x90\x80\x80" }, /* U+010000 */
- { UTF_16_LE, "\x34\xD8" "\x1E\xDD" "\0\0", "\xf0\x9d\x84\x9e" }, /* U+01D11E */
- { UTF_16_LE, "\xFF\xDB" "\xFD\xDF" "\0\0", "\xf4\x8f\xbf\xbd" }, /* U+10FFFD */
-
- { UTF_16_BE, "\xD8\x00" "\xDC\x00" "\0\0", "\xf0\x90\x80\x80" }, /* U+010000 */
- { UTF_16_BE, "\xD8\x34" "\xDD\x1E" "\0\0", "\xf0\x9d\x84\x9e" }, /* U+01D11E */
- { UTF_16_BE, "\xDB\xFF" "\xDF\xFD" "\0\0", "\xf4\x8f\xbf\xbd" }, /* U+10FFFD */
+ { UTF_16_LE, 2, "\x00\xD8" "\x00\xDC" "\0\0", "\xf0\x90\x80\x80", FALSE }, /* \
U+010000 */ + { UTF_16_LE, 2, "\x34\xD8" "\x1E\xDD" "\0\0", "\xf0\x9d\x84\x9e", \
FALSE }, /* U+01D11E */ + { UTF_16_LE, 2, "\xFF\xDB" "\xFD\xDF" "\0\0", \
"\xf4\x8f\xbf\xbd", FALSE }, /* U+10FFFD */ +
+ { UTF_16_BE, 2, "\xD8\x00" "\xDC\x00" "\0\0", "\xf0\x90\x80\x80", FALSE }, /* \
U+010000 */ + { UTF_16_BE, 2, "\xD8\x34" "\xDD\x1E" "\0\0", "\xf0\x9d\x84\x9e", \
FALSE }, /* U+01D11E */ + { UTF_16_BE, 2, "\xDB\xFF" "\xDF\xFD" "\0\0", \
"\xf4\x8f\xbf\xbd", FALSE }, /* U+10FFFD */
/* Swapped, single and trailing surrogate pairs */
- { UTF_16_LE, "*\0" "\x00\xDC" "\x00\xD8" "*\0\0\0", "*\xed\xb0\x80" \
"\xed\xa0\x80*" },
- { UTF_16_LE, "*\0" "\x1E\xDD" "*\0\0\0", "*\xed\xb4\x9e*" },
- { UTF_16_LE, "*\0" "\xFF\xDB" "*\0\0\0", "*\xed\xaf\xbf*" },
- { UTF_16_LE, "\x1E\xDD" "\0\0", "\xed\xb4\x9e" },
- { UTF_16_LE, "\xFF\xDB" "\0\0", "\xed\xaf\xbf" },
-
- { UTF_16_BE, "\0*" "\xDC\x00" "\xD8\x00" "\0*\0\0", "*\xed\xb0\x80" \
"\xed\xa0\x80*" },
- { UTF_16_BE, "\0*" "\xDD\x1E" "\0*\0\0", "*\xed\xb4\x9e*" },
- { UTF_16_BE, "\0*" "\xDB\xFF" "\0*\0\0", "*\xed\xaf\xbf*" },
- { UTF_16_BE, "\xDD\x1E" "\0\0", "\xed\xb4\x9e" },
- { UTF_16_BE, "\xDB\xFF" "\0\0", "\xed\xaf\xbf" },
+ { UTF_16_LE, 4, "*\0" "\x00\xDC" "\x00\xD8" "*\0\0\0", "*\xed\xb0\x80" \
"\xed\xa0\x80*", FALSE }, + { UTF_16_LE, 3, "*\0" "\x1E\xDD" "*\0\0\0", \
"*\xed\xb4\x9e*", FALSE }, + { UTF_16_LE, 3, "*\0" "\xFF\xDB" "*\0\0\0", \
"*\xed\xaf\xbf*", FALSE }, + { UTF_16_LE, 1, "\x1E\xDD" "\0\0", "\xed\xb4\x9e", \
FALSE }, + { UTF_16_LE, 1, "\xFF\xDB" "\0\0", "\xed\xaf\xbf", FALSE },
+
+ { UTF_16_BE, 4, "\0*" "\xDC\x00" "\xD8\x00" "\0*\0\0", "*\xed\xb0\x80" \
"\xed\xa0\x80*", FALSE }, + { UTF_16_BE, 3, "\0*" "\xDD\x1E" "\0*\0\0", \
"*\xed\xb4\x9e*", FALSE }, + { UTF_16_BE, 3, "\0*" "\xDB\xFF" "\0*\0\0", \
"*\xed\xaf\xbf*", FALSE }, + { UTF_16_BE, 1, "\xDD\x1E" "\0\0", "\xed\xb4\x9e", \
FALSE }, + { UTF_16_BE, 1, "\xDB\xFF" "\0\0", "\xed\xaf\xbf", FALSE },
+
+ /* Counted strings with NUL characters */
+ { UTF_16_LE, 3, "x\0" "\0\0" "y\0" "*\0", "x\0y", TRUE },
+ { UTF_32_BE, 3, "\0\0\0x" "\0\0\0\0" "\0\0\0y" "\0\0\0*", "x\0y", TRUE },
#undef UTF_32_LE
#undef UTF_32_BE
@@ -799,33 +805,46 @@ test_utf_conversions(apr_pool_t *pool)
const struct cvt_test_t *tc;
const svn_string_t *result;
- int i;
+ apr_size_t maxlen = 0;
- for (i = 1, tc = tests; tc->source; ++tc, ++i)
+ /* To assure proper alignment of the source string, it needs to be copied
+ into an array of the appropriate type before calling
+ svn_utf__utf{16,32}_to_utf8. */
+ apr_uint16_t *source16;
+ apr_int32_t *source32;
+
+ for (tc = tests; tc->source; ++tc)
+ if (tc->sourcelen > maxlen)
+ maxlen = tc->sourcelen;
+ maxlen++;
+
+ source16 = apr_pcalloc(pool, maxlen * sizeof(*source16));
+ source32 = apr_pcalloc(pool, maxlen * sizeof(*source32));
+
+ for (tc = tests; tc->source; ++tc)
{
if (tc->sixteenbit)
- SVN_ERR(svn_utf__utf16_to_utf8(&result, (const void*)tc->source,
- SVN_UTF__UNKNOWN_LENGTH,
- tc->bigendian, pool, pool));
+ {
+ memset(source16, 0, maxlen * sizeof(*source16));
+ memcpy(source16, tc->source, (tc->sourcelen + 1) * sizeof(*source16));
+ SVN_ERR(svn_utf__utf16_to_utf8(&result, source16,
+ tc->counted ? tc->sourcelen : \
SVN_UTF__UNKNOWN_LENGTH, + tc->bigendian, \
pool, pool)); + }
else
- SVN_ERR(svn_utf__utf32_to_utf8(&result, (const void*)tc->source,
- SVN_UTF__UNKNOWN_LENGTH,
- tc->bigendian, pool, pool));
- SVN_ERR_ASSERT(0 == strcmp(result->data, tc->result));
+ {
+ memset(source32, 0, maxlen * sizeof(*source32));
+ memcpy(source32, tc->source, (tc->sourcelen + 1) * sizeof(*source32));
+ SVN_ERR(svn_utf__utf32_to_utf8(&result, source32,
+ tc->counted ? tc->sourcelen : \
SVN_UTF__UNKNOWN_LENGTH, + tc->bigendian, \
pool, pool)); + }
+ if (tc->counted)
+ SVN_ERR_ASSERT(0 == memcmp(result->data, tc->result, tc->sourcelen));
+ else
+ SVN_ERR_ASSERT(0 == strcmp(result->data, tc->result));
}
- /* Test counted strings with NUL characters */
- SVN_ERR(svn_utf__utf16_to_utf8(
- &result, (void*)("x\0" "\0\0" "y\0" "*\0"), 3,
- FALSE, pool, pool));
- SVN_ERR_ASSERT(0 == memcmp(result->data, "x\0y", 3));
-
- SVN_ERR(svn_utf__utf32_to_utf8(
- &result,
- (void*)("\0\0\0x" "\0\0\0\0" "\0\0\0y" "\0\0\0*"), 3,
- TRUE, pool, pool));
- SVN_ERR_ASSERT(0 == memcmp(result->data, "x\0y", 3));
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_subr/x509-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_subr/x509-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_subr/x509-test.c (original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_subr/x509-test.c Wed Nov 28 \
21:25:32 2018 @@ -592,6 +592,32 @@ static struct x509_test cert_tests[] = {
"good.example.com",
"9693f17e59205f41ca2e14450d151b945651b2d7"
},
+ /* Signed using RSASSA-PSS algorithm with algorithm parameters */
+ {
+ "MIICsjCCAWkCCQDHslXYA8hCxTA+BgkqhkiG9w0BAQowMaANMAsGCWCGSAFlAwQC"
+ "AaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiBAICAN4wKjEUMBIGA1UECgwL"
+ "TXkgTG9jYWwgQ0ExEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xODAyMDIxNjQ4MzVa"
+ "Fw0xODAyMDMxNjQ4MzVaMC4xGDAWBgNVBAoMD015IExvY2FsIFNlcnZlcjESMBAG"
+ "A1UEAwwJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCues61"
+ "JXXpLQI5yeg4aCLWRfvnJY7wnuU6FSA++3wwCJREx1/7ebnP9RRRqqKM+ZeeFMC+"
+ "UlJE3ft2tJTDOVk9j6qjvKrJUKM1YkIe0lARxs4RtZKDGfOdBhw/+iD+6fZzhL0n"
+ "+w+dIJGzl6ADWsE/x9yjDTkdgbtxHrx/76K0KQIDAQABMD4GCSqGSIb3DQEBCjAx"
+ "oA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIEAgIA"
+ "3gOCAQEABYRAijCSGyFdSuUYALUnNzPylqYXlW+dMKPywlUrFEhKnvS+FD9twerI"
+ "8kT4MDW6XvhScmL1MCDPNAkFY92UqaUrgT80oyrbpuakVrxFSS1i28xy8+kXAWYq"
+ "RNQVaME1NqnATYF0ZMD5xQK4rpa76gvWj3K8Lt++9EjjbkNiirIIMQEOxh1lwnDQ"
+ "81q1Rk6iujlnVDGHDQ+w8reE6fKfSWfv1EaQRcjNKCuzrW8WNN387G2byvwaaKeL"
+ "M7lV7wiV6PwrTNTZzVG3cWKDOEP1mGE7gyMu66siLECo8U95+ahK7O6vfeT3m3gv"
+ "7kzWNYozAQtBSC7b0WqWbVrzWI4HSg==",
+ "O=My Local Server, CN=localhost",
+ "2.5.4.10 2.5.4.3",
+ "O=My Local CA, CN=localhost",
+ "2.5.4.10 2.5.4.3",
+ "2018-02-02T16:48:35.000000Z ",
+ "2018-02-03T16:48:35.000000Z ",
+ "localhost",
+ "25ab5a059acfc793fc0d3734d426794a4ca7b631"
+ },
{ NULL }
};
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_wc/conflict-data-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_wc/conflict-data-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_wc/conflict-data-test.c \
(original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_wc/conflict-data-test.c Wed \
Nov 28 21:25:32 2018 @@ -594,6 +594,7 @@ test_serialize_tree_conflict(const svn_t
svn_wc_conflict_reason_moved_away,
svn_wc_conflict_action_delete,
sbox_wc_path(&sbox, "A/B"),
+ sbox_wc_path(&sbox, "A/C"),
pool, pool));
SVN_ERR(svn_wc__conflict_skel_set_op_switch(
@@ -610,11 +611,13 @@ test_serialize_tree_conflict(const svn_t
{
svn_wc_conflict_reason_t reason;
svn_wc_conflict_action_t action;
- const char *moved_away_op_root_abspath;
+ const char *moved_away_src_op_root_abspath;
+ const char *moved_away_dst_op_root_abspath;
SVN_ERR(svn_wc__conflict_read_tree_conflict(&reason,
&action,
- &moved_away_op_root_abspath,
+ &moved_away_src_op_root_abspath,
+ &moved_away_dst_op_root_abspath,
sbox.wc_ctx->db,
sbox.wc_abspath,
conflict_skel,
@@ -622,8 +625,10 @@ test_serialize_tree_conflict(const svn_t
SVN_TEST_ASSERT(reason == svn_wc_conflict_reason_moved_away);
SVN_TEST_ASSERT(action == svn_wc_conflict_action_delete);
- SVN_TEST_STRING_ASSERT(moved_away_op_root_abspath,
+ SVN_TEST_STRING_ASSERT(moved_away_src_op_root_abspath,
sbox_wc_path(&sbox, "A/B"));
+ SVN_TEST_STRING_ASSERT(moved_away_dst_op_root_abspath,
+ sbox_wc_path(&sbox, "A/C"));
}
return SVN_NO_ERROR;
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_wc/op-depth-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_wc/op-depth-test.c \
(original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_wc/op-depth-test.c Wed Nov \
28 21:25:32 2018 @@ -535,7 +535,7 @@ check_db_conflicts(svn_test__sandbox_t *
SVN_ERR(svn_wc__conflict_read_tree_conflict(&info->tc.reason,
&info->tc.action,
&move_src_abspath,
- b->wc_ctx->db,
+ NULL, b->wc_ctx->db,
local_abspath,
conflict,
b->pool, iterpool));
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_wc/utils.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_wc/utils.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_wc/utils.c (original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_wc/utils.c Wed Nov 28 \
21:25:32 2018 @@ -417,11 +417,12 @@ sbox_wc_revert(svn_test__sandbox_t *b, c
SVN_ERR(svn_wc__acquire_write_lock(&lock_root_abspath, b->wc_ctx,
dir_abspath, FALSE /* lock_anchor */,
b->pool, b->pool));
- SVN_ERR(svn_wc_revert5(b->wc_ctx, abspath, depth,
+ SVN_ERR(svn_wc_revert6(b->wc_ctx, abspath, depth,
FALSE /* use_commit_times */,
NULL /* changelist_filter */,
FALSE /* clear_changelists */,
FALSE /* metadata_only */,
+ TRUE /*added_keep_local*/,
NULL, NULL, /* cancel baton + func */
NULL, NULL, /* notify baton + func */
b->pool));
Modified: subversion/branches/swig-py3/subversion/tests/libsvn_wc/wc-queries-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/libsvn_wc/wc-queries-test.c \
(original)
+++ subversion/branches/swig-py3/subversion/tests/libsvn_wc/wc-queries-test.c Wed Nov \
28 21:25:32 2018 @@ -99,6 +99,7 @@ static const int slow_statements[] =
STMT_SELECT_DELETE_LIST,
STMT_SELECT_UPDATE_MOVE_LIST,
STMT_FIND_REPOS_PATH_IN_WC,
+ STMT_SELECT_PRESENT_HIGHEST_WORKING_NODES_BY_BASENAME_AND_KIND,
/* Designed as slow to avoid penalty on other queries */
STMT_SELECT_UNREFERENCED_PRISTINES,
Modified: subversion/branches/swig-py3/subversion/tests/svn_test_main.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/tests/svn_test_main.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/tests/svn_test_main.c (original)
+++ subversion/branches/swig-py3/subversion/tests/svn_test_main.c Wed Nov 28 21:25:32 \
2018 @@ -903,9 +903,12 @@ svn_test_main(int argc, const char *argv
apr_err = apr_getopt_long(os, cl_options, &opt_id, &opt_arg);
if (APR_STATUS_IS_EOF(apr_err))
break;
- else if (apr_err && (apr_err != APR_BADCH))
+ else if (apr_err)
{
/* Ignore invalid option error to allow passing arbitrary options */
+ if (apr_err == APR_BADCH)
+ continue;
+
fprintf(stderr, "apr_getopt_long failed : [%d] %s\n",
apr_err, apr_strerror(apr_err, errmsg, sizeof(errmsg)));
exit(1);
Modified: subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svnbuild.sh?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svnbuild.sh \
(original)
+++ subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svnbuild.sh Wed Nov \
28 21:25:32 2018 @@ -25,4 +25,5 @@ set -x
url="$(svn info --show-item url)"
branch="${url##*/}"
(test -h ../GNUmakefile || ln -s ../unix-build/Makefile.svn ../GNUmakefile)
+touch ../objdir/svn-${branch}/.retrieved
(cd .. && gmake BRANCH="$branch" THREADING="no" JAVA="no" MAKE_JOBS=8)
Modified: subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/setenv.sh
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/setenv.sh?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/setenv.sh \
(original)
+++ subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/setenv.sh Wed \
Nov 28 21:25:32 2018 @@ -24,8 +24,9 @@
## SVNBB_SERF Serf installation prefix
## Note: Serf should be built only
## with the system APR/-Util.
+## SVNBB_APR Path of the default APR
+## SVNBB_APRUTIL Path of the default APR-Util
## SVNBB_APR_13_NOTHREAD Path of APR-1.3 with threading disabled
-## SVNBB_APR_15 Path of APR-1.5
## SVNBB_APR_20_DEV Path of APR-2.0
## SVNBB_JUNIT The path of the junit.jar
## SVNBB_PARALLEL Optional: parallelization; defaults to 2
@@ -45,7 +46,8 @@ export SVNBB_BDB
export SVNBB_SWIG
export SVNBB_SERF
export SVNBB_APR_13_NOTHREAD
-export SVNBB_APR_15
+export SVNBB_APR
+export SVNBB_APRUTIL
export SVNBB_APR_20_DEV
export SVNBB_JUNIT
export SVNBB_PARALLEL
Modified: subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild-bindings.sh
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild-bindings.sh?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild-bindings.sh \
(original)
+++ subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild-bindings.sh \
Wed Nov 28 21:25:32 2018 @@ -25,21 +25,16 @@ scripts=$(cd $(dirname "$0") && pwd)
. ${scripts}/setenv.sh
#
-# Step 4: build swig-py
+# Step 4: build bindings
#
-echo "============ make swig-py"
-cd ${absbld}
-make swig-py
+build_bindings() {
+ echo "============ make $1"
+ cd ${absbld}
+ make $1
+}
-echo "============ make swig-pl"
-cd ${absbld}
-make swig-pl
-
-echo "============ make swig-rb"
-cd ${absbld}
-make swig-rb
-
-echo "============ make javahl"
-cd ${absbld}
-make javahl
+build_bindings swig-py
+build_bindings swig-pl
+build_bindings swig-rb
+build_bindings javahl
Modified: subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh \
(original)
+++ subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh Wed \
Nov 28 21:25:32 2018 @@ -27,17 +27,33 @@ scripts=$(cd $(dirname "$0") && pwd)
${scripts}/mkramdisk.sh ${volume_name} ${ramconf}
# These are the default APR and Serf config options
-serfconfig="--with-serf=${SVNBB_SERF} --with-apxs=/usr/sbin/apxs"
+serfconfig=" --with-serf=${SVNBB_SERF} --with-apxs=/usr/local/opt/httpd/bin/apxs"
# An optional parameter tells build scripts which version of APR to use
if [ ! -z "$1" ]; then
aprdir=$(eval 'echo $SVNBB_'"$1")
+else
+ aprconfig="--with-apr=${SVNBB_APR} --with-apr-util=${SVNBB_APRUTIL}"
fi
if [ ! -z "${aprdir}" -a -d "${aprdir}" ]; then
aprconfig="--with-apr=${aprdir} --with-apr-util=${aprdir}"
serfconfig=" --without-serf --without-apxs"
fi
+# An optional parameter tells us if this is a warnings-only build.
+# We run the warnings build with a number of additional options.
+if [ "$2" = "warnings" ]; then
+ parallel=1
+ maintainer_mode=' -q --enable-maintainer-mode'
+ config_cflags="-Wno-deprecated-declarations"
+ config_cflags="${config_cflags} -DPACK_AFTER_EVERY_COMMIT"
+ config_cflags="${config_cflags} -DSVN_UNALIGNED_ACCESS_IS_OK=0"
+ config_cflags="${config_cflags} -DSUFFIX_LINES_TO_KEEP=0"
+ config_cflags="${config_cflags} -DSVN_DEPRECATED="
+else
+ parallel=${SVNBB_PARALLEL}
+fi
+
#
# Step 0: Create a directory for the test log files
#
@@ -82,8 +98,10 @@ fi
echo "============ configure"
cd ${absbld}
-env CC=clang CXX=clang++ \
-${abssrc}/configure \
+env CC=clang CFLAGS="${config_cflags}" \
+ CXX=clang++ CXXFLAGS="${config_cxxflags}" \
+ LDFLAGS='-Wl,-w' \
+${abssrc}/configure${maintainer_mode} \
--prefix="${absbld}/.install-prefix" \
--enable-debug${optimizeconfig} \
--disable-nls \
@@ -91,6 +109,7 @@ ${abssrc}/configure \
${aprconfig}${serfconfig} \
--with-swig="${SVNBB_SWIG}" \
--with-berkeley-db=db.h:"${SVNBB_BDB}/include":${SVNBB_BDB}/lib:db \
+ --enable-bdb6 \
--enable-javahl \
--without-jikes \
${lz4config} \
@@ -105,4 +124,4 @@ test -f config.log && mv config.log "${a
echo "============ make"
cd ${absbld}
-make -j${SVNBB_PARALLEL}
+make -j${parallel}
Modified: subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck-bindings.sh
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck-bindings.sh?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck-bindings.sh \
(original)
+++ subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck-bindings.sh \
Wed Nov 28 21:25:32 2018 @@ -24,6 +24,8 @@ run_tests() {
echo "============ make check-${check}"
cd ${absbld}
+ make -s install
+ make -s install-${check}
make check-${check} ${cleanup} || exit 1
}
Modified: subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh \
(original)
+++ subversion/branches/swig-py3/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh Wed \
Nov 28 21:25:32 2018 @@ -24,15 +24,22 @@ run_tests() {
ok=true
case "${ra}" in
- local) check=check; skipC=;;
- svn) check=svnserveautocheck; skipC="SKIP_C_TESTS=1";;
- dav) check=davautocheck; skipC="SKIP_C_TESTS=1";;
+ local) check=check; more=;;
+ svn) check=svnserveautocheck; more="SKIP_C_TESTS=1";;
+ dav) check=davautocheck; more="SKIP_C_TESTS=1";
+ if [ "${fs}" == "bdb" ]; then
+ more="${more} APACHE_MPM=prefork"
+ else
+ more="${more} APACHE_MPM=event"
+ fi;;
*) exit 1;;
esac
+ ${allow_remote} && more="${more} ALLOW_REMOTE_HTTP_CONNECTION=1"
+
echo "============ make check ${ra}+${fs}"
cd ${absbld}
- make ${check} FS_TYPE=${fs} PARALLEL=${SVNBB_PARALLEL} CLEANUP=1 ${skipC} || \
ok=false + make ${check} FS_TYPE=${fs} PARALLEL=${SVNBB_PARALLEL} CLEANUP=1 \
${more} || ok=false
# Move any log files to the buildbot work directory
test -f tests.log && mv tests.log "${abssrc}/.test-logs/tests-${ra}-${fs}.log"
@@ -72,6 +79,7 @@ check_fsfs_v6=false
check_fsfs_v4=false
check_fsx=false
check_bdb=false
+allow_remote=false
while [ ! -z "$1" ]; do
case "$1" in
@@ -84,6 +92,7 @@ while [ ! -z "$1" ]; do
fsfs-v4) check_fsfs_v4=true;;
fsx) check_fsx=true;;
bdb) check_bdb=true;;
+ remote) allow_remote=true;;
*) exit 1;;
esac
shift
Modified: subversion/branches/swig-py3/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/bash_completion?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/bash_completion (original)
+++ subversion/branches/swig-py3/tools/client-side/bash_completion Wed Nov 28 \
21:25:32 2018 @@ -248,8 +248,8 @@ _svn()
cmds="$cmds patch propdel pdel propedit pedit propget pget proplist"
cmds="$cmds plist propset pset relocate resolve resolved revert status"
cmds="$cmds switch unlock update upgrade"
- cmds="$cmds shelf-diff shelf-drop shelf-list shelf-log shelf-save"
- cmds="$cmds shelve shelves unshelve"
+ cmds="$cmds x-shelf-diff x-shelf-drop x-shelf-list x-shelf-list-by-paths"
+ cmds="$cmds x-shelf-log x-shelf-save x-shelve x-shelves x-unshelve"
# help options have a strange command status...
local helpOpts='--help -h'
@@ -1024,32 +1024,35 @@ _svn()
upgrade)
cmdOpts="$qOpts $pOpts"
;;
- shelf-diff)
+ x-shelf-list-by-paths)
cmdOpts="$pOpts"
;;
- shelf-drop)
+ x-shelf-diff)
+ cmdOpts="$pOpts --summarize"
+ ;;
+ x-shelf-drop)
cmdOpts="$pOpts"
;;
- shelf-list|shelves)
+ x-shelf-list|x-shelves)
cmdOpts="$qOpts $pOpts"
;;
- shelf-log)
+ x-shelf-log)
cmdOpts="$qOpts $pOpts"
;;
- shelf-save)
+ x-shelf-save)
cmdOpts="--dry-run \
--depth --targets $cOpts \
$mOpts \
$qOpts $pOpts"
;;
- shelve)
+ x-shelve)
cmdOpts="--keep-local --dry-run \
--depth --targets $cOpts \
$mOpts \
$qOpts $pOpts"
;;
- unshelve)
- cmdOpts="--dry-run \
+ x-unshelve)
+ cmdOpts="--drop --dry-run \
$qOpts $pOpts"
;;
*)
Modified: subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c \
(original)
+++ subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c \
Wed Nov 28 21:25:32 2018 @@ -163,7 +163,7 @@ svn_min__help(apr_getopt_t *os,
pool)),
pool);
#endif
-#ifdef SVN_HAVE_GNOME_KEYRING
+#if (defined(SVN_HAVE_GNOME_KEYRING) || defined(SVN_HAVE_LIBSECRET))
svn_stringbuf_appendcstr(version_footer, "* Gnome Keyring\n");
#endif
#ifdef SVN_HAVE_GPG_AGENT
@@ -176,7 +176,7 @@ svn_min__help(apr_getopt_t *os,
svn_stringbuf_appendcstr(version_footer, "* KWallet (KDE)\n");
#endif
- return svn_opt_print_help4(os,
+ return svn_opt_print_help5(os,
"svn-mergeinfo-normalizer",
opt_state ? opt_state->version : FALSE,
opt_state ? opt_state->quiet : FALSE,
Modified: subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/svn-m \
ergeinfo-normalizer/mergeinfo-normalizer.h?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h \
(original)
+++ subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h \
Wed Nov 28 21:25:32 2018 @@ -117,7 +117,7 @@ svn_opt_subcommand_t
svn_min__remove_branches;
/* See definition in svn.c for documentation. */
-extern const svn_opt_subcommand_desc2_t svn_min__cmd_table[];
+extern const svn_opt_subcommand_desc3_t svn_min__cmd_table[];
/* See definition in svn.c for documentation. */
extern const int svn_min__global_options[];
Modified: subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/svn-m \
ergeinfo-normalizer/svn-mergeinfo-normalizer.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c \
(original)
+++ subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c \
Wed Nov 28 21:25:32 2018 @@ -221,43 +221,44 @@ const int svn_min__global_options[] =
opt_config_dir, opt_config_options, 0
};
-const svn_opt_subcommand_desc2_t svn_min__cmd_table[] =
+const svn_opt_subcommand_desc3_t svn_min__cmd_table[] =
{
- { "help", svn_min__help, {"?", "h"}, N_
- ("Describe the usage of this program or its subcommands.\n"
- "usage: help [SUBCOMMAND...]\n"),
+ { "help", svn_min__help, {"?", "h"}, {N_(
+ "Describe the usage of this program or its subcommands.\n"
+ "usage: help [SUBCOMMAND...]\n"
+ )},
{0} },
/* This command is also invoked if we see option "--help", "-h" or "-?". */
- { "analyze", svn_min__analyze, { "analyse" }, N_
- ("Generate a report of which part of the sub-tree mergeinfo can be\n"
+ { "analyze", svn_min__analyze, { "analyse" }, {N_(
+ "Generate a report of which part of the sub-tree mergeinfo can be\n"
"removed and which part can't.\n"
"usage: analyze [WCPATH...]\n"
- "\n"
+ "\n"), N_(
" If neither --remove-obsoletes, --remove-redundant nor --combine-ranges\n"
" option is given, all three will be used implicitly.\n"
- "\n"
+ "\n"), N_(
" In verbose mode, the command will behave just like 'normalize --dry-run'\n"
" but will show an additional summary of all deleted branches that were\n"
" encountered plus the revision of their latest deletion (if available).\n"
- "\n"
+ "\n"), N_(
" In non-verbose mode, the per-node output does not give the parent path,\n"
" no successful elisions and branch removals nor the list of remaining\n"
" branches.\n"
- ),
+ )},
{opt_targets, opt_depth, 'v',
opt_remove_obsoletes, opt_remove_redundant,
opt_remove_redundant_misaligned, opt_combine_ranges} },
- { "normalize", svn_min__normalize, { 0 }, N_
- ("Normalize / reduce the mergeinfo throughout the working copy sub-tree.\n"
+ { "normalize", svn_min__normalize, { 0 }, {N_(
+ "Normalize / reduce the mergeinfo throughout the working copy sub-tree.\n"
"usage: normalize [WCPATH...]\n"
- "\n"
+ "\n"), N_(
" If neither --remove-obsoletes, --remove-redundant, --combine-ranges\n"
" nor --remove-redundant-misaligned option is given, --remove-redundant\n"
" will be used implicitly.\n"
- "\n"
+ "\n"), N_(
" In non-verbose mode, only general progress as well as a summary before\n"
" and after the normalization process will be shown. Note that sub-node\n"
" mergeinfo which could be removed entirely does not contribute to the\n"
@@ -265,12 +266,12 @@ const svn_opt_subcommand_desc2_t svn_min
" ranges combined only refers to the mergeinfo lines still present after\n"
" the normalization process. To get total numbers, compare the initial\n"
" with the final mergeinfo statistics.\n"
- "\n"
+ "\n"), N_(
" The detailed operation log in verbose mode replaces the progress display.\n"
" For each node with mergeinfo, the nearest parent node with mergeinfo is\n"
" given - if there is one and the result of trying to remove the mergeinfo\n"
" is shown for each branch. The various outputs are:\n"
- "\n"
+ "\n"), N_(
" elide redundant branch - Revision ranges are the same as in the parent.\n"
" Mergeinfo for this branch can be elided.\n"
" elide branch - Not an exact match with the parent but the\n"
@@ -324,32 +325,34 @@ const svn_opt_subcommand_desc2_t svn_min
" The sub-tree mergeinfo cannot be elided.\n"
" REVERSE RANGE(S) found - The mergeinfo contains illegal reverse ranges.\n"
" The sub-tree mergeinfo cannot be elided.\n"
- "\n"
+ "\n"), N_(
" If all branches have been removed from a nodes' mergeinfo, the whole\n"
" svn:mergeinfo property will be removed. Otherwise, only obsolete\n"
" branches will be removed. In verbose mode, a list of branches that\n"
- " could not be removed will be shown per node.\n"),
+ " could not be removed will be shown per node.\n"
+ )},
{opt_targets, opt_depth, opt_dry_run, 'q', 'v',
opt_remove_obsoletes, opt_remove_redundant,
opt_remove_redundant_misaligned, opt_combine_ranges} },
- { "remove-branches", svn_min__remove_branches, { 0 }, N_
- ("Read a list of branch names from the given file and remove all\n"
+ { "remove-branches", svn_min__remove_branches, { 0 }, {N_(
+ "Read a list of branch names from the given file and remove all\n"
"mergeinfo referring to these branches from the given targets.\n"
"usage: remove-branches [WCPATH...] --file FILE\n"
- "\n"
+ "\n"), N_(
" The command will behave just like 'normalize --remove-obsoletes' but\n"
" will never actually contact the repository. Instead, it assumes any\n"
" path given in FILE is a deleted branch.\n"
- "\n"
+ "\n"), N_(
" Compared to a simple 'normalize --remove-obsoletes' run, this command\n"
" allows for selective removal of obsolete branches. It may therefore be\n"
" better suited for large deployments with complex branch structures.\n"
" You may also use this to remove mergeinfo that refers to still existing\n"
- " branches.\n"),
+ " branches.\n"
+ )},
{opt_targets, opt_depth, opt_dry_run, 'q', 'v', 'F'} },
- { NULL, NULL, {0}, NULL, {0} }
+ { NULL, NULL, {0}, {NULL}, {0} }
};
@@ -414,7 +417,7 @@ sub_main(int *exit_code, int argc, const
svn_client_ctx_t *ctx;
apr_array_header_t *received_opts;
int i;
- const svn_opt_subcommand_desc2_t *subcommand = NULL;
+ const svn_opt_subcommand_desc3_t *subcommand = NULL;
svn_min__cmd_baton_t command_baton = { 0 };
svn_auth_baton_t *ab;
svn_config_t *cfg_config;
@@ -639,7 +642,7 @@ sub_main(int *exit_code, int argc, const
just typos/mistakes. Whatever the case, the subcommand to
actually run is svn_cl__help(). */
if (opt_state.help)
- subcommand = svn_opt_get_canonical_subcommand2(svn_min__cmd_table, "help");
+ subcommand = svn_opt_get_canonical_subcommand3(svn_min__cmd_table, "help");
/* If we're not running the `help' subcommand, then look for a
subcommand in the first argument. */
@@ -650,8 +653,8 @@ sub_main(int *exit_code, int argc, const
if (opt_state.version)
{
/* Use the "help" subcommand to handle the "--version" option. */
- static const svn_opt_subcommand_desc2_t pseudo_cmd =
- { "--version", svn_min__help, {0}, "",
+ static const svn_opt_subcommand_desc3_t pseudo_cmd =
+ { "--version", svn_min__help, {0}, {""},
{opt_version, /* must accept its own option */
'q', /* brief output */
'v', /* verbose output */
@@ -676,7 +679,7 @@ sub_main(int *exit_code, int argc, const
SVN_ERR(svn_utf_cstring_to_utf8(&first_arg, os->argv[os->ind++],
pool));
- subcommand = svn_opt_get_canonical_subcommand2(svn_min__cmd_table,
+ subcommand = svn_opt_get_canonical_subcommand3(svn_min__cmd_table,
first_arg);
if (subcommand == NULL)
{
@@ -704,12 +707,12 @@ sub_main(int *exit_code, int argc, const
if (opt_id == 'h' || opt_id == '?')
continue;
- if (! svn_opt_subcommand_takes_option3(subcommand, opt_id,
+ if (! svn_opt_subcommand_takes_option4(subcommand, opt_id,
svn_min__global_options))
{
const char *optstr;
const apr_getopt_option_t *badopt =
- svn_opt_get_option_from_code2(opt_id, svn_min__options,
+ svn_opt_get_option_from_code3(opt_id, svn_min__options,
subcommand, pool);
svn_opt_format_option(&optstr, badopt, FALSE, pool);
if (subcommand->name[0] == '-')
Modified: subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c \
(original)
+++ subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c \
Wed Nov 28 21:25:32 2018 @@ -112,8 +112,8 @@ static int
compare_mergeinfo(const void *lhs,
const void *rhs)
{
- const mergeinfo_t *lhs_mi = *(const mergeinfo_t **)lhs;
- const mergeinfo_t *rhs_mi = *(const mergeinfo_t **)rhs;
+ const mergeinfo_t *lhs_mi = *(const mergeinfo_t *const *)lhs;
+ const mergeinfo_t *rhs_mi = *(const mergeinfo_t *const *)rhs;
return strcmp(lhs_mi->local_path, rhs_mi->local_path);
}
Modified: subversion/branches/swig-py3/tools/client-side/svn-viewspec.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/svn-viewspec.py?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/svn-viewspec.py (original)
+++ subversion/branches/swig-py3/tools/client-side/svn-viewspec.py Wed Nov 28 \
21:25:32 2018 @@ -121,6 +121,8 @@ DEPTH_FILES = 'files'
DEPTH_IMMEDIATES = 'immediates'
DEPTH_INFINITY = 'infinity'
+os_system = None
+args = None
class TreeNode:
"""A representation of a single node in a Subversion sparse
@@ -159,8 +161,8 @@ def svn_path_compare_paths(path1, path2)
NOTE: Stolen unapologetically from Subversion's Python bindings
module svn.core."""
- path1_len = len(path1);
- path2_len = len(path2);
+ path1_len = len(path1)
+ path2_len = len(path2)
min_len = min(path1_len, path2_len)
i = 0
@@ -280,10 +282,10 @@ def checkout_tree(base_url, revision, tr
if revision != -1:
revision_str = "--revision=%d " % (revision)
if is_top:
- os.system('svn checkout "%s" "%s" --depth=%s %s'
+ os_system('svn checkout "%s" "%s" --depth=%s %s'
% (base_url, target_dir, depth, revision_str))
else:
- os.system('svn update "%s" --set-depth=%s %s'
+ os_system('svn update "%s" --set-depth=%s %s'
% (target_dir, depth, revision_str))
child_names = tree_node.children.keys()
child_names.sort(svn_path_compare_paths)
@@ -304,27 +306,34 @@ def checkout_spec(viewspec, target_dir):
def usage_and_exit(errmsg=None):
stream = errmsg and sys.stderr or sys.stdout
- msg = __doc__.replace("__SCRIPTNAME__", os.path.basename(sys.argv[0]))
+ msg = __doc__.replace("__SCRIPTNAME__", os.path.basename(args[0]))
stream.write(msg)
if errmsg:
stream.write("ERROR: %s\n" % (errmsg))
- sys.exit(errmsg and 1 or 0)
+ return 1
+ return 0
+
+def main(os_sys, args_in):
+ global os_system
+ global args
+ os_system = os_sys
+ args = args_in
-def main():
- argc = len(sys.argv)
+ argc = len(args)
if argc < 2:
- usage_and_exit('Not enough arguments.')
- subcommand = sys.argv[1]
+ return usage_and_exit('Not enough arguments.')
+ subcommand = args[1]
if subcommand == 'help':
- usage_and_exit()
+ return usage_and_exit()
elif subcommand == 'help-format':
msg = FORMAT_HELP.replace("__SCRIPTNAME__",
- os.path.basename(sys.argv[0]))
+ os.path.basename(args[0]))
sys.stdout.write(msg)
+ return 1
elif subcommand == 'examine':
if argc < 3:
- usage_and_exit('No viewspec file specified.')
- fp = (sys.argv[2] == '-') and sys.stdin or open(sys.argv[2], 'r')
+ return usage_and_exit('No viewspec file specified.')
+ fp = (args[2] == '-') and sys.stdin or open(args[2], 'r')
viewspec = parse_viewspec(fp)
sys.stdout.write("Url: %s\n" % (viewspec.base_url))
revision = viewspec.revision
@@ -336,13 +345,14 @@ def main():
viewspec.tree.dump(True)
elif subcommand == 'checkout':
if argc < 3:
- usage_and_exit('No viewspec file specified.')
+ return usage_and_exit('No viewspec file specified.')
if argc < 4:
- usage_and_exit('No target directory specified.')
- fp = (sys.argv[2] == '-') and sys.stdin or open(sys.argv[2], 'r')
- checkout_spec(parse_viewspec(fp), sys.argv[3])
+ return usage_and_exit('No target directory specified.')
+ fp = (args[2] == '-') and sys.stdin or open(args[2], 'r')
+ checkout_spec(parse_viewspec(fp), args[3])
else:
- usage_and_exit('Unknown subcommand "%s".' % (subcommand))
+ return usage_and_exit('Unknown subcommand "%s".' % (subcommand))
if __name__ == "__main__":
- main()
+ if main(os.system, sys.argv):
+ sys.exit(1)
Modified: subversion/branches/swig-py3/tools/client-side/svnconflict/svnconflict.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/client-side/svnconflict/svnconflict.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/client-side/svnconflict/svnconflict.c \
(original)
+++ subversion/branches/swig-py3/tools/client-side/svnconflict/svnconflict.c Wed Nov \
28 21:25:32 2018 @@ -148,18 +148,19 @@ static const int svnconflict_global_opti
{ opt_auth_username, opt_auth_password, opt_auth_password_from_stdin,
opt_config_dir, opt_config_options, 0 };
-static const svn_opt_subcommand_desc2_t svnconflict_cmd_table[] =
+static const svn_opt_subcommand_desc3_t svnconflict_cmd_table[] =
{
/* This command is also invoked if we see option "--help", "-h" or "-?". */
- { "help", svnconflict_help, {"?", "h"}, N_
- ("Describe the usage of this program or its subcommands.\n"
- "usage: help [SUBCOMMAND...]\n"),
+ { "help", svnconflict_help, {"?", "h"}, {N_(
+ "Describe the usage of this program or its subcommands.\n"
+ "usage: help [SUBCOMMAND...]\n"
+ )},
{0} },
- { "list", svnconflict_list, {"ls"}, N_
- ("List conflicts at a conflicted path.\n"
+ { "list", svnconflict_list, {"ls"}, {N_(
+ "List conflicts at a conflicted path.\n"
"usage: list PATH\n"
- "\n"
+ "\n"), N_(
" List conflicts at PATH, one per line. Possible conflicts are:\n"
" \n"
" text-conflict\n"
@@ -176,67 +177,67 @@ static const svn_opt_subcommand_desc2_t
" If a tree conflict exists, no text or property conflicts exist.\n"
" \n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { "options-text", svnconflict_options_text, {0}, N_
- ("List options for resolving a text conflict at path.\n"
+ { "options-text", svnconflict_options_text, {0}, {N_(
+ "List options for resolving a text conflict at path.\n"
"usage: options-text PATH\n"
- "\n"
+ "\n"), N_(
" List text conflict resolution options at PATH, one per line.\n"
" Each line contains a numeric option ID, a colon, and a description.\n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { "options-prop", svnconflict_options_prop, {0}, N_
- ("List options for resolving a property conflict at path.\n"
+ { "options-prop", svnconflict_options_prop, {0}, {N_(
+ "List options for resolving a property conflict at path.\n"
"usage: options-prop PATH\n"
- "\n"
+ "\n"), N_(
" List property conflict resolution options at PATH, one per line.\n"
" Each line contains a numeric option ID, a colon, and a description.\n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { "options-tree", svnconflict_options_tree, {0}, N_
- ("List options for resolving a tree conflict at path.\n"
+ { "options-tree", svnconflict_options_tree, {0}, {N_(
+ "List options for resolving a tree conflict at path.\n"
"usage: options-tree PATH\n"
- "\n"
+ "\n"), N_(
" List tree conflict resolution options at PATH, one per line.\n"
" Each line contains a numeric option ID, a colon, and a description.\n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { "resolve-text", svnconflict_resolve_text, {0}, N_
- ("Resolve the text conflict at path.\n"
+ { "resolve-text", svnconflict_resolve_text, {0}, {N_(
+ "Resolve the text conflict at path.\n"
"usage: resolve-text OPTION_ID PATH\n"
- "\n"
+ "\n"), N_(
" Resolve the text conflict at PATH with a given resolution option.\n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { "resolve-prop", svnconflict_resolve_prop, {0}, N_
- ("Resolve the property conflict at path.\n"
+ { "resolve-prop", svnconflict_resolve_prop, {0}, {N_(
+ "Resolve the property conflict at path.\n"
"usage: resolve-prop PROPNAME OPTION_ID PATH\n"
- "\n"
+ "\n"), N_(
" Resolve conflicted property PROPNAME at PATH with a given resolution \
option.\n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { "resolve-tree", svnconflict_resolve_tree, {0}, N_
- ("Resolve the tree conflict at path.\n"
+ { "resolve-tree", svnconflict_resolve_tree, {0}, {N_(
+ "Resolve the tree conflict at path.\n"
"usage: resolve-tree OPTION_ID PATH\n"
- "\n"
+ "\n"), N_(
" Resolve the tree conflict at PATH with a given resolution option.\n"
" If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
- ""),
+ )},
{0}, },
- { NULL, NULL, {0}, NULL, {0} }
+ { NULL, NULL, {0}, {NULL}, {0} }
};
/* Version compatibility check */
@@ -297,7 +298,7 @@ svnconflict_help(apr_getopt_t *os, void
SVN_ERR(svn_ra_print_modules(version_footer, pool));
}
- SVN_ERR(svn_opt_print_help4(os,
+ SVN_ERR(svn_opt_print_help5(os,
"svnconflict", /* ### erm, derive somehow? */
opt_state ? opt_state->version : FALSE,
FALSE, /* quiet */
@@ -641,7 +642,7 @@ sub_main(int *exit_code, int argc, const
apr_array_header_t *received_opts;
svnconflict_cmd_baton_t command_baton;
int i;
- const svn_opt_subcommand_desc2_t *subcommand = NULL;
+ const svn_opt_subcommand_desc3_t *subcommand = NULL;
svn_auth_baton_t *ab;
svn_config_t *cfg_config;
apr_hash_t *cfg_hash;
@@ -742,7 +743,7 @@ sub_main(int *exit_code, int argc, const
just typos/mistakes. Whatever the case, the subcommand to
actually run is svnconflict_help(). */
if (opt_state.help)
- subcommand = svn_opt_get_canonical_subcommand2(svnconflict_cmd_table,
+ subcommand = svn_opt_get_canonical_subcommand3(svnconflict_cmd_table,
"help");
/* If we're not running the `help' subcommand, then look for a
@@ -754,8 +755,8 @@ sub_main(int *exit_code, int argc, const
if (opt_state.version)
{
/* Use the "help" subcommand to handle the "--version" option. */
- static const svn_opt_subcommand_desc2_t pseudo_cmd =
- { "--version", svnconflict_help, {0}, "",
+ static const svn_opt_subcommand_desc3_t pseudo_cmd =
+ { "--version", svnconflict_help, {0}, {""},
{opt_version, /* must accept its own option */
opt_config_dir /* all commands accept this */
} };
@@ -778,7 +779,7 @@ sub_main(int *exit_code, int argc, const
SVN_ERR(svn_utf_cstring_to_utf8(&first_arg, os->argv[os->ind++],
pool));
- subcommand = svn_opt_get_canonical_subcommand2(svnconflict_cmd_table,
+ subcommand = svn_opt_get_canonical_subcommand3(svnconflict_cmd_table,
first_arg);
if (subcommand == NULL)
{
@@ -805,12 +806,12 @@ sub_main(int *exit_code, int argc, const
if (opt_id == 'h' || opt_id == '?')
continue;
- if (! svn_opt_subcommand_takes_option3(subcommand, opt_id,
+ if (! svn_opt_subcommand_takes_option4(subcommand, opt_id,
svnconflict_global_options))
{
const char *optstr;
const apr_getopt_option_t *badopt =
- svn_opt_get_option_from_code2(opt_id, svnconflict_options,
+ svn_opt_get_option_from_code3(opt_id, svnconflict_options,
subcommand, pool);
svn_opt_format_option(&optstr, badopt, FALSE, pool);
if (subcommand->name[0] == '-')
Modified: subversion/branches/swig-py3/tools/dev/svnmover/svnmover.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/dev/svnmover/svnmover.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/dev/svnmover/svnmover.c (original)
+++ subversion/branches/swig-py3/tools/dev/svnmover/svnmover.c Wed Nov 28 21:25:32 \
2018 @@ -4042,7 +4042,7 @@ display_version(apr_getopt_t *os, svn_bo
version_footer = svn_stringbuf_create(ra_desc_start, pool);
SVN_ERR(svn_ra_print_modules(version_footer, pool));
- SVN_ERR(svn_opt_print_help4(NULL, "svnmover", TRUE, _quiet, FALSE,
+ SVN_ERR(svn_opt_print_help5(NULL, "svnmover", TRUE, _quiet, FALSE,
version_footer->data,
NULL, NULL, NULL, NULL, NULL, pool));
Modified: subversion/branches/swig-py3/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c \
(original)
+++ subversion/branches/swig-py3/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c \
Wed Nov 28 21:25:32 2018 @@ -52,7 +52,7 @@
static svn_error_t *
version(apr_pool_t *pool)
{
- return svn_opt_print_help4(NULL, "svnraisetreeconflict", TRUE, FALSE, FALSE,
+ return svn_opt_print_help5(NULL, "svnraisetreeconflict", TRUE, FALSE, FALSE,
NULL, NULL, NULL, NULL, NULL, NULL, pool);
}
Modified: subversion/branches/swig-py3/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/dev/unix-build/Makefile.svn?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/swig-py3/tools/dev/unix-build/Makefile.svn Wed Nov 28 \
21:25:32 2018 @@ -72,6 +72,12 @@ endif # 2.2
endif # 2.3
endif # 2.4
+ifeq ($(UNAME),OpenBSD)
+# Pick the correct base compiler (ie. clang rather than ancient gcc 4.2.1)
+CC = cc
+CXX = c++
+endif
+
TAG ?= none
ifeq ($(TAG),none)
BRANCH ?= trunk
@@ -102,7 +108,7 @@ SERF_OLD_VER = 0.3.1
CYRUS_SASL_VER = 2.1.25
SQLITE_VER = 3160200
LIBMAGIC_VER = 5.30
-RUBY_VER = 2.4.2
+RUBY_VER = 2.4.4
BZ2_VER = 1.0.6
PYTHON_VER = 2.7.13
JUNIT_VER = 4.10
@@ -132,7 +138,7 @@ SHA256_${NEON_DIST} = db0bd8cdec329b48f5
SHA256_${CYRUS_SASL_DIST} = \
418c16e6240a4f9b637cbe3d62937b9675627bad27c622191d47de8686fe24fe \
SHA256_${SQLITE_DIST} = \
65cc0c3e9366f50c0679c5ccd31432cea894bc4a3e8947dabab88c8693263615 \
SHA256_${LIBMAGIC_DIST} = \
694c2432e5240187524c9e7cf1ec6acc77b47a0e19554d34c14773e43dbbf214
-SHA256_${RUBY_DIST} = \
93b9e75e00b262bc4def6b26b7ae8717efc252c47154abb7392e54357e6c8c9c +SHA256_${RUBY_DIST} \
= 254f1c1a79e4cc814d1e7320bc5bdd995dc57e08727d30a767664619a9c8ae5a \
SHA256_${BZ2_DIST} = a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd \
SHA256_${PYTHON_DIST} = \
a4f05a0720ce0fd92626f0278b6b433eee9a6173ddf2bced7957dfb599a5ece1 \
SHA256_${JUNIT_DIST} = \
36a747ca1e0b86f6ea88055b8723bb87030d627766da6288bf077afdeeb0f75a @@ -171,7 +177,7 @@ \
FETCH_CMD = wget -c SUBVERSION_REPOS_URL = \
https://svn.apache.org/repos/asf/subversion BDB_URL = \
http://download.oracle.com/berkeley-db/$(BDB_DIST) APR_URL = \
https://svn.apache.org/repos/asf/apr/apr
-APR_ICONV_URL = https://www.apache.org/dist/apr/$(APR_ICONV_DIST)
+APR_ICONV_URL = https://archive.apache.org/dist/apr/$(APR_ICONV_DIST)
GNU_ICONV_URL = https://ftp.gnu.org/pub/gnu/libiconv/$(GNU_ICONV_DIST)
APR_UTIL_URL = https://svn.apache.org/repos/asf/apr/apr-util
HTTPD_URL = https://archive.apache.org/dist/httpd/$(HTTPD_DIST)
@@ -183,7 +189,7 @@ SQLITE_URL = https://www.sqlite.org/2017
CYRUS_SASL_URL = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST)
LIBMAGIC_URL = ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST)
RUBY_URL = https://cache.ruby-lang.org/pub/ruby/2.4/$(RUBY_DIST)
-BZ2_URL = http://bzip.org/$(BZ2_VER)/$(BZ2_DIST)
+BZ2_URL = https://ftp.openbsd.org/pub/OpenBSD/distfiles/$(BZ2_DIST)
PYTHON_URL = https://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST)
JUNIT_URL = https://downloads.sourceforge.net/project/junit/junit/$(JUNIT_VER)/$(JUNIT_DIST)
GETTEXT_URL = https://ftp.gnu.org/pub/gnu/gettext/$(GETTEXT_DIST)
@@ -240,6 +246,10 @@ endif
# We need this to make sure some targets below pick up the right libraries
LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/gettext/lib:$(PREFIX)/iconv/lib:$(PREFIX) \
/bdb/lib:$(PREFIX)/neon/lib:$(PREFIX)/serf/lib:$(PREFIX)/sqlite/lib:$(PREFIX)/cyrus-sa \
sl/lib:$(PREFIX)/iconv/lib:$(PREFIX)/libmagic/lib:$(PREFIX)/ruby/lib:$(PREFIX)/python/lib:$(PREFIX)/svn-$(WC)/lib
+# We need this to make sure some targets below pick up the right pkg-config files
+PKG_CONFIG_PATH=$(PREFIX)/apr/lib/pkgconfig:$(PREFIX)/neon/lib/pkgconfig:$(PREFIX)/se \
rf/lib/pkgconfig:$(PREFIX)/sqlite/lib/pkgconfig:$(PREFIX)/ruby/lib/pkgconfig:$(PREFIX)/python/lib/pkgconfig:$(PREFIX)/lz4/lib/pkgconfig
+
+
#######################################################################
# Main targets.
#######################################################################
@@ -333,6 +343,7 @@ $(BDB_OBJDIR)/.retrieved: $(DISTDIR)/$(B
$(BDB_OBJDIR)/.configured: $(BDB_OBJDIR)/.retrieved
cd $(BDB_SRCDIR)/build_unix \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+ CC=$(CC) CXX=$(CXX) \
../dist/configure \
--prefix=$(PREFIX)/bdb \
--enable-debug
@@ -390,6 +401,8 @@ $(APR_OBJDIR)/.configured: $(APR_OBJDIR)
cd $(APR_SRCDIR) && ./buildconf
cd $(APR_OBJDIR) \
&& env CFLAGS="-O0 -g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
+ CC=$(CC) CXX=$(CXX) \
$(APR_SRCDIR)/configure \
--prefix=$(PREFIX)/apr \
--enable-maintainer-mode \
@@ -438,7 +451,9 @@ $(APR_ICONV_OBJDIR)/.configured: $(APR_I
$(APR_OBJDIR)/.installed
cd $(APR_ICONV_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \
+ CC=$(CC) CXX=$(CXX) \
GREP="`which grep`" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(APR_ICONV_SRCDIR)/configure \
--prefix=$(PREFIX)/apr \
--with-apr=$(PREFIX)/apr
@@ -522,6 +537,8 @@ $(GNU_ICONV_OBJDIR)/.configured: $(GNU_I
${MAKE} -f Makefile.devel lib/aliases.h
cd $(GNU_ICONV_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\
+ CC=$(CC) CXX=$(CXX) \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(GNU_ICONV_SRCDIR)/configure \
--prefix=$(PREFIX)/iconv \
--enable-extra-encodings
@@ -592,7 +609,9 @@ $(APR_UTIL_OBJDIR)/.configured: $(APR_UT
cd $(APR_UTIL_SRCDIR) && ./buildconf --with-apr=$(APR_SRCDIR)
cd $(APR_UTIL_OBJDIR) \
&& env LD_LIBRARY_PATH=$(PREFIX)/bdb/lib \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \
+ CC=$(CC) CXX=$(CXX) \
GREP="`which grep`" \
$(APR_UTIL_SRCDIR)/configure \
--prefix=$(PREFIX)/apr \
@@ -727,7 +746,9 @@ $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJ
cd $(HTTPD_SRCDIR) && ./buildconf
cd $(HTTPD_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \
+ CC=$(CC) CXX=$(CXX) \
GREP="`which grep`" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(HTTPD_SRCDIR)/configure \
--prefix=$(PREFIX)/httpd \
--enable-maintainer-mode \
@@ -812,6 +833,8 @@ $(NEON_OBJDIR)/.configured: $(NEON_OBJDI
fi
cd $(NEON_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+ CC=$(CC) CXX=$(CXX) \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(NEON_SRCDIR)/configure \
PATH=$(NEON_OBJDIR):$$PATH \
--prefix=$(PREFIX)/neon \
@@ -872,9 +895,11 @@ $(SERF_OBJDIR)/.compiled: $(SERF_OBJDIR)
cd $(SERF_SRCDIR) && \
scons -j${MAKE_JOBS} DEBUG=1 \
CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \
+ CC=$(CC) CXX=$(CXX) \
APR=$(PREFIX)/apr \
APU=$(PREFIX)/apr \
- PREFIX=$(PREFIX)/serf
+ PREFIX=$(PREFIX)/serf \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
touch $@
# install serf
@@ -915,6 +940,7 @@ $(SERF_OLD_OBJDIR)/.compiled: $(SERF_OLD
$(APR_UTIL_OBJDIR)/.installed
cd $(SERF_OLD_SRCDIR) && \
env CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \
+ CC=$(CC) CXX=$(CXX) \
./serfmake --with-apr=$(PREFIX)/apr \
--prefix=$(PREFIX)/serf-old \
build
@@ -966,6 +992,8 @@ endif
$(SQLITE_OBJDIR)/.configured: $(SQLITE_OBJDIR)/.retrieved
cd $(SQLITE_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
+ CC=$(CC) CXX=$(CXX) \
$(SQLITE_SRCDIR)/configure \
--prefix=$(PREFIX)/sqlite \
$(THREADSAFE_FLAG)
@@ -1035,7 +1063,9 @@ $(CYRUS_SASL_OBJDIR)/.configured: $(CYRU
cd $(CYRUS_SASL_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" \
CPPFLAGS="-I/usr/include/kerberosV" \
+ CC=$(CC) CXX=$(CXX) \
GREP="`which grep`" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(CYRUS_SASL_SRCDIR)/configure \
--with-dbpath=$(PREFIX)/cyrus-sasl/etc/sasldb2 \
--with-plugindir=$(PREFIX)/cyrus-sasl/lib/sasl2 \
@@ -1087,6 +1117,8 @@ $(LIBMAGIC_OBJDIR)/.retrieved: $(DISTDIR
$(LIBMAGIC_OBJDIR)/.configured: $(LIBMAGIC_OBJDIR)/.retrieved
cd $(LIBMAGIC_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\
+ CC=$(CC) CXX=$(CXX) \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(LIBMAGIC_SRCDIR)/configure \
--enable-fsect-man5 \
--prefix=$(PREFIX)/libmagic
@@ -1121,13 +1153,54 @@ ruby-clean:
$(DISTDIR)/$(RUBY_DIST):
cd $(DISTDIR) && $(FETCH_CMD) $(RUBY_URL)
+$(RUBY_OBJDIR)/openssl_missing.patch:
+ mkdir -p $(dir $@)
+ echo > $@.tmp 'Index: ext/openssl/openssl_missing.h'
+ echo >> $@.tmp '--- ext/openssl/openssl_missing.h.orig'
+ echo >> $@.tmp '+++ ext/openssl/openssl_missing.h'
+ echo >> $@.tmp '@@ -119,6 +119,9 @@ void ossl_HMAC_CTX_free(HMAC_CTX *);'
+ echo >> $@.tmp ' #if !defined(HAVE_X509_STORE_SET_EX_DATA)'
+ echo >> $@.tmp ' # define X509_STORE_set_ex_data(x, idx, data) \'
+ echo >> $@.tmp ' CRYPTO_set_ex_data(&(x)->ex_data, (idx), (data))'
+ echo >> $@.tmp '+#endif'
+ echo >> $@.tmp '+'
+ echo >> $@.tmp '+#if !defined(HAVE_X509_STORE_GET_EX_NEW_INDEX)'
+ echo >> $@.tmp ' # define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \'
+ echo >> $@.tmp ' CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, (l), (p), \'
+ echo >> $@.tmp ' (newf), (dupf), (freef))'
+ echo >> $@.tmp '@@ -192,6 +195,7 @@ void ossl_X509_REQ_get0_signature(const \
X509_REQ *, co' + echo >> $@.tmp ' #endif'
+ echo >> $@.tmp ' '
+ echo >> $@.tmp ' #if !defined(HAVE_OPAQUE_OPENSSL)'
+ echo >> $@.tmp '+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < \
0x2070000fL' + echo >> $@.tmp ' #define IMPL_PKEY_GETTER(_type, _name) \'
+ echo >> $@.tmp ' static inline _type *EVP_PKEY_get0_##_type(EVP_PKEY *pkey) { \'
+ echo >> $@.tmp ' return pkey->pkey._name; }'
+ echo >> $@.tmp '@@ -243,6 +247,7 @@ IMPL_PKEY_GETTER(EC_KEY, ec)'
+ echo >> $@.tmp ' #undef IMPL_PKEY_GETTER'
+ echo >> $@.tmp ' #undef IMPL_KEY_ACCESSOR2'
+ echo >> $@.tmp ' #undef IMPL_KEY_ACCESSOR3'
+ echo >> $@.tmp '+#endif'
+ echo >> $@.tmp ' #endif /* HAVE_OPAQUE_OPENSSL */'
+ echo >> $@.tmp ' '
+ echo >> $@.tmp ' #if defined(HAVE_AUTHENTICATED_ENCRYPTION) && \
!defined(EVP_CTRL_AEAD_GET_TAG)' + mv -f $@.tmp $@
+
+ifeq ($(UNAME),OpenBSD)
+RUBY_SSL_EX_NEW_DATA_PATCH = sed -i -e '/^have_func("X509_STORE_set_ex_data")$$/ { \
p; s/^.*$$/\have_func("X509_STORE_get_ex_new_index")/; }' +else
+RUBY_SSL_EX_NEW_DATA_PATCH = true
+endif
+
# retrieve ruby
#
-$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST)
+$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) \
$(RUBY_OBJDIR)/openssl_missing.patch $(call do_check_sha256,$(RUBY_DIST))
[ -d $(RUBY_OBJDIR) ] || mkdir -p $(RUBY_OBJDIR)
tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST)
-which ghead && sed -i -e "s/head -c/ghead -c/" $(RUBY_SRCDIR)/configure
+ $(RUBY_SSL_EX_NEW_DATA_PATCH) $(RUBY_SRCDIR)/ext/openssl/extconf.rb
+ cd $(RUBY_SRCDIR) && patch -p0 < $(RUBY_OBJDIR)/openssl_missing.patch
touch $@
ifeq ($(THREADING),yes)
@@ -1140,6 +1213,8 @@ endif
$(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved
cd $(RUBY_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\
+ CC=$(CC) CXX=$(CXX) \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(RUBY_SRCDIR)/configure \
--prefix=$(PREFIX)/ruby \
--enable-shared \
@@ -1187,7 +1262,8 @@ $(BZ2_OBJDIR)/.retrieved: $(DISTDIR)/$(B
# compile bz2
$(BZ2_OBJDIR)/.compiled: $(BZ2_OBJDIR)/.retrieved
- (cd $(BZ2_SRCDIR) && env MAKEFLAGS= make CFLAGS="-g $(PROFILE_CFLAGS) -fPIC" \
-j${MAKE_JOBS}) + (cd $(BZ2_SRCDIR) && env MAKEFLAGS= make CC=$(CC) CXX=$(CXX) \
+ CFLAGS="-g $(PROFILE_CFLAGS) -fPIC" -j${MAKE_JOBS})
touch $@
# install bz2
@@ -1247,9 +1323,11 @@ $(PYTHON_OBJDIR)/.configured: $(PYTHON_O
$(BZ2_OBJDIR)/.installed
cd $(PYTHON_OBJDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+ CC=$(CC) CXX=$(CXX) \
CPPFLAGS="-I$(PREFIX)/bz2/include" \
LDFLAGS="-Wl,-rpath=$(PREFIX)/python/lib -L$(PREFIX)/bz2/lib" \
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(PYTHON_SRCDIR)/configure \
--prefix=$(PREFIX)/python \
--enable-shared \
@@ -1316,7 +1394,9 @@ $(GETTEXT_OBJDIR)/.retrieved: $(DISTDIR)
$(GETTEXT_OBJDIR)/.configured: $(GETTEXT_OBJDIR)/.retrieved
cd $(GETTEXT_SRCDIR) \
&& env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\
+ CC=$(CC) CXX=$(CXX) \
LDFLAGS="-L$(PREFIX)/iconv/lib" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
$(GETTEXT_SRCDIR)/configure \
--prefix=$(PREFIX)/gettext \
--with-libiconv-prefix=$(PREFIX)/iconv \
@@ -1375,7 +1455,8 @@ $(LZ4_OBJDIR)/.configured: $(LZ4_OBJDIR)
# compile lz4
$(LZ4_OBJDIR)/.compiled: $(LZ4_OBJDIR)/.configured
(cd $(LZ4_SRCDIR)/lib && \
- env MAKEFLAGS= $(MAKE) -j${MAKE_JOBS} PREFIX=$(PREFIX)/lz4)
+ env MAKEFLAGS= $(MAKE) CC=$(CC) CXX=$(CXX) \
+ -j${MAKE_JOBS} PREFIX=$(PREFIX)/lz4)
touch $@
# install lz4
@@ -1503,6 +1584,17 @@ SVN_WITH_HTTPD=--with-apxs="$(PREFIX)/ht
SVN_WITH_SASL=--with-sasl="$(PREFIX)/cyrus-sasl"
endif
+# On OpenBSD, MExtUtils -e ldopts outputs -L/usr/local/lib, which can
+# cause us to link Perl bindings against the wrong set of SVN libraries.
+# As a workaround, we patch the configure script after it has been generated.
+ifeq ($(UNAME),OpenBSD)
+SWIG_PL_INCLUDES_HACK= sed -i 's^\($$PERL -MExtUtils::Embed -e ccopts\)^\1 | sed -e \
s@-I/usr/local/include@@^' $(svn_builddir)/configure +SWIG_PL_LINK_HACK= sed -i \
's^\($$PERL -MExtUtils::Embed -e ldopts\)^\1 | sed -e s@-L/usr/local/lib@@^' \
$(svn_builddir)/configure +else
+SWIG_PL_INCLUDES_HACK=true
+SWIG_PL_LINK_HACK=true
+endif
+
$(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \
$(APR_OBJDIR)/.installed $(APR_UTIL_OBJDIR)/.installed \
$(BDB_OBJDIR)/.installed $(SQLITE_OBJDIR)/.installed \
@@ -1511,11 +1603,15 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)
$(SERF_OBJDIR)/.installed $(SERF_OLD_OBJDIR)/.installed \
$(RUBY_OBJDIR)/.installed $(PYTHON_OBJDIR)/.installed
cd $(SVN_SRCDIR) && ./autogen.sh
+ $(SWIG_PL_INCLUDES_HACK)
+ $(SWIG_PL_LINK_HACK)
cd $(svn_builddir) && \
env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib $(SERF_LDFLAG) $(LZ4_LDFLAG) \
-L$(PREFIX)/gettext/lib -L$(PREFIX)/iconv/lib" \ + CC=$(CC) CXX=$(CXX) \
CFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \
CXXFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
+ PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
GREP="`which grep`" \
PATH=$(PREFIX)/ruby/bin:$(PREFIX)/python/bin:$(PREFIX)/gettext/bin:$$PATH \
$(SVN_SRCDIR)/configure \
@@ -1563,6 +1659,17 @@ $(SVN_OBJDIR)/.pre-generated-swig-cleane
&& env MAKEFLAGS= make clean-swig
touch $@
+
+# On OpenBSD, Perl's LDDLFLAGS include -L/usr/local/lib, which can cause
+# us to link Perl bindings against the wrong set of SVN libraries.
+# We manually fix up the generated Makefile.PL to work around this issue.
+ifeq ($(UNAME),OpenBSD)
+MAKEFILE_PL_LDDLFLAGS_HACK= sed -i 's@^WriteMakefile@$$config{LDDLFLAGS} =~ \
s+-L/usr/local/lib++; WriteMakefile@' \ \
+ $(SVN_SRCDIR)/subversion/bindings/swig/perl/native/Makefile.PL +else
+MAKEFILE_PL_LDDLFLAGS_HACK=true
+endif
+
$(SVN_OBJDIR)/.bindings-compiled: $(SVN_OBJDIR)/.installed \
$(SVN_OBJDIR)/.pre-generated-swig-cleaned cd $(svn_builddir) \
&& env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
@@ -1571,13 +1678,15 @@ $(SVN_OBJDIR)/.bindings-compiled: $(SVN_
env PATH=$(PREFIX)/ruby/bin:$$PATH \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make -j${MAKE_JOBS} swig-rb
if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
+ cd $(svn_builddir) && make \
$(SVN_SRCDIR)/subversion/bindings/swig/perl/native/Makefile.PL; \ \
+ $(MAKEFILE_PL_LDDLFLAGS_HACK); \ cd $(svn_builddir) \
&& env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
env MAKEFLAGS= make -j${MAKE_JOBS} swig-pl; \
fi
if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
- && env MAKEFLAGS= make -j${MAKE_JOBS} javahl; \
+ && env MAKEFLAGS= make javahl; \
fi
touch $@
@@ -1587,13 +1696,15 @@ $(SVN_OBJDIR)/.bindings-installed: $(SVN
env MAKEFLAGS= make install-swig-py
cd $(svn_builddir) && \
env PATH=$(PREFIX)/ruby/bin:$$PATH \
- LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make install-swig-rb
+ LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) MAKEFLAGS= make install-swig-rb
if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
- && env MAKEFLAGS= make install-swig-pl-lib; \
- cd subversion/bindings/swig/perl/native \
- && perl Makefile.PL PREFIX="$(SVN_PREFIX)" \
- && env MAKEFLAGS= make install; \
+ && env MAKEFLAGS= LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ make install-swig-pl-lib; \
+ cd subversion/bindings/swig/perl/native \
+ && perl Makefile.PL PREFIX="$(SVN_PREFIX)" \
+ && env MAKEFLAGS= LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
+ make install; \
fi
if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
cd $(svn_builddir) \
@@ -1924,6 +2035,7 @@ endif
HTTPD_CMD = env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \
$(PREFIX)/httpd/bin/apachectl
+HTTPD_LOG_ROTATE = mv $(PREFIX)/httpd/logs/error_log \
$(PREFIX)/httpd/logs/error_log.old HTTPD_START_CMD = $(HTTPD_CMD) -f \
$(HTTPD_CHECK_CONF) -k start HTTPD_START_CMD_PROXY = $(HTTPD_CMD) -f \
$(HTTPD_PROXY_CONF) HTTPD_START_CMD_DEBUG = $(HTTPD_START_CMD) -X
@@ -1942,6 +2054,7 @@ SVNSERVE_STOP_CMD = kill `cat $(PWD)/svn
rm -f $(PWD)/svnserve-$(WC).pid
start-httpd: $(HTTPD_CHECK_CONF)
+ -$(HTTPD_LOG_ROTATE)
$(HTTPD_START_CMD)
@echo "To run tests over http, run:"
@echo " make check BASE_URL=http://localhost:$(HTTPD_CHECK_PORT)"
@@ -2064,7 +2177,7 @@ svn-check-javahl:
-if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
(cd $(svn_builddir) && \
env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
- env MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \
+ MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \
tee $(svn_builddir)/tests.log.bindings.javahl; \
fi
Modified: subversion/branches/swig-py3/tools/dev/wc-ng/svn-wc-db-tester.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/dev/wc-ng/svn-wc-db-tester.c?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/dev/wc-ng/svn-wc-db-tester.c (original)
+++ subversion/branches/swig-py3/tools/dev/wc-ng/svn-wc-db-tester.c Wed Nov 28 \
21:25:32 2018 @@ -44,7 +44,7 @@
static svn_error_t *
version(apr_pool_t *pool)
{
- return svn_opt_print_help4(NULL, "svn-wc-db-tester", TRUE, FALSE, FALSE,
+ return svn_opt_print_help5(NULL, "svn-wc-db-tester", TRUE, FALSE, FALSE,
NULL, NULL, NULL, NULL, NULL, NULL, pool);
}
Modified: subversion/branches/swig-py3/tools/dist/README.backport
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/dist/README.backport?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/dist/README.backport (original)
+++ subversion/branches/swig-py3/tools/dist/README.backport Wed Nov 28 21:25:32 2018
@@ -7,20 +7,23 @@ F1. Auto-merge bot; the nightly svn-role
F2. Conflicts detector bot; the svn-backport-conflicts-1.9.x buildbot task.
-And two interactive functions, described later.
+And two interactive functions ¹:
+
+F3. Reviewing STATUS nominations and casting votes.
+
+F4. Adding new entries to STATUS.
The scripts are:
backport.pl:
- oldest script, implements both [F1] and [F2], plus two interactive
- functions ¹. As of March 2015, used in production by svn-role and
- by svn-backport-conflicts-1.9.x.
+ oldest script, implements [F1], [F2], and [F3]. As of Feb 2018, used in
+ production by svn-role (running on svn-qavm3) and by \
svn-backport-conflicts-1.9.x + (a buildbot job).
nominate.pl:
- Symlink to backport.pl. Implements one of the two interactive features.
- Not used by bots.
+ Symlink to backport.pl. Implements [F4]. (The script inspects its argv[0].)
backport_tests_pl.py:
Regression tests for backport.pl.
@@ -39,9 +42,11 @@ backport/*.py:
detect-conflicting-backports.py:
Implementation of [F2] using backport.py.
+ Not currently used in production.
merge-approved-backports.py:
Implementation of [F1] using backport.py.
+ Not currently used in production.
backport_tests_py.py:
Regression tests for detect-conflicting-backports.py and \
merge-approved-backports.py @@ -52,13 +57,28 @@ backport_tests.py:
svntest framework (../../subversion/tests/cmdline/svntest/), which is
written in Python 2.
-backport*.dump:
+ Note that backport_tests.py and backport/*.py are written in different
+ languages, so they never 'import' each other. backport_tests.py invokes
+ detect-conflicting-backports.py, merge-approved-backports.py, and
+ backport.pl in the same manner: through subprocess.check_call().
+
+backport_tests_data/backport*.dump:
Expected output files for backport_tests.py; see the BackportTest
- decorator.
+ decorator in backport_tests.py.
All scripts can be run with '--help' to display their usage messages.
+backport.pl is considered deprecated since backport.py is better architected
+and is written in a language that many more active developers are comfortable
+with. The unattended jobs [F1] and [F2] should be converted to using
+backport.py whenever someone gets around to do the legwork. The interactive
+versions [F3] and [F4] are still in active use, however, so the physical
+backport.pl script should be kept around until Python versions of these are
+available.
+
+
+TODO: document that "Notes: ... --accept=foo ..." is parsed, see backport_tests.py \
#3.
 ¹ For backport.pl's interactive features, see:
Modified: subversion/branches/swig-py3/tools/dist/backport.pl
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/tools/dist/backport.pl?rev=1847678&r1=1847677&r2=1847678&view=diff
==============================================================================
--- subversion/branches/swig-py3/tools/dist/backport.pl (original)
+++ subversion/branches/swig-py3/tools/dist/backport.pl Wed Nov 28 21:25:32 2018
@@ -9,11 +9,11 @@ use v5.10.0; # needed for $^V
# experimental and "subject to change" in v5.18 (see perl5180delta). Every
# use of it now triggers a warning.
#
-# As of Perl v5.24.1, the semantics of given/when provided by Perl are
+# As of Perl v5.26.1, the semantics of given/when provided by Perl are
# compatible with those expected by the script, so disable the warning for
# those Perls. But don't try to disable the the warning category on Perls
# that don't know that category, since that breaks compilation.
-no if (v5.17.0 le $^V and $^V le v5.24.1),
+no if (v5.17.0 le $^V and $^V le v5.26.1),
warnings => 'experimental::smartmatch';
# Licensed to the Apache Software Foundation (ASF) under one
@@ -791,7 +791,7 @@ sub vote {
# Add to state votes that aren't '+0' or 'edit'
$state->{$_->{digest}}++ for grep
- +{ qw/-1 t -0 t +1 t/ }->{$_->{vote}},
+ +($_->{approval} or $_->{vote} =~ \
/^(-1|-0|[+]1)$/), @votesarray;
}
}
@@ -1279,7 +1279,7 @@ sub nominate_main {
# Open the file in line-mode (not paragraph-mode).
my @STATUS;
tie @STATUS, "Tie::File", $STATUS, recsep => "\n";
- my ($index) = grep { $STATUS[$_] =~ /^Veto/ } (0..$#STATUS);
+ my ($index) = grep { $STATUS[$_] =~ /^Veto|^Approved/ } (0..$#STATUS);
die "Couldn't find where to add an entry" unless $index;
# Add an empty line if needed.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic