commit:     cc66bf80ad125d2f2e682fc92fd1a3a2803fbb77
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Dec  1 04:06:53 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Dec  1 04:06:53 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cc66bf80

dev-perl/TermReadKey: fix configure w/ clang 16

Signed-off-by: Sam James <sam <AT> gentoo.org>

 ....380.0.ebuild => TermReadKey-2.380.0-r1.ebuild} |   4 +
 .../TermReadKey-2.380.0-configure-clang16.patch    | 147 +++++++++++++++++++++
 2 files changed, 151 insertions(+)

diff --git a/dev-perl/TermReadKey/TermReadKey-2.380.0.ebuild 
b/dev-perl/TermReadKey/TermReadKey-2.380.0-r1.ebuild
similarity index 90%
rename from dev-perl/TermReadKey/TermReadKey-2.380.0.ebuild
rename to dev-perl/TermReadKey/TermReadKey-2.380.0-r1.ebuild
index 667ae933ef4b..ade673b4b431 100644
--- a/dev-perl/TermReadKey/TermReadKey-2.380.0.ebuild
+++ b/dev-perl/TermReadKey/TermReadKey-2.380.0-r1.ebuild
@@ -16,3 +16,7 @@ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k 
~mips ppc ppc64 ~riscv
 BDEPEND="
        >=virtual/perl-ExtUtils-MakeMaker-6.580.0
 "
+
+PATCHES=(
+       "${FILESDIR}"/${P}-configure-clang16.patch
+)

diff --git 
a/dev-perl/TermReadKey/files/TermReadKey-2.380.0-configure-clang16.patch 
b/dev-perl/TermReadKey/files/TermReadKey-2.380.0-configure-clang16.patch
new file mode 100644
index 000000000000..c53eff0e150a
--- /dev/null
+++ b/dev-perl/TermReadKey/files/TermReadKey-2.380.0-configure-clang16.patch
@@ -0,0 +1,147 @@
+https://github.com/jonathanstowe/TermReadKey/commit/1e3455135ac17f25ce0c4f01722a184a1fb5c4d1
+
+From 1e3455135ac17f25ce0c4f01722a184a1fb5c4d1 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <[email protected]>
+Date: Fri, 25 Nov 2022 17:28:56 +0100
+Subject: [PATCH] Configure.pm: Specify the return type of main as int
+
+Implicit int is a language feature that was removed in the 1999
+version of the C language.
+
+I could not fix DeducePrototype because I do not see how it
+can work reliably with this approach.  I don't think TermReadKey
+uses this function.
+--- a/Configure.pm
++++ b/Configure.pm
+@@ -503,7 +503,7 @@ by the compiler is returned.
+ =cut
+ 
+ sub CheckHeader { #Find a header (or set of headers) that exists
+-      ApplyHeaders("main(){}",@_);
++      ApplyHeaders("int main(){}",@_);
+ }
+ 
+ =head2 CheckStructure
+@@ -516,7 +516,7 @@ properly will be returned. B<undef> will be returned if 
nothing succeeds.
+ 
+ sub CheckStructure { # Check existance of a structure.
+       my($structname,@headers) = @_;
+-      ApplyHeaders("main(){ struct $structname s;}",@headers);
++      ApplyHeaders("int main(){ struct $structname s;}",@headers);
+ }
+ 
+ =head2 CheckField
+@@ -530,7 +530,7 @@ be returned if nothing succeeds.
+ 
+ sub CheckField { # Check for the existance of specified field in structure
+       my($structname,$fieldname,@headers) = @_;
+-      ApplyHeaders("main(){ struct $structname s1; struct $structname s2;
++      ApplyHeaders("int main(){ struct $structname s1; struct $structname s2;
+                    s1.$fieldname = s2.$fieldname; }",@headers);
+ }
+ 
+@@ -544,7 +544,7 @@ that symbol will be returned. B<undef> will be returned if 
nothing succeeds.
+ 
+ sub CheckLSymbol { # Check for linkable symbol
+       my($symbol,@libs) = @_;
+-      ApplyLibs("main() { void * f = (void *)($symbol); }",@libs);
++      ApplyLibs("int main() { void * f = (void *)($symbol); }",@libs);
+ }
+ 
+ =head2 CheckSymbol
+@@ -558,7 +558,8 @@ B<undef> will be returned if nothing succeeds.
+ 
+ sub CheckSymbol { # Check for linkable/header symbol
+       my($symbol,@lookup) = @_;
+-      ApplyHeadersAndLibs("main() { void * f = (void *)($symbol); }",@lookup);
++      ApplyHeadersAndLibs("int main() { void * f = (void *)($symbol); }",
++                          @lookup);
+ }
+ 
+ =head2 CheckHSymbol
+@@ -571,7 +572,7 @@ that symbol will be returned. B<undef> will be returned if 
nothing succeeds.
+ 
+ sub CheckHSymbol { # Check for header symbol
+       my($symbol,@headers) = @_;
+-      ApplyHeaders("main() { void * f = (void *)($symbol); }",@headers);
++      ApplyHeaders("int main() { void * f = (void *)($symbol); }",@headers);
+ }
+ 
+ =head2 CheckHPrototype (unexported)
+@@ -591,7 +592,7 @@ sub CheckHPrototype { # Check for header prototype.
+    # names function doesn't exist, this call will _succeed_. Caveat Utilitor.
+       my($function,$proto,@headers) = @_;
+       my(@proto) = @{$proto};
+-      ApplyHeaders("main() { extern ".$proto[0]." $function(".
++      ApplyHeaders("int main() { extern ".$proto[0]." $function(".
+                      join(",",@proto[1..$#proto])."); }",@headers);
+ }
+ 
+@@ -612,7 +613,8 @@ Example:
+ sub GetSymbol { # Check for linkable/header symbol
+       my($symbol,$printf,$cast,@lookup) = @_,"","";
+       scalar(ApplyHeadersAndLibsAndExecute(
+-              "main(){ 
printf(\"\%$printf\",($cast)($symbol));exit(0);}",@lookup));
++              "int main(){ printf(\"\%$printf\",($cast)($symbol));exit(0);}",
++               @lookup));
+ }
+ 
+ =head2 GetTextSymbol
+@@ -768,7 +770,7 @@ main(){ }");
+                       "double","long double",
+                       "char","unsigned char","short int","unsigned short 
int");
+ 
+-              if(Compile("main(){flurfie a;}")) { @types = (); }
++              if(Compile("int main(){flurfie a;}")) { @types = (); }
+ 
+               $Verbose=0;
+ 
+@@ -781,7 +783,7 @@ main(){ }");
+                                       if(Compile("
+ extern void func($types[$i]);
+ extern void func($types[$j]);
+-main(){}")) {
++int main(){}")) {
+                                             print "Removing type $types[$j] 
because it equals $types[$i]\n";
+                                             splice(@types,$j,1);
+                                             $j--;
+@@ -795,7 +797,7 @@ main(){}")) {
+                                       if(Compile("
+ $types[$i] func(void);
+ extern $types[$j] func(void);
+-main(){}")) {
++int main(){}")) {
+                                               print "Removing type $types[$j] 
because it equals $types[$i]\n";
+                                               splice(@types,$j,1);
+                                               $j--;
+@@ -833,7 +835,7 @@ main(){}")) {
+       # Can we check the return type without worry about arguements?
+       if($checkreturn and (!$checknilargs or !$checkniletcargs)) {
+               for (@types) {
+-                      if(ApplyHeaders("extern $_ $function(". 
($checknilargs?"...":"").");main(){}",[@headers])) {
++                      if(ApplyHeaders("extern $_ $function(". 
($checknilargs?"...":"").");int main(){}",[@headers])) {
+                               $rettype = $_; # Great, we found the return 
type.
+                               last;
+                       }
+@@ -847,9 +849,9 @@ main(){}")) {
+       my $numargs=-1;
+       my $varargs=0;
+       for (0..32) {
+-                      if(ApplyHeaders("main(){ $function(".join(",",("0") x 
$_).");}",@headers)) {
++                      if(ApplyHeaders("int main(){ $function(".join(",",("0") 
x $_).");}",@headers)) {
+                               $numargs=$_;
+-                              if(ApplyHeaders("main(){ 
$function(".join(",",("0") x ($_+1)).");}",@headers)) {
++                              if(ApplyHeaders("int main(){ 
$function(".join(",",("0") x ($_+1)).");}",@headers)) {
+                                       $varargs=1;
+                               }
+                               last
+@@ -865,7 +867,7 @@ main(){}")) {
+ 
+       if(@args>0 and !defined($rettype)) {
+               for (@types) {
+-                      if(defined(ApplyHeaders("extern $_ 
$function(".join(",",@args).");main(){}",[@headers]))) {
++                      if(defined(ApplyHeaders("extern $_ 
$function(".join(",",@args).");int main(){}",[@headers]))) {
+                               $rettype = $_; # Great, we found the return 
type.
+                               last;
+                       }
+

Reply via email to