Commit Graph

7225 Commits

Author SHA1 Message Date
Nicolas Goaziou
a91171ad63
guix: import: Fix Creative Common licenses in texlive importer.
* guix/import/texlive.scm (string->license): Fix symbol used for some CC-BY
licenses.  Add version 4.0 for CC-BY and CC-BY-SA.
2023-07-18 18:12:46 +02:00
Nicolas Goaziou
31cd9a5040
guix: import: Handle native inputs in texlive importer.
* guix/import/texlive.scm (tlpdb->package): Add TEXLIVE-METAFONT as a native
input whenever font metrics are to be generated.
* tests/texlive.scm (%fake-tlpdb): Add test data.
("texlive->guix-package, with METAFONT files"): New test.
2023-07-18 18:12:39 +02:00
Nicolas Goaziou
c09a05d06c
guix: texlive-build-system: Generate font metrics.
* guix/build/texlive-build-system.scm (install-as-runfiles):
(generate-font-metrics): New function.
(build): Use INSTALL-AS-RUNFILES.
(%standard-phases): Add new phase.
2023-07-18 18:12:38 +02:00
Nicolas Goaziou
3fc925aa84
guix: import: Fix multiple licenses output in texlive importer.
* guix/import/texlive.scm (string->license): Add missing case and try first to
split license strings before giving up.
* tests/texlive.scm (%fake-tlpdb): Add test data.
("texlive->guix-package, multiple licenses"): New test.
2023-07-18 18:10:25 +02:00
Nicolas Goaziou
308b3e83c3
guix: import: texlive use full file names for generic directories.
Generic directories, such as "doc/info/" or "doc/man" are shared by multiple
packages.  With this change, the texlive importer specifies the full file name
of package-specific files there, making sure only them are downloaded.

* guix/import/texlive.scm (texlive-generic-locations): New variable.
(files->locations): Renamed from files->directories.
Provide full file names when necessary.
(tlpdb->package): Apply renaming.
2023-07-18 18:10:25 +02:00
Nicolas Goaziou
7a6da1e22a
guix: import: Improve home-page generation in texlive importer.
* guix/import/texlive.scm (tlpdb): Also register `catalogue' key.
(tlpdb->package): First try to use catalogue for the home-page, then the
name.
* tests/texlive.scm (%fake-tlpdb): Add tests data.
("texlive->guix-package, with catalogue entry, no inputs"): New test.
2023-07-18 18:10:25 +02:00
Nicolas Goaziou
4a245129ff
guix: import: Update texlive importer according to new build system.
* guix/import/texlive.scm (tlpdb->package): Generate a package that doesn't
need SIMPLE-TEXLIVE-PACKAGE.
* guix/import/utils.scm (package->definition): Remove special case for
`simple-texlive-package'.
* tests/texlive.scm (%fake-tlpdb): Add test data.
("texlive->guix-package"): Update test.
("texlive->guix-package, no docfiles"): New test.
2023-07-18 18:10:25 +02:00
Nicolas Goaziou
3f22dabc2a
guix: texlive-build-system: Improvements on non-trivial packages.
* guix/build/texlive-build-system.scm (build): Ignore temporary build files
when moving runfiles around.  Remove ".drv" source files prior to compiling
files.  Remove need for #:TEX-DIRECTORY keyword.  Handle ".ins" and ".dtx"
files in different directories.
(install): Install docfiles in "doc" output when available.
* guix/build-system/texlive.scm (texlive-build): Remove #:TEX-DIRECTORY.
* doc/guix.texi (Build Systems): Remove reference to #:TEX-DIRECTORY in
TEXLIVE-BUILD-SYSTEM documentation.  Also mention it now tries to compile
".dtx" files when there is no ".ins" file.
2023-07-18 18:10:24 +02:00
Ricardo Wurmus
eda2c23874
scripts/refresh: Remove column from spec line before sorting.
We want to sort by file and line number, but the column number messes
everything up.

This is a follow-up to commit b43841c124.

* guix/scripts/refresh.scm (guix-refresh): Trim the digits on the right of the
location string before comparing them.
2023-07-17 13:51:54 +02:00
Tobias Geerinckx-Rice
4920d11ec1
download: Remove stale Yandex GNOME mirror.
* guix/download.scm (%mirrors): Remove mirror.yandex.ru from gnome.
2023-07-09 02:00:01 +02:00
Tobias Geerinckx-Rice
c2c13e3225
download: Remove broken X.org mirrors.
These are still at <https://www.x.org/wiki/Releases/Download>, but
then that page hasn't been updated since 2018.

* guix/download.scm (%mirrors): Remove mirror.us.leaseweb.net and
x.cs.pu.edu.tw.
2023-07-09 02:00:01 +02:00
Tobias Geerinckx-Rice
158a218dea
download: Remove obsolete kernel.org mirrors.
* guix/download.scm (%mirrors): Remove kernel.osuosl.org and
mirror.linux.org.au.
2023-07-09 02:00:11 +02:00
Tobias Geerinckx-Rice
75c7f790b0
download: Remove obsolete Savannah subdirectory.
* guix/download.scm (%mirrors): Remove ‘releases-noredirect’ URL.
2023-07-09 02:00:02 +02:00
Josselin Poiret
d17879cd0d
guix: platform: Use srfi-34's raise instead of raise-exception.
* guix/platform.scm (lookup-platform-by-system)
(lookup-platform-by-target)
(lookup-platform-by-target-or-system): Use srfi-34's raise instead of
raise-exception.
2023-07-13 19:00:14 +02:00
Josselin Poiret
0dd293b4d9
gnu: Add libc-for-target and glibc/hurd.
* gnu/packages/patches/glibc-2.37-hurd-clock_t_centiseconds.patch
* gnu/packages/patches/glibc-2.37-hurd-local-clock_gettime_MONOTONIC.patch
* gnu/packages/patches/glibc-2.37-versioned-locpath.patch: New patches.
* gnu/local.mk (dist_patch_DATA): Register them.

* gnu/packages/base.scm (glibc/hurd, libc-for-target): New variables.
(glibc/hurd-headers): Use glibc/hurd.
* gnu/packages/commencement.scm (glibc-final-with-bootstrap-bash)[outputs,
source, arguments]
(glibc-final)[source]: Use libc-for-target instead of glibc.
* gnu/packages/cross-base.scm (cross-libc/deprecated, cross-libc*): Use
libc-for-target.

This part fixes

    https://issues.guix.gnu.org/63641#25

* gnu/packages/commencement.scm (%final-inputs): Change to memoized lambda
taking "system".
* gnu/packages/commencement.scm (canonical-package): Likewise, and update
user, passing (%current-system).
(make-gcc-toolchain): Update user, passing (%current-system).
* gnu/packages/base.scm (%final-inputs): Likewise.
* guix/scripts/refresh.scm (options->update-specs): Likewise.
* guix/build-system/gnu.scm (standard-packages): Add optional "system"
parameter.
(lower): Update caller.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Co-authored-by: Janneke Nieuwenhuizen <janneke@gnu.org>
2023-07-13 18:20:05 +02:00
Ludovic Courtès
9c51330315
shell: Really take system into account in the cache key.
Fixes <https://issues.guix.gnu.org/63230>.

Previously, when running "guix shell -s X ...", OPTS would contain
something like '((system . "X") ... (system . "DEFAULT")).  Thus, since
'profile-cached-gc-root' would iterate over it in this order, "DEFAULT"
would be passed to 'profile-file-cache-key' and 'profile-spec-cache-key'
instead of "X".

* guix/scripts/shell.scm (profile-cached-gc-root): Reverse OPTS before
entering 'loop'.
2023-07-13 17:20:02 +02:00
Efraim Flashner
691b97aed9
transformations: Allow tuning go packages.
* guix/transformations.scm (build-system-with-tuning-compiler): When
checking if a microarchitecture is supported by the compiler, also check
if it is a go compiler which supports that psabi.  Add a phase after
'setup-go-environment to set the go microarchitecture.
2023-07-12 16:48:28 +03:00
Efraim Flashner
1701b1244d
guix: cpu: Add gcc-architecture->micro-architecture-level mapping.
* guix/cpu.scm (gcc-architecture->micro-architecture-level): New
variable.
2023-07-12 16:48:28 +03:00
Efraim Flashner
4dd5fa9e76
guix: cpu: Refactor cpu->gcc-architecture.
* guix/cpu.scm (cpu->gcc-architecture): Refactor to wrap all the x86_64
options inside a common letrec-syntax.
2023-07-12 16:48:28 +03:00
Efraim Flashner
b93057256f
guix: cpu: Rewrite fallback for x86_64 cpu->gcc-architecture.
* guix/cpu.scm (cpu->gcc-architecture): Adjust the fallback case to use
cpu->micro-architecture-level.
2023-07-12 16:48:28 +03:00
Efraim Flashner
cb0cab2db0
guix: cpu: Add generalized CPU matching.
* guix/cpu.scm (cpu->micro-architecture-level): New variable.
2023-07-12 16:48:27 +03:00
Ricardo Wurmus
febe08ee8a
import/cran: Add one more package name transformation.
* guix/import/cran.scm (transform-sysname): Add entry for "zlib-devel".
2023-07-12 14:29:02 +02:00
Ricardo Wurmus
b43841c124
refresh: Sort update specs by package location.
Fixes <https://issues.guix.gnu.org/64358>.

* guix/scripts/refresh.scm (guix-refresh): Sort update specs by location from
bottom to top before updating packages.
2023-07-12 14:29:01 +02:00
nathan
9cf2f08852
avahi: Fix exception when #:timeout is #f.
* guix/avahi.scm (avahi-publish-service-thread): Fixes crash when timeout is
  #f, which is the default for "guix publish --advertise"

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-07-11 15:47:56 +02:00
Ludovic Courtès
fe3321f91a
cache: 'file-expiration-time' uses 'lstat', not 'stat'.
Fixes a bug whereby 'cached-channel-instance' would potentially consider
cache entries obsolete too early because they refer to items in the
store, which is mounted as 'noatime' on Guix System.

* guix/cache.scm (file-expiration-time): Use 'lstat' and
'false-if-exception' rather than 'stat'.  This matches what (guix
scripts shell) does.
2023-07-11 15:47:56 +02:00
Ludovic Courtès
e1c2c2f042
locate: Ignore unreadable manifests.
Fixes <https://issues.guix.gnu.org/64187>.

* guix/scripts/locate.scm (profiles->manifest-entries): Wrap
'profile-manifest' in 'false-if-exception'.

Reported-by: Ricardo Wurmus <rekado@elephly.net>
2023-07-11 15:47:55 +02:00
Ludovic Courtès
0ae419877c
avahi: Poll less.
* guix/avahi.scm (avahi-publish-service-thread): Have #:timeout default
to #f when 'stop-loop?' is NEVER, or 500ms.
(avahi-browse-service-thread): #:timeout defaults to 500ms when
'stop-loop?' is provided.
2023-07-07 15:30:21 +02:00
Efraim Flashner
c7eed71681
guix: git: Set initial branch name for git-fetch.
This removes the 'hint' about choosing a branch name when creating a new
git repository.

* guix/build/git.scm (git-fetch): When running 'git init' add an initial
branch name.
2023-07-05 18:57:29 +03:00
Lars-Dominik Braun
37c2e94cec
guix: node-build-system: Delete from peerDependencies too.
The current version of npm in Guix installs peerDependencies by default,
whereas previously it would just warn about missing/wrong packages.

Fixes <https://issues.guix.gnu.org/issue/64203>.

* guix/build/node-build-system.scm (delete-dependencies): Remove supplied
dependencies from peerDependencies field too.
2023-06-22 12:54:19 +02:00
Ludovic Courtès
1b7aabbc79
Add 'guix locate'.
* guix/scripts/locate.scm, tests/guix-locate.sh: New files.
* Makefile.am (MODULES): Add 'guix/scripts/locate.scm'.
(SH_TESTS): Add 'tests/guix-locate.sh'.
* po/guix/POTFILES.in: Add it.
* doc/guix.texi (Invoking guix locate): New node.

Co-authored-by: Antoine R. Dumont <antoine.romain.dumont@gmail.com>
2023-06-18 23:44:29 +02:00
Ludovic Courtès
1261ce1523
store: Tolerate non-existent GC root directories.
* guix/store/roots.scm (gc-roots): Wrap 'scandir*' call in 'catch'.
* tests/store-roots.scm ("gc-roots, initial"): New test.  Move
'open-connection' call below.
2023-06-18 23:36:25 +02:00
Janneke Nieuwenhuizen
ff690faf66
gnu: Use target-hurd?, system-hurd? instead of hurd-target?, hurd-system?.
* gnu/packages/hurd.scm (hurd-target?): Remove.
(hurd-system?): Move to...
* guix/utils.scm (system-hurd?): ...here.
* gnu/packages/*: Update all users, removing (gnu packages hurd) include where
now unused.
2023-06-17 14:38:32 +02:00
Ludovic Courtès
248cf06149
avahi: Resolve hosts for which name resolution fails.
This avoids attempts to connect to hosts that went off-line.  This is
particularly important for 'guix-daemon --discover', which would so far
keep attempting to talk to LAN hosts after they vanished just because
their mDNS record hasn't expired, leading to significant delays when
fetching narinfos and substitutes.

* guix/avahi.scm (avahi-browse-service-thread)[service-resolver-callback]:
Add handler to RESOLVER-EVENT/FAILURE.
2023-06-16 00:14:52 +02:00
Ludovic Courtès
99a27d361e
guix home: Add missing SRFI-34 import for 'raise'.
Reported at <https://issues.guix.gnu.org/64031>.

* guix/scripts/home.scm: Use (srfi srfi-34), expected by
'list-generations'.

Reported-by: Steven Roose <steven@roose.io>
2023-06-16 00:14:52 +02:00
Ludovic Courtès
a3beb8d741
pull: Preserve channel ordering when using '--commit', '--url', etc.
Previously using '--url', '--commit', or '--branch' would move the
'guix' channel to the front.  This is okay in itself but it gratuitously
leads to a different cache key in 'cached-channel-instance'--IOW, 'guix
time-machine --commit=X' where X is already in cache would gratuitously
recompute the channel derivations.

* guix/scripts/pull.scm (channel-list): Use 'map' instead of 'find' +
'remove' + 'cons'.
2023-06-16 00:14:52 +02:00
Ludovic Courtès
e4259d4e9e
packages: 'package-transitive-supported-systems' detects cycles.
With this change, commands such as 'guix build' or 'guix package' report
obvious package-level cycles upfront.  Derivation-level cycles are not
detected.

* guix/packages.scm (&package-cyclic-dependency-error): New condition
type.
(package-transitive-supported-systems): Define 'visited', check it, and
parameterize it.
* guix/ui.scm (call-with-error-handling): Handle
'&package-cyclic-dependency-error'.
* tests/packages.scm ("package-transitive-supported-systems detects
cycles"): Add test.
2023-06-14 22:54:30 +02:00
Ricardo Wurmus
4699de59ff
import/cran: Add another clause for ASL 2.0.
* guix/import/cran.scm (string->license): Add clause for >= 2.0.
2023-06-14 14:09:35 +02:00
Timothy Sample
e6da6e3152
svn-download: Do not expand keywords.
Subversion keyword expansion is potentially non-reproducible as some of
them expand time strings relative to the local time zone:

  https://issues.guix.gnu.org/43442#18

In practice this is not a problem in Guix since Subversion checkouts
happen in an isolated environment using the "default timezone" (UTC).

However, Software Heritage disables keyword expansion for this very
reason.  By following suit, we make sure content can be retrieved from
there.

* guix/build/svn.scm (svn-fecth): Pass "--ignore-keywords" to
Subversion.
* guix/build-system/texlive.scm (%texlive-date): New variable.
* gnu/packages/java.scm (java-geronimo-xbean-reflect)
(java-geronimo-genesis-2.1): Update the source hash.
* gnu/packages/machine-learning.scm (ghmm): Likewise.
* gnu/packages/video.scm (libsmpeg, libsmpeg-with-sdl1): Likewise.
* gnu/packages/tex.scm (texlive-bin): Update the hash of the
"texlive-scripts" input, and a add a new phase that imitates
Subversion keyword expansion for scripts that need it.
(texlive-latex-base): Update the hash of the "texlive-luatexconfig"
native input.
(texlive-hyphen-base, texlive-dvipdfmx, texlive-dvips, texlive-cm)
(texlive-tex-plain, texlive-kpathsea, texlive-latexconfig)
(texlive-tetex, texlive-pdftex, texlive-xetex): Update the source
hash.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-06-11 18:13:44 +02:00
Ludovic Courtès
1c9e992e8c
records: Remove "guix" from error message.
* guix/records.scm (map-fields): Tweak error message.
2023-06-09 14:19:14 +02:00
Ludovic Courtès
53bf9fba0c
tests: Ensure 'elpa' test does not access the network.
Previously it would try to access the real elpa.gnu.org.  This would
succeed when network is available because "taxy-magit-section" is an
existing package.

* guix/import/elpa.scm (elpa-repository)
(package-from-elpa-repository?): Recognize 'gnu/http.
* tests/elpa.scm ("package-latest-release"): Use 'http' instead of
'https'.  Change "taxy-magit-section" to "fake-taxy-magit-section".
2023-06-09 14:19:14 +02:00
Ludovic Courtès
df8b3821a8
import: stackage: Updater resolves inputs lazily.
Fixes the "haskell-stackage" test in 'tests/lint.scm', which started
failing with e6223017d9 because the extra
HTTP GETs induced by the 'haskell-fetch' calls would fail.

* guix/import/stackage.scm (latest-lts-release): Call 'hackage-fetch'
and its continuation from within 'inputs', which is delayed.  Pass it
NAME-VERSION instead of HACKAGE-NAME-VERSION.
2023-06-09 14:19:14 +02:00
Ludovic Courtès
885d524f79
substitute: Gracefully retry after failed partial downloads.
Fixes <https://issues.guix.gnu.org/63443>.
Reported by Attila Lendvai <attila@lendvai.name>.

* guix/scripts/substitute.scm (catch-system-error): New macro.
(download-nar): Add call to 'delete-file-recursively'.
* tests/substitute.scm ("substitute, previous partial download around"):
New test.
2023-06-08 22:54:58 +02:00
Ludovic Courtès
3f5e141829
substitute: Delete cached narinfos more than two-month old.
This allows 'guix substitute' to shrink the cache a bit more, which
saves space and improves performance of cache-cleanup phases since fewer
entries need to be traversed.

* guix/scripts/substitute.scm (cached-narinfo-expiration-time): Define
'max-ttl' and use it as an upper bound.
2023-06-08 22:27:20 +02:00
Ludovic Courtès
92ee0fd5eb
import: Gracefully handle EPIPE.
Previously, "guix import pypi f3 | head -3" would print a backtrace.

* guix/scripts/import.scm (guix-import): Wrap
'pretty-print-with-comments' call in 'leave-on-EPIPE'.
2023-06-08 22:06:00 +02:00
Ludovic Courtès
dc0c5d56ee
records: Use SRFI-11 instead of SRFI-71, for Guile 2.0 compatibility.
This fixes a failure of 'tests/packages.scm' introduced in
b88e38d4b5: some of the tests import (guix
records) on the build side, which uses '%bootstrap-guile' (Guile 2.0)
where SRFI-71 is unavailable.

* guix/records.scm (match-record-inner): Use SRFI-11 instead of SRFI-71.
2023-06-06 11:54:39 +02:00
Ricardo Wurmus
a025d8fee6
import/cran: Ensure current package is not among inputs.
* guix/import/cran.scm (cran-package-inputs): Remove the current package from
the result.
2023-06-05 18:55:11 +02:00
Josselin Poiret
cacc0cb6ab
channels: Raise an error if dependency's introduction is malformed
* guix/channels.scm (sexp->channel-introduction): Do it.
2023-06-04 11:30:18 +02:00
Josselin Poiret
80d1228321
build-system: New agda-build-system.
* guix/build-system/agda.scm: New file.
* guix/build/agda-build-system.scm: New file.
* Makefile.am (MODULES): Register them.
* doc/guix.texi (Build Systems): Add documentation for agda-build-system.
2023-06-04 10:59:34 +02:00
Josselin Poiret
0769a9b3c5
build-system/haskell: Export default-haskell.
* guix/build-system/haskell.scm: Export default-haskell.
2023-06-04 10:59:33 +02:00
Josselin Poiret
f045c7ac80
records: match-record: Do not show internal form.
* guix/records.scm (lookup-field+wrapper): Attach source properties to the
field syntax object instead.
2023-06-04 10:59:28 +02:00