Skip to content
Snippets Groups Projects
Commit e379b72e authored by Jakub Jirutka's avatar Jakub Jirutka :flag_ua: Committed by Natanael Copa
Browse files

testing/http-parser: new abuild

https://github.com/nodejs/http-parser
HTTP request/response parser for C
parent 83c66b42
No related branches found
No related tags found
No related merge requests found
From 7fbc87986baa09c342abb21e34613e8bbdc3c9c7 Mon Sep 17 00:00:00 2001
From: hasufell <hasufell@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
From 9bce473ba7417b45bfdb59d4151a8857dcfff4ad Mon Sep 17 00:00:00 2001
From: hasufell <hasufell@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
From f45b38c42e7e92a5d0215c44dcf306616536011e Mon Sep 17 00:00:00 2001
From: hasufell <hasufell@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
From 62b1450cfe2e0df2d912279d38edf1b916020101 Mon Sep 17 00:00:00 2001
From: hasufell <hasufell@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
From b67bfbe6a07529dd82e2ee83b6848d017e6e422f Mon Sep 17 00:00:00 2001
From: hasufell <hasufell@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
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=http-parser
pkgver=2.6.2
pkgrel=0
pkgdesc="HTTP request/response parser for C"
url="https://github.com/nodejs/http-parser"
arch="all"
license="MIT"
depends=""
makedepends=""
subpackages="$pkgname-dev"
# Note: All the patches are copied from Gentoo ebuild.
# upstream: https://github.com/nodejs/http-parser/pull/272
source="$pkgname-$pkgver.tar.gz::https://github.com/nodejs/$pkgname/archive/v$pkgver.tar.gz
0001-makefile-fix-DESTDIR-usage.patch
0002-makefile-quote-variables.patch
0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
0004-makefile-add-CFLAGS-to-linking-command.patch
0005-makefile-fix-install-rule-dependency.patch
"
_builddir="$srcdir/$pkgname-$pkgver"
prepare() {
cd "$_builddir"
local file; for file in $source; do
case $file in
*.patch) msg $file; patch -p1 -i "$srcdir"/$file || return 1;;
esac
done
}
build() {
cd "$_builddir"
make library
}
package() {
cd "$_builddir"
make install DESTDIR="$pkgdir" PREFIX="/usr"
}
md5sums="bcb0b4845b38404590c7197761bfa7b9 http-parser-2.6.2.tar.gz
f6d5377fd3b5c91422bb2dcc2c4dce6c 0001-makefile-fix-DESTDIR-usage.patch
859eff808165458c797353f0306ebc65 0002-makefile-quote-variables.patch
8aea7eb27ae19ede7c8aed3d41c86d84 0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
23d1e43dbf2deffb38488d54cce62f96 0004-makefile-add-CFLAGS-to-linking-command.patch
fd7ffe7e725f866232f3b2850d164256 0005-makefile-fix-install-rule-dependency.patch"
sha256sums="80fffc3b64ef6968cecdd4b299a96986007dff4bd12ae6c58cbcb506959b90ad http-parser-2.6.2.tar.gz
785012d9e0efb70c4dcc137f354ab57afabdcb0fb7c8cb2580c3c4a7e9add330 0001-makefile-fix-DESTDIR-usage.patch
80fdf673731f27f328d45f4da7daa613613d8db40f1dc84d2ce65fad0130c054 0002-makefile-quote-variables.patch
9854f5f205ec0959cc10cab80d16ff54f33a9979e5fd310ba9a4624b60c84ee9 0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
e69fa304327dbb0626edaf147b73dc9fb4718b656b225794a04937206929c0df 0004-makefile-add-CFLAGS-to-linking-command.patch
04898654adef3f3dbf1e29e66f8e9fc4467f68389e224beb03387d33ee263212 0005-makefile-fix-install-rule-dependency.patch"
sha512sums="e19e5377b3eb7f149c428196826fb878564fdfa3716ff6df5a3845c51586aee0582e252e09d1f8ebad1163b3e66632ff0c6e78f6acb2f0da20d7a06e734406c1 http-parser-2.6.2.tar.gz
ebb481df21cb312824ed65e7d6a3e7b237451071235566595da97c09b165767693ec3c47c27c451bfbdc2d62cc45c7d5d9f996b80789dc7fedaa2543c94c9065 0001-makefile-fix-DESTDIR-usage.patch
3637abedbf330af0f4a9721081db99fe0f6400322f21f77ab16d580546a9d200d40bc584e8dbb51adec249c2d468730c6e2487ccda3786626909d988b7f8856a 0002-makefile-quote-variables.patch
8202d665963234ce6dd84439f281921cb959424024c2fec8a27b65693b3466cab8674a3549d22fdb2fc07edf69f94440368ef77738ae4be2a5d94c13e3c814bb 0003-makefile-fix-SONAME-symlink-it-should-not-be-a-full-.patch
e18c163f2069795fb6b744ad9f6e44eb9efca7f560460a6759bc0121a404bfe8109031c0f43d36d4987bda3411e0a433dbab6d0eabb2dbb5c79f1ce878251aae 0004-makefile-add-CFLAGS-to-linking-command.patch
4cd120f406eeeb1e5a60c7d8955cdfead50d99b60f91a0fcdb2ae19403d08e5ed5619885c9e434ce40ffb442b317ee8c32ef636960429036f9bff92492f03968 0005-makefile-fix-install-rule-dependency.patch"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment