diff options
30 files changed, 2131 insertions, 468 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 691d4c5e1d..efb4cec9ef 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4803,9 +4803,11 @@ Specifically, @command{guix pull} downloads code from the @dfn{channels} @item the @option{--channels} option; @item -the user's @file{~/.config/guix/channels.scm} file; +the user's @file{~/.config/guix/channels.scm} file, unless @option{-q} +is passed; @item -the system-wide @file{/etc/guix/channels.scm} file; +the system-wide @file{/etc/guix/channels.scm} file, unless @option{-q} +is passed; @item the built-in default channels specified in the @code{%default-channels} variable. @@ -4907,6 +4909,11 @@ Read the list of channels from @var{file} instead of evaluates to a list of channel objects. @xref{Channels}, for more information. +@item --no-channel-files +@itemx -q +Inhibit loading of the user and system channel files, +@file{~/.config/guix/channels.scm} and @file{/etc/guix/channels.scm}. + @cindex channel news @item --news @itemx -N @@ -5052,7 +5059,9 @@ guix time-machine --commit=v1.2.0 -- \ environment -C --ad-hoc guile -- guile @end example -The command above fetches Guix@tie{}1.2.0 and runs its @command{guix +The command above fetches Guix@tie{}1.2.0 (and possibly other channels +specified by your @file{channels.scm} configuration files---see +below) and runs its @command{guix environment} command to spawn an environment in a container running @command{guile} (@command{guix environment} has since been subsumed by @command{guix shell}; @pxref{Invoking guix shell}). It's like driving a @@ -5062,6 +5071,21 @@ invocation can be expensive: it may have to download or even build a large number of packages; the result is cached though and subsequent commands targeting the same commit are almost instantaneous. +As for @command{guix pull}, in the absence of any options, +@command{time-machine} fetches the latest commits of the channels +specified in @file{~/.config/guix/channels.scm}, +@file{/etc/guix/channels.scm}, or the default channels; the @option{-q} +option lets you ignore these configuration files. The command: + +@example +guix time-machine -q -- build hello +@end example + +will thus build the package @code{hello} as defined in the main branch +of Guix, without any additional channel, which is in general a newer +revision of Guix than you have installed. Time travel works in both +directions! + @quotation Note The history of Guix is immutable and @command{guix time-machine} provides the exact same software as they are in a specific Guix @@ -5111,18 +5135,21 @@ string or the name of a tag), or @var{branch}. Read the list of channels from @var{file}. @var{file} must contain Scheme code that evaluates to a list of channel objects. @xref{Channels} for more information. -@end table -As for @command{guix pull}, the absence of any options means that the -latest commit on the master branch will be used. The command +@item --no-channel-files +@itemx -q +Inhibit loading of the user and system channel files, +@file{~/.config/guix/channels.scm} and @file{/etc/guix/channels.scm}. + +Thus, @command{guix time-machine -q} is equivalent to the following Bash +command, using the ``process substitution'' syntax (@pxref{Process +Substitution,,, bash, The GNU Bash Reference Manual}): @example -guix time-machine -- build hello +guix time-machine -C <(echo %default-channels) @dots{} @end example -will thus build the package @code{hello} as defined in the master branch, -which is in general a newer revision of Guix than you have installed. -Time travel works in both directions! +@end table Note that @command{guix time-machine} can trigger builds of channels and their dependencies, and these are controlled by the standard build @@ -33058,7 +33085,7 @@ IP address that no longer correspond to their freshly resolved host name. Set this to @code{#t} if one or more endpoints use host names provided by a dynamic DNS service to keep the sessions alive. -@item @code{monitor-ips-internal} (default: @code{'(next-minute (range 0 60 5))}) +@item @code{monitor-ips-interval} (default: @code{'(next-minute (range 0 60 5))}) The time interval at which the IP monitoring job should run, provided as an mcron time specification (@pxref{Guile Syntax,,,mcron}). diff --git a/gnu/ci.scm b/gnu/ci.scm index 7acd88ed29..df98c8af97 100644 --- a/gnu/ci.scm +++ b/gnu/ci.scm @@ -24,6 +24,7 @@ #:use-module (guix build-system channel) #:use-module (guix config) #:autoload (guix describe) (package-channels) + #:use-module (guix memoization) #:use-module (guix store) #:use-module (guix profiles) #:use-module (guix packages) @@ -342,29 +343,32 @@ otherwise use the IMAGE name." ;; Return the name of a package's job. package-name) +(define base-packages + (mlambda (system) + "Return the set of packages considered to be part of the base for SYSTEM." + (delete-duplicates + (append-map (match-lambda + ((_ package _ ...) + (match (package-transitive-inputs package) + (((_ inputs _ ...) ...) + inputs)))) + (%final-inputs system))))) + (define package->job - (let ((base-packages - (delete-duplicates - (append-map (match-lambda - ((_ package _ ...) - (match (package-transitive-inputs package) - (((_ inputs _ ...) ...) - inputs)))) - (%final-inputs))))) - (lambda* (store package system #:key (suffix "")) - "Return a job for PACKAGE on SYSTEM, or #f if this combination is not + (lambda* (store package system #:key (suffix "")) + "Return a job for PACKAGE on SYSTEM, or #f if this combination is not valid. Append SUFFIX to the job name." - (cond ((member package base-packages) - (package-job store (string-append "base." (job-name package)) - package system #:suffix suffix)) - ((supported-package? package system) - (let ((drv (package-derivation store package system - #:graft? #f))) - (and (substitutable-derivation? drv) - (package-job store (job-name package) - package system #:suffix suffix)))) - (else - #f))))) + (cond ((member package (base-packages system)) + (package-job store (string-append "base." (job-name package)) + package system #:suffix suffix)) + ((supported-package? package system) + (let ((drv (package-derivation store package system + #:graft? #f))) + (and (substitutable-derivation? drv) + (package-job store (job-name package) + package system #:suffix suffix)))) + (else + #f)))) (define %x86-64-micro-architectures ;; Micro-architectures for which we build tuned variants. diff --git a/gnu/local.mk b/gnu/local.mk index 9db92577a3..b17e20310e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -610,6 +610,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/terraform.scm \ %D%/packages/texinfo.scm \ %D%/packages/tex.scm \ + %D%/packages/texlive.scm \ %D%/packages/textutils.scm \ %D%/packages/text-editors.scm \ %D%/packages/time.scm \ diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index e5c318c8bf..e8499bb4b4 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -9,6 +9,8 @@ ;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com> +;;; Copyright © 2023 Iliya Tikhonenko <tikhonenko@mpe.mpg.de> +;;; Copyright © 2023 Andreas Enge <andreas@enge.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -75,6 +77,7 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages sqlite) #:use-module (gnu packages sphinx) #:use-module (gnu packages textutils) #:use-module (gnu packages time) @@ -3951,3 +3954,38 @@ orbit around the Earth.") for optimal @code{matching} of weighted N-dimensional image intensity data using (multivariate) polynomials.") (license license:bsd-3))) + +(define-public unsio + ;; There is no versioned tag, use the latest commit. + (let ((commit "25e52468298e1194c9726ef5dba9d5fbb46870f5") + (revision "0")) + (package + (name "unsio") + (version (git-version "1.3.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.lam.fr/infrastructure/unsio") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "110i2p5608zhh5w3pf3b5r2651hykw2ayspgq6vpqsffhya1p170")) + (modules '((guix build utils))) + (snippet + ;; force installation into lib/ instead of lib64/ + #~(substitute* "cmake/DetectCpackGenerator.cmake" + (("lib64") "lib"))))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ; no tests + #:build-type "Release" ; to improve performace + #:configure-flags #~(list "-DCMAKE_CXX_STANDARD=14"))) + (inputs (list gfortran hdf5 perl sqlite zlib)) + (home-page "https://projets.lam.fr/projects/unsio/wiki") + (synopsis "Input and output routines for n-body file formats") + (description + "@acronym{UNSIO, Universal Nbody Snapshot Input Output} provides +an API for performing input and output operations on different kinds of +n-body file formats (nemo, Gadget binaries 1 and 2, Gadget hdf5, Ramses).") + (license license:cecill)))) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 1fdfaf8a57..32bc69e2c4 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -78,7 +78,8 @@ #:export (glibc libc-for-target make-ld-wrapper - libiconv-if-needed)) + libiconv-if-needed + %final-inputs)) ;;; Commentary: ;;; @@ -1648,10 +1649,10 @@ package needs iconv ,@(libiconv-if-needed) should be added." (proc (module-ref iface 'canonical-package))) (proc package))) -(define-public (%final-inputs) +(define* (%final-inputs #:optional (system (%current-system))) "Return the list of \"final inputs\"." ;; Avoid circular dependency by lazily resolving 'commencement'. (let ((iface (resolve-interface '(gnu packages commencement)))) - ((module-ref iface '%final-inputs) (%current-system)))) + ((module-ref iface '%final-inputs) system))) ;;; base.scm ends here diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index fe6f025257..e522e70444 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -3459,31 +3459,32 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are ;; used for origins that have patches, thereby avoiding circular ;; dependencies. - (let ((finalize (compose with-boot6 - package-with-bootstrap-guile))) - `(,@(map (match-lambda - ((name package) - (list name (finalize package)))) - `(("tar" ,tar) - ("gzip" ,gzip) - ("bzip2" ,bzip2) - ("file" ,file) - ("diffutils" ,diffutils) - ("patch" ,patch) - ("findutils" ,findutils) - ("gawk" ,gawk))) - ("sed" ,sed-final) - ("grep" ,grep-final) - ("xz" ,xz-final) - ("coreutils" ,coreutils-final) - ("make" ,gnu-make-final) - ("bash" ,bash-final) - ("ld-wrapper" ,ld-wrapper) - ("binutils" ,binutils-final) - ("gcc" ,gcc-final) - ("libc" ,glibc-final) - ("libc:static" ,glibc-final "static") - ("locales" ,glibc-utf8-locales-final))))) + (parameterize ((%current-system system)) + (let ((finalize (compose with-boot6 + package-with-bootstrap-guile))) + `(,@(map (match-lambda + ((name package) + (list name (finalize package)))) + `(("tar" ,tar) + ("gzip" ,gzip) + ("bzip2" ,bzip2) + ("file" ,file) + ("diffutils" ,diffutils) + ("patch" ,patch) + ("findutils" ,findutils) + ("gawk" ,gawk))) + ("sed" ,sed-final) + ("grep" ,grep-final) + ("xz" ,xz-final) + ("coreutils" ,coreutils-final) + ("make" ,gnu-make-final) + ("bash" ,bash-final) + ("ld-wrapper" ,ld-wrapper) + ("binutils" ,binutils-final) + ("gcc" ,gcc-final) + ("libc" ,glibc-final) + ("libc:static" ,glibc-final "static") + ("locales" ,glibc-utf8-locales-final)))))) (define-public canonical-package (let ((name->package (mlambda (system) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 3a439c314e..3b949198c7 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -1976,11 +1976,11 @@ validation.") (license license:asl2.0))) (define-public bloomberg-bde-tools - (let ((commit "094885bd177e0159232d4e6a060a04edb1edd786")) + (let ((commit "f63dfe9114cd7df29623bd01f644b9f654253972")) (package (name "bloomberg-bde-tools") ;; Recent releases are not tagged so commit must be used for checkout. - (version "3.97.0.0") + (version "3.118.0.0") (source (origin (method git-fetch) (uri (git-reference @@ -1989,7 +1989,7 @@ validation.") (file-name (git-file-name name version)) (sha256 (base32 - "0mbbai73z8amh23ah3wy35kmy612380yr5wg89mic60qwqmpqb02")) + "1a5sw4xjwd222na3zkflm2gkmzhnfq17i8qapyaxszpiayf3hw6v")) (patches (search-patches "bloomberg-bde-tools-fix-install-path.patch")))) @@ -2003,11 +2003,11 @@ validation.") (license license:asl2.0)))) (define-public bloomberg-bde - (let ((commit "b6bcc0e24a5862bf77aea7edd831dedf50e21d64")) + (let ((commit "77a0f39d538c20ae28bece9a81cac99a9e1df95d")) (package (name "bloomberg-bde") ;; Recent releases are not tagged so commit must be used for checkout. - (version "3.98.0.0") + (version "3.118.0.1") (source (origin (method git-fetch) (uri (git-reference @@ -2016,7 +2016,7 @@ validation.") (file-name (git-file-name name version)) (sha256 (base32 - "0y3lipi1lj9qazgc935851r2qsx5aq3vvc4y52jq57riyz8wg3ma")) + "0nw5clkc9yipd03kijh4c8lxi9zkxfxcjhszl1xzwvgz8xmpampf")) (patches (search-patches "bloomberg-bde-cmake-module-path.patch")) @@ -2033,26 +2033,28 @@ validation.") (list "groups/bal/ball/ball_asyncfileobserver.t.cpp" "groups/bal/ball/ball_fileobserver2.t.cpp" "groups/bal/ball/ball_recordstringformatter.t.cpp" + "groups/bal/balst/balst_stacktraceresolver_filehelper.t.cpp" "groups/bal/balst/balst_stacktraceutil.t.cpp" "groups/bdl/bdlmt/bdlmt_eventscheduler.t.cpp" "groups/bdl/bdlmt/bdlmt_timereventscheduler.t.cpp" "groups/bdl/bdls/bdls_filesystemutil.t.cpp" + "groups/bsl/bslh/bslh_hash.t.cpp" "groups/bsl/bslh/bslh_hashpair.t.cpp" "groups/bsl/bsls/bsls_platform.t.cpp" "groups/bsl/bsls/bsls_stackaddressutil.t.cpp" "groups/bsl/bsls/bsls_stopwatch.t.cpp" + "groups/bsl/bsls/bsls_timeutil.t.cpp" + "groups/bsl/bslstl/bslstl_deque.1.t.cpp" + "groups/bsl/bslstl/bslstl_deque.2.t.cpp" + "groups/bsl/bslstl/bslstl_deque.3.t.cpp" "groups/bsl/bslstl/bslstl_function_invokerutil.t.cpp")) #t)))) (build-system cmake-build-system) (arguments `(#:parallel-tests? #f ; Test parallelism may fail inconsistently. ;; Set UFID to build shared libraries. Flag descriptions can be found at - ;; https://bloomberg.github.io/bde-tools/reference/bde_repo.html#ufid - #:configure-flags ,(match %current-system - ((or "i686-linux" "armhf-linux") - ''("-DUFID=opt_dbg_exc_mt_32_shr_cpp17")) - (_ - ''("-DUFID=opt_dbg_exc_mt_64_shr_cpp17"))) + ;; https://bloomberg.github.io/bde-tools/bbs/reference/bbs_build_configuration.html#ufid + #:configure-flags '("-DUFID=opt_dbg_exc_mt_64_shr_cpp20") #:phases (modify-phases %standard-phases ;; Explicitly build tests separate from the main build. @@ -2072,6 +2074,8 @@ implementation of STL containers, vocabulary types for representing common concepts (like dates and times), and building blocks for developing multi-threaded applications and network applications.") (home-page "https://github.com/bloomberg/bde") + ;; Out-of-memory on i686-linux, compile errors with non-x86. + (supported-systems '("x86_64-linux")) (license license:asl2.0)))) (define-public gulrak-filesystem diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 9c14e9c602..e6ca018e41 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1089,7 +1089,7 @@ Emacs).") (define-public kicad (package (name "kicad") - (version "7.0.6") + (version "7.0.7") (source (origin (method git-fetch) (uri (git-reference @@ -1097,7 +1097,7 @@ Emacs).") (commit version))) (sha256 (base32 - "1bifg73id0grn37a4n5wpq440z9xz14q0fvkva5vajx0xfd34llv")) + "1xbzf29rhqh6kl0vggdn2dblgp927096fc1lr3y4yw63b8n0qq50")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -1197,7 +1197,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "0byvm25jw108h808g5zdjq14gx4xxd87pvlbczd07c3rx6nmzl08")))) + "00f51rcnki08x2jkyla5vmqx7nhck3cyz86wiy0qkmc8klb1a6ba")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBUILD_FORMATS=html") @@ -1231,7 +1231,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "0p60dvig7xx8svzsgp871r0aix2m95bmzg3snz372nmgnza2nnvf")))) + "1wr754m4ykidds3i14gqhvyrj3mbkchp2hkfnr0rjsdaqf4zmqdf")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no tests exist @@ -1260,7 +1260,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "0fqnviaxsai0xwyq8xq5ks26j4vd390ns6h6lr0fx2ikv1ghaml5")))) + "0xnnivlqgcyaz9qay73p43jnvmvshp2b3fbh3569j7rmgi5pn8x0")))) (synopsis "Official KiCad footprint libraries") (description "This package contains the official KiCad footprint libraries."))) @@ -1277,7 +1277,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "0dmssyhqd94d9wj8w7g7xjan560b2rwcs540sgl0rc77cw2jify8")))) + "141r5wd8s1bgyf77kvb9q14cpsiwwv4zmfzwbgcd42rflsk2lcbc")))) (synopsis "Official KiCad 3D model libraries") (description "This package contains the official KiCad 3D model libraries."))) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 69e870adf8..4a2e867476 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2801,11 +2801,12 @@ and how they are displayed (View).") gettext-minimal `(,glib "bin") gobject-introspection + itstool pkg-config python)) (inputs (list bash-minimal - librsvg + (librsvg-for-system) gsettings-desktop-schemas gtk+ pango @@ -5386,7 +5387,7 @@ once.") (list gtk+ json-glib libgee - librsvg + (librsvg-for-system) qqwing)) (home-page "https://wiki.gnome.org/Apps/Sudoku") (synopsis "Japanese logic game") @@ -6084,7 +6085,7 @@ playlists in a variety of formats.") ("pkg-config" ,pkg-config) ("xmllint" ,libxml2))) (inputs - (list gtk+ guile-2.2 libcanberra librsvg)) + (list gtk+ guile-2.2 libcanberra (librsvg-for-system))) (home-page "https://wiki.gnome.org/Apps/Aisleriot") (synopsis "Solitaire card games") (description @@ -6671,7 +6672,7 @@ discovery protocols.") libxml2 libsoup libpeas - librsvg + (librsvg-for-system) libhandy gnome-desktop gstreamer @@ -12156,7 +12157,7 @@ and a high score table.") `(("glib" ,glib) ("gtk+" ,gtk+) ("gtk+-2" ,gtk+-2) - ("librsvg" ,librsvg) + ("librsvg" ,(librsvg-for-system)) ("libxml2" ,libxml2))) (home-page "https://gitlab.gnome.org/GNOME/gnome-themes-extra") (synopsis "GNOME Extra Themes") diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index f966724022..27e6fde911 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2021 WinterHound <winterhound@yandex.com> ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com> ;;; Copyright © 2022 jgart <jgart@dismail.de> +;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,6 +40,7 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system go) + #:use-module (guix build-system guile) #:use-module (guix build-system haskell) #:use-module (guix build-system meson) #:use-module (guix build-system python) @@ -49,6 +51,7 @@ #:use-module (gnu packages autogen) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages backup) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -66,6 +69,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages haskell-check) #:use-module (gnu packages haskell-crypto) #:use-module (gnu packages haskell-xyz) @@ -830,3 +834,80 @@ but can also be used independently as a logging bot.") server written in C++ for Unix-like operating systems.") (home-page "https://www.inspircd.org/") (license license:gpl2))) + +(define-public snuik + (package + (name "snuik") + (version "0.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://dezyne.org/download/snuik/" + name "-" version ".tar.gz")) + (sha256 + (base32 "1lm6mbgfjzjk3pvzp1y9wkdz9dr2qyl1c6ib1hqxrnvkmlciy5p5")))) + (native-inputs (list guile-3.0)) + (inputs (list bash-minimal guile-3.0 guile-8sync)) + (build-system guile-build-system) + (arguments + (list + #:not-compiled-file-regexp "(guix|guix/.*)[.]scm$" + #:modules '((srfi srfi-1) + (ice-9 popen) + (guix build guile-build-system) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + #$@(if (%current-target-system) + #~() + #~((add-after 'build 'check + (lambda _ + (let* ((tests (find-files "test" "[.]scm$")) + (guile #$(this-package-input "guile")) + (guile (string-append guile "/bin/guile"))) + (fold (lambda (test result) + (and + result + (invoke guile "--no-auto-compile" test))) + #t + tests)))))) + (add-after 'install 'install-script + (lambda _ + (let* ((bash #$(this-package-input "bash-minimal")) + (bash (string-append bash "/bin/bash")) + (guile #$(this-package-input "guile")) + (guile (string-append guile "/bin/guile")) + (build-guile #$(this-package-native-input "guile")) + (build-guile (string-append build-guile "/bin/guile")) + (guile-8sync #$(this-package-input "guile-8sync")) + (out #$output) + (bin (string-append out "/bin")) + (effective (read + (open-pipe* OPEN_READ + build-guile "-c" + "(write (effective-version))"))) + (path (list (string-append guile "/bin"))) + (scm-dir (string-append "/share/guile/site/" effective)) + (scm-path (list (string-append out scm-dir) + (string-append guile-8sync scm-dir))) + (go-dir (string-append "/lib/guile/" effective + "/site-ccache/")) + (go-path (list (string-append out go-dir) + (string-append guile-8sync go-dir)))) + (mkdir-p "bin") + (copy-file "snuik.sh" "bin/snuik") + (substitute* "bin/snuik" + (("@SHELL@") bash)) + (chmod "snuik" #o755) + (install-file "bin/snuik" bin) + (wrap-script (string-append out "/bin/snuik") + `("PATH" ":" prefix ,path) + `("GUILE_AUTO_COMPILE" ":" = ("0")) + `("GUILE_LOAD_PATH" ":" prefix ,scm-path) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path)))))))) + (home-page "https://gitlab.com/janneke/snuik") + (synopsis "IRC bot using Guile-8sync") + (description "@code{Snuik} is an IRC bot using the GNU 8sync (for +now). It has some basic functionality only, such as seen, tell, and +what.") + (license license:gpl3+))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 93def72048..bdf05227fb 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -5022,7 +5022,6 @@ in a digital read-out.") python-2 ;'perf' links against libpython elfutils libiberty ;used alongside BDF for symbol demangling - libtraceevent libunwind ;better stack walking libtraceevent numactl ;for 'perf bench numa mem' diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index e1428d8131..01acd0299f 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -38,6 +38,7 @@ ;;; Copyright © 2022 Trevor Richards <trev@trevdev.ca> ;;; Copyright © 2022, 2023 Artyom Bologov <mail@aartaka.me> ;;; Copyright © 2023 Roman Scherer <roman@burningswell.com> +;;; Copyright © 2023 ykonai <mail@ykonai.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -9556,8 +9557,8 @@ function.") (sbcl-package->cl-source-package sbcl-specialization-store)) (define-public sbcl-cl-gobject-introspection - (let ((commit "d0136c8d9ade2560123af1fc55bbf70d2e3db539") - (revision "1")) + (let ((commit "c4fef07d01cec7c830ce84ef150ed8e4da5959c4") + (revision "2")) (package (name "sbcl-cl-gobject-introspection") (version (git-version "0.3" revision commit)) @@ -9568,18 +9569,17 @@ function.") (uri (git-reference (url home-page) (commit commit))) - (file-name (git-file-name name version)) + (file-name (git-file-name "cl-gobject-introspection" version)) (sha256 - (base32 - "0dz0r73pq7yhz2iq2jnkq977awx2zws2qfxdcy33329sys1ii32p")))) + (base32 "18n4wg93sf6cjmpcpr47bg2rd8mbm9ml9lykmjsxgvsf3nwr5vnw")))) (build-system asdf-build-system/sbcl) (inputs - `(("alexandria" ,sbcl-alexandria) - ("cffi" ,sbcl-cffi) - ("iterate" ,sbcl-iterate) - ("trivial-garbage" ,sbcl-trivial-garbage) - ("glib" ,glib) - ("gobject-introspection" ,gobject-introspection))) + (list glib + gobject-introspection + sbcl-alexandria + sbcl-cffi + sbcl-iterate + sbcl-trivial-garbage)) (native-inputs (list sbcl-fiveam)) (arguments @@ -9608,6 +9608,113 @@ of C+GObject libraries without the need of writing dedicated bindings.") (define-public ecl-cl-gobject-introspection (sbcl-package->ecl-package sbcl-cl-gobject-introspection)) +(define-public sbcl-cl-gobject-introspection-wrapper + (let ((commit "2d197cba7e7d734ac8a2e181e5e709e5b218bada") + (revision "1")) + (package + (name "sbcl-cl-gobject-introspection-wrapper") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bohonghuang/cl-gobject-introspection-wrapper") + (commit commit))) + (file-name (git-file-name "cl-gobject-introspection-wrapper" version)) + (sha256 + (base32 "05np2zs5806ib6qfz7d6knyaz6llxgwvjqavl1fsz5hcga40296s")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-cl-gobject-introspection + sbcl-cl-ppcre)) + (home-page + "https://github.com/bohonghuang/cl-gobject-introspection-wrapper") + (synopsis + "Wrap and call GObject Introspection FFI function in Common Lisp") + (description + "This library converts the elements from GObject Introspection into +Common Lisp-style definitions, based on cl-gobject-introspection.") + (license license:lgpl3+)))) + +(define-public cl-gobject-introspection-wrapper + (sbcl-package->cl-source-package sbcl-cl-gobject-introspection-wrapper)) + +(define-public ecl-cl-gobject-introspection-wrapper + (sbcl-package->ecl-package sbcl-cl-gobject-introspection-wrapper)) + +(define-public sbcl-cl-glib + (let ((commit "9e52827cce1cbb3962536b6a5e628febab593f57") + (revision "1")) + (package + (name "sbcl-cl-glib") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bohonghuang/cl-glib") + (commit commit))) + (file-name (git-file-name "cl-glib" version)) + (sha256 + (base32 "0dxa493zdp1p93cahhpp3yaggn3j3kkn90mdw99g4ld7scmiglp4" )))) + (build-system asdf-build-system/sbcl) + (arguments + '(#:asd-systems '("cl-gio" "cl-glib" "cl-gobject"))) + (inputs + (list glib + gobject-introspection + sbcl-bordeaux-threads + sbcl-cl-gobject-introspection-wrapper)) + (home-page "https://github.com/bohonghuang/cl-glib") + (synopsis "Glib, GIO and Gobject bindings for Common Lisp") + (description "This library provides Glib, GIO and Gobject bindings for +Common Lisp via Gobject Introspection.") + (license license:lgpl3+)))) + +(define-public cl-glib + (sbcl-package->cl-source-package sbcl-cl-glib)) + +(define-public ecl-cl-glib + (sbcl-package->ecl-package sbcl-cl-glib)) + +(define-public sbcl-cl-gtk4 + (let ((commit "d116905e7b68508d03681a50b3b24d63e7b111e4") + (revision "1")) + (package + (name "sbcl-cl-gtk4") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bohonghuang/cl-gtk4") + (commit commit))) + (file-name (git-file-name "cl-gtk4" version)) + (sha256 + (base32 "0mprmmvbagnflvhynn51l42nbwr08rld99ls0c48m5lpjn0ja4zc")))) + (build-system asdf-build-system/sbcl) + (arguments + '(#:asd-systems '("cl-gtk4" "cl-gdk4"))) + ;; propagate because it at least requires the typelib files at runtime + (propagated-inputs (list gtk)) + (inputs + (list gobject-introspection + sbcl-cl-glib + sbcl-cl-gobject-introspection-wrapper)) + (home-page "https://github.com/bohonghuang/cl-gtk4") + (synopsis "GTK4 bindings for Common Lisp") + (description + "This library provides GTK4 bindings for Common Lisp via Gobject +Introspection, in the cl-gtk4 ASDF system.") + (license license:lgpl3)))) + +(define-public cl-gtk4 + (sbcl-package->cl-source-package sbcl-cl-gtk4)) + +(define-public ecl-cl-gtk4 + (sbcl-package->ecl-package sbcl-cl-gtk4)) + (define-public sbcl-cl-slug (let ((commit "ffb229d10f0d3f7f54e706791725225e200bf749") (revision "1")) @@ -25708,10 +25815,10 @@ change since last write. (package-inputs sbcl-nfiles))))) (define-public sbcl-nasdf - (let ((commit "73c89680ace25929c2a1ccc0809db99e9edffa07")) + (let ((commit "dd9fb2df7174464b54561b2a2f3c3e00fdd5d4f7")) (package (name "sbcl-nasdf") - (version "0.1.6") + (version "0.1.7") (source (origin (method git-fetch) @@ -25720,20 +25827,19 @@ change since last write. (commit commit))) (file-name (git-file-name "cl-ntemplate" version)) (sha256 - (base32 - "193wwcp84pyyv33pkkm41s7ca2limpcqqi41hxd1pm5il5r9q9h7")))) + (base32 "1q8ky8hz8xrr37h7yyc6ysvrcwlsp1i6r2x44c060drspgjbqj70")))) (build-system asdf-build-system/sbcl) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'cd-sdl (lambda _ - (chdir "nasdf") - #t))))) + (chdir "nasdf")))))) (home-page "https://github.com/atlas-engineer/ntemplate") (synopsis "ASDF helpers for system setup, testing and installation") (description - "NASDF is an ASDF extension providing utilities to ease system setup, testing and installation. + "NASDF is an ASDF extension providing utilities to ease system setup, +testing and installation. @itemize @item Simple way to fetch Git submodules and “do the right thing” for diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 8b765e886b..1666d6e420 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2599,78 +2599,81 @@ fixed point (16.16) format.") (license license:expat)))) (define-public libflame - (package - (name "libflame") - (version "5.2.0") - (outputs '("out" "static")) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/flame/libflame") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1n6lf0wvpp77lxqlr721h2jbfbzigphdp19wq8ajiccilcksh7ay")))) - (build-system gnu-build-system) - (arguments - (list #:configure-flags - ;; Sensible defaults: https://github.com/flame/libflame/issues/28 - #~(list "--enable-dynamic-build" - "--enable-max-arg-list-hack" - "--enable-lapack2flame" - "--enable-verbose-make-output" - "--enable-multithreading=pthreads" ; Openblas isn't built with openmp. - #$@(if (target-x86?) - #~("--enable-vector-intrinsics=sse") - #~()) - "--enable-supermatrix" - "--enable-memory-alignment=16" - "--enable-ldim-alignment") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-/usr/bin/env-bash - (lambda _ - (substitute* "build/config.mk.in" - (("/usr/bin/env bash") - (which "bash"))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (substitute* "test/Makefile" - (("LIBBLAS .*") - "LIBBLAS = -lblas\n") - (("LIBLAPACK .*") - "LIBLAPACK = -llapack\n")) - (when tests? - (with-directory-excursion "test" - (mkdir "obj") - (invoke "make") - (invoke "./test_libflame.x"))))) - (add-after 'install 'install-static - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (static (assoc-ref outputs "static"))) - (mkdir-p (string-append static "/lib")) - (rename-file (string-append out - "/lib/libflame.a") - (string-append static - "/lib/libflame.a")) - (install-file (string-append out - "/include/FLAME.h") - (string-append static "/include")))))))) - (inputs (list gfortran)) - (native-inputs (list lapack perl python-wrapper)) - (home-page "https://github.com/flame/libflame") - (synopsis "High-performance library for @acronym{DLA, dense linear algebra} computations") - (description "@code{libflame} is a portable library for dense matrix + ;; The latest release (5.2.0) dates back to 2019. Use a newer one, which + ;; among other things provides extra LAPACK symbols, such as 'dgemlq_' + ;; (needed by LAPACKe). + (let ((commit "70c19e770ead0ae846c59b59216deb16d236b40c") + (revision "0")) + (package + (name "libflame") + (version (git-version "5.2.0" revision commit)) + (outputs '("out" "static")) + (home-page "https://github.com/flame/libflame") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rk8ln5p4yybsws6p60w0vkxbqp53jddv90brlgf60mk6lv51sxl")))) + (build-system gnu-build-system) + (arguments + (list #:configure-flags + ;; Sensible defaults: https://github.com/flame/libflame/issues/28 + #~(list "--enable-dynamic-build" + "--enable-max-arg-list-hack" + "--enable-lapack2flame" + "--enable-verbose-make-output" + "--enable-multithreading=pthreads" ; Openblas isn't built with openmp. + #$@(if (target-x86?) + #~("--enable-vector-intrinsics=sse") + #~()) + "--enable-supermatrix" + "--enable-memory-alignment=16" + "--enable-ldim-alignment") + #:make-flags #~(list "FC=gfortran -fPIC") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-/usr/bin/env-bash + (lambda _ + (substitute* "build/config.mk.in" + (("/usr/bin/env bash") + (which "bash"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (substitute* "test/Makefile" + (("LIBBLAS .*") + "LIBBLAS = -lblas\n") + (("LIBLAPACK .*") + "LIBLAPACK = -llapack\n")) + (when tests? + (with-directory-excursion "test" + (mkdir "obj") + (invoke "make") + (invoke "./test_libflame.x"))))) + (add-after 'install 'install-static + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static"))) + (mkdir-p (string-append static "/lib")) + (rename-file (string-append out + "/lib/libflame.a") + (string-append static + "/lib/libflame.a")) + (install-file (string-append out + "/include/FLAME.h") + (string-append static "/include")))))))) + (inputs (list gfortran)) + (native-inputs (list lapack perl python-wrapper)) + (synopsis "High-performance library for @acronym{DLA, dense linear algebra} computations") + (description "@code{libflame} is a portable library for dense matrix computations, providing much of the functionality present in LAPACK, developed by current and former members of the @acronym{SHPC, Science of High-Performance Computing} group in the @url{https://www.ices.utexas.edu/, Institute for Computational Engineering and Sciences} at The University of Texas at Austin. @code{libflame} includes a compatibility layer, @code{lapack2flame}, which includes a complete LAPACK implementation.") - (license license:bsd-3))) + (license license:bsd-3)))) (define-public scasp (let ((commit "89a427aa04ec6346425a40111c99b310901ffe51") @@ -8454,15 +8457,15 @@ computation is supported via MPI.") (define-public scilab (package (name "scilab") - (version "5.5.0") + (version "5.5.2") (source (origin (method url-fetch) (uri - (string-append "https://oos.eu-west-2.outscale.com/scilab-releases/" + (string-append "https://www.scilab.org/download/" version "/scilab-" version "-src.tar.gz")) (sha256 - (base32 "1hx57aji5d78brwqcf8a34i1hasm3h4nw46xjg7cgxj09s8yz5kq")))) + (base32 "0phg9pn24yw98hbh475ik84dnikf1225b2knh7qbhdbdx6fm2d57")))) (build-system gnu-build-system) (native-inputs (list pkg-config gfortran)) (inputs (list libxml2 @@ -8546,6 +8549,10 @@ computation is supported via MPI.") "__threadSignal InterpReady;" "\n" "__threadSignalLock InterpReadyLock;" "\n"))) + ;; Fix CPP compilation errors. + (substitute* "modules/output_stream/src/cpp/diary_manager.cpp" + (("if \\(array_size > 0\\)") + "if (*array_size > 0)")) ;; Set SCIHOME to /tmp before macros compilation. (setenv "SCIHOME" "/tmp")))))) (home-page "https://scilab.org") diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm index 2b0b45457e..4eeefe1490 100644 --- a/gnu/packages/mingw.scm +++ b/gnu/packages/mingw.scm @@ -46,7 +46,7 @@ specified, recurse and return a mingw-w64 with support for winpthreads." (package (name (string-append "mingw-w64" "-" machine (if with-winpthreads? "-winpthreads" ""))) - (version "11.0.0") + (version "11.0.1") (source (origin (method url-fetch) @@ -54,7 +54,7 @@ specified, recurse and return a mingw-w64 with support for winpthreads." "mirror://sourceforge/mingw-w64/mingw-w64/" "mingw-w64-release/mingw-w64-v" version ".tar.bz2")) (sha256 - (base32 "0pycbxlqh8gj2zp3k531p0r4m7ay6f4nhs9sq9620c6q7dis23mx")) + (base32 "047f4m37kxf7g8qj23qplrzfd9cirfkkv8d175sfv2zfd7hbqriz")) (patches (search-patches "mingw-w64-6.0.0-gcc.patch" "mingw-w64-dlltool-temp-prefix.patch" @@ -144,7 +144,7 @@ several new APIs such as DirectX and DDK, and 64-bit support.") (define-public mingw-w64-tools (package (name "mingw-w64-tools") - (version "11.0.0") + (version "11.0.1") (source (origin (method url-fetch) @@ -152,7 +152,7 @@ several new APIs such as DirectX and DDK, and 64-bit support.") "mirror://sourceforge/mingw-w64/mingw-w64/" "mingw-w64-release/mingw-w64-v" version ".tar.bz2")) (sha256 - (base32 "0pycbxlqh8gj2zp3k531p0r4m7ay6f4nhs9sq9620c6q7dis23mx")))) + (base32 "047f4m37kxf7g8qj23qplrzfd9cirfkkv8d175sfv2zfd7hbqriz")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch b/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch index b08ca5eac0..7743863cf8 100644 --- a/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch +++ b/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch @@ -4,13 +4,11 @@ locating the bloomberg-bde-tools CMake modules. --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -1,8 +1,6 @@ - cmake_minimum_required(VERSION 3.15) +@@ -14,6 +14,7 @@ else() + if (NOT CMAKE_MODULE_PATH) + message(FATAL "Please specify path to BDE cmake modules.") + endif() ++ string(REPLACE ":" "cmake/;" CMAKE_MODULE_PATH "$ENV{CMAKE_PREFIX_PATH}cmake/") --if (NOT CMAKE_MODULE_PATH) -- message(FATAL "Please specify path to BDE cmake modules.") --endif() -+string(REPLACE ":" "cmake/;" CMAKE_MODULE_PATH "$ENV{CMAKE_PREFIX_PATH}cmake/") - - get_filename_component(repoName ${CMAKE_CURRENT_LIST_DIR} NAME) + include(bde_workspace) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 72050a25aa..09c391793d 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -543,7 +543,7 @@ photographic equipment.") libjpeg-turbo libomp libpng - librsvg + (librsvg-for-system) libsecret ;optional, for storing passwords libsoup-minimal-2 libtiff diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index c5e170b628..3b06b55817 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -14197,13 +14197,13 @@ implementations of ASN.1-based codecs and protocols.") (define-public python-asn1tools (package (name "python-asn1tools") - (version "0.158.0") + (version "0.166.0") (source (origin (method url-fetch) (uri (pypi-uri "asn1tools" version)) (sha256 - (base32 "1k88a1azmyvp2ab6qcf2i40dig5abhyn7cmlyhmwwh8kr3syvma0")))) + (base32 "1hragm8dsm10rlyz67xslj01bycprlnimdmq1i2acns6kl6difpn")))) (build-system python-build-system) (propagated-inputs (list python-bitstruct python-diskcache python-prompt-toolkit diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 081ef19af1..5fc72d7937 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -1428,7 +1428,7 @@ basic input/output.") ;; it does not contain "extra" directory with completions, icon, etc. (method git-fetch) (uri (git-reference - (url "https://github.com/jwilm/alacritty") + (url "https://github.com/alacritty/alacritty") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -1515,6 +1515,10 @@ basic input/output.") (mkdir-p man) (copy-file "extra/alacritty.man" (string-append man "/alacritty.1")) + ;; Install example configuration. + (install-file "alacritty.yml" + (string-append share "/doc/alacritty-" + ,(package-version this-package) "/example")) ;; Install desktop file. (install-file "extra/linux/Alacritty.desktop" (string-append share "/applications")) @@ -1561,7 +1565,7 @@ basic input/output.") (list (search-path-specification (variable "TERMINFO_DIRS") (files '("share/terminfo"))))) - (home-page "https://github.com/alacritty/alacritty") + (home-page "https://alacritty.org/") (synopsis "GPU-accelerated terminal emulator") (description "Alacritty is a GPU-accelerated terminal emulator with a strong focus on diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index d01c31e7db..6622d62387 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -2801,6 +2801,31 @@ and Metafont sources for fonts.") of mathematical disciplines.") (license license:lppl1.3+))) +(define-public texlive-bartel-chess-fonts + (package + (name "texlive-bartel-chess-fonts") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/fonts/bartel-chess-fonts/" + "fonts/source/public/bartel-chess-fonts/" + "fonts/tfm/public/bartel-chess-fonts/") + (base32 + "1gg7g2gb5j0g0ig4190260zlpnyfmdzcqn7dsw5kp9p5pbn5hbhf"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + ;; FIXME: Font metrics generation fails with "! Strange path (turning + ;; number is zero)." error. + (arguments + (list #:phases + #~(modify-phases %standard-phases + (delete 'generate-font-metrics)))) + (native-inputs (list texlive-metafont)) + (home-page "https://ctan.org/pkg/bartel-chess-fonts") + (synopsis "Set of fonts supporting chess diagrams") + (description "This package provides fonts supporting chess diagrams.") + (license license:gpl3+))) + (define-public texlive-basque-book (package (name "texlive-basque-book") @@ -4168,6 +4193,98 @@ formatting chemistry documents according to the conventions of a number of leading journals. It also provides some handy chemistry-related macros.") (license license:lppl1.3+))) +(define-public texlive-chess + (package + (name "texlive-chess") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/fonts/chess/" + "fonts/source/public/chess/" + "fonts/tfm/public/chess/" "tex/latex/chess/") + (base32 + "079naqw9bd5da3c2bsa0322kdjrfpwa35inrfznzgrfdk1w0irs7"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (native-inputs (list texlive-metafont)) + (home-page "https://ctan.org/pkg/chess") + (synopsis "Fonts for typesetting chess boards") + (description + "This is the original, and somewhat dated, TeX chess font package. +Potential users should consider @code{skak} (for alternative fonts, and +notation support), @code{texmate} (for alternative notation support), or +@code{chessfss} (for flexible font choices).") + (license license:public-domain))) + +(define-public texlive-chess-problem-diagrams + (package + (name "texlive-chess-problem-diagrams") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/chess-problem-diagrams/" + "source/latex/chess-problem-diagrams/" + "tex/latex/chess-problem-diagrams/") + (base32 + "0m32dhwdfrgy1r3lq8j7hdaa79kniwwq3lanbkkn32dhybwa0b61"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/chess-problem-diagrams") + (synopsis "Package for typesetting chess problem diagrams") + (description + "This package provides macros to typeset chess problem diagrams including +fairy chess problems (mostly using rotated images of pieces) and other +boards.") + (license license:lppl1.2+))) + +(define-public texlive-chessboard + (package + (name "texlive-chessboard") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/chessboard/" + "source/latex/chessboard/" + "tex/latex/chessboard/") + (base32 + "1nz66h6baz5m2jfzjzyccw0rcpkc6rfbq9cc759y875b47j8pkhx"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/chessboard") + (synopsis "Print chess boards") + (description + "This package offers commands to print chessboards. It can print partial +boards, hide pieces and fields, color the boards and put various marks on the +board. It has a lot of options to place pieces on the board. Using exotic +pieces (e.g., for fairy chess) is possible.") + (license license:lppl))) + +(define-public texlive-chessfss + (package + (name "texlive-chessfss") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/chessfss/" + "fonts/enc/dvips/chessfss/" + "source/latex/chessfss/" + "tex/latex/chessfss/") + (base32 + "1l51famz3zx9v4v0mdxwk51xhaidwgfplf268q2f1ipif9h6ma5d"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/chessfss") + (synopsis "Package to handle chess fonts") + (description + "This package offers commands to use and switch between chess fonts. +It uses the LaTeX font selection scheme (nfss). The package doesn't parse, +format and print PGN input like e.g., the packages @code{skak} or +@code{texmate}; the aim of the package is to offer writers of chess packages +a bundle of commands for fonts, so that they don't have to implement all these +commands for themselves. A normal user can use the package to print +e.g,. single chess symbols and simple diagrams.") + (license license:lppl))) + (define-public texlive-chhaya (package (name "texlive-chhaya") @@ -4190,6 +4307,25 @@ given by Mumbai University.") (license:fsf-free "file://doc/latex/aalok/README.txt") license:fdl1.3+)))) +(define-public texlive-chinesechess + (package + (name "texlive-chinesechess") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/chinesechess/" + "tex/latex/chinesechess/") + (base32 + "15sszrrv1viaa74i57a81xhybhjq2vaxb188wl728hjzm8d0n0wm"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/chinesechess") + (synopsis "Typeset Chinese chess with @code{l3draw}") + (description + "This LaTeX3 package based on @code{l3draw} provides macros and an +environment for Chinese chess manual writing.") + (license license:lppl1.3c))) + (define-public texlive-chordbars (package (name "texlive-chordbars") @@ -4811,6 +4947,65 @@ with a wide array of formats. For the moment, it works out of the box with ConTeXt and LaTeX.") (license (list license:gpl3+ license:fdl1.3+)))) +(define-public texlive-crossword + (package + (name "texlive-crossword") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/crossword/" + "source/latex/crossword/" + "tex/latex/crossword/") + (base32 + "1yxjhni6jw7j7wnz6g6d1bmri8afvqsj58bar0aqliyfhr55xzai"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/crossword") + (synopsis "Typeset crossword puzzles") + (description + "This is an extended grid-based puzzle package, designed to take all +input (both grid and clues) from the same file. The package can +typeset grids with holes in them, and can deal with several sorts of +puzzle: +@itemize + +@item the classical puzzle contains numbers for the words and clues +for the words to be filled in; + +@item the numbered puzzle contains numbers in each cell where +identical numbers represent identical letters; the goal is to find out +which number corresponds to which letter; + +@item the fill-in type of puzzle consists of a grid and a list of +words; the goal is to place all words in the grid; + +@item Sudoku and Kakuro puzzles involve filling in grids of numbers +according to their own rules; format may be block-separated, or +separated by thick lines. + +@end itemize") + (license license:expat))) + +(define-public texlive-crosswrd + (package + (name "texlive-crosswrd") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/crosswrd/" + "source/latex/crosswrd/" + "tex/latex/crosswrd/") + (base32 + "0yhsrfn49wj579ms3smd1z97rjqnsi1wrsgrjs570bllgf09bcir"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/crosswrd") + (synopsis "Macros for typesetting crossword puzzles") + (description + "The package provides a LaTeX method of typesetting crosswords, and +assists the composer ensure that the grid all goes together properly.") + (license license:lppl))) + (define-public texlive-cryptocode (package (name "texlive-cryptocode") @@ -4860,6 +5055,28 @@ for structuring exercises, aggregating points, and displaying a grading table, as well as several macros for easier math mode usage.") (license license:expat))) +(define-public texlive-customdice + (package + (name "texlive-customdice") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/customdice/" + "source/latex/customdice/" + "tex/latex/customdice/") + (base32 + "0jwhvg13rla5pav0z4wns4s0x25myiqcinv592g6kqnbgwzj4q7g"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/customdice") + (synopsis "Simple commands for drawing customisable dice") + (description + "The @code{customdice} package for LaTeX, LuaLaTeX and XeTeX that +provides functionality for drawing dice. The aim is to provide +highly-customisable but simple-to-use commands, allowing: adding custom text +to dice faces; control over colouring; control over sizing.") + (license license:cc-by-sa4.0))) + (define-public texlive-cvss (package (name "texlive-cvss") @@ -5590,6 +5807,24 @@ order that one would expect.") editions.") (license license:gpl2))) +(define-public texlive-egameps + (package + (name "texlive-egameps") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/egameps/" "tex/latex/egameps/") + (base32 + "1wlki6y54czvvq7cvs7pvsvl1fhd8laaj5j52jv1v8w1msh5mlpr"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/egameps") + (synopsis "LaTeX package for typesetting extensive games") + (description + "The style is intended to have enough features to draw any extensive game +with relative ease. The facilities of PSTricks are used for graphics.") + (license license:lppl))) + (define-public texlive-eledform (package (name "texlive-eledform") @@ -6444,6 +6679,56 @@ products and convergence with some object oriented flavor (it gives the possibility to override the standard behavior of norms, ...).") (license license:lppl))) +(define-public texlive-gamebook + (package + (name "texlive-gamebook") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/gamebook/" + "source/latex/gamebook/" + "tex/latex/gamebook/") + (base32 + "0ksyr0hb1bfhc1lbbnzlj7ih8xw516djkn0lddnn07sb6hpzl8x4"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/gamebook") + (synopsis "Typeset gamebooks and other interactive novels") + (description + "This package provides the means in order to lay-out gamebooks with LaTeX. +A simple gamebook example is included with the package, and acts as +a tutorial.") + (license license:lppl1.3+))) + +(define-public texlive-gamebooklib + (package + (name "texlive-gamebooklib") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/gamebooklib/" + "source/latex/gamebooklib/" + "tex/latex/gamebooklib/") + (base32 + "1zw1l4a6wqrqpfmvxj404lf8z559hm7sgw8cwxn04g6pk72jycdl"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/gamebooklib") + (synopsis "Macros for setting numbered entries in shuffled order") + (description + "This package provides macros and environments to allow the user to +typeset a series of cross-referenced, numbered entries, shuffled into random +order, to produce an interactive novel or @dfn{gamebook}. This allows entries +to be written in natural order and shuffled automatically into a repeatable +non-linear order. Limited support is provided for footnotes to appear at the +natural position: the end of each entry, or the end of each page, whichever is +closest to the footnote mark. + +This is unrelated to the @code{gamebook} package which is more concerned with +the formatting of entries rather than their order. The two packages can be +used together or separately.") + (license license:lppl1.3+))) + (define-public texlive-gastex (package (name "texlive-gastex") @@ -6632,6 +6917,27 @@ a possibility of optical centering and right-hanging alignment of lines broken because of length.") (license license:lppl))) +(define-public texlive-go + (package + (name "texlive-go") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/fonts/go/" "fonts/source/public/go/" + "fonts/tfm/public/go/" "source/fonts/go/" + "tex/latex/go/") + (base32 + "1cvxfz9m7fx62iiz00f7qlywrmwwnpk0xzlyv63c90ji9xzfawcv"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (native-inputs (list texlive-metafont)) + (home-page "https://ctan.org/pkg/go") + (synopsis "Fonts and macros for typesetting go games") + (description + "The macros provide for nothing more complicated than the standard +19x19 board; the fonts are written in Metafont.") + (license license:public-domain))) + (define-public texlive-gost (package (name "texlive-gost") @@ -6885,6 +7191,24 @@ programs are provided as sources, not installed in the @file{bin} directories.") (license license:public-domain))) +(define-public texlive-hanoi + (package + (name "texlive-hanoi") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "tex/plain/hanoi/") + (base32 + "09a7cv76naxzdach5507wdqnjp12amvlia7kw0jh224ydmkzfx9x"))) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/hanoi") + (synopsis "Tower of Hanoi in TeX") + (description + "The Plain TeX program (typed in the shape of the towers of Hanoi) serves +both as a game and as a TeX programming exercise. As a game, it will solve +the towers with (up to) 15 discs.") + (license license:public-domain))) + (define-public texlive-happy4th (package (name "texlive-happy4th") @@ -6947,6 +7271,26 @@ for Chinese character learning plans, presentations, exercise booklets and other documentation work.") (license license:lppl1.3c))) +(define-public texlive-havannah + (package + (name "texlive-havannah") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/havannah/" + "source/latex/havannah/" + "tex/latex/havannah/") + (base32 + "0kw71rr5jhn0gx89jynwxxgd6ddzpmr0wb5qnsh0drljmacq49ai"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/havannah") + (synopsis "Diagrams of board positions in the games of Havannah and Hex") + (description + "This package defines macros for typesetting diagrams of board positions +in the games of Havannah and Hex.") + (license license:lppl1.2+))) + (define-public texlive-helmholtz-ellis-ji-notation (package (name "texlive-helmholtz-ellis-ji-notation") @@ -7126,6 +7470,45 @@ adds a collection of useful @acronym{HEP, High Energy Physics} units to the existing SIunits set.") (license license:lppl))) +(define-public texlive-hexboard + (package + (name "texlive-hexboard") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/hexboard/" + "source/latex/hexboard/" + "tex/latex/hexboard/") + (base32 + "04z0qhajbjn55mqax4kaw53h7s6g84iy1yh0pfhzj3ib7gd4cpw4"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/hexboard") + (synopsis "For drawing Hex boards and games") + (description + "@code{hexboard} is a package for LaTeX that should also work with LuaTeX +and XeTeX, that provides functionality for drawing Hex boards and games.") + (license license:cc-by-sa4.0))) + +(define-public texlive-hexgame + (package + (name "texlive-hexgame") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/hexgame/" "tex/latex/hexgame/") + (base32 + "1qr9v7225k6xzykw3rdsxf2sa3b5asvmd767i88jwimmacwi2cp1"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/hexgame") + (synopsis "Provide an environment to draw a hexgame-board") + (description + "Hex is a mathematical game invented by the Danish mathematician Piet +Hein and independently by the mathematician John Nash. This package defines +an environment that enables the user to draw such a game in a trivial way.") + (license license:lppl))) + (define-public texlive-hitex (package (name "texlive-hitex") @@ -7180,6 +7563,52 @@ TeX to format a document for nearly-arbitrary values of @code{\\hsize} and @code{\\vsize}.") (license license:x11))) +(define-public texlive-hmtrump + (package + (name "texlive-hmtrump") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/lualatex/hmtrump/" + "fonts/truetype/public/hmtrump/" + "tex/lualatex/hmtrump/") + (base32 + "03r1f784ipr2j38y2xy8agl94xwcmyv4pxd0l42iclmx08rczb9q"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/hmtrump") + (synopsis "Describe card games") + (description + "This package provides a font with LuaLaTeX support for describing +card games.") + (license + (list (license:fsf-free + "doc/lualatex/hmtrump/nkd04_playing_cards_index/LICENSE") + license:cc-by-sa4.0)))) + +(define-public texlive-horoscop + (package + (name "texlive-horoscop") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/horoscop/" + "source/latex/horoscop/" + "tex/latex/horoscop/") + (base32 + "08acv1sg37qzq3h14kxv62xhrzrv4psgpychshj3gmzvp4vz0jsn"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/horoscop") + (synopsis "Generate astrological charts in LaTeX") + (description + "The @code{horoscop} package provides a unified interface for +astrological font packages; typesetting with @code{pict2e} of standard wheel +charts and some variations, in PostScript- and PDF-generating TeX engines; and +access to external calculation software (Astrolog and Swiss Ephemeris) for +computing object positions.") + (license license:public-domain))) + (define-public texlive-hrlatex (package (name "texlive-hrlatex") @@ -7554,6 +7983,30 @@ digit form. This package provides support for spelling out numbers in Italian words, both in cardinal and in ordinal form.") (license license:lppl))) +(define-public texlive-jeuxcartes + (package + (name "texlive-jeuxcartes") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/jeuxcartes/" + "tex/latex/jeuxcartes/") + (base32 + "0imwfdwpap755id1k3cqk2p71nqsddc7g8kp3cc8376j4nc34c8a"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/jeuxcartes") + (synopsis "Macros to insert playing cards") + (description + "This package provides macros to insert playing cards, single, or +hand, or random-hand, Poker or French Tarot or Uno, from PNG files.") + (license + (list license:cc-by-sa4.0 + license:expat + license:lgpl2.1 + license:lppl1.3c + license:public-domain)))) + (define-public texlive-jfmutil (package (name "texlive-jfmutil") @@ -7583,6 +8036,25 @@ format, which is a subset of the ZVP format. @end itemize") (license license:expat))) +(define-public texlive-jigsaw + (package + (name "texlive-jigsaw") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/jigsaw/" "tex/latex/jigsaw/") + (base32 + "0qpbsff6saxv2qp4fzyqrprxjy2434ylm11snyc3d59imdmksq0b"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/jigsaw") + (synopsis "Draw jigsaw pieces with TikZ") + (description + "This is a small LaTeX package to draw jigsaw pieces with TikZ. It is +possible to draw individual pieces and adjust their shape, create tile +patterns or automatically generate complete jigsaws.") + (license license:lppl1.3c))) + (define-public texlive-jkmath (package (name "texlive-jkmath") @@ -8089,6 +8561,26 @@ practical guide to LaTeX2e by Mark Trettin. It focuses on obsolete packages and commands.") (license license:public-domain))) +(define-public texlive-labyrinth + (package + (name "texlive-labyrinth") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/labyrinth/" + "tex/latex/labyrinth/") + (base32 + "0i4w3dmfjq9vp6m82p4afplca0pdvk36g2h1yskmwbis07bykdgp"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/labyrinth") + (synopsis "Draw labyrinths and solution paths") + (description + "The @code{labyrinth} package provides code and an environment for +typesetting simple labyrinths with LaTeX, and generating an automatic or +manual solution path.") + (license license:lppl))) + (define-public texlive-lambda (package (name "texlive-lambda") @@ -8569,6 +9061,90 @@ proofs and boxes. It creates proofs in a style similar to that used in @emph{Logic in Computer Science} by Huth and Ryan.") (license license:lppl1.3+))) +(define-public texlive-logicpuzzle + (package + (name "texlive-logicpuzzle") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/logicpuzzle/" + "scripts/logicpuzzle/" + "tex/latex/logicpuzzle/") + (base32 + "1m2yrizdj76gywxkcfz90by2qwx8pq8akacj5qmsin095hnyskfh"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/logicpuzzle") + (synopsis "Typeset (grid-based) logic puzzles") + (description + "The package allows the user to typeset various logic puzzles. At the +moment the following puzzles are supported: + +@itemize + +@item 2D-Sudoku (aka Magiequadrat, Diagon, ...), + +@item Battleship (aka Bimaru, Marinespiel, Batalla Naval, ...), + +@item Bokkusu (aka Kakurasu, Feldersummenratsel, ...), + +@item Bridges (akak Bruckenbau, Hashi, ...), + +@item Chaos Sudoku, + +@item Four Winds (aka Eminent Domain, Lichtstrahl, ...), + +@item Hakyuu (aka Seismic, Ripple Effect, ...), + +@item Hitori, + +@item Kakuro, + +@item Kendoku (aka Mathdoku, Calcudoku, Basic, MiniPlu, Ken Ken, Square +Wisdom, Sukendo, Caldoku, ...), + +@item Killer Sudoku (aka Samunapure, Sum Number Place, Sumdoku, Gebietssummen, +...), + +@item Laser Beam (aka Laserstrahl, ...), + +@item Magic Labyrinth (aka Magic Spiral, Magisches Labyrinth, ...), + +@item Magnets (aka Magnetplatte, Magnetfeld, ...), + +@item Masyu (aka Mashi, White or Black Pearls, ...), + +@item Minesweeper (aka Minensuche, ...), + +@item Nonogram (aka Griddlers, Hanjie, Tsunami, Logic Art, Logimage, ...), + +@item Number Link (aka Alphabet Link, Arukone, Buchstabenbund, ...), + +@item Resuko, + +@item Schatzsuche, + +@item Skyline (aka Skycrapers, Wolkenkratzer, Hochhauser, ...), including +Skyline Sudoku and Skyline Sudou (N*N) variants, + +@item Slitherlink (aka Fences, Number Line, Dotty Dilemma, Sli-Lin, Takegaki, +Great Wall of China, Loop the Loop, Rundweg, Gartenzaun, ...), + +@item Star Battle (aka Sternenschlacht, ...), + +@item Stars and Arrows (aka Sternenhimmel, ...), + +@item Sudoku, + +@item Sun and Moon (aka Sternenhaufen, Munraito, ...), + +@item Tents and Trees (aka Zeltlager, Zeltplatz, Camping, ...), + +@item and Tunnel. + +@end itemize") + (license license:lppl1.3+))) + (define-public texlive-lollipop (package (name "texlive-lollipop") @@ -9209,6 +9785,30 @@ classes, @code{fiche} and @code{cours}, useful to create short high school documents such as tests or lessons. The documentation is in French.") (license license:gpl3+))) +(define-public texlive-mahjong + (package + (name "texlive-mahjong") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/mahjong/" "source/latex/mahjong/" + "tex/latex/mahjong/") + (base32 + "1nkj6kri9dpk3gkms4raldzkj3dhsf54vggivb6nh169s7a16m7q"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/mahjong") + (synopsis "Typeset mahjong tiles using MPSZ Notation") + (description + "The @code{mahjong} package provides a LaTeX interface for typesetting +mahjong tiles using an extended version of MPSZ algebraic notation. Its +features include spaces, rotated, blank, and concealed tiles, as well as red +fives. The size of the mahjong tiles can be controlled using a package option +and an optional argument of @code{\\mahjong}. It is primarily aimed at +Riichi (aka Japanese) Mahjong but can be used to typeset any style of +mahjong.") + (license (list license:expat license:cc-by4.0)))) + (define-public texlive-matapli (package (name "texlive-matapli") @@ -9481,6 +10081,25 @@ representation of common vectors and tensors such as forces, velocities, moments of inertia, etc.") (license license:lppl1.3c))) +(define-public texlive-maze + (package + (name "texlive-maze") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/maze/" "tex/latex/maze/") + (base32 + "0dwsv62rpyll1cfh1qpz6msmypc1a61b1pb0a7lm89ks1cj42zmg"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/maze") + (synopsis "Generate random mazes") + (description + "This package can generate random square mazes of a specified size. +The mazes generated by this package are natural and their solution is not too +obvious. The output it based on the @code{picture} environment.") + (license license:lppl1.3c))) + (define-public texlive-mecaso (package (name "texlive-mecaso") @@ -9945,6 +10564,24 @@ package, where the symbols are taken from the MusiXTeX fonts. But it provides a larger range of symbols and a more flexible, user-friendly interface.") (license license:lppl1.3+))) +(define-public texlive-musikui + (package + (name "texlive-musikui") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/musikui/" "tex/latex/musikui/") + (base32 + "1r5ygiavq51sj0l2jcn8jzc1jafach05a3pz2xvzxmxsxdjgzf02"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/musikui") + (synopsis "Easy creation of ``arithmetical restoration'' puzzles") + (description + "This package permits to easily typeset arithmetical restorations using +LaTeX.") + (license license:lppl))) + (define-public texlive-musixguit (package (name "texlive-musixguit") @@ -10358,6 +10995,30 @@ the columns; tools to color rows and columns with a good PDF result; blocks of cells; etc.") (license license:lppl1.3+))) +(define-public texlive-nimsticks + (package + (name "texlive-nimsticks") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/nimsticks/" + "source/latex/nimsticks/" + "tex/latex/nimsticks/") + (base32 + "0y7v01a02lz6mj1fdyrqzgz7kf7y4m3jarkr3sdyid25k0zx9dbj"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/nimsticks") + (synopsis "Draws sticks for games of multi-pile nim") + (description + "This LaTeX package provides commands @code{\\drawnimstick} to draw +a single nim stick and @code{\\nimgame} which represents games of multi-pile +Nim. Nim sticks are drawn with a little random wobble so they look thrown +together and not too regular. The package also provides options to customise +the size and colour of the sticks, and flexibility to draw heaps of different +objects.") + (license license:expat))) + (define-public texlive-nnext (package (name "texlive-nnext") @@ -10702,6 +11363,51 @@ working with the source code painless (well, less painful). A variety of stylistic variants are available to suit personal taste.") (license license:lppl1.3+))) +(define-public texlive-othello + (package + (name "texlive-othello") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/othello/" + "fonts/source/public/othello/" + "fonts/tfm/public/othello/" + "tex/latex/othello/") + (base32 + "0ijb2giry6bjvx6ll51n9c8fqy1kmwgrwvrg21mxnj9xc4gkdjrh"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (native-inputs (list texlive-metafont)) + (home-page "https://ctan.org/pkg/othello") + (synopsis "Create othello boards") + (description + "This package can be used to create othello boards. It includes also +fonts, as Metafont source.") + (license license:gpl3+))) + +(define-public texlive-othelloboard + (package + (name "texlive-othelloboard") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/othelloboard/" + "tex/latex/othelloboard/") + (base32 + "1kaj01bn4828261n8s761qcv7hg6a5aqi577rqglbkjg9grdh1s6"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/othelloboard") + (synopsis + "Typeset othello (Reversi) diagrams of any size, with annotations") + (description + "The package enables the user to generate high-quality othello (also +known as Reversi) board diagrams of any size. The diagrams support +annotations, including full game transcripts. Automated board or transcript +creation, from plain text formats standard to WZebra (and other programs) is +also supported.") + (license license:lppl1.3+))) + (define-public texlive-otibet (package (name "texlive-otibet") @@ -10836,6 +11542,26 @@ have value when comparing any two texts.") original source, parallel on the same page, one above the other.") (license license:lppl))) +(define-public texlive-pas-crosswords + (package + (name "texlive-pas-crosswords") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/pas-crosswords/" + "tex/latex/pas-crosswords/") + (base32 + "1masrs2ywyxa9rfw7vz9j9jw0b1hhkd5fin2rg7rd2x1qb305q5w"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/pas-crosswords") + (synopsis "Creating crossword grids, using TikZ") + (description + "The package produces crossword grids, using a wide variety of colours +and decorations of the grids and the text in them. The package uses TikZ for +its graphical output.") + (license license:lppl))) + (define-public texlive-pascaltriangle (package (name "texlive-pascaltriangle") @@ -11533,6 +12259,23 @@ elements such as keywords, identifiers, and comments.") algorithms in a natural manner.") (license license:lppl))) +(define-public texlive-psgo + (package + (name "texlive-psgo") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/psgo/" "tex/latex/psgo/") + (base32 + "0ki49zbdn0qvzsz7h53vqwpf4rmiiranq52lh344z7wypznddi28"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/psgo") + (synopsis "Typeset go diagrams with PSTricks") + (description + "This packages can be used to typeset go diagrams with PSTricks.") + (license license:lppl))) + (define-public texlive-psizzl (package (name "texlive-psizzl") @@ -11675,6 +12418,26 @@ systems, with Weyl chambers, weight lattices, and parabolic subgroups.") for typesetting homework assignments, and formula cheat sheets for exams.") (license license:lppl1.3c))) +(define-public texlive-realtranspose + (package + (name "texlive-realtranspose") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/realtranspose/" + "source/latex/realtranspose/" + "tex/latex/realtranspose/") + (base32 + "0ar1yisx6pq8qjhsvb406l5j06y9jkyxvvgq9s1sg15nk9sjzy1r"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/realtranspose") + (synopsis "The ``real'' way to transpose a matrix") + (description + "With @code{realtranspose} you can notate the transposition of a matrix +by rotating the symbols 90 degrees.") + (license license:expat))) + (define-public texlive-rec-thy (package (name "texlive-rec-thy") @@ -11792,6 +12555,28 @@ method description path parameter request body and content type response body, content type and status code.") (license license:lppl1.3c))) +(define-public texlive-reverxii + (package + (name "texlive-reverxii") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/generic/reverxii/" + "source/generic/reverxii/" + "tex/generic/reverxii/") + (base32 + "1gg8qbc8ll3n6rfp3pjshbbjd30s4n3yk219y6qcmz1nv66fp1qq"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (arguments (list #:tex-format "latex")) + (native-inputs (list (texlive-updmap.cfg))) + (home-page "https://ctan.org/pkg/reverxii") + (synopsis "Playing Reversi in TeX") + (description + "Following the lead of @file{xii.tex}, this little program plays +Reversi.") + (license license:lppl1.3c))) + (define-public texlive-revquantum (package (name "texlive-revquantum") @@ -11903,6 +12688,46 @@ German lawyers. Now in the early beginning it only contains @code{rtklage}, a class to make lawsuits.") (license license:lppl))) +(define-public texlive-rubik + (package + (name "texlive-rubik") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/rubik/" + "doc/man/man1/rubikrotation.1" + "doc/man/man1/rubikrotation.man1.pdf" + "scripts/rubik/" + "source/latex/rubik/" + "tex/latex/rubik/") + (base32 + "0v7j88d72acgrj24x8g859k7q6qd47pjy3wdqfvrqq3y39x48011"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (arguments (list #:link-scripts #~(list "rubikrotation.pl"))) + (inputs (list perl)) + (home-page "https://ctan.org/pkg/rubik") + (synopsis "Document Rubik cube configurations and rotation sequences") + (description + "The bundle provides four packages: +@itemize + +@item @code{rubikcube} provides commands for typesetting Rubik cubes +and their transformations, + +@item @code{rubiktwocube} provides commands for typesetting Rubik +twocubes and their transformations, + +@item @code{rubikrotation} can process a sequence of Rubik rotation +moves, with the help of a Perl package executed via +@code{\\write18} (shell escape) commands, + +@item @code{rubikpatterns} is a collection of well known patterns and +their associated rotation sequences. + +@end itemize") + (license license:lppl1.3+))) + (define-public texlive-sankey (package (name "texlive-sankey") @@ -11944,6 +12769,27 @@ their calculations or simulations into LaTeX projects. The package is also capable of overloading the Sweave User Manual and SASweave packages.") (license license:lppl1.3+))) +(define-public texlive-schwalbe-chess + (package + (name "texlive-schwalbe-chess") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/schwalbe-chess/" + "source/latex/schwalbe-chess/" + "tex/latex/schwalbe-chess/") + (base32 + "1i68bl4hb7cagwwb4lyihvdnwgd0irgqp7344m5kmsdxy7z94fmr"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/schwalbe-chess") + (synopsis "Typeset the German chess magazine @emph{Die Schwalbe}") + (description + "The package is used to typeset the German chess magazine @emph{Die +Schwalbe}. It is based on @code{chess-problem-diagrams}, which in its turn +has a dependency on the @code{bartel-chess-fonts}.") + (license license:lppl1.2+))) + (define-public texlive-sciposter (package (name "texlive-sciposter") @@ -11987,6 +12833,24 @@ effortless pretty-printing of SuperCollider source code in documents typeset with LaTeX and friends.") (license license:lppl1.3+))) +(define-public texlive-scrabble + (package + (name "texlive-scrabble") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/scrabble/" "tex/latex/scrabble/") + (base32 + "1wr85x1kh6457sr61cq6mx8z6zrf61c9659a941wakc610sbqlsx"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/scrabble") + (synopsis "Commands for Scrabble boards") + (description + "This package provides some commands (in English and in French) to work +with a Scrabble board.") + (license license:lppl1.3c))) + (define-public texlive-scratchx (package (name "texlive-scratchx") @@ -12163,6 +13027,27 @@ book.") electrical and electronics engineers and graph theorists.") (license license:lppl))) +(define-public texlive-sgame + (package + (name "texlive-sgame") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/sgame/" "tex/latex/sgame/") + (base32 + "0kzrimwmgwa3f61vawc1fq5vvgx4pxa2586wqhd4cf66ywdikn0v"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/sgame") + (synopsis "LaTeX style for typesetting strategic games") + (description + "This package can be used to format strategic games. For a 2x2 game, +for example, the input: @samp{\\begin@{game@}{2}{2} &$L$ &$M$\\\\ $T$ &$2,2$ +&$2,0$\\\\ $B$ &$3,0$ &$0,9$ \\end@{game@}} produces output with (a) boxes +around the payoffs, (b) payoff columns of equal width, and (c) payoffs +vertically centered within the boxes.") + (license license:lppl))) + (define-public texlive-shuffle (package (name "texlive-shuffle") @@ -12331,6 +13216,54 @@ International System of Units (SI). Note that the package is now superseded by @code{siunitx}; @code{siunits} has maintenance-only support, now.") (license license:lppl1.3+))) +(define-public texlive-skak + (package + (name "texlive-skak") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/skak/" + "fonts/source/public/skak/" + "fonts/tfm/public/skak/" "tex/latex/skak/") + (base32 + "12fbzvyz40fnb9v5y80wkmv1fmvi7frbyv28k68lagdalm7mwp3b"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (native-inputs (list texlive-metafont)) + (home-page "https://ctan.org/pkg/skak") + (synopsis "Fonts and macros for typesetting chess games") + (description + "This package provides macros and fonts in Metafont format which can be +used to typeset chess games using PGN, and to show diagrams of the current +board in a document. An Adobe Type 1 implementation of skak's fonts is +available as package @code{skaknew}; an alternative chess notational scheme is +available in package @code{texmate}, and a general mechanism for selecting +chess fonts is provided in @code{chessfss}.") + (license license:lppl))) + +(define-public texlive-skaknew + (package + (name "texlive-skaknew") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/fonts/skaknew/" + "fonts/afm/public/skaknew/" + "fonts/map/dvips/skaknew/" + "fonts/opentype/public/skaknew/" + "fonts/tfm/public/skaknew/" + "fonts/type1/public/skaknew/") + (base32 + "1jpm36qb65jbsrhq1yqhwajqz3jg35wid0wlav9hk7q4hd58qi4r"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/skaknew") + (synopsis "The @code{skak} chess fonts redone in Adobe Type 1") + (description + "This package offers Adobe Type 1 versions of the fonts provided as +Metafont source by the @code{skak} bundle.") + (license license:lppl))) + (define-public texlive-skmath (package (name "texlive-skmath") @@ -12432,6 +13365,28 @@ scripture references); @end itemize") (license license:gpl2))) +(define-public texlive-soup + (package + (name "texlive-soup") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/soup/" "source/latex/soup/" + "tex/latex/soup/") + (base32 + "04lpc3nn45i66cwnjn0sycdpfaynzkb19djyfi8ca3ppb1sn79z6"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/soup") + (synopsis "Generate alphabet soup puzzles") + (description + "This package generates alphabet soup puzzles (aka word search puzzles), +and variations using numbers or other symbols. It provides macros to generate +an alphabet soup style puzzle (also known as word search puzzles or +find-the-word puzzles). It also allows creating number soup and soups with +custom symbol sets.") + (license license:lppl1.3+))) + (define-public texlive-spalign (package (name "texlive-spalign") @@ -12770,6 +13725,51 @@ mode by providing an optional argument to @samp{_}. This is implemented by using the @code{\\text@{@}} command from the @code{amstext} package.") (license license:gpl3))) +(define-public texlive-sudoku + (package + (name "texlive-sudoku") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/sudoku/" "source/latex/sudoku/" + "tex/latex/sudoku/") + (base32 + "14g1kkxinp9l57yvdpbdx4wclgka71gilcbxl1dc6sdj4cmw7mbz"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/sudoku") + (synopsis "Create sudoku grids") + (description + "The @code{sudoku} package provides an environment for typesetting sudoku +grids.") + (license license:lppl))) + +(define-public texlive-sudokubundle + (package + (name "texlive-sudokubundle") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/sudokubundle/" + "source/latex/sudokubundle/" + "tex/latex/sudokubundle/") + (base32 + "1swsx8r0chgxv8h27syj4h5cf7lnj6mxvwhhzixbkjg6scrvd8kw"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/sudokubundle") + (synopsis "A set of sudoku-related packages") + (description + "The bundle provides three packages: @code{printsudoku}, which provides +a command @code{\\sudoku} whose argument is the name of a file containing +a puzzle specification; @code{solvesudoku}, which attempts to find a solution +to the puzzle in the file named in the argument; and @code{createsudoku}, +which uses the @code{random} package to generate a puzzle according to a bunch +of parameters that the user sets via macros. + +The bundle comes with a set of ready-prepared puzzle files.") + (license license:lppl))) + (define-public texlive-susy (package (name "texlive-susy") @@ -12946,6 +13946,27 @@ package requires that shell escape be enabled.") variations of functions as they are used in France.") (license license:lppl1.3+))) +(define-public texlive-tangramtikz + (package + (name "texlive-tangramtikz") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/tangramtikz/" + "tex/latex/tangramtikz/") + (base32 + "18n67k7ggqh3mvp8iqyp44d70gh3s8jfbwbp3ympv2ff5drjjb3l"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/tangramtikz") + (synopsis "Tangram puzzles, with TikZ") + (description + "This package provides some commands (with English and French keys) to +work with tangram puzzles: @code{\\begin{EnvTangramTikz}} and +@code{\\PieceTangram} to position a piece, @code{\\TangramTikz} to display +a predefined tangram.") + (license license:lppl1.3c))) + (define-public texlive-tdsfrmath (package (name "texlive-tdsfrmath") @@ -13702,6 +14723,32 @@ bundle, for which map files are available to provide a Vietnamese version.") (license (list license:lppl1.3+ (license:fsf-free "file://source/generic/vntex/LICENSE-utopia.txt"))))) +(define-public texlive-wargame + (package + (name "texlive-wargame") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/wargame/" "source/latex/wargame/" + "tex/latex/wargame/") + (base32 + "1j56fnq5m298ly650v0k7qla15kiwcwswsd7454wqv9f191gmhhh"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/wargame") + (synopsis "LaTeX package to prepare hex'n'counter wargames") + (description + "This package can help make classic Hex'n'Counter wargames using LaTeX. +The package provide tools for generating Hex maps and boards Counters for +units, markers, and so on Counter sheets Order of Battle charts Illustrations +in the rules using the defined maps and counters The result will often be +a PDF (or set of PDFs) that contain everything one will need for +a game (rules, charts, boards, counter sheets). The package uses NATO App6 +symbology for units. The package uses NATO App6 symbology for units. The +package uses TikZ for most things. The package support exporting the game to +a VASSAL module.") + (license license:cc-by-sa4.0))) + (define-public texlive-witharrows (package (name "texlive-witharrows") @@ -13831,6 +14878,47 @@ Cyrillic Mongolian using either XeLaTeX or LuaLaTeX. The command to be able to create multilingual documents.") (license license:lppl1.3c))) +(define-public texlive-xq + (package + (name "texlive-xq") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/fonts/xq/" "fonts/source/public/xq/" + "fonts/tfm/public/xq/" "tex/latex/xq/") + (base32 + "1g9j4vdlcnidv247bmagqd7q357h6fkg3b5cx1765n38k1bx8ikx"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (native-inputs (list texlive-metafont)) + (home-page "https://ctan.org/pkg/xq") + (synopsis "Support for writing about xiangqi") + (description + "The package is for writing about xiangqi or chinese chess. You can +write games or parts of games and show diagrams with special positions.") + (license license:lppl))) + +(define-public texlive-xskak + (package + (name "texlive-xskak") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "doc/latex/xskak/" "source/latex/xskak/" + "tex/latex/xskak/") + (base32 + "0b17y5i24adpb7f8jxf3lc5zwb1q4yf3w2vx9ql73xpi39xg6mcj"))) + (outputs '("out" "doc")) + (build-system texlive-build-system) + (home-page "https://ctan.org/pkg/xskak") + (synopsis "Extension to the @code{skak} package for chess typesetting") + (description + "Xskak, as its prime function, saves information about a chess game for +later use (e.g., to loop through a game to make an animated board). The +package also extends the input that the parsing commands can handle and offers +an interface to define and switch between indefinite levels of styles.") + (license license:lppl))) + (define-public texlive-xyling (package (name "texlive-xyling") @@ -37577,267 +38665,6 @@ documents as well as DVI output.") (define-deprecated-package texlive-generic-pdftex texlive-pdftex) -(define texlive-bin-full - (package/inherit texlive-bin - (name "texlive-bin-full") - (arguments - (substitute-keyword-arguments (package-arguments texlive-bin) - ((#:configure-flags _) - #~(let ((kpathsea #$(this-package-input "texlive-libkpathsea"))) - (list "--with-banner-add=/GNU Guix" - "--enable-shared" - "--disable-native-texlive-build" - "--disable-static" - "--disable-kpathsea" - "--with-system-cairo" - "--with-system-freetype2" - "--with-system-gd" - "--with-system-gmp" - "--with-system-graphite2" - "--with-system-harfbuzz" - "--with-system-icu" - "--with-system-libgs" - "--with-system-libpaper" - "--with-system-libpng" - "--with-system-mpfr" - "--with-system-pixman" - "--with-system-potrace" - "--with-system-teckit" - "--with-system-zlib" - "--with-system-zziplib" - ;; Help locating external kpathsea. For some reason - ;; PKG-CONFIG is unable to find it. - "--with-system-kpathsea" - (format #f "--with-kpathsea-includes=~a/include" kpathsea) - (format #f "--with-kpathsea-lib=~a/lib" kpathsea) - ;; LuaJIT is not ported to some architectures yet. - #$@(if (or (target-ppc64le?) - (target-riscv64?)) - '("--disable-luajittex" - "--disable-luajithbtex" - "--disable-mfluajit") - '())))) - ((#:phases phases) - #~(modify-phases #$phases - (add-after 'install 'symlink-kpathsea-binaries - (lambda _ - (let ((bin (string-append - #$(this-package-input "texlive-libkpathsea") - "/bin")) - (files - '("kpseaccess" "kpsereadlink" "kpsestat" "kpsewhich"))) - (with-directory-excursion (string-append #$output "/bin") - (for-each (lambda (b) (symlink (string-append bin "/" b) b)) - files))))) - (add-after 'install 'merge-core-scripts - (lambda* (#:key inputs native-inputs #:allow-other-keys) - (let ((texlive-scripts - (dirname - (dirname - (search-input-file (or native-inputs inputs) - "tlpkg/texlive.tlpdb")))) - (tlpkg (string-append #$output "/share/tlpkg"))) - ;; "tlpkg" directory is neither provided by texlive-bin nor - ;; by texlive-texmf. - (mkdir-p tlpkg) - (copy-recursively (string-append texlive-scripts "/tlpkg") - tlpkg) - ;; texlive-bin source doesn't provide this Perl script. - ;; Yet, it is referenced in "fmtutil.pl" so we need to move - ;; it here too. - (install-file - (string-append texlive-scripts - "/texmf-dist/scripts/texlive/mktexlsr.pl") - (string-append #$output - "/share/texmf-dist/scripts/texlive"))))) - (add-after 'merge-core-scripts 'patch-core-scripts - (lambda _ - (with-directory-excursion - (string-append #$output "/share/texmf-dist/scripts/texlive") - ;; Make sure that fmtutil can find its Perl modules. - (substitute* "fmtutil.pl" - (("\\$TEXMFROOT/") - (string-append #$output "/share/"))) - ;; Likewise for updmap.pl. - (substitute* "updmap.pl" - (("\\$TEXMFROOT/tlpkg") - (string-append #$output "/share/tlpkg"))) - ;; Likewise for the tlmgr. - (substitute* "tlmgr.pl" - ((".*\\$::installerdir = \\$Master.*" all) - (format #f " $Master = ~s;~%~a" - (string-append #$output "/share") - all)))))) - (add-after 'patch-core-scripts 'patch-shell-scripts - (lambda _ - (with-directory-excursion - (string-append #$output "/share/texmf-dist/scripts") - ;; First patch shell scripts with ".sh" extension. - (let* ((scripts (find-files "." "\\.sh$")) - (commands '("awk" "basename" "cat" "grep" "mkdir" "rm" - "sed" "sort" "uname")) - (command-regexp - (format #f "\\b(~a)\\b" (string-join commands "|"))) - (iso-8859-1-encoded-scripts - '("./texlive-extra/rubibtex.sh" - "./texlive-extra/rumakeindex.sh"))) - (define (substitute-commands scripts) - (substitute* scripts - ((command-regexp dummy command) - (which command)))) - (substitute-commands - (lset-difference string= scripts iso-8859-1-encoded-scripts)) - (with-fluids ((%default-port-encoding "ISO-8859-1")) - (substitute-commands iso-8859-1-encoded-scripts))) - ;; Then patch scripts without such extension. - (let ((dirs (map (compose dirname which) - (list "awk" "cat" "grep" "sed")))) - (substitute* (find-files "texlive" "^mktex(mf|pk|tfm)$") - (("^version=" m) - (format #false "PATH=\"~{~a:~}$PATH\"; export PATH~%~a" - dirs m))))))))))) - (native-inputs - (modify-inputs (package-native-inputs texlive-bin) - (append (package-source texlive-scripts)))) - (inputs - (modify-inputs (package-inputs texlive-bin) - (append texlive-libkpathsea))) - (propagated-inputs '()))) - -(define texlive-texmf - (package - (name "texlive-texmf") - (version (package-version texlive-bin)) - (source (origin - (method url-fetch) - (uri (string-append "ftp://tug.org/historic/systems/texlive/" - (string-take version 4) - "/texlive-" version "-texmf.tar.xz")) - (sha256 - (base32 - "0lqjm11pr9vasvivaci3k9xcmdyd08ldnh31zf8avjjs09xcfkac")))) - (build-system copy-build-system) - (arguments - (list - #:modules '((guix build copy-build-system) - (guix build utils) - (srfi srfi-1) - (srfi srfi-26)) - ;; This package takes 4 GiB, which we can't afford to distribute from - ;; our servers. - #:substitutable? #f - #:install-plan #~'(("texmf-dist/" "share/texmf-dist")) - #:phases - #~(modify-phases %standard-phases - (add-after 'install 'texmf-config - (lambda* (#:key inputs native-inputs #:allow-other-keys) - (let* ((share (string-append #$output "/share")) - (texmf-dist (string-append share "/texmf-dist")) - (web2c (string-append texmf-dist "/web2c")) - (fmtutil.cnf (string-append web2c "/fmtutil.cnf")) - (texlive-bin - #$(this-package-native-input "texlive-bin-full"))) - ;; LuaJIT is not ported to powerpc64* yet. - (if #$(target-ppc64le?) - (substitute* fmtutil.cnf - (("^(luajittex|luajithbtex|mfluajit)" m) - (string-append "#! " m)))) - ;; Register paths in texmfcnf.lua, needed for context. - (substitute* (string-append web2c "/texmfcnf.lua") - (("selfautodir:") #$output) - (("selfautoparent:") (string-append share "/"))) - ;; Set path to TeXLive Perl modules - (setenv "PERL5LIB" - (string-append (getenv "PERL5LIB") ":" - (string-append texlive-bin - "/share/tlpkg"))) - ;; Configure the texmf-dist tree. - (setenv "GUIX_TEXMF" texmf-dist) - (setenv "PATH" - (string-append (getenv "PATH") ":" texlive-bin "/bin:")) - (let ((updmap.cfg (string-append web2c "/updmap.cfg"))) - (invoke (string-append texlive-bin "/bin/updmap-sys") - "--nohash" "--syncwithtrees" - (string-append "--cnffile=" updmap.cfg))) - (invoke (string-append texlive-bin "/bin/fmtutil-sys") - "--cnffile" fmtutil.cnf - "--all" - "--fmtdir" web2c))))))) - (native-inputs (list texlive-bin-full)) - (inputs (list lua perl python-wrapper ruby tcsh)) - (properties `((max-silent-time . 9600))) ; don't time out while grafting - (synopsis "TeX Live, a package of the TeX typesetting system") - (description - "TeX Live provides a comprehensive TeX document production system. -It includes all the major TeX-related programs, macro packages, and fonts -that are free software, including support for many languages around the -world. - -This package contains the complete tree of texmf-dist data.") - (license (license:fsf-free "https://www.tug.org/texlive/copying.html")) - (home-page "https://www.tug.org/texlive/"))) - -(define-public texlive - (package - (name "texlive") - (version (package-version texlive-bin)) - (source #f) - (build-system trivial-build-system) - (arguments - (list - #:modules '((guix build utils)) - #:builder - ;; Build the union of texlive-bin-full and texlive-texmf, but take the - ;; conflicting subdirectory share/texmf-dist from texlive-texmf. - #~(begin - (use-modules (guix build utils)) - (let ((bin #$(this-package-input "texlive-bin-full")) - (texmf #$(this-package-input "texlive-texmf"))) - (mkdir #$output) - (with-directory-excursion #$output - ;; "include/" and "lib/" directories. - (for-each - (lambda (name) - (symlink (string-append bin "/" name) name)) - '("include" "lib")) - ;; "bin/" directory. - (mkdir "bin") - (with-directory-excursion "bin" - (for-each - (lambda (name) (symlink name (basename name))) - (find-files (string-append bin "/bin/") ""))) - ;; "share/info", "share/man", share/texmf-dist/" and - ;; "share/tlpkg/" directories. - (mkdir "share") - (with-directory-excursion "share" - (for-each - (lambda (name) - (symlink (string-append bin "/share/" name) name)) - '("info" "man" "tlpkg")) - (symlink (string-append texmf "/share/texmf-dist") - "texmf-dist")) - ;; Now everything is in place, generate ls-R file. - (setenv "PATH" - (string-append - (getenv "PATH") ":" - #$(this-package-input "texlive-bin-full") "/bin")) - (invoke (string-append bin "/bin/mktexlsr"))))))) - (inputs (list texlive-bin-full texlive-texmf)) - (propagated-inputs (list texlive-libkpathsea)) - (native-search-paths - (list (search-path-specification - (variable "TEXMFLOCAL") - (files '("share/texmf-local"))))) - (synopsis "TeX Live, a package of the TeX typesetting system") - (description - "TeX Live provides a comprehensive TeX document production system. -It includes all the major TeX-related programs, macro packages, and fonts that -are free software, including support for many languages around the world. - -This package contains the complete TeX Live distribution.") - (license (license:fsf-free "https://www.tug.org/texlive/copying.html")) - (home-page "https://www.tug.org/texlive/"))) - (define-public texlive-biber (package (name "texlive-biber") @@ -44939,6 +45766,69 @@ includes the Aleph engine and related Omega formats and packages, and the HiTeX engine and related.") (license (license:fsf-free "https://www.tug.org/texlive/copying.html")))) +(define-public texlive-collection-games + (package + (name "texlive-collection-games") + (version (number->string %texlive-revision)) + (source #f) + (build-system trivial-build-system) + (arguments (list #:builder #~(mkdir #$output))) + (propagated-inputs + (list texlive-bartel-chess-fonts + texlive-chess + texlive-chess-problem-diagrams + texlive-chessboard + texlive-chessfss + texlive-chinesechess + texlive-collection-latex + texlive-crossword + texlive-crosswrd + texlive-customdice + texlive-egameps + texlive-gamebook + texlive-gamebooklib + texlive-go + texlive-hanoi + texlive-havannah + texlive-hexboard + texlive-hexgame + texlive-hmtrump + texlive-horoscop + texlive-jeuxcartes + texlive-jigsaw + texlive-labyrinth + texlive-logicpuzzle + texlive-mahjong + texlive-maze + texlive-musikui + texlive-nimsticks + texlive-onedown + texlive-othello + texlive-othelloboard + texlive-pas-crosswords + texlive-psgo + texlive-realtranspose + texlive-reverxii + texlive-rubik + texlive-schwalbe-chess + texlive-scrabble + texlive-sgame + texlive-skak + texlive-skaknew + texlive-soup + texlive-sudoku + texlive-sudokubundle + texlive-tangramtikz + texlive-wargame + texlive-xq + texlive-xskak)) + (home-page "https://www.tug.org/texlive/") + (synopsis "Games typesetting") + (description + "This collection includes setups for typesetting various games, +including chess.") + (license (license:fsf-free "https://www.tug.org/texlive/copying.html")))) + (define-public texlive-collection-humanities (package (name "texlive-collection-humanities") diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm new file mode 100644 index 0000000000..0204a256ef --- /dev/null +++ b/gnu/packages/texlive.scm @@ -0,0 +1,416 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2016 Roel Janssen <roel@gnu.org> +;;; Copyright © 2016, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> +;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> +;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017, 2020, 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org> +;;; Copyright © 2018, 2020 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com> +;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> +;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru> +;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages texlive) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) + #:use-module (guix utils) + #:use-module (gnu packages autotools) + #:use-module (gnu packages bash) + #:use-module (gnu packages compression) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages gd) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages image) + #:use-module (gnu packages lua) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages ruby) + #:use-module (gnu packages shells) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg)) + +(define %texlive-date "20230313") +(define %texlive-year (string-take %texlive-date 4)) + +(define texlive-extra-src + (origin + (method url-fetch) + (uri (string-append "ftp://tug.org/historic/systems/texlive/" + %texlive-year "/texlive-" + %texlive-date "-extra.tar.xz")) + (sha256 (base32 + "1hiqvdg679yadygf23f37b3dz5ick258k1qcam9nhkhprkx7d9l0")))) + +(define texlive-texmf-src + (origin + (method url-fetch) + (uri (string-append "ftp://tug.org/historic/systems/texlive/" + %texlive-year "/texlive-" + %texlive-date "-texmf.tar.xz")) + (sha256 (base32 + "0lqjm11pr9vasvivaci3k9xcmdyd08ldnh31zf8avjjs09xcfkac")))) + +(define texlivebin + (package + (name "texlivebin") + (version %texlive-date) + (source + (origin + (method url-fetch) + (uri (string-append "ftp://tug.org/historic/systems/texlive/" + %texlive-year "/texlive-" + %texlive-date "-source.tar.xz")) + (sha256 + (base32 + "1fbrkv7g9j6ipmwjx27l8l9l974rmply8bhf7c2iqc6h3q7aly1q")) + (modules '((guix build utils) + (ice-9 ftw))) + (snippet + ;; TODO: Unbundle stuff in texk/dvisvgm/dvisvgm-src/libs too. + '(with-directory-excursion "libs" + (let ((preserved-directories + '("." ".." "lua53" "luajit" "pplib" "xpdf"))) + ;; Delete bundled software, except Lua which cannot easily be + ;; used as an external dependency, pplib and xpdf which aren't + ;; supported as system libraries (see m4/kpse-xpdf-flags.m4). + (for-each + delete-file-recursively + (scandir "." + (lambda (file) + (and (not (member file preserved-directories)) + (eq? 'directory (stat:type (stat file)))))))))))) + (build-system gnu-build-system) + (inputs + `(("texlive-extra-src" ,texlive-extra-src) + ("config" ,config) + ("cairo" ,cairo) + ("fontconfig" ,fontconfig) + ("fontforge" ,fontforge) + ("freetype" ,freetype) + ("gd" ,gd) + ("gmp" ,gmp) + ("ghostscript" ,ghostscript) + ("graphite2" ,graphite2) + ("harfbuzz" ,harfbuzz) + ("icu4c" ,icu4c) + ("libpaper" ,libpaper) + ("libpng" ,libpng) + ("libxaw" ,libxaw) + ("libxt" ,libxt) + ("mpfr" ,mpfr) + ("perl" ,perl) + ("pixman" ,pixman) + ("potrace" ,potrace) + ("python" ,python) + ("ruby" ,ruby-2.7) + ("tcsh" ,tcsh) + ("teckit" ,teckit) + ("zlib" ,zlib) + ("zziplib" ,zziplib))) + (native-inputs + (list pkg-config)) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 ftw) + (srfi srfi-1) + (srfi srfi-26)) + #:out-of-source? #t + #:configure-flags + '("--disable-static" + "--disable-native-texlive-build" + "--enable-shared" + "--with-banner-add=/GNU Guix" + "--with-system-cairo" + "--with-system-freetype2" + "--with-system-gd" + "--with-system-gmp" + "--with-system-graphite2" + "--with-system-harfbuzz" + "--with-system-icu" + "--with-system-libpaper" + "--with-system-libpng" + "--with-system-mpfr" + "--with-system-pixman" + "--with-system-potrace" + "--with-system-teckit" + "--with-system-zlib" + "--with-system-zziplib" + ;; LuaJIT is not ported to some architectures yet. + ,@(if (or (target-ppc64le?) + (target-riscv64?)) + '("--disable-luajittex" + "--disable-luajithbtex" + "--disable-mfluajit") + '())) + + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-psutils-test + (lambda _ + ;; This test fails due to a rounding difference with libpaper 1.2: + ;; https://github.com/rrthomas/libpaper/issues/23 + ;; Adjust the expected outcome to account for the minute difference. + (substitute* "texk/psutils/tests/playres.ps" + (("844\\.647799") + "844.647797")))) + (add-after 'unpack 'configure-ghostscript-executable + ;; ps2eps.pl uses the "gswin32c" ghostscript executable on Windows, + ;; and the "gs" ghostscript executable on Unix. It detects Unix by + ;; checking for the existence of the /usr/bin directory. Since + ;; Guix System does not have /usr/bin, it is also detected as Windows. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "utils/ps2eps/ps2eps-src/bin/ps2eps.pl" + (("gswin32c") "gs")) + (substitute* "texk/texlive/linked_scripts/epstopdf/epstopdf.pl" + (("\"gs\"") + (string-append "\"" (assoc-ref inputs "ghostscript") "/bin/gs\""))))) + (add-after 'unpack 'unpack-texlive-extra + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "texlive-extra") + (with-directory-excursion "texlive-extra" + (apply (assoc-ref %standard-phases 'unpack) + (list #:source (assoc-ref inputs "texlive-extra-src")))))) + (add-after 'install 'post-install + (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) + (let* ((out (assoc-ref outputs "out")) + (patch-source-shebangs (assoc-ref %standard-phases + 'patch-source-shebangs)) + (share (string-append out "/share")) + (source (string-append + "../" (first (scandir ".." (cut string-suffix? + "source" <>))))) + (tl-extra-root (string-append source "/texlive-extra")) + (tl-extra-dir (first + (scandir tl-extra-root + (negate + (cut member <> '("." "..")))))) + (tlpkg-src (string-append tl-extra-root "/" tl-extra-dir + "/tlpkg")) + (config.guess (search-input-file inputs + "/bin/config.guess"))) + + ;; Create symbolic links for the latex variants and their man + ;; pages. We link lualatex to luahbtex; see issue #51252 for + ;; details. + (with-directory-excursion (string-append out "/bin/") + (for-each symlink + '("pdftex" "pdftex" "xetex" "luahbtex") + '("latex" "pdflatex" "xelatex" "lualatex"))) + (with-directory-excursion (string-append share "/man/man1/") + (symlink "luatex.1" "lualatex.1")) + + ;; Install tlpkg. + (copy-recursively tlpkg-src (string-append share "/tlpkg")) + (with-directory-excursion share + ;; Make sure tlmgr finds its Perl modules. + ;; tlmgr is a script in bin/ that runs tlmgr.pl in + ;; texmf-dist/; so although texmf-dist/ will be discarded in + ;; the texlive package in favour of the one from texlivetexmf, + ;; through the absolute path our modifications will be used + ;; by the script. + (substitute* "texmf-dist/scripts/texlive/tlmgr.pl" + ((".*\\$::installerdir = \\$Master.*" all) + (format #f " $Master = ~s;~%~a" share all))) + ;; Install the config.guess script, required by tlmgr. + (mkdir-p "tlpkg/installer/") + (symlink config.guess "tlpkg/installer/config.guess")) + + ;; texlua shebangs are not patched by the patch-source-shebangs + ;; phase because the texlua executable does not exist at that + ;; time. + (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")) + (with-directory-excursion out + (patch-source-shebangs)))))))) + + (synopsis "TeX Live, a package of the TeX typesetting system") + (description + "TeX Live provides a comprehensive TeX document production system. +It includes all the major TeX-related programs, macro packages, and fonts +that are free software, including support for many languages around the +world. + +This package contains the binaries.") + (license (license:fsf-free "https://www.tug.org/texlive/copying.html")) + (home-page "https://www.tug.org/texlive/"))) + + +(define texlivetexmf + (package + (name "texlivetexmf") + (version %texlive-date) + (source texlive-texmf-src) + (build-system gnu-build-system) + (inputs + `(("texlive-bin" ,texlivebin) + ("lua" ,lua) + ("perl" ,perl) + ("python" ,python) + ("ruby" ,ruby) + ("tcsh" ,tcsh))) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + + ;; This package takes 4 GiB, which we can't afford to distribute from + ;; our servers. + #:substitutable? #f + + #:phases + (modify-phases (map (cut assq <> %standard-phases) + '(set-paths unpack patch-source-shebangs)) + (add-after 'unpack 'unset-environment-variables + (lambda _ + (unsetenv "TEXMF") + (unsetenv "TEXMFCNF") + #t)) + (add-after 'patch-source-shebangs 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((share (string-append (assoc-ref outputs "out") "/share"))) + (mkdir-p share) + (invoke "mv" "texmf-dist" share)))) + (add-after 'install 'texmf-config + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share")) + (texmfroot (string-append share "/texmf-dist/web2c")) + (texmfcnf (string-append texmfroot "/texmf.cnf")) + (fmtutilcnf (string-append texmfroot "/fmtutil.cnf")) + (texlive-bin (assoc-ref inputs "texlive-bin")) + (texbin (string-append texlive-bin "/bin")) + (tlpkg (string-append texlive-bin "/share/tlpkg"))) + ;; LuaJIT is not ported to powerpc64* yet. + (if ,(target-ppc64le?) + (substitute* fmtutilcnf + (("^(luajittex|luajithbtex|mfluajit)" m) + (string-append "#! " m)))) + ;; Register SHARE as TEXMFROOT in texmf.cnf. + (substitute* texmfcnf + (("TEXMFROOT = \\$SELFAUTOPARENT") + (string-append "TEXMFROOT = " share)) + (("TEXMFLOCAL = \\$SELFAUTOGRANDPARENT/texmf-local") + "TEXMFLOCAL = $SELFAUTODIR/share/texmf-local") + (("!!\\$TEXMFLOCAL") "$TEXMFLOCAL")) + ;; Register paths in texmfcnf.lua, needed for context. + (substitute* (string-append texmfroot "/texmfcnf.lua") + (("selfautodir:") out) + (("selfautoparent:") (string-append share "/"))) + ;; Set path to TeXLive Perl modules + (setenv "PERL5LIB" + (string-append (getenv "PERL5LIB") ":" tlpkg)) + ;; Configure the texmf-dist tree; inspired from + ;; http://slackbuilds.org/repository/13.37/office/texlive/ + (setenv "PATH" (string-append (getenv "PATH") ":" texbin)) + (setenv "TEXMFCNF" texmfroot) + (invoke "updmap-sys" "--nohash" "--syncwithtrees") + (invoke "mktexlsr") + (invoke "fmtutil-sys" "--all"))))))) + (properties `((max-silent-time . 9600))) ; don't time out while grafting + (synopsis "TeX Live, a package of the TeX typesetting system") + (description + "TeX Live provides a comprehensive TeX document production system. +It includes all the major TeX-related programs, macro packages, and fonts +that are free software, including support for many languages around the +world. + +This package contains the complete tree of texmf-dist data.") + (license (license:fsf-free "https://www.tug.org/texlive/copying.html")) + (home-page "https://www.tug.org/texlive/"))) + +(define-public texlive + (package + (name "texlive") + (version %texlive-date) + (source #f) + (build-system trivial-build-system) + (inputs `(("bash" ,bash-minimal) ;for wrap-program + ("texlive-bin" ,texlivebin) + ("texlive-texmf" ,texlivetexmf))) + (native-search-paths + (list (search-path-specification + (variable "TEXMFLOCAL") + (files '("share/texmf-local"))))) + (arguments + `(#:modules ((guix build utils)) + #:builder + ;; Build the union of texlive-bin and texlive-texmf, but take the + ;; conflicting subdirectory share/texmf-dist from texlive-texmf. + (begin + (use-modules (guix build utils)) + (let ((out (assoc-ref %outputs "out")) + (bin (assoc-ref %build-inputs "texlive-bin")) + (texmf (assoc-ref %build-inputs "texlive-texmf")) + (bash (assoc-ref %build-inputs "bash"))) + (mkdir out) + (with-directory-excursion out + (for-each + (lambda (name) + (symlink (string-append bin "/" name) name)) + '("include" "lib")) + (mkdir "bin") + (with-directory-excursion "bin" + (setenv "PATH" (string-append bash "/bin")) + (for-each + (lambda (name) + (symlink name (basename name)) + (wrap-program + (basename name) + `("TEXMFCNF" = + (,(string-append texmf "/share/texmf-dist/web2c"))))) + (find-files (string-append bin "/bin/") ""))) + (mkdir "share") + (with-directory-excursion "share" + (for-each + (lambda (name) + (symlink (string-append bin "/share/" name) name)) + '("info" "man" "tlpkg")) + (for-each + (lambda (name) + (symlink (string-append texmf "/share/" name) name)) + '("texmf-dist" "texmf-var")))) + #t)))) + (synopsis "TeX Live, a package of the TeX typesetting system") + (description + "TeX Live provides a comprehensive TeX document production system. +It includes all the major TeX-related programs, macro packages, and fonts +that are free software, including support for many languages around the +world. + +This package contains the complete TeX Live distribution.") + (license (license:fsf-free "https://www.tug.org/texlive/copying.html")) + (home-page "https://www.tug.org/texlive/"))) + diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 7df68e8f53..9b0e72b5ed 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2158,7 +2158,7 @@ streaming protocols.") (inputs (list alsa-lib cdparanoia - ffmpeg-4 + ffmpeg-5 fontconfig freetype giflib @@ -4583,7 +4583,7 @@ tools for styling them, including a built-in real-time video preview.") python-pygobject)) ;; Propagate librsvg so that is is registered in GDK_PIXBUF_MODULE_FILE, ;; otherwise pitivi fails to launch. - (propagated-inputs (list librsvg)) + (propagated-inputs (list (librsvg-for-system))) (arguments `(#:glib-or-gtk? #t #:phases diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm index fda4c38dfe..72b6682385 100644 --- a/gnu/packages/vnc.scm +++ b/gnu/packages/vnc.scm @@ -130,7 +130,7 @@ ffmpeg freerdp ; for rdp plugin libgcrypt - librsvg + (librsvg-for-system) glib gnome-keyring gsettings-desktop-schemas diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 4b0e33ca63..ac46cffb19 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -586,7 +586,7 @@ driven and does not detract you from your daily work.") (define-public nyxt (package (name "nyxt") - (version "3.5.0") + (version "3.6.0") (source (origin (method git-fetch) @@ -595,7 +595,7 @@ driven and does not detract you from your daily work.") (commit version))) (sha256 (base32 - "13ldi191ccxyxr3hjxyhnjl2vw365v0fhb1pqia7rg1gl3id47gz")) + "1difs5hw4avzfn2f33gi0w8nz9ja9fvwsl5m9f8izr8zsqlw98qd")) (file-name (git-file-name "nyxt" version)) (modules '((guix build utils))) (snippet @@ -656,6 +656,7 @@ driven and does not detract you from your daily work.") sbcl-cl-ppcre sbcl-cl-prevalence sbcl-cl-qrencode + sbcl-cl-sqlite sbcl-cl-str sbcl-cl-tld sbcl-closer-mop diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 32afa3a921..294a18cdd2 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -60,6 +60,7 @@ ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> ;;; Copyright © 2023 Jake Leporte <jakeleporte@outlook.com> ;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space> +;;; Copyright © 2022 Mehmet Tekman <mtekman89@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1146,6 +1147,57 @@ X Window System.") (license (license:non-copyleft #f "See xlock.c.") ))) ; + GPLv2 in modes/glx/biof.c. +(define-public xtrlock + (package + (name "xtrlock") + (version "2.15") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://debian/pool/main/x/xtrlock/xtrlock_" version + ".tar.xz")) + (sha256 + (base32 + "0mgpysbvipd5h6x6zz4hng6b13gp3qjnpgny3azyj8k8dv85bppw")))) + (build-system gnu-build-system) + (arguments + ;; LDLIBS are required for the package to build. + ;; CFLAGS are required for it to use the shadow file, and to + ;; be compatible with multi-touch devices. + (list #:make-flags + #~'("CFLAGS=-O2 -g -Wall -DSHADOW_PWD -DMULTITOUCH" + "LDLIBS=-lX11 -lcrypt -lXi") + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (delete 'check) + (add-after 'unpack 'rename-makefile + (lambda _ + (rename-file "Makefile.noimake" "Makefile") + (rename-file "xtrlock.man" "xtrlock.1"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (install-file "xtrlock" + (string-append out "/bin/")) + (install-file "xtrlock.1" + (string-append out + "/share/man/man1/")))))))) + (inputs (list libx11 libxi libxfixes)) + (home-page "https://packages.debian.org/sid/xtrlock") + (synopsis "Minimal X display lock program") + (description + "xtrlock locks the X server till the user enters their password at the +keyboard. While xtrlock is running, the mouse and keyboard are grabbed and +the mouse cursor becomes a padlock. Output displayed by X programs, and +windows put up by new X clients, continue to be visible, and any new output is +displayed normally. The mouse and keyboard are returned when the user types +their password, followed by Enter or Newline. If an incorrect password is +entered the bell is sounded. Pressing Backspace or Delete erases one +character of a password partially typed; pressing Escape or Clear clears +anything that has been entered.") + (license license:gpl2+))) + (define-public xosd (package (name "xosd") diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 9b78d4b5ca..759c3a94a3 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -85,6 +85,9 @@ Download and deploy the latest version of Guix.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " + -q, --no-channel-files + inhibit loading of user and system 'channels.scm'")) + (display (G_ " --url=URL download \"guix\" channel from the Git repository at URL")) (display (G_ " --commit=COMMIT download the specified \"guix\" channel COMMIT")) @@ -133,6 +136,9 @@ Download and deploy the latest version of Guix.\n")) (cons* (option '(#\C "channels") #t #f (lambda (opt name arg result) (alist-cons 'channel-file arg result))) + (option '(#\q "no-channel-files") #f #f + (lambda (opt name arg result) + (alist-cons 'ignore-channel-files? #t result))) (option '(#\l "list-generations") #f #t (lambda (opt name arg result) (cons `(query list-generations ,arg) @@ -735,6 +741,9 @@ transformations specified in OPTS (resulting from '--url', '--commit', or (define file (assoc-ref opts 'channel-file)) + (define ignore-channel-files? + (assoc-ref opts 'ignore-channel-files?)) + (define default-file (string-append (config-directory) "/channels.scm")) @@ -750,9 +759,11 @@ transformations specified in OPTS (resulting from '--url', '--commit', or (define channels (cond (file (load-channels file)) - ((file-exists? default-file) + ((and (not ignore-channel-files?) + (file-exists? default-file)) (load-channels default-file)) - ((file-exists? global-file) + ((and (not ignore-channel-files?) + (file-exists? global-file)) (load-channels global-file)) (else %default-channels))) diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm index e4fe511382..87000d82ec 100644 --- a/guix/scripts/time-machine.scm +++ b/guix/scripts/time-machine.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Konrad Hinsen <konrad.hinsen@fastmail.net> -;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019, 2020, 2021, 2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; @@ -63,6 +63,9 @@ Execute COMMAND ARGS... in an older version of Guix.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " + -q, --no-channel-files + inhibit loading of user and system 'channels.scm'")) + (display (G_ " --url=URL use the Git repository at URL")) (display (G_ " --commit=COMMIT use the specified COMMIT")) @@ -86,6 +89,9 @@ Execute COMMAND ARGS... in an older version of Guix.\n")) (cons* (option '(#\C "channels") #t #f (lambda (opt name arg result) (alist-cons 'channel-file arg result))) + (option '(#\q "no-channel-files") #f #f + (lambda (opt name arg result) + (alist-cons 'ignore-channel-files? #t result))) (option '("url") #t #f (lambda (opt name arg result) (alist-cons 'repository-url arg diff --git a/guix/ui.scm b/guix/ui.scm index 47a118364a..6f2d4fe245 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -200,6 +200,20 @@ information, or #f if it could not be found." (parameterize (((@ (system base compile) default-optimization-level) 1)) exp)) +(define (try-canonicalize-path file) + "Like 'canonicalize-path', but return FILE as-is if 'canonicalize-path' +throws. + +This is necessary for corner cases where 'canonicalize-path' fails. One +example is on Linux when a /dev/fd/N file denotes a pipe, represented as a +symlink to a non-existent file like 'pipe:[1234]', as in this example: + + sh -c 'stat $(readlink -f /dev/fd/1)' | cat" + (catch 'system-error + (lambda () + (canonicalize-path file)) + (const file))) + (define* (load* file user-module #:key (on-error 'nothing-special)) "Load the user provided Scheme source code FILE." @@ -230,7 +244,7 @@ information, or #f if it could not be found." ;; 'primitive-load', so that FILE is compiled, which then allows ;; us to provide better error reporting with source line numbers. (without-compiler-optimizations - (load (canonicalize-path file)))) + (load (try-canonicalize-path file)))) (const #f)))))) (lambda _ ;; XXX: Errors are reported from the pre-unwind handler below, but diff --git a/tests/guix-build.sh b/tests/guix-build.sh index 317c58ac42..4eab0e38b6 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2012-2014, 2016-2022 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2012-2014, 2016-2023 Ludovic Courtès <ludo@gnu.org> # Copyright © 2020 Marius Bakke <mbakke@fastmail.com> # Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> # @@ -397,6 +397,13 @@ guix build -d -m "$module_dir/manifest.scm" \ rm "$module_dir"/*.scm +if [ -n "$BASH_VERSION" ] +then + # Check whether we can load from a /dev/fd/N denoting a pipe, using this + # handy Bash-specific construct. + guix build -m <(echo '(specifications->manifest (list "guile"))') -n +fi + # Using 'GUIX_BUILD_OPTIONS'. GUIX_BUILD_OPTIONS="--dry-run --no-grafts" export GUIX_BUILD_OPTIONS diff --git a/tests/packages.scm b/tests/packages.scm index 2b7ab01f7d..2b4f9f8e90 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -1277,8 +1277,9 @@ ;; #:guile guile)))) (test-equal "package->bag" - `("foo86-hurd" #f (,(package-source gnu-make)) - (,(canonical-package glibc)) (,(canonical-package coreutils))) + (parameterize ((%current-system "foo86-hurd")) + `("foo86-hurd" #f (,(package-source gnu-make)) + (,(canonical-package glibc)) (,(canonical-package coreutils)))) (let ((bag (package->bag gnu-make "foo86-hurd"))) (list (bag-system bag) (bag-target bag) (assoc-ref (bag-build-inputs bag) "source") diff --git a/tests/store-roots.scm b/tests/store-roots.scm index 9877987a65..bf30b1dff6 100644 --- a/tests/store-roots.scm +++ b/tests/store-roots.scm @@ -30,13 +30,6 @@ (test-begin "store-roots") -(test-equal "gc-roots, initial" - (list (string-append %state-directory "/profiles")) - (begin - ;; 'gc-roots' should gracefully handle lack of that directory. - (delete-file-recursively (string-append %state-directory "/profiles")) - (gc-roots))) - ;; The 'open-connection' call below gets guix-daemon to create ;; %STATE-DIRECTORY/profiles. (set! %store (open-connection)) |