gnucash-on-osx master: Upgrade Guile to 3.0.10
John Ralls
jralls at code.gnucash.org
Fri Jul 18 14:45:29 EDT 2025
Updated via https://github.com/Gnucash/gnucash-on-osx/commit/0ca6dc07 (commit)
from https://github.com/Gnucash/gnucash-on-osx/commit/43580b85 (commit)
commit 0ca6dc0727743469c1f19b8244b0da593be97e6a
Author: John Ralls <jralls at ceridwen.us>
Date: Fri Jul 18 11:45:01 2025 -0700
Upgrade Guile to 3.0.10
diff --git a/modulesets/gnucash.modules b/modulesets/gnucash.modules
index 27e46fe..1e2fbfd 100644
--- a/modulesets/gnucash.modules
+++ b/modulesets/gnucash.modules
@@ -213,12 +213,12 @@
</after>
</cmake>
- <autotools id="bdw-gc" autogen-sh="configure"
- autogenargs="--enable-large-config">
+ <cmake id="bdw-gc" autogen-sh="configure"
+ cmakeargs="-Denable_large_config">
<branch repo="github-tarball"
module="ivmai/bdwgc/releases/download/v8.2.6/gc-8.2.6.tar.gz"
version="82.6"/>
- </autotools>
+ </cmake>
<autotools id="libunistring" autogen-sh="configure">
<branch repo="ftp.gnu.org" module="libunistring/libunistring-1.2.tar.gz"
@@ -226,23 +226,10 @@
</branch>
</autotools>
- <autotools id="guile22" autogen-sh="configure">
- <branch repo="ftp.gnu.org" module="guile/guile-2.2.7.tar.gz"
- version="2.2.7">
- <patch file="guile-2.2-libguile-Makefile-fixups.patch" strip="1"/>
- </branch>
- <dependencies>
- <dep package="libunistring"/>
- <dep package="gmp"/>
- <dep package="libffi"/>
- <dep package="bdw-gc"/>
- </dependencies>
- </autotools>
-
<autotools id="guile30" autogen-sh="configure">
- <branch repo="ftp.gnu.org" module="guile/guile-3.0.9.tar.gz"
- version="3.0.9">
- <patch file="guile-2.2-libguile-Makefile-fixups.patch" strip="1"/>
+ <branch repo="ftp.gnu.org" module="guile/guile-3.0.10.tar.gz"
+ version="3.0.10">
+ <patch file="guile-3.0.10-build-with-C23.patch" strip="1"/>
</branch>
<dependencies>
<dep package="libunistring"/>
@@ -258,8 +245,8 @@
<cmake id="gnucash"
cmakeargs="-DGTEST_ROOT=${JHBUILD_SOURCE}/googletest/">
- <branch module="gnucash/gnucash-5.11.tar.bz2"
- checkoutdir="gnucash-5.11" repo="sourceforge" version="5.11" />
+ <branch module="gnucash/gnucash-5.12.tar.bz2"
+ checkoutdir="gnucash-5.12" repo="sourceforge" version="5.12" />
<dependencies>
<dep package="meta-gnucash-dependencies"/>
<dep package="shared-mime-info-2.2"/>
@@ -323,8 +310,8 @@
<cmake id="gnucash-docs"
ninjaargs="html">
- <branch module="gnucash/gnucash-docs-5.11.tar.gz"
- version="5.11" repo="sourceforge"/>
+ <branch module="gnucash/gnucash-docs-5.12.tar.gz"
+ version="5.12" repo="sourceforge"/>
</cmake>
<cmake id="gnucash-unstable-docs"
diff --git a/patches/guile-2.2-libguile-Makefile-fixups.patch b/patches/guile-2.2-libguile-Makefile-fixups.patch
deleted file mode 100644
index 1f82204..0000000
--- a/patches/guile-2.2-libguile-Makefile-fixups.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -c /Users/john/Development/Gnucash-Build/Gnucash-master-git/src/guile-2.2.4/libguile/Makefile.in\~ /Users/john/Development/Gnucash-Build/Gnucash-master-git/src/guile-2.2.4/libguile/Makefile.in
---- a/libguile/Makefile.in Sun Jul 1 14:34:02 2018
-+++ b/libguile/Makefile.in Mon Jul 16 12:15:16 2018
-@@ -2239,7 +2239,7 @@
- locale-categories.h
-
- INSTANTIATE = \
-- $(SED) -i -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
-+ $(SED) -i "" -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
- -e 's,[@]pkglibdir[@],$(pkglibdir),g' \
- -e 's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g'
-
-
-
diff --git a/patches/guile-3.0.10-build-with-C23.patch b/patches/guile-3.0.10-build-with-C23.patch
new file mode 100644
index 0000000..bf2de6e
--- /dev/null
+++ b/patches/guile-3.0.10-build-with-C23.patch
@@ -0,0 +1,310 @@
+From ea57c7f79f92e2be7a179464ae7f45e1e130a075 Mon Sep 17 00:00:00 2001
+From: Collin Funk <collin.funk1 at gmail.com>
+Date: Fri, 16 May 2025 22:51:57 -0700
+Subject: [PATCH] Fix build with C23 compilers.
+
+* libguile/scm.h (scm_t_subr): Always define to void pointer. Update
+commentary to account for C23.
+* libguile/lightening/lightening.h (jit_function_pointer_t): Define to a
+void pointer.
+* libguile/init.c (scm_boot_guile): Add prototype to main_func.
+* libguile/hash.c (floor): Add function prototype.
+* libguile/posix.c (scm_getpgrp): Just call the system definition
+directly.
+* libguile/array-map.c (scm_ramapc): Cast the function pointer with the
+correct number of arguments.
+* libguile/gsubr.c (scm_apply_subr): Likewise.
+(scm_c_make_gsubr, scm_c_define_gsubr, scm_c_make_gsubr_with_generic)
+scm_c_define_gsubr_with_generic): Use scm_t_subr for the fcn argument
+which matches the declarations in libguile/gsubr.h.
+* libguile/fluids.c (scm_c_with_fluids, scm_with_fluid): Add function
+prototype to cproc.
+* libguile/smob.c (apply_0, apply_1, apply_2, apply_3): Cast the
+function with the correct number of arguments.
+(scm_set_smob_apply): Use scm_t_subr for the apply argument which
+patches libguile/smob.h.
+---
+ libguile/array-map.c | 5 ++--
+ libguile/fluids.c | 4 +--
+ libguile/gsubr.c | 51 +++++++++++++++++++-------------
+ libguile/hash.c | 2 +-
+ libguile/init.c | 3 +-
+ libguile/lightening/lightening.h | 2 +-
+ libguile/posix.c | 4 +--
+ libguile/scm.h | 10 ++-----
+ libguile/smob.c | 10 +++----
+ 9 files changed, 47 insertions(+), 44 deletions(-)
+
+diff --git a/libguile/array-map.c b/libguile/array-map.c
+index ce0f7ba09..db0efd791 100644
+--- a/libguile/array-map.c
++++ b/libguile/array-map.c
+@@ -101,7 +101,6 @@ cindk (SCM ra, ssize_t *ve, int kend)
+ int
+ scm_ramapc (void *cproc_ptr, SCM data, SCM ra0, SCM lra, const char *what)
+ {
+- int (*cproc) () = cproc_ptr;
+ SCM z, va0, lva, *plva;
+ int k, kmax, kroll;
+ ssize_t *vi, inc;
+@@ -197,7 +196,9 @@ scm_ramapc (void *cproc_ptr, SCM data, SCM ra0, SCM lra, const char *what)
+ SCM_I_ARRAY_SET_BASE (va0, cindk (ra0, vi, kroll));
+ for (z = lva; !scm_is_null (z); z = SCM_CDR (z), y = SCM_CDR (y))
+ SCM_I_ARRAY_SET_BASE (SCM_CAR (z), cindk (SCM_CAR (y), vi, kroll));
+- if (! (SCM_UNBNDP (data) ? cproc (va0, lva) : cproc (va0, data, lva)))
++ if (! (SCM_UNBNDP (data)
++ ? ((int (*) (SCM, SCM)) cproc_ptr) (va0, lva)
++ : ((int (*) (SCM, SCM, SCM)) cproc_ptr) (va0, data, lva)))
+ return 0;
+ --k;
+ }
+diff --git a/libguile/fluids.c b/libguile/fluids.c
+index ebdb48fbc..f6d918a34 100644
+--- a/libguile/fluids.c
++++ b/libguile/fluids.c
+@@ -506,7 +506,7 @@ SCM_DEFINE (scm_with_fluids, "with-fluids*", 3, 0, 0,
+ #undef FUNC_NAME
+
+ SCM
+-scm_c_with_fluids (SCM fluids, SCM values, SCM (*cproc) (), void *cdata)
++scm_c_with_fluids (SCM fluids, SCM values, SCM (*cproc) (void *), void *cdata)
+ #define FUNC_NAME "scm_c_with_fluids"
+ {
+ SCM ans;
+@@ -544,7 +544,7 @@ scm_with_fluid (SCM fluid, SCM value, SCM thunk)
+ }
+
+ SCM
+-scm_c_with_fluid (SCM fluid, SCM value, SCM (*cproc) (), void *cdata)
++scm_c_with_fluid (SCM fluid, SCM value, SCM (*cproc) (void *), void *cdata)
+ #define FUNC_NAME "scm_c_with_fluid"
+ {
+ SCM ans;
+diff --git a/libguile/gsubr.c b/libguile/gsubr.c
+index a33cbb9c4..c3afd6f47 100644
+--- a/libguile/gsubr.c
++++ b/libguile/gsubr.c
+@@ -467,38 +467,47 @@ scm_subr_name (SCM subr)
+ SCM
+ scm_apply_subr (union scm_vm_stack_element *sp, uint32_t idx, ptrdiff_t nslots)
+ {
+- SCM (*subr)() = subrs[idx];
++ void *subr = subrs[idx];
+
+ #define ARG(i) (sp[i].as_scm)
+ switch (nslots - 1)
+ {
+ case 0:
+- return subr ();
++ return ((SCM (*) (void)) subr) ();
+ case 1:
+- return subr (ARG (0));
++ return ((SCM (*) (SCM)) subr) (ARG (0));
+ case 2:
+- return subr (ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM)) subr) (ARG (1), ARG (0));
+ case 3:
+- return subr (ARG (2), ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM)) subr) (ARG (2), ARG (1), ARG (0));
+ case 4:
+- return subr (ARG (3), ARG (2), ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM, SCM)) subr) (ARG (3), ARG (2), ARG (1),
++ ARG (0));
+ case 5:
+- return subr (ARG (4), ARG (3), ARG (2), ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM, SCM, SCM)) subr) (ARG (4), ARG (3),
++ ARG (2), ARG (1),
++ ARG (0));
+ case 6:
+- return subr (ARG (5), ARG (4), ARG (3), ARG (2), ARG (1),
+- ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM, SCM, SCM, SCM)) subr) (ARG (5), ARG (4),
++ ARG (3), ARG (2),
++ ARG (1),
++ ARG (0));
+ case 7:
+- return subr (ARG (6), ARG (5), ARG (4), ARG (3), ARG (2),
+- ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM, SCM, SCM, SCM, SCM)) subr)
++ (ARG (6), ARG (5), ARG (4), ARG (3), ARG (2), ARG (1), ARG (0));
+ case 8:
+- return subr (ARG (7), ARG (6), ARG (5), ARG (4), ARG (3),
+- ARG (2), ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM, SCM, SCM, SCM, SCM, SCM)) subr)
++ (ARG (7), ARG (6), ARG (5), ARG (4), ARG (3), ARG (2), ARG (1),
++ ARG (0));
+ case 9:
+- return subr (ARG (8), ARG (7), ARG (6), ARG (5), ARG (4),
+- ARG (3), ARG (2), ARG (1), ARG (0));
++ return ((SCM (*) (SCM, SCM, SCM, SCM, SCM, SCM, SCM, SCM, SCM)) subr)
++ (ARG (8), ARG (7), ARG (6), ARG (5), ARG (4), ARG (3), ARG (2),
++ ARG (1), ARG (0));
+ case 10:
+- return subr (ARG (9), ARG (8), ARG (7), ARG (6), ARG (5),
+- ARG (4), ARG (3), ARG (2), ARG (1), ARG (0));
++ return
++ ((SCM (*) (SCM, SCM, SCM, SCM, SCM, SCM, SCM, SCM, SCM, SCM)) subr)
++ (ARG (9), ARG (8), ARG (7), ARG (6), ARG (5), ARG (4), ARG (3),
++ ARG (2), ARG (1), ARG (0));
+ default:
+ abort (); /* SCM_GSUBR_MAX */
+ }
+@@ -506,13 +515,13 @@ scm_apply_subr (union scm_vm_stack_element *sp, uint32_t idx, ptrdiff_t nslots)
+ }
+
+ SCM
+-scm_c_make_gsubr (const char *name, int req, int opt, int rst, SCM (*fcn)())
++scm_c_make_gsubr (const char *name, int req, int opt, int rst, scm_t_subr fcn)
+ {
+ return create_subr (0, name, req, opt, rst, fcn, NULL);
+ }
+
+ SCM
+-scm_c_define_gsubr (const char *name, int req, int opt, int rst, SCM (*fcn)())
++scm_c_define_gsubr (const char *name, int req, int opt, int rst, scm_t_subr fcn)
+ {
+ return create_subr (1, name, req, opt, rst, fcn, NULL);
+ }
+@@ -522,7 +531,7 @@ scm_c_make_gsubr_with_generic (const char *name,
+ int req,
+ int opt,
+ int rst,
+- SCM (*fcn)(),
++ scm_t_subr fcn,
+ SCM *gf)
+ {
+ return create_subr (0, name, req, opt, rst, fcn, gf);
+@@ -533,7 +542,7 @@ scm_c_define_gsubr_with_generic (const char *name,
+ int req,
+ int opt,
+ int rst,
+- SCM (*fcn)(),
++ scm_t_subr fcn,
+ SCM *gf)
+ {
+ return create_subr (1, name, req, opt, rst, fcn, gf);
+diff --git a/libguile/hash.c b/libguile/hash.c
+index b7ad03309..cca3dd32b 100644
+--- a/libguile/hash.c
++++ b/libguile/hash.c
+@@ -48,7 +48,7 @@
+
+
+ #ifndef floor
+-extern double floor();
++extern double floor (double);
+ #endif
+
+
+diff --git a/libguile/init.c b/libguile/init.c
+index 3df8c5ae5..37300f59a 100644
+--- a/libguile/init.c
++++ b/libguile/init.c
+@@ -277,7 +277,8 @@ static void *invoke_main_func(void *body_data);
+
+
+ void
+-scm_boot_guile (int argc, char ** argv, void (*main_func) (), void *closure)
++scm_boot_guile (int argc, char ** argv,
++ void (*main_func) (void *, int, char **), void *closure)
+ {
+ void *res;
+ struct main_func_closure c;
+diff --git a/libguile/lightening/lightening.h b/libguile/lightening/lightening.h
+index b364e18cc..ecb47152a 100644
+--- a/libguile/lightening/lightening.h
++++ b/libguile/lightening/lightening.h
+@@ -222,7 +222,7 @@ JIT_API void* jit_end(jit_state_t*, size_t*);
+ JIT_API void jit_align(jit_state_t*, unsigned);
+
+ JIT_API jit_pointer_t jit_address(jit_state_t*);
+-typedef void (*jit_function_pointer_t)();
++typedef void *jit_function_pointer_t;
+ JIT_API jit_function_pointer_t jit_address_to_function_pointer(jit_pointer_t);
+ JIT_API void jit_patch_here(jit_state_t*, jit_reloc_t);
+ JIT_API void jit_patch_there(jit_state_t*, jit_reloc_t, jit_pointer_t);
+diff --git a/libguile/posix.c b/libguile/posix.c
+index c8bbb0f83..4fde82416 100644
+--- a/libguile/posix.c
++++ b/libguile/posix.c
+@@ -988,9 +988,7 @@ SCM_DEFINE (scm_getpgrp, "getpgrp", 0, 0, 0,
+ "This is the POSIX definition, not BSD.")
+ #define FUNC_NAME s_scm_getpgrp
+ {
+- int (*fn)();
+- fn = (int (*) ()) getpgrp;
+- return scm_from_int (fn (0));
++ return scm_from_int (getpgrp ());
+ }
+ #undef FUNC_NAME
+ #endif /* HAVE_GETPGRP */
+diff --git a/libguile/scm.h b/libguile/scm.h
+index 180b40159..de6940e04 100644
+--- a/libguile/scm.h
++++ b/libguile/scm.h
+@@ -810,15 +810,9 @@ enum scm_tc8_tags
+
+
+ /* The type of subrs, i.e., Scheme procedures implemented in C. Empty
+- function declarators are used internally for pointers to functions of
+- any arity. However, these are equivalent to `(void)' in C++, are
+- obsolescent as of C99, and trigger `strict-prototypes' GCC warnings
+- (bug #23681). */
+-#ifdef BUILDING_LIBGUILE
+-typedef SCM (* scm_t_subr) ();
+-#else
++ function declarators are equivelent to `(void)' in C++ and C23.
++ So we must use a void pointer and cast it. */
+ typedef void *scm_t_subr;
+-#endif
+
+ typedef struct scm_dynamic_state scm_t_dynamic_state;
+ typedef struct scm_print_state scm_print_state;
+diff --git a/libguile/smob.c b/libguile/smob.c
+index 8e4da9adb..4c97499fa 100644
+--- a/libguile/smob.c
++++ b/libguile/smob.c
+@@ -133,28 +133,28 @@ static SCM scm_smob_trampolines[16];
+ static SCM
+ apply_0 (SCM smob)
+ {
+- SCM (*subr)() = SCM_SMOB_DESCRIPTOR (smob).apply;
++ SCM (*subr) (SCM) = SCM_SMOB_DESCRIPTOR (smob).apply;
+ return subr (smob);
+ }
+
+ static SCM
+ apply_1 (SCM smob, SCM a)
+ {
+- SCM (*subr)() = SCM_SMOB_DESCRIPTOR (smob).apply;
++ SCM (*subr) (SCM, SCM) = SCM_SMOB_DESCRIPTOR (smob).apply;
+ return subr (smob, a);
+ }
+
+ static SCM
+ apply_2 (SCM smob, SCM a, SCM b)
+ {
+- SCM (*subr)() = SCM_SMOB_DESCRIPTOR (smob).apply;
++ SCM (*subr) (SCM, SCM, SCM) = SCM_SMOB_DESCRIPTOR (smob).apply;
+ return subr (smob, a, b);
+ }
+
+ static SCM
+ apply_3 (SCM smob, SCM a, SCM b, SCM c)
+ {
+- SCM (*subr)() = SCM_SMOB_DESCRIPTOR (smob).apply;
++ SCM (*subr) (SCM, SCM, SCM, SCM) = SCM_SMOB_DESCRIPTOR (smob).apply;
+ return subr (smob, a, b, c);
+ }
+
+@@ -254,7 +254,7 @@ scm_set_smob_equalp (scm_t_bits tc, SCM (*equalp) (SCM, SCM))
+ }
+
+ void
+-scm_set_smob_apply (scm_t_bits tc, SCM (*apply) (),
++scm_set_smob_apply (scm_t_bits tc, scm_t_subr apply,
+ unsigned int req, unsigned int opt, unsigned int rst)
+ {
+ SCM trampoline = scm_smob_trampoline (req, opt, rst);
+--
+2.49.0
\ No newline at end of file
Summary of changes:
modulesets/gnucash.modules | 33 +--
patches/guile-2.2-libguile-Makefile-fixups.patch | 14 -
patches/guile-3.0.10-build-with-C23.patch | 310 +++++++++++++++++++++++
3 files changed, 320 insertions(+), 37 deletions(-)
delete mode 100644 patches/guile-2.2-libguile-Makefile-fixups.patch
create mode 100644 patches/guile-3.0.10-build-with-C23.patch
More information about the gnucash-changes
mailing list