diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-03-01 10:23:13 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-03-01 12:33:06 +0100 |
commit | e9b7adde0ddc8489e63d843a8bd8b76dc6bd6ead (patch) | |
tree | ef52fbf1dc6d45fc41c10809750c14c810c97e7e /gnu/packages/patches | |
parent | a85930230233106658a4ffe53e71fe79cc1e8634 (diff) | |
download | guix-e9b7adde0ddc8489e63d843a8bd8b76dc6bd6ead.tar.gz |
gnu: guile@3.0.8: Get correct type sizes when cross-compiling.
This works around <https://issues.guix.gnu.org/54198>, whereby cross-compilation from (say) x86_64-linux to i586-pc-gnu would produce a broken Guile that crashes at startup. * gnu/packages/patches/guile-cross-compilation.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/guile.scm (guile-3.0-latest)[source]: Use it.
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r-- | gnu/packages/patches/guile-cross-compilation.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gnu/packages/patches/guile-cross-compilation.patch b/gnu/packages/patches/guile-cross-compilation.patch new file mode 100644 index 0000000000..a594cb9421 --- /dev/null +++ b/gnu/packages/patches/guile-cross-compilation.patch @@ -0,0 +1,55 @@ +When cross-compiling, get type sizes of the host system, not the build system. + +This is Guile commit 24b30130ca75653bdbacea84ce0443608379d630, which +fixes <https://issues.guix.gnu.org/54198>, with one difference: it uses +8 instead of SIZEOF_INTMAX_T, such that we do not need to modify +'configure.ac' to check for the size of 'intmax_t' and to run 'autoreconf' +(libguile/numbers.c expects SCM_SIZEOF_INTMAX_T = 8). + +diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c +index 01b14f14d..691ebd0af 100644 +--- a/libguile/gen-scmconfig.c ++++ b/libguile/gen-scmconfig.c +@@ -1,4 +1,4 @@ +-/* Copyright 2003-2013,2018,2020,2021 ++/* Copyright 2003-2013, 2018, 2020-2022 + Free Software Foundation, Inc. + + This file is part of Guile. +@@ -238,21 +238,21 @@ main (int argc, char *argv[]) + pf ("\n"); + pf ("/* Standard types. */\n"); + +- pf ("#define SCM_SIZEOF_CHAR %zu\n", sizeof (char)); +- pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %zu\n", sizeof (unsigned char)); +- pf ("#define SCM_SIZEOF_SHORT %zu\n", sizeof (short)); +- pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %zu\n", sizeof (unsigned short)); +- pf ("#define SCM_SIZEOF_LONG %zu\n", sizeof (long)); +- pf ("#define SCM_SIZEOF_UNSIGNED_LONG %zu\n", sizeof (unsigned long)); +- pf ("#define SCM_SIZEOF_INT %zu\n", sizeof (int)); +- pf ("#define SCM_SIZEOF_UNSIGNED_INT %zu\n", sizeof (unsigned int)); +- pf ("#define SCM_SIZEOF_SIZE_T %zu\n", sizeof (size_t)); +- pf ("#define SCM_SIZEOF_LONG_LONG %zu\n", sizeof (long long)); +- pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %zu\n", sizeof (unsigned long long)); +- pf ("#define SCM_SIZEOF_INTMAX %zu\n", sizeof (intmax_t)); +- pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %zu\n", sizeof (ptrdiff_t)); +- pf ("#define SCM_SIZEOF_INTPTR_T %zu\n", sizeof (intptr_t)); +- pf ("#define SCM_SIZEOF_UINTPTR_T %zu\n", sizeof (uintptr_t)); ++ pf ("#define SCM_SIZEOF_CHAR %d\n", SIZEOF_CHAR); ++ pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %d\n", SIZEOF_UNSIGNED_CHAR); ++ pf ("#define SCM_SIZEOF_SHORT %d\n", SIZEOF_SHORT); ++ pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %d\n", SIZEOF_UNSIGNED_SHORT); ++ pf ("#define SCM_SIZEOF_LONG %d\n", SIZEOF_LONG); ++ pf ("#define SCM_SIZEOF_UNSIGNED_LONG %d\n", SIZEOF_UNSIGNED_LONG); ++ pf ("#define SCM_SIZEOF_INT %d\n", SIZEOF_INT); ++ pf ("#define SCM_SIZEOF_UNSIGNED_INT %d\n", SIZEOF_UNSIGNED_INT); ++ pf ("#define SCM_SIZEOF_SIZE_T %d\n", SIZEOF_SIZE_T); ++ pf ("#define SCM_SIZEOF_LONG_LONG %d\n", SIZEOF_LONG_LONG); ++ pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %d\n", SIZEOF_UNSIGNED_LONG_LONG); ++ pf ("#define SCM_SIZEOF_INTMAX %d\n", 8); /* like SIZEOF_INTMAX_T */ ++ pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %d\n", SIZEOF_PTRDIFF_T); ++ pf ("#define SCM_SIZEOF_INTPTR_T %d\n", SIZEOF_INTPTR_T); ++ pf ("#define SCM_SIZEOF_UINTPTR_T %d\n", SIZEOF_UINTPTR_T); + + pf ("\n"); + pf ("/* same as POSIX \"struct timespec\" -- always defined */\n"); |