Subversion 1.14.1

Franz Sirl Franz.Sirl-kernel at lauterbach.com
Wed Sep 1 15:36:46 CEST 2021


Hi Dagobert,

Am 2021-09-01 um 14:28 schrieb Dagobert Michelsen:
> I see. Recompiling APR would require recompiling some dependend packages,
> but not too many:
>   https://www.opencsw.org/packages/CSWlibapr1-0/

Well, that would be nice, too :-). I just wasn't sure if you can force 
an update of all dependent packages at the *user* sites within the 
OpenCSW framework. Meaning that it won't be good if for example a user 
mixes a new (_FILE_OFFSET_BITS=64) apr with an old subversion.
So I thought enabling BUILD64=1 for subversion is the safer way to 
accomplish my goal.

> Maybe I have not fully understood the issue, but wouldn’t a 64 bit subversion automatically
> include the 64 bit directory cookies as it automatically implies 64 bit data structures?
> And this should already be the case for 64 bit APR. The split header for 32 and 64 bit
> was not needed in the past IIRC.

The bug is exactly that the header is not split! I've attached a full 
diff between apr-32.h and apr-64.h as seen on Solaris11, but the most 
important difference is

-#define APR_SIZEOF_VOIDP 4
+#define APR_SIZEOF_VOIDP 8

That's essentially why a 64-bit subversion compiled without a separate 
apr-64.h won't pass the tests and also doesn't work in practice as I've 
found out before I did the changes to apr.

Gruesse,
Franz
-------------- next part --------------
--- /opt/csw/include/apr-32.h	2021-04-23 15:02:51.000000000 +0200
+++ /opt/csw/include/apr-64.h	2021-04-23 15:10:21.000000000 +0200
@@ -294,7 +294,7 @@
 #define APR_HAS_UNICODE_FS        0
 #define APR_HAS_PROC_INVOKED      0
 #define APR_HAS_USER              1
-#define APR_HAS_LARGE_FILES       1
+#define APR_HAS_LARGE_FILES       0
 #define APR_HAS_XTHREAD_FILES     0
 #define APR_HAS_OS_UUID           1
 #define APR_HAS_TIMEDLOCKS        1
@@ -333,7 +333,7 @@
 typedef  int             apr_int32_t;
 typedef  unsigned int    apr_uint32_t;
 
-#define APR_SIZEOF_VOIDP 4
+#define APR_SIZEOF_VOIDP 8
 
 /*
  * Darwin 10's default compiler (gcc42) builds for both 64 and
@@ -378,9 +378,9 @@
 
 typedef  size_t          apr_size_t;
 typedef  ssize_t         apr_ssize_t;
-typedef  off64_t           apr_off_t;
+typedef  off_t           apr_off_t;
 typedef  socklen_t       apr_socklen_t;
-typedef  unsigned long           apr_ino_t;
+typedef  ino_t           apr_ino_t;
 
 #if APR_SIZEOF_VOIDP == 8
 typedef  apr_uint64_t            apr_uintptr_t;
@@ -555,10 +555,10 @@
 #define APR_SIZE_T_FMT "lu"
 
 /* And APR_OFF_T_FMT */
-#define APR_OFF_T_FMT APR_INT64_T_FMT
+#define APR_OFF_T_FMT "ld"
 
 /* And APR_PID_T_FMT */
-#define APR_PID_T_FMT "ld"
+#define APR_PID_T_FMT "d"
 
 /* And APR_INT64_T_FMT */
 #define APR_INT64_T_FMT PRId64


More information about the users mailing list