There is no reason to have this diverge from the underlying cmake build
system.
* guix/build-system/qt.scm (qt-build) <#:parallel-tests?>: Default to #t.
Change-Id: I65db3d6c6727bd24549af4a44940e7362064aed6
Experience has shown that keeping too many entries increases disk usage
and, more importantly, leads to long delays when cleaning up the cache,
measured in minutes on slow or busy HDDs with hundreds of thousands of
cache entries, as is common on build machines. In those cases, the cost
of the cache outweighs its benefit.
* guix/scripts/substitute.scm (%narinfo-expired-cache-entry-removal-delay):
Reduce to 5 days.
(cached-narinfo-expiration-time)[max-ttl]: Reduce to 2 days.
Change-Id: Iab212f572ee9041be61716423a3c014f93fe81ed
Fixes a regression introduced in
275f279891.
* guix/hg-download.scm (hg-fetch-builder): Remove calls to
‘string->symbol’.
Change-Id: I2e049d1ecb8860b6f946ca51358aaba22bdc9e2e
Rather than creating a different builder in the store for every different
download (by hash), remove the hash from the builder and pass it in via an
environment variable. This means that when git-fetch is used by two different
package sources, the derivations will still differ but the builder will be
shared.
It used to be this way, but changed with
264fdbcaff. I noticed this through looking at
the same problem with svn-multi-fetch.
To try and make the effects of introducing variance in to the builder script
more obvious, separate it out in to it's own procedure, so that it's clearer
when there's new data going in that could cause variance.
* guix/git-download.scm (git-fetch/in-band*): Extract out builder script,
include hash in the derivation as an environment variable and update the
comment to be more directive.
(git-fetch-builder): New procedure.
Change-Id: I59c9fc445667c0e7dc44bcb706818300c394a1e5
Rather than creating a different builder in the store for every different
download (by hash), remove the hash from the builder and pass it in via an
environment variable. This means that when hg-fetch is used by two different
package sources, the derivations will still differ but the builder will be
shared.
Looking at the code, becuase the ref is also in the builder, the builders have
been duplicated for a while. The overhead is probably limited though since
hg-reference isn't used much compared to say svn-multi-reference.
To try and make the effects of introducing variance in to the builder script
more obvious, separate it out in to it's own procedure, so that it's clearer
when there's new data going in that could cause variance.
* guix/hg-download.scm (hg-fetch): Extract out builder script and include
hash, hg ref url, and hg ref changeset in the derivation as an environment
variables.
(hg-fetch-builder): New procedure.
Change-Id: I3c3a0b4963ea1b208bf1d5137ef98666458ae2d7
Rather than creating a different builder in the store for every different
download (by hash), remove the hash from the builder and pass it in via an
environment variable. This means that when svn-fetch is used by two different
package sources, the derivations will still differ but the builder will be
shared.
It used to be this way, but changed with
0e73f933b2. I noticed the hash in the builder
script when wondering why the build coordinator on bayfront was substituting
svn-multi-download files over and over again.
To try and make the effects of introducing variance in to the builder script
more obvious, separate it out in to it's own procedure, so that it's clearer
when there's new data going in that could cause variance.
* guix/svn-download.scm (svn-fetch): Extract out builder script, include hash
in the derivation as an environment variable and update the comment to be more
directive.
(svn-fetch-builder): New procedure.
Change-Id: I256b94666296ad747f494f0b497ca209b77fbfb4
Rather than creating a different builder in the store for every different
download (by hash), remove the hash from the builder and pass it in via an
environment variable. This means that when svn-multi-fetch is used by two
different package sources, the derivations will still differ but the builder
will be shared.
It used to be this way, but changed with
0e73f933b2. I noticed the hash in the builder
script when wondering why the build coordinator on bayfront was substituting
svn-multi-download files over and over again.
To try and make the effects of introducing variance in to the builder script
more obvious, separate it out in to it's own procedure, so that it's clearer
when there's new data going in that could cause variance.
* guix/svn-download.scm (svn-multi-fetch): Extract out builder script, include
hash in the derivation as an environment variable and update comment to be
more directive.
(svn-multi-fetch-builder): New procedure.
Change-Id: I83c60140ae09e189ee5e5428038a9428ecb8e281
* guix/transformations.scm (tuning-compiler): Adjust the wrapper script
when building for powerpc* architectures to pass the correct flags.
Change-Id: I9d809ac9b707eb8d6afa7b843c95bce29862a752
* guix/import/utils.scm (beautify-description): Append period to last
words which do not end with one.
* tests/crate.scm: Append period to descriptions.
* tests/elm.scm: Append period to descriptions.
* tests/gem.scm: Append period to descriptions.
* tests/hexpm.scm: Append period to descriptions.
* tests/minetest.scm: Append period to descriptions.
* tests/pypi.scm: Append period to descriptions.
* tests/import-utils.scm ("beautify-description: transform fragment into
sentence"): Likewise.
Change-Id: I0b12c4d94cb26cf62fab5b7cbf7885e66ff6c10f
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* guix/self.scm (translate-tmp-texi): Use po4a instead of po4a-translate.
This eliminates the po4a-translate warning; "po4a-translate is deprecated.
The unified po4a(1) program is more convenient and less error prone."
Change-Id: Id85c7478b1b237f31010994fcd2d38765993c1ad
Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de>
This brings the on disk size of the kernel from 164 MiB to 144 MiB, or about
12%.
* gnu/packages/linux.scm (default-extra-linux-options)
[version>=5.13]: Enable CONFIG_MODULE_COMPRESS_ZSTD, else
CONFIG_MODULE_COMPRESS_GZIP.
(make-linux-libre*) [phases] {set-environment}: Set ZSTD_CLEVEL environment
variable to 19.
[native-inputs]: Add zstd.
* gnu/build/linux-modules.scm (module-regex): Add .zst to regexp. Update doc.
(modinfo-section-contents): Extend support to Zstd compressed module.
(dot-ko): Register the 'zstd compression type.
(ensure-dot-ko, file-name->module-name, load-linux-module*)
(module-name->file-name/guess, write-module-name-database)
(write-module-alias-database, write-module-device-database): Update doc.
(module-name-lookup): Also consider zstd-compressed modules.
* gnu/installer.scm (installer-program): Add guile-zstd extension to gexp.
* gnu/system/linux-initrd.scm (flat-linux-module-directory): Likewise.
Decompress zstd-compressed modules for use in initrd.
* guix/profiles.scm (linux-module-database): Add guile-zstd extension to gexp.
Change-Id: Ide899dc5c58ea5033583b1a91a92c025fc8d901a
This reduces disk usage of sparse files that are substituted such as
Guile object files (ELF files). As of Guile 3.0.9, .go files are sparse
due to ELF sections being aligned on 64 KiB boundaries.
This reduces disk usage reported by “du -sh” by 9% for the ‘guix’
package, by 23% for ‘guile’, and by 35% for ‘guile-git’.
* guix/store/deduplication.scm (hole-size, find-holes): New procedures.
(tee)[seekable?]: New variable.
[read!]: Add case when SEEKABLE? is true.
* tests/store-deduplication.scm (cartesian-product): New procedure.
("copy-file/deduplicate, sparse files (holes: ~a/~a/~a)"): New test set.
Change-Id: Iad2ab7830dcb1220e2026f4a127a6c718afa8964
Fixes a bug with ‘guix shell -C …’ in cases where ‘getpwuid’
returns #f (for example because nscd isn’t running) and
‘user’ is #f.
* guix/scripts/environment.scm (launch-environment/container): Use
‘name’ when building the ‘directory’ value, not ‘user’ since it can be #f.
Change-Id: I5da807d982a1edbb4122ac29b5a1e5fc4b0ce1b7
This avoids the lint "the source file name should contain the package
name" with generated packages.
Change-Id: I61c81203d9f3cdd035e2b64a4c7a8d86d1f3dd50
Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn>
For some applications, it's important to establish a non-blocking connection
rather than just making the socket non-blocking after the connection is
established. This is because there is I/O on the socket that will block during
the handshake.
I've noticed this blocking during the handshake causing issues in the build
coordinator for example.
This commit adds a new with-store variant to avoid changing the behaviour of
with-store/open-connection to ensure that this change can't break anything
that depends on the blocking nature of the socket.
* guix/store.scm (open-unix-domain-socket, open-inet-socket): Take
#:non-blocking? and use SOCK_NONBLOCK when calling socket if appropriate.
(connect-to-daemon, open-connection, call-with-store): Take #:non-blocking?
and pass it on.
(with-store/non-blocking): New syntax rule.
* .dir-locals.el (scheme-mode): Add entry for with-store/non-blocking.
Change-Id: I8225762b78448bc1f7b698c8de5d736e13f577bf
As this avoids the indirect dependency on nss, which has a testsuite that
takes a long time to run.
* gnu/packages/package-management.scm (guix)[native-inputs]: Use po4a-minimal.
* guix/self.scm (%packages, translate-texi-manuals): Use po4a-minimal.
Change-Id: Iac7555cc850c1618d3d54f1b290faa4f9cfb4f8a
* guix/channels.scm (authenticate-channel): Handle single case with
authenticating message.
Change-Id: I7759607f37405e6d3bd4b7f5958fd11d908db204
Reviewed-by: Dale Mellor <guix-devel-0brg6a@rdmp.org>
Signed-off-by: Christopher Baines <mail@cbaines.net>
* guix/build-system/r.scm (bioconductor-uri): Use 3.19 URL.
* guix/import/cran.scm (%bioconductor-version): Set to 3.19.
Change-Id: I7a2c4dfcdb2c4cdfef581f823d87e73acc163549
Fixes a bug introduced in 402d0a9b9d
whereby labels would be added in cases like:
(inputs (list `("label" ,whatever)))
This idiom is found for example in the ‘nmon’ package.
* guix/packages.scm (add-input-labels): Call ‘maybe-add-input-labels’
instead of (map add-input-label …).
Change-Id: I3e86d4607f19482a4e461ef8e7a20cde2a41ead7
This reduces code bloat and loading overhead for package modules, which
use ‘define-public’ extensively.
* guix/packages.scm (define-public*): Use ‘define’ followed by
‘module-export!’ directly instead of ‘define-public’.
Change-Id: I7f56d46b391c1e3eeeb0b9a08a9d34b5de341245
Struct initialization uses one instruction per field, which contributes
to code bloat in the case of package modules. With this change, the
‘.rtl-text’ section of ‘gnu/packages/tex.go’ goes from 7,334,508 B to
6,356,592 B (-13%; -7% on the whole file size), which alone is still
larger than the source file (4,2 MB).
* guix/records.scm (make-syntactic-constructor)[record-inheritance]: Use
CTOR instead of ‘make-struct/no-tail’.
Pass ABI-COOKIE as the first argument to CTOR.
(define-record-type*): Define CTOR-PROCEDURE and pass it to
‘make-syntactic-constructor’.
Change-Id: Ifd7b4e884e9fbf21c43fb4c3ad963126ef5cb476
At -O1, peval does the bulk of the optimization work and it cannot
reduce things like (null? (list 1 2)), unlike what happens in CPS at
-O2. Thus, reduce the part of ‘sanitize-inputs’ that’s inlined.
* guix/packages.scm (maybe-add-input-labels): New procedure.
(sanitize-inputs): Turn into a macro; use ‘maybe-add-input-labels’.
Change-Id: Id2283bb5a2f5d714722200bdcfe0b0bfa606923f
* guix/scripts/git/authenticate.scm (install-hooks): New procedure.
(guix-git-authenticate): Use it.
* doc/guix.texi (Invoking guix git authenticate): Document it.
Change-Id: I4464a33193186e85b476a12740e54412bd58429c
Until now the command would be silent and exit with 0.
* guix/scripts/git/authenticate.scm (guix-git-authenticate): Print
something upon success.
Change-Id: I08d086c35df6ac74ee847df0479660293c68987d
This allows one to run ‘guix git authenticate’ from a sub-directory of
the checkout.
* guix/scripts/git/authenticate.scm (%default-options): Remove
‘directory’ key.
(guix-git-authenticate): Use ‘repository-discover’ when ‘directory’
option is missing.
Change-Id: Ifada00d559254971ed7eeb8c0a8d4ae74ff3defc
* guix/scripts/git/authenticate.scm (%default-options): Remove
‘keyring-reference’.
(config-value, configured-introduction, configured-keyring-reference)
(configured?, record-configuration, current-branch): New procedures.
(guix-git-authenticate)[missing-arguments]: New procedure.
Use ‘configured-introduction’ when zero arguments are given.
Use ‘configured-keyring-reference’ when ‘-k’ is not passed. Add call to
‘record-configuration’.
* doc/guix.texi (Invoking guix git authenticate): Document it.
Change-Id: I66e111a83f50407b52da71662629947f83a78bbc
Fixes a bug whereby ‘swh-download-directory-by-nar-hash’ would fail due
to ‘tar’ not being found in $PATH:
$ GUIX_DOWNLOAD_METHODS=swh guix build -S texlive-geometry --check
In execvp of tar: No such file or directory
SWH: found directory with nar-sha256 hash 217e1c8d33aa6fd063f205453a946509b059b85fa7e8d32b7e80054d5e6e5c26 at 'swh:1:dir:ccb56476fb36b2ba0298e57f2b2e69c735ac0a2f'
[…]
* guix/svn-download.scm (svn-fetch)[tar+gzip]: New variable.
[build]: Use it.
(svn-multi-fetch): Likewise.
Change-Id: I37ba9824a5feb6d38f85743519cbd2b2c3e1a9e8
* guix/import/utils.scm (beautify-description): Ensure the matched
string pre is long enough not to fail.
Change-Id: I3172d9a41350b98222cd9ab758487485f26650b3
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Previously, ‘guix pack -R’ would build a wrapper containing both the
“userns” and “fakechroot” engines, instead of providing nothing but the
“userns” engine as the manual says. This patch fixes it.
* guix/scripts/pack.scm (wrapped-package): Add #:fakechroot?
[build]: When FAKECHROOT? is false, ‘elf-loader-compile-flags’ always
returns '().
Change-Id: Ic75cc8c36bf0a3881f299b274d78bd9fc2d4e2bb
* guix/scripts/publish.scm (swallow-zlib-error): Remove.
(exception-with-kind-and-args?): New variable.
(swallow-compression-error): New macro.
(http-write): Use it instead of ‘swallow-zlib-error’.
Change-Id: I835a1eddd9686741d48365ed37f82b1e1d6f6bdd
Fixes <https://issues.guix.gnu.org/66396>.
This allows more packages to be refreshed, such as launchmon, love,
retux, preseq, edgar, antlr3, and runc.
* guix/import/github.scm (updated-github-url)[updated-url]: Add
additional heuristics to Github url updater.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: I6409b3f61872a954f53480afd63b307d16d0b9c0
This ensures (guix build syscalls) is loaded only when needed.
* guix/ui.scm (%text-width): Unconditionally alias ‘*line-width*’.
Remove initialization.
<top level>: Remove code for Guile < 2.2.7.
(package->recutils): Change default #:width to (terminal-columns).
Change-Id: I990a1b5b0f20a6243e47e314d1d3d4f8298b7151
(web …) modules pull in (gnutls) indirectly. Arrange to load them
lazily, thereby reducing I/O and allocations when GnuTLS is not needed
such as when running ‘guix describe’ or ‘guix shell’ on a cache hit.
* guix/download.scm: Autoload (web uri).
* guix/scripts/describe.scm: Likewise.
* guix/store.scm: Likewise.
(%default-substitute-urls): Remove ‘resolve-interface’ call and use
https URLs unconditionally.
Change-Id: Ide470c556a14866e8740966d25821df487a79859
Autoloading Guile-Git is important in cases where (guix channels) is
used for little more than the <channel> definition. This is the case,
for example, of ‘guix describe’ or ‘guix shell’.
This reduces from 177 to 121 the number of .go files loaded when
running:
./pre-inst-env strace -e openat -o /tmp/log.strace \
guix describe -p /var/guix/profiles/per-user/$USER/current-guix
grep 'openat.*\.go.* = [0-9]' < /tmp/log.strace |wc -l
Likewise, it reduces the max RSS (as measured by ‘time -f %M guix
describe -p …’) from 54 to 37 MiB.
* guix/channels.scm: Autoload (git …) modules.
Change-Id: Ia58a99c865bf0f6fe461a1e71390d075e760f8d6
* guix/git.scm (tag->commit): New procedure, taken from…
(resolve-reference): … here. Use it in the ‘tag’ case.
* guix/channels.scm (resolve-channel-news-entry-tag): Use ‘tag->commit’
instead of custom code.
Change-Id: I46ea387345dc1b695ce0702991a52d0cde29e2f0