Commit Graph

102 Commits

Author SHA1 Message Date
Ludovic Courtès 49c35bbb71
self: Move all modules into a single directory.
This halves the number of elements in %LOAD-PATH and %LOAD-COMPILED-PATH
and halves the number of 'stat' calls as reported by:

  env -i $(type -P guix) build -e '(@ (gnu packages base) coreutils)' -nd

* guix/self.scm (node-source+compiled, guile-module-union): New
procedures.
(guix-command): Remove 'compiled-modules' parameter.  Remove
'source-directories' and 'object-directories' variables and add
'module-directory'.  Change command so that it adds nothing but
MODULE-DIRECTORY to %LOAD-PATH and %LOAD-COMPILED-PATH.
(whole-package): Remove #:compiled-modules.  Assume MODULES contains
'share/guile/site' and 'lib/guile' and adjust code accordingly.
(compiled-guix): When PULL-VERSION is 1, use 'node-source+compiled'
only.  Remove #:compiled-modules argument to 'whole-package'.
* guix/channels.scm (whole-package-for-legacy): Add 'module+compiled'
and pass it to 'whole-package'.
2019-01-07 23:50:56 +01:00
Ludovic Courtès b5f8c2c885
hydra: Compute jobs in an inferior.
Previously we would rely on auto-compilation of all the Guix modules.
The complete evaluation would take ~15mn on berlin.guixsd.org and
require lots of RAM.  This approach should be faster since potentially
only part of the modules are rebuilt.  Furthermore, as a side-effect, it
builds the derivations that 'guix pull' uses.

* build-aux/hydra/gnu-system.scm: Remove 'eval-when' form.
(hydra-jobs): New procedure.
* gnu/ci.scm (package->alist, qemu-jobs, system-test-jobs)
(tarball-jobs): Return strings for the 'license' field.
* guix/self.scm (compiled-guix)[*cli-modules*]: Add (gnu ci).
2019-01-06 21:41:07 +01:00
Ludovic Courtès 6a837b6062
etc: Add "ci.guix.info.pub" public key file.
* etc/substitutes/ci.guix.info.pub: New file.
* Makefile.am (dist_pkgdata_DATA): Add it.
* guix/self.scm (miscellaneous-files): Add
"share/guix/ci.guix.info.pub".
2018-12-04 10:57:56 +01:00
Ludovic Courtès 194451347d
Merge branch 'core-updates' 2018-12-03 08:52:17 +01:00
Ludovic Courtès 2d33776050
self: Provide UTF-8 locales when building the manual.
Fixes <https://bugs.gnu.org/33580>.
Reported by <znavko@tutanota.com>.

* guix/self.scm (info-manual)[glibc-utf8-locales]: New variable.
[build]: Add call to 'setenv' for "GUIX_LOCPATH".
2018-12-02 22:53:22 +01:00
Marius Bakke 55174e668f
Merge branch 'master' into core-updates 2018-11-07 21:09:57 +01:00
Ludovic Courtès e3744779aa
self: Install shell completion files.
* guix/self.scm (miscellaneous-files): New procedure.
(whole-package): Remove #:substitute-keys, add #:miscellany.
[build]: Remove code for SUBSTITUTE-KEYS and add code to copy MISCELLANY
to OUTPUT.
(compiled-guix): Adjust call to 'whole-package'.
2018-11-06 17:00:02 +01:00
Ludovic Courtès 6cf502d164
self: Rename 'sub-directory' to 'file-append*'.
* guix/self.scm (sub-directory): Rename to...
(file-append*): ... this.  Add #:recursive? parameter and pass it to
'local-file'.
(locale-data, info-manual, compiled-guix): Adjust accordingly.
2018-11-06 17:00:02 +01:00
Ludovic Courtès 8d3beb3a44
self: Install substitute keys.
* guix/self.scm (whole-package): Add #:substitute-keys and honor it.
(compiled-guix): Pass #:substitute-keys to 'whole-package' when
PULL-VERSION is one.
2018-11-06 00:04:11 +01:00
Ludovic Courtès cbe7387c04
self: Remove extra paren in manual version string.
* guix/self.scm (info-manual)[build]: Remove extra closing paren in
VERSION.
2018-11-06 00:04:11 +01:00
Marius Bakke d02bb02f7d
Merge branch 'master' into core-updates 2018-10-17 20:47:11 +02:00
Ludovic Courtès 099bb0175f
self: Use Guile 2.2 unconditionally for recent 'guix pull'.
Fixes <https://bugs.gnu.org/32929>.
Reported by Michael Bowcutt <mwb71@case.edu>.

* guix/self.scm (guix-derivation)[guile]: Use "2.2" when PULL-VERSION >= 1.
Likewise for the #:guile-version argument.
2018-10-10 14:54:18 +02:00
Marius Bakke 0aeb134850
Merge branch 'master' into core-updates 2018-09-09 17:40:35 +02:00
Ludovic Courtès ca71942445
Switch to Guile-Gcrypt.
This removes (guix hash) and (guix pk-crypto), which now live as part of
Guile-Gcrypt (version 0.1.0.)

* guix/gcrypt.scm, guix/hash.scm, guix/pk-crypto.scm,
tests/hash.scm, tests/pk-crypto.scm: Remove.
* configure.ac: Test for Guile-Gcrypt.  Remove LIBGCRYPT and
LIBGCRYPT_LIBDIR assignments.
* m4/guix.m4 (GUIX_ASSERT_LIBGCRYPT_USABLE): Remove.
* README: Add Guile-Gcrypt to the dependencies; move libgcrypt as
"required unless --disable-daemon".
* doc/guix.texi (Requirements): Likewise.
* gnu/packages/bash.scm, guix/derivations.scm, guix/docker.scm,
guix/git.scm, guix/http-client.scm, guix/import/cpan.scm,
guix/import/cran.scm, guix/import/crate.scm, guix/import/elpa.scm,
guix/import/gnu.scm, guix/import/hackage.scm,
guix/import/texlive.scm, guix/import/utils.scm, guix/nar.scm,
guix/pki.scm, guix/scripts/archive.scm,
guix/scripts/authenticate.scm, guix/scripts/download.scm,
guix/scripts/hash.scm, guix/scripts/pack.scm,
guix/scripts/publish.scm, guix/scripts/refresh.scm,
guix/scripts/substitute.scm, guix/store.scm,
guix/store/deduplication.scm, guix/tests.scm, tests/base32.scm,
tests/builders.scm, tests/challenge.scm, tests/cpan.scm,
tests/crate.scm, tests/derivations.scm, tests/gem.scm,
tests/nar.scm, tests/opam.scm, tests/pki.scm,
tests/publish.scm, tests/pypi.scm, tests/store-deduplication.scm,
tests/store.scm, tests/substitute.scm: Adjust imports.
* gnu/system/vm.scm: Likewise.
(guile-sqlite3&co): Rename to...
(gcrypt-sqlite3&co): ... this.  Add GUILE-GCRYPT.
(expression->derivation-in-linux-vm)[config]: Remove.
(iso9660-image)[config]: Remove.
(qemu-image)[config]: Remove.
(system-docker-image)[config]: Remove.
* guix/scripts/pack.scm: Adjust imports.
(guile-sqlite3&co): Rename to...
(gcrypt-sqlite3&co): ... this.  Add GUILE-GCRYPT.
(self-contained-tarball)[build]: Call 'make-config.scm' without
 #:libgcrypt argument.
(squashfs-image)[libgcrypt]: Remove.
[build]: Call 'make-config.scm' without #:libgcrypt.
(docker-image)[config, json]: Remove.
[build]: Add GUILE-GCRYPT to the extensions  Remove (guix config) from
the imported modules.
* guix/self.scm (specification->package): Remove "libgcrypt", add
"guile-gcrypt".
(compiled-guix): Remove #:libgcrypt.
[guile-gcrypt]: New variable.
[dependencies]: Add it.
[*core-modules*]: Remove #:libgcrypt from 'make-config.scm' call.
Add #:extensions.
[*config*]: Remove #:libgcrypt from 'make-config.scm' call.
(%dependency-variables): Remove %libgcrypt.
(make-config.scm): Remove #:libgcrypt.
* build-aux/build-self.scm (guile-gcrypt): New variable.
(make-config.scm): Remove #:libgcrypt.
(build-program)[fake-gcrypt-hash]: New variable.
Add (gcrypt hash) to the imported modules.  Adjust load path
assignments.
* gnu/packages/package-management.scm (guix)[propagated-inputs]: Add
GUILE-GCRYPT.
[arguments]: In 'wrap-program' phase, add GUILE-GCRYPT to the search
path.
2018-09-04 17:25:11 +02:00
Marius Bakke 70dc8db8e7
Merge branch 'master' into core-updates 2018-09-03 19:20:06 +02:00
Ludovic Courtès 02fa1d251c
discovery: Add 'scheme-modules*'.
* guix/self.scm (scheme-modules*): Move to...
* guix/discovery.scm (scheme-modules*): ... here.  New procedure.  Make
'sub-directory' an optional parameter.
2018-09-02 16:43:10 +02:00
Marius Bakke 61fca0fd22
Merge branch 'master' into core-updates 2018-08-28 01:22:24 +02:00
Ludovic Courtès f2d0a2cf5c
self: Shrink the module search path of the 'guix' command.
Previously we'd have lots of useless entries on the search paths, such
as libtasn1, libidn2, zlib, gmp, etc. because they are propagated by
gnutls.

* guix/self.scm (guix-command)[source-directories, object-directories]:
New variables.  Use them in the body of "guix-command".  Filter their
items with 'file-exists?'.
2018-08-27 23:22:17 +02:00
Ludovic Courtès 8bece84022
gnu: guile: Remove version 2.2.2.
* gnu/packages/guile.scm (guile-2.2.2): Remove.
* guix/self.scm (guile-for-build): Remove special case for "2.2.2".
(guix-derivation): Likewise.
* build-aux/build-self.scm (build): Likewise.
2018-07-27 11:28:15 +02:00
Ludovic Courtès 2abd76e8af
gnu: guile: Update to 2.2.4.
* gnu/packages/guile.scm (guile-2.2): Update to 2.2.4.
(guile-2.2.4): Remove.
* gnu/packages/package-management.scm (guix)[inputs]: Switch to
GUILE-2.2.
* guix/self.scm (guile-for-build): Likewise.
2018-07-27 11:22:12 +02:00
Ludovic Courtès f5db54eaa5
self: Use the new 'imported-files'.
That way, the source of most nodes is now a content-addressed store item
instead of a derivation.

* guix/self.scm (<file-mapping>): New record type.
(file-mapping-compiler): New procedure.
(scheme-node): Use 'file-mapping' instead of 'imported-files'.
(imported-files): Remove.
2018-07-19 11:48:04 +02:00
Ludovic Courtès 084f64cb03
self: Build with Guile 2.2.4.
* guix/self.scm (guile-for-build): In the "2.2" case, choose
GUILE-2.2.4.
2018-07-02 15:28:35 +02:00
Ludovic Courtès 8970a886e6
self: Use #:guile-for-build in the shebang of the 'guix' executable.
* guix/self.scm (guix-command): Add #:guile and pass it to 'program-file'.
(whole-package): Add #:guile and pass it to 'guix-command'.
(compiled-guix): Pass #:guile to 'guix-command' and 'whole-package'.
2018-07-02 15:28:35 +02:00
Ludovic Courtès 108015df6d
self: Add dependency on GnuTLS.
Fixes <https://bugs.gnu.org/31983>.
Reported by Fis Trivial <ybbs.daans@hotmail.com>.

* guix/self.scm (specification->package): Add "gnutls" and
"guile2.0-gnutls".
(compiled-guix)[gnutls]: New variable.
[dependencies]: Add it.
2018-06-27 23:30:44 +02:00
Ludovic Courtès 7af5c2a248
self: Define derived '-directory' variables in config.scm.
This is a followup to d6b5aa0b03.

* guix/self.scm (%config-variables): Remove %CONFIG-DIRECTORY,
%STATE-DIRECTORY, %STORE-DATABASE-DIRECTORY, and %STORE-DIRECTORY.
(make-config.scm): Define them here.
* build-aux/build-self.scm (%config-variables, make-config.scm):
Likewise.
2018-06-18 23:56:16 +02:00
Ludovic Courtès e8cb9c01c6
build: Remove checks for 'nix-instantiate'.
* guix/import/snix.scm (open-nixpkgs): Use "nix-instantiate"
unconditionally.
* configure.ac: Remove check for 'nix-instantiate'.
* guix/config.scm.in (%nix-instantiate): Remove.
* guix/self.scm (%dependency-variables): Remove '%nix-instantiate'.
(make-config.scm): Remove it from the generated "config.scm".
* build-aux/build-self.scm (%dependency-variables, make-config.scm):
Likewise.
2018-06-18 23:19:51 +02:00
Ludovic Courtès 45779fa676
self: Make (guix config) generation really stateless.
Previously the %CONFIG-VARIABLES list would be generated based on what
the current (guix config) contains.  Thus, it would include
'%guix-register-program', which we recently removed, because
existing (guix config) most likely contained that variable.  Since its
value could differ from machine to machine, the build farm could be
building a different config.scm, thereby preventing people from getting
substitutes.

* guix/self.scm (%config-variables): Turn into a white list instead of
taking all the remaining variables from the current (guix config).
* build-aux/build-self.scm (%config-variables): Likewise.
2018-06-18 23:19:51 +02:00
Ludovic Courtès a89faa3faa
self: Install .go files to 'lib/guile/X.Y/site-ccache'.
* guix/self.scm (guix-command): Add 'compiled-modules' parameter and
honor it.
(whole-package): Likewise.
(compiled-guix)[built-modules]: Turn into a procedure.
When PULL-VERSION is 1, use separate source and compiled modules.
When PULL-VERSION is 0, return a single directory containing both .scm
and .go files.
2018-06-17 01:40:14 +02:00
Ludovic Courtès baed923682
self: Add 'guix-daemon' to the result.
* gnu/packages/package-management.scm (guix-daemon): New variable.
* guix/self.scm (whole-package): Add #:daemon and honor it.
(compiled-guix): Pass #:daemon to 'whole-package'.
2018-06-14 23:34:59 +02:00
Ludovic Courtès ea0a06cee2
Remove 'guix-register' and its traces.
* Makefile.am (SH_TESTS): Remove tests/guix-register.sh.
* build-aux/pre-inst-env.in (GUIX_REGISTER): Remove.
* gnu/build/install.scm (directives): Remove outdated comment.
* gnu/build/vm.scm (root-partition-initializer): Update comment.
* gnu/packages/package-management.scm (guix-register): Remove.
* guix/config.scm.in (%sbindir, %guix-register-program): Remove.
* guix/scripts/system.scm (install): Adjust docstring.
* guix/self.scm (make-config.scm): Remove #:guix.  Do not generate
%sbindir and %guix-register-program.
(specification->package): Remove "guix".
* nix/guix-register/guix-register.cc: Remove.
* nix/libstore/store-api.cc (decodeValidPathInfo): Remove.
* nix/libstore/store-api.hh (decodeValidPathInfo): Remove declaration.
* nix/local.mk (sbin_PROGRAMS, guix_register_SOURCES)
(guix_register_CPPFLAGS, guix_register_LDFLAGS): Remove.
* tests/guix-register.sh: Remove.
2018-06-14 11:17:00 +02:00
Ludovic Courtès 3931c76154
database: 'with-database' can now initialize new databases.
* nix/libstore/schema.sql: Rename to...
* guix/store/schema.sql: ... this.
* Makefile.am (nobase_dist_guilemodule_DATA): Add it.
* nix/local.mk (%D%/libstore/schema.sql.hh): Adjust accordingly.
* guix/store/database.scm (sql-schema): New variable.
(sqlite-exec, initialize-database, call-with-database): New procedures.
(with-database): Rewrite in terms of 'call-with-database'.
* tests/store-database.scm ("new database"): New test.
* guix/self.scm (compiled-guix)[*core-modules*]: Add 'schema.sql' to
 #:extra-files.
2018-06-14 11:16:58 +02:00
Ludovic Courtès 4554d4c8a9
self: Build the Info manual.
* guix/self.scm (info-manual): New procedure.
(whole-package): Add #:info and honor it.
(compiled-guix): Pass #:info.
2018-06-09 12:02:28 +02:00
Ludovic Courtès 9f1c3559b0
self: Compute and use locale data.
* guix/self.scm (sub-directory, locale-data): New procedures.
(guix-command): Add SOURCE parameter.  Call 'locale-data' when SOURCE is
true and use it in staged 'bindtextdomain' calls.
(whole-package): Add #:command and honor it.
(compiled-guix): Pass #:command to 'whole-package'.
2018-06-09 12:02:27 +02:00
Ludovic Courtès 8a0d9bc8a3
self: Produce a complete package with the 'guix' command.
* guix/self.scm (guix-command): New procedure.
(compiled-guix): Add #:pull-version parameter.
[command, package]: New variables.
Honor PULL-VERSION.
(guix-derivation): Add #:pull-version and pass it to 'compiled-guix'.
* build-aux/build-self.scm (build-program): Add #:pull-version
parameter.  Pass it to 'guix-derivation'.
(build): Add #:pull-version and pass it to 'build-program'.
* build-aux/compile-as-derivation.scm: Pass #:pull-version to BUILD.
2018-06-09 12:02:27 +02:00
Ludovic Courtès 8292f5a9c5
self: Do not build (guix man-db).
* guix/self.scm (specification->package): Remove "guile-gdbm-ffi" and
"guile2.0-gdbm-ffi".
(compiled-guix)[guile-gdbm-ffi]: Remove.
[dependencies]: Remove it.
[*core-modules*]: Add "guix/man-db.scm" via #:extra-files.
[*extra-modules*]: Exclude "guix/man-db.scm".
2018-06-02 16:02:51 +02:00
Ludovic Courtès 1458f768c1
self: Include gnu/build/* in the result.
Previously, modules like gnu/build/cross-toolchain.scm or
gnu/build/svg.scm were missing from the result.

* guix/self.scm (compiled-guix)[*system-modules*]: Add gnu/build/* to
 #:extra-files.
(imported-files)[same-target?]: New procedure.
[build]: Call 'delete-duplicates' on FILES.
2018-06-02 00:43:49 +02:00
Ludovic Courtès 8031b3fa3c
self: 'compiled-files' builds the given list of files.
* guix/self.scm (compiled-files): Add 'module-files' parameter.
[build]: 'process-directory' now honors MODULE-FILES instead of
building any '.scm' file it sees.
(scheme-node): Adjust accordingly.
2018-06-02 00:43:49 +02:00
Ludovic Courtès e3a87d770f
self: Improve backtraces for 'imported-files'.
* guix/self.scm (imported-files): Pass #:env-vars.
2018-06-02 00:43:49 +02:00
Ludovic Courtès 54be2b4d75
self: Show backtraces on more columns.
* guix/self.scm (compiled-modules): Add "COLUMNS" to #:env-vars.
2018-06-01 18:41:45 +02:00
Ludovic Courtès 6d52844cd4
self: Add dependency on guile-gdbm-ffi.
Fixes a regression introduced in
331ac4cc23 whereby "guile-gdbm-ffi" would
now be mandatory.

* guix/self.scm (specification->package): Add "guile-gdbm-ffi" and
"guile2.0-gdbm-ffi".
(compiled-guix)[guile-gdbm-ffi]: New variables.
[dependencies]: Add it.
2018-06-01 18:41:45 +02:00
Ludovic Courtès d59e75f3b5
build: Check for Guile-SQLite3.
* m4/guix.m4 (GUIX_CHECK_GUILE_SQLITE3): New macro.
* configure.ac: Use it and define 'HAVE_GUILE_SQLITE3'.
* guix/self.scm (specification->package): Add "guile-sqlite3".
(compiled-guix)[guile-sqlite3]: New variable.
[dependencies]: Add it.
2018-06-01 15:35:15 +02:00
Ludovic Courtès e13240f598
self: Reduce the set of dependencies.
By mistake we were adding more dependencies than needed to the Scheme
derivations.

* guix/self.scm (compiled-guix)[dependencies]: Use
'package-transitive-propagated-inputs', not 'package-transitive-inputs'.
2018-05-31 18:13:08 +02:00
Ludovic Courtès f2e66663c2
self: Add "guix-packages-base" derivation.
This introduces an intermediate derivation, thereby reducing the amount
of rebuild that needs to happen when "leaf" package modules are
modified.

* guix/self.scm (compiled-guix)[*core-package-modules*]: New variable.
[*package-modules*, *system-modules*, *cli-modules*]: Depend on it.
Add it to the directory union.
2018-05-07 00:17:34 +02:00
Ludovic Courtès eb72cdf087
self: Produce a spliced (guix config) to placate Guile 2.0.
Fixes 'guix pull' with Guile 2.0.
See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27284#153>.

* guix/self.scm (make-config.scm): Remove 'begin' in 'scheme-file'
argument and pass #:splice? #t.
2018-04-11 01:03:47 +02:00
Ludovic Courtès a1639ae9de
self: 'package-for-guile' really honors GUILE-VERSION.
* guix/self.scm (package-for-guile): Pass GUILE-VERSION to
'false-if-wrong-guile'.
2018-04-11 01:03:47 +02:00
Ludovic Courtès 63cab4182d
self: Remove 'eval-when' from in generated (guix config).
* guix/self.scm (make-config.scm): Remove unneeded 'eval-when'.
2018-04-11 01:03:47 +02:00
Ludovic Courtès 43176dd605
self: Don't use deprecated package names.
* guix/self.scm (compiled-guix)[guile-json, guile-ssh]: Don't refer t
"guile2.2-json" and "guile2.2-ssh", which are deprecated.
2018-04-10 17:44:27 +02:00
Ludovic Courtès 806ff35854
self: Export '%guix-register-program' in generated (guix config).
* guix/self.scm (make-config.scm): Export '%guix-register-program'.
2018-04-10 17:44:27 +02:00
Ludovic Courtès e69dd8443a
self: Fix package names for compilation with Guile 2.0.
Reported by Ricardo Wurmus.

* guix/self.scm (specification->package): Add guile2.0-{json,git,ssh}.
(guile-for-build): Use 'module-ref' for Guile 2.0.
2018-04-10 17:44:27 +02:00
Ludovic Courtès 69447b6393
self: Display a new line at the end of module compilation.
* guix/self.scm (compiled-modules)[build]: Add a 'newline' call at the
end.
2018-04-10 17:44:27 +02:00
Ludovic Courtès 14b392a8ad
self: Don't substitute the '-source' derivations.
With substitution enabled we would end up downloading 10+ MiB of source
that's already available locally on disk.

* guix/self.scm (imported-files): Pass #:options to 'computed-file'.
2018-04-10 17:44:27 +02:00
Ludovic Courtès eaae07ec28
Add (guix self).
* guix/self.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/packages.scm (%distro-root-directory): Rewrite to try different
directories.
* guix/discovery.scm (guix): Export 'scheme-files'.
2018-04-08 17:41:08 +02:00