Toshaan Bharvani
2 years ago
commit
7b1696e130
16 changed files with 7941 additions and 0 deletions
@ -0,0 +1,13 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# Munge Perl requirements: |
||||||
|
# - remove dependency on Config::Inifiles |
||||||
|
# - only require File::Path >= 1.04, not >= 1.404 |
||||||
|
# (since rpmvercmp thinks 04 < 1.404, not unreasonably) |
||||||
|
# - filter out requirements for SVN:: modules; otherwise |
||||||
|
# subversion requires subversion-perl |
||||||
|
/usr/lib/rpm/perl.req $* | |
||||||
|
sed -e '/perl(Config::IniFiles)/d' \ |
||||||
|
-e '/perl(SVN::/d' \ |
||||||
|
-e 's/perl(File::Path) >= 1.0404/perl(File::Path) >= 1.04/' |
||||||
|
|
||||||
|
|
@ -0,0 +1,3 @@ |
|||||||
|
(defalias 'svn-examine 'svn-status) |
||||||
|
(autoload 'svn-status "psvn" "Examine the status of Subversion working copy in |
||||||
|
directory DIR.") |
@ -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 |
@ -0,0 +1,19 @@ |
|||||||
|
|
||||||
|
Use the minor version as the revision in the libtool version, so the library |
||||||
|
soversion is not always 0.0.0. (Does not influence the soname) |
||||||
|
|
||||||
|
--- subversion-1.14.0/configure.ac.soversion |
||||||
|
+++ subversion-1.14.0/configure.ac |
||||||
|
@@ -112,7 +112,11 @@ |
||||||
|
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])) |
||||||
|
+ |
||||||
|
+SVN_LT_SOVERSION="-version-info $svn_lib_ver:svn_ver_minor" |
||||||
|
+AC_MSG_NOTICE([SVN_LT_SOVERSION $SVN_LT_SOVERSION]) |
||||||
|
AC_SUBST(SVN_LT_SOVERSION) |
||||||
|
AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver, |
||||||
|
[Subversion library major verson]) |
@ -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. |
@ -0,0 +1,41 @@ |
|||||||
|
--- subversion-1.14.1/subversion/libsvn_repos/authz.c |
||||||
|
+++ subversion-1.14.1/subversion/libsvn_repos/authz.c |
||||||
|
@@ -130,6 +130,30 @@ |
||||||
|
static svn_object_pool__t *filtered_pool = NULL; |
||||||
|
static svn_atomic_t authz_pool_initialized = FALSE; |
||||||
|
|
||||||
|
+/* |
||||||
|
+ * Ensure that we will initialize authz again if the pool which |
||||||
|
+ * our authz caches depend on is cleared. |
||||||
|
+ * |
||||||
|
+ * HTTPD may run pre/post config hooks multiple times and clear |
||||||
|
+ * its global configuration pool which our authz pools depend on. |
||||||
|
+ * This happens in a non-threaded context during HTTPD's intialization |
||||||
|
+ * and HTTPD's main loop, so it is safe to reset static variables here. |
||||||
|
+ * (And any applications which cleared this pool while SVN threads |
||||||
|
+ * were running would crash no matter what.) |
||||||
|
+ * |
||||||
|
+ * See issue #4880, "Use-after-free of object-pools in |
||||||
|
+ * subversion/libsvn_repos/authz.c when used as httpd module" |
||||||
|
+ */ |
||||||
|
+static apr_status_t |
||||||
|
+deinit_authz(void *data) |
||||||
|
+{ |
||||||
|
+ /* The two object pools run their own cleanup handlers. */ |
||||||
|
+ authz_pool = NULL; |
||||||
|
+ filtered_pool = NULL; |
||||||
|
+ authz_pool_initialized = FALSE; |
||||||
|
+ return APR_SUCCESS; |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* Implements svn_atomic__err_init_func_t. */ |
||||||
|
static svn_error_t * |
||||||
|
synchronized_authz_initialize(void *baton, apr_pool_t *pool) |
||||||
|
@@ -143,6 +167,7 @@ |
||||||
|
SVN_ERR(svn_object_pool__create(&authz_pool, multi_threaded, pool)); |
||||||
|
SVN_ERR(svn_object_pool__create(&filtered_pool, multi_threaded, pool)); |
||||||
|
|
||||||
|
+ apr_pool_cleanup_register(pool, NULL, deinit_authz, apr_pool_cleanup_null); |
||||||
|
return SVN_NO_ERROR; |
||||||
|
} |
||||||
|
|
@ -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 (); |
||||||
|
+ } |
||||||
|
} |
||||||
|
|
||||||
|
/** |
@ -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-auto-props = no |
||||||
|
""" |
||||||
|
if exclusive_wc_locks: |
||||||
|
config_contents += """ |
@ -0,0 +1,24 @@ |
|||||||
|
|
||||||
|
Try a little harder to avoid svnserve() bind failures. |
||||||
|
|
||||||
|
--- subversion-1.8.0/subversion/bindings/swig/ruby/test/util.rb.rubybind |
||||||
|
+++ subversion-1.8.0/subversion/bindings/swig/ruby/test/util.rb |
||||||
|
@@ -39,7 +39,8 @@ module SvnTestUtil |
||||||
|
@realm = "sample realm" |
||||||
|
|
||||||
|
@svnserve_host = "127.0.0.1" |
||||||
|
- @svnserve_ports = (64152..64282).collect{|x| x.to_s} |
||||||
|
+ sport = (50000 + rand(100) * 100) |
||||||
|
+ @svnserve_ports = (sport..sport + 99).collect{|x| x.to_s} |
||||||
|
|
||||||
|
@tmp_path = Dir.mktmpdir |
||||||
|
@wc_path = File.join(@tmp_path, "wc") |
||||||
|
@@ -252,6 +253,8 @@ realm = #{@realm} |
||||||
|
"--listen-port", port, |
||||||
|
"-d", "--foreground") |
||||||
|
} |
||||||
|
+ # wait a while for svnserve to attempt a bind() and possibly fail |
||||||
|
+ sleep(1) |
||||||
|
pid, status = Process.waitpid2(@svnserve_pid, Process::WNOHANG) |
||||||
|
if status and status.exited? |
||||||
|
if $DEBUG |
@ -0,0 +1,16 @@ |
|||||||
|
|
||||||
|
Don't drop -Wall in the swig Perl bindings, otherwise building with |
||||||
|
e.g. -Wformat-security might break. |
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1037341 |
||||||
|
|
||||||
|
--- subversion-1.8.5/subversion/bindings/swig/perl/native/Makefile.PL.in.swigplWall |
||||||
|
+++ subversion-1.8.5/subversion/bindings/swig/perl/native/Makefile.PL.in |
||||||
|
@@ -54,7 +54,6 @@ my $includes = ' -I/usr/include/apr-1 |
||||||
|
# SWIG is using C++ style comments in an extern "C" code. |
||||||
|
$cflags =~ s/-ansi\s+//g; |
||||||
|
$cflags =~ s/-std=c89\s+//g; |
||||||
|
-$cflags =~ s/-Wall//g; |
||||||
|
$cflags =~ s/-Wunused//g; |
||||||
|
$cflags =~ s/-Wshadow//g; |
||||||
|
$cflags =~ s/-Wstrict-prototypes//g; |
@ -0,0 +1,41 @@ |
|||||||
|
|
||||||
|
LoadModule dav_svn_module modules/mod_dav_svn.so |
||||||
|
LoadModule authz_svn_module modules/mod_authz_svn.so |
||||||
|
LoadModule dontdothat_module modules/mod_dontdothat.so |
||||||
|
|
||||||
|
# |
||||||
|
# Example configuration to enable HTTP access for a directory |
||||||
|
# containing Subversion repositories, "/var/www/svn". Each repository |
||||||
|
# must be both: |
||||||
|
# |
||||||
|
# a) readable and writable by the 'apache' user, and |
||||||
|
# |
||||||
|
# b) labelled with the 'httpd_sys_content_t' context if using |
||||||
|
# SELinux |
||||||
|
# |
||||||
|
|
||||||
|
# |
||||||
|
# To create a new repository "http://localhost/repos/stuff" using |
||||||
|
# this configuration, run as root: |
||||||
|
# |
||||||
|
# # cd /var/www/svn |
||||||
|
# # svnadmin create stuff |
||||||
|
# # chown -R apache:apache stuff |
||||||
|
# # chcon -R -t httpd_sys_content_t stuff |
||||||
|
# |
||||||
|
|
||||||
|
#<Location /repos> |
||||||
|
# DAV svn |
||||||
|
# SVNParentPath /var/www/svn |
||||||
|
# |
||||||
|
# # Limit write permission to list of valid users. |
||||||
|
# <LimitExcept GET PROPFIND OPTIONS REPORT> |
||||||
|
# # Require SSL connection for password protection. |
||||||
|
# # SSLRequireSSL |
||||||
|
# |
||||||
|
# AuthType Basic |
||||||
|
# AuthName "Authorization Realm" |
||||||
|
# AuthUserFile /path/to/passwdfile |
||||||
|
# Require valid-user |
||||||
|
# </LimitExcept> |
||||||
|
#</Location> |
@ -0,0 +1,13 @@ |
|||||||
|
[Unit] |
||||||
|
Description=Subversion protocol daemon |
||||||
|
After=syslog.target network.target |
||||||
|
Documentation=man:svnserve(8) |
||||||
|
|
||||||
|
[Service] |
||||||
|
Type=forking |
||||||
|
EnvironmentFile=/etc/sysconfig/svnserve |
||||||
|
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS |
||||||
|
PrivateTmp=yes |
||||||
|
|
||||||
|
[Install] |
||||||
|
WantedBy=multi-user.target |
@ -0,0 +1,4 @@ |
|||||||
|
# OPTIONS is used to pass command-line arguments to svnserve. |
||||||
|
# |
||||||
|
# Specify the repository location in -r parameter: |
||||||
|
OPTIONS="-r /var/svn" |
Loading…
Reference in new issue