dev-perl/WWW-Curl: fix build failure against curl-7.50.2 and upper, bug #593280

Reported-by: Toralf Förster
Bug: https://bugs.gentoo.org/593280

Package-Manager: portage-2.3.0
This commit is contained in:
Sergei Trofimovich
2016-09-17 18:01:25 +01:00
parent 3ffdeac193
commit 8f83390e00
3 changed files with 46 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
# Copyright 1999-2014 Gentoo Foundation
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
@@ -19,3 +19,5 @@ RDEPEND="net-misc/curl"
DEPEND="${RDEPEND}"
SRC_TEST=online
PATCHES=("${FILESDIR}"/${PN}-4.150.0-curl-7.50.2.patch)

View File

@@ -1,4 +1,4 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
@@ -19,3 +19,5 @@ RDEPEND="net-misc/curl"
DEPEND="${RDEPEND}"
SRC_TEST=online
PATCHES=("${FILESDIR}"/${PN}-4.150.0-curl-7.50.2.patch)

View File

@@ -0,0 +1,40 @@
curl-7.50.2 introduced a #define without integer value:
#ifdef CURL_NO_OLDIES
#define CURL_STRICTER
#endif
Heuristics in 'Makefile.PL' assumes all defines in form of
#define CURL_<something> <an-expression>
and generates a symbol lookup table in 'curlopt-constants.c'
as:
static int
constant(const char *name)
{
errno = 0;
if (strncmp(name, "CURL_", 5) == 0) {
name += 5;
switch (*name) {
...
case 'S':
if (strEQ(name, "STRICTER")) return CURL_STRICTER;
Which is not valid C:
curlopt-constants.c:128:49: error: ‘CURL_STRICTER’ undeclared (first use in this function)
if (strEQ(name, "STRICTER")) return CURL_STRICTER;
^~~~~~~~~~~~~
diff --git a/Makefile.PL b/Makefile.PL
index f9170bb..fc1a55a 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -122,2 +122,9 @@ if (!defined($curl_h)) {
while(<H>) {
+ # Skip defines without values like:
+ # #define CURL_STRICTER
+ if (/^#define (CURL[A-Za-z0-9_]*)$/) {
+ chomp;
+ warn "Skipping '$_': does not define a symbol";
+ next;
+ }
if (/^#define (CURL[A-Za-z0-9_]*)/) {