Age | Commit message (Collapse) | Author |
|
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>
|
|
* guix/scripts/import.scm: (importers): Add "npm-binary".
* doc/guix.texi (Invoking guix import): Document npm-binary importer.
* guix/import/npm-binary.scm: New file.
* guix/scripts/import/npm-binary.scm: New file.
* tests/npm-binary.scm: New file.
* Makefile.am: Add them.
Co-authored-by: Timothy Sample <samplet@ngyro.com>
Co-authored-by: Lars-Dominik Braun <lars@6xq.net>
Change-Id: I98a45068cf5b9c42790664cc743feaa7ac76f807
|
|
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/import/cran.scm (%cran-url): Use mirror URL instead of primary project
domain name.
Change-Id: I23a51147d785d6cb645f953ca5ce0ff72f8bd367
|
|
* 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 402d0a9b9d290a2e3c549932c8d7262622c58ce1
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
|
|
* guix/packages.scm (add-input-labels): New procedure.
(sanitize-inputs): Add case for (list …).
Change-Id: Ice8241508ded51efd38867b97ca19c262b8c4363
|
|
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/records.scm (record-abi-mismatch-error): New procedure.
(abi-check): Use it.
Change-Id: I49936599716e117b8fbf26fb9d8f462bbbb8e88b
|
|
* 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
|
|
* Makefile.am (MODULES): Add guix/platforms/xtensa.scm.
* guix/platforms/xtensa.scm (xtensa-ath9k-elf): New variable.
* doc/guix.texi: Add xtensa-ath9k-elf documentation.
Change-Id: I51eef245142ed58613340c16d4bf7266e6bf6adb
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
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
|
|
* guix/derivations.scm: Autoload (guix utils) and (gcrypt hash).
* guix/git.scm, guix/store.scm: Autoload (gcrypt hash).
Change-Id: I6145231d41c61f2d8c36e28f29e91074910bdd15
|
|
* guix/discovery.scm, guix/git.scm, guix/nar.scm,
guix/scripts.scm, guix/scripts/build.scm: Autoload (guix build syscalls).
* guix/packages.scm: Autoload (guix build utils).
Change-Id: Ia7703b5f46e55fbfadff63b13c35bfe097ce2220
|
|
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
|
|
* guix/utils.scm: Remove re-export of ‘call-with-temporary-output-file’.
Autoload a number of modules.
* guix/download.scm, guix/import/hackage.scm,
guix/import/hexpm.scm, guix/import/opam.scm,
guix/import/pypi.scm, tests/cpio.scm, tests/egg.scm,
tests/opam.scm, tests/publish.scm, tests/store-database.scm,
tests/utils.scm: Adjust imports accordingly.
Change-Id: I3f5e94631397996a30be2ea4ff8b50a3371e8ee7
|
|
* guix/scripts/system.scm: Autoload more modules.
Change-Id: I665857109bbfd1e3755135daacc01affcb3eb2eb
|
|
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
|
|
* guix/channels.scm (commit-short-id): Move to…
* guix/git.scm (commit-short-id): … here.
Change-Id: If4b34b1d82b1aa5068d157f26e57e8aecc967061
|
|
* guix/git.scm (repository-info): New procedure.
* guix/channels.scm (repository->guix-channel): Use it instead of local
code.
Change-Id: I74c758c73a22e16031571ca4271cc9cab0492f6e
|
|
* guix/channels.scm (latest-channel-instance): Use SRFI-71.
Change-Id: I73531c98b3034e228006ed91518cc7bfedc784fd
|
|
This brings ‘gexp->file’ in line with its documentation and mirrors
what’s done for ‘gexp->script’ and ‘program-file’.
Fixes <https://issues.guix.gnu.org/69401>.
* guix/gexp.scm (gexp->file): Add #:guile, as was already documented.
(<scheme-file>)[guile]: New field.
(scheme-file): Add #:guile.
(scheme-file-compiler): Honor ‘guile’ field.
* tests/gexp.scm ("gexp->file")
("gexp->file + file-append", "gexp->file + #:splice?")
("gexp->file, cross-compilation")
("gexp->file, cross-compilation with default target")
Add #:guile to ‘gexp->file’ calls.
("gexp-modules deletes duplicates")
("gexp->derivation & with-imported-module & computed module")
("gexp->derivation & with-extensions", "scheme-file"): Likewise for
‘scheme-file’ calls.
Change-Id: I47536063d5e411e561ec321e535267e92dd06044
Reported-by: Efraim Flashner <efraim@flashner.co.il>
Change-Id: I58d653c7fbe65c665bafcbd332ac9b264ddeab64
|
|
* guix/scripts/system/reconfigure.scm (switch-system-program): Set
‘GUIX_NEW_SYSTEM’ to GENERATION rather than OS, for consistency with
what ‘boot-system’ does.
* gnu/tests/reconfigure.scm (run-switch-to-system-test)
["script activated the new generation"]: Adjust accordingly.
Change-Id: I57b693606a41b8c952df32bbdc2b9120c6dbfd6a
|
|
Public keys aren’t required for client connections, and this binding is
unused. The behavior of assuming a ".pub"-suffixed file exists in the same
directory as the secret key is undocumented and surprising.
* guix/scripts/offload.scm (open-ssh-session): Delete `public' binding.
Signed-off-by: Christopher Baines <mail@cbaines.net>
Change-Id: I9b532be2abe68dae0323e4ef6e1ceab1e5603359
|
|
To match the change in (guix store database).
* guix/nar.scm (finalize-store-file): Update path-id to valid-path-id.
Change-Id: I69255c7acc1ea4e4855a4621bfcec54f595dd24d
|
|
* guix/store/database.scm (register-valid-path): Replace "sqlite-register"
with "register-valid-path" as argument to `assert-integer'.
Change-Id: Id93687e90d0a806d715006ca0b2498a1d10cfba6
Signed-off-by: Christopher Baines <mail@cbaines.net>
|
|
* guix/scripts/system.scm (define-module): #:autoload `register-valid-path'
instead of `sqlite-register'.
(copy-item): Call it with the new name.
Change-Id: I24f71f822a5f400a47adee43f61184a4fbcb9741
Signed-off-by: Christopher Baines <mail@cbaines.net>
|
|
This follows a499d1772df63784e7df1767e58ca1dd5a4b1124 ("build: qt-utils: Use
QML_IMPORT_PATH for Qt 6.").
* guix/build/qt-utils.scm (variables-for-wrapping): Use QML_IMPORT_PATH2 when
the Qt major version is <= 6, QML_IMPORT_PATH otherwise.
Change-Id: I2dd1d426aef117105708cc4004078deaa28c15cd
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
|
Until now, ‘channel-build-system’ would assume a single channel, the
‘guix’ channel. This change lets users specify additional channels
using the #:channels parameter.
* guix/build-system/channel.scm (build-channels): Add #:channels and
honor it.
(channel-build-system): In ‘lower’, add #:channels and honor it.
* doc/guix.texi (Build Systems): Document it.
Change-Id: I36c1d19cbeee02a4d1144de089b78df0390774a0
|
|
* guix/ssh.scm (open-ssh-session): Show the port number in error message.
Change-Id: I18a3dc54223bb29782dcdd43d3252c720525c31d
|
|
* guix/build/qt-utils.scm (variables-for-wrapping): Use QML_IMPORT_PATH
instead of QML2_IMPORT_PATH when the major version is greater or equal to 6.
Change-Id: I3480b540d3c0caafd3cc3d6574442dc97f540953
|
|
These names should be more descriptive.
* guix/store/database.scm (path-id): Rename to select-valid-path-id.
(sqlite-register): Rename to register-valid-path.
(register-items): Update accordingly.
Change-Id: I6d4a14d4cde9d71ab34d6ffdbfbfde51b2c0e1db
|
|
The update-or-insert procedure name was unhelpfully generic, and these changes
should improve the code readability.
* guix/store/database.scm (update-or-insert): Remove procedure and inline
functionality in to sqlite-register.
Change-Id: Ifab0cdb7972d095460cc1f79b8b2f0e9b958059c
|
|
Especially since we're asking for these to be cached.
Management of prepared statements isn't trivial, since you don't want to keep
them forever as this can lead to poor query performance, but I don't think
that finalizing them immediately is the right solution.
Change-Id: I61706b4d09d771835bb8f074b8f6a6ee871f5e2d
* guix/store/database.scm (sqlite-step-and-reset): New procedure.
(last-insert-row, path-id, update-or-insert, add-references): Don't finalize
prepared statements.
Change-Id: I2a2c6deb43935d67df9e43000a5105343d72b3e6
|