diff mbox series

[bug#50201,45/52] gnu: Add pkg-config-for-build.

Message ID 20210825180332.5720-45-maximedevos@telenet.be
State Accepted
Headers show
Series Support cross-compilation in glib-or-gtk-build-system and fix cross-compilation errors | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

M Aug. 25, 2021, 6:03 p.m. UTC
* gnu/packages/pkg-config.scm
  (pkg-config-for-build): New variable.
---
 gnu/packages/pkg-config.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

Comments

Mathieu Othacehe Aug. 30, 2021, 1:13 p.m. UTC | #1
Hey,

> +    (native-search-paths
> +     (list (search-path-specification
> +            (variable "PKG_CONFIG_PATH_FOR_BUILD")
> +            (files '("lib/pkgconfig" "lib64/pkgconfig" "share/pkgconfig")))))))

You could maybe extract the files list from the %pkg-config definition
not to duplicate it?

Mathieu
diff mbox series

Patch

diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 9c632532be..9d1588338e 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -1,6 +1,7 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,8 +22,10 @@ 
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (gnu packages bash)
   #:use-module (guix memoization)
   #:export (pkg-config))
 
@@ -130,3 +133,36 @@  build, or a GNU triplet."
 ;; environment or not.
 (define-syntax pkg-config
   (identifier-syntax (pkg-config-for-target (%current-target-system))))
+
+;; This hack allows for using both "pkg-config" and "TARGET-pkg-config"
+;; at the same time.  Simply using '%pkg-config' and 'pkg-config' won't
+;; work because they both use the "PKG_CONFIG_PATH" environment variable.
+(define-public pkg-config-for-build
+  (package
+    (inherit (hidden-package pkg-config))
+    (name "pkg-config-for-build")
+    (version "0")
+    (source #f)
+    (build-system trivial-build-system)
+    (inputs
+     `(("bash-minimal" ,bash-minimal)
+       ("pkg-config" ,%pkg-config)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       ,#~(begin
+            (use-modules (guix build utils))
+            (define where (string-append #$output "/bin/pkg-config"))
+            (mkdir-p (dirname where))
+            (call-with-output-file where
+              (lambda (port)
+                (format port "#!~a
+export PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH_FOR_BUILD\"
+exec ~a \"$@\""
+                        (search-input-file %build-inputs "bin/bash")
+                        (search-input-file %build-inputs "bin/pkg-config"))))
+            (chmod where #o500))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "PKG_CONFIG_PATH_FOR_BUILD")
+            (files '("lib/pkgconfig" "lib64/pkgconfig" "share/pkgconfig")))))))