From 80f60cb68d66a312b5786cbc4c44083a30de3552 Mon Sep 17 00:00:00 2001 From: tinywrkb Date: Tue, 25 Jan 2022 18:52:25 +0200 Subject: [PATCH] Force linking against libm and add upstream packaging patch --- ...pkg-config-changes-to-v2-maintenance.patch | 106 ++++++++++++++++++ trunk/PKGBUILD | 24 ++-- trunk/duktape.pc | 10 -- 3 files changed, 119 insertions(+), 21 deletions(-) create mode 100644 trunk/0001-dist-backport-makefile-and-pkg-config-changes-to-v2-maintenance.patch delete mode 100644 trunk/duktape.pc diff --git a/trunk/0001-dist-backport-makefile-and-pkg-config-changes-to-v2-maintenance.patch b/trunk/0001-dist-backport-makefile-and-pkg-config-changes-to-v2-maintenance.patch new file mode 100644 index 00000000..5f8c8f58 --- /dev/null +++ b/trunk/0001-dist-backport-makefile-and-pkg-config-changes-to-v2-maintenance.patch @@ -0,0 +1,106 @@ +diff --git a/Makefile.sharedlibrary b/Makefile.sharedlibrary +index e7d365f..b14dc4a 100644 +--- a/Makefile.sharedlibrary ++++ b/Makefile.sharedlibrary +@@ -24,7 +24,9 @@ + # convention is to set soname version to (100*MAJOR + MINOR), e.g. 104 for + # Duktape 1.4.x, so that it gets automatically bumped for major and minor + # releases (potentially binary incompatible), but not for patch releases. ++# The formatted version is used for the pkg-config file. + DUK_VERSION = 20600 ++DUK_VERSION_FORMATTED = 2.6.0 + SONAME_VERSION = 206 + REAL_VERSION = $(SONAME_VERSION).$(DUK_VERSION) + +@@ -45,44 +47,58 @@ else + endif + + # Change to actual path for actual distribution packaging. +-INSTALL_PREFIX = /usr/local ++INSTALL_PREFIX ?= /usr/local ++INSTALL_PREFIX := $(INSTALL_PREFIX) ++DESTDIR ?= ++DESTDIR := $(DESTDIR) ++LIBDIR ?= /lib ++LIBDIR := $(LIBDIR) + + # The 'noline' variant may be more appropriate for some distributions; it + # doesn't have #line directives in the combined source. + DUKTAPE_SRCDIR = ./src + #DUKTAPE_SRCDIR = ./src-noline + +-CC = gcc ++CC ?= gcc ++CC := $(CC) + + .PHONY: all +-all: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) ++all: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) duktape.pc + + # If the default duk_config.h is not suitable for the distribution, modify it + # before compiling the shared library and copy the same, edited duk_config.h + # to $INSTALL_PREFIX/include on installation. + + libduktape.$(SO_REALNAME_SUFFIX): +- $(CC) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \ ++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \ + -o $@ $(DUKTAPE_SRCDIR)/duktape.c + + libduktaped.$(SO_REALNAME_SUFFIX): +- $(CC) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \ ++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \ + -o $@ $(DUKTAPE_SRCDIR)/duktape.c + ++duktape.pc: ++ sed -e "s|@PREFIX@|$(INSTALL_PREFIX)|" \ ++ -e "s|@LIBDIR@|$(LIBDIR)|" \ ++ -e "s|@VERSION@|$(DUK_VERSION_FORMATTED)|" \ ++ duktape.pc.in \ ++ > duktape.pc ++ + # Symlinks depend on platform conventions. + .PHONY: install +-install: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) +- mkdir -p $(INSTALL_PREFIX)/lib/ +- cp $+ $(INSTALL_PREFIX)/lib/ +- rm -f $(INSTALL_PREFIX)/lib/libduktape.so $(INSTALL_PREFIX)/lib/libduktape.$(SO_SONAME_SUFFIX) +- ln -s libduktape.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktape.so +- ln -s libduktape.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktape.$(SO_SONAME_SUFFIX) +- rm -f $(INSTALL_PREFIX)/lib/libduktaped.so $(INSTALL_PREFIX)/lib/libduktaped.$(SO_SONAME_SUFFIX) +- ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktaped.so +- ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktaped.$(SO_SONAME_SUFFIX) +- mkdir -p $(INSTALL_PREFIX)/include/ +- cp $(DUKTAPE_SRCDIR)/duktape.h $(DUKTAPE_SRCDIR)/duk_config.h $(INSTALL_PREFIX)/include/ ++install: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) duktape.pc ++ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/pkgconfig ++ cp $+ $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/ ++ rm -f $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.so $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.$(SO_SONAME_SUFFIX) ++ ln -s libduktape.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.so ++ ln -s libduktape.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.$(SO_SONAME_SUFFIX) ++ rm -f $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.so $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.$(SO_SONAME_SUFFIX) ++ ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.so ++ ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.$(SO_SONAME_SUFFIX) ++ mv $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/duktape.pc $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/pkgconfig/ ++ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/include/ ++ cp $(DUKTAPE_SRCDIR)/duktape.h $(DUKTAPE_SRCDIR)/duk_config.h $(DESTDIR)$(INSTALL_PREFIX)/include/ + + CCOPTS = -I./examples/cmdline + duk: +- $(CC) $(CCOPTS) -I$(INSTALL_PREFIX)/include -L$(INSTALL_PREFIX)/lib -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm ++ $(CC) $(CCOPTS) -I$(INSTALL_PREFIX)/include -L$(INSTALL_PREFIX)$(LIBDIR) -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm +diff --git a/duktape.pc.in b/duktape.pc.in +new file mode 100644 +index 0000000..0985c67 +--- /dev/null ++++ b/duktape.pc.in +@@ -0,0 +1,10 @@ ++prefix=@PREFIX@ ++exec_prefix=${prefix} ++libdir=${prefix}@LIBDIR@ ++includedir=${prefix}/include ++ ++Name: duktape ++Description: Embeddable Javascript engine ++Version: @VERSION@ ++Libs: -L${libdir} -lduktape ++Cflags: -I${includedir} diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index e149d03a..6ecc6ed0 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -1,36 +1,38 @@ # Maintainer: Alexander F. Rødseth +# Contributor tinywrkb pkgname=duktape pkgver=2.6.0 -pkgrel=1 +pkgrel=2 pkgdesc='Embeddable Javascript engine' arch=(x86_64) url='https://duktape.org/' license=(MIT) -makedepends=(setconf) +depends=(glibc) source=("https://duktape.org/duktape-$pkgver.tar.xz" - duktape.pc) + 0001-dist-backport-makefile-and-pkg-config-changes-to-v2-maintenance.patch) sha256sums=('96f4a05a6c84590e53b18c59bb776aaba80a205afbbd92b82be609ba7fe75fa7' - 'fcc9590dcc4e3b3da8e5afc35616f36d331a371f22a421333a9faad0f5c2df08') + 'af8665e119f6f5a4b507b685bbfec31c71ffe54e33a3459df0a07f4ceedfa672') prepare() { cd $pkgname-$pkgver + + # https://github.com/svaarala/duktape/pull/2457 + patch -Np1 -i ../0001-dist-backport-makefile-and-pkg-config-changes-to-v2-maintenance.patch mv Makefile.sharedlibrary Makefile - sed 's/-Wall -Wextra/$(CFLAGS)/g' -i Makefile - setconf Makefile INSTALL_PREFIX "$pkgdir/usr" - setconf "$srcdir/duktape.pc" Version "$pkgver" + + # Use our default optimization flag and force linking against libm + sed '/$(CC)/ s/-Os/-Wl,--no-as-needed,-lm/' -i Makefile } build() { - CFLAGS="$CFLAGS -D DUK_USE_FASTINT -w" make -C $pkgname-$pkgver + make -C $pkgname-$pkgver } package() { - install -d "$pkgdir/usr/include" - install -Dm644 duktape.pc "$pkgdir/usr/lib/pkgconfig/duktape.pc" cd $pkgname-$pkgver install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE" - make install + make INSTALL_PREFIX="$pkgdir/usr" install } # getver: github.com/svaarala/duktape diff --git a/trunk/duktape.pc b/trunk/duktape.pc deleted file mode 100644 index 936ff933..00000000 --- a/trunk/duktape.pc +++ /dev/null @@ -1,10 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include - -Name: duktape -Description: Embeddable Javascript engine -Version: 2.6.0 -Libs: -L${libdir} -lduktape -Cflags: -I${includedir} -- 2.35.0