From ad2e859589ccbd5e9310a921355ef5e7f4926d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?= Date: Fri, 13 Nov 2020 18:27:03 +0100 Subject: [PATCH] build-system/gnu: Remove libc, libstdc++ and gcc from include paths. * guix/build/gnu-build-system.scm (set-paths)[include-input?] [include-var?]: New predicates. [inputs->directories, native-inputs->directories]: Extract code from ... [input-directories, native-input-directories]: ... here. [include-directories, native-include-directories]: New variables. : Select between input-directories, native-input-directories or include-directories, native-include-directories depending on the environment variable to set. --- guix/build/gnu-build-system.scm | 45 ++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 2e7dff2034..2f8da33066 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -72,18 +72,35 @@ See https://reproducible-builds.org/specs/source-date-epoch/." (define* (set-paths #:key target inputs native-inputs (search-paths '()) (native-search-paths '()) #:allow-other-keys) - (define input-directories - (match inputs + (define (include-input? input) + (let ((compiler-internals '("libc" "libc:static" "libstdc++" "gcc"))) + (match input + ((name . _) + (not (member name compiler-internals)))))) + + (define (inputs->directories obj) + (match obj (((_ . dir) ...) dir))) - (define native-input-directories - (match native-inputs + (define (native-inputs->directories obj) + (match obj (((_ . dir) ...) dir) (#f ; not cross compiling '()))) + (define input-directories (inputs->directories inputs)) + (define native-input-directories (native-inputs->directories native-inputs)) + + (define (include-var? var) + (string-suffix? var "_INCLUDE_PATH")) + (define include-directories + (inputs->directories (filter include-input? inputs))) + (define native-include-directories + (native-inputs->directories (filter include-input? native-inputs))) + + ;; Tell 'ld-wrapper' to disallow non-store libraries. (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "no") @@ -98,10 +115,12 @@ See https://reproducible-builds.org/specs/source-date-epoch/." (for-each (match-lambda ((env-var (files ...) separator type pattern) (set-path-environment-variable env-var files - input-directories - #:separator separator - #:type type - #:pattern pattern))) + (if (include-var? env-var) + include-directories + input-directories) + #:separator separator + #:type type + #:pattern pattern))) search-paths) (when native-search-paths @@ -109,10 +128,12 @@ See https://reproducible-builds.org/specs/source-date-epoch/." (for-each (match-lambda ((env-var (files ...) separator type pattern) (set-path-environment-variable env-var files - native-input-directories - #:separator separator - #:type type - #:pattern pattern))) + (if (include-var? env-var) + native-include-directories + native-input-directories) + #:separator separator + #:type type + #:pattern pattern))) native-search-paths)) #t) -- 2.29.2