aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-11-07 10:30:41 +0100
committerLudovic Courtès <ludo@gnu.org>2019-11-07 18:39:55 +0100
commit7de9471707116b51ef88d042887dd93e8260513d (patch)
treee592113d4567fb011da8cfa2ec6e6b716b3dfbc6
parent537b2daba9a5f0c17bde2203e6fb074a661d5b32 (diff)
downloadguix-7de9471707116b51ef88d042887dd93e8260513d.tar
guix-7de9471707116b51ef88d042887dd93e8260513d.tar.gz
gnu: pkg-config: Memoize 'cross-pkg-config'.
When running: guix build --target=arm-linux-gnueabihf gdb -nd this reduces the number of hits in the 'add-data-to-store' cache from 205 (25%) to 163 (21%). * gnu/packages/pkg-config.scm (cross-pkg-config): Turn into an 'mlambda'.
-rw-r--r--gnu/packages/pkg-config.scm67
1 files changed, 35 insertions, 32 deletions
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 6fc19a975d..c3bc3025a3 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -22,6 +22,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
+ #:use-module (guix memoization)
#:export (pkg-config))
;; This is the "primitive" pkg-config package. People should use `pkg-config'
@@ -65,44 +66,46 @@ on where to find glib (or other libraries). It is language-agnostic, so
it can be used for defining the location of documentation tools, for
instance.")))
-(define (cross-pkg-config target)
- "Return a pkg-config for TARGET, essentially just a wrapper called
+(define cross-pkg-config
+ (mlambda (target)
+ "Return a pkg-config for TARGET, essentially just a wrapper called
`TARGET-pkg-config', as `configure' scripts like it."
- ;; See <http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html>
- ;; for details.
- (package (inherit %pkg-config)
- (name (string-append (package-name %pkg-config) "-" target))
- (build-system trivial-build-system)
- (arguments
- `(#:modules ((guix build utils))
- #:builder (begin
- (use-modules (guix build utils))
+ ;; See <http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html>
+ ;; for details.
+ (package
+ (inherit %pkg-config)
+ (name (string-append (package-name %pkg-config) "-" target))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
- (let* ((in (assoc-ref %build-inputs "pkg-config"))
- (out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin"))
- (prog (string-append ,target "-pkg-config"))
- (native (string-append in "/bin/pkg-config")))
+ (let* ((in (assoc-ref %build-inputs "pkg-config"))
+ (out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin"))
+ (prog (string-append ,target "-pkg-config"))
+ (native (string-append in "/bin/pkg-config")))
- (mkdir-p bin)
+ (mkdir-p bin)
- ;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
- ;; This satisfies the pkg.m4 macros, which use
- ;; AC_PROG_TOOL to determine the `pkg-config' program
- ;; name.
- (symlink native (string-append bin "/" prog))
+ ;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
+ ;; This satisfies the pkg.m4 macros, which use
+ ;; AC_PROG_TOOL to determine the `pkg-config' program
+ ;; name.
+ (symlink native (string-append bin "/" prog))
- ;; Also make 'pkg.m4' available, some packages might
- ;; expect it.
- (mkdir-p (string-append out "/share"))
- (symlink (string-append in "/share/aclocal")
- (string-append out "/share/aclocal"))
- #t))))
- (native-inputs `(("pkg-config" ,%pkg-config)))
+ ;; Also make 'pkg.m4' available, some packages might
+ ;; expect it.
+ (mkdir-p (string-append out "/share"))
+ (symlink (string-append in "/share/aclocal")
+ (string-append out "/share/aclocal"))
+ #t))))
+ (native-inputs `(("pkg-config" ,%pkg-config)))
- ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
- (native-search-paths '())
- (search-paths (package-native-search-paths %pkg-config))))
+ ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
+ (native-search-paths '())
+ (search-paths (package-native-search-paths %pkg-config)))))
(define (pkg-config-for-target target)
"Return a pkg-config package for TARGET, which may be either #f for a native