commit: ae86e8c552c377835ac0d2bfd521e06e55432c7f
Author: Aisha Tammy <gentoo <AT> aisha <DOT> cc>
AuthorDate: Mon Nov 23 02:46:51 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Mon Nov 23 02:46:51 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ae86e8c5
net-libs/usockets: add pkg-config file
really painful upstream makes life hell
libressl is considered a joke
shared libraries are considered a joke
not doing -O3 -flto is considered a joke
rehauled the whole Makefile to make it useable
Package-Manager: Portage-3.0.8, Repoman-3.0.1
Signed-off-by: Aisha Tammy <gentoo <AT> aisha.cc>
.../usockets/files/usockets-0.6.0-Makefile.patch | 128 +++++++++++++++++++++
net-libs/usockets/files/usockets-Makefile.patch | 62 ----------
net-libs/usockets/usockets-0.6.0-r1.ebuild | 20 ++--
net-libs/usockets/usockets-9999.ebuild | 20 ++--
4 files changed, 148 insertions(+), 82 deletions(-)
diff --git a/net-libs/usockets/files/usockets-0.6.0-Makefile.patch
b/net-libs/usockets/files/usockets-0.6.0-Makefile.patch
new file mode 100644
index 00000000..ebc9a0db
--- /dev/null
+++ b/net-libs/usockets/files/usockets-0.6.0-Makefile.patch
@@ -0,0 +1,128 @@
+diff --git a/Makefile b/Makefile
+index 27f97ce..c269c3f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,60 +1,62 @@
++DESTDIR ?=
++
++prefix ?= /usr
++exec_prefix ?= $(prefix)
++LIB ?= lib
++libdir ?= $(exec_prefix)/$(LIB)
++includedir ?= $(exec_prefix)/include/uSockets
++
++VERSION ?= 0.0
++LIBTARGET = libusockets.so.$(VERSION)
++
++LIBS =
++REQUIRES =
++
+ # WITH_OPENSSL=1 enables OpenSSL 1.1+ support or BoringSSL
+ # For now we need to link with C++ for OpenSSL support, but should be removed
with time
+ ifeq ($(WITH_OPENSSL),1)
+- override CFLAGS += -DLIBUS_USE_OPENSSL
+- # With problems on macOS, make sure to pass needed LDFLAGS required to
find these
+- override LDFLAGS += -lssl -lcrypto -lstdc++
+-else
+- # WITH_WOLFSSL=1 enables WolfSSL 4.2.0 support (mutually exclusive with
OpenSSL)
+- ifeq ($(WITH_WOLFSSL),1)
+- # todo: change these
+- override CFLAGS += -DLIBUS_USE_WOLFSSL -I/usr/local/include
+- override LDFLAGS += -L/usr/local/lib -lwolfssl
+- else
+- override CFLAGS += -DLIBUS_NO_SSL
+- endif
++CFLAGS += -DLIBUS_USE_OPENSSL
++LIBS += -lssl -lcrypto -lstdc++
++REQUIRES += libssl libcrypto
+ endif
+
+ # WITH_LIBUV=1 builds with libuv as event-loop
+ ifeq ($(WITH_LIBUV),1)
+- override CFLAGS += -DLIBUS_USE_LIBUV
+- override LDFLAGS += -luv
+-endif
+-
+-# WITH_GCD=1 builds with libdispatch as event-loop
+-ifeq ($(WITH_GCD),1)
+- override CFLAGS += -DLIBUS_USE_GCD
+- override LDFLAGS += -framework CoreFoundation
++CFLAGS += -DLIBUS_USE_LIBUV
++LIBS += -luv
++REQUIRES += libuv
+ endif
+
+-# WITH_ASAN builds with sanitizers
+-ifeq ($(WITH_ASAN),1)
+- override CFLAGS += -fsanitize=address -g
+- override LDFLAGS += -lasan
+-endif
+-
+-override CFLAGS += -std=c11 -Isrc
+-override LDFLAGS += uSockets.a
++CFLAGS += -std=c11 -Isrc
+
+-# By default we build the uSockets.a static library
+ default:
+- rm -f *.o
+- $(CC) $(CFLAGS) -flto -O3 -c src/*.c src/eventing/*.c src/crypto/*.c
+-# For now we do rely on C++17 for OpenSSL support but we will be porting this
work to C11
++ $(CC) $(CFLAGS) -fPIC -c src/*.c src/eventing/*.c src/crypto/*.c
+ ifeq ($(WITH_OPENSSL),1)
+- $(CXX) $(CXXFLAGS) -std=c++17 -flto -O3 -c src/crypto/*.cpp
++ $(CXX) $(CXXFLAGS) -fPIC -std=c++17 -c src/crypto/*.cpp
+ endif
+- $(AR) rvs uSockets.a *.o
+-
+-# Builds all examples
+-.PHONY: examples
+-examples: default
+- for f in examples/*.c; do $(CC) -flto -O3 $(CFLAGS) -o $$(basename
"$$f" ".c") "$$f" $(LDFLAGS); done
+-
+-swift_examples:
+- swiftc -O -I . examples/swift_http_server/main.swift uSockets.a -o
swift_http_server
++ $(AR) rvs libusockets.a *.o
++ $(CC) -shared -fPIC -Wl,-soname,$(LIBTARGET) $(CFLAGS) -o $(LIBTARGET)
*.o $(LIBS) $(LDFLAGS)
++ sed -e "s:@PREFIX@:$(prefix):" -e "s:@REQUIRES@:$(REQUIRES):" \
++ -e "s:@LIB@:$(LIB):" -e "s:@VERSION@:$(VERSION):" libusockets.pc.in >
libusockets.pc
++
++install:
++ install -d "$(DESTDIR)$(libdir)/pkgconfig" \
++ "$(DESTDIR)$(includedir)/internal/eventing" \
++ "$(DESTDIR)$(includedir)/internal/networking"
++ install -m 644 src/*.h "$(DESTDIR)$(includedir)/"
++ install -m 644 src/internal/*.h "$(DESTDIR)$(includedir)/internal/"
++ install -m 644 src/internal/eventing/*.h
"$(DESTDIR)$(includedir)/internal/eventing/"
++ install -m 644 src/internal/networking/*.h
"$(DESTDIR)$(includedir)/internal/networking/"
++ install -m 755 $(LIBTARGET) "$(DESTDIR)$(libdir)"
++ ln -sf $(LIBTARGET) "$(DESTDIR)$(libdir)/libusockets.so"
++ install -m 755 libusockets.a "$(DESTDIR)$(libdir)/"
++ install -m 644 libusockets.pc "$(DESTDIR)$(libdir)/pkgconfig/"
+
+ clean:
+ rm -f *.o
+ rm -f *.a
++ rm -f *.so
+ rm -rf .certs
++ rm -f libusockets.pc
++
++.PHONY:
+diff --git a/libusockets.pc.in b/libusockets.pc.in
+new file mode 100644
+index 0000000..b63637b
+--- /dev/null
++++ b/libusockets.pc.in
+@@ -0,0 +1,13 @@
++prefix=@PREFIX@
++exec_prefix=${prefix}
++libdir=${exec_prefix}/@LIB@
++includedir=${prefix}/include
++
++Name: uSockets
++Version: @VERSION@
++Description: eventing, networking and crypto for async applications.
++URL: https://github.com/uNetworking/uSockets
++
++Cflags: -I${includedir}
++Libs: -L${libdir} -lusockets
++Requires.private: @REQUIRES@
diff --git a/net-libs/usockets/files/usockets-Makefile.patch
b/net-libs/usockets/files/usockets-Makefile.patch
deleted file mode 100644
index a3c50bc1..00000000
--- a/net-libs/usockets/files/usockets-Makefile.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 27f97ce..066305c 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,3 +1,13 @@
-+DESTDIR ?=
-+
-+prefix ?= "/usr/local"
-+exec_prefix ?= "$(prefix)"
-+libdir ?= "$(exec_prefix)/lib"
-+includedir ?= "$(exec_prefix)/include/uSockets"
-+
-+# OpenBSD specific library version
-+LIBTARGET = libusockets.so.$(LIBusockets_VERSION)
-+
- # WITH_OPENSSL=1 enables OpenSSL 1.1+ support or BoringSSL
- # For now we need to link with C++ for OpenSSL support, but should be removed
with time
- ifeq ($(WITH_OPENSSL),1)
-@@ -34,17 +44,31 @@ ifeq ($(WITH_ASAN),1)
- endif
-
- override CFLAGS += -std=c11 -Isrc
--override LDFLAGS += uSockets.a
-
--# By default we build the uSockets.a static library
-+
- default:
- rm -f *.o
-- $(CC) $(CFLAGS) -flto -O3 -c src/*.c src/eventing/*.c src/crypto/*.c
--# For now we do rely on C++17 for OpenSSL support but we will be porting this
work to C11
-+ $(CC) $(CFLAGS) -fPIC -c src/*.c src/eventing/*.c src/crypto/*.c
- ifeq ($(WITH_OPENSSL),1)
-- $(CXX) $(CXXFLAGS) -std=c++17 -flto -O3 -c src/crypto/*.cpp
-+ $(CXX) $(CXXFLAGS) -fPIC -std=c++17 -c src/crypto/*.cpp
- endif
-- $(AR) rvs uSockets.a *.o
-+ $(AR) rvs libusockets.a *.o
-+ $(CC) -shared -fPIC -Wl,-soname,$(LIBTARGET) $(CFLAGS) -o $(LIBTARGET)
*.o $(LDFLAGS)
-+
-+install:
-+ # install the folders needed (making sure that the exist)
-+ install -d "$(DESTDIR)$(libdir)" \
-+ "$(DESTDIR)$(includedir)/internal/eventing" \
-+ "$(DESTDIR)$(includedir)/internal/networking"
-+ install -m 755 $(LIBTARGET) "$(DESTDIR)$(libdir)/"
-+ ln -sf $(LIBTARGET)"$(DESTDIR)$(libdir)/libusockets.so"
-+ # install static library
-+ install -m 755 libusockets.a "$(DESTDIR)$(libdir)/"
-+ # we also install all the header files
-+ install src/*.h "$(DESTDIR)$(includedir)/"
-+ install -m 644 src/internal/*.h "$(DESTDIR)$(includedir)/internal/"
-+ install -m 644 src/internal/eventing/*.h
"$(DESTDIR)$(includedir)/internal/eventing/"
-+ install -m 644 src/internal/networking/*.h
"$(DESTDIR)$(includedir)/internal/networking/"
-
- # Builds all examples
- .PHONY: examples
-@@ -57,4 +81,5 @@ swift_examples:
- clean:
- rm -f *.o
- rm -f *.a
-+ rm -f *.so
- rm -rf .certs
diff --git a/net-libs/usockets/usockets-0.6.0-r1.ebuild
b/net-libs/usockets/usockets-0.6.0-r1.ebuild
index 2da9a11a..1d42acf6 100644
--- a/net-libs/usockets/usockets-0.6.0-r1.ebuild
+++ b/net-libs/usockets/usockets-0.6.0-r1.ebuild
@@ -19,36 +19,36 @@ fi
LICENSE="Apache-2.0"
SLOT="0"
-IUSE="libuv +ssl libressl static-libs"
+IUSE="libuv +ssl static-libs"
DEPEND="ssl? (
- libressl? ( >=dev-libs/libressl-3.0.0:=[static-libs?] )
- !libressl? ( >=dev-libs/openssl-1.1.0:=[static-libs?] )
+ >=dev-libs/openssl-1.1.0:=[static-libs?]
)
libuv? ( dev-libs/libuv[static-libs?] )
"
RDEPEND="${DEPEND}"
PATCHES=(
- "${FILESDIR}/usockets-Makefile.patch"
+ "${FILESDIR}/${PN}-0.6.0-Makefile.patch"
)
src_compile() {
# the Makefile uses environment variables
- emake LIBusockets_VERSION=${PV} \
+ emake VERSION=${PV} \
+ LIB="$(get_libdir)" \
WITH_OPENSSL=$(usex ssl 1 0) \
WITH_LIBUV=$(usex libuv 1 0) \
default
}
src_install() {
- emake libdir="/usr/$(get_libdir)" \
- prefix="/usr" \
- DESTDIR="${ED}" \
- LIBusockets_VERSION=${PV} \
+ emake LIB="$(get_libdir)" \
+ prefix="${EPREFIX%/}/usr" \
+ DESTDIR="${D}" \
+ VERSION=${PV} \
install
einstalldocs
if ! use static-libs; then
- rm "${D}/usr/$(get_libdir)/libusockets.a" || die
+ rm -f "${ED}/usr/$(get_libdir)/libusockets.a" || die
fi
}
diff --git a/net-libs/usockets/usockets-9999.ebuild
b/net-libs/usockets/usockets-9999.ebuild
index 2da9a11a..1d42acf6 100644
--- a/net-libs/usockets/usockets-9999.ebuild
+++ b/net-libs/usockets/usockets-9999.ebuild
@@ -19,36 +19,36 @@ fi
LICENSE="Apache-2.0"
SLOT="0"
-IUSE="libuv +ssl libressl static-libs"
+IUSE="libuv +ssl static-libs"
DEPEND="ssl? (
- libressl? ( >=dev-libs/libressl-3.0.0:=[static-libs?] )
- !libressl? ( >=dev-libs/openssl-1.1.0:=[static-libs?] )
+ >=dev-libs/openssl-1.1.0:=[static-libs?]
)
libuv? ( dev-libs/libuv[static-libs?] )
"
RDEPEND="${DEPEND}"
PATCHES=(
- "${FILESDIR}/usockets-Makefile.patch"
+ "${FILESDIR}/${PN}-0.6.0-Makefile.patch"
)
src_compile() {
# the Makefile uses environment variables
- emake LIBusockets_VERSION=${PV} \
+ emake VERSION=${PV} \
+ LIB="$(get_libdir)" \
WITH_OPENSSL=$(usex ssl 1 0) \
WITH_LIBUV=$(usex libuv 1 0) \
default
}
src_install() {
- emake libdir="/usr/$(get_libdir)" \
- prefix="/usr" \
- DESTDIR="${ED}" \
- LIBusockets_VERSION=${PV} \
+ emake LIB="$(get_libdir)" \
+ prefix="${EPREFIX%/}/usr" \
+ DESTDIR="${D}" \
+ VERSION=${PV} \
install
einstalldocs
if ! use static-libs; then
- rm "${D}/usr/$(get_libdir)/libusockets.a" || die
+ rm -f "${ED}/usr/$(get_libdir)/libusockets.a" || die
fi
}