Commit graph

47 commits

Author SHA1 Message Date
Ludovic Courtès
11dee1bb8f
build-self: Avoid call to 'show-what-to-build*' on modern Guix.
This avoids repeated "will be downloaded" messages for
'compute-guix-derivation' and its dependencies.

* build-aux/build-self.scm (build): Don't call 'show-what-to-build*'
when 'with-build-handler' is defined.
2020-04-06 12:07:49 +02:00
Marius Bakke
05e783871c
build-self: Import (ice-9 threads) in the compute-guix-derivation script.
This is required for CALL-WITH-NEW-THREAD in Guile 3.0.

* build-aux/build-self.scm (build-program): Import (ice-9 threads).
2020-03-19 08:41:49 +01:00
Ludovic Courtès
7ff86ecae1
build-self: Show wider backtraces.
* build-aux/build-self.scm (build): Add 'setenv' call for "COLUMNS".
2020-02-20 11:12:33 +01:00
Tobias Geerinckx-Rice
3fb3291e25
Use more guix.gnu.org.
* build-aux/build-self.scm (make-config.scm): Replace gnu.org/s/guix with guix.gnu.org.
* guix/scripts/publish.scm (render-home-page): Likewise.
* guix/self.scm (make-config.scm): Likewise.
2019-07-16 23:00:10 +02:00
Ludovic Courtès
e0244eb7a2
build-self: Let HOME pass through the execution environment.
This is a followup to 48d498c2c3, which
introduced a typo (missing '->' in 'mlet'.)

Fixes <https://bugs.gnu.org/35623>.
Reported by Karrick McDermott <kmcdermott@linkedin.com>.

* build-aux/build-self.scm (build): Add 'getenv' and 'setenv' calls for
HOME.
2019-05-12 22:56:57 +02:00
Tobias Geerinckx-Rice
cbe7c99e71
Revert "build-self: Let HOME pass through the execution environment."
This reverts commit 48d498c2c3.
It breaks ‘guix pull’.
2019-05-11 23:35:32 +02:00
Ludovic Courtès
48d498c2c3
build-self: Let HOME pass through the execution environment.
Fixes <https://bugs.gnu.org/35623>.
Reported by Karrick McDermott <kmcdermott@linkedin.com>.

* build-aux/build-self.scm (build): Add 'getenv' and 'setenv' calls for
HOME.
2019-05-11 20:10:26 +02:00
Ludovic Courtès
04fa9c62d9
build-self: Explain why we keep using deprecated bindings.
* build-aux/build-self.scm (build): Add comment regarding the deprecated
names.
2019-04-23 16:39:00 +02:00
Ludovic Courtès
ffc8ab75f1
Revert "build-self: Avoid deprecated bindings."
This reverts commit fa9e6e8b67.

By using the new bindings, we would prevent users of Guix prior to
de9fbe9cdc, such as version 0.16.0, to
upgrade to current master.  Thus, we will keep using the old names for a
while.
2019-04-23 00:47:41 +02:00
Mark H Weaver
fa9e6e8b67
build-self: Avoid deprecated bindings.
* build-aux/build-self.scm (build): Replace references to nix-server-*
with store-connection-*.
2019-04-22 14:58:16 -04:00
Ludovic Courtès
ab77b69eca
self: Remove unused variable.
This variable is unused since commit
45779fa676.

* guix/self.scm (%dependency-variables): Remove.
* build-aux/build-self.scm (%dependency-variables): Remove.
2019-04-17 11:53:53 +02:00
Ludovic Courtès
ec8bc4a34e
build-self: Disable position recording.
'guix pull -n' goes roughly from 40s to 35s.

* build-aux/build-self.scm (build-program): Add call to 'read-disable'.
2019-03-26 18:11:52 +01:00
Ludovic Courtès
a87d66f371
daemon: Rename 'NIX_STATE_DIR' and 'NIX_DB_DIR' environment variables.
Fixes <https://bugs.gnu.org/22459>.
Reported by Jeff Mickey <j@codemac.net>.

* guix/config.scm.in (%state-directory): Change NIX_STATE_DIR to
GUIX_STATE_DIRECTORY.
(%store-database-directory): Change NIX_DB_DIR to
GUIX_DATABASE_DIRECTORY.
* nix/libstore/globals.cc (Settings::processEnvironment): Likewise.
* guix/self.scm (make-config.scm): Likewise.
* build-aux/build-self.scm (make-config.scm): Likewise.
* build-aux/test-env.in: Likewise.
* tests/derivations.scm ("derivation #:leaked-env-vars"): Likewise.
* tests/guix-build.sh (GUIX_DAEMON_SOCKET): Likewise.
* tests/guix-daemon.sh (socket): Likewise.
2019-02-04 00:03:30 +01:00
Ludovic Courtès
e9dfa4d839
build-self: Execute trampoline in a clean environment.
Previously execution of the trampoline would be somewhat sensitive to
GUILE_LOAD_PATH & co., for example.

* build-aux/build-self.scm (build-program): Remove 'unsetenv' call and
%LOAD-COMPILED-PATH hack.
(call-with-clean-environment): New procedure.
(with-clean-environment): New macro.
(build): Wrap 'open-pipe*' call in 'with-clean-environment'.
2019-01-21 10:19:32 +01:00
Ludovic Courtès
c108c46fb4
build-self: Spin only on TTYs.
* build-aux/build-self.scm (build-program): Spin only when 'isatty?'
returns true.
2019-01-08 18:38:15 +01:00
Ludovic Courtès
afb82831fa
build-self: Don't clobber the output port.
The newline is meant to follow the spinner's traces so it must go to the
error port as well.

* build-aux/build-self.scm (build): Send newline to the error port.
2019-01-06 21:41:07 +01:00
Leo Famulari
d763940711
Merge branch 'master' into core-updates 2018-09-13 13:32:39 -04:00
Ludovic Courtès
ac4d2ec81a
build-self: Emit a useful message upon error.
* build-aux/build-self.scm (build): Raise a '&message' condition instead
of calling 'error'.
2018-09-13 10:29:59 +02:00
Ludovic Courtès
78c9058dde
build-self: Add a dummy (git) module to 'compute-guix-derivation'.
Fixes a regression introduced in
aed0a59405.

* build-aux/build-self.scm (build-program)[fake-git]: New variable.
Use it as an imported module.
2018-09-13 10:29:59 +02:00
Marius Bakke
0aeb134850
Merge branch 'master' into core-updates 2018-09-09 17:40:35 +02:00
Ludovic Courtès
3ffcad7df3
build-self: Accomodate upgrades from May 2016 and earlier.
Reported by Paul Garlick <pgarlick@tourbillion-technology.com>.

Fixes a bug whereby "old" Guix instances (before mid-May 2018) would
fail to pull to current master.

Specifically, Paul reported being unable to upgrade from
6f84dc4314 (a commit that predates that
addition of the 'bootstrap' phase on gnu-build-system on 'master' and
that also predates the new 'guix pull'.)

* build-aux/build-self.scm (guile-gcrypt)[arguments]: New field.
2018-09-06 12:01:39 +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
Ludovic Courtès
1428bce348
build-self: Default to Guile 2.2 when building a standalone Guix.
* build-aux/build-self.scm (build): Change #:guile-version to default to
"2.2" when PULL-VERSION is greater than 0.
2018-07-27 11:32:59 +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
790c3e019a
build-self: Inherit the daemon connection from the parent process.
Fixes <https://bugs.gnu.org/31892>.
Reported by Vagrant Cascadian <vagrant@debian.org>.

* build-aux/build-self.scm (build): Define 'port' and wrap 'open-pipe*'
call in 'with-input-from-port'.
(build-program): Use 'port->connection' or 'open-connection' instead of
'with-store.'
2018-06-26 14:27:57 +02:00
Ludovic Courtès
1f1d76a178
build-self: Avoid recompilations of 'compute-guix-derivation'.
* build-aux/build-self.scm (build-program)["compute-guix-derivation"]:
Honor the SOURCE command-line argument.  Add a VERSION command-line
argument and honor it.
(build): Pass VERSION to BUILD.
2018-06-21 23:54:15 +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
d6b5aa0b03
build-self: Do not rely on '%store-database-directory'.
Guix'es older than one week don't have this variable so requiring it
would break things for them.

* build-aux/build-self.scm (%config-variables): Remove
'%store-database-directory'.
2018-06-18 23:25:53 +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
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
f27a712840
build-self: Add missing 'close-pipe' call.
* build-aux/build-self.scm (build): Call 'close-pipe'.
2018-04-08 21:11:37 +02:00
Ludovic Courtès
f0527ce3a4
build-self: Use (guix self).
This mitigates <https://bugs.gnu.org/27284>.

* build-aux/build-self.scm (libgcrypt, zlib, gzip, bzip2, xz)
(false-if-wrong-guile, package-for-current-guile, guile-json)
(guile-ssh, guile-git, guile-bytestructures, matching-guile-2.2): Remove.
(%dependency-variables, %persona-variables, %config-variables): New
variables.
(make-config.scm, load-path-expression, gexp->script)
(build-program): New procedures.
(build): Rewrite to simply delegate to 'guix-derivation'.
2018-04-08 17:41:08 +02:00
Diego Nicola Barbato
47551a761b
pull: Update the %sbindir variable in (guix config) when building.
Fixes <https://bugs.gnu.org/30370>.

* build-aux/build-self.scm (guix): New variable.
(builder): Use it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-02-15 15:40:35 +01:00
Ludovic Courtès
cc6a4b0386
pull: Add (guix profiling) to the build environment.
Reported by Ricardo Wurmus.

* build-aux/build-self.scm (build): Add (guix profiling).
2017-12-13 17:16:40 +01:00
Ludovic Courtès
66f217b43a
pull: Build with an ABI-compatible Guile.
Fixes <https://bugs.gnu.org/29570>.
Reported by Vagrant Cascadian <vagrant@debian.org>.

* build-aux/build-self.scm (matching-guile-2.2): New procedure.
(guile-for-build): Use it.
2017-12-07 17:13:47 +01:00
Ludovic Courtès
cd295fbe17
Revert "Add (guix self) and use it when pulling."
This reverts commit 5f93d97005.

'guix pull' would fail because (guix self) needs 'scheme-files'
from (guix discovery), which was not exported until now.
2017-11-21 23:53:10 +01:00
Ludovic Courtès
5f93d97005
Add (guix self) and use it when pulling.
This mitigates <https://bugs.gnu.org/27284>.

* guix/self.scm: New file.
* Makefile.am (MODULES): Add it.
* build-aux/build-self.scm (libgcrypt, zlib, gzip, bzip2, xz)
(false-if-wrong-guile, package-for-current-guile, guile-json)
(guile-ssh, guile-git, guile-bytestructures): Remove.
(build): Rewrite to simply delegate to 'compiled-guix'.
* gnu/packages.scm (%distro-root-directory): Rewrite to try different
directories.
* guix/discovery.scm (guix): Export 'scheme-files'.
* guix/scripts/pull.scm (build-and-install): Split into...
(install-latest): ... this.  New procedure.  And...
(build-and-install): ... this, which now takes a monadic value argument.
(indirect-root-added): Remove.
(guix-pull): Call 'add-indirect-root'.  Call 'build-from-source' and
pass the result to 'build-and-install'.
2017-11-21 23:09:16 +01:00
Ludovic Courtès
ce33c3af76
pull: Add (guix build compile) to the mix.
Fixes <https://bugs.gnu.org/28956>.
Reported by Leo Famulari <leo@famulari.name>.

* build-aux/build-self.scm (build): Add (guix build compile) to
 #:modules.
* guix/build/pull.scm (build-guix): Wrap 'compile-files' call in
'with-directory-excursion'.  Strip "./" from FILES when passing it to
'compile-files'.
2017-10-23 17:08:50 -07:00
Ludovic Courtès
59a1627518
pull: Fetch source code from Git.
* guix/scripts/pull.scm (%snapshot-url, with-environment-variable)
(with-PATH): Remove.
(ensure-guile-git!): New procedure.
(%repository-url): New variable.
(%default-options): Add 'repository-url' and 'ref'.
(show-help, %options): Add '--commit' and '--url'.
(temporary-directory, first-directory, interned-then-deleted)
(unpack): Remove.
(build-from-source): Rename 'tarball' to 'source'.  Remove call to
'unpack'.
(build-and-install): Rename 'tarball' to 'source'.
(honor-lets-encrypt-certificates!, report-git-error): New procedures.
(with-git-error-handling): New macro.
(guix-pull)[fetch-tarball]: Remove.
Wrap body in 'with-git-error-handling'.  Rewrite to use
'latest-repository-commit'.
* build-aux/build-self.scm (build): Print an error message and exit when
GUILE-GIT is #f.
* doc/guix.texi (Invoking guix pull): Mention Git.  Document '--commit'
and '--branch'.
2017-08-02 00:04:00 +02:00
Mathieu Othacehe
19c90e5f69
pull: Add a dependency to guile-git.
* build-aux/build-self.scm (guile-git, guile-bytestructures): New
  variables.
  (build): Add guile-git and guile-bytestructures to %load-path and
  %load-compiled-path.
2017-06-09 09:48:26 +02:00
Ludovic Courtès
838ba73d6e
pull: Build with the matching Guile major version.
Previously, 'guix pull' would always build with Guile 2.0.
Now it builds with the Guile that matches (effective-version).

* build-aux/build-self.scm (false-if-wrong-guile)
(package-for-current-guile): New procedures.
(guile-json, guile-ssh): Use it.
(guile-for-build): New procedure.
(build): Use (effective-version) instead of the hard-coded "/2.0".
Add (guix modules) closure to #:modules argument.  Pass
\#:guile-for-build argument to 'gexp->derivation'.
* guix/build/pull.scm (depends-on-guile-ssh?, all-scheme-files): New
procedures.
(build-guix): Show the output of (version).  Use the above procedures.
Filter out files that match 'depends-on-guile-ssh?' when (ssh session)
is missing.
2017-05-09 18:08:24 +02:00
Ludovic Courtès
aa28ecc40a
pull: Hack to allow compilation with older Guile-SSH packages.
Reported by iyzsong@member.fsf.org (宋文武)
at <https://lists.gnu.org/archive/html/guix-devel/2016-11/msg01045.html>.

* build-aux/build-self.scm (build): Set 'LTDL_LIBRARY_PATH' when
GUILE-SSH has a "0.9." version prefix.
2016-11-27 23:06:09 +01:00
宋文武
5aed7f10f3
pull: Add guile-ssh to the dependencies.
Fix regression introduced in 9e76eed.

* build-aux/build-self.scm (guile-ssh): New variable.
(build)[builder]: Add 'guile-ssh' to %load-path and %load-compiled-path.
2016-11-26 22:03:23 +08:00
Ludovic Courtès
b006ba5038
pull: Update the version string.
Fixes <http://bugs.gnu.org/19278>.
Reported by Tomáš Čech <tcech@suse.cz>.

This allows 'guix --version' to return something that better represents
what version is being used.

* build-aux/build-self.scm (date-version-string): New procedure.
(build): Add #:version.
[builder]: Pass it to 'build-guix' as #:package-version.
2016-07-20 22:53:02 +02:00
Ludovic Courtès
13cee334f1
pull: Install (guix config) module to override the user's one.
* build-aux/build-self.scm (zlib, gzip, bzip2, xz): New variables.
(build)[storedir, localstatedir, sysconfdir, sbindir]: New variables.
[builder]: Pass them to 'build-guix'.
* guix/build/pull.scm (build-guix): Add #:system, #:storedir,
  #:localstatedir, #:sysconfdir, #:sbindir, #:package-name,
  #:package-version, #:bug-report-address, #:home-page-url, #:libgcrypt,
  #:zlib, #:gzip, #:bzip2, and #:xz.  Remove #:gcrypt.
  Instantiate all the substitution variables in (guix config).  Remove
  code to delete OUT/guix/config.{scm,go}.
* guix/config.scm.in: Add note about (guix script pull).
2016-07-20 22:53:02 +02:00
Ludovic Courtès
f81ac34dd9 pull: Use the build procedure provided by the newly-downloaded Guix.
Fixes <http://bugs.gnu.org/18534>.

* guix/scripts/pull.scm (with-environment-variable, with-PATH): New
  macros.
  (temporary-directory, first-directory, interned-then-deleted): New
  procedures.
  (unpack): Rewrite to do the unpacking in the current process rather
  than as a separate derivation.
  (%self-build-file): New variable.
  (build-from-source): New procedure.
  (build-and-install): Use it.
* guix/build/pull.scm (build-guix): Rename 'tarball' argument to
  'source'.  Remove #:tar and #:gzip parameters, as well as 'tar'
  invocation.  Remove 'scandir' invocation.  Wrap body in
  'with-directory-excursion'.
* build-aux/build-self.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2014-11-09 22:33:45 +01:00