tools/pkg-config: Replace with pkgconf
authorRosen Penev <rosenp@gmail.com>
Thu, 28 Nov 2019 19:19:31 +0000 (11:19 -0800)
committerPetr Štetiar <ynezz@true.cz>
Sun, 1 Mar 2020 20:36:00 +0000 (21:36 +0100)
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.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
[backported upstream fix for Meson]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
tools/Makefile
tools/pkg-config/Makefile [deleted file]
tools/pkg-config/files/pkg-config [deleted file]
tools/pkgconf/Makefile [new file with mode: 0644]
tools/pkgconf/files/pkg-config [new file with mode: 0755]
tools/pkgconf/patches/0001-cli-remove-version-to-modversion-remapping.patch [new file with mode: 0644]

index b7e236c..3c37316 100644 (file)
@@ -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/Makefile b/tools/pkg-config/Makefile
deleted file mode 100644 (file)
index 17a8737..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# 
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pkg-config
-PKG_VERSION:=0.29.2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pkgconfig.freedesktop.org/releases/
-PKG_HASH:=6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591
-
-HOST_BUILD_PARALLEL:=1
-
-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
-       $(INSTALL_BIN) ./files/pkg-config $(STAGING_DIR_HOST)/bin/pkg-config
-endef
-
-define Host/Clean
-       -$(MAKE) -C $(HOST_BUILD_DIR) uninstall
-       $(call Host/Clean/Default)
-endef
-
-$(eval $(call HostBuild))
diff --git a/tools/pkg-config/files/pkg-config b/tools/pkg-config/files/pkg-config
deleted file mode 100755 (executable)
index 82cc74f..0000000
+++ /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/pkgconf/Makefile b/tools/pkgconf/Makefile
new file mode 100644 (file)
index 0000000..cefee1e
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pkgconf
+PKG_VERSION:=1.6.3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://distfiles.dereferenced.org/pkgconf
+PKG_HASH:=61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210
+
+HOST_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+
+unexport PKG_CONFIG
+
+define Host/Install
+       $(MAKE) -C $(HOST_BUILD_DIR) install
+       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
+
+define Host/Clean
+       -$(MAKE) -C $(HOST_BUILD_DIR) uninstall
+       $(call Host/Clean/Default)
+endef
+
+$(eval $(call HostBuild))
diff --git a/tools/pkgconf/files/pkg-config b/tools/pkgconf/files/pkg-config
new file mode 100755 (executable)
index 0000000..82cc74f
--- /dev/null
@@ -0,0 +1,3 @@
+#!/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/pkgconf/patches/0001-cli-remove-version-to-modversion-remapping.patch b/tools/pkgconf/patches/0001-cli-remove-version-to-modversion-remapping.patch
new file mode 100644 (file)
index 0000000..b2c538d
--- /dev/null
@@ -0,0 +1,36 @@
+From 62bbd3b664d4b03011a4b382ed20353a91c30406 Mon Sep 17 00:00:00 2001
+From: Ariadne Conill <ariadne@dereferenced.org>
+Date: Tue, 21 Jan 2020 10:32:36 -0600
+Subject: [PATCH] cli: remove --version to --modversion remapping
+
+This has been a source of frequent complaints, so we drop it.
+Resolves: https://todo.sr.ht/~kaniini/pkgconf/6
+---
+ cli/main.c | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+diff --git a/cli/main.c b/cli/main.c
+index 563ec8f0cfcd..fc698a4f9191 100644
+--- a/cli/main.c
++++ b/cli/main.c
+@@ -1005,18 +1005,8 @@ main(int argc, char *argv[])
+       if ((want_flags & PKG_VERSION) == PKG_VERSION)
+       {
+-              if (argc > 2)
+-              {
+-                      fprintf(stderr, "%s: --version specified with other options or module names, assuming --modversion.\n", argv[0]);
+-
+-                      want_flags &= ~PKG_VERSION;
+-                      want_flags |= PKG_MODVERSION;
+-              }
+-              else
+-              {
+-                      version();
+-                      return EXIT_SUCCESS;
+-              }
++              version();
++              return EXIT_SUCCESS;
+       }
+       if ((want_flags & PKG_HELP) == PKG_HELP)