[OpenWrt-Devel] [PATCHv3] tools/pkg-config: Replace with pkgconf

Rosen Penev rosenp at gmail.com
Mon Nov 25 17:44:18 EST 2019


pkgconf is a newer, actively maintained implementation of pkg-config that
supports more aspects of the pkg-config file specification and provides a
library interface that applications can use to incorporate intelligent
handling of pkg-config files into themselves (such as build file
generators, IDEs, and compilers). Through its pkg-config compatibility
interface (activated when it is run as "pkg-config"), it also can
completely replace the original implementation.

It is also lighterweight and does not require glib2, as pkg-config does.

On other distros, pkgconf is symlinked to pkg-config. For simplicity here,
it is renamed to pkg-config.real, as in the original package.

Initial results have been positive. As before, pkgconf works as long as
the pkg-config files point to the proper paths.

Ran pkg-config wrapper through shellcheck.

Added a patch to fix the pkg-config wrapper with meson as passing
--version with other options fails.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 v3: Added meson patch
 v2: Rebased against master
 tools/Makefile                                |  6 ++--
 tools/pkg-config/files/pkg-config             |  3 --
 tools/{pkg-config => pkgconf}/Makefile        | 20 +++++-------
 tools/pkgconf/files/pkg-config                |  6 ++++
 .../patches/0001-f-pkgconf-meson.patch        | 31 +++++++++++++++++++
 5 files changed, 47 insertions(+), 19 deletions(-)
 delete mode 100755 tools/pkg-config/files/pkg-config
 rename tools/{pkg-config => pkgconf}/Makefile (54%)
 create mode 100755 tools/pkgconf/files/pkg-config
 create mode 100644 tools/pkgconf/patches/0001-f-pkgconf-meson.patch

diff --git a/tools/Makefile b/tools/Makefile
index 2f57d25525..a7d48a40a4 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -22,7 +22,7 @@ ifneq ($(CONFIG_SDK)$(CONFIG_PACKAGE_kmod-b43)$(CONFIG_PACKAGE_b43legacy-firmwar
 endif
 
 tools-$(BUILD_TOOLCHAIN) += gmp mpfr mpc libelf expat
-tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs zlib
+tools-y += m4 libtool autoconf automake flex bison pkgconf mklibs zlib
 tools-y += sstrip make-ext4fs e2fsprogs mtd-utils mkimage
 tools-y += firmware-utils patch-image quilt padjffs2
 tools-y += mm-macros missing-macros cmake bc findutils gengetopt patchelf
@@ -48,7 +48,7 @@ $(curdir)/squashfs/compile := $(curdir)/lzma-old/compile
 $(curdir)/squashfskit4/compile := $(curdir)/xz/compile $(curdir)/zlib/compile
 $(curdir)/quilt/compile := $(curdir)/autoconf/compile $(curdir)/findutils/compile
 $(curdir)/autoconf/compile := $(curdir)/m4/compile
-$(curdir)/automake/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/pkg-config/compile $(curdir)/xz/compile
+$(curdir)/automake/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/pkgconf/compile $(curdir)/xz/compile
 $(curdir)/gmp/compile := $(curdir)/libtool/compile
 $(curdir)/mpc/compile := $(curdir)/mpfr/compile $(curdir)/gmp/compile
 $(curdir)/mpfr/compile := $(curdir)/gmp/compile
@@ -69,7 +69,7 @@ $(curdir)/findutils/compile := $(curdir)/bison/compile
 $(curdir)/gengetopt/compile := $(curdir)/libtool/compile
 $(curdir)/patchelf/compile := $(curdir)/libtool/compile
 $(curdir)/dosfstools/compile := $(curdir)/autoconf/compile $(curdir)/automake/compile
-$(curdir)/libressl/compile := $(curdir)/pkg-config/compile
+$(curdir)/libressl/compile := $(curdir)/pkgconf/compile
 $(curdir)/mkimage/compile += $(curdir)/libressl/compile
 $(curdir)/firmware-utils/compile += $(curdir)/libressl/compile $(curdir)/zlib/compile
 $(curdir)/cmake/compile += $(curdir)/libressl/compile
diff --git a/tools/pkg-config/files/pkg-config b/tools/pkg-config/files/pkg-config
deleted file mode 100755
index 82cc74ffcb..0000000000
--- a/tools/pkg-config/files/pkg-config
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-pkg-config.real --define-variable=prefix=${STAGING_PREFIX} --define-variable=exec_prefix=${STAGING_PREFIX} --define-variable=bindir=${STAGING_PREFIX}/bin $@
diff --git a/tools/pkg-config/Makefile b/tools/pkgconf/Makefile
similarity index 54%
rename from tools/pkg-config/Makefile
rename to tools/pkgconf/Makefile
index 17a8737be1..cefee1edf0 100644
--- a/tools/pkg-config/Makefile
+++ b/tools/pkgconf/Makefile
@@ -1,4 +1,4 @@
-# 
+#
 # Copyright (C) 2006-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
@@ -6,12 +6,12 @@
 #
 include $(TOPDIR)/rules.mk
 
-PKG_NAME:=pkg-config
-PKG_VERSION:=0.29.2
+PKG_NAME:=pkgconf
+PKG_VERSION:=1.6.3
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pkgconfig.freedesktop.org/releases/
-PKG_HASH:=6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://distfiles.dereferenced.org/pkgconf
+PKG_HASH:=61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210
 
 HOST_BUILD_PARALLEL:=1
 
@@ -19,15 +19,9 @@ include $(INCLUDE_DIR)/host-build.mk
 
 unexport PKG_CONFIG
 
-HOST_CONFIGURE_ARGS += --with-internal-glib
-
-ifeq ($(HOST_OS),Darwin)
-HOST_LDFLAGS += -framework CoreFoundation -framework Carbon
-endif
-
 define Host/Install
 	$(MAKE) -C $(HOST_BUILD_DIR) install
-	mv $(STAGING_DIR_HOST)/bin/pkg-config $(STAGING_DIR_HOST)/bin/pkg-config.real
+	mv $(STAGING_DIR_HOST)/bin/pkgconf $(STAGING_DIR_HOST)/bin/pkg-config.real
 	$(INSTALL_BIN) ./files/pkg-config $(STAGING_DIR_HOST)/bin/pkg-config
 endef
 
diff --git a/tools/pkgconf/files/pkg-config b/tools/pkgconf/files/pkg-config
new file mode 100755
index 0000000000..6579a14f86
--- /dev/null
+++ b/tools/pkgconf/files/pkg-config
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+"$(dirname "$0")/pkg-config.real" \
+--define-variable=prefix="${STAGING_PREFIX}" \
+--define-variable=exec_prefix="${STAGING_PREFIX}" \
+--define-variable=bindir="${STAGING_PREFIX}/bin" "$@"
diff --git a/tools/pkgconf/patches/0001-f-pkgconf-meson.patch b/tools/pkgconf/patches/0001-f-pkgconf-meson.patch
new file mode 100644
index 0000000000..3ed47adc95
--- /dev/null
+++ b/tools/pkgconf/patches/0001-f-pkgconf-meson.patch
@@ -0,0 +1,31 @@
+From 05ef58532b75c36fc19eb9d2d1fe4c46195706bf Mon Sep 17 00:00:00 2001
+From: Andre Heider <a.heider at gmail.com>
+Date: Mon, 25 Nov 2019 09:36:47 +0100
+Subject: [PATCH] f pkgconf/meson
+
+---
+ tools/pkgconf/patches/meson.patch | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+ create mode 100644 tools/pkgconf/patches/meson.patch
+
+diff --git a/tools/pkgconf/patches/meson.patch b/tools/pkgconf/patches/meson.patch
+new file mode 100644
+index 0000000000..e0a2946f32
+--- /dev/null
++++ b/tools/pkgconf/patches/meson.patch
+@@ -0,0 +1,12 @@
++diff -ur pkgconf-1.6.3-orig/cli/main.c pkgconf-1.6.3/cli/main.c
++--- pkgconf-1.6.3-orig/cli/main.c	2019-07-12 13:53:12.000000000 +0200
+++++ pkgconf-1.6.3/cli/main.c	2019-11-25 09:32:53.512784479 +0100
++@@ -1002,7 +1002,7 @@
++ 
++ 	if ((want_flags & PKG_VERSION) == PKG_VERSION)
++ 	{
++-		if (argc > 2)
+++		if (0 && argc > 2)
++ 		{
++ 			fprintf(stderr, "%s: --version specified with other options or module names, assuming --modversion.\n", argv[0]);
++ 
+-- 
+2.24.0
+
-- 
2.23.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list