Compare commits

...

No commits in common. "c8-stream-1.1" and "c10s" have entirely different histories.

34 changed files with 3058 additions and 450 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

4
.gitignore vendored
View File

@ -1 +1,3 @@
SOURCES/subversion-1.10.2.tar.bz2 /subversion-*.tar.bz2
/subversion-1\.[0-9]*\.[0-9]*/
/results_subversion/

View File

@ -1 +0,0 @@
bc52ef2e671f821998ac9a5f7ebecbbcaaef83b8 SOURCES/subversion-1.10.2.tar.bz2

View File

@ -1,72 +0,0 @@
Link executables using -pie, link test executables using -no-install.
diff -uap subversion-1.10.0/build.conf.pie subversion-1.10.0/build.conf
--- subversion-1.10.0/build.conf.pie
+++ subversion-1.10.0/build.conf
@@ -783,6 +783,7 @@
libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr aprutil apriconv apr
msvc-static = yes
undefined-lib-symbols = yes
+link-cmd = $(LINK_TEST_LIB)
# ----------------------------------------------------------------------------
# Tests for libsvn_fs_base
diff -uap subversion-1.10.0/build/generator/gen_base.py.pie subversion-1.10.0/build/generator/gen_base.py
--- subversion-1.10.0/build/generator/gen_base.py.pie
+++ subversion-1.10.0/build/generator/gen_base.py
@@ -599,7 +599,7 @@
self.install = options.get('install')
self.compile_cmd = options.get('compile-cmd')
self.sources = options.get('sources', '*.c *.cpp')
- self.link_cmd = options.get('link-cmd', '$(LINK)')
+ self.link_cmd = options.get('link-cmd', '$(LINK_LIB)')
self.external_lib = options.get('external-lib')
self.external_project = options.get('external-project')
@@ -659,6 +659,17 @@
self.msvc_force_static = options.get('msvc-force-static') == 'yes'
+ if self.install in ['test', 'bdb-test', 'sub-test', ]:
+ self.link_cmd = '$(LINK_TEST)'
+ elif self.install in ['cxxhl-tests', ]:
+ self.link_cmd = '$(LINK_TEST_CXX)'
+ elif self.link_cmd == '$(LINK_LIB)':
+ # Over-ride the default for TargetLinked.
+ self.link_cmd = '$(LINK_EXE)'
+ else:
+ raise GenError('ERROR: Unknown executable link type for ' + self.name + \
+ ': ' + self.link_cmd + ' (' + self.install + ')')
+
def add_dependencies(self):
TargetLinked.add_dependencies(self)
diff -uap subversion-1.10.0/Makefile.in.pie subversion-1.10.0/Makefile.in
--- subversion-1.10.0/Makefile.in.pie
+++ subversion-1.10.0/Makefile.in
@@ -268,6 +268,11 @@
LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS)
LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_TEST = $(LINK) -no-install
+LINK_TEST_LIB = $(LINK) -avoid-version
+LINK_TEST_CXX_LIB = $(LINK_CXX) -avoid-version
+LINK_EXE = $(LINK) -pie
+LINK_CXX_EXE = $(LINK) -pie
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared
@@ -780,10 +785,10 @@
$(PYTHON) $(top_srcdir)/build/transform_sql.py $< $(top_srcdir)/$@
.c.o:
- $(COMPILE) -o $@ -c $<
+ $(COMPILE) -fPIE -o $@ -c $<
.cpp.o:
- $(COMPILE_CXX) -o $@ -c $<
+ $(COMPILE_CXX) -fPIE -o $@ -c $<
.c.lo:
$(LT_COMPILE) -o $@ -c $<

View File

@ -1,42 +0,0 @@
Only link libraries using -rpath, to avoid unnecessary RPATH tags in executables.
diff -uap subversion-1.10.0/build.conf.rpath subversion-1.10.0/build.conf
--- subversion-1.10.0/build.conf.rpath
+++ subversion-1.10.0/build.conf
@@ -568,7 +568,7 @@
path = subversion/bindings/swig/python/libsvn_swig_py
libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_subr
apriconv apr python swig
-link-cmd = $(LINK)
+link-cmd = $(LINK_LIB)
install = swig-py-lib
# need special build rule to include -DSWIGPYTHON
compile-cmd = $(COMPILE_SWIG_PY)
@@ -594,7 +594,7 @@
lang = ruby
path = subversion/bindings/swig/ruby/libsvn_swig_ruby
libs = libsvn_client libsvn_wc libsvn_delta libsvn_subr apriconv apr ruby swig
-link-cmd = $(LINK) $(SWIG_RB_LIBS)
+link-cmd = $(LINK_LIB) $(SWIG_RB_LIBS)
install = swig-rb-lib
# need special build rule to include
compile-cmd = $(COMPILE_SWIG_RB)
diff -uap subversion-1.10.0/Makefile.in.rpath subversion-1.10.0/Makefile.in
--- subversion-1.10.0/Makefile.in.rpath
+++ subversion-1.10.0/Makefile.in
@@ -264,10 +264,10 @@
COMPILE_GOOGLEMOCK_CXX = $(LT_COMPILE_CXX_NOWARN) $(GOOGLEMOCK_LIB_INCLUDES) -o $@ -c
COMPILE_CXXHL_GOOGLEMOCK_CXX = $(LT_COMPILE_CXX) $(CXXHL_INCLUDES) $(GOOGLEMOCK_INCLUDES) -o $@ -c
-LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_LIB = $(LINK) $(LT_SO_VERSION)
-LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
+LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS)
+LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS)
+LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION) -rpath $(libdir)
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared

View File

@ -1,221 +0,0 @@
https://bugzilla.redhat.com/show_bug.cgi?id=17330884
https://subversion.apache.org/security/CVE-2018-11782-advisory.txt
Fixes for CVE-2018-11782, svnserve get-deleted-rev assertion failure.
The svn protocol prototype for get-deleted-rev does not allow for a reply of
SVN_INVALID_REVNUM directly. A query having such an answer previously caused
the server to raise an assertion failure which could crash the whole process
or a thread or child process of it, depending on the build configuration of
the server.
To work around the problem without changing the protocol, we re-purpose the
obsolete error code 'SVN_ERR_ENTRY_MISSING_REVISION' to communicate this
'not deleted' reply to the client.
- With a new client against a new server, such queries are now handled
correctly.
- With an old client against a new server, the client will report a more
informative error message, and the server will not crash.
- With a new client against an old server, the behaviour is the same as
with an old client against an old server.
In addition, this fixes a similar problem whereby any regular error response
to a 'get-deleted-rev' query resulted in the server closing the connection,
process and/or thread (again depending on the build configuration). Now such
errors are correctly passed back to the client.
* subversion/libsvn_ra_svn/client.c
(ra_svn_get_deleted_rev): Detect error SVN_ERR_ENTRY_MISSING_REVISION
and convert it to a response of SVN_INVALID_REVNUM.
* subversion/svnserve/serve.c
(get_deleted_rev): Respond with error SVN_ERR_ENTRY_MISSING_REVISION
instead of an assertion failure if the answer is SVN_INVALID_REVNUM.
If svn_repos_deleted_rev() returns an error, pass that error back to
the client.
* subversion/tests/libsvn_ra/ra-test.c
(commit_two_changes): New.
(test_get_deleted_rev_no_delete,
test_get_deleted_rev_errors): New tests.
(test_funcs): Run them.
--This line, and those below, will be ignored--
Index: subversion/libsvn_ra_svn/client.c
===================================================================
--- subversion-1.10.2/subversion/libsvn_ra_svn/client.c.cve11782
+++ subversion-1.10.2/subversion/libsvn_ra_svn/client.c
@@ -3105,6 +3105,7 @@
{
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
+ svn_error_t *err;
path = reparent_path(session, path, pool);
@@ -3116,8 +3117,20 @@
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
N_("'get-deleted-rev' not implemented")));
- return svn_error_trace(svn_ra_svn__read_cmd_response(conn, pool, "r",
- revision_deleted));
+ err = svn_error_trace(svn_ra_svn__read_cmd_response(conn, pool, "r",
+ revision_deleted));
+ /* The protocol does not allow for a reply of SVN_INVALID_REVNUM directly.
+ Instead, a new enough server returns SVN_ERR_ENTRY_MISSING_REVISION to
+ indicate the answer to the query is SVN_INVALID_REVNUM. (An older server
+ closes the connection and returns SVN_ERR_RA_SVN_CONNECTION_CLOSED.) */
+ if (err && err->apr_err == SVN_ERR_ENTRY_MISSING_REVISION)
+ {
+ *revision_deleted = SVN_INVALID_REVNUM;
+ svn_error_clear(err);
+ }
+ else
+ SVN_ERR(err);
+ return SVN_NO_ERROR;
}
static svn_error_t *
--- subversion-1.10.2/subversion/svnserve/serve.c.cve11782
+++ subversion-1.10.2/subversion/svnserve/serve.c
@@ -3505,8 +3505,21 @@
svn_relpath_canonicalize(path, pool), pool);
SVN_ERR(log_command(b, conn, pool, "get-deleted-rev"));
SVN_ERR(trivial_auth_request(conn, pool, b));
- SVN_ERR(svn_repos_deleted_rev(b->repository->fs, full_path, peg_revision,
- end_revision, &revision_deleted, pool));
+ SVN_CMD_ERR(svn_repos_deleted_rev(b->repository->fs, full_path, peg_revision,
+ end_revision, &revision_deleted, pool));
+
+ /* The protocol does not allow for a reply of SVN_INVALID_REVNUM directly.
+ Instead, return SVN_ERR_ENTRY_MISSING_REVISION. A new enough client
+ knows that this means the answer to the query is SVN_INVALID_REVNUM.
+ (An older client reports this as an error.) */
+ if (revision_deleted == SVN_INVALID_REVNUM)
+ SVN_CMD_ERR(svn_error_createf(SVN_ERR_ENTRY_MISSING_REVISION, NULL,
+ "svn protocol command 'get-deleted-rev': "
+ "path '%s' was not deleted in r%ld-%ld; "
+ "NOTE: newer clients handle this case "
+ "and do not report it as an error",
+ full_path, peg_revision, end_revision));
+
SVN_ERR(svn_ra_svn__write_cmd_response(conn, pool, "r", revision_deleted));
return SVN_NO_ERROR;
}
--- subversion-1.10.2/subversion/tests/libsvn_ra/ra-test.c.cve11782
+++ subversion-1.10.2/subversion/tests/libsvn_ra/ra-test.c
@@ -94,6 +94,41 @@
return SVN_NO_ERROR;
}
+/* Commit two revisions: add 'B', then delete 'A' */
+static svn_error_t *
+commit_two_changes(svn_ra_session_t *session,
+ apr_pool_t *pool)
+{
+ apr_hash_t *revprop_table = apr_hash_make(pool);
+ const svn_delta_editor_t *editor;
+ void *edit_baton;
+ void *root_baton, *dir_baton;
+
+ /* mkdir B */
+ SVN_ERR(svn_ra_get_commit_editor3(session, &editor, &edit_baton,
+ revprop_table,
+ NULL, NULL, NULL, TRUE, pool));
+ SVN_ERR(editor->open_root(edit_baton, SVN_INVALID_REVNUM,
+ pool, &root_baton));
+ SVN_ERR(editor->add_directory("B", root_baton, NULL, SVN_INVALID_REVNUM,
+ pool, &dir_baton));
+ SVN_ERR(editor->close_directory(dir_baton, pool));
+ SVN_ERR(editor->close_directory(root_baton, pool));
+ SVN_ERR(editor->close_edit(edit_baton, pool));
+
+ /* delete A */
+ SVN_ERR(svn_ra_get_commit_editor3(session, &editor, &edit_baton,
+ revprop_table,
+ NULL, NULL, NULL, TRUE, pool));
+ SVN_ERR(editor->open_root(edit_baton, SVN_INVALID_REVNUM,
+ pool, &root_baton));
+ SVN_ERR(editor->delete_entry("A", SVN_INVALID_REVNUM, root_baton, pool));
+ SVN_ERR(editor->close_directory(root_baton, pool));
+ SVN_ERR(editor->close_edit(edit_baton, pool));
+
+ return SVN_NO_ERROR;
+}
+
static svn_error_t *
commit_tree(svn_ra_session_t *session,
apr_pool_t *pool)
@@ -1784,6 +1819,56 @@
return SVN_NO_ERROR;
}
+/* Cases of 'get-deleted-rev' that should return SVN_INVALID_REVNUM. */
+static svn_error_t *
+test_get_deleted_rev_no_delete(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_ra_session_t *ra_session;
+ svn_revnum_t revision_deleted;
+
+ SVN_ERR(make_and_open_repos(&ra_session,
+ "test-repo-get-deleted-rev-no-delete", opts,
+ pool));
+ SVN_ERR(commit_changes(ra_session, pool));
+ SVN_ERR(commit_two_changes(ra_session, pool));
+
+ /* expect 'no deletion' in the range up to r2, when it is deleted in r3 */
+ /* This was failing over RA-SVN where the 'get-deleted-rev' wire command's
+ prototype cannot directly represent that result. A new enough client and
+ server collaborate on a work-around implemented using an error code. */
+ SVN_ERR(svn_ra_get_deleted_rev(ra_session, "A", 1, 2,
+ &revision_deleted, pool));
+ SVN_TEST_INT_ASSERT(revision_deleted, SVN_INVALID_REVNUM);
+
+ /* this connection should still be open: a simple case should still work */
+ SVN_ERR(svn_ra_get_deleted_rev(ra_session, "A", 1, 3,
+ &revision_deleted, pool));
+ SVN_TEST_INT_ASSERT(revision_deleted, 3);
+
+ return SVN_NO_ERROR;
+}
+
+/* Cases of 'get-deleted-rev' that should return an error. */
+static svn_error_t *
+test_get_deleted_rev_errors(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_ra_session_t *ra_session;
+ svn_revnum_t revision_deleted;
+
+ SVN_ERR(make_and_open_repos(&ra_session,
+ "test-repo-get-deleted-rev-errors", opts, pool));
+ SVN_ERR(commit_changes(ra_session, pool));
+
+ /* expect an error when searching up to r3, when repository head is r1 */
+ SVN_TEST_ASSERT_ERROR(svn_ra_get_deleted_rev(ra_session, "A", 1, 3,
+ &revision_deleted, pool),
+ SVN_ERR_FS_NO_SUCH_REVISION);
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
@@ -1820,6 +1905,10 @@
"check how last change applies to empty commit"),
SVN_TEST_OPTS_PASS(commit_locked_file,
"check commit editor for a locked file"),
+ SVN_TEST_OPTS_PASS(test_get_deleted_rev_no_delete,
+ "test get-deleted-rev no delete"),
+ SVN_TEST_OPTS_PASS(test_get_deleted_rev_errors,
+ "test get-deleted-rev errors"),
SVN_TEST_NULL
};

View File

@ -1,31 +0,0 @@
diff --git a/subversion/svnserve/serve.c b/subversion/svnserve/serve.c
index 5192e7c..6159e22 100644
--- a/subversion/svnserve/serve.c
+++ b/subversion/svnserve/serve.c
@@ -4101,7 +4101,7 @@ construct_server_baton(server_baton_t **baton,
serve_params_t *params,
apr_pool_t *scratch_pool)
{
- svn_error_t *err, *io_err;
+ svn_error_t *err;
apr_uint64_t ver;
const char *client_url, *ra_client_string, *client_string;
svn_ra_svn__list_t *caplist;
@@ -4239,11 +4239,12 @@ construct_server_baton(server_baton_t **baton,
}
if (err)
{
- log_error(err, b);
- io_err = svn_ra_svn__write_cmd_failure(conn, scratch_pool, err);
- svn_error_clear(err);
- SVN_ERR(io_err);
- return svn_ra_svn__flush(conn, scratch_pool);
+ /* Report these errors to the client before closing the connection. */
+ err = svn_error_compose_create(err,
+ svn_ra_svn__write_cmd_failure(conn, scratch_pool, err));
+ err = svn_error_compose_create(err,
+ svn_ra_svn__flush(conn, scratch_pool));
+ return err;
}
SVN_ERR(svn_fs_get_uuid(b->repository->fs, &b->repository->uuid,

1
ci.fmf Normal file
View File

@ -0,0 +1 @@
resultsdb-testcase: separate

27
clog2markdown Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
version=$1
echo "This update includes the latest stable release of _Apache Subversion_, version **${1}**".
echo
curl --silent -n "http://svn.apache.org/repos/asf/subversion/tags/$1/CHANGES" | \
sed -n "
/^#/d;
/^Version ${1/-rc*/}/,/^Version /{
/, from \/branches/d;
/repos\/asf\/subversion\/tags/d;
s,#\([0-9]*\),[SVN-\1](https://issues.apache.org/jira/browse/SVN-\1),;
s/(r[0-9, retal]+)\*//g;
s/^ *//;
s/ +/ /g;
s/^ *- \(.*\)$/#### \1/;
s/\(.*visible changes.*:\)$/### \1/;
/^ *$/d;
/Windows/d
/^Version /d
s,(r1.*),,g
s,\(@[0-9]*\),\\\1,g
p;
}
" -

7
gating.yaml Normal file
View File

@ -0,0 +1,7 @@
#gating rhel
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}

1
mirrors Normal file
View File

@ -0,0 +1 @@
http://subversion.tigris.org/downloads

10
plans/tier1-internal.fmf Normal file
View File

@ -0,0 +1,10 @@
summary: Internal Tier1 beakerlib tests
discover:
how: fmf
url: https://gitlab.com/redhat/rhel/tests/subversion
filter: "tier:1&component:subversion"
execute:
how: tmt
adjust:
enabled: false
when: distro == centos-stream-10

53
pullrev.sh Executable file
View File

@ -0,0 +1,53 @@
#!/bin/sh -e
if [ $# -lt 1 ]; then
echo "What?"
exit 1
fi
repo="https://svn.apache.org/repos/asf/subversion/trunk"
#repo="https://svn.apache.org/repos/asf/subversion/branches/1.11.x"
prefix=`rpmspec -q --queryformat='%{name}-%{version}\n' ./subversion.spec | sed 1q`
suffix="r$1${2:++}"
fn="${prefix}-${suffix}.patch"
vcurl="http://svn.apache.org/viewvc?view=revision&revision="
if test -f ${fn}; then
mv -v -f ${fn} ${fn}\~
echo "# $0 $*" > ${fn}
sed '1{/#.*pullrev/d;};/^--- /,$d' < ${fn}\~ >> ${fn}
else
echo "# $0 $*" > ${fn}
fi
new=0
for r in $*; do
if ! grep -q "${vcurl}${r}" ${fn}; then
echo "${vcurl}${r}"
new=1
fi
done >> ${fn}
[ $new -eq 0 ] || echo >> ${fn}
prev=/dev/null
for r in $*; do
echo "+ fetching ${r}"
this=`mktemp /tmp/pullrevXXXXXX`
svn diff -c ${r} ${repo} | filterdiff --remove-timestamps --clean -x 'CHANGES' -x 'next-number' -x 'STATUS' \
--addprefix="${prefix}/" > ${this}
next=`mktemp /tmp/pullrevXXXXXX`
combinediff --quiet ${prev} ${this} > ${next}
rm -f "${this}"
[ "${prev}" = "/dev/null" ] || rm -f "${prev}"
prev=${next}
done
cat ${prev} >> ${fn}
vi "${fn}"
echo "+ git add ${fn}"
git add "${fn}"
echo "+ spec template:"
echo "PatchN: ${fn}"
echo "%patchN -p1 -b .${suffix}"

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (subversion-1.14.3.tar.bz2) = 40b172492005fd3b0cd9e457b4444af8ea5d8ff8fc161a9a0c6dc3a7314c6ad4ff75a4676f68a1919ae6273ae03e34d04eba8c1c37b8c0b4ec70d6731b527b41

View File

@ -0,0 +1,84 @@
Fix the way libtool is used to match standard practice:
a) link ONLY libraries using -rpath $(libdir), not executables
.. this avoids adding an RPATH for $libdir to executables
b) link non-installable test binaries using -no-install
.. only for convenience but should speed up builds slightly(?)
--- subversion-1.12.0/build.conf.linking
+++ subversion-1.12.0/build.conf
@@ -572,7 +572,7 @@
path = subversion/bindings/swig/python/libsvn_swig_py
libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_subr
apriconv apr python swig
-link-cmd = $(LINK)
+link-cmd = $(LINK_LIB)
install = swig-py-lib
# need special build rule to include -DSWIGPYTHON
compile-cmd = $(COMPILE_SWIG_PY)
@@ -598,7 +598,7 @@
lang = ruby
path = subversion/bindings/swig/ruby/libsvn_swig_ruby
libs = libsvn_client libsvn_wc libsvn_delta libsvn_subr apriconv apr ruby swig
-link-cmd = $(LINK) $(SWIG_RB_LIBS)
+link-cmd = $(LINK_LIB) $(SWIG_RB_LIBS)
install = swig-rb-lib
# need special build rule to include
compile-cmd = $(COMPILE_SWIG_RB)
@@ -769,6 +769,7 @@
libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr aprutil apriconv apr
msvc-static = yes
undefined-lib-symbols = yes
+link-cmd = $(LINK_TEST_LIB)
# ----------------------------------------------------------------------------
# Tests for libsvn_fs_base
--- subversion-1.12.0/build/generator/gen_base.py.linking
+++ subversion-1.12.0/build/generator/gen_base.py
@@ -599,7 +599,7 @@
self.install = options.get('install')
self.compile_cmd = options.get('compile-cmd')
self.sources = options.get('sources', '*.c *.cpp')
- self.link_cmd = options.get('link-cmd', '$(LINK)')
+ self.link_cmd = options.get('link-cmd', '$(LINK_LIB)')
self.external_lib = options.get('external-lib')
self.external_project = options.get('external-project')
@@ -659,6 +659,14 @@
self.msvc_force_static = options.get('msvc-force-static') == 'yes'
+ if self.install in ['test', 'bdb-test', 'sub-test', ]:
+ self.link_cmd = '$(LINK_TEST)'
+ elif self.install in ['bin', 'tools']:
+ self.link_cmd = '$(LINK_EXE)'
+ elif self.link_cmd == '$(LINK_LIB)':
+ raise GenError('ERROR: Unknown executable link type for ' + self.name + \
+ ': ' + self.link_cmd + ' (' + self.install + ')')
+
def add_dependencies(self):
TargetLinked.add_dependencies(self)
--- subversion-1.12.0/Makefile.in.linking
+++ subversion-1.12.0/Makefile.in
@@ -268,11 +268,14 @@
COMPILE_SVNXX = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) -o $@ -c
COMPILE_SVNXX_TEST = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) $(BOOST_TEST_CPPFLAGS) -o $@ -c
-LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_LIB = $(LINK) $(LT_SO_VERSION)
-LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
-LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
-LINK_SVNXX_TEST = $(LINK_CXX) $(BOOST_TEST_LDFLAGS)
+LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS)
+LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS)
+LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION) -rpath $(libdir)
+LINK_SVNXX_TEST = $(LINK_CXX) $(BOOST_TEST_LDFLAGS) -no-install
+LINK_TEST = $(LINK) -no-install
+LINK_TEST_LIB = $(LINK_TEST) -avoid-version
+LINK_EXE = $(LINK)
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared

View File

@ -0,0 +1,14 @@
Suppress gcc 10 warning.
--- subversion-1.14.0/subversion/tests/svn_test.h.testwarn
+++ subversion-1.14.0/subversion/tests/svn_test.h
@@ -128,7 +128,7 @@
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, \
"Strings not equal\n Expected: '%s'\n Found: '%s'" \
"\n at %s:%d", \
- tst_str2, tst_str1, __FILE__, __LINE__); \
+ tst_str2 ? tst_str2 : "(NULL)", tst_str1 ? tst_str1 : "(NULL)", __FILE__, __LINE__); \
} while(0)
/** Handy macro for testing integer equality.

View File

@ -0,0 +1,30 @@
See upstream dev@subversion thread. Fixes intermittent failure of
javahl tests, particularly reproducible on aarch64.
Message-ID: <11de5f5c-5059-b973-95a1-385e7913a63a@syntevo.com>
From: Alexandr Miloslavskiy
--- subversion-1.14.1/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java.fixjavatests
+++ subversion-1.14.1/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
@@ -4676,7 +4676,19 @@
// RuntimeException("Test exception") is expected here
}
- tunnelAgent.joinAndTest();
+ // In this test, there is a race condition that sometimes results in
+ // IOException when 'WAIT_TUNNEL' tries to read from a pipe that
+ // already has its read end closed. This is not an error, but
+ // it's hard to distinguish this case from other IOException which
+ // indicate a problem. To reproduce, simply wrap this test's body in
+ // a loop. The workaround is to ignore any detected IOException.
+ //
+ // tunnelAgent.joinAndTest();
+ try {
+ tunnelAgent.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace ();
+ }
}
/**

View File

@ -0,0 +1,14 @@
Fix intermittent failures when "svn add" guesses a near-empty file is binary and hence
the output is different.
--- subversion-1.14.1/subversion/tests/cmdline/svntest/main.py.testnoautoprops
+++ subversion-1.14.1/subversion/tests/cmdline/svntest/main.py
@@ -691,6 +691,7 @@
[miscellany]
interactive-conflicts = false
+enable-magic-file = no
"""
if exclusive_wc_locks:
config_contents += """

View File

@ -0,0 +1,24 @@
Don't expose private symbols for the Apache modules DSO.
--- subversion-1.14.2/build/generator/gen_base.py.modsyms
+++ subversion-1.14.2/build/generator/gen_base.py
@@ -727,13 +727,17 @@
def __init__(self, name, options, gen_obj):
TargetLib.__init__(self, name, options, gen_obj)
+ if name[:4] != "mod_":
+ raise Exception("Apache module targets must be named mod_*")
+
tfile = name + self.gen_obj._extension_map['lib', 'target']
self.filename = build_path_join(self.path, tfile)
+ modsyms = name[4:] + '_[^_].*'
# we have a custom linking rule
### hmm. this is Makefile-specific
self.compile_cmd = '$(COMPILE_APACHE_MOD)'
- self.link_cmd = '$(LINK_APACHE_MOD)'
+ self.link_cmd = '$(LINK_APACHE_MOD) -export-symbols-regex ' + modsyms
class TargetSharedOnlyLib(TargetLib):

View File

@ -0,0 +1,23 @@
Subversion libraries don't get properly versioned so the library
names are always "libsvn_foo-1.so.0.0.0". Provide proper
versioning information to libtool *without* changing the soname
for compatibility with upstream, so on-disk filenames are
unique across different releases.
--- subversion-1.14.2/configure.ac.soversion
+++ subversion-1.14.2/configure.ac
@@ -112,7 +112,12 @@
SVN_APR_MAJOR_VERSION=1
fi
AC_SUBST(SVN_APR_MAJOR_VERSION)
-SVN_LT_SOVERSION="-version-info $svn_lib_ver"
+
+m4_define([svn_ver_minor], m4_bpatsubst(AC_PACKAGE_VERSION, [[0-9]*\.\([0-9]*\)\.[0-9]*], [\1]))
+m4_define([svn_ver_patch], m4_bpatsubst(AC_PACKAGE_VERSION, [[0-9]*\.[0-9]*\.\([0-9]*\)], [\1]))
+svn_ver_current="`expr $svn_lib_ver + svn_ver_minor`"
+
+SVN_LT_SOVERSION="-version-info $svn_ver_current:svn_ver_patch:svn_ver_minor"
AC_SUBST(SVN_LT_SOVERSION)
AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
[Subversion library major verson])

View File

@ -0,0 +1,25 @@
commit ca640b37f8a50b18d76970fd6554e05801b7e81b
Author: Tomas Korbar <tkorbar@redhat.com>
Date: Fri Jan 12 14:39:26 2024 +0100
Fix tests with zlib-ng
diff --git a/subversion/tests/cmdline/patch_tests.py b/subversion/tests/cmdline/patch_tests.py
index f52f12e..5950170 100755
--- a/subversion/tests/cmdline/patch_tests.py
+++ b/subversion/tests/cmdline/patch_tests.py
@@ -5797,11 +5797,11 @@ def patch_binary_file(sbox):
'diff --git a/iota b/iota\n',
'GIT binary patch\n',
'literal 48\n',
- 'zc$^E#$ShU>qLPeMg|y6^R0Z|S{E|d<JuZf(=9bpB_PpZ!+|-hc%)E52)STkf{{Wp*\n',
- 'B5)uFa\n',
+ 'zc$^E#$ShXKELJGVNL5J7%t=*H&&)4LRM+ETXlib0ZEMdf&d*IP$;ix0=Ss~fPW=x6\n',
+ 'Dol+7K\n',
'\n',
'literal 25\n',
- 'ec$^E#$ShU>qLPeMg|y6^R0Z|S{E|d<JuU!m{s;*G\n',
+ 'gc$^E#$ShXKELJGVNL5J7%t=*H&&)4LRM+DI0B`;X2><{9\n',
'\n',
'Property changes on: iota\n',
'___________________________________________________________________\n',

27
subversion-ruby-c99.patch Normal file
View File

@ -0,0 +1,27 @@
The Ruby bindings apply the Ruby NIL_P macro to an apr_hash_t * value,
which some compilers flag as a type error.
Submitted upstream: <https://issues.apache.org/jira/browse/SVN-4915>
diff --git a/subversion/bindings/swig/include/svn_containers.swg b/subversion/bindings/swig/include/svn_containers.swg
index d3c6305a412b6505..47bc50a92bb8b433 100644
--- a/subversion/bindings/swig/include/svn_containers.swg
+++ b/subversion/bindings/swig/include/svn_containers.swg
@@ -299,7 +299,7 @@
$1 = svn_swig_rb_hash_to_apr_hash_svn_string($input, _global_pool);
_global_pool = NULL;
if (!NIL_P(rb_pool)) {
- if (NIL_P($1)) {
+ if ($1 == NULL) {
svn_swig_rb_destroy_pool(rb_pool);
} else {
svn_swig_rb_set_pool_for_no_swig_type($input, rb_pool);
@@ -373,7 +373,7 @@
svn_swig_rb_hash_to_apr_hash_string($input, _global_pool);
_global_pool = NULL;
if (!NIL_P(rb_pool)) {
- if (NIL_P($1)) {
+ if ($1 == NULL) {
svn_swig_rb_destroy_pool(rb_pool);
} else {
svn_swig_rb_set_pool_for_no_swig_type($input, rb_pool);

View File

@ -1,18 +1,38 @@
# set to zero to avoid running test suite # Disable to avoid all the test suites
%bcond_with tests
# Disable automatic .la file removal
%global __brp_remove_la_files %nil
%if 0%{?rhel} || 0%{?eln}
%bcond_with kwallet
%else
%bcond_without kwallet %bcond_without kwallet
%endif
%if 0%{?fedora} > 32 || 0%{?rhel} > 8
%bcond_with bdb
%else
%bcond_without bdb
%endif
# Python 2 for F<32, Python 3 for F>=32 and RHEL>=9
%if 0%{?fedora} < 32 && 0%{?rhel} < 9
%bcond_without python2 %bcond_without python2
%bcond_with python3 %bcond_with python3
%bcond_without bdb
%bcond_without tests
%bcond_without pyswig %bcond_without pyswig
%bcond_without ruby
%ifarch %{power64} s390x
%global with_java 0
%else %else
%global with_java 1 %bcond_with python2
%bcond_without python3
%bcond_without pyswig
%bcond_with ruby
%endif %endif
# do not build java package on RHEL 10
%bcond_with java
%if %{with python2} == %{with python3} %if %{with python2} == %{with python3}
%error Pick exactly one Python version %error Pick exactly one Python version
%endif %endif
@ -36,13 +56,11 @@
Summary: A Modern Concurrent Version Control System Summary: A Modern Concurrent Version Control System
Name: subversion Name: subversion
Version: 1.10.2 Version: 1.14.3
Release: 3%{?dist} Release: 8%{?dist}
License: ASL 2.0 License: Apache-2.0
Group: Development/Tools
URL: https://subversion.apache.org/ URL: https://subversion.apache.org/
Source0: https://downloads.apache.org/subversion/subversion-%{version}.tar.bz2
Source0: https://www.apache.org/dist/subversion/subversion-%{version}.tar.bz2
Source1: subversion.conf Source1: subversion.conf
Source3: filter-requires.sh Source3: filter-requires.sh
Source4: http://www.xsteve.at/prg/emacs/psvn.el Source4: http://www.xsteve.at/prg/emacs/psvn.el
@ -50,19 +68,24 @@ Source5: psvn-init.el
Source6: svnserve.service Source6: svnserve.service
Source7: svnserve.tmpfiles Source7: svnserve.tmpfiles
Source8: svnserve.sysconf Source8: svnserve.sysconf
Patch1: subversion-1.10.0-rpath.patch Patch1: subversion-1.12.0-linking.patch
Patch2: subversion-1.10.0-pie.patch Patch2: subversion-1.14.0-testwarn.patch
Patch3: subversion-1.14.2-soversion.patch
Patch4: subversion-1.8.0-rubybind.patch Patch4: subversion-1.8.0-rubybind.patch
Patch5: subversion-1.8.5-swigplWall.patch Patch5: subversion-1.8.5-swigplWall.patch
Patch6: subversion-1.10.2-CVE-2019-0203.patch Patch6: subversion-1.14.1-testnomagic.patch
Patch7: subversion-1.10.2-CVE-2018-11782.patch Patch7: subversion-ruby-c99.patch
BuildRequires: autoconf, libtool, texinfo, which Patch8: subversion-1.14.2-modsyms.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2255746
Patch9: subversion-1.14.3-zlib-ng.patch
BuildRequires: make
BuildRequires: autoconf, libtool, texinfo, which, gcc, gcc-c++
BuildRequires: swig >= 1.3.24, gettext BuildRequires: swig >= 1.3.24, gettext
%if %{with bdb} %if %{with bdb}
BuildRequires: libdb-devel >= 4.1.25 BuildRequires: libdb-devel >= 4.1.25
%endif %endif
BuildRequires: %{svn_python_br} BuildRequires: %{svn_python_br}
BuildRequires: apr-devel >= 1.3.0, apr-util-devel >= 1.3.0 BuildRequires: apr-devel >= 1.5.0, apr-util-devel >= 1.3.0
BuildRequires: libserf-devel >= 1.3.0, cyrus-sasl-devel BuildRequires: libserf-devel >= 1.3.0, cyrus-sasl-devel
BuildRequires: sqlite-devel >= 3.4.0, file-devel, systemd-units BuildRequires: sqlite-devel >= 3.4.0, file-devel, systemd-units
BuildRequires: utf8proc-devel, lz4-devel BuildRequires: utf8proc-devel, lz4-devel
@ -89,10 +112,9 @@ instead of every complete file. Subversion is intended to be a
compelling replacement for CVS. compelling replacement for CVS.
%package libs %package libs
Group: Development/Tools
Summary: Libraries for Subversion Version Control system Summary: Libraries for Subversion Version Control system
# APR 1.3.x interfaces are required # APR 1.3.x interfaces are required
Conflicts: apr%{?_isa} < 1.3.0 Conflicts: apr%{?_isa} < 1.5.0
# Enforced at run-time by ra_serf # Enforced at run-time by ra_serf
Conflicts: libserf%{?_isa} < 1.3.0 Conflicts: libserf%{?_isa} < 1.3.0
@ -108,7 +130,6 @@ Provides: %{name}-python = %{version}-%{release}
Provides: %{name}-python%{?_isa} = %{version}-%{release} Provides: %{name}-python%{?_isa} = %{version}-%{release}
Obsoletes: %{name}-python < %{version}-%{release} Obsoletes: %{name}-python < %{version}-%{release}
BuildRequires: python2-devel BuildRequires: python2-devel
Group: Development/Libraries
Summary: Python bindings for Subversion Version Control system Summary: Python bindings for Subversion Version Control system
%description -n python2-subversion %description -n python2-subversion
@ -118,9 +139,10 @@ Subversion libraries.
%if %{with python3} && %{with pyswig} %if %{with python3} && %{with pyswig}
%package -n python3-subversion %package -n python3-subversion
%{?python_provide:%python_provide python3-subversion} %{?python_provide:%python_provide python3-subversion}
Group: Development/Libraries
Summary: Python bindings for Subversion Version Control system Summary: Python bindings for Subversion Version Control system
BuildRequires: python3-devel BuildRequires: python3-devel py3c-devel
BuildRequires: (python3-setuptools if python3-devel >= 3.12)
Requires: subversion-libs%{?_isa} = %{version}-%{release}
%description -n python3-subversion %description -n python3-subversion
The python3-subversion package includes the Python 3.x bindings to the The python3-subversion package includes the Python 3.x bindings to the
@ -128,9 +150,8 @@ Subversion libraries.
%endif %endif
%package devel %package devel
Group: Development/Tools
Summary: Development package for the Subversion libraries Summary: Development package for the Subversion libraries
Requires: subversion%{?_isa} = %{version}-%{release} Requires: subversion-libs%{?_isa} = %{version}-%{release}
Requires: apr-devel%{?_isa}, apr-util-devel%{?_isa} Requires: apr-devel%{?_isa}, apr-util-devel%{?_isa}
%description devel %description devel
@ -138,9 +159,8 @@ The subversion-devel package includes the libraries and include files
for developers interacting with the subversion package. for developers interacting with the subversion package.
%package gnome %package gnome
Group: Development/Tools
Summary: GNOME Keyring support for Subversion Summary: GNOME Keyring support for Subversion
Requires: subversion%{?_isa} = %{version}-%{release} Requires: subversion-libs%{?_isa} = %{version}-%{release}
BuildRequires: dbus-devel, libsecret-devel BuildRequires: dbus-devel, libsecret-devel
%description gnome %description gnome
@ -149,10 +169,10 @@ passwords in the GNOME Keyring.
%if %{with kwallet} %if %{with kwallet}
%package kde %package kde
Group: Development/Tools
Summary: KDE Wallet support for Subversion Summary: KDE Wallet support for Subversion
Requires: subversion%{?_isa} = %{version}-%{release} Requires: subversion-libs%{?_isa} = %{version}-%{release}
BuildRequires: kdelibs-devel >= 4.0.0 BuildRequires: qt5-qtbase-devel >= 5.0.0, kf5-kwallet-devel, kf5-ki18n-devel
BuildRequires: kf5-kcoreaddons-devel
%description kde %description kde
The subversion-kde package adds support for storing Subversion The subversion-kde package adds support for storing Subversion
@ -160,7 +180,6 @@ passwords in the KDE Wallet.
%endif %endif
%package -n mod_dav_svn %package -n mod_dav_svn
Group: System Environment/Daemons
Summary: Apache httpd module for Subversion server Summary: Apache httpd module for Subversion server
Requires: httpd-mmn = %{_httpd_mmn} Requires: httpd-mmn = %{_httpd_mmn}
Requires: subversion-libs%{?_isa} = %{version}-%{release} Requires: subversion-libs%{?_isa} = %{version}-%{release}
@ -171,22 +190,19 @@ The mod_dav_svn package allows access to a Subversion repository
using HTTP, via the Apache httpd server. using HTTP, via the Apache httpd server.
%package perl %package perl
Group: Development/Libraries
Summary: Perl bindings to the Subversion libraries Summary: Perl bindings to the Subversion libraries
BuildRequires: perl-devel >= 2:5.8.0, perl-generators, perl(ExtUtils::MakeMaker) BuildRequires: perl-devel >= 2:5.8.0, perl-generators, perl(ExtUtils::MakeMaker)
BuildRequires: perl(Test::More), perl(ExtUtils::Embed) BuildRequires: perl(Test::More), perl(ExtUtils::Embed)
Requires: %(eval `perl -V:version`; echo "perl(:MODULE_COMPAT_$version)") Requires: subversion-libs%{?_isa} = %{version}-%{release}
Requires: subversion%{?_isa} = %{version}-%{release}
%description perl %description perl
This package includes the Perl bindings to the Subversion libraries. This package includes the Perl bindings to the Subversion libraries.
%if %{with_java} %if %{with java}
%package javahl %package javahl
Group: Development/Libraries
Summary: JNI bindings to the Subversion libraries Summary: JNI bindings to the Subversion libraries
Requires: subversion = %{version}-%{release} Requires: subversion = %{version}-%{release}
BuildRequires: java-devel-openjdk BuildRequires: java-17-openjdk-devel
# JAR repacking requires both zip and unzip in the buildroot # JAR repacking requires both zip and unzip in the buildroot
BuildRequires: zip, unzip BuildRequires: zip, unzip
# For the tests # For the tests
@ -197,44 +213,58 @@ BuildArch: noarch
This package includes the JNI bindings to the Subversion libraries. This package includes the JNI bindings to the Subversion libraries.
%endif %endif
%if %{with ruby}
%package ruby %package ruby
Group: Development/Libraries
Summary: Ruby bindings to the Subversion libraries Summary: Ruby bindings to the Subversion libraries
BuildRequires: ruby-devel >= 1.9.1, ruby >= 1.9.1 BuildRequires: ruby-devel >= 1.9.1, ruby >= 1.9.1
BuildRequires: rubygem(test-unit) BuildRequires: rubygem(test-unit)
Requires: subversion%{?_isa} = %{version}-%{release} Requires: subversion-libs%{?_isa} = %{version}-%{release}
Conflicts: ruby-libs%{?_isa} < 1.8.2 Conflicts: ruby-libs%{?_isa} < 1.8.2
%description ruby %description ruby
This package includes the Ruby bindings to the Subversion libraries. This package includes the Ruby bindings to the Subversion libraries.
%endif
%package tools %package tools
Group: Development/Tools
Summary: Supplementary tools for Subversion Summary: Supplementary tools for Subversion
Requires: subversion%{?_isa} = %{version}-%{release} Requires: subversion-libs%{?_isa} = %{version}-%{release}
%description tools %description tools
This package includes supplementary tools for use with Subversion. This package includes supplementary tools for use with Subversion.
%prep %prep
%setup -q %setup -q
%patch1 -p1 -b .rpath %patch -P1 -p1 -b .linking
%patch2 -p1 -b .pie %patch -P2 -p1 -b .testwarn
%patch4 -p1 -b .rubybind %patch -P3 -p1 -b .soversion
%patch5 -p1 -b .swigplWall %patch -P4 -p1 -b .rubybind
%patch6 -p1 -b .cve0203 %patch -P5 -p1 -b .swigplWall
%patch7 -p1 -b .cve11782 %patch -P6 -p1 -b .testnomagic
%patch -P7 -p1
%patch -P8 -p1 -b .modsyms
%patch -P9 -p1 -b .zlib
:
: === Building:
: === Python3=%{with python3} Python2=%{with python2} PySwig=%{with pyswig}
: === Java=%{with java} Ruby=%{with ruby}
: === BDB=%{with bdb} Tests=%{with tests} KWallet=%{with kwallet}
:
%build %build
# Regenerate the buildsystem, so that: # Regenerate the buildsystem, so that any patches applied to
# 1) patches applied to configure.in take effect # configure, swig bindings etc take effect.
# 2) the swig bindings are regenerated using the system swig
# (2) is not ideal since typically upstream test with a different
# swig version
# This PATH order makes the fugly test for libtoolize work...
mv build-outputs.mk build-outputs.mk.old mv build-outputs.mk build-outputs.mk.old
export PYTHON=%{svn_python} export PYTHON=%{svn_python}
### Force regeneration of swig bindings with the buildroot's SWIG.
# Generated files depend on the build/generator/swig/*.py which
# generates them, so when autogen-standalone.mk's autogen-swig target
# is run by autogen.sh it will regenerate them:
touch build/generator/swig/*.py
### Regenerate everything:
# This PATH order makes the fugly test for libtoolize work...
PATH=/usr/bin:$PATH ./autogen.sh --release PATH=/usr/bin:$PATH ./autogen.sh --release
# fix shebang lines, #111498 # fix shebang lines, #111498
@ -246,28 +276,37 @@ perl -pi -e 's|/usr/bin/env python.*|%{svn_python}|' subversion/tests/cmdline/sv
export svn_cv_ruby_link="%{__cc} -shared" export svn_cv_ruby_link="%{__cc} -shared"
export svn_cv_ruby_sitedir_libsuffix="" export svn_cv_ruby_sitedir_libsuffix=""
export svn_cv_ruby_sitedir_archsuffix="" export svn_cv_ruby_sitedir_archsuffix=""
%if 0%{?fedora} >= 32 || 0%{?rhel} >= 9
# Fix include path for ruby2.7
export svn_cv_ruby_includes="-I%{_includedir}"
%endif
#export EXTRA_CFLAGS="$RPM_OPT_FLAGS -DSVN_SQLITE_MIN_VERSION_NUMBER=3007012 \ #export EXTRA_CFLAGS="$RPM_OPT_FLAGS -DSVN_SQLITE_MIN_VERSION_NUMBER=3007012 \
# -DSVN_SQLITE_MIN_VERSION=\\\"3.7.12\\\"" # -DSVN_SQLITE_MIN_VERSION=\\\"3.7.12\\\""
export APACHE_LDFLAGS="-Wl,-z,relro,-z,now" export APACHE_LDFLAGS="-Wl,-z,relro,-z,now"
export CC=gcc CXX=g++ JAVA_HOME=%{jdk_path} export CC=gcc CXX=g++ JAVA_HOME=%{jdk_path}
export CFLAGS="%{build_cflags} -Wno-error=incompatible-pointer-types"
# neccessary for libtool compilation of bindings
export LT_CFLAGS="$CFLAGS"
%configure --with-apr=%{_prefix} --with-apr-util=%{_prefix} \ %configure --with-apr=%{_prefix} --with-apr-util=%{_prefix} \
--disable-debug \ --disable-debug \
--with-swig --with-serf=%{_prefix} \ --with-swig --with-serf=%{_prefix} \
--with-ruby-sitedir=%{ruby_vendorarchdir} \ --with-ruby-sitedir=%{ruby_vendorarchdir} \
--with-ruby-test-verbose=verbose \ --with-ruby-test-verbose=verbose \
--with-apxs=%{_httpd_apxs} --disable-mod-activation \ --with-apxs=%{_httpd_apxs} --disable-mod-activation \
--enable-plaintext-password-storage \
--with-apache-libexecdir=%{_httpd_moddir} \ --with-apache-libexecdir=%{_httpd_moddir} \
--disable-static --with-sasl=%{_prefix} \ --disable-static --with-sasl=%{_prefix} \
--with-libmagic=%{_prefix} \ --with-libmagic=%{_prefix} \
--with-gnome-keyring \ --with-gnome-keyring \
%if %{with_java} %if %{with java}
--enable-javahl \ --enable-javahl \
--with-junit=%{_prefix}/share/java/junit.jar \ --with-junit=%{_prefix}/share/java/junit.jar \
%endif %endif
%if %{with kwallet} %if %{with kwallet}
--with-kwallet=%{_includedir}/kde4:%{_libdir}/kde4/devel \ --with-kwallet=%{_includedir}:%{_libdir} \
%endif %endif
%if %{with bdb} %if %{with bdb}
--with-berkeley-db \ --with-berkeley-db \
@ -279,8 +318,11 @@ make %{?_smp_mflags} all tools
%if %{with pyswig} %if %{with pyswig}
make swig-py swig-py-lib %{swigdirs} make swig-py swig-py-lib %{swigdirs}
%endif %endif
make swig-pl swig-pl-lib swig-rb swig-rb-lib make swig-pl swig-pl-lib
%if %{with_java} %if %{with ruby}
make swig-rb swig-rb-lib
%endif
%if %{with java}
# javahl-javah does not parallel-make with javahl # javahl-javah does not parallel-make with javahl
#make javahl-java javahl-javah #make javahl-java javahl-javah
make javahl make javahl
@ -291,10 +333,16 @@ make install DESTDIR=$RPM_BUILD_ROOT
%if %{with pyswig} %if %{with pyswig}
make install-swig-py %{swigdirs} DESTDIR=$RPM_BUILD_ROOT make install-swig-py %{swigdirs} DESTDIR=$RPM_BUILD_ROOT
%endif %endif
make install-swig-pl-lib install-swig-rb DESTDIR=$RPM_BUILD_ROOT
make install-swig-pl-lib DESTDIR=$RPM_BUILD_ROOT
%if %{with ruby}
make install-swig-rb DESTDIR=$RPM_BUILD_ROOT
%endif
make pure_vendor_install -C subversion/bindings/swig/perl/native \ make pure_vendor_install -C subversion/bindings/swig/perl/native \
PERL_INSTALL_ROOT=$RPM_BUILD_ROOT PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
%if %{with_java}
%if %{with java}
make install-javahl-java install-javahl-lib javahl_javadir=%{_javadir} DESTDIR=$RPM_BUILD_ROOT make install-javahl-java install-javahl-lib javahl_javadir=%{_javadir} DESTDIR=$RPM_BUILD_ROOT
%endif %endif
@ -360,6 +408,9 @@ sed -i "/^dependency_libs/{
s,%{_libdir}/lib[^a][^p][^r][^ ']*.la, ,g; s,%{_libdir}/lib[^a][^p][^r][^ ']*.la, ,g;
}" $RPM_BUILD_ROOT%{_libdir}/*.la }" $RPM_BUILD_ROOT%{_libdir}/*.la
# Trim libdir in pkgconfig files to avoid multilib conflicts
sed -i '/^libdir=/d' $RPM_BUILD_ROOT%{_datadir}/pkgconfig/libsvn*.pc
# Install bash completion # Install bash completion
install -Dpm 644 tools/client-side/bash_completion \ install -Dpm 644 tools/client-side/bash_completion \
$RPM_BUILD_ROOT%{_datadir}/bash-completion/completions/svn $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions/svn
@ -429,7 +480,7 @@ if ! make check-swig-py; then
fi fi
%endif %endif
# check-swig-rb omitted: it runs svnserve # check-swig-rb omitted: it runs svnserve
%if %{with_java} %if %{with java}
make check-javahl make check-javahl
%endif %endif
%endif %endif
@ -443,22 +494,14 @@ make check-javahl
%postun %postun
%systemd_postun_with_restart svnserve.service %systemd_postun_with_restart svnserve.service
%post libs -p /sbin/ldconfig %ldconfig_scriptlets libs
%postun libs -p /sbin/ldconfig %ldconfig_scriptlets perl
%post perl -p /sbin/ldconfig %ldconfig_scriptlets ruby
%postun perl -p /sbin/ldconfig %if %{with java}
%ldconfig_scriptlets javahl
%post ruby -p /sbin/ldconfig
%postun ruby -p /sbin/ldconfig
%if %{with_java}
%post javahl -p /sbin/ldconfig
%postun javahl -p /sbin/ldconfig
%endif %endif
%files -f %{name}.files %files -f %{name}.files
@ -479,7 +522,10 @@ make check-javahl
%{_prefix}/lib/tmpfiles.d/svnserve.conf %{_prefix}/lib/tmpfiles.d/svnserve.conf
%files tools -f tools.files %files tools -f tools.files
%doc tools/hook-scripts tools/backup tools/bdb tools/examples tools/xslt %doc tools/hook-scripts tools/backup tools/examples tools/xslt
%if %{with bdb}
%doc tools/bdb
%endif
%files libs %files libs
%{!?_licensedir:%global license %%doc} %{!?_licensedir:%global license %%doc}
@ -487,7 +533,7 @@ make check-javahl
%{_libdir}/libsvn*.so.* %{_libdir}/libsvn*.so.*
%exclude %{_libdir}/libsvn_swig_perl* %exclude %{_libdir}/libsvn_swig_perl*
%exclude %{_libdir}/libsvn_swig_ruby* %exclude %{_libdir}/libsvn_swig_ruby*
%if %{with_java} %if %{with java}
%{_libdir}/libsvnjavahl-*.so %{_libdir}/libsvnjavahl-*.so
%endif %endif
%if %{with kwallet} %if %{with kwallet}
@ -536,22 +582,248 @@ make check-javahl
%{_libdir}/libsvn_swig_perl* %{_libdir}/libsvn_swig_perl*
%{_mandir}/man*/*::* %{_mandir}/man*/*::*
%if %{with ruby}
%files ruby %files ruby
%{_libdir}/libsvn_swig_ruby* %{_libdir}/libsvn_swig_ruby*
%{ruby_vendorarchdir}/svn %{ruby_vendorarchdir}/svn
%endif
%if %{with_java} %if %{with java}
%files javahl %files javahl
%{_javadir}/svn-javahl.jar %{_javadir}/svn-javahl.jar
%endif %endif
%changelog %changelog
* Mon May 18 2020 Joe Orton <jorton@redhat.com> - 1.10.2-3 * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 1.14.3-8
- add security fix for CVE-2018-11782 - Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Thu Aug 01 2019 Lubos Uhliarik <luhliari@redhat.com> - 1.10.2-2 * Thu Aug 08 2024 Troy Dawson <tdawson@redhat.com> - 1.14.3-7
- Resolves: #1733443 - CVE-2019-0203 subversion:1.10/subversion: remote - Bump release for Aug 2024 java mass rebuild
unauthenticated denial-of-service in subversion svnserve
* Wed Aug 07 2024 Tomas Korbar <tkorbar@redhat.com> - 1.14.3-6
- Fix debuginfo building and stop building ruby and java subpackages
- Resolves: RHEL-52974
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.14.3-5
- Bump release for June 2024 mass rebuild
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Tomas Korbar <tkorbar@redhat.com> - 1.14.3-3
- Fix building with gcc 14
- incompatible-pointer-types warnings became errors, but they've
been present for a long time and posed no threat, thus revert
the behaviour
- Resolves: rhbz#2259155
* Fri Jan 12 2024 Tomas Korbar <tkorbar@redhat.com> - 1.14.3-2
- Fix testing of binary patch
- Resolves: rhbz#2255746
* Fri Jan 05 2024 Richard Lescak <rlescak@redhat.com> - 1.14.3-1
- rebase to version 1.14.3 (#2256062)
* Wed Jan 03 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.14.2-23
- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3
* Mon Nov 20 2023 Joe Orton <jorton@redhat.com> - 1.14.2-22
- fix mod_authz_svn, mod_dontdothat (#2250182)
* Wed Nov 8 2023 Joe Orton <jorton@redhat.com> - 1.14.2-21
- restore plaintext password storage by default (per upstream)
- restrict symbols exposed by DSOs built for httpd
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.2-20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jul 11 2023 Jitka Plesnikova <jplesnik@redhat.com> - 1.14.2-19
- Perl 5.38 rebuild
* Mon Jul 03 2023 Python Maint <python-maint@redhat.com> - 1.14.2-18
- Rebuilt for Python 3.12
* Fri Jun 30 2023 Richard Lescak <rlescak@redhat.com> - 1.14.2-17
- temporary disable tests for eln to prevent FTBFS
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 1.14.2-16
- Rebuilt for Python 3.12
* Mon May 08 2023 Florian Weimer <fweimer@redhat.com> - 1.14.2-15
- Port to C99
* Thu Feb 16 2023 Richard Lescak <rlescak@redhat.com> - 1.14.2-14
- SPDX migration
* Fri Jan 27 2023 Richard Lescak <rlescak@redhat.com> - 1.14.2-13
- add requirement for python3-setuptools with new Python 3.12 (#2155420)
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.2-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jan 04 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.14.2-11
- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2
* Sun Oct 09 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.14.2-10
- Backport upstream fix for ruby3.2 support
* Wed Oct 05 2022 Richard Lescak <rlescak@redhat.com> - 1.14.2-8
- fix segfault in Python swig test (#2128024)
* Fri Jul 29 2022 Joe Orton <jorton@redhat.com> - 1.14.2-7
- improve library versioning so filenames are unique across releases
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.2-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jul 5 2022 Joe Orton <jorton@redhat.com> - 1.14.2-5
- disable libmagic during test runs
* Tue Jul 5 2022 Joe Orton <jorton@redhat.com> - 1.14.2-4
- update for new Java arches and bump to JDK 17 (#2103909)
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 1.14.2-3
- Rebuilt for Python 3.11
* Tue May 31 2022 Jitka Plesnikova <jplesnik@redhat.com> - 1.14.2-2
- Perl 5.36 rebuild
* Wed May 4 2022 Joe Orton <jorton@redhat.com> - 1.14.2-1
- update to 1.14.2 (#2073852, CVE-2021-28544, CVE-2022-24070)
* Sat Feb 05 2022 Jiri Vanek <jvanek@redhat.com> - 1.14.1-11
- Rebuilt for java-17-openjdk as system jdk
* Thu Jan 27 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.14.1-10
- F-36: rebuild against ruby31
* Mon Jan 24 2022 Timm Bäder <tbaeder@redhat.com> - 1.14.1-9
- Disable automatic .la file removal
- https://fedoraproject.org/wiki/Changes/RemoveLaFiles
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Dec 16 2021 Richard Lescak <rlescak@redhat.com> - 1.14.1-7
- Replaced deprecated method readfp() in gen_base.py to build with Python 3.11 (#2019019)
* Thu Jul 29 2021 Joe Orton <jorton@redhat.com> - 1.14.1-6
- fix intermittent FTBFS in tests (#1956806)
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 1.14.1-4
- Rebuilt for Python 3.10
* Sat May 22 2021 Jitka Plesnikova <jplesnik@redhat.com> - 1.14.1-3
- Perl 5.34 rebuild
* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.14.1-2
- Rebuilt for updated systemd-rpm-macros
See https://pagure.io/fesco/issue/2583.
* Wed Feb 10 2021 Joe Orton <jorton@redhat.com> - 1.14.1-1
- update to 1.14.1 (#1927265, #1768698)
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jan 06 2021 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.14.0-11
- F-34: rebuild against ruby 3.0
* Fri Dec 11 2020 Joe Orton <jorton@redhat.com> - 1.14.0-10
- strip libdir from pkgconfig files
- add missing -libs dep from python3-subversion
* Thu Dec 3 2020 Joe Orton <jorton@redhat.com> - 1.14.0-9
- fix KWallet conditional (#1902598)
* Mon Nov 30 2020 Jan Grulich <jgrulich@redhat.com> - 1.14.0-8
- Disable KWallet for RHEL and ELN
Resolves: bz#1902598
* Tue Sep 29 2020 Joe Orton <jorton@redhat.com> - 1.14.0-7
- bump required apr-devel
- BR gcc, gcc-c++
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-6
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jun 23 2020 Jitka Plesnikova <jplesnik@redhat.com> - 1.14.0-4
- Perl 5.32 rebuild
* Wed Jun 3 2020 Merlin Mathesius <mmathesi@redhat.com> - 1.14.0-3
- Minor conditional fixes for ELN
* Wed Jun 3 2020 Joe Orton <jorton@redhat.com> - 1.14.0-2
- use minor version as libtool library revision number
* Mon Jun 1 2020 Joe Orton <jorton@redhat.com> - 1.14.0-1
- update to 1.14.0 (#1840565, #1812195)
* Tue May 19 2020 Joe Orton <jorton@redhat.com> - 1.14.0~rc2-2
- switch subpackages to lock-step requires on -libs rather than subversion
- fixed the build-requires (Jitka Plesnikova)
* Thu Apr 30 2020 Joe Orton <jorton@redhat.com> - 1.14.0~rc2-1
- drop Berkeley DB support for Fedora > 32
- BR java-11-openjdk-devel
* Thu Apr 23 2020 Joe Orton <jorton@redhat.com> - 1.14.0~rc2-0
- update to 1.14.0-rc2
* Wed Feb 12 2020 Joe Orton <jorton@redhat.com> - 1.13.0-4
- fix FTBFS on 32-bit arches (#1800120)
- conditionally package bdb tools in -tools
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Jan 21 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.12.2-4
- F-32: fix include path for ruby 2.7
- Rebuild for ruby 2.7
* Mon Jan 6 2020 Joe Orton <jorton@redhat.com> - 1.12.2-3
- update for KDE 5 (Phil O, #1768693)
* Fri Aug 30 2019 Joe Orton <jorton@redhat.com> - 1.12.2-2
- switch to Python 3 for F32+ (#1737928)
* Thu Jul 25 2019 Joe Orton <jorton@redhat.com> - 1.12.2-1
- update to 1.12.2
* Sat Jun 01 2019 Jitka Plesnikova <jplesnik@redhat.com> - 1.12.0-2
- Perl 5.30 rebuild
* Wed May 1 2019 Joe Orton <jorton@redhat.com> - 1.12.0-1
- update to 1.12.0 (#1702471)
* Wed Apr 17 2019 Joe Orton <jorton@redhat.com> - 1.11.1-5
- fix build with APR 1.7.0 (upstream r1857391)
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jan 21 2019 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1.11.1-3
- F-30: rebuild against ruby26
* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 1.11.1-2
- Rebuilt for libcrypt.so.2 (#1666033)
* Fri Jan 11 2019 Joe Orton <jorton@redhat.com> - 1.11.1-1
- update to 1.11.1
* Wed Oct 31 2018 Joe Orton <jorton@redhat.com> - 1.11.0-1
- update to 1.11.0
* Thu Oct 11 2018 Joe Orton <jorton@redhat.com> - 1.10.3-1
- update to 1.10.3
* Fri Jul 20 2018 Joe Orton <jorton@redhat.com> - 1.10.2-1 * Fri Jul 20 2018 Joe Orton <jorton@redhat.com> - 1.10.2-1
- update to 1.10.2 (#1603197) - update to 1.10.2 (#1603197)

1
upstream Normal file
View File

@ -0,0 +1 @@
subversion-1.6.12.tar.bz2

2358
upstream-key.gpg Normal file

File diff suppressed because it is too large Load Diff