Subversion 1.14.1

Franz Sirl Franz.Sirl-kernel at lauterbach.com
Wed Sep 1 13:06:15 CEST 2021


Am 2021-08-31 um 14:14 schrieb Dagobert Michelsen via users:
> Hi Daniel,
> 
> Am 30.08.2021 um 16:01 schrieb Dagobert Michelsen via users <users at lists.opencsw.org>:
>> Am 28.08.2021 um 21:57 schrieb Daniel Sahlberg via users <users at lists.opencsw.org>:
>>> Is there any chance to rebuild Subversion using the 1.14.1 version?
>>
>> I’m giving it a try! The build looks promising, current blocker is
>> missind py3c which is needed for the svn python module. I’ll keep you
>> posted.
> 
> The version bump was pretty much straight forward. Please have a look at the package
> in experimental and let me know how it goes so I can push it to unstable/ next:
>    http://buildfarm.opencsw.org/experimental.html#subversion

Hi Dagobert,

that's great! I also tried to build subversion-1.14.1 myself, but 
couldn't pass the bindings hurdle yet :-(.
But on the way there I noticed that 64-bit apr is broken and that's also 
the reason that 64-bit (when activated in the package Makefile with 
BUILD64=1) subversion didn't pass the tests.
See the attached patch for the needed changes.
I needed a 64-bit subversion so I can work against a Linux NFS server 
with 64-bit directory cookies. In principle a 32-bit subversion can also 
do this, but in that case apr has to be compiled with 
-D_FILE_OFFSET_BITS=64. Unfortunately this would change the apr ABI and 
all depending packages have to be recompiled. The attached patch also 
includes (not activated) preparations for -D_FILE_OFFSET_BITS=64.

The other attached patches for libserf and scons were needed for me to 
build successfully on Solaris10 and 11, but maybe the reason is just 
that my build environment differs slightly from the official OpenCSW one.

regards,
Franz Sirl

-------------- next part --------------
Index: apr/trunk/Makefile
===================================================================
--- apr/trunk/Makefile	(revision 26746)
+++ apr/trunk/Makefile	(working copy)
@@ -11,10 +11,29 @@
 
 MASTER_SITES = http://mirrors.ae-online.de/apache/apr/
 DISTFILES  = $(NAME)-$(VERSION).tar.gz
+# apr.h needs PATH_MAX from limits.h defined, otherwise it will #error.
+# So define __EXTENSIONS__ in build/apr_hints.m4 to make sure
+# it is propagated to all users via 'apr-1-config --cppflags'.
+# Acutually 'configure' checks for and enables __EXTENSIONS__, but it
+# doesn't end up in 'apr-1-config --cppflags' without this patch.
+PATCHFILES += 0001-Define-__EXTENSIONS__-so-that-also-all-apr.h-users-g.patch
+# apr usually uses -D_LARGEFILE64_SOURCE to get support for large files
+# on 32-bit OSes.
+# Unfortunately this still doesn't support filesystems (eg. NFS) with
+# 64-bit directory "cookies". For this to work we need
+# to define _FILE_OFFSET_BITS=64 for apr and it's users via build/apr_hints.m4.
+# (!!!) If you enable this patch, you need to also rebuild the whole
+# dependency tree that depends on apr.
+#PATCHFILES-32 += 0002-Define-_FILE_OFFSET_BITS-64-so-that-subversion-can-a.patch
+PATCHFILES += $(PATCHFILES-$(MEMORYMODEL))
 LICENSE = LICENSE
 
 VENDOR_URL = https://apr.apache.org/
 
+BUILD_DEP_PKGS += CSWautoconf
+BUILD_DEP_PKGS += CSWautomake
+BUILD_DEP_PKGS += CSWlibtool
+
 PACKAGES += CSWlibapr1-0
 SPKG_DESC_CSWlibapr1-0 = Apache portable runtime, libapr-1.so.0
 PKGFILES_CSWlibapr1-0 += $(call pkgfiles_lib,libapr-1.so.0)
@@ -48,8 +67,21 @@
 
 EXTRA_MERGE_DIRS_isa-extra = $(libexecdir)
 
+EXTRA_PAX_ARGS-32  = -s ",^\.$(includedir)/apr.h$$,.$(includedir)/apr-32.h,p"
+EXTRA_PAX_ARGS-64  = -s ",^\.$(includedir)/apr.h$$,.$(includedir)/apr-64.h,p"
+EXTRA_PAX_ARGS = $(EXTRA_PAX_ARGS-$(MEMORYMODEL))
+
 include gar/category.mk
 
+# trigger re-configuration because of the build/apr_hints.m4 changes
+pre-configure-modulated:
+	@(cd $(WORKSRC); ./buildconf )
+	@$(MAKECOOKIE)
+
+post-merge:
+	ginstall $(FILEDIR)/apr.h $(PKGROOT)$(includedir)/apr.h
+	@$(MAKECOOKIE)
+
 post-install-modulated:
 	perl -pi -e 's,/usr/local/lib,$(libdir),g;' \
 		-e 's,#! /bin/bash,#!$(bindir_install)/bash,g;' \
Index: apr/trunk/files/0001-Define-__EXTENSIONS__-so-that-also-all-apr.h-users-g.patch
===================================================================
--- apr/trunk/files/0001-Define-__EXTENSIONS__-so-that-also-all-apr.h-users-g.patch	(nonexistent)
+++ apr/trunk/files/0001-Define-__EXTENSIONS__-so-that-also-all-apr.h-users-g.patch	(working copy)
@@ -0,0 +1,26 @@
+From 5990f4150c662657a508ef3715378ab825707b3d Mon Sep 17 00:00:00 2001
+From: Franz Sirl <franz.sirl at lauterbach.com>
+Date: Fri, 23 Apr 2021 12:42:57 +0200
+Subject: [PATCH 1/2] Define __EXTENSIONS__ so that also all apr.h users get
+ PATH_MAX from limits.h.
+
+---
+ build/apr_hints.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/apr_hints.m4 b/build/apr_hints.m4
+index fd3d33d..ba53663 100644
+--- a/build/apr_hints.m4
++++ b/build/apr_hints.m4
+@@ -236,7 +236,7 @@ dnl	       # Not a problem in 10.20.  Otherwise, who knows?
+ 	;;
+     *-solaris2*)
+     	PLATOSVERS=`echo $host | sed 's/^.*solaris2.//'`
+-	APR_ADDTO(CPPFLAGS, [-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT])
++	APR_ADDTO(CPPFLAGS, [-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D__EXTENSIONS__])
+         if test $PLATOSVERS -eq 10; then
+             # pthread_mutex_timedlock is broken on Solaris 10.
+             # It can block without timeout in case of EDEADLK.
+-- 
+2.3.1
+
Index: apr/trunk/files/0002-Define-_FILE_OFFSET_BITS-64-so-that-subversion-can-a.patch
===================================================================
--- apr/trunk/files/0002-Define-_FILE_OFFSET_BITS-64-so-that-subversion-can-a.patch	(nonexistent)
+++ apr/trunk/files/0002-Define-_FILE_OFFSET_BITS-64-so-that-subversion-can-a.patch	(working copy)
@@ -0,0 +1,26 @@
+From 840c0a96376c8028490e4cf04cc7046703b55a50 Mon Sep 17 00:00:00 2001
+From: Franz Sirl <franz.sirl at lauterbach.com>
+Date: Fri, 23 Apr 2021 12:45:51 +0200
+Subject: [PATCH 2/2] Define _FILE_OFFSET_BITS=64 so that subversion can also
+ work against newer NFS servers.
+
+---
+ build/apr_hints.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/apr_hints.m4 b/build/apr_hints.m4
+index ba53663..0c3437f 100644
+--- a/build/apr_hints.m4
++++ b/build/apr_hints.m4
+@@ -236,7 +236,7 @@ dnl	       # Not a problem in 10.20.  Otherwise, who knows?
+ 	;;
+     *-solaris2*)
+     	PLATOSVERS=`echo $host | sed 's/^.*solaris2.//'`
+-	APR_ADDTO(CPPFLAGS, [-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D__EXTENSIONS__])
++	APR_ADDTO(CPPFLAGS, [-DSOLARIS2=$PLATOSVERS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D__EXTENSIONS__ -D_FILE_OFFSET_BITS=64])
+         if test $PLATOSVERS -eq 10; then
+             # pthread_mutex_timedlock is broken on Solaris 10.
+             # It can block without timeout in case of EDEADLK.
+-- 
+2.3.1
+
Index: apr/trunk/files/apr.h
===================================================================
--- apr/trunk/files/apr.h	(nonexistent)
+++ apr/trunk/files/apr.h	(working copy)
@@ -0,0 +1,6 @@
+/* Allow 32 and 64 bit headers to coexist */
+#if defined __amd64 || defined __x86_64 || defined __sparcv9
+# include <apr-64.h>
+#else
+# include <apr-32.h>
+#endif
-------------- next part --------------
Index: libserf/trunk/Makefile
===================================================================
--- libserf/trunk/Makefile	(revision 26746)
+++ libserf/trunk/Makefile	(working copy)
@@ -14,11 +14,14 @@
 
 MASTER_SITES = http://mirror.serversupportforum.de/apache/serf/
 DISTFILES += $(DISTNAME).tar.bz2
-#PATCHFILES  += 0001-mark-solaris-as-posix-for-scons.patch
+PATCHFILES += 0001-Remove-sunos5-exclusion.patch
+PATCHFILES += 0002-Force-GCC-toolchain-instead-of-relying-on-the-defaul.patch
 
 LICENSE = LICENSE
 VENDOR_URL = https://serf.apache.org/
 
+GARCOMPILER = GNU
+
 CONFIGURE_SCRIPTS =
 BUILD_SCRIPTS = serf
 INSTALL_SCRIPTS = serf
@@ -33,6 +36,7 @@
 
 PACKAGES += CSWlibserf1-1
 SPKG_DESC_CSWlibserf1-1 += HTTP client library built on APR, multiplexes connections, libserf-1.so.1
+PKGFILES_CSWlibserf1-1 += $(call pkgfiles_lib,libserf-1.so.1)
 RUNTIME_DEP_PKGS_CSWlibserf1-1 += CSWlibapr1-0
 RUNTIME_DEP_PKGS_CSWlibserf1-1 += CSWlibaprutil1-0
 RUNTIME_DEP_PKGS_CSWlibserf1-1 += CSWlibssl1-0-0
@@ -48,7 +52,7 @@
 PACKAGES += CSWlibserf-dev
 CATALOGNAME_CSWlibserf-dev = libserf_dev
 SPKG_DESC_CSWlibserf-dev = Development files for libserf-1.so.1
-PKGFILES_CSWlibserf-dev += $(PKGFILES_DEVEL)
+# PKGFILES is catchall
 RUNTIME_DEP_PKGS_CSWlibserf-dev = CSWlibserf1-1
 
 BUILD64 = 1
@@ -60,6 +64,7 @@
 
 # scons doesn't honor CFLAGS, LDFLAGS... environment variables
 # so we must explicitely pass them as arguments
+SCONS_FLAGS += CC="$(CC)"
 SCONS_FLAGS += CFLAGS="$(CFLAGS)" 
 
 # scons expands the $ISADIR variable, so we must do some more
Index: libserf/trunk/files/0001-Remove-sunos5-exclusion.patch
===================================================================
--- libserf/trunk/files/0001-Remove-sunos5-exclusion.patch	(nonexistent)
+++ libserf/trunk/files/0001-Remove-sunos5-exclusion.patch	(working copy)
@@ -0,0 +1,26 @@
+From b9d271127d6bb06cdb9ed03de94073032995ffc8 Mon Sep 17 00:00:00 2001
+From: Franz Sirl <franz.sirl at lauterbach.com>
+Date: Thu, 22 Apr 2021 18:11:53 +0200
+Subject: [PATCH 1/2] Remove sunos5 exclusion
+
+---
+ SConstruct | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 4358a23..9f32566 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -215,8 +215,7 @@ incdir = '$PREFIX/include/serf-$MAJOR'
+ # Unfortunately we can't set the .dylib compatibility_version option separately
+ # from current_version, so don't use the PATCH level to avoid that build and
+ # runtime patch levels have to be identical.
+-if sys.platform != 'sunos5':
+-  env['SHLIBVERSION'] = '%d.%d.%d' % (MAJOR, MINOR, 0)
++env['SHLIBVERSION'] = '%d.%d.%d' % (MAJOR, MINOR, 0)
+ 
+ LIBNAME = 'libserf-%d' % (MAJOR,)
+ if sys.platform != 'win32':
+-- 
+2.4.0
+
Index: libserf/trunk/files/0002-Force-GCC-toolchain-instead-of-relying-on-the-defaul.patch
===================================================================
--- libserf/trunk/files/0002-Force-GCC-toolchain-instead-of-relying-on-the-defaul.patch	(nonexistent)
+++ libserf/trunk/files/0002-Force-GCC-toolchain-instead-of-relying-on-the-defaul.patch	(working copy)
@@ -0,0 +1,25 @@
+From 89a049c01f4e6198e067d28ca6d2bf1c790c2e98 Mon Sep 17 00:00:00 2001
+From: Franz Sirl <franz.sirl at lauterbach.com>
+Date: Fri, 23 Apr 2021 10:23:40 +0200
+Subject: [PATCH 2/2] Force GCC toolchain instead of relying on the default
+
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index 9f32566..2f261c2 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -153,7 +153,7 @@ if sys.platform == 'win32':
+     )
+ 
+ env = Environment(variables=opts,
+-                  tools=('default', 'textfile',),
++                  tools=('gcc', 'gnulink', 'ar', 'textfile',),
+                   CPPPATH=['.', ],
+                   )
+ 
+-- 
+2.4.0
+
-------------- next part --------------
Index: scons/trunk/Makefile
===================================================================
--- scons/trunk/Makefile	(revision 26746)
+++ scons/trunk/Makefile	(working copy)
@@ -1,7 +1,7 @@
 # $Id$
 
 NAME = scons
-VERSION = 2.5.1
+VERSION = 3.1.2
 CATEGORIES = python
 GARTYPE = v2
 
@@ -36,6 +36,7 @@
 ARCHALL_CSWscons = 1
 CHECKPKG_OVERRIDES_CSWscons += file-with-bad-content
 # We definitely need Python 2.7
+MODULATIONS_PYTHON_VERSION = 2_7
 RUNTIME_DEP_PKGS_CSWscons += CSWpython27
 CHECKPKG_OVERRIDES_CSWscons += surplus-dependency|CSWpython27
 
Index: scons/trunk/checksums
===================================================================
--- scons/trunk/checksums	(revision 26746)
+++ scons/trunk/checksums	(working copy)
@@ -1 +1 @@
-aaaf09e1351a598f98d17b0cf1103e7a  scons-2.5.1.tar.gz
+77b2f8ac2661b7a4fad51c17cb7f1b25  scons-3.1.2.tar.gz


More information about the users mailing list