diff --git a/subversion-1.14.3-gcc14-2.patch b/subversion-1.14.3-gcc14-2.patch new file mode 100644 index 0000000..e9cfcdf --- /dev/null +++ b/subversion-1.14.3-gcc14-2.patch @@ -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); + } + + diff --git a/subversion-1.14.3-gcc14.patch b/subversion-1.14.3-gcc14.patch new file mode 100644 index 0000000..6026cec --- /dev/null +++ b/subversion-1.14.3-gcc14.patch @@ -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); diff --git a/subversion.changes b/subversion.changes index f072991..3f83dc1 100644 --- a/subversion.changes +++ b/subversion.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Jun 4 17:42:36 UTC 2024 - Andreas Stieger + +- fix build with gcc14 (boo#1225929) + subversion-1.14.3-gcc14.patch + subversion-1.14.3-gcc14-2.patch + ------------------------------------------------------------------- Sat Dec 30 14:34:07 UTC 2023 - Dirk Müller diff --git a/subversion.spec b/subversion.spec index 1e8d99b..8d19b9a 100644 --- a/subversion.spec +++ b/subversion.spec @@ -1,8 +1,9 @@ # -# spec file +# spec file for package subversion # # Copyright (c) 2023 SUSE LLC # Copyright (c) 2009-2010 Pascal Bleser +# Copyright (c) 2024 Andreas Stieger # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -74,6 +75,8 @@ 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 @@ -430,7 +433,6 @@ ln -s /dev/shm/svn-test-work subversion/tests/cmdline/ %endif %else - %pre -f subversion.pre %service_add_pre svnserve.service