commit:     2dcfb00c893c3190165f76a9b592fcf25b813809
Author:     Julian Ospald <hasufell <AT> gentoo <DOT> org>
AuthorDate: Mon Nov  2 16:04:10 2015 +0000
Commit:     Julian Ospald <hasufell <AT> gentoo <DOT> org>
CommitDate: Mon Nov  2 16:05:41 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2dcfb00c

net-libs/http-parser: version bump

This also fixes the upstream build system instead of working around
it.

It also fixes missing CFLAGS in linking commands.

 net-libs/http-parser/Manifest                      |  1 +
 .../files/0001-makefile-fix-DESTDIR-usage.patch    | 64 ++++++++++++++++++++++
 .../files/0002-makefile-quote-variables.patch      | 50 +++++++++++++++++
 ...x-SONAME-symlink-it-should-not-be-a-full-.patch | 35 ++++++++++++
 ...04-makefile-add-CFLAGS-to-linking-command.patch | 31 +++++++++++
 ...0005-makefile-fix-install-rule-dependency.patch | 33 +++++++++++
 net-libs/http-parser/http-parser-2.6.0.ebuild      | 45 +++++++++++++++
 7 files changed, 259 insertions(+)

diff --git a/net-libs/http-parser/Manifest b/net-libs/http-parser/Manifest
index 2d8af53..10f268e 100644
--- a/net-libs/http-parser/Manifest
+++ b/net-libs/http-parser/Manifest
@@ -2,3 +2,4 @@ DIST http-parser-2.3.tar.gz 42538 SHA256 
3bfe6b4ab7656c86e48b4a43a7a08aee7fd72c1
 DIST http-parser-2.4.1.tar.gz 44724 SHA256 
4a2597c37b874ce46b30764960d158d18cae2b4cd46458ce3cad98aa106427c9 SHA512 
f56b84f0af57cefa46daa10ac2e7b3015c185fa4c55615efa33f9131871a980b5c06ffad1699302ebe847c9325b41403520e0ef4d34bf5f6c48c6edabf1f4cb8
 WHIRLPOOL 
1873e97df046b10ed7a7da9ad3ba43055634af230b0b4391a8a814bb00455f8864ead809ba2555715e63b9a74202287b2a3c68ced884edf152e794bf70a0cfeb
 DIST http-parser-2.4.2.tar.gz 44814 SHA256 
d93d6cd4d587355bc714d6a79f4e5676d7dd2ccd2fafb21606c87268ea440cbf SHA512 
fa2ac6a27807252a8e2ca61e307b92fa7004424dbea69d9ffbd2297f47e0c2af740033126aeb6b11ea172e03c2fbf957c0ab0387836647920c3a9304d07f68ab
 WHIRLPOOL 
cbf45915f622ad07ee095f3a592c565847f427575ab0a062ce7d8dbfe3b8b92d4ec97787c3dec4710b7dec4f5b4cde49ece80063b29399c2f44acc14816c08ff
 DIST http-parser-2.5.0.tar.gz 46070 SHA256 
e3b4ba58f4e6ee5fbec781df020e5cb74c3a799a07f059e1e125127a0b801481 SHA512 
da94b21f313d09f0557e61574e1187d06ef3bc4e8115c6f8120eac8d26ba6db51469ee5ddb6da5a0c05f49279838e5028afff6a15790708cdca147b3bc66e18f
 WHIRLPOOL 
933ab2f8065fd2e7734d61284a042579edea40f0a0dea6b339a1ba07d9e50f2cd5e14f081d9889b728024171f2faeff7aab97b43c531fbd6badd882026261254
+DIST http-parser-2.6.0.tar.gz 47598 SHA256 
a11c5ccb9808496f3de66d54ea1f89271919923307e31c75de2a3a77a6754c97 SHA512 
e7bd34ed8270192e55f5e7495972afc9fe2adc36d85df4f09be4958bbf7f93872a056bb8db268cdc1068a9eb79ad9aefc2a8502bda92bac8a2490e08435f09e1
 WHIRLPOOL 
2bef86db5140c04a2d7e2191e5669c905368a1180c357c512a66a65907b23b317bd2466aa9b1a47c1287e9def7aecdab48c151343b1700d99514b47915df7bf5

diff --git a/net-libs/http-parser/files/0001-makefile-fix-DESTDIR-usage.patch 
b/net-libs/http-parser/files/0001-makefile-fix-DESTDIR-usage.patch
new file mode 100644
index 0000000..a819cf4
--- /dev/null
+++ b/net-libs/http-parser/files/0001-makefile-fix-DESTDIR-usage.patch
@@ -0,0 +1,64 @@
+From 7fbc87986baa09c342abb21e34613e8bbdc3c9c7 Mon Sep 17 00:00:00 2001
+From: hasufell <hasuf...@hasufell.de>
+Date: Mon, 2 Nov 2015 16:24:43 +0100
+Subject: [PATCH 1/4] makefile: fix DESTDIR usage
+
+DESTDIR is not supposed to be set inside other variables. It is
+standard to have this variable in install/uninstall rules, so it
+can be reliably set separately no matter what other variables are set
+to.
+This also avoids potential bugs with setting SONAME or seds on
+installed files (like pkgconfig) which then might include the
+temporary DESTDIR directory.
+
+DESTDIR is really just for installing into a temporary directory or
+a chroot, mostly used by package managers.
+---
+ Makefile | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 33c8ba0..76153a0 100644
+--- a/Makefile
++++ b/Makefile
+@@ -55,7 +55,7 @@ CFLAGS_LIB = $(CFLAGS_FAST) -fPIC
+ LDFLAGS_LIB = $(LDFLAGS) -shared
+ 
+ INSTALL ?= install
+-PREFIX ?= $(DESTDIR)/usr/local
++PREFIX ?= /usr/local
+ LIBDIR = $(PREFIX)/lib
+ INCLUDEDIR = $(PREFIX)/include
+ 
+@@ -123,19 +123,19 @@ tags: http_parser.c http_parser.h test.c
+       ctags $^
+ 
+ install: library
+-      $(INSTALL) -D  http_parser.h $(INCLUDEDIR)/http_parser.h
+-      $(INSTALL) -D $(SONAME) $(LIBDIR)/$(SONAME)
+-      ln -s $(LIBDIR)/$(SONAME) $(LIBDIR)/libhttp_parser.$(SOEXT)
++      $(INSTALL) -D  http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h
++      $(INSTALL) -D $(SONAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
++      ln -s $(LIBDIR)/$(SONAME) $(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)
+ 
+ install-strip: library
+-      $(INSTALL) -D  http_parser.h $(INCLUDEDIR)/http_parser.h
+-      $(INSTALL) -D -s $(SONAME) $(LIBDIR)/$(SONAME)
+-      ln -s $(LIBDIR)/$(SONAME) $(LIBDIR)/libhttp_parser.$(SOEXT)
++      $(INSTALL) -D  http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h
++      $(INSTALL) -D -s $(SONAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
++      ln -s $(LIBDIR)/$(SONAME) $(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)
+ 
+ uninstall:
+-      rm $(INCLUDEDIR)/http_parser.h
+-      rm $(LIBDIR)/$(SONAME)
+-      rm $(LIBDIR)/libhttp_parser.so
++      rm $(DESTDIR)$(INCLUDEDIR)/http_parser.h
++      rm $(DESTDIR)$(LIBDIR)/$(SONAME)
++      rm $(DESTDIR)$(LIBDIR)/libhttp_parser.so
+ 
+ clean:
+       rm -f *.o *.a tags test test_fast test_g \
+-- 
+2.6.1
+

diff --git a/net-libs/http-parser/files/0002-makefile-quote-variables.patch 
b/net-libs/http-parser/files/0002-makefile-quote-variables.patch
new file mode 100644
index 0000000..096ac6b
--- /dev/null
+++ b/net-libs/http-parser/files/0002-makefile-quote-variables.patch
@@ -0,0 +1,50 @@
+From 9bce473ba7417b45bfdb59d4151a8857dcfff4ad Mon Sep 17 00:00:00 2001
+From: hasufell <hasuf...@hasufell.de>
+Date: Mon, 2 Nov 2015 16:27:06 +0100
+Subject: [PATCH 2/4] makefile: quote variables
+
+Make does not take care of this in make rules. If any of the variables
+DESTDIR, INCLUDEDIR or LIBDIR contain whitespaces, then the related
+install command will fail.
+
+This is even more important for the uninstall rule.
+---
+ Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 76153a0..8c4a9d7 100644
+--- a/Makefile
++++ b/Makefile
+@@ -123,19 +123,19 @@ tags: http_parser.c http_parser.h test.c
+       ctags $^
+ 
+ install: library
+-      $(INSTALL) -D  http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h
+-      $(INSTALL) -D $(SONAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
+-      ln -s $(LIBDIR)/$(SONAME) $(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)
++      $(INSTALL) -D  http_parser.h "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
++      $(INSTALL) -D $(SONAME) "$(DESTDIR)$(LIBDIR)/$(SONAME)"
++      ln -s $(LIBDIR)/$(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
+ 
+ install-strip: library
+-      $(INSTALL) -D  http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h
+-      $(INSTALL) -D -s $(SONAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
+-      ln -s $(LIBDIR)/$(SONAME) $(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)
++      $(INSTALL) -D  http_parser.h "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
++      $(INSTALL) -D -s $(SONAME) "$(DESTDIR)$(LIBDIR)/$(SONAME)"
++      ln -s $(LIBDIR)/$(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
+ 
+ uninstall:
+-      rm $(DESTDIR)$(INCLUDEDIR)/http_parser.h
+-      rm $(DESTDIR)$(LIBDIR)/$(SONAME)
+-      rm $(DESTDIR)$(LIBDIR)/libhttp_parser.so
++      rm "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
++      rm "$(DESTDIR)$(LIBDIR)/$(SONAME)"
++      rm "$(DESTDIR)$(LIBDIR)/libhttp_parser.so"
+ 
+ clean:
+       rm -f *.o *.a tags test test_fast test_g \
+-- 
+2.6.1
+

diff --git 
a/net-libs/http-parser/files/0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
 
b/net-libs/http-parser/files/0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
new file mode 100644
index 0000000..cafe68d
--- /dev/null
+++ 
b/net-libs/http-parser/files/0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
@@ -0,0 +1,35 @@
+From f45b38c42e7e92a5d0215c44dcf306616536011e Mon Sep 17 00:00:00 2001
+From: hasufell <hasuf...@hasufell.de>
+Date: Mon, 2 Nov 2015 16:32:11 +0100
+Subject: [PATCH 3/4] makefile: fix SONAME symlink, it should not be a full
+ path
+
+The symlink destination being a full path doesn't give any benefit and
+may break a few use cases of copying these files to a different
+destination, while preserving the symlink.
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 8c4a9d7..cbe93e8 100644
+--- a/Makefile
++++ b/Makefile
+@@ -125,12 +125,12 @@ tags: http_parser.c http_parser.h test.c
+ install: library
+       $(INSTALL) -D  http_parser.h "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
+       $(INSTALL) -D $(SONAME) "$(DESTDIR)$(LIBDIR)/$(SONAME)"
+-      ln -s $(LIBDIR)/$(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
++      ln -s $(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
+ 
+ install-strip: library
+       $(INSTALL) -D  http_parser.h "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
+       $(INSTALL) -D -s $(SONAME) "$(DESTDIR)$(LIBDIR)/$(SONAME)"
+-      ln -s $(LIBDIR)/$(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
++      ln -s $(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
+ 
+ uninstall:
+       rm "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
+-- 
+2.6.1
+

diff --git 
a/net-libs/http-parser/files/0004-makefile-add-CFLAGS-to-linking-command.patch 
b/net-libs/http-parser/files/0004-makefile-add-CFLAGS-to-linking-command.patch
new file mode 100644
index 0000000..e21cd71
--- /dev/null
+++ 
b/net-libs/http-parser/files/0004-makefile-add-CFLAGS-to-linking-command.patch
@@ -0,0 +1,31 @@
+From 62b1450cfe2e0df2d912279d38edf1b916020101 Mon Sep 17 00:00:00 2001
+From: hasufell <hasuf...@hasufell.de>
+Date: Mon, 2 Nov 2015 16:39:31 +0100
+Subject: [PATCH 4/4] makefile: add CFLAGS to linking command
+
+Although we compile the objects explicitly there are some CFLAGS
+that may also affect linking, which is not always obvious.
+
+This can also be a problem for toolchains that support multiple ABIs
+and need to set CFLAGS=<abi selector>, which will cause linking
+to either fail or produce an unusable executable/library.
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index cbe93e8..ae16f08 100644
+--- a/Makefile
++++ b/Makefile
+@@ -102,7 +102,7 @@ libhttp_parser.o: http_parser.c http_parser.h Makefile
+       $(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c http_parser.c -o 
libhttp_parser.o
+ 
+ library: libhttp_parser.o
+-      $(CC) $(LDFLAGS_LIB) -o $(SONAME) $<
++      $(CC) $(CFLAGS_LIB) $(LDFLAGS_LIB) -o $(SONAME) $<
+ 
+ package: http_parser.o
+       $(AR) rcs libhttp_parser.a http_parser.o
+-- 
+2.6.1
+

diff --git 
a/net-libs/http-parser/files/0005-makefile-fix-install-rule-dependency.patch 
b/net-libs/http-parser/files/0005-makefile-fix-install-rule-dependency.patch
new file mode 100644
index 0000000..da96637
--- /dev/null
+++ b/net-libs/http-parser/files/0005-makefile-fix-install-rule-dependency.patch
@@ -0,0 +1,33 @@
+From b67bfbe6a07529dd82e2ee83b6848d017e6e422f Mon Sep 17 00:00:00 2001
+From: hasufell <hasuf...@hasufell.de>
+Date: Mon, 2 Nov 2015 16:51:28 +0100
+Subject: [PATCH 5/5] makefile: fix install rule dependency
+
+Otherwise the install rule will recompile the library, no matter
+if it has already been compiled.
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index ae16f08..df0b59f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -122,12 +122,12 @@ parsertrace_g: http_parser_g.o contrib/parsertrace.c
+ tags: http_parser.c http_parser.h test.c
+       ctags $^
+ 
+-install: library
++install: $(SONAME)
+       $(INSTALL) -D  http_parser.h "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
+       $(INSTALL) -D $(SONAME) "$(DESTDIR)$(LIBDIR)/$(SONAME)"
+       ln -s $(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
+ 
+-install-strip: library
++install-strip: $(SONAME)
+       $(INSTALL) -D  http_parser.h "$(DESTDIR)$(INCLUDEDIR)/http_parser.h"
+       $(INSTALL) -D -s $(SONAME) "$(DESTDIR)$(LIBDIR)/$(SONAME)"
+       ln -s $(SONAME) "$(DESTDIR)$(LIBDIR)/libhttp_parser.$(SOEXT)"
+-- 
+2.6.1
+

diff --git a/net-libs/http-parser/http-parser-2.6.0.ebuild 
b/net-libs/http-parser/http-parser-2.6.0.ebuild
new file mode 100644
index 0000000..186c880
--- /dev/null
+++ b/net-libs/http-parser/http-parser-2.6.0.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils toolchain-funcs multilib multilib-minimal
+
+DESCRIPTION="Http request/response parser for C"
+HOMEPAGE="https://github.com/joyent/http-parser";
+SRC_URI="https://github.com/joyent/http-parser/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~ppc ~x86"
+IUSE="static-libs"
+
+# https://github.com/nodejs/http-parser/pull/272
+PATCHES=(
+       "${FILESDIR}"/0001-makefile-fix-DESTDIR-usage.patch
+       "${FILESDIR}"/0002-makefile-quote-variables.patch
+       
"${FILESDIR}"/0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
+       "${FILESDIR}"/0004-makefile-add-CFLAGS-to-linking-command.patch
+       "${FILESDIR}"/0005-makefile-fix-install-rule-dependency.patch
+)
+
+src_prepare() {
+       tc-export CC AR
+       epatch ${PATCHES[@]}
+       multilib_copy_sources
+}
+
+multilib_src_compile() {
+       emake CFLAGS_FAST="${CFLAGS}" library
+       use static-libs && emake CFLAGS_FAST="${CFLAGS}" package
+}
+
+multilib_src_test() {
+       emake CFLAGS_DEBUG="${CFLAGS}" test
+}
+
+multilib_src_install() {
+       emake DESTDIR="${D}" PREFIX="/usr" LIBDIR="/usr/$(get_libdir)" install
+       use static-libs && dolib.a libhttp_parser.a
+}

Reply via email to