diff options
-rw-r--r-- | doc/guix.texi | 6 | ||||
-rw-r--r-- | gnu/local.mk | 3 | ||||
-rw-r--r-- | gnu/packages/emacs-xyz.scm | 251 | ||||
-rw-r--r-- | gnu/packages/emacs.scm | 4 | ||||
-rw-r--r-- | gnu/packages/fontutils.scm | 9 | ||||
-rw-r--r-- | gnu/packages/geo.scm | 9 | ||||
-rw-r--r-- | gnu/packages/gnome.scm | 12 | ||||
-rw-r--r-- | gnu/packages/gstreamer.scm | 18 | ||||
-rw-r--r-- | gnu/packages/image-processing.scm | 22 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 32 | ||||
-rw-r--r-- | gnu/packages/messaging.scm | 76 | ||||
-rw-r--r-- | gnu/packages/ntp.scm | 2 | ||||
-rw-r--r-- | gnu/packages/patches/emacs-pgtk-super-key-fix.patch | 49 | ||||
-rw-r--r-- | gnu/packages/patches/emacs-polymode-fix-lexical-variable-error.patch | 37 | ||||
-rw-r--r-- | gnu/packages/pdf.scm | 60 | ||||
-rw-r--r-- | gnu/packages/php.scm | 2 | ||||
-rw-r--r-- | gnu/packages/plotutils.scm | 4 | ||||
-rw-r--r-- | gnu/packages/python-science.scm | 4 | ||||
-rw-r--r-- | gnu/services/desktop.scm | 23 | ||||
-rw-r--r-- | gnu/services/xorg.scm | 23 | ||||
-rw-r--r-- | guix/gnu-maintenance.scm | 7 | ||||
-rw-r--r-- | guix/import/gem.scm | 19 | ||||
-rw-r--r-- | guix/scripts/import/gem.scm | 39 | ||||
-rw-r--r-- | tests/gem.scm | 113 | ||||
-rw-r--r-- | tests/gnu-maintenance.scm | 29 |
25 files changed, 685 insertions, 168 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 5bec94487b..8def1d8433 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -13228,6 +13228,12 @@ The command below imports metadata for the @code{rails} Ruby package: guix import gem rails @end example +You can also ask for a specific version: + +@example +guix import gem @@7.0.4 +@end example + @table @code @item --recursive @itemx -r diff --git a/gnu/local.mk b/gnu/local.mk index 094012316f..99034149c9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -52,6 +52,7 @@ # Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com> # Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> # Copyright © 2022 muradm <mail@muradm.net> +# Copyright © 2022 Hilton Chain <hako@ultrarare.space> # # This file is part of GNU Guix. # @@ -1038,12 +1039,14 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-highlight-stages-add-gexp.patch \ %D%/packages/patches/emacs-libgit-use-system-libgit2.patch \ %D%/packages/patches/emacs-lispy-fix-thread-last-test.patch \ + %D%/packages/patches/emacs-polymode-fix-lexical-variable-error.patch \ %D%/packages/patches/emacs-source-date-epoch.patch \ %D%/packages/patches/emacs-telega-path-placeholder.patch \ %D%/packages/patches/emacs-telega-test-env.patch \ %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \ %D%/packages/patches/emacs-yasnippet-fix-tests.patch \ %D%/packages/patches/emacs-kv-fix-tests.patch \ + %D%/packages/patches/emacs-pgtk-super-key-fix.patch \ %D%/packages/patches/enjarify-setup-py.patch \ %D%/packages/patches/enlightenment-fix-setuid-path.patch \ %D%/packages/patches/erlang-man-path.patch \ diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 5aff012adb..30bd0ca48b 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -1348,6 +1348,28 @@ color scheme used by Visual Studio Code.") Apprentice and Sourcerer.") (license license:gpl3+)))) +(define-public emacs-suneater-theme + (package + (name "emacs-suneater-theme") + (version "2.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~plattfot/suneater-theme") + (commit version))) + (sha256 + (base32 + "0nlam8f8ly86y7p2dn10y9ixnm7bhmigsx7si4cjynh6aiyczyds")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://git.sr.ht/~plattfot/suneater-theme") + (synopsis "Minimalistic dark theme for Emacs") + (description + "Suneater is a dark, minimalistic Emacs theme. It was based on Sunburst +theme but now takes more inspiration from the Nano theme.") + (license license:gpl3+))) + (define-public emacs-treepy (package (name "emacs-treepy") @@ -2572,6 +2594,30 @@ light user interface.") within a specified width. It is useful for displaying long track titles.") (license license:gpl3+))) +(define-public emacs-emprise + (package + (name "emacs-emprise") + (version "0.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~plattfot/emprise") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0yddvvpjdcgsiwv24jbddkgl5r1lxgz037akjln6z9acx9qrc8px")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://sr.ht/~plattfot/emprise") + (synopsis "Control MPRIS supported media players from Emacs") + (description "This package provides a set of commands to control media +players that supports the Media Player Remote Interfacing +Specification (MPRIS) protocol from Emacs. It uses Emacs' Completing Read +framework as the user interface, which integrates well with Vertico or +Selectrum.") + (license license:gpl3+))) + ;;; ;;; Miscellaneous. @@ -2605,6 +2651,31 @@ This package turns this into an O(1) operation. It does so by assigning a letter to each link using avy.") (license license:gpl3+))) +(define-public emacs-app-launcher + ;; XXX: Upstream did not tag any commit so far. Base version is extracted + ;; from Version keyword. + (let ((commit "d5015e394b0a666a8c7c4d4bdf786266e773b145") + (revision "0")) + (package + (name "emacs-app-launcher") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SebastienWae/app-launcher") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l97ajy27awydyd4gc6323wyhpm5vm2db6i0lp5gqaxi9fp7jivp")))) + (build-system emacs-build-system) + (home-page "https://github.com/SebastienWae/app-launcher") + (synopsis "Use Emacs standard completion to launch applications") + (description "This package defines the @code{app-launcher-run-app} +command, which uses Emacs standard completion to select an application +installed on your machine and launch it.") + (license license:gpl3+)))) + (define-public emacs-auto-sudoedit (package (name "emacs-auto-sudoedit") @@ -6162,6 +6233,64 @@ and retrieving information using the SQLite program through Elisp programming. It is not intended as a user interface.") (license license:gpl3+)))) +(define-public emacs-sqlite3-api + (package + (name "emacs-sqlite3-api") + (version "0.16") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pekingduck/emacs-sqlite3-api") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yrfwb3yvhp1ib4izxh1ds68b3zw8gjkjhlk1kivarxnfjnjnly2")))) + (build-system emacs-build-system) + (arguments + (list + #:tests? (not (%current-target-system)) + #:test-command #~(list "make" "test" "EMACS=emacs") + #:modules '((guix build emacs-build-system) + (guix build emacs-utils) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-module-load + (lambda _ + (make-file-writable "sqlite3.el") + (emacs-substitute-sexps "sqlite3.el" + ("(require 'sqlite3-api nil t)" + (string-append + "(module-load \"" #$output "/lib/sqlite3-api.so\")"))))) + (add-before 'check 'build-emacs-module + (lambda _ + ;; Remove code that fetches constants from the SQLite website + ;; and the call to generate a timestamp. + (invoke "sed" "--in-place" "3,4d;24,28d;31d" "tools/gen-consts.sh") + ;; Remove filter logic from the script that generates the constants. + (invoke "sed" "--in-place" "7,11d;18,22d" "tools/gen-consts.py") + ;; Generate the consts.c file. + (invoke "make" "--directory=tools") + ;; Remove the SQLITE_STATIC and SQLITE_TRANSIENT + ;; constants. They cause a compilation warning and would have + ;; been removed by the original script. + (invoke "sed" "--in-place" "/ifdef SQLITE_STATIC/,+2d" "consts.c") + (invoke "sed" "--in-place" "/ifdef SQLITE_TRANSIENT/,+2d" "consts.c") + ;; Compile the shared object file. + (invoke "make" #$(string-append "CC=" (cc-for-target))) + ;; Move the shared object file into /lib. + (install-file "sqlite3-api.so" + (string-append #$output "/lib"))))))) + (native-inputs (list python sed)) + (inputs (list sqlite)) + (home-page "https://github.com/pekingduck/emacs-sqlite3-api") + (synopsis "Dynamic module for Emacs to access the SQLite C interface") + (description "This package provides a dynamic module for Emacs that allows +direct access to the SQLite C interface. It only exposes a subset of the full +SQLite C interface, but should satisfy most user's needs.") + (license license:gpl3+))) + (define-public emacs-sr-speedbar (let ((commit "77a83fb50f763a465c021eca7343243f465b4a47") (revision "0")) @@ -6725,14 +6854,14 @@ user.") (define-public emacs-subed (package (name "emacs-subed") - (version "1.0.8") + (version "1.0.9") (source (origin (method url-fetch) (uri (string-append "https://elpa.nongnu.org/nongnu/subed-" version ".tar")) (sha256 (base32 - "05dx4ywma7n73d0cihf4v8ayihm7gmfqpzvdycq4yk0zkxb958z1")))) + "192m7pg8hiqx7ppr1sk6n5qjcbz78dmcg6m14syq12ll07zfpcm0")))) (arguments (list #:tests? #t @@ -15755,7 +15884,7 @@ gnugo-image-display-mode}.") (define-public emacs-transpose-frame (package (name "emacs-transpose-frame") - (version "0.2.0") + (version "0.2.1") (source (origin (method git-fetch) @@ -15764,7 +15893,7 @@ gnugo-image-display-mode}.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "01j4ci0c52r2c31hc9r4p7nsb6s8blmvg50g9n5v5h3afjl1c35v")))) + (base32 "0m9jmfwwhgkwxbq3y000ymx7parbgqr7gq3yjm2wh1ll747gv51y")))) (build-system emacs-build-system) (home-page "https://www.emacswiki.org/emacs/TransposeFrame") (synopsis "Transpose window arrangement in current frame") @@ -15773,6 +15902,31 @@ functions which allows users to transpose windows arrangement in currently selected frame.") (license license:bsd-2))) +(define-public emacs-transpose-mark + ;; XXX: Upstream made no release so far, and did not add a Version keyword. + (let ((commit "667327602004794de97214cf336ac61650ef75b7") + (revision "0")) + (package + (name "emacs-transpose-mark") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kwrooijen/transpose-mark") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03wc50vn1kmrgnzzhs06pwpap2p2rx84wwzxw0hawsg1f1l35m2x")))) + (build-system emacs-build-system) + (home-page "https://github.com/kwrooijen/transpose-mark") + (synopsis "Library for transposing lines and regions") + (description "Transpose mark provides some commands that makes +transposing lines and regions easier. You can mark a line and transpose it +with a line at point, or mark a region and transpose it with another region +a point. The plugin provides visual feedback for marked regions.") + (license license:gpl3+)))) + (define-public emacs-key-chord (package (name "emacs-key-chord") @@ -16574,7 +16728,7 @@ which avoids some of the issues with using Emacs’s built-in Url library.") (define-public emacs-ement (package (name "emacs-ement") - (version "0.1.3") + (version "0.1.4") (source (origin (method git-fetch) @@ -16583,7 +16737,7 @@ which avoids some of the issues with using Emacs’s built-in Url library.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "075mwlc616rr86zgli36n6r8w09c5cvlk43by0f1xzla5rmiza8r")))) + (base32 "1kms6l14h6ig8kphzpkxv16z7gpvcwvcfsp5ljssdnrx0c7dzz16")))) (build-system emacs-build-system) (arguments `(#:emacs ,emacs)) ;need libxml support @@ -17525,7 +17679,10 @@ contexts. (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn")))) + (base32 "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn")) + (patches + ;; XXX: Cherry-picked from upstream, remove when bumping to 0.2.3. + (search-patches "emacs-polymode-fix-lexical-variable-error.patch")))) (build-system emacs-build-system) (home-page "https://github.com/polymode/polymode") (synopsis "Framework for multiple Emacs modes based on indirect buffers") @@ -19292,7 +19449,7 @@ files to be expanded upon opening them.") (define-public emacs-parsebib (package (name "emacs-parsebib") - (version "4.2") + (version "4.3") (source (origin (method git-fetch) @@ -19301,7 +19458,7 @@ files to be expanded upon opening them.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0da4b6d65bq9xhyhq7h9g315zg6g5q9435vz870la966rgav5szd")))) + (base32 "0vcl2wvxwpr62c9ym0fm3qaxzhjcrpk4r6r0zaqhkvlf8qr3rg8y")))) (build-system emacs-build-system) (home-page "https://github.com/joostkremers/parsebib") (synopsis "Library for parsing @file{.bib} files") @@ -19619,7 +19776,7 @@ that it can display an error message showing how the parser fails.") (define-public emacs-move-text (package (name "emacs-move-text") - (version "2.0.8") + (version "2.0.10") (source (origin (method git-fetch) @@ -19628,7 +19785,7 @@ that it can display an error message showing how the parser fails.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "06jxk5g23822gfmwrxhc34zand3dr8p2wjh1zs3j61ibz6n0nmz1")))) + (base32 "0pxvipjp9xvr9zwiwij943jgpy7fk8pxphbdj0vrg8ar5avlqiam")))) (build-system emacs-build-system) (home-page "https://github.com/emacsfodder/move-text") (synopsis "Move current line or region with M-up or M-down") @@ -21005,7 +21162,7 @@ and doesn't require memorisation of commands. (define-public emacs-logview (package (name "emacs-logview") - (version "0.15") + (version "0.15.1") (source (origin (method git-fetch) @@ -21014,7 +21171,7 @@ and doesn't require memorisation of commands. (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "08bn7fj336krlrsf7flk0fgx9mdkd44vq8sxyx6s1c1q5bc0hqnk")))) + (base32 "1khri5632pjirj191x3ps94s4pyrwapf1pbrkmqqp0d26b50d3s2")))) (propagated-inputs (list emacs-datetime emacs-extmap)) (build-system emacs-build-system) @@ -30320,14 +30477,14 @@ detected language.") (define-public emacs-persist (package (name "emacs-persist") - (version "0.4") + (version "0.5") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "persist-" version ".tar")) (sha256 - (base32 "0gpxy41qawzss2526j9a7lys60vqma1lvamn4bfabwza7gfhac0q")))) + (base32 "090n4479zs82by7a3vb551gyjvv8lpfcylk43ywr2lfyssc9xiq0")))) (build-system emacs-build-system) (home-page "http://elpa.gnu.org/packages/persist.html") (synopsis "Persist variables between Emacs sessions") @@ -30655,6 +30812,34 @@ conventions.") snippets for Emacs.") (license license:expat)))) +(define-public emacs-orca + ;; XXX: Upstream did not tag any commit so far. Base version is extracted + ;; from Version keyword. + (let ((commit "0687f416a5573f63b691d384454f5a793266ed97") + (revision "0")) + (package + (name "emacs-orca") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/orca") + (commit commit))) + (sha256 + (base32 "00a363vkqvryw5s7pj0kh8pqq5vvbf1pmbzz0b1z1fckwr49sv0f")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-zoutline)) + (home-page "https://github.com/abo-abo/orca") + (synopsis "Handler for Org Capture") + (description + "This package provides several convenient recipes for configuring Org +Capture, mainly for capturing from a browser. It can match URLs and inject +the capture in a targeted Org file, under a targeted heading. The more this +package is configured, the less refiling is needed on your captures: they will +go directly to where they belong.") + (license license:gpl3+)))) + (define-public emacs-org-roam (package (name "emacs-org-roam") @@ -30717,6 +30902,34 @@ as a plug-and-play solution for anyone already using Org mode for their personal wiki.") (license license:gpl3+))) +(define-public emacs-org-roam-ui + (let ((commit "c75fc7506ee7f03840a9a93ed9336d7ed24551aa") + (revision "0")) + (package + (name "emacs-org-roam-ui") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/org-roam/org-roam-ui") + (commit commit))) + (sha256 + (base32 "0mkcd2622np8s5qz2zvx7lch6dc586xqmn6914gi4ym7nvklf3zy")))) + (build-system emacs-build-system) + (arguments + (list #:include #~(cons "^out" %default-include))) + (propagated-inputs + (list emacs-org-roam emacs-simple-httpd emacs-websocket)) + (home-page "https://github.com/org-roam/org-roam-ui") + (synopsis "Web User Interface for Org Roam") + (description + "Org Roam UI is meant as a successor of Org Roam server that extends +functionality of Org Roam with a web app that runs side-by-side with Emacs, +providing a web interface for navigating around notes created within Org +Roam.") + (license license:gpl3+)))) + (define-public emacs-org-roam-bibtex (package (name "emacs-org-roam-bibtex") @@ -31575,14 +31788,14 @@ work on alists, hash-table and arrays. All functions are prefixed with (define-public emacs-xref (package (name "emacs-xref") - (version "1.5.0") + (version "1.5.1") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/xref-" version ".tar")) (sha256 - (base32 "0xl6aiwkjbgs44c3wxk6s85diydm3y5lsd7znb0dhbqb7milid2d")))) + (base32 "131jxsc1sl8q3r9drhylwyfig9qjjkj3hilv3npidp868pr7xdna")))) (build-system emacs-build-system) (home-page "http://elpa.gnu.org/packages/xref.html") (synopsis "Cross-referencing commands") @@ -32155,14 +32368,14 @@ are prefixed with @code{seq-} and work on lists, strings, and vectors.") (define-public emacs-setup (package (name "emacs-setup") - (version "1.3.0") + (version "1.3.1") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/setup-" version ".tar")) (sha256 - (base32 "0r13ry73jm31j8fq7v1sh0k113fr4blfkiz85696bdpah2pnca87")))) + (base32 "0n9zjclf4b2sr8c8zd37fs45p25p3856frm419c9hch69hhcsv3a")))) (build-system emacs-build-system) (home-page "https://git.sr.ht/~pkal/setup") (synopsis "Helpful configuration macro") diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 881109bb77..bbed0175d4 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -409,6 +409,10 @@ languages.") (package (inherit emacs-next) (name "emacs-next-pgtk") + (source + (origin + (inherit (package-source emacs-next)) + (patches (search-patches "emacs-pgtk-super-key-fix.patch")))) (arguments (substitute-keyword-arguments (package-arguments emacs-next) ((#:configure-flags flags #~'()) diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 5a79fcb184..6ff51260b6 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -447,8 +447,15 @@ converts any cubic curves to quadratic. The most useful function is probably (sha256 (base32 "068hm62s1iphyg66w96vgiif6ahpcsaf8fr44rk6jdf71f6fyqd5")))) (build-system python-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv"))))))) (native-inputs - (list python-pytest python-pytest-runner python-setuptools-scm)) + (list python-pytest python-setuptools-scm)) (propagated-inputs (list python-booleanoperations python-cffsubr diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 4fdee3dc7b..8e619d1dba 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -2366,7 +2366,14 @@ visualization.") (version-major version) "/SAGA%20-%20" version "/saga-" version ".tar.gz")) (sha256 - (base32 "008izjs6gvj09abxf16ssl1xy0ay3ljq4jswbggp6wiiq459minv")))) + (base32 "008izjs6gvj09abxf16ssl1xy0ay3ljq4jswbggp6wiiq459minv")) + (modules '((guix build utils))) + (snippet + '(substitute* "saga-gis/src/tools/docs/docs_pdf/doc_pdf.cpp" + (("^#include <hpdf\\.h>\n" all) + (string-append all "#include <hpdf_version.h>\n")) + (("\\bHPDF_PROJECTING_SCUARE_END\\b") + "HPDF_PROJECTING_SQUARE_END"))))) (build-system cmake-build-system) (native-inputs (list pkg-config swig)) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 190cc42950..5a2bbe618a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2293,6 +2293,7 @@ The gnome-about program helps find which version of GNOME is installed.") (build-system meson-build-system) (arguments `(#:configure-flags '("-Dlogind=libelogind") + #:meson ,meson-0.60 #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache @@ -5815,7 +5816,10 @@ services for numerous locations.") "-Dsystemd=false" ;; Otherwise, the RUNPATH will lack the final path component. (string-append "-Dc_link_args=-Wl,-rpath=" #$output - "/lib/gnome-settings-daemon-3.0")) + "/lib/gnome-settings-daemon-3.0:" + ;; Also add NSS because for some reason Meson + ;; > 0.60 does not add it automatically (XXX). + (search-input-directory %build-inputs "lib/nss"))) #:phases #~(modify-phases %standard-phases (add-before 'configure 'set-baobab-file-name @@ -9613,7 +9617,8 @@ can add your own files to the collection.") "15wmikwk62cdi93gas77nqh4fbhlrxrncyfmcd1gfa34jbn7vnsa")))) (build-system meson-build-system) (arguments - '(#:glib-or-gtk? #t + `(#:meson ,meson-0.60 + #:glib-or-gtk? #t #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache @@ -9655,6 +9660,8 @@ beautifying border effects.") (base32 "1qvrxrk1h8bd75xwasxbvlkqrw6xkavjimvc7sslkw6lvb3z86jp")))) (build-system meson-build-system) + (arguments + (list #:meson meson-0.60)) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0. ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache @@ -12022,6 +12029,7 @@ desktop environment.") gspell gtk gjs + libadwaita libsecret libsoup telepathy-glib diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index aa49f89155..a1cf662e37 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -476,7 +476,21 @@ the GStreamer multimedia framework.") (arguments (list #:phases #~(modify-phases %standard-phases - #$@%common-gstreamer-phases))) + #$@%common-gstreamer-phases + #$@(if (string-prefix? "i686" (or (%current-target-system) + (%current-system))) + ;; FIXME: These tests consistently fail in the Guix CI: + ;; https://issues.guix.gnu.org/57868 + '((add-after 'unpack 'disable-systemclock-test + (lambda _ + (substitute* "tests/check/gst/gstsystemclock.c" + (("tcase_add_test \\(tc_chain, \ +test_stress_cleanup_unschedule.*") + "") + (("tcase_add_test \\(tc_chain, \ +test_stress_reschedule.*") + ""))))) + '())))) (propagated-inputs ;; In gstreamer-1.0.pc: ;; Requires: glib-2.0, gobject-2.0 @@ -880,7 +894,7 @@ model to base your own plug-in on, here it is.") openjpeg ;; openni2 opensles - openssl + openssl-1.1 opus orc pango diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index aa8efd97c6..a8f40c4454 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -324,14 +324,18 @@ many popular formats.") (snippet '(begin (for-each - (lambda (dir) - (delete-file-recursively - (string-append "ThirdParty/" dir "/vtk" dir))) - ;; pugixml depended upon unconditionally - '("doubleconversion" "eigen" "expat" "freetype" "gl2ps" - "glew" "hdf5" "jpeg" "jsoncpp" "libproj" "libxml2" "lz4" - "netcdf" "ogg" "png" "sqlite" "theora" "tiff" "zlib")) - #t)))) + (lambda (dir) + (delete-file-recursively + (string-append "ThirdParty/" dir "/vtk" dir))) + ;; pugixml depended upon unconditionally + '("doubleconversion" "eigen" "expat" "freetype" "gl2ps" + "glew" "hdf5" "jpeg" "jsoncpp" "libharu" "libproj" + "libxml2" "lz4" "netcdf" "ogg" "png" "sqlite" "theora" + "tiff" "zlib")) + (substitute* "IO/ExportPDF/vtkPDFContextDevice2D.cxx" + (("\\bHPDF_UINT16 (noPen|dash|dot|denseDot|dashDot|dashDotDot)\\b" + _ var) + (string-append "HPDF_REAL " var))))))) (properties `((release-monitoring-url . "https://vtk.org/download/"))) (build-system cmake-build-system) (arguments @@ -348,6 +352,7 @@ many popular formats.") "-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_jsoncpp=ON" + "-DVTK_MODULE_USE_EXTERNAL_VTK_libharu=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_libproj=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_lz4=ON" @@ -381,6 +386,7 @@ many popular formats.") glew glu hdf5 + libharu libjpeg-turbo jsoncpp libtheora diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 3400740649..81e1fb8f70 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -353,17 +353,17 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-5.19-version "5.19.8") +(define-public linux-libre-5.19-version "5.19.9") (define-public linux-libre-5.19-gnu-revision "gnu") (define deblob-scripts-5.19 (linux-libre-deblob-scripts linux-libre-5.19-version linux-libre-5.19-gnu-revision (base32 "1lk90psz33ldb8aiaws4iayhycl5bmywr6badvzffjpr87s5phxw") - (base32 "1ph67fvg5qvlkh4cynrrmvkngkb0sw6k90b1mwy9466s24khn05i"))) + (base32 "092myqjixvy1k3ylcj0hfc4whfxapjvxsxm4gk30a3jv5dnh7mly"))) (define-public linux-libre-5.19-pristine-source (let ((version linux-libre-5.19-version) - (hash (base32 "1kl7fifsa6vsm34xg3kd2svhx18n771hfj67nhwnlalmb9whhqv1"))) + (hash (base32 "0dvzjbyknzlx4ndz77fsm6v28fj2chxbq1z85fbc3bckcscbbm8a"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.19))) @@ -372,22 +372,22 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The "longterm" kernels — the older releases with long-term upstream support. ;; Here are the support timelines: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-5.15-version "5.15.67") +(define-public linux-libre-5.15-version "5.15.68") (define-public linux-libre-5.15-gnu-revision "gnu") (define deblob-scripts-5.15 (linux-libre-deblob-scripts linux-libre-5.15-version linux-libre-5.15-gnu-revision (base32 "0vj60bra81fmbx3lz924czbhxs4dmvd4d584g9mcs80b7c4q52kg") - (base32 "1r189c704jvizk452zcsm9v3g27ybjcjchjwxazsy3nx0wdwx7si"))) + (base32 "048r4synfax2ajyzlmp672b68yshxwlfccdah2vz1kh88rqfmgsc"))) (define-public linux-libre-5.15-pristine-source (let ((version linux-libre-5.15-version) - (hash (base32 "0h7r2k59jsw8ykb2p7nxrpazbwx1n5p3nmfbbj1lhib91fldjiys"))) + (hash (base32 "0zlb44bwpc0hwfynzz5v5b3lkv4aha7w5737ns1qb8cvbk5v7fqp"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.15))) -(define-public linux-libre-5.10-version "5.10.142") +(define-public linux-libre-5.10-version "5.10.143") (define-public linux-libre-5.10-gnu-revision "gnu1") (define deblob-scripts-5.10 (linux-libre-deblob-scripts @@ -397,12 +397,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1981axxswghza3iadp94q54y8w30h9w9vyq4cbjiiv9alvbv0pb8"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "0s52vfvw5pgnq7gq9n66ib05ryhkxwv765f16862l5gykbdynirz"))) + (hash (base32 "14af0lsvgh1k0fh283d0nrm1pkrk2kaf2mz0ab59vlvjybg9wb7s"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.212") +(define-public linux-libre-5.4-version "5.4.213") (define-public linux-libre-5.4-gnu-revision "gnu1") (define deblob-scripts-5.4 (linux-libre-deblob-scripts @@ -412,12 +412,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1vnjbdyssa7dwyjl9kg35alwvf7yh597cl74yr1wy2gk5bc9paw6"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1hngr4hsrcd6hmlyvc3msy5racniav2jagp5abmp7xsxv0yjxiq9"))) + (hash (base32 "1wdssqmac66zqsnq5lx2z8ampa0rd3qswg0gm1sh6n3y8xlf2z76"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.257") +(define-public linux-libre-4.19-version "4.19.258") (define-public linux-libre-4.19-gnu-revision "gnu1") (define deblob-scripts-4.19 (linux-libre-deblob-scripts @@ -427,12 +427,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "0izaldl2l2zsshkd07qsnr9x6ikipmj5jp7lxr8dyz7kf2m17pga"))) + (hash (base32 "002sw8b272dzkp3vff0x89sbj5p3vrrikqygfdgrsxv7k3w4459x"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.292") +(define-public linux-libre-4.14-version "4.14.293") (define-public linux-libre-4.14-gnu-revision "gnu1") (define deblob-scripts-4.14 (linux-libre-deblob-scripts @@ -442,12 +442,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0zc97qy62dhc5xkjnvsfn4lpl4dgrj23hlxvxcr4cr8sj0hxzx3h"))) + (hash (base32 "047gl9nqrvpi9jaxlmhfnx848qvnrhf13710ka8fwn3lyv22k342"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.327") +(define-public linux-libre-4.9-version "4.9.328") (define-public linux-libre-4.9-gnu-revision "gnu1") (define deblob-scripts-4.9 (linux-libre-deblob-scripts @@ -457,7 +457,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0bib3641dbcqdkx3anna3caxnsg3nw9cnmhcklq0s93g3m57041h"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "1lh63viynf9f7vl0a52mnal8jack9lbqfsfammwkxi3kafpw30r2"))) + (hash (base32 "1px2np3k796cjwq1sp9gfxyql6hqyqya82vq9cb5y0canq6fqmg8"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 43b4a66890..b5600d4baf 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1253,45 +1253,45 @@ of xmpppy.") "3.9" "/site-packages")))))) (native-inputs - `(("gettext" ,gettext-minimal) - ("glib:bin" ,glib "bin") - ("gobject-introspection" ,gobject-introspection) - ("gtk+:bin" ,gtk+ "bin") - ("python-distutils-extra" ,python-distutils-extra) - ("python-setuptools" ,python-setuptools) - ("xorg-server" ,xorg-server-for-tests))) + (list gettext-minimal + `(,glib "bin") + gobject-introspection + `(,gtk+ "bin") + python-distutils-extra + python-setuptools + xorg-server-for-tests)) (inputs - `(("avahi" ,avahi) - ("dbus" ,dbus) - ("farstream" ,farstream) - ("geoclue" ,geoclue) - ("glib" ,glib) - ("glib-networking" ,glib-networking) - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("gsound",gsound) - ("gspell" ,gspell) - ("gstreamer" ,gstreamer) - ("gst-plugins-base" ,gst-plugins-base) - ("gtk+" ,gtk+) - ("gtksourceview" ,gtksourceview-4) - ("gupnp-igd" ,gupnp-igd) - ("libappindicator" ,libappindicator) - ("libnice" ,libnice) - ("libsecret" ,libsecret) - ("libsoup" ,libsoup) - ("libxss" ,libxscrnsaver) - ("network-manager" ,network-manager) - ("python-css-parser" ,python-css-parser) - ("python-dbus" ,python-dbus) - ("python-gssapi" ,python-gssapi) - ("python-keyring" ,python-keyring) - ("python-nbxmpp" ,python-nbxmpp) - ("python-packaging" ,python-packaging) - ("python-pillow" ,python-pillow) - ("python-precis-i18n" ,python-precis-i18n) - ("python-pycairo" ,python-pycairo) - ("python-pygobject" ,python-pygobject) - ("python-pyopenssl" ,python-pyopenssl))) + (list avahi + dbus + farstream + geoclue + glib + glib-networking + gsettings-desktop-schemas + gsound + gspell + gstreamer + gst-plugins-base + gtk+ + gtksourceview-4 + gupnp-igd + libappindicator + libnice + libsecret + libsoup + libxscrnsaver + network-manager + python-css-parser + python-dbus + python-gssapi + python-keyring + python-nbxmpp + python-packaging + python-pillow + python-precis-i18n + python-pycairo + python-pygobject + python-pyopenssl)) (propagated-inputs (list dconf)) (synopsis "Fully-featured XMPP client") diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index b942703ff3..a27c1c6a12 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -155,7 +155,7 @@ time-stamping or reference clock, sub-microsecond accuracy is possible.") #t)))) (native-inputs (list which pkg-config)) (inputs - `(("openssl" ,openssl) + `(("openssl" ,openssl-1.1) ("libevent" ,libevent) ;; Build with POSIX capabilities support on GNU/Linux. This allows 'ntpd' ;; to run as non-root (when invoked with '-u'.) diff --git a/gnu/packages/patches/emacs-pgtk-super-key-fix.patch b/gnu/packages/patches/emacs-pgtk-super-key-fix.patch new file mode 100644 index 0000000000..a58c448af9 --- /dev/null +++ b/gnu/packages/patches/emacs-pgtk-super-key-fix.patch @@ -0,0 +1,49 @@ +From a897516fc5ec380938115ad42023f279d128fc1e Mon Sep 17 00:00:00 2001 +From: Andrew Tropin <andrew@trop.in> +Date: Fri, 16 Sep 2022 15:24:19 +0300 +Subject: [PATCH] Workaround gtk bug for superkey handling + +https://gitlab.gnome.org/GNOME/gtk/-/issues/4913 +https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55362 +Patch based on Thomas Jost's suggestion. + +--- + src/pgtkterm.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/pgtkterm.c b/src/pgtkterm.c +index 491ba33882..d5a9970693 100644 +--- a/src/pgtkterm.c ++++ b/src/pgtkterm.c +@@ -5051,7 +5051,7 @@ pgtk_gtk_to_emacs_modifiers (struct pgtk_display_info *dpyinfo, int state) + mod |= mod_ctrl; + if (state & GDK_META_MASK || state & GDK_MOD1_MASK) + mod |= mod_meta; +- if (state & GDK_SUPER_MASK) ++ if (state & GDK_SUPER_MASK || state & GDK_MOD4_MASK) + mod |= mod_super; + if (state & GDK_HYPER_MASK) + mod |= mod_hyper; +@@ -5184,7 +5184,7 @@ key_press_event (GtkWidget *widget, GdkEvent *event, gpointer *user_data) + /* While super is pressed, the input method will always always + resend the key events ignoring super. As a workaround, don't + filter key events with super or hyper pressed. */ +- if (!(event->key.state & (GDK_SUPER_MASK | GDK_HYPER_MASK))) ++ if (!(event->key.state & (GDK_SUPER_MASK | GDK_MOD4_MASK | GDK_HYPER_MASK))) + { + if (pgtk_im_filter_keypress (f, &event->key)) + return TRUE; +@@ -5199,8 +5199,9 @@ key_press_event (GtkWidget *widget, GdkEvent *event, gpointer *user_data) + /* make_lispy_event turns chars into control chars. + Don't do it here because XLookupString is too eager. */ + state &= ~GDK_CONTROL_MASK; +- state &= ~(GDK_META_MASK +- | GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_MOD1_MASK); ++ state &= ~(GDK_META_MASK | GDK_MOD1_MASK ++ | GDK_SUPER_MASK | GDK_MOD4_MASK ++ | GDK_HYPER_MASK); + + nbytes = event->key.length; + if (nbytes > copy_bufsiz) +-- +2.37.3 diff --git a/gnu/packages/patches/emacs-polymode-fix-lexical-variable-error.patch b/gnu/packages/patches/emacs-polymode-fix-lexical-variable-error.patch new file mode 100644 index 0000000000..77a8452c2a --- /dev/null +++ b/gnu/packages/patches/emacs-polymode-fix-lexical-variable-error.patch @@ -0,0 +1,37 @@ +From 8b83fa772a71efc9dc030c43db2cba944e4338c1 Mon Sep 17 00:00:00 2001 +From: Kien Nguyen <kien.n.quang@gmail.com> +Date: Wed, 19 May 2021 23:15:01 +0900 +Subject: [PATCH] Fix using of temporary lexical variable causes error in + native compiling + +--- + polymode-core.el | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/polymode-core.el b/polymode-core.el +index e7d40be..ef316f8 100644 +--- a/polymode-core.el ++++ b/polymode-core.el +@@ -2088,14 +2088,14 @@ Elements of LIST can be either strings or symbols." + (stringp pm--output-file) + (pm--file-mod-time pm--output-file))) + (imt (and omt (pm--file-mod-time pm--input-file))) +- (action (if is-exporter "exporting" "weaving")) + (ofile (if (and imt (time-less-p imt omt)) + (progn + (message "Not re-%s as input file '%s' hasn't changed" +- (file-name-nondirectory ifile) action) ++ (if is-exporter "exporting" "weaving") ++ (file-name-nondirectory ifile)) + pm--output-file) + (message "%s '%s' with '%s' ..." +- (capitalize action) ++ (if is-exporter "EXPORTING" "WEAVING") + (file-name-nondirectory ifile) + (eieio-object-name processor)) + (let ((fn (with-no-warnings + +base-commit: 44265e35161d77f6eaa09388ea2256b89bd5dcc8 +-- +2.37.2 + diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index c18e7f7f62..bdc773f650 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2022 Paul A. Patience <paul@apatience.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -385,36 +386,37 @@ Poppler PDF rendering library.") (define-public libharu (package - (name "libharu") - (version "2.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/libharu/libharu") - (commit (string-append - "RELEASE_" - (string-join (string-split version #\.) "_"))))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "15s9hswnl3qqi7yh29jyrg0hma2n99haxznvcywmsp8kjqlyg75q")))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags - (list (string-append "--with-zlib=" - (assoc-ref %build-inputs "zlib")) - (string-append "--with-png=" - (assoc-ref %build-inputs "libpng"))))) - (inputs - (list zlib libpng)) - (native-inputs - (list autoconf automake libtool)) - (home-page "http://libharu.org/") - (synopsis "Library for generating PDF files") - (description - "libHaru is a library for generating PDF files. libHaru does not support + (name "libharu") + (version "2.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/libharu/libharu") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1jwzqvv81zf5f7zssyixhyjirlp9ddwkbaabd177syb1bxljlsdc")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ; No tests + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-cmake + (lambda _ + (substitute* "CMakeLists.txt" + (("^install\\(FILES (README\\.md CHANGES) INSTALL DESTINATION .*\\)" + _ files) + (format #f "install(FILES ~a DESTINATION ~a/share/doc/~a-~a)" + files #$output #$name #$version)))))))) + (inputs + (list libpng zlib)) + (home-page "http://libharu.org/") + (synopsis "Library for generating PDF files") + (description + "libHaru is a library for generating PDF files. libHaru does not support reading and editing of existing PDF files.") - (license license:zlib))) + (license license:zlib))) (define-public xpdf (package diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm index fdea27160d..645a8edee1 100644 --- a/gnu/packages/php.scm +++ b/gnu/packages/php.scm @@ -381,7 +381,7 @@ ("libzip" ,libzip) ("oniguruma" ,oniguruma) ("openldap" ,openldap) - ("openssl" ,openssl) + ("openssl" ,openssl-1.1) ("pcre" ,pcre2) ("postgresql" ,postgresql) ("readline" ,readline) diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 4dcf4802a2..6afbf57c77 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -269,14 +269,14 @@ colors, styles, options and details.") (define-public asymptote (package (name "asymptote") - (version "2.82") + (version "2.83") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/asymptote/" version "/asymptote-" version ".src.tgz")) (sha256 - (base32 "13blmsapbai4hqynyj1r1sjpypdv6frfassl2f2x7j2ql1dbqvsg")) + (base32 "18w8nf0p1b3h74sk1b7w96kq5gcaq09idi4771ini7p594gsfg7y")) (modules '((guix build utils))) (snippet ;; Remove bundled RapidJSON. diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index d1698e5f67..80acb606b2 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -348,13 +348,13 @@ library.") (define-public python-pandas (package (name "python-pandas") - (version "1.4.2") + (version "1.4.4") (source (origin (method url-fetch) (uri (pypi-uri "pandas" version)) (sha256 - (base32 "04lsak3j5hq2hk0vfjf532rdxdqmg2akamdl4yl3qipihp2izg4j")))) + (base32 "0ryv66s9cvd27q6a985vv556k2qlnlrdna2z7qc7bdhphrrhsv5b")))) (build-system python-build-system) (arguments `(#:modules ((guix build utils) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 9b3eb12613..1b087635d1 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -117,6 +117,9 @@ elogind-service elogind-service-type + %gdm-file-system + gdm-file-system-service + %fontconfig-file-system fontconfig-file-system-service @@ -1232,6 +1235,13 @@ when they log out." (flags '(read-only)) (check? #f))) +(define %gdm-file-system + (file-system + (device "none") + (mount-point "/var/lib/gdm") + (type "tmpfs") + (check? #f))) + ;; The global fontconfig cache directory can sometimes contain stale entries, ;; possibly referencing fonts that have been GC'd, so mount it read-only. ;; As mentioned https://debbugs.gnu.org/cgi/bugreport.cgi?bug=36924#8 and @@ -1240,6 +1250,15 @@ when they log out." (simple-service 'fontconfig-file-system file-system-service-type (list %fontconfig-file-system))) + +;; Avoid stale caches and stale user IDs being reused between system +;; reconfigurations, which would crash GDM and render the system unusable. +;; GDM doesn't require persisting anything valuable there anyway. +(define gdm-file-system-service + (simple-service 'gdm-file-system + file-system-service-type + (list %gdm-file-system))) + ;;; ;;; AccountsService service. @@ -1750,6 +1769,10 @@ applications needing access to be root.") (list (file-append nfs-utils "/sbin/mount.nfs") (file-append ntfs-3g "/sbin/mount.ntfs-3g")))) + ;; This is a volatile read-write file system mounted at /var/lib/gdm, + ;; to avoid GDM stale cache and permission issues. + gdm-file-system-service + ;; The global fontconfig cache directory can sometimes contain ;; stale entries, possibly referencing fonts that have been GC'd, ;; so mount it read-only. diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 0cbd9aa53b..3ff290c197 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -818,27 +818,6 @@ the GNOME desktop environment.") (home-directory "/var/lib/gdm") (shell (file-append shadow "/sbin/nologin"))))) -(define %gdm-activation - ;; Ensure /var/lib/gdm is owned by the "gdm" user. This is normally the - ;; case but could be wrong if the "gdm" user was created, then removed, and - ;; then recreated under a different UID/GID: <https://bugs.gnu.org/37423>. - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils)) - - (let* ((gdm (getpwnam "gdm")) - (uid (passwd:uid gdm)) - (gid (passwd:gid gdm)) - (st (stat "/var/lib/gdm" #f))) - ;; Recurse into /var/lib/gdm only if it has wrong ownership. - (when (and st - (or (not (= uid (stat:uid st))) - (not (= gid (stat:gid st))))) - (for-each (lambda (file) - (chown file uid gid)) - (find-files "/var/lib/gdm" - #:directories? #t))))))) - (define dbus-daemon-wrapper (program-file "gdm-dbus-wrapper" @@ -1022,8 +1001,6 @@ the GNOME desktop environment.") (extensions (list (service-extension shepherd-root-service-type gdm-shepherd-service) - (service-extension activation-service-type - (const %gdm-activation)) (service-extension account-service-type (const %gdm-accounts)) (service-extension pam-root-service-type diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index e7edbf6656..1ffa408666 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -499,6 +500,12 @@ are unavailable." (base-url (string-append base-url directory)) (url (cond ((and=> (string->uri url) uri-scheme) ;full URL? url) + ;; full URL, except for URI scheme. Reuse the URI + ;; scheme of the document that contains the link. + ((string-prefix? "//" url) + (string-append + (symbol->string (uri-scheme (string->uri base-url))) + ":" url)) ((string-prefix? "/" url) ;absolute path? (let ((uri (string->uri base-url))) (uri->string diff --git a/guix/import/gem.scm b/guix/import/gem.scm index 0e5bb7e635..ad1343bff4 100644 --- a/guix/import/gem.scm +++ b/guix/import/gem.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -81,10 +82,12 @@ (requirements gem-dependency-requirements)) ;string -(define (rubygems-fetch name) - "Return a <gem> record for the package NAME, or #f on failure." +(define* (rubygems-fetch name #:optional version) + "Return a <gem> record for the package NAME and VERSION, or #f on failure. If VERSION is #f or missing, return the latest version gem." (and=> (json-fetch - (string-append "https://rubygems.org/api/v1/gems/" name ".json")) + (if version + (string-append "https://rubygems.org/api/v2/rubygems/" name "/versions/" version ".json") + (string-append "https://rubygems.org/api/v1/gems/" name ".json"))) json->gem)) (define (ruby-package-name name) @@ -122,8 +125,11 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES." (define* (gem->guix-package package-name #:key (repo 'rubygems) version) "Fetch the metadata for PACKAGE-NAME from rubygems.org, and return the -`package' s-expression corresponding to that package, or #f on failure." - (let ((gem (rubygems-fetch package-name))) +`package' s-expression corresponding to that package, or #f on failure. +Optionally include a VERSION string to fetch a specific version gem." + (let ((gem (if version + (rubygems-fetch package-name version) + (rubygems-fetch package-name)))) (if gem (let* ((dependencies-names (map gem-dependency-name (gem-dependencies-runtime @@ -189,4 +195,5 @@ package on RubyGems." (recursive-import package-name #:repo '() #:repo->guix-package gem->guix-package - #:guix-name ruby-package-name)) + #:guix-name ruby-package-name + #:version version)) diff --git a/guix/scripts/import/gem.scm b/guix/scripts/import/gem.scm index 82deac16ad..7f1e73332b 100644 --- a/guix/scripts/import/gem.scm +++ b/guix/scripts/import/gem.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:use-module (ice-9 format) + #:use-module (ice-9 receive) #:export (guix-import-gem)) @@ -42,8 +44,9 @@ '()) (define (show-help) - (display (G_ "Usage: guix import gem PACKAGE-NAME -Import and convert the RubyGems package for PACKAGE-NAME.\n")) + (display (G_ "Usage: guix import gem PACKAGE-NAME[@VERSION] Import and +convert the RubyGems package for PACKAGE-NAME. Optionally, a version can be +specified after the at-sign (@) character.\n")) (display (G_ " -h, --help display this help and exit")) (display (G_ " @@ -86,21 +89,23 @@ Import and convert the RubyGems package for PACKAGE-NAME.\n")) (_ #f)) (reverse opts)))) (match args - ((package-name) - (let ((code (if (assoc-ref opts 'recursive) - (map (match-lambda - ((and ('package ('name name) . rest) pkg) - `(define-public ,(string->symbol name) - ,pkg)) - (_ #f)) - (gem-recursive-import package-name 'rubygems)) - (let ((sexp (gem->guix-package package-name))) - (if sexp sexp #f))))) - (match code - ((or #f '(#f)) - (leave (G_ "failed to download meta-data for package '~a'~%") - package-name)) - (_ code)))) + ((spec) + (receive (package-name package-version) + (package-name->name+version spec) + (let ((code (if (assoc-ref opts 'recursive) + (map (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + (gem-recursive-import package-name package-version)) + (let ((sexp (gem->guix-package package-name #:version package-version))) + (if sexp sexp #f))))) + (match code + ((or #f '(#f)) + (leave (G_ "failed to download meta-data for package '~a'~%") + package-name)) + (_ code))))) (() (leave (G_ "too few arguments~%"))) ((many ...) diff --git a/tests/gem.scm b/tests/gem.scm index c8fe15398e..6aa0d279dc 100644 --- a/tests/gem.scm +++ b/tests/gem.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,6 +45,22 @@ \"licenses\": [\"MIT\", \"Apache 2.0\"] }") +(define test-foo-v2-json + "{ + \"name\": \"foo\", + \"version\": \"2.0.0\", + \"sha\": \"f3676eafca9987cb5fe263df1edf2538bf6dafc712b30e17be3543a9680547a8\", + \"info\": \"A cool gem\", + \"homepage_uri\": \"https://example.com\", + \"dependencies\": { + \"runtime\": [ + { \"name\": \"bundler\" }, + { \"name\": \"bar\" } + ] + }, + \"licenses\": [\"MIT\", \"Apache 2.0\"] +}") + (define test-bar-json "{ \"name\": \"bar\", @@ -103,6 +120,35 @@ (x (pk 'fail x #f))))) +(test-assert "gem->guix-package with a specific version" + ;; Replace network resources with sample data. + (mock ((guix http-client) http-fetch + (lambda (url . rest) + (match url + ("https://rubygems.org/api/v2/rubygems/foo/versions/2.0.0.json" + (values (open-input-string test-foo-v2-json) + (string-length test-foo-v2-json))) + (_ (error "Unexpected URL: " url))))) + (match (gem->guix-package "foo" #:version "2.0.0") + (('package + ('name "ruby-foo") + ('version "2.0.0") + ('source ('origin + ('method 'url-fetch) + ('uri ('rubygems-uri "foo" 'version)) + ('sha256 + ('base32 + "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk")))) + ('build-system 'ruby-build-system) + ('propagated-inputs ('list 'bundler 'ruby-bar)) + ('synopsis "A cool gem") + ('description "This package provides a cool gem") + ('home-page "https://example.com") + ('license ('list 'license:expat 'license:asl2.0))) + #t) + (x + (pk 'fail x #f))))) + (test-assert "gem-recursive-import" ;; Replace network resources with sample data. (mock ((guix http-client) http-fetch @@ -170,4 +216,71 @@ (x (pk 'fail x #f))))) +(test-assert "gem-recursive-import with a specific version" + ;; Replace network resources with sample data. + (mock ((guix http-client) http-fetch + (lambda (url . rest) + (match url + ("https://rubygems.org/api/v2/rubygems/foo/versions/2.0.0.json" + (values (open-input-string test-foo-v2-json) + (string-length test-foo-v2-json))) + ("https://rubygems.org/api/v1/gems/bar.json" + (values (open-input-string test-bar-json) + (string-length test-bar-json))) + ("https://rubygems.org/api/v1/gems/bundler.json" + (values (open-input-string test-bundler-json) + (string-length test-bundler-json))) + (_ (error "Unexpected URL: " url))))) + (match (gem-recursive-import "foo" "2.0.0") + ((('package + ('name "ruby-bar") + ('version "1.0.0") + ('source + ('origin + ('method 'url-fetch) + ('uri ('rubygems-uri "bar" 'version)) + ('sha256 + ('base32 + "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk")))) + ('build-system 'ruby-build-system) + ('propagated-inputs ('list 'bundler)) + ('synopsis "Another cool gem") + ('description "Another cool gem") + ('home-page "https://example.com") + ('license #f)) ;no licensing info + ('package + ('name "ruby-bundler") + ('version "1.14.2") + ('source + ('origin + ('method 'url-fetch) + ('uri ('rubygems-uri "bundler" 'version)) + ('sha256 + ('base32 + "1446xiz7zg0bz7kgx9jv84y0s4hpsg61dj5l3qb0i00avc1kxd9v")))) + ('build-system 'ruby-build-system) + ('synopsis "Ruby gem bundler") + ('description "Ruby gem bundler") + ('home-page "https://bundler.io/") + ('license 'license:expat)) + ('package + ('name "ruby-foo") + ('version "2.0.0") + ('source + ('origin + ('method 'url-fetch) + ('uri ('rubygems-uri "foo" 'version)) + ('sha256 + ('base32 + "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk")))) + ('build-system 'ruby-build-system) + ('propagated-inputs ('list 'bundler 'ruby-bar)) + ('synopsis "A cool gem") + ('description "This package provides a cool gem") + ('home-page "https://example.com") + ('license ('list 'license:expat 'license:asl2.0)))) + #t) + (x + (pk 'fail x #f))))) + (test-end "gem") diff --git a/tests/gnu-maintenance.scm b/tests/gnu-maintenance.scm index c04d8ba733..89b0684c25 100644 --- a/tests/gnu-maintenance.scm +++ b/tests/gnu-maintenance.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,6 +19,10 @@ (define-module (test-gnu-maintenance) #:use-module (guix gnu-maintenance) + #:use-module (guix tests) + #:use-module (guix tests http) + #:use-module (guix upstream) + #:use-module (guix utils) #:use-module (srfi srfi-1) #:use-module (srfi srfi-64) #:use-module (ice-9 match)) @@ -55,4 +60,28 @@ ("mpg321_0.3.2.orig.tar.gz" "0.3.2") ("bvi-1.4.1.src.tar.gz" "1.4.1"))))) +(test-assert "latest-html-release, scheme-less URIs" + (with-http-server + `((200 "<html xmlns=\"http://www.w3.org/1999/xhtml\"> +<head> +<title>Releases (on another domain)!</title> +</head> +<body +<a href=\"//another-site/foo-2.tar.gz\">version 1</a> +</body> +</html>")) + (let () + (define package + (dummy-package "foo" + (source + (dummy-origin + (uri (string-append (%local-url) "/foo-1.tar.gz")))) + (properties + `((release-monitoring-url . ,(%local-url)))))) + (define update ((upstream-updater-latest %generic-html-updater) package)) + (define expected-new-url "http://another-site/foo-2.tar.gz") + (and (pk 'u update) + (equal? (upstream-source-version update) "2") + (equal? (list expected-new-url) (upstream-source-urls update)))))) + (test-end) |