Commit Graph

6086 Commits

Author SHA1 Message Date
Mathieu Othacehe
29a1c93b72
build-system/haskell: Fix regression.
This is a follow-up of a0f880afea.

* guix/build-system/haskell.scm (haskell-build): Correctly handle the absence
of a "cabal-revision" input.
2021-07-28 20:35:38 +02:00
Ludovic Courtès
a0f880afea
build-system/haskell: Fix regression in "cabal-revision" input handling.
Previously, (assoc-ref ...) would return a one-element list, leading to
an evaluation error while building the package ("wrong type to apply").

Regression introduced in 7d873f194c.

Reported by Marius Bakke.

* guix/build-system/haskell.scm (haskell-build)[builder]: Adjust
argument to #:cabal-revision.
2021-07-27 15:04:41 +02:00
Mathieu Othacehe
0236013cd0
build: utils: Trim leading slash from search-input-file input.
Make sure that both:

(search-input-file inputs "/bin/sh") and (search-input-file inputs "bin/sh")

are supported.

* guix/build/utils (search-input-file): Trim leading slash character from
FILE.
2021-07-25 19:13:10 +02:00
Marius Bakke
21e75f5188
build-system/cmake: Define '%build-inputs' when cross-compiling.
* guix/build-system/cmake.scm (cmake-cross-build)[builder]: Define
'%build-inputs' as it existed before
7d873f194c.
2021-07-23 17:26:45 +02:00
Maxime Devos
d7942ac12a
packages: Use 'lookup-package-input' and friends instead of 'package-input'.
* guix/packages.scm (package-input, package-native-input): Remove.
(this-package-input): Use 'lookup-package-input' and
'lookup-package-propagated-input' instead of 'package-input'.
(this-package-native-input): Use 'lookup-package-native-input'
instead of 'package-input'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-23 10:51:57 +02:00
Thiago Jung Bauermann
ee25e3fcab
gnu: TeX Live: Update to TeX Live 2021
Use version 20210325 for the tarballs, which is the latest one available on
the historical releases repository. And use subversion tag 2021.3 which is
the latest one available as well.

TeX Live dropped support for using the system’s poppler library after the
2020 version.  Quoting from `m4/kpse-xpdf-flags.m4`:

  # Support for our semi-homegrown libs/xpdf library. This is derived
  # from xpdf source code, but xpdf does not distribute it as a library.
  # It is used by pdftex (and nothing else) to read PDF images.
  # Other engines use the semi-homegrown pplib library (q.v.) for that.

  # The well-known poppler library is also originally derived from xpdf
  # source code, but has been greatly revised and extended. TL used to
  # (sort of) support poppler as the system xpdf, but after the TL 2020
  # release we dropped this, because we switched XeTeX to use pplib, and
  # nothing else used poppler. (No engines ever used poppler to generate
  # their PDF output).
  #
  # poppler is aggressively developed, with requirements for new compilers
  # and language versions. That's fine for them, but since we don't need
  # anything new, it has become too time-consuming and problematic to
  # continue to support it in the TL sources, when we don't have any
  # requirement for it.

Therefore the main change in this commit is making the texlive-bin package
use the embedded pplib and xpdf libraries.

Another noteworthy change is to texlive-latex-l3packages, which now needs
to ship a few pre-generated files that cannot be reproduced during the
build process (the comments in the package definition have more details).

* guix/build-system/texlive.scm (%texlive-tag): Set to “texlive-2021.3”.
(%texlive-revision): Set to 59745.
* gnu/packages/tex.scm (hyph-utf8-scripts, texlive-docstrip,
texlive-unicode-data texlive-hyphen-base, texlive-metafont, texlive-cm,
texlive-courier, texlive-lm, texlive-knuth-lib, texlive-tex-plain,
texlive-hyphen-finnish, texlive-hyphen-german, texlive-hyph-utf8,
texlive-dehyph-exptl, texlive-kpathsea, texlive-latex-fancyvrb,
texlive-graphics-def, texlive-latex-graphics, texlive-hyperref,
texlive-oberdiek, texlive-latex-tools, texlive-latex-l3kernel,
texlive-l3build, texlive-luaotfload, texlive-latex-amsmath, texlive-amscls,
texlive-babel, texlive-generic-babel-german, texlive-babel-swedish,
texlive-psnfss, texlive-latex-draftwatermark, texlive-latex-etoc,
texlive-etoolbox, texlive-latex-polyglossia, texlive-tex-texinfo,
texlive-latex-bookmark, texlive-latex-cmap, texlive-latex-fancyhdr,
texlive-latex-kvoptions, texlive-latex-eso-pic, texlive-latex-multirow,
texlive-latex-parskip, texlive-latex-pdfpages, texlive-metapost,
texlive-latex-acmart, texlive-latex-preview, texlive-latex-acronym,
texlive-pdftex, texlive-latex-media9, texlive-latex-ocgx2,
texlive-latex-ms, texlive-latex-pgf, texlive-latex-pgf-generic,
texlive-latex-koma-script, texlive-generic-ltxcmds, texlive-bibtex,
texlive-context-base, texlive-context, texlive-beamer, texlive-pstricks,
texlive-tools, texlive-latex-xkeyval, texlive-csquotes, texlive-biblatex,
texlive-todonotes, texlive-microtype, texlive-caption, texlive-fontaxes,
texlive-cabin, texlive-newtx, texlive-xcharter, texlive-adjustbox,
texlive-tcolorbox): Update hash.
(texlive-extra-src, texlive-texmf-src): Update version to
“20210325”. Update hash.
(texlive-bin)[source]: Update version to “20210325”. Update hash. Preserve
‘libs/pplib’ and ‘libs/xpdf’.
[inputs]: Update hash for ‘texlive-scripts’.  Remove ‘poppler’.
[arguments]: Remove “--with-system-poppler” and “--with-system-xpdf” from
‘#:configure-flags’.  Remove build phase ‘use-code-for-new-poppler’.
(texlive-hyphen-schoolfinnish): Add public variable.
(texlive-hyphen-macedonian): Add 8bit patterns.  Update hash.
(texlive-latex-base)[template]: Update hash.
[arguments]: Set ‘LUAINPUTS’ environment variable in build phase.
[native-inputs]: Update hash for ‘texlive-luatexconfig’.
[propagated-inputs]: Add ‘texlive-hyphen-schoolfinnish’,
‘texlive-latex-l3kernel’ and ‘texlive-latex-l3packages’.
(texlive-latex-l3packages)[source]: Use ‘texlive-origin’. Update hash. Add
generated files.
[arguments]: Adjust paths for ‘TEXINPUTS’ environment variable. Add build
phase ‘copy-generated-files’.
(texlive-texmf, texlive): Update version to “20210325”.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-21 15:56:03 +02:00
Thiago Jung Bauermann
04e80290bf
gnu: TeX Live: Use IniTeX to build a couple of packages
The package texlive-latex-base in TeX Live 2021 will depend on
texlive-latex-l3kernel and texlive-latex-l3packages. Therefore we need to
remove their build dependency on texlive-latex-base to avoid a circular
dependency.

l3kernel and l3packages don’t need LaTeX during build, just IniTeX.
So to make them use it, modify texlive-build-system to allow disabling
the #:texlive-latex-base and #:tex-format parameters, and also add
a #:tex-engine parameter.

We also need to add texlive-docstrip as a native input, which was
previously provided by texlive-latex-base.

* gnu/packages/tex.scm (texlive-latex-l3kernel,
texlive-latex-l3packages)[arguments]: Add ‘#:tex-engine’, ‘#:tex-format’
and ‘#:texlive-latex-base’ parameters.
[native-inputs]: Add ‘texlive-docstrip’.
* guix/build-system/texlive.scm (lower)[build-inputs]: Don’t add
‘texlive-latex-base’ if its keyword parameter is false.
(texlive-build): Add ‘tex-engine’ keyword parameter.
[builder]: If a ‘tex-engine’ parameter was passed, use it. Otherwise, use
‘tex-format’ as the engine.
* guix/build/texlive-build-system.scm (compile-with-latex): Add ‘engine’
parameter. If the ‘format’ parameter is false, add “-ini” option to the
command line.
(build): Add ‘tex-engine’ parameter. Pass it down to ‘compile-with-latex’.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-21 15:55:26 +02:00
Sarah Morgensen
81a87222a1
import: hackage: Emit new-style package inputs.
* guix/import/hackage.scm (hackage-module->sexp)[dependencies]
[native-dependencies]: Make into a list of symbols.
[maybe-inputs]: Wrap INPUTS in 'list' instead of 'quasiquote'.
* tests/hackage.scm (match-ghc-foo)
(match-ghc-foo-6)
(match-ghc-foo-revision)
(match-ghc-foo-import): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-20 23:43:29 +02:00
Sarah Morgensen
3d5a36c457
import: opam: Emit new-style package inputs.
* guix/import/opam.scm (opam->guix-package): Wrap INPUTS and
NATIVE-INPUTS in 'list' instead of 'quasiquote'.
(dependency-list->inputs): Return a list of symbols.
* tests/opam.scm ("opam->guix-package"): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-20 23:43:29 +02:00
Sarah Morgensen
fa7db21f59
import: gem: Emit new-style package inputs.
* guix/import/gem.scm (make-gem-sexp): Wrap inputs in 'list' instead of
'quasiquote'.
* tests/gem.scm ("gem->guix-package")
("gem-recursive-import"): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-20 23:43:29 +02:00
Sarah Morgensen
5b6285518b
import: egg: Emit new-style package inputs.
* guix/import/egg.scm (egg->guix-package): Generate dependency list from
a list of symbols.
[egg-parse-dependency]: Return a list of symbols.
[maybe-inputs]: Wrap INPUTS in 'list' instead of 'quasiquote'.
* tests/egg.scm (match-chicken-foo): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-20 23:43:29 +02:00
Ludovic Courtès
0e47fcced4
Merge branch 'master' into core-updates 2021-07-18 19:50:01 +02:00
Maxim Cournoyer
c170abba47
build: pack: Mute error output when checking if tar supports --sort.
* guix/build/pack.scm (tar-base-options) [tar-supports-sort?]: Redirect error
output to void.
2021-07-18 02:11:13 -04:00
Maxim Cournoyer
11f0698243
pack: Streamline how files are included in tarballs.
Thanks to Guillem Jover <guillem@debian.org> on the OFTC's #debian-dpkg
channel for helping with troubleshooting.

Letting GNU Tar recursively walk the complete files hierarchy side-steps the
risks associated with providing a list of file names:

1. Duplicated files in the archive (recorded as hard links by GNU Tar)
2. Missing parent directories.

The above would cause dpkg to malfunction, for example by aborting early and
skipping triggers when there were missing parent directories.

* guix/scripts/pack.scm (self-contained-tarball/builder): Do not call
POPULATE-SINGLE-PROFILE-DIRECTORY, which creates extraneous files such as
/root.  Instead, call POPULATE-STORE and INSTALL-DATABASE-AND-GC-ROOTS
individually to more precisely generate the file system.  Replace the list of
files by the current directory, "." and streamline the way options are passed.
* gnu/system/file-systems.scm (reduce-directories): Remove procedure.
* tests/file-systems.scm ("reduce-directories"): Remove test.
2021-07-18 02:10:49 -04:00
Maxim Cournoyer
b019496fc3
pack/deb: Add default section and priority fields to the control file.
These fields, while optional per dpkg, are required by other tools such as
reprepro, commonly used to generate apt repositories.

* guix/scripts/pack.scm (debian-archive): Set the control file section field
to 'misc' and the priority field to 'optional'.
2021-07-18 02:02:34 -04:00
Maxim Cournoyer
aeded14b83
pack: Allow embedding custom control files in deb packs.
* guix/scripts/pack.scm (self-contained-tarball/builder)
[extra-options]: New argument.
(self-contained-tarball, squashfs-image, docker-image)
(debian-archive): Likewise.  Remove two TODO comments.  Document
EXTRA-OPTIONS.  Use the custom control files when provided.
(%deb-format-options): New variable.
(show-deb-format-options, show-deb-format-options/detailed): New procedures.
(%options): Register new options.
(show-help): Augment with new usage.
(guix-pack): Validate and propagate new argument values.
* doc/guix.texi (Invoking guix pack)[deb]: Document how to list advanced
options.  Add an example.
* tests/pack.scm (deb archive...): Provide extra-options to the debian-archive
procedure, and validate that the provided files are embedded in the pack.
2021-07-18 02:02:34 -04:00
Maxim Cournoyer
15b4372b60
import: go: Fix indentation.
* guix/import/go.scm: Fix indentation.
2021-07-18 01:57:17 -04:00
Sarah Morgensen
793ba333c6
import: go: Upgrade go.mod parser.
Upgrade the go.mod parser to handle the full go.mod spec, and to gracefully
handle unexpected/malformed syntax.  Restructure parser usage, making the
parse tree available for other uses.

guix/import/go.scm (parse-go.mod): Parse using (ice-9 peg) instead of
regex matching for more robustness.  Return a list of directives.
(go.mod-directives): New procedure.
(go.mod-requirements): Likewise.
(go-module->guix-package): Use it.
(%go.mod-replace-directive-rx): Remove unused variable.
tests/go.scm (testing-parse-mod): Adjust accordingly.
(go.mod-requirements)
(fixture-go-mod-unparseable)
(fixture-go-mod-retract)
(fixture-go-mod-strings): New variables.
("parse-go.mod: simple")
("parse-go.mod: comments and unparseable lines")
("parse-go.mod: retract")
("parse-go.mod: raw strings and quoted strings")
("parse-go.mod: complete"): New tests.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-18 01:57:17 -04:00
Sarah Morgensen via Guix-patches via
5eba9c0960
import: go: Handle multiple go-import meta tags.
* guix/import/go.scm (fetch-module-meta-data): Parse all go-import meta
tags and return the first 'module-meta' with a matching import prefix.
[go-import->module-meta]: Extract parsing into new procedure.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-17 23:26:52 -04:00
Sarah Morgensen via Guix-patches via
59d20bcfcc
import: go: Fix parsing of pkg.go.dev licenses after site update.
* guix/import/go.scm (go-package-licenses): Find license names in
'h2 // div // *text*' elements rather than 'h2 // *text*' elements.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-17 22:13:39 -04:00
Hartmut Goebel
3ee0f170c8
ci: Properly construct URLs.
Implement a new function "api-url", which constructs URLs using relative URI
and "resolve-uri-reference" (which implements the algorithm specified in RFC
3986 section 5.2.2) for building the URL, instead of just appending
strings. This avoids issued if the server-url ends with a slash.

Since "api-url" uses URI-objects, it makes sense to also construct the
query-part of the URL here. For this "api-url" accepts optional
key-value-pairs.

New function "json-api-fetch" is a wrapper using "api-url".

* guix/ci.scm (api-url): New function. (build): Use it.
  (json-api-fetch): New function. (queued-builds, latest-builds,
  evaluation, latest-evaluations, evaluation-jobs: Use it.
2021-07-16 19:48:24 +02:00
Hartmut Goebel
ccdf7b8006
substitutes: Properly construct URLs.
Use relative URIs and "resolve-uri-reference" (which implements the algorithm
specified in RFC 3986 section 5.2.2) for building the URL, instead of just
appending strings. This avoids issued if the cache-url ends with a slash.

* guix/substitutes.scm (narinfo-request): Use resolve-uri-reference for
  constructing the url.
2021-07-16 19:36:11 +02:00
Hartmut Goebel
f3b20baa4d
substitute: Fix handling of short option "-h".
The short option was listed in the help-text, but not recognized.
2021-07-16 19:36:11 +02:00
Steve Sprang
423f5f867c
ui: Improve output appearance when listing generations.
* guix/ui.scm (display-profile-content-diff): Use pretty-print-table to format
output.
(display-profile-content): Likewise.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-15 16:11:47 -04:00
Steve Sprang
481d660527
package: Improve output appearance when listing packages.
* guix/scripts/package.scm (process-query): Use pretty-print-table when
listing installed and available packages.

Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-15 16:09:53 -04:00
Steve Sprang
b73b9aae0d
utils: Add a procedure for pretty printing tabular data.
* guix/utils.scm (pretty-print-table): New procedure.

Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-15 16:09:53 -04:00
Maxime Devos
8456581375
build-system/meson: Support cross-compilation.
For cross-compilation, meson needs to be passed a
‘cross file’ with information on the architecture,
CPU type, endianness and operating system, and the
name of the cross-compiler binaries.

The new module (guix build meson-configuration) has
some utilities for writing these cross files, used
by 'make-cross-file' in a G-exp.  The values for
the cross file are generated by 'make-machine-alist'
and 'make-binaries-alist'.

'make-machine-alist' and 'make-binaries-alist' live
on the host side, such that new architectures and operating
systems can be added without causing rebuilds for old
architectures.

All operating systems and targets supported by Guix are
theoretically supported, but only aarch64-linux-gnu,
powerpc64le-linux-gnu and arm-linux-gnueabihf have been
tested.  i686-linux-gnu has also been tested with a previous
version of this patch series but required some changes
to 'cross-base.scm'.

This has been tested with:

$ ./pre-inst-env guix build glib --target=TARGET

* guix/build/meson-configuration.scm
  (write-section-header): New procedure.
  (write-assignment): New procedure.
  (write-assignments): New procedure.
* guix/build-system/meson.scm
  (target-hurd?): New predicate.
  (make-machine-alist): New procedure.
  (make-binaries-alist): New procedure.
  (make-cross-file): New procedure.
  (meson-cross-build): New procedure.
  (lower)[build-inputs]: Add standard cross packages when cross-compiling.
  Do not include regular 'inputs' when cross-compiling.
  (lower)[host-inputs]: Include 'inputs' when cross-compiling.
  (lower)[target-inputs]: Add cross packages when cross-compiling.
  (lower)[build]: Call 'meson-cross-build' instead of 'cross-build'
  when cross-compiling.
  (lower)[target]: Set it.
  (lower)[private-keywords]: Do not remove #:target when cross-compiling.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:57:40 +02:00
Maxime Devos
aaf9aa4824
packages: Define this-package-input and this-package-native-input.
These macros are intended to be used in build phases.
More precisely, (assoc-ref %build-inputs "input") can be
replaced by #$(this-package-input "input") or #+(this-package-native-input
"native-input") as appropriate.

* guix/packages.scm
  (package-input, package-native-input): New (unexported) procedures.
  (this-package-input, this-package-native-input): New macros.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:57:39 +02:00
Maxime Devos
f54852be22
utils: Define a target-x86-32? and target-x86-64? predicate.
* guix/utils.scm (target-x86-32?, target-x86-64?): New predicates.
* tests/utils.scm ("target-x86-32?", "target-x86-64?"): New tests.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:38:03 +02:00
Maxime Devos
42e4118150
utils: Give 'target-mingw?' a docstring.
target-hurd? and target-linux? have docstrings, but
target-mingw? doesn't.

* guix/utils.scm (target-mingw?): Add a docstring.

Reported-By: Mathieu Othacehe <othacehe@gnu.org>
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:38:03 +02:00
Maxime Devos
637a1e7dcc
utils: Define 'target-hurd?' predicate.
It behaves similarily to the other target-...? procedures.
The usage of hurd-triplet? / target-hurd? in libgc appears
incorrect to me, as (%current-system) is normally never false.

* gnu/packages/hurd.scm (hurd-triplet?): Move to ...
* guix/util.scm (target-hurd?): ... here, let its argument
  default to (%current-target-system) or (%current-system),
  and write a docstring.
* gnu/packages/hurd.scm
  (hurd-target?, hurd-system?): Use target-hurd? instead of
  hurd-triplet?.
* gnu/packages/bdw-gc.scm (libgc): Likewise.
* gnu/packages/cross-base.scm
  (cross-libc)[arguments]<#:configure-flags>: Likewise.
  (cross-libc)[arguments]<#:phases>: Likewise.
  (cross-libc)[arguments]<#:native-inputs>: Likewise.
* gnu/packages/make-boostrap.scm
  (%glibc-stripped)[inputs]: Likewise.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:38:03 +02:00
Maxime Devos
ef71965c16
utils: Define 'target-linux?' predicate.
* guix/utils.scm (target-linux?): New predicate.
* tests/utils.scm
  ("target-linux?"): Test it.
  ("target-mingw?"): Also test ‘target-mingw?’.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:38:03 +02:00
Brice Waegeneire
edb328ad83
lint: Check for leading whitespace in description.
* guix/lint.scm (check-description-style): Check for leading whitespace.
* tests/lint.scm: ("description: leading whitespace"): New test.
2021-07-13 07:25:05 +02:00
Ludovic Courtès
ab270bf2e9
import: elpa: Emit new-style package inputs.
* guix/import/elpa.scm (elpa-package->sexp)[dependencies]: Turn into a
list of symbols.
[maybe-inputs]: Wrap in 'list' instead of 'quasiquote'.
2021-07-11 00:49:16 +02:00
Ludovic Courtès
ff992fcfaf
import: print: Emit new-style package inputs when possible.
* guix/import/print.scm (redundant-input-labels?): New procedure.
(package->code)[package-lists->code]: Rename to...
[inputs->code]: ... this.  When 'redundant-input-labels?' returns true,
emit label-less inputs.  Adjust callers to new name.
* tests/print.scm (pkg-with-inputs): Adjust accordingly.
2021-07-11 00:49:16 +02:00
Ludovic Courtès
aa6921634b
import: cran: Emit new-style package inputs.
* guix/import/cran.scm (format-inputs): Emit symbols or
'specification->package' calls.
(maybe-inputs): Wrap in 'list' instead of 'quasiquote'.
* tests/cran.scm ("description->package"): Adjust accordingly.
2021-07-11 00:49:16 +02:00
Ludovic Courtès
52a9a0712a
import: pypi: Emit new-style package inputs.
* guix/import/pypi.scm (maybe-inputs): Wrap PACKAGE-INPUTS in 'list'
instead of 'quasiquote'.
(compute-inputs)[requirement->package-name/sort]: Return a list of symbols.
* tests/pypi.scm ("pypi->guix-package, no wheel")
("pypi->guix-package, wheels"): Adjust accordingly.
2021-07-11 00:49:15 +02:00
Ludovic Courtès
7b7b8c909b
packages: 'hidden-package' inherits the original package location.
* guix/packages.scm (hidden-package): Inherit 'location' from P.
2021-07-11 00:49:15 +02:00
Ludovic Courtès
f23803af20
Add 'guix style'.
* guix/scripts/style.scm, tests/style.scm: New files.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* po/guix/POTFILES.in: Add 'guix/scripts/style.scm'.
* doc/guix.texi (Invoking guix style): New node.
(package Reference): Reference it.
(Invoking guix lint): Likewise.
2021-07-11 00:49:15 +02:00
Ludovic Courtès
73b08ad1a3
utils: 'edit-expression' copies part of the original source map.
* guix/utils.scm (source-location-key/stamp): New procedure.
(go-to-location): Use it.
(move-source-location-map!): New procedure.
(edit-expression): Call it.
2021-07-11 00:49:15 +02:00
Ludovic Courtès
f05433f208
utils: 'edit-expression' modifies the file only if necessary.
* guix/utils.scm (edit-expression): Check whether STR* equals STR.
2021-07-11 00:49:15 +02:00
Ludovic Courtès
ef1432f064
utils: Add 'go-to-location' with source location caching.
* guix/utils.scm (%source-location-map): New variable.
(go-to-location): New procedure.
(edit-expression): Use it instead of custom loop.
* guix/packages.scm (package-field-location)[goto]: Remove.
Use 'go-to-location' instead of 'goto'.
2021-07-11 00:49:15 +02:00
Ludovic Courtès
4dcc606766
utils: 'edit-expression' no longer leaks file ports.
* guix/utils.scm (edit-expression): Use 'call-with-input-file' to make
sure IN gets closed.
2021-07-11 00:49:14 +02:00
Ludovic Courtès
04b2f3dd80
packages: Add 'modify-inputs'.
* guix/packages.scm (inputs-sans-labels, replace-input): New procedures.
(prepend, replace, modify-inputs): New macros.
* doc/guix.texi (Defining Package Variants): Document 'modify-inputs'.
* dir-locals.el: Add 'modify-inputs' and its keywords.
2021-07-11 00:49:14 +02:00
Ludovic Courtès
ba32f63638
packages: Add 'lookup-package-input' & co.
* guix/packages.scm (lookup-input, lookup-package-input)
(lookup-package-native-input, lookup-package-propagated-input)
(lookup-package-direct-input): New procedures.
* doc/guix.texi (package Reference): Document them.
2021-07-11 00:49:14 +02:00
Ludovic Courtès
b7f1b4c1d0
lint: Add 'input-labels' checker.
* guix/lint.scm (check-input-labels): New procedure.
(%local-checkers): Add 'input-labels' checker.
* tests/lint.scm ("input labels: no warnings")
("input labels: one warning"): New tests.
* doc/guix.texi (Invoking guix lint): Mention it.
2021-07-11 00:49:14 +02:00
Ludovic Courtès
8524349f78
packages: Allow inputs to be plain package lists.
* guix/packages.scm (add-input-label, sanitize-inputs): New procedures.
(<package>)[inputs, propagated-inputs, native-inputs]: Add 'sanitize' property.
* doc/guix.texi (Defining Packages, package Reference):
(Defining Package Variants): Adjust examples accordingly.
* tests/packages.scm ("transaction-upgrade-entry, zero upgrades, propagated inputs")
("transaction-upgrade-entry, grafts")
("package-transitive-inputs")
("package-transitive-supported-systems")
("package-closure")
("supported-package?")
("package-derivation, inputs deduplicated")
("package-transitive-native-search-paths")
("package-grafts, indirect grafts")
("package-grafts, indirect grafts, propagated inputs")
("package-grafts, same replacement twice")
("package-grafts, dependency on several outputs")
("replacement also grafted")
("package->bag, sensitivity to %current-target-system")
("package->bag, propagated inputs")
("package->bag, sensitivity to %current-system")
("package-input-rewriting/spec, identity")
("package-input-rewriting, identity"): Use the label-less input style.
2021-07-11 00:49:14 +02:00
Ludovic Courtès
8be1632199
records: Support field sanitizers.
* guix/records.scm (make-syntactic-constructor): Add #:sanitizers.
[field-sanitizer]: New procedure.
[wrap-field-value]: Honor F's sanitizer.
(define-record-type*)[field-sanitizer]: New procedure.
Pass #:sanitizer to 'make-syntactic-constructor'.
* tests/records.scm ("define-record-type* & sanitize")
("define-record-type* & sanitize & thunked"): New tests.
2021-07-11 00:49:14 +02:00
Ludovic Courtès
cf88c967af
self: Remove stale comment about "mmap(PROT_NONE) failed" crash.
This crash was fixed by 0aef94e7bc, itself
a followup to 47d48f0c43.

* guix/self.scm (translate-texi-manuals)[build]: Remove reference to the
PROT_NONE bug.
2021-07-09 17:33:46 +02:00
Ludovic Courtès
609e66e45f
Revert "self: Build translated manuals with a single process."
This reverts commit af2d6ec092, which the
parent commit makes unnecessary.
2021-07-09 17:33:46 +02:00