From fe47dbb9cd816c7b6bac4558a23e6db59d6ccd43 Mon Sep 17 00:00:00 2001 From: ICHINOSE Shogo Date: Sun, 22 Mar 2026 00:16:48 +0900 Subject: [PATCH] Enable -DPERL_USE_SAFE_PUTENV in older versions of Perl on darwin. -DPERL_USE_SAFE_PUTENV was removed in Perl 5.37.1, but it is still required for older versions of Perl on darwin. Made the following changes to hints/darwin.sh: ```diff --- hints/darwin.sh.old 2026-03-22 00:12:35 +++ hints/darwin.sh 2026-03-22 00:13:13 @@ -526,6 +526,26 @@ # makefile in the same place. Since Darwin uses GNU make, this dodges # the problem. firstmakefile=GNUmakefile; + +# >= 5.23.6 and <= 5.37.0 have a problem with setenv() in atfork handlers on Darwin, +# so enable -DPERL_USE_SAFE_PUTENV, ref. https://github.com/Perl/perl5/commit/e3962106e93fa80bf960e71ac7c7727e7e15eee8 +# This behavior became the default after version 5.37.0, ref. https://github.com/Perl/perl5/commit/ae6b6b71cdbfb3fb6e1192178fa1e530a2f07ece +if [ "$perl_revision" -eq 5 ] && \ + { [ "$perl_version" -gt 23 ] || \ + { [ "$perl_version" -eq 23 ] && [ "$perl_subversion" -ge 6 ]; }; } && \ + { [ "$perl_version" -lt 37 ] || \ + { [ "$perl_version" -eq 37 ] && [ "$perl_subversion" -le 0 ]; }; } +then + # Parts of the system call setenv(), in particular in an atfork handler. + # This causes problems when the child tries to clean up environ[], so + # let libc manage environ[]. + cat >> config.over <<'EOOVER' +if test "$d_unsetenv" = "$define" -a \ + `expr "$ccflags" : '.*-DPERL_USE_SAFE_PUTENV'` -eq 0; then + ccflags="$ccflags -DPERL_USE_SAFE_PUTENV" +fi +EOOVER +fi # if you use a newer toolchain before OS X 10.9 these functions may be # incorrectly detected, so disable them ``` fixes https://github.com/bingos/devel-patchperl/issues/68 --- lib/Devel/PatchPerl/Hints.pm | 41 +++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/lib/Devel/PatchPerl/Hints.pm b/lib/Devel/PatchPerl/Hints.pm index fcabc31..9014f4b 100644 --- a/lib/Devel/PatchPerl/Hints.pm +++ b/lib/Devel/PatchPerl/Hints.pm @@ -414,18 +414,35 @@ cHRoPSIkbG9jbGlicHRoIC9vcHQvbG9jYWwvbGliL2xpYmdjYyIgOzsKZXNhYwoKIyMKIyBCdWls ZCBwcm9jZXNzCiMjCgojIENhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMgZG9uJ3QgZ2V0IGFs b25nIHdpdGggTWFrZWZpbGUgYW5kCiMgbWFrZWZpbGUgaW4gdGhlIHNhbWUgcGxhY2UuICBTaW5j ZSBEYXJ3aW4gdXNlcyBHTlUgbWFrZSwgdGhpcyBkb2RnZXMKIyB0aGUgcHJvYmxlbS4KZmlyc3Rt -YWtlZmlsZT1HTlVtYWtlZmlsZTsKCiMgaWYgeW91IHVzZSBhIG5ld2VyIHRvb2xjaGFpbiBiZWZv -cmUgT1MgWCAxMC45IHRoZXNlIGZ1bmN0aW9ucyBtYXkgYmUKIyBpbmNvcnJlY3RseSBkZXRlY3Rl -ZCwgc28gZGlzYWJsZSB0aGVtCiMgT1MgWCAxMC4xMC54IGNvcnJlc3BvbmRzIHRvIGtlcm5lbCAx -NC54CmNhc2UgIiRvc3ZlcnMiIGluCiAgICBbMS05XS4qfDFbMC0zXS4qKQoJZF9saW5rYXQ9dW5k -ZWYKCWRfb3BlbmF0PXVuZGVmCglkX3JlbmFtZWF0PXVuZGVmCglkX3VubGlua2F0PXVuZGVmCglk -X2ZjaG1vZGF0PXVuZGVmCgk7Owplc2FjCgojIG1rb3N0ZW1wKCkgd2FzIGF1dG9kZXRlY3RlZCBh -cyBwcmVzZW50IGJ1dCBmb3VuZCB0byBub3QgYmUgbGlua2FibGUKIyBvbiAxNS42LjAuICBVbmtu -b3duIHdoYXQgb3RoZXIgT1MgdmVyc2lvbnMgYXJlIGFmZmVjdGVkLgpkX21rb3N0ZW1wPXVuZGVm -CgojIEFwcGFyZW50bHkgdGhlIE1BQ0gtTyBmb3JtYXQgY2FuJ3Qgc3VwcG9ydCBfVGhyZWFkX2xv -Y2FsIGluIHNoYXJlZCBvYmplY3RzLAojIGJ1dCBjbGFuZyBpc24ndCB3aXNlIHRvIHRoaXMsIHNv -IG91ciBwcm9iZSB3b3JrcyBidXQgdGhlIGJ1aWxkIGZhaWxzLi4uCmRfdGhyZWFkX2xvY2FsPXVu -ZGVmCg==', +YWtlZmlsZT1HTlVtYWtlZmlsZTsKCiMgPj0gNS4yMy42IGFuZCA8PSA1LjM3LjAgaGF2ZSBhIHBy +b2JsZW0gd2l0aCBzZXRlbnYoKSBpbiBhdGZvcmsgaGFuZGxlcnMgb24gRGFyd2luLAojIHNvIGVu +YWJsZSAtRFBFUkxfVVNFX1NBRkVfUFVURU5WLCByZWYuIGh0dHBzOi8vZ2l0aHViLmNvbS9QZXJs +L3Blcmw1L2NvbW1pdC9lMzk2MjEwNmU5M2ZhODBiZjk2MGU3MWFjN2M3NzI3ZTdlMTVlZWU4CiMg +VGhpcyBiZWhhdmlvciBiZWNhbWUgdGhlIGRlZmF1bHQgYWZ0ZXIgdmVyc2lvbiA1LjM3LjAsIHJl +Zi4gaHR0cHM6Ly9naXRodWIuY29tL1BlcmwvcGVybDUvY29tbWl0L2FlNmI2YjcxY2RiZmIzZmI2 +ZTExOTIxNzhmYTFlNTMwYTJmMDdlY2UKaWYgWyAiJHBlcmxfcmV2aXNpb24iIC1lcSA1IF0gJiYg +XAogICB7IFsgIiRwZXJsX3ZlcnNpb24iIC1ndCAyMyBdIHx8IFwKICAgICB7IFsgIiRwZXJsX3Zl +cnNpb24iIC1lcSAyMyBdICYmIFsgIiRwZXJsX3N1YnZlcnNpb24iIC1nZSA2IF07IH07IH0gJiYg +XAogICB7IFsgIiRwZXJsX3ZlcnNpb24iIC1sdCAzNyBdIHx8IFwKICAgICB7IFsgIiRwZXJsX3Zl +cnNpb24iIC1lcSAzNyBdICYmIFsgIiRwZXJsX3N1YnZlcnNpb24iIC1sZSAwIF07IH07IH0KdGhl +bgogICMgUGFydHMgb2YgdGhlIHN5c3RlbSBjYWxsIHNldGVudigpLCBpbiBwYXJ0aWN1bGFyIGlu +IGFuIGF0Zm9yayBoYW5kbGVyLgogICMgVGhpcyBjYXVzZXMgcHJvYmxlbXMgd2hlbiB0aGUgY2hp +bGQgdHJpZXMgdG8gY2xlYW4gdXAgZW52aXJvbltdLCBzbwogICMgbGV0IGxpYmMgbWFuYWdlIGVu +dmlyb25bXS4KICBjYXQgPj4gY29uZmlnLm92ZXIgPDwnRU9PVkVSJwppZiB0ZXN0ICIkZF91bnNl +dGVudiIgPSAiJGRlZmluZSIgLWEgXAogICAgYGV4cHIgIiRjY2ZsYWdzIiA6ICcuKi1EUEVSTF9V +U0VfU0FGRV9QVVRFTlYnYCAtZXEgMDsgdGhlbgogICAgICAgIGNjZmxhZ3M9IiRjY2ZsYWdzIC1E +UEVSTF9VU0VfU0FGRV9QVVRFTlYiCmZpCkVPT1ZFUgpmaQoKIyBpZiB5b3UgdXNlIGEgbmV3ZXIg +dG9vbGNoYWluIGJlZm9yZSBPUyBYIDEwLjkgdGhlc2UgZnVuY3Rpb25zIG1heSBiZQojIGluY29y +cmVjdGx5IGRldGVjdGVkLCBzbyBkaXNhYmxlIHRoZW0KIyBPUyBYIDEwLjEwLnggY29ycmVzcG9u +ZHMgdG8ga2VybmVsIDE0LngKY2FzZSAiJG9zdmVycyIgaW4KICAgIFsxLTldLip8MVswLTNdLiop +CglkX2xpbmthdD11bmRlZgoJZF9vcGVuYXQ9dW5kZWYKCWRfcmVuYW1lYXQ9dW5kZWYKCWRfdW5s +aW5rYXQ9dW5kZWYKCWRfZmNobW9kYXQ9dW5kZWYKCTs7CmVzYWMKCiMgbWtvc3RlbXAoKSB3YXMg +YXV0b2RldGVjdGVkIGFzIHByZXNlbnQgYnV0IGZvdW5kIHRvIG5vdCBiZSBsaW5rYWJsZQojIG9u +IDE1LjYuMC4gIFVua25vd24gd2hhdCBvdGhlciBPUyB2ZXJzaW9ucyBhcmUgYWZmZWN0ZWQuCmRf +bWtvc3RlbXA9dW5kZWYKCiMgQXBwYXJlbnRseSB0aGUgTUFDSC1PIGZvcm1hdCBjYW4ndCBzdXBw +b3J0IF9UaHJlYWRfbG9jYWwgaW4gc2hhcmVkIG9iamVjdHMsCiMgYnV0IGNsYW5nIGlzbid0IHdp +c2UgdG8gdGhpcywgc28gb3VyIHByb2JlIHdvcmtzIGJ1dCB0aGUgYnVpbGQgZmFpbHMuLi4KZF90 +aHJlYWRfbG9jYWw9dW5kZWYK', 'dragonfly' => 'IyBoaW50cy9kcmFnb25mbHkuc2gKIwojIFRoaXMgZmlsZSBpcyBtb3N0bHkgY29waWVkIGZyb20g aGludHMvZnJlZWJzZC5zaCB3aXRoIHRoZSBPUyB2ZXJzaW9uCiMgaW5mb3JtYXRpb24gdGFrZW4g