summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
...
* weather: Only show request statistics when requests were made.Christopher Baines2021-03-17
| | | | | | | This avoids the script crashing if all data is fetched from the cache. * guix/scripts/weather.scm (report-server-coverage): Only show request statistics when some requests have been made.
* import: gnome: Silence URL redirect messages.Ludovic Courtès2021-03-17
| | | | | * guix/import/gnome.scm (latest-gnome-release): Pass #:log-port to 'http-fetch/cached'.
* http-client: 'http-fetch' and 'http-fetch/cached' accept #:log-port.Ludovic Courtès2021-03-17
| | | | | * guix/http-client.scm (http-fetch, http-fetch/cached): Add #:log-port and honor it.
* import: gnome: Exclude version numbers that do not start with a digit.Ludovic Courtès2021-03-17
| | | | | | | Fixes a bug whereby NetworkManager would be updated to version "rc2". * guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]: Change catch-all case to return #f when the first part is not a digit.
* scripts: weather: Provide more representative request statistics.Christopher Baines2021-03-17
| | | | | | | | | | Previously, the "seconds per request" and "requests per second" statistics really reported (cache lookups + requests) per second. By looking at the actual number of requests made within lookup-narinfos, a more representative value can be reported. * guix/scripts/weather.scm (let/time): Allow for multiple return values. (report-server-coverage): Alter the reporting of request statistics.
* substitutes: lookup-narinfos: Return the number of requests made.Christopher Baines2021-03-17
| | | | | | | | | As an additional value, in addition to the narinfos. This value is useful in the weather script for reporting how many requests to the substitute server were made. * guix/substitutes.scm (lookup-narinfos): Additionally return the number of requests made.
* scripts: substitute: Tweak error reporting in process-substitution.Christopher Baines2021-03-17
| | | | | | | | | | | | | | | The call-with-connection-error-handling was added in 20c08a8a45d0f137ead7c05e720456b2aea44402, but that error handling was previously inside of open-connection-for-uri/maybe, which is related to (call-)with-cached-connection which was used in process-substitution, but only actually used with call-with-cached-connection when used in fetch-narinfos. There's some handling for similar errors within with-networking, which is used within process-substitution. * guix/scripts/substitute.scm (process-substitution): Remove call-with-connection-error-handling call.
* scripts: substitute: Add back some error handling.Christopher Baines2021-03-17
| | | | | | | | | | | | | | In f50f5751fff4cfc6d5abba9681054569694b7a5c, the way fetch was called within process-substitution was changed. As call-with-cached-connection actually includes important error handling for the opening of a HTTP request, this change removed some error handling. This commit adds that back. Fixes <https://bugs.gnu.org/47157>. * guix/scripts/substitute.scm (call-with-cached-connection): New procedure. (with-cached-connection): New syntax rule. (process-substitution): Retry once for some errors when making HTTP requests to fetch substitutes.
* gnu-maintenance: Add a timeout on FTP connection establishment.Ludovic Courtès2021-03-17
| | | | | * guix/gnu-maintenance.scm (latest-ftp-release): Pass #:timeout to 'ftp-open'.
* gnu-maintenance: Remove unused parameters of 'latest-ftp-release'.Ludovic Courtès2021-03-17
| | | | | * guix/gnu-maintenance.scm (latest-ftp-release): Remove #:ftp-open, #:ftp-close, and #:keep-file?.
* gnu-maintenance: Add 'generic-html' updater.Ludovic Courtès2021-03-17
| | | | | | | | | | | This brings total updater coverage, as reported by 'guix refresh --list-updaters', from 78% to 88.3%. Among many other things, it covers freedesktop.org packages. * guix/gnu-maintenance.scm (html-updatable-package?) (latest-html-updatable-release): New procedures. (%generic-html-updater): New variable. * doc/guix.texi (Invoking guix refresh): Document it.
* gnu-maintenance: 'latest-html-release' better computes version number.Ludovic Courtès2021-03-17
| | | | | | | | * guix/gnu-maintenance.scm (latest-html-release): Use 'tarball->version' rather than 'package-name->name+version' to extract the version number. This fixes problems with packages like 'netsurf' and 'libdom' that have "-src" in their tarball name, where "src" would be taken as the new version number.
* gnu-maintenance: 'latest-html-release' can determine signature file name.Ludovic Courtès2021-03-17
| | | | | | | | | | | * guix/gnu-maintenance.scm (latest-html-release): #:file->signature defaults to #f. [file->signature/guess]: New procedure. [url->release]: Use it when FILE->SIGNATURE is #f. Introduce 'links' variable. (url-prefix-rewrite): Check whether URL is true before calling 'string-prefix?'. (latest-savannah-release): Adjust comment about detached signatures.
* gnu-maintenance: 'release-file?' rejects checksum files.Ludovic Courtès2021-03-17
| | | | | * guix/gnu-maintenance.scm (release-file?): Reject ".md5sum", ".sha1sum", and ".sha256sum".
* gnu-maintenance: 'latest-html-release' considers non-relative URLs.Ludovic Courtès2021-03-17
| | | | | * guix/gnu-maintenance.scm (latest-html-release): Allow for URL to be an arbitrary URL rather than a relative URL reference.
* gnu-maintenance: Use (htmlprag) for 'latest-html-release'.Ludovic Courtès2021-03-17
| | | | | | | * guix/gnu-maintenance.scm (html->sxml): Remove. Autoload (htmlprag) instead. * doc/guix.texi (Requirements): Mention 'guix refresh' for the Guile-Lib dependency.
* gnu: Use PACKAGE/INHERIT in more places.Mark H Weaver2021-03-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/packages/algebra.scm (fftwf, fftw-openmpi), gnu/packages/audio.scm (ztoolkit-rsvg), gnu/packages/bioinformatics.scm (python2-dendropy), gnu/packages/boost.scm (boost-with-python2), gnu/packages/check.scm (python2-mock, python2-pytest-mock), gnu/packages/cups.scm (hplip-minimal), gnu/packages/freedesktop.scm (libinput-minimal), gnu/packages/gettext.scm (gnu-gettext), gnu/packages/glib.scm (python2-pygobject), gnu/packages/gnome.scm (gdl-minimal, libsoup-minimal, python2-pyatspi), gnu/packages/groff.scm (groff-minimal), gnu/packages/jami.scm (ffmpeg-jami), gnu/packages/libcanberra.scm (libcanberra/gtk+-2), gnu/packages/lirc.scm (python2-lirc), gnu/packages/llvm.scm (clang-runtime-3.5), gnu/packages/mpi.scm (java-openmpi, openmpi-thread-multiple), gnu/packages/node.scm (libnode), gnu/packages/onc-rpc.scm (libtirpc/hurd), gnu/packages/python-compression.scm (bitshuffle-for-snappy), gnu/packages/python-crypto.scm (python2-pycrypto, python2-cryptography) (python2-cryptography, python2-m2crypto), gnu/packages/python-web.scm (python2-html2text, python2-tornado) (python2-terminado, python2-ndg-httpsclient, python2-websocket-client) (python2-rauth, python2-url, python2-s3transfer), gnu/packages/python-xyz.scm (python2-psutil, python2-serpent) (python2-humanfriendly, python2-empy, python2-parse-type, python2-polib) (python2-jsonschema, python2-pystache, python2-cython, python2-numpydoc) (python2-ipyparallel, python2-traitlets, python2-dbus) (python2-beautifulsoup4, python2-pep517, python2-flake8, python2-llfuse) (python2-tlsh, python-file, python2-notebook, python-jupyter-console-minimal) (python2-contextlib2, python2-promise, python2-anyjson, python2-amqp) (python2-kombu, python2-billiard, python2-celery, python2-whoosh) (python2-jellyfish, python-rope, ptpython-2, python2-binaryornot) (python2-setproctitle, python2-argcomplete, python2-xopen, python2-isort) (python2-radon, python2-rfc6555, python2-activepapers, python2-send2trash) (python2-cloudpickle, python2-reparser), gnu/packages/python.scm (python2-called-python), gnu/packages/qt.scm (python2-sip, python-pyqt-without-qtwebkit, python2-pyqt) (python-qscintilla, python-pyqt+qscintilla), gnu/packages/scanner.scm (sane-backends), gnu/packages/sdl.scm (guile3.0-sdl2), gnu/packages/selinux.scm (checkpolicy, libselinux, libsemanage, secilc) (python-sepolgen, policycoreutils), gnu/packages/serialization.scm (lua5.1-libmpack, lua5.2-libmpack), gnu/packages/simulation.scm (fenics), gnu/packages/statistics.scm (python2-statsmodels), gnu/packages/texinfo.scm (info-reader), gnu/packages/wxwidgets.scm (wxwidgets-gtk2, wxwidgets-gtk2-3.1), gnu/packages/xml.scm (xmlsec-nss), gnu/packages/xorg.scm (uim-gtk, uim-qt), guix/build-system/python.scm (package-with-explicit-python) (strip-python2-variant): Use PACKAGE/INHERIT.
* syscalls: mounts: Fix a matching bug.Chris Marusich2021-03-15
| | | | | | | | | | | | | | | | | | On some systems, the columns in /proc/self/mountinfo look like this: 23 28 0:21 / /proc rw,nosuid,nodev,noexec,relatime shared:11 - proc proc rw Before this change, the mounts procedure was written with the assumption that the type and source could always be found in columns 8 and 9, respectively. However, the proc(5) man page explains that there can be zero or more optional fields starting at column 7 (e.g., "shared:11" above), so this assumption is false in some situations. * guix/build/syscalls.scm (mounts): Update the match pattern to use ellipsis to match zero or more optional fields followed by a single hyphen. Remove the trailing ellipsis, since multiple ellipses are not allowed in the same level. The proc(5) man page indicates that there are no additional columns, so it is probably OK to match an exact number of columns at the end like this.
* build-system/cargo: Don't clobber packaged crates while building.Efraim Flashner2021-03-15
| | | | | | | | This fixes an issue where two packages share a common dependent. * guix/build/cargo-build-system.scm (unpack-rust-crates): Only copy rust crates into the target directory if there isn't one already there with the same name.
* build-system/cargo: Propagate crates across builds.Efraim Flashner2021-03-14
| | | | | | | | | | | * guix/build-system/cargo.scm (cargo-build): Add cargo-package-flags, install-source flags. * guix/build/cargo-build-system.scm (unpack-rust-crates, package): New procedures. (install): Also install crate sources. (%standard-phases): Add new phases. * doc/guix.texi (Packaging-guidelines)[Rust Crates]: Adjust to changes in the cargo-build-system.
* gnu-maintenance: Autoload (zlib).Ludovic Courtès2021-03-13
| | | | * guix/gnu-maintenance.scm: Autoload (zlib).
* inferior: Add <inferior> printer.Ludovic Courtès2021-03-13
| | | | | | | This avoids printing the whole package table in backtraces and such. * guix/inferior.scm (write-inferior): New procedure. <top level>: Call 'set-record-type-printer!'.
* utils: Use Guile-zlib for gzip compression and decompression.Ludovic Courtès2021-03-12
| | | | | | | | | | Fixes <https://bugs.gnu.org/46967>. * guix/utils.scm (decompressed-port): Call 'make-zlib-input-port' instead of invoking %GZIP. (compressed-output-port): Call 'make-zlib-output-port' instead of invoking %GZIP. * doc/guix.texi (Requirements): Require Guile-zlib >= 0.1.0.
* time-machine: Fail when unrecognized option.zimoun2021-03-11
| | | | | | * guix/scripts/time-machine (parse-args): Fail when unrecognized option. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* download: 'tls-wrap' returns an unbuffered custom port.Ludovic Courtès2021-03-11
| | | | | | | | Partly fixes <https://bugs.gnu.org/46967>. * guix/build/download.scm (tls-wrap)[unbuffered]: New procedure. Pass the result of 'make-custom-binary-input/output-port' to 'unbuffered'.
* download: 'tls-wrap' avoids intermediate buffer.Ludovic Courtès2021-03-11
| | | | | * guix/build/download.scm (tls-wrap)[read!]: Read straight into BV instead of calling 'get-bytevector-some' and 'unget-bytevector'.
* syscalls: Define the ST_* constants and add 'statfs-flags->mount-flags'.Ludovic Courtès2021-03-10
| | | | | | | | | * guix/build/syscalls.scm (linux?): New variable. (define-statfs-flags): New macro. (ST_RDONLY, ST_NOSUID, ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS) (ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, ST_NOATIME) (ST_NODIRATIME, ST_RELATIME): New variables. (statfs-flags->mount-flags): New procedure.
* import: go: Compute the hash of Git checkouts.Ludovic Courtès2021-03-10
| | | | | | * guix/import/go.scm (vcs-file?, file-hash, git-checkout-hash): New procedures. (vcs->origin): Use 'git-checkout-hash' in the 'git case.
* import: Add Go importer.Katherine Cox-Buday2021-03-10
| | | | | | | | | | | | | | | | | | | | | | | | This patch adds a 'guix import go' command. * doc/guix.texi (Requirements): Mention Guile-Lib dependency. (Invoking guix import): Document 'guix import go'. * gnu/packages/package-management.scm (guix)[inputs, propagated-inputs]: Add GUILE-LIB. * guix/self.scm (compiled-guix)[guile-lib]: New variable. [dependencies]: Add it. (specification->package): Add "guile-lib". * guix/build-system/go.scm (go-version->git-ref): New procedure. * guix/import/go.scm, guix/scripts/import/go.scm, tests/go.scm: New files. * guix/scripts/import.scm: Declare subcommand guix import go * po/guix/POTFILES.in: Add 'guix/scripts/import/go.scm'. * Makefile.am (MODULES): Add 'guix/import/go.scm' and 'guix/scripts/import/go.scm'. (SCM_TESTS): Add 'tests/go.scm'. Co-Authored-By: Helio Machado <0x2b3bfa0@gmail.com> Co-Authored-By: Francois Joulaud <francois.joulaud@radiofrance.com> Co-Authored-By: Maxim Cournoyer <maxim.cournoyer@gmail.com> Co-Authored-by: Ludovic Courtès <ludo@gnu.org>
* channels: Add the channel branch in sexp->channel.Mathieu Othacehe2021-03-10
| | | | * guix/channels.scm (sexp->channel): Add the channel branch.
* inferior: Use a safe symlink monadic procedure.Mathieu Othacehe2021-03-10
| | | | | | | This is a follow-up of 6ee7e3d26b8f5d2a234518cc2ab1bfeba7cd7c18. * guix/inferior.scm (cached-channel-instance): Introduce "symlink/safe" and use it instead of symlink. Remove the duplicated "file-exists?" call.
* Revert "inferior: Break cached-channel-instance into two procedures."Mathieu Othacehe2021-03-10
| | | | | | This reverts commit 7d63b775513e7049047222dbe403a4181f63828d because it raises some concerns, see: https://lists.gnu.org/archive/html/guix-devel/2021-03/msg00124.html.
* ci: Remove hydra support.Mathieu Othacehe2021-03-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes hydra support to use Cuirass as the only continuous integration system. * build-aux/hydra/gnu-system.scm: Remove it. * build-aux/hydra/guix-modular.scm: Ditto. * build-aux/hydra/guix.scm: Ditto. * build-aux/cuirass/hydra-to-cuirass.scm: Ditto. * Makefile.am (EXTRA_DIST): Update it. (hydra-jobs.scm): Remove it. (cuirass-jobs.scm): Update it. * build-aux/hydra/evaluate.scm: Move it to ... * build-aux/cuirass/evaluate.scm: ... here. * build-aux/cuirass/guix-modular.scm: Remove it. * build-aux/cuirass/gnu-system.scm: Ditto. * guix/packages.scm (%hydra-supported-systems): Rename it to ... (%cuirass-supported-systems): ... this variable. * build-aux/check-final-inputs-self-contained: Adapt it. * etc/release-manifest.scm: Ditto. * gnu/ci.scm (package->alist): Remove it. (derivation->job): New procedure. (package-job, package-cross-job, cross-jobs, image-jobs, system-test-jobs, tarball-jobs): Use it. (guix-jobs): New procedure. (hydra-jobs): Rename it to ... (cuirass-jobs): ... this procedure.
* channels: Export channel-instance->sexp.Mathieu Othacehe2021-03-10
| | | | * guix/channels.scm (channel-instance->sexp): Export it.
* inferior: Fix concurrent cached-profile calls.Mathieu Othacehe2021-03-10
| | | | | * guix/inferior.scm (cached-profile): Do not create the profile symlink if it already exists.
* inferior: Break cached-channel-instance into two procedures.Mathieu Othacehe2021-03-10
| | | | | | | | | | | Break cached-channel-instance into two different procedures: channels->cached-profile and instances->cached-profile operating respectively on channels and channels instances. * guix/inferior.scm (cached-channel-instance): Rename it into ... (cached-profile): ... this new procedure. (channels->cached-profile, instances->cached-profile): New procedures. * guix/scripts/time-machine.scm (guix-time-machine): Adapt accordingly.
* weather: Call lookup-narinfos with a custom progress reporter.Christopher Baines2021-03-09
| | | | | | | This means there's a useful progress bar when running guix weather. * guix/scripts/weather.scm (report-server-coverage): Pass #:make-progress-reporter to lookup-narinfos.
* guix: substitutes: Make progress reporting configurable.Christopher Baines2021-03-09
| | | | | | | | | | | | | | | | | | | | | | | | | Rather than always outputting to (current-error-port) in lookup-narinfos (which is called from within lookup-narinfos/diverse), take a procedure which should return a progress reporter, and defer any output to that. As this is now general purpose code, make the default behaviour to output nothing. Maintain the current behaviour of the substitute script by moving the progress reporter implementation there, and passing it in when calling lookup-narinfos/diverse. These changes should be generally useful, but I'm particularly looking at getting guix weather to do progress reporting differently, with this new flexibility. * guix/substitutes.scm (fetch-narinfos): Take a procedure to make a progress-reporter, and use that rather than the hardcoded behaviour. (lookup-narinfos): Add #:make-progress-reporter keyword argument, and pass this through to fetch-narinfos. (lookup-narinfos/diverse): Add a #:make-progress-reporter keyword argument, and pass this through to lookup-narinfos. * guix/scripts/substitute.scm (process-query): Pass a progress-reporter to lookup-narinfos/diverse.
* scripts: system: Activate system when switching generations.Brice Waegeneire2021-03-09
| | | | | | | | | Fixes <https://bugs.gnu.org/38884>. * guix/scripts/system.scm (switch-to-system-generation): Load the activate script for that generation. squash! scripts: system: Activate system when switching generations.
* licenses: Add Zero-Clause BSD License.Alexandros Theodotou2021-03-06
| | | | | | * guix/licenses.scm (bsd-0): New variable. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* tests: do not hard code HTTP portsMaxime Devos2021-03-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, test cases could fail if some process was listening at a hard-coded port. This patch eliminates most of these potential failures, by automatically assigning an unbound port. This should allow for building multiple guix trees in parallel outside a build container, though this is currently untested. The test "home-page: Connection refused" in tests/lint.scm still hardcodes port 9999, however. * guix/tests/http.scm (http-server-can-listen?): remove now unused procedure. (%http-server-port): default to port 0, meaning the OS will automatically choose a port. (open-http-server-socket): remove the false statement claiming this procedure is exported and also return the allocated port number. (%local-url): raise an error if the port is obviously unbound. (call-with-http-server): set %http-server-port to the allocated port while the thunk is called. * tests/derivations.scm: adjust test cases to use automatically assign a port. As there is no risk of a port conflict now, do not make any tests conditional upon 'http-server-can-listen?' anymore. * tests/elpa.scm: likewise. * tests/lint.scm: likewise, and add a TODO comment about a port that is still hard-coded. * tests/texlive.scm: likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* Revert "tests: Refer to '%derivation-cache' in the right module."Ludovic Courtès2021-03-06
| | | | | | This reverts commit b1248016e0492e1897f4d1127ccb07736c9bb6a5, which was a mistake: the two '%derivation-cache' are two different things. It broke tests that use 'call-with-external-store'.
* guix: Split (guix substitutes) from (guix scripts substitute).Christopher Baines2021-03-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means there's a module for working with substitutes, rather than all the code sitting in the script. The need for this can be seen with the weather and challenge scripts, that now don't have to use code from the substitute script, but can instead use the substitute module. The separation here between the actual functionality of the substitute script and the underlying functionality used both there and elsewhere should make maintenance easier moving forward. This commit just moves code, none of the code should have been changed significantly. * guix/scripts/substitute.scm (%narinfo-cache-directory, %narinfo-ttl, %narinfo-negative-ttl, %narinfo-transient-error-ttl, %unreachable-hosts): Move variables to guix/substitutes.scm. (narinfo-cache-file, cached-narinfo, cache-narinfo!, narinfo-request, read-to-eof, call-with-connection-error-handling, fetch-narinfos, lookup-narinfos, lookup-narinfos/diverse): Move procedures to guix/substitutes.scm. * guix/substitutes.scm: New file. * Makefile.am: Add it. * guix/narinfo.scm: Remove redundant module. * guix/scripts/challenge.scm: Change (guix scripts substitute) to (guix substitutes). * guix/scripts/weather.scm: Change (guix scripts substitute) to (guix substitutes).
* pull: Expand help text for --{url,commit,branch}.Tobias Geerinckx-Rice2021-03-05
| | | | | * guix/scripts/pull.scm (show-help): Document that ‘--url’, ‘--commit’, and ‘--branch’ affect only the ‘guix’ channel (for now?).
* tests: Refer to '%derivation-cache' in the right module.Ludovic Courtès2021-03-05
| | | | | * guix/tests.scm (call-with-external-store): Fix module name for '%derivation-cache'.
* download: 'url-fetch/tarbomb' and 'url-fetch/zipbomb' refer to native tools.Ludovic Courtès2021-03-05
| | | | | | * guix/download.scm (url-fetch/tarbomb, url-fetch/zipbomb): Use 'ungexp-native' instead of 'ungexp' when referring to the decompression tools.
* gexp: Honor #:target in 'compiled-modules'.Ludovic Courtès2021-03-05
| | | | * guix/gexp.scm (compiled-modules): Pass #:target to 'gexp->derivation'.
* profiles: 'package->manifest-entry' preserves transformations by default.Ludovic Courtès2021-03-05
| | | | | | | | | | | | | | | | | | | Previously, transformations applied from a manifest (rather than via "guix install") would be lost. This change fixes that and simplifies things. Reported by zimoun at <https://lists.gnu.org/archive/html/guix-devel/2021-02/msg00153.html>. * guix/profiles.scm (default-properties): New procedure. (package->manifest-entry): Use it for #:properties. * guix/scripts/pack.scm (guix-pack)[with-transformations]: Remove. Remove caller. * guix/scripts/package.scm (transaction-upgrade-entry): Remove calls to 'manifest-entry-with-transformations'. * tests/guix-package.sh: Add test. * tests/transformations.scm ("options->transformation + package->manifest-entry"): New test.
* gexp: #:references-graphs refers to non-native derivations.Ludovic Courtès2021-03-03
| | | | | | | | | | | | | Fixes a regression introduced in c6d6aee6659acb293eb33f498fdac3b47a19a48, where #:reference-graphs would end up referring to native inputs. This would notably break the compilation of systems using a childhurd, because they would attempt to build the 'hurd' package natively. * guix/gexp.scm (lower-reference-graphs)[tuple->gexp-input]: Honor TARGET. * tests/gexp.scm ("gexp->derivation #:references-graphs cross-compilation"): New test.
* openpgp: Remove now unnecessary procedure.Ludovic Courtès2021-03-02
| | | | | * guix/openpgp.scm (hash-algorithm-name): Remove. This procedure has been provided by Guile-Gcrypt since 0.3.0.