summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-02-22 00:55:02 +0000
committerSam James <sam@gentoo.org>2022-02-22 00:55:41 +0000
commitbbbbbaf24b7ec12927d0ac7e2b853cccec4e28fe (patch)
tree63573e96a3a61f68e5c9367c8eb273100673cc2c /dev-lang/ocaml
parentdev-lang/ocaml: scrub patches (diff)
downloadgentoo-bbbbbaf24b7ec12927d0ac7e2b853cccec4e28fe.tar.gz
gentoo-bbbbbaf24b7ec12927d0ac7e2b853cccec4e28fe.tar.bz2
gentoo-bbbbbaf24b7ec12927d0ac7e2b853cccec4e28fe.zip
dev-lang/ocaml: use tarball for 4.05/4.09/4.10 patches
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-lang/ocaml')
-rw-r--r--dev-lang/ocaml/Manifest3
-rw-r--r--dev-lang/ocaml/files/ocaml-4.05.0-glibc-2.34.patch186
-rw-r--r--dev-lang/ocaml/files/ocaml-4.09.0-glibc-2.34.patch178
-rw-r--r--dev-lang/ocaml/files/ocaml-4.10.2-glibc-2.34.patch239
-rw-r--r--dev-lang/ocaml/ocaml-4.05.0-r9.ebuild7
-rw-r--r--dev-lang/ocaml/ocaml-4.09.0-r3.ebuild12
-rw-r--r--dev-lang/ocaml/ocaml-4.10.2-r3.ebuild11
7 files changed, 18 insertions, 618 deletions
diff --git a/dev-lang/ocaml/Manifest b/dev-lang/ocaml/Manifest
index eda27fba03db..9466e909f6b9 100644
--- a/dev-lang/ocaml/Manifest
+++ b/dev-lang/ocaml/Manifest
@@ -1,5 +1,8 @@
+DIST ocaml-4.05.0-patches-1.tar.bz2 4009 BLAKE2B 052c3a6859a942f2993d0b06ab57ca8f7469650c096f20bff7ff7cf5c2842e8d5019d595a4eca0dc1a4e5feda2db8a831a6917b3b6d9f39166c8ae7af1e894e7 SHA512 b349e6613201d9400f736c5b2d0ede01e7e113524cbc6989999a71fb97cb1eb67f90af8c2fbd3fd8abeccf3193e317cdd8258aee328c3e078634385c21558619
DIST ocaml-4.05.0.tar.gz 4431750 BLAKE2B c2ab003a13e0a581ebd0e1c96eeb8a9baea9bfe6bee08823b0e4541819201ec109f1846e13fc1aefa51a001eefbb8f73320ba854d41975fc68cef41bc75b1ecc SHA512 9a060ae4b741e1687277403e5bdb8f6eda2e2ebf6c45f7c0149b66ea1213cb26d13febfbb3f11c12543e244cfdd053b786b09c4145e2348e5d89a7206f7de225
+DIST ocaml-4.09.0-patches-1.tar.bz2 3300 BLAKE2B ef710ea5ed5a243ae684f68b7f203ba454192c9f8f19c32697d336bf18cf2a0e8ea08df232b0fd8e2475a000758a5ba95b3794096ec7d0d1b292a715ab3de86f SHA512 94096b99fd58b32232e418c5736203f08ab3c1558154ed00d4290730bd4db849bc60dfae6160f344acce63bbb8eaceecee25cf836bb73fa419d7bbf4eac433f1
DIST ocaml-4.09.0.tar.gz 4838748 BLAKE2B 80f29d535c64bf2371b480217723ed20b2b21cfd93ce31366a7b91e7ddffdf68db4e88d085288b7e21efee567a13f42ecff24c3a0115507b006acf844239cefd SHA512 dc0271e591bf929b751705835790949a9d741e12d085c8b207c3689b5838a02ea8de80da8b2605d2e6744f2f541b0d1694ffafff9509e99ce01f3a391f6ef2ae
+DIST ocaml-4.10.2-patches-1.tar.bz2 3180 BLAKE2B 474471e10c4525e4da730fcf8602fddf5209f7d8eb15bd76894ed2bc22213a6e61aa7f52b1b67dff6c8bf04eac7d759ada28f1783c83a075cc65e7e5caadc715 SHA512 1456f90c0c833461eb9d1c140ba1a7358aa9351f6303e83b0e19bb8688dcb17bdad211f4cec1281a47180bbdddcfdbf44367b47a6b301d2ea41fa9d926bd03a5
DIST ocaml-4.10.2.tar.gz 4933135 BLAKE2B ec5e92adb23c28a254247182c79ab555fd82603e02f24799049b8057abf869d18234302408c8ae89b9997a2b210ed6965e45c2c03e4f0cab34262ad3f6ebb528 SHA512 1dd827da07f01e815fd74dd7ee84db0900f24782f8f7fd426e2d71b9fb03c7b8045f22e018120a0446c362315751365d1bd8c1724edef2b182394e76eb0a07b2
DIST ocaml-4.11.2.tar.gz 5075323 BLAKE2B bdc503d9a8d0e39dd11060febcd0287657b460e50ed81e55578a3e778af990ca5d4ef9011753eee4e1a144da33eb76c95b1672dc99b76e65a2e107eee472fe06 SHA512 03d8a9f6e130142c121ff2eb3d54f584f1e7c8475f066a5803bb0edd2fa172ca06a56a3ec548b225f5c8b12112d7a68511b1e16f3ade075b5f02610d4247bbb3
DIST ocaml-4.12.1.tar.gz 5181696 BLAKE2B 9d21438e09b1a9680eabb65f5c78d9fe84459592ef7bb797a1933e5383f7b6d5cefffa8cdc184abc102417f5dbc0fca8ef624c9b560f89eaff6537544b5b395f SHA512 e942e5cf5530804690ec45c40936ad2acbb60e11279fc676e0f04181fe1855f84ee5c3cb9c337fc5d01f6ee0e7b2251a6c04f7de56d99c20bb62026dff6c5671
diff --git a/dev-lang/ocaml/files/ocaml-4.05.0-glibc-2.34.patch b/dev-lang/ocaml/files/ocaml-4.05.0-glibc-2.34.patch
deleted file mode 100644
index d95d2bb0fa50..000000000000
--- a/dev-lang/ocaml/files/ocaml-4.05.0-glibc-2.34.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-https://github.com/ocaml/ocaml/commit/50c2d1275e537906ea144bd557fde31e0bf16e5f
-https://bugs.gentoo.org/804498
-
-From 50c2d1275e537906ea144bd557fde31e0bf16e5f Mon Sep 17 00:00:00 2001
-From: Xavier Leroy <xavierleroy@users.noreply.github.com>
-Date: Fri, 5 Mar 2021 19:14:07 +0100
-Subject: [PATCH] Dynamically allocate the alternate signal stack
-
-In Glibc 2.34 and later, SIGSTKSZ may not be a compile-time constant.
-It is no longer possible to statically allocate the alternate signal
-stack for the main thread, as we've been doing for the last 25 years.
-
-This commit implements dynamic allocation of the alternate signal stack
-even for the main thread. It reuses the code already in place to allocate
-the alternate signal stack for other threads.
-
-The alternate signal stack is freed when the main OCaml code / an OCaml thread
-stops.
-
-(partial back-port of PR#10266 and PR#10726)
---- a/asmrun/fail.c
-+++ b/asmrun/fail.c
-@@ -31,6 +31,8 @@
- #include "caml/roots.h"
- #include "caml/callback.h"
-
-+extern void caml_terminate_signals(void);
-+
- /* The globals holding predefined exceptions */
-
- typedef value caml_generated_constant[1];
-@@ -60,7 +62,10 @@ char * caml_exception_pointer = NULL;
- void caml_raise(value v)
- {
- Unlock_exn();
-- if (caml_exception_pointer == NULL) caml_fatal_uncaught_exception(v);
-+ if (caml_exception_pointer == NULL) {
-+ caml_terminate_signals();
-+ caml_fatal_uncaught_exception(v);
-+ }
-
- #ifndef Stack_grows_upwards
- #define PUSHED_AFTER <
---- a/asmrun/signals_asm.c
-+++ b/asmrun/signals_asm.c
-@@ -194,7 +194,6 @@ DECLARE_SIGNAL_HANDLER(trap_handler)
- #ifdef HAS_STACK_OVERFLOW_DETECTION
-
- static char * system_stack_top;
--static char sig_alt_stack[SIGSTKSZ];
-
- #if defined(SYS_linux)
- /* PR#4746: recent Linux kernels with support for stack randomization
-@@ -295,17 +294,69 @@ void caml_init_signals(void)
- {
- stack_t stk;
- struct sigaction act;
-- stk.ss_sp = sig_alt_stack;
-- stk.ss_size = SIGSTKSZ;
-- stk.ss_flags = 0;
-- SET_SIGACT(act, segv_handler);
-- act.sa_flags |= SA_ONSTACK | SA_NODEFER;
-- sigemptyset(&act.sa_mask);
-- system_stack_top = (char *) &act;
-- if (sigaltstack(&stk, NULL) == 0) { sigaction(SIGSEGV, &act, NULL); }
-+ /* Allocate and select an alternate stack for handling signals,
-+ especially SIGSEGV signals.
-+ The alternate stack used to be statically-allocated for the main thread,
-+ but this is incompatible with Glibc 2.34 and newer, where SIGSTKSZ
-+ may not be a compile-time constant. */
-+ stk.ss_sp = malloc(SIGSTKSZ);
-+ if (stk.ss_sp != NULL) {
-+ stk.ss_size = SIGSTKSZ;
-+ stk.ss_flags = 0;
-+ SET_SIGACT(act, segv_handler);
-+ act.sa_flags |= SA_ONSTACK | SA_NODEFER;
-+ sigemptyset(&act.sa_mask);
-+ system_stack_top = (char *) &act;
-+ if (sigaltstack(&stk, NULL) == 0)
-+ sigaction(SIGSEGV, &act, NULL);
-+ else
-+ free(stk.ss_sp);
-+ }
- }
- #endif
- #if defined(_WIN32) && !defined(_WIN64)
- caml_win32_overflow_detection();
- #endif
- }
-+
-+/* Termination of signal stuff */
-+
-+#if defined(TARGET_power) || defined(TARGET_s390x) \
-+ || defined(TARGET_sparc) && defined(SYS_solaris) \
-+ || defined(HAS_STACK_OVERFLOW_DETECTION)
-+static void set_signal_default(int signum)
-+{
-+ struct sigaction act;
-+ sigemptyset(&act.sa_mask);
-+ act.sa_handler = SIG_DFL;
-+ act.sa_flags = 0;
-+ sigaction(signum, &act, NULL);
-+}
-+#endif
-+
-+void caml_terminate_signals(void)
-+{
-+#if defined(TARGET_sparc) && defined(SYS_solaris)
-+ set_signal_default(SIGILL);
-+#endif
-+
-+#if defined(TARGET_power)
-+ set_signal_default(SIGTRAP);
-+#endif
-+
-+#if defined(TARGET_s390x)
-+ set_signal_default(SIGFPE);
-+#endif
-+
-+#ifdef HAS_STACK_OVERFLOW_DETECTION
-+ set_signal_default(SIGSEGV);
-+ stack_t oldstk, stk;
-+ stk.ss_flags = SS_DISABLE;
-+ if (sigaltstack(&stk, &oldstk) == 0) {
-+ /* If caml_init_signals failed, we are not using an alternate signal stack.
-+ SS_DISABLE will be set in oldstk, and there is nothing to free in this
-+ case. */
-+ if (! (oldstk.ss_flags & SS_DISABLE)) free(oldstk.ss_sp);
-+ }
-+#endif
-+}
---- a/asmrun/startup.c
-+++ b/asmrun/startup.c
-@@ -92,6 +92,7 @@ void (*caml_termination_hook)(void *) = NULL;
- extern value caml_start_program (void);
- extern void caml_init_ieee_floats (void);
- extern void caml_init_signals (void);
-+extern void caml_terminate_signals(void);
-
- #if defined(_MSC_VER) && __STDC_SECURE_LIB__ >= 200411L
-
-@@ -103,6 +104,7 @@ extern void caml_install_invalid_parameter_handler();
- value caml_startup_exn(char **argv)
- {
- char * exe_name, * proc_self_exe;
-+ value res;
- char tos;
-
- #ifdef WITH_SPACETIME
-@@ -138,10 +140,13 @@ value caml_startup_exn(char **argv)
- exe_name = caml_search_exe_in_path(exe_name);
- caml_sys_init(exe_name, argv);
- if (sigsetjmp(caml_termination_jmpbuf.buf, 0)) {
-+ caml_terminate_signals();
- if (caml_termination_hook != NULL) caml_termination_hook(NULL);
- return Val_unit;
- }
-- return caml_start_program();
-+ res = caml_start_program();
-+ caml_terminate_signals();
-+ return res;
- }
-
- void caml_startup(char **argv)
---- a/byterun/sys.c
-+++ b/byterun/sys.c
-@@ -111,6 +111,8 @@ static void caml_sys_check_path(value name)
- }
- }
-
-+extern void caml_terminate_signals(void);
-+
- CAMLprim value caml_sys_exit(value retcode_v)
- {
- int retcode = Int_val(retcode_v);
-@@ -144,6 +146,9 @@ CAMLprim value caml_sys_exit(value retcode_v)
- caml_debugger(PROGRAM_EXIT);
- #endif
- CAML_INSTR_ATEXIT ();
-+#ifdef NATIVE_CODE
-+ caml_terminate_signals();
-+#endif
- CAML_SYS_EXIT(retcode);
- return Val_unit;
- }
-
diff --git a/dev-lang/ocaml/files/ocaml-4.09.0-glibc-2.34.patch b/dev-lang/ocaml/files/ocaml-4.09.0-glibc-2.34.patch
deleted file mode 100644
index 48127343a3f4..000000000000
--- a/dev-lang/ocaml/files/ocaml-4.09.0-glibc-2.34.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-https://github.com/ocaml/ocaml/commit/8eed2e441222588dc385a98ae8bd6f5820eb0223
-https://github.com/gentoo/gentoo/pull/22851#pullrequestreview-882504245
-
-From 8eed2e441222588dc385a98ae8bd6f5820eb0223 Mon Sep 17 00:00:00 2001
-From: Xavier Leroy <xavierleroy@users.noreply.github.com>
-Date: Fri, 5 Mar 2021 19:14:07 +0100
-Subject: [PATCH] Dynamically allocate the alternate signal stack
-
-In Glibc 2.34 and later, SIGSTKSZ may not be a compile-time constant.
-It is no longer possible to statically allocate the alternate signal
-stack for the main thread, as we've been doing for the last 25 years.
-
-This commit implements dynamic allocation of the alternate signal stack
-even for the main thread. It reuses the code already in place to allocate
-the alternate signal stack for other threads.
-
-The alternate signal stack is freed when the main OCaml code / an OCaml thread
-stops.
-
-(partial back-port of PR#10266 and PR#10726)
---- a/runtime/fail_nat.c
-+++ b/runtime/fail_nat.c
-@@ -31,6 +31,8 @@
- #include "caml/roots.h"
- #include "caml/callback.h"
-
-+extern void caml_terminate_signals(void);
-+
- /* The globals holding predefined exceptions */
-
- typedef value caml_generated_constant[1];
-@@ -60,7 +62,10 @@ char * caml_exception_pointer = NULL;
- void caml_raise(value v)
- {
- Unlock_exn();
-- if (caml_exception_pointer == NULL) caml_fatal_uncaught_exception(v);
-+ if (caml_exception_pointer == NULL) {
-+ caml_terminate_signals();
-+ caml_fatal_uncaught_exception(v);
-+ }
-
- while (caml_local_roots != NULL &&
- (char *) caml_local_roots < caml_exception_pointer) {
---- a/runtime/signals_nat.c
-+++ b/runtime/signals_nat.c
-@@ -182,7 +182,6 @@ DECLARE_SIGNAL_HANDLER(trap_handler)
- #ifdef HAS_STACK_OVERFLOW_DETECTION
-
- static char * system_stack_top;
--static char sig_alt_stack[SIGSTKSZ];
-
- #if defined(SYS_linux)
- /* PR#4746: recent Linux kernels with support for stack randomization
-@@ -275,14 +274,61 @@ void caml_init_signals(void)
- {
- stack_t stk;
- struct sigaction act;
-- stk.ss_sp = sig_alt_stack;
-- stk.ss_size = SIGSTKSZ;
-- stk.ss_flags = 0;
-- SET_SIGACT(act, segv_handler);
-- act.sa_flags |= SA_ONSTACK | SA_NODEFER;
-- sigemptyset(&act.sa_mask);
-- system_stack_top = (char *) &act;
-- if (sigaltstack(&stk, NULL) == 0) { sigaction(SIGSEGV, &act, NULL); }
-+ /* Allocate and select an alternate stack for handling signals,
-+ especially SIGSEGV signals.
-+ The alternate stack used to be statically-allocated for the main thread,
-+ but this is incompatible with Glibc 2.34 and newer, where SIGSTKSZ
-+ may not be a compile-time constant. */
-+ stk.ss_sp = malloc(SIGSTKSZ);
-+ if (stk.ss_sp != NULL) {
-+ stk.ss_size = SIGSTKSZ;
-+ stk.ss_flags = 0;
-+ SET_SIGACT(act, segv_handler);
-+ act.sa_flags |= SA_ONSTACK | SA_NODEFER;
-+ sigemptyset(&act.sa_mask);
-+ system_stack_top = (char *) &act;
-+ if (sigaltstack(&stk, NULL) == 0)
-+ sigaction(SIGSEGV, &act, NULL);
-+ else
-+ free(stk.ss_sp);
-+ }
-+ }
-+#endif
-+}
-+
-+/* Termination of signal stuff */
-+
-+#if defined(TARGET_power) || defined(TARGET_s390x) \
-+ || defined(HAS_STACK_OVERFLOW_DETECTION)
-+static void set_signal_default(int signum)
-+{
-+ struct sigaction act;
-+ sigemptyset(&act.sa_mask);
-+ act.sa_handler = SIG_DFL;
-+ act.sa_flags = 0;
-+ sigaction(signum, &act, NULL);
-+}
-+#endif
-+
-+void caml_terminate_signals(void)
-+{
-+#if defined(TARGET_power)
-+ set_signal_default(SIGTRAP);
-+#endif
-+
-+#if defined(TARGET_s390x)
-+ set_signal_default(SIGFPE);
-+#endif
-+
-+#ifdef HAS_STACK_OVERFLOW_DETECTION
-+ set_signal_default(SIGSEGV);
-+ stack_t oldstk, stk;
-+ stk.ss_flags = SS_DISABLE;
-+ if (sigaltstack(&stk, &oldstk) == 0) {
-+ /* If caml_init_signals failed, we are not using an alternate signal stack.
-+ SS_DISABLE will be set in oldstk, and there is nothing to free in this
-+ case. */
-+ if (! (oldstk.ss_flags & SS_DISABLE)) free(oldstk.ss_sp);
- }
- #endif
- }
---- a/runtime/startup_nat.c
-+++ b/runtime/startup_nat.c
-@@ -92,6 +92,7 @@ void (*caml_termination_hook)(void *) = NULL;
- extern value caml_start_program (void);
- extern void caml_init_ieee_floats (void);
- extern void caml_init_signals (void);
-+extern void caml_terminate_signals(void);
- #ifdef _WIN32
- extern void caml_win32_overflow_detection (void);
- #endif
-@@ -106,6 +107,7 @@ extern void caml_install_invalid_parameter_handler();
- value caml_startup_common(char_os **argv, int pooling)
- {
- char_os * exe_name, * proc_self_exe;
-+ value res;
- char tos;
-
- /* Determine options */
-@@ -153,10 +155,13 @@ value caml_startup_common(char_os **argv, int pooling)
- exe_name = caml_search_exe_in_path(exe_name);
- caml_sys_init(exe_name, argv);
- if (sigsetjmp(caml_termination_jmpbuf.buf, 0)) {
-+ caml_terminate_signals();
- if (caml_termination_hook != NULL) caml_termination_hook(NULL);
- return Val_unit;
- }
-- return caml_start_program();
-+ res = caml_start_program();
-+ caml_terminate_signals();
-+ return res;
- }
-
- value caml_startup_exn(char_os **argv)
---- a/runtime/sys.c
-+++ b/runtime/sys.c
-@@ -112,6 +112,8 @@ static void caml_sys_check_path(value name)
- }
- }
-
-+extern void caml_terminate_signals(void);
-+
- CAMLprim value caml_sys_exit(value retcode_v)
- {
- int retcode = Int_val(retcode_v);
-@@ -155,6 +157,9 @@ CAMLprim value caml_sys_exit(value retcode_v)
- caml_shutdown();
- #ifdef _WIN32
- caml_restore_win32_terminal();
-+#endif
-+#ifdef NATIVE_CODE
-+ caml_terminate_signals();
- #endif
- exit(retcode);
- }
-
diff --git a/dev-lang/ocaml/files/ocaml-4.10.2-glibc-2.34.patch b/dev-lang/ocaml/files/ocaml-4.10.2-glibc-2.34.patch
deleted file mode 100644
index 4c157ddd90b8..000000000000
--- a/dev-lang/ocaml/files/ocaml-4.10.2-glibc-2.34.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-https://github.com/ocaml/ocaml/commit/4b4c643d1d5d28738f6d900cd902851ed9dc5364
-https://bugs.gentoo.org/804498
-
-From 4b4c643d1d5d28738f6d900cd902851ed9dc5364 Mon Sep 17 00:00:00 2001
-From: Xavier Leroy <xavierleroy@users.noreply.github.com>
-Date: Fri, 5 Mar 2021 19:14:07 +0100
-Subject: [PATCH] Dynamically allocate the alternate signal stack
-
-In Glibc 2.34 and later, SIGSTKSZ may not be a compile-time constant.
-It is no longer possible to statically allocate the alternate signal
-stack for the main thread, as we've been doing for the last 25 years.
-
-This commit implements dynamic allocation of the alternate signal stack
-even for the main thread. It reuses the code already in place to allocate
-the alternate signal stack for other threads.
-
-The alternate signal stack is freed when the main OCaml code / an OCaml thread
-stops.
-
-(partial back-port of PR#10266 and PR#10726)
---- a/otherlibs/systhreads/st_stubs.c
-+++ b/otherlibs/systhreads/st_stubs.c
-@@ -140,6 +140,7 @@ static st_retcode caml_threadstatus_wait (value);
- #ifdef NATIVE_CODE
- extern struct longjmp_buffer caml_termination_jmpbuf;
- extern void (*caml_termination_hook)(void);
-+extern int caml_stop_stack_overflow_detection(void);
- #endif
-
- /* Hook for scanning the stacks of the other threads */
-@@ -576,6 +577,7 @@ static ST_THREAD_FUNCTION caml_thread_start(void * arg)
- caml_thread_stop();
- #ifdef NATIVE_CODE
- }
-+ caml_stop_stack_overflow_detection();
- #endif
- /* The thread now stops running */
- return 0;
---- a/runtime/fail_nat.c
-+++ b/runtime/fail_nat.c
-@@ -32,6 +32,8 @@
- #include "caml/roots.h"
- #include "caml/callback.h"
-
-+extern void caml_terminate_signals(void);
-+
- /* The globals holding predefined exceptions */
-
- typedef value caml_generated_constant[1];
-@@ -62,7 +64,10 @@ CAMLno_asan
- void caml_raise(value v)
- {
- Unlock_exn();
-- if (Caml_state->exception_pointer == NULL) caml_fatal_uncaught_exception(v);
-+ if (Caml_state->exception_pointer == NULL) {
-+ caml_terminate_signals();
-+ caml_fatal_uncaught_exception(v);
-+ }
-
- while (Caml_state->local_roots != NULL &&
- (char *) Caml_state->local_roots < Caml_state->exception_pointer) {
---- a/runtime/signals_nat.c
-+++ b/runtime/signals_nat.c
-@@ -191,8 +191,6 @@ DECLARE_SIGNAL_HANDLER(trap_handler)
- #error "CONTEXT_SP is required if HAS_STACK_OVERFLOW_DETECTION is defined"
- #endif
-
--static char sig_alt_stack[SIGSTKSZ];
--
- /* Code compiled with ocamlopt never accesses more than
- EXTRA_STACK bytes below the stack pointer. */
- #define EXTRA_STACK 256
-@@ -254,6 +252,10 @@ DECLARE_SIGNAL_HANDLER(segv_handler)
-
- /* Initialization of signal stuff */
-
-+#ifdef HAS_STACK_OVERFLOW_DETECTION
-+static int setup_stack_overflow_detection(void);
-+#endif
-+
- void caml_init_signals(void)
- {
- /* Bound-check trap handling */
-@@ -278,28 +280,91 @@ void caml_init_signals(void)
- #endif
-
- #ifdef HAS_STACK_OVERFLOW_DETECTION
-- {
-- stack_t stk;
-+ if (setup_stack_overflow_detection() != -1) {
- struct sigaction act;
-- stk.ss_sp = sig_alt_stack;
-- stk.ss_size = SIGSTKSZ;
-- stk.ss_flags = 0;
- SET_SIGACT(act, segv_handler);
- act.sa_flags |= SA_ONSTACK | SA_NODEFER;
- sigemptyset(&act.sa_mask);
-- if (sigaltstack(&stk, NULL) == 0) { sigaction(SIGSEGV, &act, NULL); }
-+ sigaction(SIGSEGV, &act, NULL);
- }
- #endif
- }
-
--void caml_setup_stack_overflow_detection(void)
-+/* Termination of signal stuff */
-+
-+#if defined(TARGET_power) || defined(TARGET_s390x) \
-+ || defined(HAS_STACK_OVERFLOW_DETECTION)
-+static void set_signal_default(int signum)
-+{
-+ struct sigaction act;
-+ sigemptyset(&act.sa_mask);
-+ act.sa_handler = SIG_DFL;
-+ act.sa_flags = 0;
-+ sigaction(signum, &act, NULL);
-+}
-+#endif
-+
-+int caml_stop_stack_overflow_detection(void);
-+
-+void caml_terminate_signals(void)
- {
-+#if defined(TARGET_power)
-+ set_signal_default(SIGTRAP);
-+#endif
-+
-+#if defined(TARGET_s390x)
-+ set_signal_default(SIGFPE);
-+#endif
-+
- #ifdef HAS_STACK_OVERFLOW_DETECTION
-+ set_signal_default(SIGSEGV);
-+ caml_stop_stack_overflow_detection();
-+#endif
-+}
-+
-+/* Allocate and select an alternate stack for handling signals,
-+ especially SIGSEGV signals.
-+ Each thread needs its own alternate stack.
-+ The alternate stack used to be statically-allocated for the main thread,
-+ but this is incompatible with Glibc 2.34 and newer, where SIGSTKSZ
-+ may not be a compile-time constant (issue #10250). */
-+
-+#ifdef HAS_STACK_OVERFLOW_DETECTION
-+static int setup_stack_overflow_detection(void)
-+{
- stack_t stk;
- stk.ss_sp = malloc(SIGSTKSZ);
-+ if (stk.ss_sp == NULL) return -1;
- stk.ss_size = SIGSTKSZ;
- stk.ss_flags = 0;
-- if (stk.ss_sp)
-- sigaltstack(&stk, NULL);
-+ if (sigaltstack(&stk, NULL) == -1) {
-+ free(stk.ss_sp);
-+ return -1;
-+ }
-+ /* Success (or stack overflow detection not available) */
-+ return 0;
-+}
-+#endif
-+
-+CAMLexport void caml_setup_stack_overflow_detection(void)
-+{
-+#ifdef HAS_STACK_OVERFLOW_DETECTION
-+ setup_stack_overflow_detection();
-+#endif
-+}
-+
-+CAMLexport int caml_stop_stack_overflow_detection(void)
-+{
-+#ifdef HAS_STACK_OVERFLOW_DETECTION
-+ stack_t oldstk, stk;
-+ stk.ss_flags = SS_DISABLE;
-+ if (sigaltstack(&stk, &oldstk) == -1) return -1;
-+ /* If caml_setup_stack_overflow_detection failed, we are not using
-+ an alternate signal stack. SS_DISABLE will be set in oldstk,
-+ and there is nothing to free in this case. */
-+ if (! (oldstk.ss_flags & SS_DISABLE)) free(oldstk.ss_sp);
-+ return 0;
-+#else
-+ return 0;
- #endif
- }
---- a/runtime/startup_nat.c
-+++ b/runtime/startup_nat.c
-@@ -93,6 +93,7 @@ void (*caml_termination_hook)(void *) = NULL;
- extern value caml_start_program (caml_domain_state*);
- extern void caml_init_ieee_floats (void);
- extern void caml_init_signals (void);
-+extern void caml_terminate_signals(void);
- #ifdef _WIN32
- extern void caml_win32_overflow_detection (void);
- #endif
-@@ -107,6 +108,7 @@ extern void caml_install_invalid_parameter_handler();
- value caml_startup_common(char_os **argv, int pooling)
- {
- char_os * exe_name, * proc_self_exe;
-+ value res;
- char tos;
-
- /* Initialize the domain */
-@@ -156,10 +158,13 @@ value caml_startup_common(char_os **argv, int pooling)
- exe_name = caml_search_exe_in_path(exe_name);
- caml_sys_init(exe_name, argv);
- if (sigsetjmp(caml_termination_jmpbuf.buf, 0)) {
-+ caml_terminate_signals();
- if (caml_termination_hook != NULL) caml_termination_hook(NULL);
- return Val_unit;
- }
-- return caml_start_program(Caml_state);
-+ res = caml_start_program(Caml_state);
-+ caml_terminate_signals();
-+ return res;
- }
-
- value caml_startup_exn(char_os **argv)
---- a/runtime/sys.c
-+++ b/runtime/sys.c
-@@ -112,6 +112,8 @@ static void caml_sys_check_path(value name)
- }
- }
-
-+extern void caml_terminate_signals(void);
-+
- CAMLprim value caml_sys_exit(value retcode_v)
- {
- int retcode = Int_val(retcode_v);
-@@ -156,6 +158,9 @@ CAMLprim value caml_sys_exit(value retcode_v)
- caml_shutdown();
- #ifdef _WIN32
- caml_restore_win32_terminal();
-+#endif
-+#ifdef NATIVE_CODE
-+ caml_terminate_signals();
- #endif
- exit(retcode);
- }
-
diff --git a/dev-lang/ocaml/ocaml-4.05.0-r9.ebuild b/dev-lang/ocaml/ocaml-4.05.0-r9.ebuild
index f2bb2369ad69..836f967b59ce 100644
--- a/dev-lang/ocaml/ocaml-4.05.0-r9.ebuild
+++ b/dev-lang/ocaml/ocaml-4.05.0-r9.ebuild
@@ -10,7 +10,8 @@ MY_P="${P/_/-}"
DESCRIPTION="Type-inferring functional programming language descended from the ML family"
HOMEPAGE="https://ocaml.org"
SRC_URI="https://github.com/ocaml/ocaml/archive/${PV/_/+}.tar.gz -> ${MY_P}.tar.gz
- mirror://gentoo/${PN}-patches-${PATCHLEVEL}.tar.bz2"
+ mirror://gentoo/${PN}-patches-${PATCHLEVEL}.tar.bz2
+ https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-patches-1.tar.bz2"
LICENSE="QPL-1.0 LGPL-2"
# Everytime ocaml is updated to a new version, everything ocaml must be rebuilt,
@@ -36,9 +37,7 @@ S="${WORKDIR}/${MY_P}"
PATCHES=(
"${FILESDIR}"/${PN}-4.04.2-tinfo.patch #459512
- "${FILESDIR}"/${P}-gcc10.patch
- "${FILESDIR}"/${P}-CVE-2018-9838.patch
- "${FILESDIR}"/${P}-glibc-2.34.patch
+ "${WORKDIR}"/${P}-patches-1/
)
pkg_setup() {
diff --git a/dev-lang/ocaml/ocaml-4.09.0-r3.ebuild b/dev-lang/ocaml/ocaml-4.09.0-r3.ebuild
index 8bf41d439d5a..7d1b5b6f6592 100644
--- a/dev-lang/ocaml/ocaml-4.09.0-r3.ebuild
+++ b/dev-lang/ocaml/ocaml-4.09.0-r3.ebuild
@@ -5,9 +5,10 @@ EAPI=7
inherit flag-o-matic
-HOMEPAGE="https://ocaml.org/"
-SRC_URI="https://github.com/ocaml/ocaml/archive/${PV}.tar.gz -> ${P}.tar.gz"
DESCRIPTION="Programming language supporting functional, imperative & object-oriented styles"
+HOMEPAGE="https://ocaml.org/"
+SRC_URI="https://github.com/ocaml/ocaml/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-patches-1.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0/$(ver_cut 1-2)"
@@ -24,9 +25,7 @@ PDEPEND="emacs? ( app-emacs/ocaml-mode )
QA_FLAGS_IGNORED='usr/lib.*/ocaml/bigarray.cmxs'
PATCHES=(
- "${FILESDIR}"/${PN}-4.09.0-gcc-10.patch
- "${FILESDIR}"/${P}-cflags.patch
- "${FILESDIR}"/${P}-glibc-2.34.patch
+ "${WORKDIR}"/${P}-patches-1/
)
src_prepare() {
@@ -65,7 +64,8 @@ src_configure() {
$(use_enable flambda)
$(use_enable spacetime)
)
- econf ${opt[@]}
+
+ econf "${opt[@]}"
}
src_compile() {
diff --git a/dev-lang/ocaml/ocaml-4.10.2-r3.ebuild b/dev-lang/ocaml/ocaml-4.10.2-r3.ebuild
index b298bea0d51b..b0b37115a35c 100644
--- a/dev-lang/ocaml/ocaml-4.10.2-r3.ebuild
+++ b/dev-lang/ocaml/ocaml-4.10.2-r3.ebuild
@@ -5,9 +5,10 @@ EAPI=7
inherit flag-o-matic
-HOMEPAGE="https://ocaml.org/"
-SRC_URI="https://github.com/ocaml/ocaml/archive/${PV}.tar.gz -> ${P}.tar.gz"
DESCRIPTION="Programming language supporting functional, imperative & object-oriented styles"
+HOMEPAGE="https://ocaml.org/"
+SRC_URI="https://github.com/ocaml/ocaml/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-patches-1.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0/$(ver_cut 1-2)"
@@ -24,8 +25,7 @@ PDEPEND="emacs? ( app-emacs/ocaml-mode )
QA_FLAGS_IGNORED='usr/lib.*/ocaml/bigarray.cmxs'
PATCHES=(
- "${FILESDIR}"/${P}-cflags.patch
- "${FILESDIR}"/${P}-glibc-2.34.patch
+ "${WORKDIR}"/${P}-patches-1/
)
src_prepare() {
@@ -64,7 +64,8 @@ src_configure() {
$(use_enable flambda)
$(use_enable spacetime)
)
- econf ${opt[@]}
+
+ econf "${opt[@]}"
}
src_compile() {