Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jul 2023 20:20:11 GMT
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 0b59b9276418 - main - lang/perl5*: Link with -pthread instead of -lpthread
Message-ID:  <202307112020.36BKKBAH026813@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by tijl:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0b59b9276418ce4fce8a73871a13598397ab2f2e

commit 0b59b9276418ce4fce8a73871a13598397ab2f2e
Author:     Tijl Coosemans <tijl@FreeBSD.org>
AuthorDate: 2023-07-04 14:22:05 +0000
Commit:     Tijl Coosemans <tijl@FreeBSD.org>
CommitDate: 2023-07-11 20:10:58 +0000

    lang/perl5*: Link with -pthread instead of -lpthread
    
    During configure of security/p5-Crypt-GCrypt a test program is
    compiled and run to test libgcrypt.  This program segfaults when perl5
    is built with the THREADS option.  Libgcrypt links with libgpg-error
    which has an init function which calls into libintl (gettext) which
    calls pthread functions before libthr is initialised.
    
    The compiler command line is provided by perl and it includes both
    -pthread and -lpthread.  Patch perl to remove -lpthread.  With -pthread
    the compiler will pass -lpthread to the linker such that it is
    initialised early.
    
    Discovered by the exp-run for gettext 0.22.
    
    While here also remove -lc unconditionally and remove the code that
    replaced it with -lc_r for old version of FreeBSD because the version
    test is incorrect (missing a dot).  The -pthread flag already tells
    the compiler to use -lc_r on those old versions.
    
    PR:             272210
---
 lang/perl5-devel/Makefile                     |  2 +-
 lang/perl5-devel/files/patch-hints_freebsd.sh | 43 ++++++++++++++++++++-------
 lang/perl5.32/Makefile                        |  2 +-
 lang/perl5.32/files/patch-hints_freebsd.sh    | 41 +++++++++++++++++++------
 lang/perl5.34/Makefile                        |  2 +-
 lang/perl5.34/files/patch-hints_freebsd.sh    | 43 ++++++++++++++++++++-------
 lang/perl5.36/Makefile                        |  1 +
 lang/perl5.36/files/patch-hints_freebsd.sh    | 43 ++++++++++++++++++++-------
 lang/perl5.38/Makefile                        |  2 +-
 lang/perl5.38/files/patch-hints_freebsd.sh    | 43 ++++++++++++++++++++-------
 10 files changed, 169 insertions(+), 53 deletions(-)

diff --git a/lang/perl5-devel/Makefile b/lang/perl5-devel/Makefile
index e639fd30f651..cf8cbc3a64c5 100644
--- a/lang/perl5-devel/Makefile
+++ b/lang/perl5-devel/Makefile
@@ -4,7 +4,7 @@ PORTNAME=	perl
 DISTVERSIONPREFIX=	v
 DISTVERSION=	${GH_TAGNAME:C/^v//:C/-g[0-9a-f]*$//}
 DISTVERSIONSUFFIX=	${GH_TAGNAME:C/.*-g/-g/}
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	lang devel perl5
 # XXX Leave only CPAN.
 MASTER_SITES=	LOCAL/mat/perl \
diff --git a/lang/perl5-devel/files/patch-hints_freebsd.sh b/lang/perl5-devel/files/patch-hints_freebsd.sh
index 9907c745ded7..966f04d1262a 100644
--- a/lang/perl5-devel/files/patch-hints_freebsd.sh
+++ b/lang/perl5-devel/files/patch-hints_freebsd.sh
@@ -1,24 +1,47 @@
 Remove libs that are not here on FreeBSD.
 
---- hints/freebsd.sh.orig	2022-06-19 19:29:35 UTC
+--- hints/freebsd.sh.orig	2020-12-18 09:58:48 UTC
 +++ hints/freebsd.sh
-@@ -88,6 +88,8 @@ case "$osvers" in
+@@ -88,8 +88,6 @@ case "$osvers" in
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
  	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
- 	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
- 	libswanted=`echo $libswanted | sed 's/ iconv / /'`
+-	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
+-	libswanted=`echo $libswanted | sed 's/ iconv / /'`
  	d_setregid='define'
-@@ -102,6 +104,10 @@ case "$osvers" in
+ 	d_setreuid='define'
+ 	d_setegid='define'
+@@ -102,8 +100,13 @@ case "$osvers" in
  	        ;;
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
 +	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ iconv / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
  	;;
  esac
++libswanted=`echo $libswanted | sed 's/ c / /'`
++# Use -pthread so the compiler adds -lpthread at the right place on the
++# linker command line so its init functions run early.
++libswanted=`echo $libswanted | sed 's/ pthread / /'`
  
+ case "$osvers" in
+ 10.*)
+@@ -269,19 +272,6 @@ EOM
+ 
+ 	esac
+ 
+-        case "$osvers" in
+-        [1-4]*)
+-	    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-        *)
+-	    set `echo X "$libswanted "| sed -e 's/ c //'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-	esac
+-	    
+ 	# Configure will probably pick the wrong libc to use for nm scan.
+ 	# The safest quick-fix is just to not use nm at all...
+ 	usenm=false
diff --git a/lang/perl5.32/Makefile b/lang/perl5.32/Makefile
index 14e5d6866f52..a56ec53f9005 100644
--- a/lang/perl5.32/Makefile
+++ b/lang/perl5.32/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	perl
 DISTVERSION=	${PERL_VERSION}
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	lang devel perl5
 MASTER_SITES=	CPAN/../../src/5.0
 DIST_SUBDIR=	perl
diff --git a/lang/perl5.32/files/patch-hints_freebsd.sh b/lang/perl5.32/files/patch-hints_freebsd.sh
index d8904480b745..966f04d1262a 100644
--- a/lang/perl5.32/files/patch-hints_freebsd.sh
+++ b/lang/perl5.32/files/patch-hints_freebsd.sh
@@ -2,23 +2,46 @@ Remove libs that are not here on FreeBSD.
 
 --- hints/freebsd.sh.orig	2020-12-18 09:58:48 UTC
 +++ hints/freebsd.sh
-@@ -88,6 +88,8 @@ case "$osvers" in
+@@ -88,8 +88,6 @@ case "$osvers" in
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
  	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
- 	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
- 	libswanted=`echo $libswanted | sed 's/ iconv / /'`
+-	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
+-	libswanted=`echo $libswanted | sed 's/ iconv / /'`
  	d_setregid='define'
-@@ -102,6 +104,10 @@ case "$osvers" in
+ 	d_setreuid='define'
+ 	d_setegid='define'
+@@ -102,8 +100,13 @@ case "$osvers" in
  	        ;;
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
 +	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ iconv / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
  	;;
  esac
++libswanted=`echo $libswanted | sed 's/ c / /'`
++# Use -pthread so the compiler adds -lpthread at the right place on the
++# linker command line so its init functions run early.
++libswanted=`echo $libswanted | sed 's/ pthread / /'`
  
+ case "$osvers" in
+ 10.*)
+@@ -269,19 +272,6 @@ EOM
+ 
+ 	esac
+ 
+-        case "$osvers" in
+-        [1-4]*)
+-	    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-        *)
+-	    set `echo X "$libswanted "| sed -e 's/ c //'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-	esac
+-	    
+ 	# Configure will probably pick the wrong libc to use for nm scan.
+ 	# The safest quick-fix is just to not use nm at all...
+ 	usenm=false
diff --git a/lang/perl5.34/Makefile b/lang/perl5.34/Makefile
index 07f18903042c..7f9c6c0f7ce4 100644
--- a/lang/perl5.34/Makefile
+++ b/lang/perl5.34/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	perl
 DISTVERSION=	${PERL_VERSION}
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	lang devel perl5
 MASTER_SITES=	CPAN/../../src/5.0
 DIST_SUBDIR=	perl
diff --git a/lang/perl5.34/files/patch-hints_freebsd.sh b/lang/perl5.34/files/patch-hints_freebsd.sh
index 4730556d1e89..966f04d1262a 100644
--- a/lang/perl5.34/files/patch-hints_freebsd.sh
+++ b/lang/perl5.34/files/patch-hints_freebsd.sh
@@ -1,24 +1,47 @@
 Remove libs that are not here on FreeBSD.
 
---- hints/freebsd.sh.orig	2022-02-19 12:15:55 UTC
+--- hints/freebsd.sh.orig	2020-12-18 09:58:48 UTC
 +++ hints/freebsd.sh
-@@ -88,6 +88,8 @@ case "$osvers" in
+@@ -88,8 +88,6 @@ case "$osvers" in
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
  	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
- 	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
- 	libswanted=`echo $libswanted | sed 's/ iconv / /'`
+-	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
+-	libswanted=`echo $libswanted | sed 's/ iconv / /'`
  	d_setregid='define'
-@@ -102,6 +104,10 @@ case "$osvers" in
+ 	d_setreuid='define'
+ 	d_setegid='define'
+@@ -102,8 +100,13 @@ case "$osvers" in
  	        ;;
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
 +	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ iconv / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
  	;;
  esac
++libswanted=`echo $libswanted | sed 's/ c / /'`
++# Use -pthread so the compiler adds -lpthread at the right place on the
++# linker command line so its init functions run early.
++libswanted=`echo $libswanted | sed 's/ pthread / /'`
  
+ case "$osvers" in
+ 10.*)
+@@ -269,19 +272,6 @@ EOM
+ 
+ 	esac
+ 
+-        case "$osvers" in
+-        [1-4]*)
+-	    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-        *)
+-	    set `echo X "$libswanted "| sed -e 's/ c //'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-	esac
+-	    
+ 	# Configure will probably pick the wrong libc to use for nm scan.
+ 	# The safest quick-fix is just to not use nm at all...
+ 	usenm=false
diff --git a/lang/perl5.36/Makefile b/lang/perl5.36/Makefile
index 45138ad8dbc3..eacaa878d387 100644
--- a/lang/perl5.36/Makefile
+++ b/lang/perl5.36/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	perl
 DISTVERSION=	${PERL_VERSION}
+PORTREVISION=	1
 CATEGORIES=	lang devel perl5
 MASTER_SITES=	CPAN/../../src/5.0
 DIST_SUBDIR=	perl
diff --git a/lang/perl5.36/files/patch-hints_freebsd.sh b/lang/perl5.36/files/patch-hints_freebsd.sh
index cf2569284c62..966f04d1262a 100644
--- a/lang/perl5.36/files/patch-hints_freebsd.sh
+++ b/lang/perl5.36/files/patch-hints_freebsd.sh
@@ -1,24 +1,47 @@
 Remove libs that are not here on FreeBSD.
 
---- hints/freebsd.sh.orig	2020-12-28 16:57:44 UTC
+--- hints/freebsd.sh.orig	2020-12-18 09:58:48 UTC
 +++ hints/freebsd.sh
-@@ -88,6 +88,8 @@ case "$osvers" in
+@@ -88,8 +88,6 @@ case "$osvers" in
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
  	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
- 	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
- 	libswanted=`echo $libswanted | sed 's/ iconv / /'`
+-	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
+-	libswanted=`echo $libswanted | sed 's/ iconv / /'`
  	d_setregid='define'
-@@ -102,6 +104,10 @@ case "$osvers" in
+ 	d_setreuid='define'
+ 	d_setegid='define'
+@@ -102,8 +100,13 @@ case "$osvers" in
  	        ;;
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
 +	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ iconv / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
  	;;
  esac
++libswanted=`echo $libswanted | sed 's/ c / /'`
++# Use -pthread so the compiler adds -lpthread at the right place on the
++# linker command line so its init functions run early.
++libswanted=`echo $libswanted | sed 's/ pthread / /'`
  
+ case "$osvers" in
+ 10.*)
+@@ -269,19 +272,6 @@ EOM
+ 
+ 	esac
+ 
+-        case "$osvers" in
+-        [1-4]*)
+-	    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-        *)
+-	    set `echo X "$libswanted "| sed -e 's/ c //'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-	esac
+-	    
+ 	# Configure will probably pick the wrong libc to use for nm scan.
+ 	# The safest quick-fix is just to not use nm at all...
+ 	usenm=false
diff --git a/lang/perl5.38/Makefile b/lang/perl5.38/Makefile
index 572c3299f05f..cf0ea90b5f2e 100644
--- a/lang/perl5.38/Makefile
+++ b/lang/perl5.38/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	perl
 DISTVERSION=	${PERL_VERSION}
-PORTREVISION=	0
+PORTREVISION=	1
 CATEGORIES=	lang devel perl5
 MASTER_SITES=	CPAN/../../src/5.0
 DIST_SUBDIR=	perl
diff --git a/lang/perl5.38/files/patch-hints_freebsd.sh b/lang/perl5.38/files/patch-hints_freebsd.sh
index 9907c745ded7..966f04d1262a 100644
--- a/lang/perl5.38/files/patch-hints_freebsd.sh
+++ b/lang/perl5.38/files/patch-hints_freebsd.sh
@@ -1,24 +1,47 @@
 Remove libs that are not here on FreeBSD.
 
---- hints/freebsd.sh.orig	2022-06-19 19:29:35 UTC
+--- hints/freebsd.sh.orig	2020-12-18 09:58:48 UTC
 +++ hints/freebsd.sh
-@@ -88,6 +88,8 @@ case "$osvers" in
+@@ -88,8 +88,6 @@ case "$osvers" in
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
  	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
- 	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
- 	libswanted=`echo $libswanted | sed 's/ iconv / /'`
+-	# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
+-	libswanted=`echo $libswanted | sed 's/ iconv / /'`
  	d_setregid='define'
-@@ -102,6 +104,10 @@ case "$osvers" in
+ 	d_setreuid='define'
+ 	d_setegid='define'
+@@ -102,8 +100,13 @@ case "$osvers" in
  	        ;;
  	esac
  	libswanted=`echo $libswanted | sed 's/ malloc / /'`
 +	libswanted=`echo $libswanted | sed 's/ bind / /'`
-+	libswanted=`echo $libswanted | sed 's/ dl / /'`
-+	libswanted=`echo $libswanted | sed 's/ iconv / /'`
-+	libswanted=`echo $libswanted | sed 's/ c / /'`
  	;;
  esac
++libswanted=`echo $libswanted | sed 's/ c / /'`
++# Use -pthread so the compiler adds -lpthread at the right place on the
++# linker command line so its init functions run early.
++libswanted=`echo $libswanted | sed 's/ pthread / /'`
  
+ case "$osvers" in
+ 10.*)
+@@ -269,19 +272,6 @@ EOM
+ 
+ 	esac
+ 
+-        case "$osvers" in
+-        [1-4]*)
+-	    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-        *)
+-	    set `echo X "$libswanted "| sed -e 's/ c //'`
+-	    shift
+-	    libswanted="$*"
+-	    ;;
+-	esac
+-	    
+ 	# Configure will probably pick the wrong libc to use for nm scan.
+ 	# The safest quick-fix is just to not use nm at all...
+ 	usenm=false



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202307112020.36BKKBAH026813>