guix-devel/tests
Ludovic Courtès 161094c8e2 packages: Rewrite 'transitive-inputs' to be linear and remove duplicates.
There were two issues:

  1. Use of 'delete-duplicates', which is quadratic, was a serious problem for
     closures with lots of propagated inputs, such as that of the 'hydra'
     package (several minutes for 'guix build hydra -n'!).

  2. The 'delete-duplicates' call essentially had no effect since duplicate
     inputs typically had a different label and were thus kept.  For
     instance, (bag-transitive-inputs (package->bag inkscape)) would return
     216 items whereas (delete-duplicates (map cdr THAT)) contains only 67
     items.

     The new implementation returns 67 items in this case.  For 'hydra', we're
     down from 42211 items to 361, and roughly 13s for 'guix build hydra'.

* guix/packages.scm (transitive-inputs): Rewrite as a breadth-first
  traversal.  Remove duplicate propagated inputs.
* tests/packages.scm ("package-transitive-inputs", "package->bag, propagated
  inputs"): Adjust to use simple labels for propagated inputs, without "/".
  ("package-transitive-inputs, no duplicates"): New test.
2015-07-12 01:27:00 +02:00
..
base32.scm base32: Use a custom error condition instead of 'misc-error'. 2015-05-31 22:39:48 +02:00
base64.scm substitute-binary: Support the Signature field of a narinfo file. 2014-03-30 12:02:10 +02:00
build-utils.scm utils: Allow wrap-program to be called multiple times. 2014-09-13 21:53:21 -05:00
builders.scm tests: Skip tests that would fail due to the shebang length. 2015-02-24 00:01:34 +01:00
containers.scm gnu: build: Add Linux container module. 2015-07-09 08:23:03 -04:00
cpan.scm import: cpan: Update tests for dependency handling. 2015-02-20 16:05:15 -06:00
cpio.scm Add (guix cpio). 2015-06-24 18:05:03 +02:00
derivations.scm derivations: Add #:substitutable?, distinguished from #:local-build?. 2015-07-03 00:30:55 +02:00
elpa.scm tests: Use the right identifier in tests/elpa.scm. 2015-07-08 15:30:49 +02:00
gexp.scm tests: Adjust tests for new bootstrap Guile. 2015-07-12 01:27:00 +02:00
gremlin.scm gremlin: Add support for the expansion of $ORIGIN in RUNPATH. 2015-04-23 18:52:40 +02:00
guix-archive.sh Merge branch 'nix'. 2015-05-19 16:09:58 +02:00
guix-authenticate.sh authenticate: Allow signatures with binary data to be written to stdout. 2014-04-22 11:30:58 +02:00
guix-build.sh guix: build: Add transitive source building. 2015-05-02 23:15:40 -05:00
guix-daemon.sh Fix remaining references to "substitute-binary". 2015-03-26 23:54:59 +01:00
guix-download.sh Replace individual scripts with master 'guix' script. 2013-02-16 22:17:37 -05:00
guix-environment.sh tests: Test the exit code of 'guix environment'. 2015-07-08 00:06:45 +02:00
guix-gc.sh gc: ignore trailing slash or subdirectories for `guix gc -d' 2015-05-26 22:26:01 +02:00
guix-hash.sh guix hash: Add '--recursive'. 2014-02-21 23:49:52 +01:00
guix-lint.sh lint: Fix argument parsing when several packages are specified. 2015-01-28 14:00:58 +01:00
guix-package-net.sh guix package: Add optional argument to --search-paths. 2015-05-20 12:13:39 +02:00
guix-package.sh guix package: --manifest DTRT when combined with --dry-run. 2015-05-25 21:34:23 +02:00
guix-register.sh guix-register: Perform deduplication even when --prefix is passed. 2015-06-10 13:47:58 +02:00
guix-system.sh ui: Auto-compile user code, and improve error reporting. 2015-05-25 21:34:23 +02:00
hackage.scm import: hackage: Refactor parsing code and add new options. 2015-06-09 09:48:38 +02:00
hash.scm hash: Add 'open-sha256-input-port', for Guile > 2.0.9. 2014-01-24 00:01:49 +01:00
lint.scm lint: Add a 'derivation' checker. 2015-04-13 00:02:59 +02:00
monads.scm monads: Allow n-ary '>>=' expressions. 2015-06-08 23:00:49 +02:00
nar.scm tests: Move 'file=?' to (guix tests). 2015-06-24 18:05:03 +02:00
packages.scm packages: Rewrite 'transitive-inputs' to be linear and remove duplicates. 2015-07-12 01:27:00 +02:00
pk-crypto.scm authenticate: Allow signatures with binary data to be written to stdout. 2014-04-22 11:30:58 +02:00
pki.scm pki: Add 'signature-case' macro. 2014-03-31 23:34:20 +02:00
profiles.scm profiles: Gracefully deal with packages containing an etc/ symlink. 2015-05-18 09:47:29 +02:00
publish.scm scripts: Add 'publish' command. 2015-04-04 14:16:43 -04:00
pypi.scm import: pypi: Detect inputs. 2015-06-24 22:47:59 +02:00
records.scm tests: Avoid sequence of zero expressions. 2015-06-11 23:33:32 +02:00
sets.scm Add (guix sets). 2015-01-11 23:50:01 +01:00
signing-key.pub daemon: Implement signed archive import/export. 2013-12-20 17:17:42 +01:00
signing-key.sec daemon: Implement signed archive import/export. 2013-12-20 17:17:42 +01:00
size.scm tests: Adjust tests for new bootstrap Guile. 2015-07-12 01:27:00 +02:00
snix.scm import: Add PyPI importer. 2014-09-29 19:30:28 -04:00
store.scm store: Add 'verify-store' RPC. 2015-06-06 19:05:25 +02:00
substitute.scm substitute: Rename cache directory from "substitute-binary" to "substitute". 2015-03-25 10:46:22 +01:00
syscalls.scm build: syscalls: Add pivot-root. 2015-07-07 21:16:25 -04:00
test.drv Add unit test for derivation parsing and output. 2012-04-19 23:09:55 +02:00
ui.scm ui: Honor --no-* options passed via $GUIX_BUILD_OPTIONS. 2015-02-26 00:04:36 +01:00
union.scm tests: Factorize the network reachability test. 2015-02-24 00:01:34 +01:00
utils.scm search-paths: Export 'string-tokenize*'. 2015-05-06 18:26:53 +02:00