(zilch nix drv): deduplicate input sources
This commit is contained in:
parent
99bb2501e3
commit
32673728f9
1 changed files with 9 additions and 2 deletions
|
|
@ -230,7 +230,8 @@
|
||||||
("builder" . ,(car builder))
|
("builder" . ,(car builder))
|
||||||
("system" . ,platform)
|
("system" . ,platform)
|
||||||
. ,new-items)))
|
. ,new-items)))
|
||||||
(make-derivation name (list (cons "out" output)) input-drvs input-srcs platform (car builder) (cdr builder) (list-sort env-pair< (append new-items env)) (make-derivation-metadata #f #f #f #f #f)))
|
(define environment (list-sort env-pair< (filter-environment env new-items)))
|
||||||
|
(make-derivation name (list (cons "out" output)) input-drvs (list-sort string<? (filter-sources input-srcs)) platform (car builder) (cdr builder) environment (make-derivation-metadata #f #f #f #f #f)))
|
||||||
|
|
||||||
(define (sanity-check-drv orig-drv)
|
(define (sanity-check-drv orig-drv)
|
||||||
(define tmp-drv (mask-derivation orig-drv))
|
(define tmp-drv (mask-derivation orig-drv))
|
||||||
|
|
@ -247,9 +248,15 @@
|
||||||
(for-each (lambda (kv) (unless (assoc (car kv) output string=?) (set! output (cons kv output)))) env-list)
|
(for-each (lambda (kv) (unless (assoc (car kv) output string=?) (set! output (cons kv output)))) env-list)
|
||||||
output)
|
output)
|
||||||
|
|
||||||
|
(define (filter-sources inputs)
|
||||||
|
(define output '())
|
||||||
|
(for-each (lambda (out) (unless (member out output string=?) (set! output (cons out output)))) inputs)
|
||||||
|
output)
|
||||||
|
|
||||||
;; Creates an input-addressed derivation with specified parameters.
|
;; Creates an input-addressed derivation with specified parameters.
|
||||||
(define (make-input-addressed-derivation name platform input-drvs input-srcs builder env outputs)
|
(define (make-input-addressed-derivation name platform input-drvs input-srcs builder env outputs)
|
||||||
(define compat-env (if (%derivation-compatible) `(("name" . ,name) ("builder" . ,(car builder)) ("system" . ,platform)) '()))
|
(define compat-env (if (%derivation-compatible) `(("name" . ,name) ("builder" . ,(car builder)) ("system" . ,platform)) '()))
|
||||||
|
(set! input-srcs (list-sort string<? (filter-sources input-srcs)))
|
||||||
|
|
||||||
(define tmp-outputs (list-sort env-pair< (map (lambda (l) (cons l (make-derivation-output #f #f #f #f))) outputs)))
|
(define tmp-outputs (list-sort env-pair< (map (lambda (l) (cons l (make-derivation-output #f #f #f #f))) outputs)))
|
||||||
(define tmp-env (list-sort env-pair< (filter-environment env (append compat-env (map (lambda (l) (cons l "")) outputs)))))
|
(define tmp-env (list-sort env-pair< (filter-environment env (append compat-env (map (lambda (l) (cons l "")) outputs)))))
|
||||||
|
|
@ -287,7 +294,7 @@
|
||||||
#f 'floating "sha256" #t))) noutputs)))
|
#f 'floating "sha256" #t))) noutputs)))
|
||||||
(define env (list-sort env-pair< (filter-environment nenv (append compat-env (map (lambda (l) (cons (car l) (make-placeholder (car l)))) outputs)))))
|
(define env (list-sort env-pair< (filter-environment nenv (append compat-env (map (lambda (l) (cons (car l) (make-placeholder (car l)))) outputs)))))
|
||||||
|
|
||||||
(define drv (make-derivation name outputs input-drvs input-srcs platform (car builder) (cdr builder) env (make-derivation-metadata #f #f #t #f #f)))
|
(define drv (make-derivation name outputs input-drvs (list-sort string<? (filter-sources input-srcs)) platform (car builder) (cdr builder) env (make-derivation-metadata #f #f #t #f #f)))
|
||||||
(define pathhash (string-copy (derivation-path drv) (+ 1 (string-length (%store-dir))) (+ 33 (string-length (%store-dir)))))
|
(define pathhash (string-copy (derivation-path drv) (+ 1 (string-length (%store-dir))) (+ 33 (string-length (%store-dir)))))
|
||||||
(for-each (lambda (pair) (set-derivation-output-path! (cdr pair) (make-upstream-output-placeholder pathhash name (car pair)))) (derivation-outputs drv))
|
(for-each (lambda (pair) (set-derivation-output-path! (cdr pair) (make-upstream-output-placeholder pathhash name (car pair)))) (derivation-outputs drv))
|
||||||
drv)
|
drv)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue