mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 05:48:07 -05:00
size: Accept several arguments.
* guix/scripts/size.scm (display-profile): Display WHOLE at then end. (guix-size): Accept several FILES. * doc/guix.texi (Invoking guix size): Add example with several items.
This commit is contained in:
parent
a371aa225c
commit
db761534df
2 changed files with 25 additions and 7 deletions
|
@ -5058,6 +5058,24 @@ reports information based on the available substitutes
|
||||||
(@pxref{Substitutes}). This makes it possible it to profile disk usage of
|
(@pxref{Substitutes}). This makes it possible it to profile disk usage of
|
||||||
store items that are not even on disk, only available remotely.
|
store items that are not even on disk, only available remotely.
|
||||||
|
|
||||||
|
You can also specify several package names:
|
||||||
|
|
||||||
|
@example
|
||||||
|
$ guix size coreutils grep sed bash
|
||||||
|
store item total self
|
||||||
|
/gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4%
|
||||||
|
/gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8%
|
||||||
|
/gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6%
|
||||||
|
/gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2%
|
||||||
|
@dots{}
|
||||||
|
total: 102.3 MiB
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
In this example we see that the combination of the four packages takes
|
||||||
|
102.3@tie{}MiB in total, which is much less than the sum of each closure
|
||||||
|
since they have a lot of dependencies in common.
|
||||||
|
|
||||||
The available options are:
|
The available options are:
|
||||||
|
|
||||||
@table @option
|
@table @option
|
||||||
|
|
|
@ -91,7 +91,8 @@ (define MiB (expt 2 20))
|
||||||
(sort profile
|
(sort profile
|
||||||
(match-lambda*
|
(match-lambda*
|
||||||
((($ <profile> _ _ total1) ($ <profile> _ _ total2))
|
((($ <profile> _ _ total1) ($ <profile> _ _ total2))
|
||||||
(> total1 total2)))))))
|
(> total1 total2)))))
|
||||||
|
(format port (_ "total: ~,1f MiB~%") (/ whole MiB 1.))))
|
||||||
|
|
||||||
(define display-profile*
|
(define display-profile*
|
||||||
(lift display-profile %store-monad))
|
(lift display-profile %store-monad))
|
||||||
|
@ -280,7 +281,7 @@ (define (guix-size . args)
|
||||||
(match files
|
(match files
|
||||||
(()
|
(()
|
||||||
(leave (_ "missing store item argument\n")))
|
(leave (_ "missing store item argument\n")))
|
||||||
((file)
|
((files ..1)
|
||||||
(leave-on-EPIPE
|
(leave-on-EPIPE
|
||||||
;; Turn off grafts because (1) hydra.gnu.org does not serve grafted
|
;; Turn off grafts because (1) hydra.gnu.org does not serve grafted
|
||||||
;; packages, and (2) they do not make any difference on the
|
;; packages, and (2) they do not make any difference on the
|
||||||
|
@ -292,13 +293,12 @@ (define (guix-size . args)
|
||||||
#:substitute-urls urls)
|
#:substitute-urls urls)
|
||||||
|
|
||||||
(run-with-store store
|
(run-with-store store
|
||||||
(mlet* %store-monad ((item (ensure-store-item file))
|
(mlet* %store-monad ((items (mapm %store-monad
|
||||||
(profile (store-profile (list item))))
|
ensure-store-item files))
|
||||||
|
(profile (store-profile items)))
|
||||||
(if map-file
|
(if map-file
|
||||||
(begin
|
(begin
|
||||||
(profile->page-map profile map-file)
|
(profile->page-map profile map-file)
|
||||||
(return #t))
|
(return #t))
|
||||||
(display-profile* profile)))
|
(display-profile* profile)))
|
||||||
#:system system)))))
|
#:system system)))))))))
|
||||||
((files ...)
|
|
||||||
(leave (_ "too many arguments\n")))))))
|
|
||||||
|
|
Loading…
Reference in a new issue