Use strip-nondeterminism to normalize jar mtimes

OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm:svn/subversion?expand=0&rev=368
This commit is contained in:
2024-09-27 09:35:42 +00:00
committed by Git OBS Bridge
commit 851331c60f
34 changed files with 22482 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

20
_constraints Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<constraints>
<hardware>
<memory>
<size unit="M">1024</size>
</memory>
</hardware>
<overwrite>
<conditions>
<arch>aarch64</arch>
<package>subversion:testsuite</package>
</conditions>
<hardware>
<cpu>
<flag>asimdrdm</flag>
</cpu>
</hardware>
</overwrite>
</constraints>

3
_multibuild Normal file
View File

@@ -0,0 +1,3 @@
<multibuild>
<package>testsuite</package>
</multibuild>

3
contrib-1804739.tar.bz2 Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:730fbf35e19461abe0cfb489ca6f75211497c7b25fb6e45138662c0ec2f0b0f5
size 286671

View File

@@ -0,0 +1,20 @@
Index: subversion-1.14.2/build.conf
===================================================================
--- subversion-1.14.2.orig/build.conf
+++ subversion-1.14.2/build.conf
@@ -806,15 +806,6 @@ msvc-force-static = yes
# ----------------------------------------------------------------------------
# Tests for libsvn_fs_fs
-[fs-fs-pack-test]
-description = Test fsfs packing in libsvn_fs_fs
-type = exe
-path = subversion/tests/libsvn_fs_fs
-sources = fs-fs-pack-test.c
-install = test
-libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
- libsvn_subr apriconv apr
-msvc-force-static = yes
[fs-fs-fuzzy-test]
description = Use fuzzying to test FSFS corruption resilience

23
fix-javahl-test.patch Normal file
View File

@@ -0,0 +1,23 @@
--- a/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java.orig
+++ b/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
@@ -4744,7 +4744,19 @@ public class BasicTests extends SVNTests
ex.printStackTrace();
}
- 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,18 @@
Index: subversion-1.14.2/subversion/bindings/javahl/native/SVNClient.cpp
===================================================================
--- subversion-1.14.2.orig/subversion/bindings/javahl/native/SVNClient.cpp
+++ subversion-1.14.2/subversion/bindings/javahl/native/SVNClient.cpp
@@ -77,10 +77,13 @@
#include "private/svn_subr_private.h"
#include "svn_private_config.h"
+#pragma GCC push_options
+#pragma GCC optimize("-O0")
#include "ExternalItem.hpp"
#include "jniwrapper/jni_list.hpp"
#include "jniwrapper/jni_stack.hpp"
#include "jniwrapper/jni_string_map.hpp"
+#pragma GCC pop_options
SVNClient::SVNClient(jobject jthis_in)

View File

@@ -0,0 +1,55 @@
From: Antonio Larrosa <alarrosa@suse.com>
Subject: Removes requirement for kf5-config (kdelibs4support)
With this, we don't need to include kdelibs4support and all its dependencies on SLE
Index: subversion-1.14.0/build/ac-macros/kwallet.m4
===================================================================
--- subversion-1.14.0.orig/build/ac-macros/kwallet.m4
+++ subversion-1.14.0/build/ac-macros/kwallet.m4
@@ -59,30 +59,13 @@ AC_DEFUN(SVN_LIB_KWALLET,
kde_lib_names="-lkdeui -lkdecore -lQtGui -lQtDBus -lQtCore"
fi
if test -n "$qt_pkg_config_names"; then
- if test "$svn_lib_kwallet" != "yes"; then
- AC_MSG_CHECKING([for $kde_config_name])
- KDE_CONFIG="$svn_lib_kwallet/bin/$kde_config_name"
- if test -f "$KDE_CONFIG" && test -x "$KDE_CONFIG"; then
- AC_MSG_RESULT([yes])
+ if echo "$svn_lib_kwallet" | $EGREP ":" > /dev/null; then
+ kde_incdir=["`echo "$svn_lib_kwallet" | $SED -e "s/:.*//"`"]
+ kde_libdir=["`echo "$svn_lib_kwallet" | $SED -e "s/.*://"`"]
else
- if echo "$svn_lib_kwallet" | $EGREP ":" > /dev/null; then
- AC_MSG_RESULT([unneeded])
- KDE_CONFIG="unneeded"
- kde_incdir=["`echo "$svn_lib_kwallet" | $SED -e "s/:.*//"`"]
- kde_libdir=["`echo "$svn_lib_kwallet" | $SED -e "s/.*://"`"]
- else
- AC_MSG_RESULT([no])
- KDE_CONFIG=""
- fi
- fi
- else
- AC_PATH_PROG(KDE_CONFIG, $kde_config_name)
- if test -n "$KDE_CONFIG"; then
- kde_incdir="`$KDE_CONFIG --install include`"
- kde_libdir="`$KDE_CONFIG --install lib`"
+ kde_incdir="${includedir}"
+ kde_libdir="${libdir}"
fi
- fi
- if test -n "$KDE_CONFIG"; then
old_CXXFLAGS="$CXXFLAGS"
old_LDFLAGS="$LDFLAGS"
old_LIBS="$LIBS"
@@ -122,9 +105,6 @@ int main()
AC_MSG_RESULT([no])
AC_MSG_ERROR([cannot find KWallet])
fi
- else
- AC_MSG_ERROR([cannot find $kde_config_name])
- fi
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([cannot find Qt])

View File

@@ -0,0 +1,12 @@
Index: subversion-1.14.3/Makefile.in
===================================================================
--- subversion-1.14.3.orig/Makefile.in
+++ subversion-1.14.3/Makefile.in
@@ -741,7 +741,6 @@ doc-api: mkdir-init
doc-javahl:
$(JAVADOC) -d $(abs_builddir)/doc/javadoc \
-sourcepath $(top_srcdir)/subversion/bindings/javahl/src \
- -link http://java.sun.com/javase/6/docs/api/ \
org.tigris.subversion.javahl \
org.apache.subversion.javahl \
org.apache.subversion.javahl.callback \

View File

@@ -0,0 +1,125 @@
------------------------------------------------------------------------
r1915239 | futatuki | 2024-01-14 20:45:41 +0100 (Sun, 14 Jan 2024) | 15 lines
swig-rb: Add type casting for some generic function pointers
With r1915236 and this commit, we can build swig-rb by using clang 16
without masking int-conversion and incompatible-function-pointer-types
errors.
* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
(svn_swig_rb_set_pool, svn_swig_rb_set_pool_for_no_swig_type,
svn_swig_rb_to_apr_array_row_prop, svn_swig_rb_to_apr_array_prop,
r2c_hash, invoke_callback, callback_handle_error,
invoke_callback_handle_error, svn_swig_rb_set_baton):
Add type casting for generic functions in Ruby C API functions.
(svn_swig_rb_hash_to_apr_hash_swig_type):
Add type casting for generic function on apr_hash_t
------------------------------------------------------------------------
Index: trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
===================================================================
--- trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (revision 1915238)
+++ trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (revision 1915239)
@@ -788,7 +788,7 @@
struct rb_set_pool_for_hash_arg arg;
arg.set = FALSE;
arg.pool = pool;
- rb_hash_foreach(target, rb_set_pool_for_hash_callback, (VALUE)&arg);
+ rb_hash_foreach(target, (int(*)(ANYARGS))rb_set_pool_for_hash_callback, (VALUE)&arg);
return arg.set;
} else {
return rb_set_pool_if_swig_type_object(target, pool);
@@ -806,7 +806,7 @@
target = rb_ary_new3(1, target);
}
- rb_iterate(rb_each, target, rb_set_pool, pool);
+ rb_iterate((VALUE(*)())rb_each, target, (VALUE(*)())rb_set_pool, pool);
}
void
@@ -1070,7 +1070,8 @@
result = apr_array_make(pool, 0, sizeof(svn_prop_t));
arg.array = result;
arg.pool = pool;
- rb_hash_foreach(array_or_hash, svn_swig_rb_to_apr_array_row_prop_callback,
+ rb_hash_foreach(array_or_hash,
+ (int(*)(ANYARGS))svn_swig_rb_to_apr_array_row_prop_callback,
(VALUE)&arg);
return result;
} else {
@@ -1125,7 +1126,8 @@
result = apr_array_make(pool, 0, sizeof(svn_prop_t *));
arg.array = result;
arg.pool = pool;
- rb_hash_foreach(array_or_hash, svn_swig_rb_to_apr_array_prop_callback,
+ rb_hash_foreach(array_or_hash,
+ (int(*)(ANYARGS))svn_swig_rb_to_apr_array_prop_callback,
(VALUE)&arg);
return result;
} else {
@@ -1548,7 +1550,7 @@
data.func = func;
data.pool = pool;
- rb_hash_foreach(hash, r2c_hash_i, (VALUE)&data);
+ rb_hash_foreach(hash, (int(*)(ANYARGS))r2c_hash_i, (VALUE)&data);
return apr_hash;
}
@@ -1570,7 +1572,9 @@
apr_hash_t *
svn_swig_rb_hash_to_apr_hash_swig_type(VALUE hash, const char *typename, apr_pool_t *pool)
{
- return r2c_hash(hash, r2c_swig_type, (void *)typename, pool);
+ /* Note: casting to r2c_cunc for r2c_swig_type may unsafe, because
+ it contains the cast from "const void *" to "void *" */
+ return r2c_hash(hash, (r2c_func)r2c_swig_type, (void *)typename, pool);
}
apr_hash_t *
@@ -1651,7 +1655,8 @@
argv[0] = pool;
svn_swig_rb_get_pool(1, argv, Qnil, &subpool, NULL);
cbb->pool = subpool;
- return rb_ensure(callback, baton, callback_ensure, subpool);
+ return rb_ensure((VALUE(*)(ANYARGS))callback, baton,
+ (VALUE(*)(ANYARGS))callback_ensure, subpool);
}
static VALUE
@@ -1660,9 +1665,9 @@
callback_handle_error_baton_t *handle_error_baton;
handle_error_baton = (callback_handle_error_baton_t *)baton;
- return rb_rescue2(callback,
+ return rb_rescue2((VALUE(*)(ANYARGS))callback,
(VALUE)(handle_error_baton->callback_baton),
- callback_rescue,
+ (VALUE(*)(ANYARGS))callback_rescue,
(VALUE)(handle_error_baton->rescue_baton),
rb_svn_error(),
(VALUE)0);
@@ -1681,8 +1686,9 @@
handle_error_baton.callback_baton = cbb;
handle_error_baton.rescue_baton = &rescue_baton;
- return rb_ensure(callback_handle_error, (VALUE)&handle_error_baton,
- callback_ensure, pool);
+ return rb_ensure((VALUE(*)(ANYARGS))callback_handle_error,
+ (VALUE)&handle_error_baton,
+ (VALUE(*)(ANYARGS))callback_ensure, pool);
}
@@ -1735,7 +1741,8 @@
target = rb_ary_new3(1, target);
}
- rb_iterate(rb_each, target, add_baton_if_delta_editor, baton);
+ rb_iterate((VALUE(*)())rb_each, target,
+ (VALUE(*)())add_baton_if_delta_editor, baton);
}

View File

@@ -0,0 +1,34 @@
------------------------------------------------------------------------
r1915236 | futatuki | 2024-01-14 19:29:23 +0100 (Sun, 14 Jan 2024) | 6 lines
Changed paths:
M /subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
swig-rb: Fix condition to check that a apr_hash_t * type value is NULL
* subversion/bindings/swig/include/svn_containers.swg
(typemap(in) apr_hash_t *PROPHASH,
typemap(in) apr_hash_t *HASH_CSTRING_MAYBENULL): As above
------------------------------------------------------------------------
Index: trunk/subversion/bindings/swig/include/svn_containers.swg
===================================================================
--- trunk/subversion/bindings/swig/include/svn_containers.swg (revision 1915235)
+++ trunk/subversion/bindings/swig/include/svn_containers.swg (revision 1915236)
@@ -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

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:949efd451a09435f7e8573574c71c7b71b194d844890fa49cd61d2262ea1a440
size 8569985

View File

@@ -0,0 +1,37 @@
-----BEGIN PGP SIGNATURE-----
iQJNBAABCAA3FiEEP45GfLM2bjAT4RINWD8ArfmBw58FAmV0gDsZHGhhcnRtYW5u
YXRoYW5AYXBhY2hlLm9yZwAKCRBYPwCt+YHDn1XHD/9oHnVGwB9C6Bqg1a2pBtHF
F05j+7qQi++FK1/pLDWHgUFHc4+nSJeiB/lIjwn0rC1PT1c3rMh9K9ZTpeEc4MRL
QXMvt2IqEMhrIBSE8HW1uKRBAUnJrPT1pkmqU8DdbLDDyupRFi4f7dKPEvn1Ej31
LXJvaoqZRbJ76fEYwaM9DJdo3apGckqCtchveVkw7Jg1raJ7hYux/HGTtc7BSUcc
R17nIp0UPhC5Ier3VaA4o0yr6x317C8CPQhCtKoOYDPvu5HFNDoBBQc8h7cdbYXG
veHVlsP4scc/U6kfgxzwz4weXfN3uYktWC0IeSEAf7uhfHaXu8kocJ84/kHkG1a1
tUlYeZj82ma7MKVfldUNx1/gqwQng4sUgXsaBXw+hNTETgFj+/ez+hPtBv+thbK0
yljfIfnuNdqsnTJpmXXvp3UzO/wwLVyj3VbYe8DotLqtXHC8mSGYdBpTxVE9Chgs
iCCC4MEsGdzE99f3d60uH1jm067iYtuLWZkf+E4+4Y40F3Bt1Urs80UtvtRyv3q7
H+CocK+thEJMPHodmYunJveXCZQBRJHni/M0y2080jh4AP3/ui0OGNEgcNSuX6OR
Ihe5nAFycPiVaQpQvfxo7ulqEN3m3AQXvoSC5bV6S40bbYnHJIgov8dj+Pz+agTw
BA5m839fsofxiQOhMbHk4A==
=aL2X
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
iF0EABECAB0WIQSxzxBgoek00Z6G1tbl0wJz9Z0l8AUCZXmlZwAKCRDl0wJz9Z0l
8NfyAKCNzMW+mM42nhMPKsTTGMmBalSahwCgm7pKfbUqmf8YbXT5bFdEBlkJ9I4=
=CUBD
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
iQGzBAABCgAdFiEET/y1XA0Nk0PPtGEfKNtHMpz/3GMFAmWHR2oACgkQKNtHMpz/
3GMgggwAoerQHK4Kh4TtFiIXTlqr1BGZAvLjHyPgEJ/zzxrAh7OM7W28HDrT/Si5
DZoKdW74w459AH6VUeRhTUdDEYnziZMicnGLHSck1p56tzDb/2MBlqMmCRywU9Zi
r4SEBxcJK7wWIRho0a1BjdGnuZwGpXF1pzkQwmgxsg8PMpZqxp35RtAPA87YQaNu
KqDSJjOCeJn+ioXBSWEVhNmbTaaQtniXhPyGA41KBbctFwjUTPDMb8ZmqXtIesAj
kQD2dWKAyUPXuSJ9Y2O0OflIk7OBSDCMGnkaseaXiOXTDfD5GssYRKOhF9/jStNI
t5T58sZX7vLAX1pf8hzIxn3caIk3x41uP4AzS9khEl8sF0WC4oRmAe34NhFwJwfc
W46SqqaCt3AwHTEbTkaFtCEyl7MSDhptOSOfXywz3M4+B06X1fexSkGY8jVFpazU
8zPnNmr3xPBwSzC+E6nD3grSjnGU2s0vxL2MRK9vH5VwcKmoeHA7Hm8DHi7/Bs3G
zNp9WKBv
=piyH
-----END PGP SIGNATURE-----

View File

@@ -0,0 +1,87 @@
Prevent the linker from adding an rpath to shared libraries. Original
patch by David Kimdon <dwhedon@debian.org>. The basic theory is:
- Split the $(LINK) makefile macro into $(LINK) and $(LINK_LIB).
- Comment out LD_RUN_PATH in the Perl makefiles.
- Use libtool instead of apxs to install the apache modules.
libtool relinks without rpath in this case, apxs obviously doesn't.
---
Makefile.in | 12 +++++++-----
build.conf | 4 ++--
build/generator/gen_base.py | 3 ++-
3 files changed, 11 insertions(+), 8 deletions(-)
Index: subversion-1.14.3/Makefile.in
===================================================================
--- subversion-1.14.3.orig/Makefile.in
+++ subversion-1.14.3/Makefile.in
@@ -272,10 +272,10 @@ TEST_SHLIB_VAR_SWIG_RB=\
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 = $(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)
# special link rule for mod_dav_svn
@@ -883,7 +883,9 @@ $(SWIG_PL_DIR)/native/Makefile.PL: $(SWI
./config.status subversion/bindings/swig/perl/native/Makefile.PL
$(SWIG_PL_DIR)/native/Makefile: libsvn_swig_perl $(SWIG_PL_DIR)/native/Makefile.PL
- cd $(SWIG_PL_DIR)/native; $(SWIG_PL_PERL) Makefile.PL PREFIX=$(prefix)
+ cd $(SWIG_PL_DIR)/native; \
+ $(SWIG_PL_PERL) Makefile.PL PREFIX=$(prefix) INSTALLDIRS=vendor; \
+ sed -i -e '/^LD_RUN_PATH/s/^/#/' Makefile Makefile.[a-z]*
# There is a "readlink -f" command on some systems for the same purpose,
# but it's not as portable (e.g. Mac OS X doesn't have it). These should
Index: subversion-1.14.3/build.conf
===================================================================
--- subversion-1.14.3.orig/build.conf
+++ subversion-1.14.3/build.conf
@@ -573,7 +573,7 @@ lang = python
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) $(SWIG_PY_LIBS)
install = swig-py-lib
# need special build rule to include -DSWIGPYTHON
compile-cmd = $(COMPILE_SWIG_PY)
@@ -599,7 +599,7 @@ type = swig_lib
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)
Index: subversion-1.14.3/build/generator/gen_base.py
===================================================================
--- subversion-1.14.3.orig/build/generator/gen_base.py
+++ subversion-1.14.3/build/generator/gen_base.py
@@ -600,7 +600,7 @@ class TargetLinked(Target):
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')
@@ -654,6 +654,7 @@ class TargetExe(TargetLinked):
extmap = self.gen_obj._extension_map
self.objext = extmap['exe', 'object']
self.filename = build_path_join(self.path, name + extmap['exe', 'target'])
+ self.link_cmd = '$(LINK)'
self.manpages = options.get('manpages', '')
self.testing = options.get('testing')

View File

@@ -0,0 +1,11 @@
--- a/Makefile.in.orig
+++ b/Makefile.in
@@ -879,7 +879,7 @@ clean-swig-headers:
extraclean-swig-headers: clean-swig-headers
$(EXTRACLEAN_SWIG_HEADERS)
-$(SWIG_PL_DIR)/native/Makefile.PL: $(SWIG_SRC_DIR)/perl/native/Makefile.PL.in
+$(SWIG_PL_DIR)/native/Makefile.PL: $(SWIG_SRC_DIR)/perl/native/Makefile.PL.in libsvn_swig_perl
./config.status subversion/bindings/swig/perl/native/Makefile.PL
$(SWIG_PL_DIR)/native/Makefile: libsvn_swig_perl $(SWIG_PL_DIR)/native/Makefile.PL

View File

@@ -0,0 +1,86 @@
From: Andreas Stieger <andreas.stieger@gmx.de>
Date: Wed, 06 Mar 2013 00:05:08 +0000
Subject: Remove volatile build information
Upstream: never
Prevent unneccessary rebuilds of binary packages differing only by date, time and build host.
---
subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java | 4 ++--
subversion/libsvn_subr/opt.c | 8 ++------
subversion/libsvn_subr/version.c | 4 ++--
subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout | 1 -
subversion/tests/cmdline/getopt_tests_data/svn--version_stdout | 1 -
5 files changed, 6 insertions(+), 12 deletions(-)
Index: subversion-1.14.3/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
===================================================================
--- subversion-1.14.3.orig/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
+++ subversion-1.14.3/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
@@ -149,10 +149,10 @@ public class BasicTests extends SVNTests
{
vx = client.getVersionExtended(false);
String result = vx.getBuildDate();
- if (result == null || result.trim().length() == 0)
+ if (result == null)
throw new Exception("Build date empty");
result = vx.getBuildTime();
- if (result == null || result.trim().length() == 0)
+ if (result == null)
throw new Exception("Build time empty");
result = vx.getBuildHost();
if (result == null || result.trim().length() == 0)
Index: subversion-1.14.3/subversion/libsvn_subr/opt.c
===================================================================
--- subversion-1.14.3.orig/subversion/libsvn_subr/opt.c
+++ subversion-1.14.3/subversion/libsvn_subr/opt.c
@@ -1147,12 +1147,8 @@ svn_opt__print_version_info(const char *
if (quiet)
return svn_cmdline_printf(pool, "%s\n", SVN_VER_NUMBER);
- SVN_ERR(svn_cmdline_printf(pool, _("%s, version %s\n"
- " compiled %s, %s on %s\n\n"),
- pgm_name, SVN_VERSION,
- svn_version_ext_build_date(info),
- svn_version_ext_build_time(info),
- svn_version_ext_build_host(info)));
+ SVN_ERR(svn_cmdline_printf(pool, _("%s, version %s\n\n"),
+ pgm_name, SVN_VERSION));
SVN_ERR(svn_cmdline_printf(pool, "%s\n", svn_version_ext_copyright(info)));
if (footer)
Index: subversion-1.14.3/subversion/libsvn_subr/version.c
===================================================================
--- subversion-1.14.3.orig/subversion/libsvn_subr/version.c
+++ subversion-1.14.3/subversion/libsvn_subr/version.c
@@ -139,8 +139,8 @@ svn_version_extended(svn_boolean_t verbo
{
svn_version_extended_t *info = apr_pcalloc(pool, sizeof(*info));
- info->build_date = __DATE__;
- info->build_time = __TIME__;
+ info->build_date = "";
+ info->build_time = "";
info->build_host = SVN_BUILD_HOST;
info->copyright = apr_pstrdup
(pool, _("Copyright (C) 2023 The Apache Software Foundation.\n"
Index: subversion-1.14.3/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout
===================================================================
--- subversion-1.14.3.orig/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout
+++ subversion-1.14.3/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout
@@ -1,5 +1,4 @@
svn, version 1.9.0-dev (under development)
- compiled Feb 26 2014, 15:15:42 on x86_64-unknown-openbsd5.5
Copyright (C) 2012 The Apache Software Foundation.
This software consists of contributions made by many people;
Index: subversion-1.14.3/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout
===================================================================
--- subversion-1.14.3.orig/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout
+++ subversion-1.14.3/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout
@@ -1,5 +1,4 @@
svn, version 1.9.0-dev (under development)
- compiled Feb 26 2014, 15:15:42 on x86_64-unknown-openbsd5.5
Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people;

View File

@@ -0,0 +1,26 @@
Index: subversion-1.14.3/Makefile.in
===================================================================
--- subversion-1.14.3.orig/Makefile.in
+++ subversion-1.14.3/Makefile.in
@@ -901,7 +901,7 @@ swig-pl: autogen-swig-pl $(SWIG_PL_DIR)/
fi; \
done; \
fi
- cd $(SWIG_PL_DIR)/native; $(MAKE) OPTIMIZE="" OTHERLDFLAGS="$(SWIG_LDFLAGS)"
+ cd $(SWIG_PL_DIR)/native; $(MAKE)
check-swig-pl: swig-pl swig-pl-lib
cd $(SWIG_PL_DIR)/native; $(MAKE) test
Index: subversion-1.14.3/subversion/bindings/swig/perl/native/Makefile.PL.in
===================================================================
--- subversion-1.14.3.orig/subversion/bindings/swig/perl/native/Makefile.PL.in
+++ subversion-1.14.3/subversion/bindings/swig/perl/native/Makefile.PL.in
@@ -85,7 +85,7 @@ my %config = (
" -I$svnlib_builddir",
" -I$swig_srcdir -g"),
OBJECT => q/$(O_FILES)/,
- LIBS => [join(' ', $apr_ldflags,
+ LIBS => [join(' ', $apr_ldflags, '-lpthread -lapr-1 -lperl',
(map {"-L$_"} @ldpaths),
@ldmodules, '-lsvn_swig_perl-1',
`$swig -perl -ldflags`)],

View File

@@ -0,0 +1,13 @@
Index: subversion-1.14.2/Makefile.in
===================================================================
--- subversion-1.14.2.orig/Makefile.in
+++ subversion-1.14.2/Makefile.in
@@ -96,7 +96,7 @@ swig_rbdir = $(SWIG_RB_SITE_ARCH_DIR)/sv
toolsdir = @bindir@/svn-tools
# where to install pkg-config files
-pkgconfig_dir = $(datadir)/pkgconfig
+pkgconfig_dir = $(libdir)/pkgconfig
javahl_javadir = @libdir@/svn-javahl
javahl_javahdir = @libdir@/svn-javahl/include

3
subversion-rpmlintrc Normal file
View File

@@ -0,0 +1,3 @@
# libsvn_subr calls exit as part of the default malfunction handler.
# That's OK. Library users are expected to override the default handler.
addFilter("subversion.*shared-lib-calls-exit.*libsvn_subr-1.so.*")

View File

@@ -0,0 +1,18 @@
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
Index: subversion-1.14.2/subversion/bindings/swig/perl/native/Makefile.PL.in
===================================================================
--- subversion-1.14.2.orig/subversion/bindings/swig/perl/native/Makefile.PL.in
+++ subversion-1.14.2/subversion/bindings/swig/perl/native/Makefile.PL.in
@@ -61,7 +61,6 @@ chomp($cflags);
# 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;

View File

@@ -0,0 +1,16 @@
Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: subversion-1.14.3/Makefile.in
===================================================================
--- subversion-1.14.3.orig/Makefile.in
+++ subversion-1.14.3/Makefile.in
@@ -905,7 +905,7 @@ check-swig-pl: swig-pl swig-pl-lib
cd $(SWIG_PL_DIR)/native; $(MAKE) test
install-swig-pl: swig-pl install-swig-pl-lib
- cd $(SWIG_PL_DIR)/native; $(MAKE) install
+ cd $(SWIG_PL_DIR)/native; $(MAKE) install_vendor
EXTRACLEAN_SWIG_PL=rm -f $(SWIG_PL_SRC_DIR)/native/svn_*.c \
$(SWIG_PL_SRC_DIR)/native/core.c

265
subversion.README.SUSE Normal file
View File

@@ -0,0 +1,265 @@
Quickstart document for Apache Subversion on openSUSE.
For the full documentation, install the package subversion-doc and see
/usr/share/doc/packages/subversion/html/book/svn-book.html
An online version can be found at http://svnbook.red-bean.com/
Topics:
0. upgrading to Apache Subversion 1.11
1. mini-howto
2. allowing anonymous read access
3. serving several repositories with SVNParentPath
4. serving the repositories at "/"
5. running svnserve
6. running svnserve under a different user
7. quickstart for mod_dontdothat
================================================================================
0. upgrading to Apache Subversion 1.11
- concerns when upgrading from earlier versions
* Upgrading the Working Copy
1.11 uses the same working copy format as 1.8 through 1.10. When upgrading
a working copy from a client earlier than 1.8, a one-time execution of
"svn upgrade" is required. After that, clients earlier than 1.8 will
be unable to use the working copy. For details, please see:
https://subversion.apache.org/docs/release-notes/1.10.html#wc-upgrade
* Upgrading the Repository
1.11 can read and write repositories created by earlier versions.
"svnadmin upgrade" may be used to upgrade to FSFS format 8 of 1.10,
after which the repository will be no longer be usable for 1.9 servers.
An optional dump/load cycle may be used to apply FSFS improvements
to past revisions, for 1.10 this is the LZ4 compression feature.
https://subversion.apache.org/docs/release-notes/1.10.html#compatibility
https://subversion.apache.org/docs/release-notes/1.10.html#lz4
================================================================================
1. mini-howto
To run a subversion server, you need to configure apache2 to load two modules:
mod_dav and mod_dav_svn.
zypper in subversion-server
a2enmod dav
a2enmod dav_svn
A default/example configuration of the dav_svn module can be found in
/etc/apache2/conf.d/subversion.conf. The current default configuration
automatically includes this file the default server configuration.
The MaxKeepAliveRequests option in httpd.conf needs to be increased from 100
(the default) to at least 1000 (there is no reason why it could not be 10000).
This will improve performance by allowing serf clients to use fewer TCP
connections to the server. Clients using neon will also work fine with this
configuration.
Create some directories to contain the repositories and other files:
mkdir -p /srv/svn/repos
mkdir -p /srv/svn/user_access
mkdir -p /srv/svn/html
Edit /etc/apache2/conf.d/subversion.conf and uncomment the desired sections.
The first section "project related HTML files" is optional and will allow you
to return some static content when /repos is accessed alone. If you do not need
this, discard this section.
If instead you wish to show a list of repositories, set "SVNListParentPath on"
later. See for details:
http://svnbook.red-bean.com/en/1.8/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.browsing.reposlisting
The section following that will configure a repository to be served out of
the path /srv/svn/repos/myproject1. Note that the location "/repo/myproject1"
and "SVNPath" is specified explicitly, see section 3 for an alternative.
To create the repository itself:
cd /srv/svn/repos
svnadmin create project1
chown -R wwwrun:www project1/{db,locks}
If using svnserve is not planned, /srv/svn/repos may be owned by wwrun:www.
Otherwise see instruction in the svnserve section on how to use the user and
group svn.
The webserver must be (re)started:
rcapache2 restart
To create the user access files:
touch /srv/svn/user_access/project1_passwdfile
chown root:www /srv/svn/user_access/project1_passwdfile
chmod 640 /srv/svn/user_access/project1_passwdfile
htpasswd2 /srv/svn/user_access/project1_passwdfile user1
htpasswd2 /srv/svn/user_access/project1_passwdfile user2
Create the group file for project1:
/srv/svn/user_access/project1_groupfile
project1_committers: user2
project1_readers: user1 user2
You can test access by:
svn info http://127.0.0.1/repos/project1
================================================================================
2. allowing anonymous read access
To allow anonymous read access, remove the <Limit GET...> section and move the
three Auth* statements into the <LimitExcept GET...> section.
================================================================================
3. serving several repositories with SVNParentPath
When serving several repositories, instead of specifying each location with
SVNPath in a separate location, you can use SVNParentPath with a single location.
Change the <Location ...> directive form the template to start with the following:
<Location /repos/>
DAV svn
SVNParentPath /srv/svn/repos
SVNListParentPath on
Do not forget to restart the apache service to make the configuration effective.
service apache2 restart
================================================================================
4. serving the repositories at "/"
Include the configuration into the relevant vhost configuration. Uncomment the
section in the template files labeled 'Hosting svn at "/"' and adjust as required.
Note that this example uses "SVNParentPath" as given in the previous section.
================================================================================
5. running svnserve
Subversion repositories can be via the svnserve daemon and a special network
protocol. svnserve should not run as root user. The startup scripts expects a
user/group named 'svn'.
The subversion package creates an user and group svn.
If you want to expose the repository via both svnserve and mod_dav_svn
(Apache httpd) in parallel, ensure that the apache user is part of the
svn group.
usermod -A svn wwwrun
This requires a restart of the apache2 service to become effective.
Change the permissions to let the svn group write, and set the setgid flag
on the repositories.
chown -R svn:svn /srv/svn/repos
chmod -R g+ws /srv/svn/repos
Then proceed to create repositories using svnadmin create described above.
In either case, if using svnserve, ensure that the repositories are owned by
svn:svn.
The settings files with the options passed to the daemon is is located in:
/etc/sysconfig/svnserve
To start, ensure proper ownership of repositories and run:
systemctl start svnserve
For further information about multi-method repository access, see
http://svnbook.red-bean.com/en/1.8/svn.serverconfig.multimethod.html
You can test repository access by:
svn info svn://127.0.0.1/project1
Please note that by default, svnserve is configured to be started with -R,
meaning read-only access only. Remove to allow write access, after you have
configured access via
/srv/svn/repos/repo1/conf/svnserve.conf
To configue authentication for svnserve, see
http://svnbook.red-bean.com/en/1.8/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth
================================================================================
6. running svnserve under a different user
By default, the svnserve daemon will run with the svn:svn user and group.
To configure the user under which the svnserve daemon will be executed:
systemctl edit svnserve
Enter overriding settings as required:
[Service]
User=svn-alternate-user
Group=svn-alternate-group
Verify:
systemctl cat svnserve
Adjust permissions to /srv/svn/repos, /var/run/svnserve to allow the required
read/write access.
Make systemd pick up the changed unit file and restart the service:
systemctl daemon-reload
systemctl restart svnserve
================================================================================
7. quickstart for mod_dontdothat
The apache module mod_dontdothat can be used to prevent users from causing high
load on the server, e.g. checking out the root of the tree or the tags or
branches directories.
Make sure mod_dontdothat is loaded:
$ a2enmod dontdothat
Add configuration for the module, e.g.
<Location />
DAV svn
SVNParentPath /srv/svn/repos/
SVNListParentPath on
# [...other configuration...]
<IfModule mod_dontdothat.c>
DontDoThatConfigFile /srv/svn/mod_dontdothat.config
DontDoThatDisallowReplay off
</IfModule>
</Location>
Restart apache to make the change effective.
A fairly standard file /srv/svn/mod_dontdothat.config may contain:
[recursive-actions]
/*/trunk = allow
/ = deny
/* = deny
/*/tags = deny
/*/branches = deny
/*/* = deny
/*/*/tags = deny
/*/*/branches = deny
This allows checking out of /trunk and each branch, but disallows checking out
all branches or the complete repository at once.

4553
subversion.changes Normal file

File diff suppressed because it is too large Load Diff

110
subversion.conf Normal file
View File

@@ -0,0 +1,110 @@
# Example configuration for a subversion repository
# Install the package subversion-doc and see
# /usr/share/doc/packages/subversion for the full documentation
# An online version can be found at http://svnbook.red-bean.com/
#
<IfModule mod_dav_svn.c>
##
## project related HTML files
##
#<IfModule mod_alias.c>
#Alias /repos /srv/svn/html
#</IfModule>
#<Directory /srv/svn/html>
# Options +Indexes +Multiviews -FollowSymLinks
# IndexOptions FancyIndexing \
# ScanHTMLTitles \
# NameWidth=* \
# DescriptionWidth=* \
# SuppressLastModified \
# SuppressSize
#
# order allow,deny
# allow from all
#</Directory>
#<Location /repos/myproject1>
# DAV svn
# SVNPath /srv/svn/repos/myproject1
#
# AuthType Basic
# AuthName "Authorization Realm"
# AuthUserFile /srv/svn/user_access/myproject1_passwdfile
# AuthGroupFile /srv/svn/user_access/myproject1_groupfile
#
# # Limit read access to certain people
# <Limit GET PROPFIND OPTIONS REPORT>
# # uncomment to require SSL connection for password protection.
# # SSLRequireSSL
# Require group project1_committers
# Require group project1_readers
# </Limit>
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # uncomment to require SSL connection for password protection.
# # SSLRequireSSL
# Require group project1_committers
# </LimitExcept>
#
#</Location>
##
## Hosting svn at "/"
##
#<VirtualHost *>
# ServerName svn.example.com
# ErrorLog /var/log/apache2/svn.example.com-error_log
# TransferLog /var/log/apache2/svn.example.com-access_log
# #
# # Do not set DocumentRoot. It is not needed here and just causes trouble.
# #
# # Map the error documents back to their defaults.
# # Otherwise mod_dav_svn tries to find a "error" repository.
# #
# ErrorDocument 400 default
# ErrorDocument 401 default
# ErrorDocument 403 default
# ErrorDocument 404 default
# ErrorDocument 405 default
# ErrorDocument 408 default
# ErrorDocument 410 default
# ErrorDocument 411 default
# ErrorDocument 412 default
# ErrorDocument 413 default
# ErrorDocument 414 default
# ErrorDocument 415 default
# ErrorDocument 500 default
# ErrorDocument 501 default
# ErrorDocument 502 default
# ErrorDocument 503 default
# #
# <Location />
# DAV svn
# SVNParentPath /srv/svn/repos/
# SVNListParentPath on
# AuthType Basic
# AuthName "subversion repository"
# AuthBasicProvider file
# AuthUserFile /srv/svn/auth/svn.example.org.htpasswd
# SetOutputFilter DEFLATE
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require valid-user
# </LimitExcept>
# #
# # Optional configuration for mod_dontdothat
# # prevent users from causing high load on the server, e.g. checking out
# # the root of the tree or the tags or branches directories
# #
# #<IfModule mod_dontdothat.c>
# # DontDoThatConfigFile /srv/svn/mod_dontdothat.config
# # DontDoThatDisallowReplay off
# #</IfModule>
# </Location>
#</VirtualHost>
</IfModule>

16255
subversion.keyring Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
---
Makefile.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: subversion-1.14.2/Makefile.in
===================================================================
--- subversion-1.14.2.orig/Makefile.in
+++ subversion-1.14.2/Makefile.in
@@ -124,8 +124,8 @@ EXEEXT = @EXEEXT@
SHELL = @SHELL@
LIBTOOL = @SVN_LIBTOOL@
-LTFLAGS = --tag=CC --silent
-LTCXXFLAGS = --tag=CXX --silent
+LTFLAGS = --tag=CC
+LTCXXFLAGS = --tag=CXX
LT_CFLAGS = @LT_CFLAGS@
LT_LDFLAGS = @LT_LDFLAGS@
LT_SO_VERSION = @SVN_LT_SOVERSION@

575
subversion.spec Normal file
View File

@@ -0,0 +1,575 @@
#
# spec file for package subversion
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2009-2010 Pascal Bleser <pascal.bleser@opensuse.org>
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define svngroup svn
%define svnuser svn
%define sqlite_minimum_version 3.8.2
#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
%define _fillupdir %{_localstatedir}/adm/fillup-templates
%endif
#Compat macros for SLES 15 SP2 which does not support python_site{arch,lib}
%if 0%{?sle_version} == 150200 && !0%{?is_opensuse}
%define python_sitearch %{python3_sitearch}
%define python_sitelib %{python3_sitelib}
%endif
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "testsuite"
%global psuffix -testsuite
%else
%global psuffix %{nil}
%endif
%bcond_without gnome
%bcond_without kde
%bcond_with python_ctypes
%bcond_with all_regression_tests
Name: subversion%{psuffix}
Version: 1.14.3
Release: 0
Summary: Subversion version control system
License: Apache-2.0
URL: https://subversion.apache.org
Source0: https://www.apache.org/dist/subversion/subversion-%{version}.tar.bz2
Source1: subversion.conf
Source2: subversion.README.SUSE
Source4: contrib-1804739.tar.bz2
Source10: subversion.sysconfig.svnserve
Source14: svnserve.service
Source15: svnserve.tmpfiles
Source16: svn.sysusers
Source42: subversion.svngrep.sh
Source43: subversion.svndiff.sh
Source50: https://www.apache.org/dist/subversion/subversion-%{version}.KEYS#/subversion.keyring
Source51: https://www.apache.org/dist/subversion/subversion-%{version}.tar.bz2.asc
Source92: subversion-rpmlintrc
Patch0: subversion-pkgconfig.patch
Patch1: subversion-1.10.2-javadoc.patch
Patch11: subversion.libtool-verbose.patch
Patch20: subversion-swig-perl-install_vendor.patch
Patch23: subversion-swig-perl-Wall.patch
Patch30: subversion-1.8.0-rpath.patch
Patch37: subversion-no-build-date.patch
Patch39: subversion-fix-parallel-build-support-for-perl-bindings.patch
Patch40: subversion-perl-underlinking.patch
Patch42: gcc10-do-not-optimize-get_externals_to_pin.patch
Patch45: disable-fs-fs-pack-test.patch
# PATCH-FIX-OPENSUSE SLE-11901
Patch46: remove-kdelibs4support-dependency.patch
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1195486 bsc#1193778
# Fix testCrash_RequestChannel_nativeRead_AfterException test on aarch64 and ppc64le
Patch47: fix-javahl-test.patch
Patch48: subversion-1.14.3-gcc14.patch
Patch49: subversion-1.14.3-gcc14-2.patch
BuildRequires: apache-rpm-macros
BuildRequires: apache2-devel >= 2.2.0
BuildRequires: apache2-prefork
BuildRequires: db-devel
BuildRequires: doxygen
BuildRequires: file-devel
BuildRequires: gcc-c++
BuildRequires: java-devel >= 1.8.0
BuildRequires: junit
BuildRequires: libstdc++-devel
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: py3c-devel
BuildRequires: python3-devel >= 2.7
BuildRequires: python3-py3c
BuildRequires: python3-xml
BuildRequires: ruby-devel >= 1.8.2
BuildRequires: swig
BuildRequires: sysuser-tools
BuildRequires: strip-nondeterminism
BuildRequires: update-alternatives
BuildRequires: utf8proc-devel
BuildRequires: pkgconfig(apr-1) >= 1.3.0
BuildRequires: pkgconfig(apr-util-1) >= 1.3.0
BuildRequires: pkgconfig(krb5)
BuildRequires: pkgconfig(liblz4) >= 1.7
BuildRequires: pkgconfig(libsasl2)
BuildRequires: pkgconfig(serf-1) >= 1.3.4
BuildRequires: pkgconfig(sqlite3) >= %{sqlite_minimum_version}
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(zlib)
# in openSUSE Leap 42.3, lz4 was incorrectly packaged
BuildConflicts: pkgconfig(liblz4) = 124
Requires: libsqlite3-0 >= %{sqlite_minimum_version}
Requires(post): %fillup_prereq
# workaround for boo#969159
Conflicts: libsvn_auth_kwallet-1-0 < %{version}
Conflicts: libsvn_auth_kwallet-1-0 > %{version}
Conflicts: libsvn_gnome_keyring-1-0 < %{version}
Conflicts: libsvn_gnome_keyring-1-0 > %{version}
Provides: subversion-javahl = %{version}-%{release}
%sysusers_requires
%{?systemd_requires}
%if %{with all_regression_tests}
# tools required for network based tests
BuildRequires: net-tools
BuildRequires: time
BuildRequires: wget
%endif
%if %{with python_ctypes}
BuildRequires: ctypesgen
%endif
%if %{with gnome}
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(libsecret-1)
%endif
%if %{with kde}
BuildRequires: cmake(KF5CoreAddons)
BuildRequires: cmake(KF5I18n)
BuildRequires: cmake(KF5Wallet)
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5DBus)
BuildRequires: cmake(Qt5Gui)
%else
# In a case we migrate from system that had the kwallet integration we need it
# gone from the package to allow update
Provides: libsvn_auth_kwallet-1-0 = %{version}
Obsoletes: libsvn_auth_kwallet-1-0 < %{version}
%endif
%description
Subversion exists to be universally recognized and adopted as an open-source,
centralized version control system characterized by its reliability as a safe
haven for valuable data; the simplicity of its model and usage; and its ability
to support the needs of a wide variety of users and projects, from individuals
to large-scale enterprise operations.
%package devel
Summary: Development package for Subversion developers
Requires: libapr-util1-devel
Requires: subversion = %{version}
%description devel
The subversion-devel package includes the static libraries and include
files for developers interacting with the subversion package.
%package tools
Summary: Tools for Subversion
%description tools
This package contains some tools for subversion server and
repository admins.
%package perl
Summary: Allows Perl scripts to directly use Subversion repositories
Requires: perl = %{perl_version}
Requires: perl >= 5.8
Requires: subversion = %{version}
%description perl
Provides Perl (SWIG) support for Subversion version control system.
%package python
Summary: Allows Python scripts to directly use Subversion repositories
Requires: subversion = %{version}
%description python
Provides Python (SWIG) support for Subversion version control system.
%if %{with python_ctypes}
%package python-ctypes
Summary: High-Level Python Bindings for Subversion
Requires: subversion = %{version}
%description python-ctypes
Provides high-level Python support for Subversion, based on ctypes.
%endif
%package ruby
Summary: Allows Ruby scripts to directly use Subversion repositories
Requires: subversion = %{version}
%description ruby
Provides Ruby (SWIG) support for Subversion version control system.
%package server
Summary: Apache server module for Subversion server
Requires: %{apache_mmn}
Requires: apache2
Requires: subversion = %{version}
%description server
The subversion-server package adds the Subversion server Apache module
to the Apache directories and configuration.
%if %{with kde}
%package -n libsvn_auth_kwallet-1-0
Summary: KWallet support for Subversion
Requires: subversion = %{version}
Supplements: (subversion and kdebase4-workspace)
Supplements: (subversion and plasma5-workspace)
%description -n libsvn_auth_kwallet-1-0
Provides KWallet integration for Subversion
%endif
%if %{with gnome}
%package -n libsvn_auth_gnome_keyring-1-0
Summary: GNOME keyring sypport for Subversion
Requires: subversion = %{version}
Supplements: (subversion and gnome-session)
%description -n libsvn_auth_gnome_keyring-1-0
Provides GNOME keyring support for Subversion
%endif
%package bash-completion
Summary: Bash Completion for subversion
Requires: bash-completion
Requires: subversion = %{version}
Supplements: (%{name} and bash-completion)
BuildArch: noarch
%description bash-completion
Bash command line completion support for subversion - completion of subcommands,
parameters and keywords for the svn command and other tools.
%prep
%autosetup -p1 -a 4 -n subversion-%{version}
# do not use 'env python'
sed -i -e 's#%{_bindir}/env python#%{_bindir}/python3#' subversion/tests/cmdline/*.py
%build
%sysusers_generate_pre %{SOURCE16} subversion system-user-svn.conf
# Re-boot strap, needed for patch37
PATH=%{_prefix}/bin:$PATH ./autogen.sh --release
# Fix timestamp in doxygen
echo "HTML_TIMESTAMP = NO" >> doc/doxygen.conf
cat > with_jdk.files <<EOF-JAVA
%{_libdir}/libsvnjavahl*.so.*
%{_libdir}/libsvnjavahl*.so
%dir %{_libdir}/svn-javahl
%{_libdir}/svn-javahl/svn-javahl.jar
%{_datadir}/java/svn-javahl.jar
EOF-JAVA
# ### these possibly need further discussion
# swig_pydir = @libdir@/svn-python/libsvn
# swig_pydir_extra = @libdir@/svn-python/svn
sed --in-place=~ "
s@^swig_pydir = .*@swig_pydir = %{python_sitearch}/libsvn@
s@^swig_pydir_extra = .*@swig_pydir_extra = %{python_sitearch}/svn@
" Makefile.in
diff -u Makefile.in~ Makefile.in || true
sh -x autogen.sh
for i in subversion/bindings/javahl/native/*.cpp
do
d=$(sed -n '/^#include "..\/include/{s@^[^/]\+\([^"]\+\).*@subversion/bindings/javahl\1@;H};${x;s@\n@ @gp}' $i)
echo
echo "# $i"
if ! test -z "$d"
then
echo ${i%.cpp}.lo: $d
fi
echo
done >> build-outputs.mK
export CFLAGS="%{apache_cflags} %{optflags} -fstack-protector -fpie"
export CXXFLAGS="$CFLAGS"
export APACHE_LDFLAGS="-Wl,-z,relro,-z,now"
export LDFLAGS="-pie"
%configure \
--enable-local-library-preloading \
--with-editor="vim -c 'set tw=72 et' " \
--with-serf=%{_prefix} \
--with-apr=%{_prefix} \
--with-apr-util=%{_prefix} \
--with-apxs=%{apache_apxs} \
--with-zlib=%{_prefix} \
--with-berkeley-db=db.h:db.h:%{_prefix}:db \
--with-apache-libexecdir=%{apache_libexecdir} \
--with-jdk=%{_libdir}/jvm/java --enable-javahl \
--with-junit="%{_datadir}/java/junit.jar" \
--with-jikes=no \
--with-sqlite="%{_prefix}" \
--enable-sqlite-compatibility-version=%{sqlite_minimum_version} \
%if %{with gnome}
--with-gnome-keyring \
%endif
%if %{with kde}
--with-kwallet \
%endif
--disable-mod-activation \
--with-libmagic \
--disable-static \
--enable-broken-httpd-auth
%make_build
%make_build doc-api
# Bindings
%make_build extraclean-bindings
%make_build swig-py swig-rb swig-pl
%if %{with python_ctypes}
%make_build ctypes-python
%endif
# Java is not thread safe
%make_build -j1 JAVAC_FLAGS=" -encoding iso8859-1" javahl doc-javahl
%install
%if "%{flavor}" != "testsuite"
%make_install
make DESTDIR=%{buildroot} install-swig-py install-swig-pl install-javahl install-swig-rb
strip-nondeterminism %{buildroot}%{_libdir}/svn-javahl/svn-javahl.jar
%if %{with python_ctypes}
make DESTDIR=%{buildroot} install-ctypes-python
# remove csvn .pyc files and recompile them because they contain the $RPM_BUILD_ROOT path:
find "%{buildroot}%{python_sitelib}/csvn/" -name "*.pyc" | xargs rm -f
%py_compile %{buildroot}/%{python_sitelib}/csvn
%endif
%perl_process_packlist
%find_lang subversion
cp -Lav %{SOURCE42} %{buildroot}%{_bindir}/svngrep
cp -Lav %{SOURCE43} %{buildroot}%{_bindir}/svndiff
mkdir -p %{buildroot}%{_datadir}/emacs/site-lisp/
cp -avL contrib/client-side/emacs/*.el %{buildroot}%{_datadir}/emacs/site-lisp/
rm -f %{buildroot}%{_datadir}/emacs/site-lisp/vc-svn.el
cp -avL contrib/client-side/svn_apply_autoprops.py %{buildroot}%{_bindir}
mkdir -p %{buildroot}/%{apache_sysconfdir}/conf.d
cp -av %{SOURCE1} %{buildroot}/%{apache_sysconfdir}/conf.d/subversion.conf
cp -avL %{SOURCE2} README.SUSE
cp -avL subversion/mod_authz_svn/INSTALL README.mod_authz_svn
cat subversion.lang > files.subversion
cat with_jdk.files >> files.subversion
# tools
make DESTDIR=%{buildroot} install-tools
mv -v %{buildroot}%{_bindir}/svn-tools/{fsfs-access-map,svnauthz,svnauthz-validate,svn-populate-node-origins-index,svnraisetreeconflict} %{buildroot}%{_bindir}
# discard all other tools
rm -rf %{buildroot}%{_bindir}/svn-tools
# replicate svn-bench compatibility link
ln -sf svnbench %{buildroot}%{_bindir}/svn-bench
mkdir -p %{buildroot}%{_sbindir}
mkdir -p %{buildroot}%{_fillupdir}
install -m 644 -D %{SOURCE10} %{buildroot}%{_fillupdir}/sysconfig.svnserve
install -d -m 0755 %{buildroot}/srv/svn
install -m 644 -D %{SOURCE14} %{buildroot}/%{_unitdir}/svnserve.service
ln -sv service %{buildroot}%{_sbindir}/rcsvnserve
install -d -m 0755 %{buildroot}/%{_tmpfilesdir}
install -m 0644 %{SOURCE15} %{buildroot}/%{_tmpfilesdir}/svnserve.conf
#useless libtool stuff
rm -rf %{buildroot}%{python_sitearch}/*/*.{a,la}
rm -rf %{buildroot}%{_libdir}/libsvn_swig_*.{so,la,a}
rm -rf %{buildroot}%{rb_sitelib}/svn/ext/*.*a
find %{buildroot} -type f -name "*.la" -delete -print
# remove stuff produced with Perl modules
find %{buildroot} -type f \
-a \( -name .packlist -o \( -name '*.bs' -a -empty \) \) \
-print0 | xargs -0 rm -f
# make Perl modules writable so they get stripped
find %{buildroot}%{_prefix}/lib/perl5 -type f -perm 555 -print0 |
xargs -0 chmod 755
install -d -m 0755 %{buildroot}/%{_datadir}/java
ln -sv %{_libdir}/svn-javahl/svn-javahl.jar %{buildroot}/%{_datadir}/java/svn-javahl.jar
rm -f %{buildroot}%{_localstatedir}/adm/perl-modules/subversion
install -D -m0644 tools/client-side/bash_completion %{buildroot}%{_datadir}/bash-completion/completions/subversion
# examples
mkdir -p %{buildroot}%{_docdir}/subversion
cp -r tools/hook-scripts tools/backup tools/bdb tools/examples tools/xslt %{buildroot}%{_docdir}/subversion
find %{buildroot}%{_docdir}/subversion -type f -print0 | xargs -0 chmod 644
# clean tools for doc
rm -rf tools/*/*.in
rm -rf doc/doxygen/html/installdox
# sysusers
install -Dm0644 %{SOURCE16} %{buildroot}%{_sysusersdir}/system-user-svn.conf
%endif
%if "%{flavor}" == "testsuite"
%check
export LANG=C LC_ALL=C
echo "========= mount RAM disc"
test ! -e /dev/shm/svn-test-work && mkdir /dev/shm/svn-test-work
test -e subversion/tests/cmdline/svn-test-work && rm -rf subversion/tests/cmdline/svn-test-work
ln -s /dev/shm/svn-test-work subversion/tests/cmdline/
%make_build -Onone check FS_TYPE=fsfs CLEANUP=true || (cat fails.log; exit 1)
%make_build -Onone check-javahl || (cat fails.log; exit 1)
%make_build -Onone check-swig-pl || (cat fails.log; exit 1)
%if 0%{?suse_version} <= 1500
# swig bindings check failing from swig 4.0.0 and later
%make_build check-swig-py || (cat fails.log; exit 1)
%endif
%make_build check-swig-rb || (cat fails.log; exit 1)
%if %{with all_regression_tests}
%make_build svnserveautocheck CLEANUP=true FS_TYPE=fsfs || (cat fails.log; exit 1)
%make_build svnserveautocheck CLEANUP=true FS_TYPE=bdb || (cat fails.log; exit 1)
%make_build davautocheck CLEANUP=true FS_TYPE=fsfs || (cat fails.log; exit 1)
%make_build davautocheck CLEANUP=true FS_TYPE=bdb || (cat fails.log; exit 1)
%endif
%else
%pre -f subversion.pre
%service_add_pre svnserve.service
%preun
%service_del_preun svnserve.service
%post
%{fillup_only -n svnserve svnserve}
%service_add_post svnserve.service
systemd-tmpfiles --create %{_tmpfilesdir}/svnserve.conf
/sbin/ldconfig
%postun
%service_del_postun svnserve.service
/sbin/ldconfig
%post -n subversion-python -p /sbin/ldconfig
%postun -n subversion-python -p /sbin/ldconfig
%post -n subversion-perl -p /sbin/ldconfig
%postun -n subversion-perl -p /sbin/ldconfig
%post -n subversion-ruby -p /sbin/ldconfig
%postun -n subversion-ruby -p /sbin/ldconfig
%if %{with gnome}
%post -n libsvn_auth_gnome_keyring-1-0 -p /sbin/ldconfig
%postun -n libsvn_auth_gnome_keyring-1-0 -p /sbin/ldconfig
%endif
%if %{with kde}
%post -n libsvn_auth_kwallet-1-0 -p /sbin/ldconfig
%postun -n libsvn_auth_kwallet-1-0 -p /sbin/ldconfig
%endif
%files -f files.subversion
%license LICENSE
%doc README.SUSE BUGS CHANGES README.mod_authz_svn
%dir %{_docdir}/subversion/*
%{_docdir}/subversion
%{_sbindir}/rcsvnserve
%{_fillupdir}/sysconfig.svnserve
%dir %attr(755,%{svnuser},%{svngroup}) /srv/svn
%{_unitdir}/svnserve.service
%{_tmpfilesdir}/svnserve.conf
%{_sysusersdir}/system-user-svn.conf
%attr(755,root,root) %{_bindir}/svn
%attr(755,root,root) %{_bindir}/svnadmin
%attr(755,root,root) %{_bindir}/svndiff
%attr(755,root,root) %{_bindir}/svndumpfilter
%attr(755,root,root) %{_bindir}/svnfsfs
%attr(755,root,root) %{_bindir}/svngrep
%attr(755,root,root) %{_bindir}/svnlook
%attr(755,root,root) %{_bindir}/svnmucc
%attr(755,root,root) %{_bindir}/svnrdump
%attr(755,root,root) %{_bindir}/svnserve
%attr(755,root,root) %{_bindir}/svnsync
%attr(755,root,root) %{_bindir}/svnversion
%{_libdir}/libsvn_client*.so.*
%{_libdir}/libsvn_delta*.so.*
%{_libdir}/libsvn_diff*.so.*
%{_libdir}/libsvn_fs*.so.*
%{_libdir}/libsvn_ra*.so.*
%{_libdir}/libsvn_repos*.so.*
%{_libdir}/libsvn_subr*.so.*
%{_libdir}/libsvn_wc*.so.*
%{_mandir}/man?/svn*
%{_datadir}/emacs
%files perl
%{_mandir}/man?/SVN::*
%{_libdir}/libsvn_swig_perl-1.so.*
%{perl_vendorarch}/SVN
%{perl_vendorarch}/auto/SVN
%files python
%dir %{python_sitearch}
%dir %{python_sitearch}/svn
%dir %{python_sitearch}/libsvn
%{_libdir}/libsvn_swig_py-1.so.*
%{python_sitearch}/libsvn/*
%{python_sitearch}/svn/*
%if %{with python_ctypes}
%files python-ctypes
%doc subversion/bindings/ctypes-python/examples
%dir %{python_sitelib}
%{python_sitelib}/csvn
%{python_sitelib}/svn_ctypes_python_bindings-*-py%{py_ver}.egg-info
%endif
%files ruby
%dir %{rb_sitelib}
%{rb_sitelib}/svn
%{rb_sitelib}/*/svn
%{_libdir}/libsvn_swig_ruby-1.so.*
%files devel
%dir %{_includedir}/subversion-1
%{_libdir}/libsvn_*.so
%{_libdir}/pkgconfig/*.pc
%{_includedir}/subversion-1/*
%doc doc/doxygen/html
%files tools
%{_bindir}/fsfs-access-map
%attr(755,root,root) %{_bindir}/svn_apply_autoprops.py
%{_bindir}/svnauthz
%{_bindir}/svnauthz-validate
%{_bindir}/svnbench
%{_bindir}/svn-bench
%{_bindir}/svn-populate-node-origins-index
%{_bindir}/svnraisetreeconflict
%files server
%dir %{apache_sysconfdir}/conf.d
%config (noreplace) %{apache_sysconfdir}/conf.d/subversion.conf
%dir %{apache_libexecdir}
%{apache_libexecdir}/mod_dav_svn.*
%{apache_libexecdir}/mod_authz_svn.*
%{apache_libexecdir}/mod_dontdothat.*
%if %{with gnome}
%files -n libsvn_auth_gnome_keyring-1-0
%{_libdir}/libsvn_auth_gnome_keyring-1.so.0
%{_libdir}/libsvn_auth_gnome_keyring-1.so.0.*
%endif
%if %{with kde}
%files -n libsvn_auth_kwallet-1-0
%{_libdir}/libsvn_auth_kwallet-1.so.0
%{_libdir}/libsvn_auth_kwallet-1.so.0.*
%endif
%files bash-completion
%{_datadir}/bash-completion/completions/subversion
%endif
%changelog

24
subversion.svndiff.sh Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
# stupid svn has no 'svn diff -v -R $bignum' to grab all info for a single patch
export TZ=UTC
export LANG=C
export LC_ALL=C
shopt -s extglob
case "$1" in
r+([0-9]))
rev=${1#?}
shift
;;
+([0-9]))
rev=$1
shift
;;
esac
if test -z "$rev"
then
echo "Usage: $0 <svnrepo revision number>"
exit 1
fi
revprev=$(($rev - 1 ))
svn log -v -r $rev "$@"
svn diff -r $revprev:$rev "$@"

2
subversion.svngrep.sh Normal file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
find \( -path '*/.pc' -o -path '*/.svn' -o -path '*/.git' -o -path '*/.hg' \) -prune -o -type f -print0 | xargs -0 grep "$@"

View File

@@ -0,0 +1,13 @@
## Path: Network/Subversion/svnserve
## Description: Basic configuration for svnserve
## Type: string
## Default "-d -R -r /srv/svn/repos"
#
# Default options for the svnserve process.
# The -R option enforces read-only access, i.e. write operations to the
# repository (such as commits) will not be allowed.
# Authentication should be configured before allowing write access.
# See http://svnbook.red-bean.com/en/1.8/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth
#
SVNSERVE_OPTIONS="-d -R -r /srv/svn/repos"

2
svn.sysusers Normal file
View File

@@ -0,0 +1,2 @@
#Type Name ID GECOS Home directory Shell
u svn - "user for Apache Subversion svnserve" /srv/svn -

26
svnserve.service Normal file
View File

@@ -0,0 +1,26 @@
[Unit]
Description=Subversion protocol daemon
After=network.target
[Service]
# added automatically, for details please see
# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
ProtectSystem=full
PrivateDevices=true
ProtectHostname=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectKernelLogs=true
ProtectControlGroups=true
RestrictRealtime=true
# end of automatic additions
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
User=svn
Group=svn
PIDFile=/run/svnserve/svnserve.pid
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $SVNSERVE_OPTIONS
[Install]
WantedBy=multi-user.target

1
svnserve.tmpfiles Normal file
View File

@@ -0,0 +1 @@
D /run/svnserve 0755 svn svn -