From 42495b1886f6d939cfc45f42eae34ab7bd75d326 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Wed, 11 Oct 2023 22:24:37 +0200 Subject: gnu: webkitgtk: Update to 2.42.1. * gnu/packages/webkit.scm (webkitgtk): Update to 2.42.1. [inputs]: Add libjxl. --- gnu/packages/webkit.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 0c82435cde..100875dd52 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -127,13 +127,13 @@ engine that uses Wayland for graphics output.") (define-public webkitgtk (package (name "webkitgtk") ; webkit2gtk4 - (version "2.40.5") + (version "2.42.1") (source (origin (method url-fetch) (uri (string-append "https://www.webkitgtk.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "0zq32rn34v7hzr53s100r77aglbi6wffp9b13bcj31k6cfi53q3x")) + (base32 "1694dnqrjzcqh1hlpqspqz5xxvfd77af33f410ffaglxk34zlhbg")) (patches (search-patches "webkitgtk-adjust-bubblewrap-paths.patch")))) (build-system cmake-build-system) @@ -249,6 +249,7 @@ engine that uses Wayland for graphics output.") libgcrypt libgudev libjpeg-turbo + libjxl libmanette libnotify libpng -- cgit 1.4.1 From f3da903b0169edc19e07be5a91c80488332abe09 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Thu, 12 Oct 2023 08:25:26 +0200 Subject: gnu: Make webkitgtk-next the new webkitgtk. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As of version 2.42.0, the WebKit 6.0 typelib is considered stable. With GNOME itself moving to GTK4 as time marches on, we should reflect the fact that this is the preferred Webkit for future applications. * gnu/packages/webkit.scm (webkitgtk-next): Remove variable. Inline logic… (webkitgtk): … here. Move old value … (webkitgtk-for-gtk3): … here. (webkitgtk-with-libsoup2): Inherit from webkitgtk-for-gtk3. * gnu/packages/geo.scm (gnome-maps): Adjust accordingly. * gnu/packages/gnome.scm (gnome-initial-setup, sushi) (cambalache, devhelp, devhelp-with-libsoup2, gnome-online-accounts) (gnome-online-accounts-3.44, evolution-data-server, evolution-data-server-3.44) (lollypop, evolution, gnome-boxes, geary, komikku): Likewise. * gnu/packages/guile-xyz.scm (guile-gi, nomad): Likewise. * gnu/packages/lisp-xyz.scm (sbcl-cl-webkit): Likewise. * gnu/packages/mail.scm (balsa): Likewise. * gnu/packages/mate.scm (atril): Likewise. * gnu/packages/music.scm (ctrlr): Likewise. * gnu/packages/rednotebook.scm (rednotebook): Likewise. * gnu/packages/syndication.scm (gfeeds): Likewise. * gnu/packages/telegram.scm (telegram-desktop): Likewise. * gnu/packages/vnc.scm (remmina): Likewise. * gnu/packages/web-browsers.scm (nyxt): Likewise. --- gnu/packages/geo.scm | 2 +- gnu/packages/gnome.scm | 26 +++++++++++++------------- gnu/packages/guile-xyz.scm | 6 +++--- gnu/packages/lisp-xyz.scm | 2 +- gnu/packages/mail.scm | 2 +- gnu/packages/mate.scm | 2 +- gnu/packages/music.scm | 2 +- gnu/packages/rednotebook.scm | 3 ++- gnu/packages/syndication.scm | 2 +- gnu/packages/telegram.scm | 2 +- gnu/packages/vnc.scm | 2 +- gnu/packages/web-browsers.scm | 2 +- gnu/packages/webkit.scm | 27 ++++++++++++--------------- 13 files changed, 39 insertions(+), 41 deletions(-) diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 746b22a082..fd6bbb003a 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -529,7 +529,7 @@ topology functions.") libsoup libxml2 rest-next - webkitgtk)) + webkitgtk-for-gtk3)) (synopsis "Graphical map viewer and wayfinding program") (description "GNOME Maps is a graphical map viewer. It uses map data from the OpenStreetMap project. It can provide directions for walking, bicycling, diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 9131e4e5f5..b3f49c4b04 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1666,7 +1666,7 @@ sharing to the masses.") libmusicbrainz libxml2 neon - webkitgtk)) + webkitgtk-for-gtk3)) (synopsis "File previewer for the GNOME desktop") (description "Sushi is a DBus-activated service that allows applications to preview files on the GNOME desktop.") @@ -3398,7 +3398,7 @@ compiles to GTKBuilder XML.") python-pygobject python-lxml webkitgtk - webkitgtk-next)) + webkitgtk)) (native-inputs (list `(,glib "bin") gobject-introspection @@ -6157,7 +6157,7 @@ both a traditional UI or a modern UI with a GtkHeaderBar.") pkg-config)) (inputs (list amtk - webkitgtk)) + webkitgtk-for-gtk3)) (home-page "https://wiki.gnome.org/Apps/Devhelp") (synopsis "API documentation browser for GNOME") (description @@ -6170,7 +6170,7 @@ throughout GNOME for API documentation).") (hidden-package (package/inherit devhelp (inputs (modify-inputs (package-inputs devhelp) - (replace "webkitgtk" webkitgtk-with-libsoup2)))))) + (replace "webkitgtk-for-gtk3" webkitgtk-with-libsoup2)))))) (define-public cogl (package @@ -8056,7 +8056,7 @@ window manager.") libsecret mit-krb5 rest-next - webkitgtk)) + webkitgtk-for-gtk3)) (synopsis "Single sign-on framework for GNOME") (home-page "https://wiki.gnome.org/Projects/GnomeOnlineAccounts") (description @@ -8089,7 +8089,7 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") (delete 'disable-gtk-update-icon-cache))))) (inputs (modify-inputs (package-inputs gnome-online-accounts) (replace "rest" rest) - (replace "webkitgtk" webkitgtk-with-libsoup2))))) + (replace "webkitgtk-for-gtk3" webkitgtk-with-libsoup2))))) (define-public evolution-data-server (package @@ -8175,7 +8175,7 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") libphonenumber mit-krb5 openldap - webkitgtk)) + webkitgtk-for-gtk3)) (synopsis "Store address books and calendars") (home-page "https://wiki.gnome.org/Apps/Evolution") (description @@ -8202,7 +8202,7 @@ Evolution (hence the name), but is now used by other packages as well.") (modify-inputs (package-inputs evolution-data-server) (replace "gnome-online-accounts" gnome-online-accounts-3.44) (replace "libgweather4" libgweather) - (replace "webkitgtk" webkitgtk-with-libsoup2))) + (replace "webkitgtk-for-gtk3" webkitgtk-with-libsoup2))) (propagated-inputs (modify-inputs (package-propagated-inputs evolution-data-server) (delete "gtk") @@ -11282,7 +11282,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.") python-pygobject python-pylast totem-pl-parser - webkitgtk)) + webkitgtk-for-gtk3)) (propagated-inputs (list gst-plugins-good ;required to start lollypop gst-plugins-ugly)) ;required for streaming @@ -11751,7 +11751,7 @@ generic enough to work for everyone.") libsoup nss openldap - webkitgtk + webkitgtk-for-gtk3 ytnef)) (home-page "https://gitlab.gnome.org/GNOME/evolution") (synopsis "Manage your email, contacts and schedule") @@ -12370,7 +12370,7 @@ integrate seamlessly with the GNOME desktop.") spice-gtk tracker vte - webkitgtk)) + webkitgtk-for-gtk3)) (home-page "https://wiki.gnome.org/Apps/Boxes") (synopsis "View, access, and manage remote and virtual systems") (description "GNOME Boxes is a simple application to view, access, and @@ -12444,7 +12444,7 @@ non-privileged user.") libstemmer libunwind sqlite - webkitgtk + webkitgtk-for-gtk3 ytnef)) (native-inputs (list appstream-glib @@ -13143,7 +13143,7 @@ profiler via Sysprof, debugging support, and more.") python-rarfile python-requests python-unidecode - webkitgtk-next)) + webkitgtk)) (native-inputs (list desktop-file-utils gettext-minimal diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index f3fc131aaa..0d02694245 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -3433,7 +3433,7 @@ list of components. This module takes care of that for you.") (guix build utils) (ice-9 popen) (ice-9 rdelim)) - #:disallowed-references ,(list gtk+ webkitgtk) + #:disallowed-references ,(list gtk+ webkitgtk-for-gtk3) #:phases (modify-phases %standard-phases (add-after 'unpack 'remove-dotted-circle-from-combining-character @@ -3479,7 +3479,7 @@ list of components. This module takes care of that for you.") (propagated-inputs (list gobject-introspection)) (inputs (list guile-3.0 glib ;; For tests, only relevant when compiling natively - gtk+ webkitgtk)) + gtk+ webkitgtk-for-gtk3)) (home-page "https://github.com/spk121/guile-gi") (synopsis "GObject bindings for Guile") (description @@ -4018,7 +4018,7 @@ processing filters.") ("glib-networking" ,glib-networking) ("gtk+" ,gtk+) ("gtk+:bin" ,gtk+ "bin") - ("webkitgtk" ,webkitgtk) + ("webkitgtk" ,webkitgtk-for-gtk3) ("gtksourceview" ,gtksourceview-4) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("vte" ,vte) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 5a1422e163..06b4825570 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -5065,7 +5065,7 @@ is a library for creating graphical user interfaces.") (inputs `(("cffi" ,sbcl-cffi) ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk) - ("webkitgtk" ,webkitgtk))) + ("webkitgtk" ,webkitgtk-for-gtk3))) (native-inputs `(;; Tests seem to need Xorg. ;; ("xorg-server" ,xorg-server-for-tests) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 1676acf2f9..523c20c4a9 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -3931,7 +3931,7 @@ tools and applications: libsecret openldap sqlite - webkitgtk)) + webkitgtk-for-gtk3)) (native-inputs (list compface `(,glib "bin") intltool pkg-config yelp-tools)) diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 5c3b4a265e..5a6c6b5b64 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -775,7 +775,7 @@ infamous 'Wanda the Fish'.") ;; Build libkpathsea as a shared library for DVI support. ;; ("libkpathsea" ,texlive-bin) ("poppler" ,poppler) - ("webkitgtk" ,webkitgtk))) + ("webkitgtk" ,webkitgtk-for-gtk3))) (home-page "https://mate-desktop.org") (synopsis "Document viewer for Mate") (description diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index b5f7d882e4..55edecb649 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -538,7 +538,7 @@ list(APPEND ctrlrLibs \"iberty\")"))))) freetype libiberty libx11 - webkitgtk)) + webkitgtk-for-gtk3)) (native-inputs (list pkg-config)) (home-page "https://ctrlr.org/") diff --git a/gnu/packages/rednotebook.scm b/gnu/packages/rednotebook.scm index f63104ad32..a5dcc26efd 100644 --- a/gnu/packages/rednotebook.scm +++ b/gnu/packages/rednotebook.scm @@ -71,7 +71,8 @@ `("LD_LIBRARY_PATH" ":" prefix (,webkitgtk-path))) #t)))))) (inputs - (list gtk+ gtksourceview-3 python-pyyaml python-pygobject webkitgtk)) + (list gtk+ gtksourceview-3 python-pyyaml python-pygobject + webkitgtk-for-gtk3)) ;; TODO: package the following for python3 (if possible), add them as ;; dependencies, and remove them from rednotebook source: ;; pygtkspellcheck, elib.intl, msgfmt, txt2tags diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index 5a9d5ed480..85b75c17d6 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -621,7 +621,7 @@ parser. It is \"not fit for use at this point\", but gfeeds uses it anyway.") python-readability-lxml python-requests syndication-domination - webkitgtk-next)) + webkitgtk)) (home-page "https://gfeeds.gabmus.org/") (synopsis "Easy-to-use GTK+ RSS/Atom feed reader") (description "Feeds is an RSS/Atom feed reader made with GTK+ diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm index 4814c22b6c..990dc0a001 100644 --- a/gnu/packages/telegram.scm +++ b/gnu/packages/telegram.scm @@ -531,7 +531,7 @@ Telegram project, for its use in telegram desktop client.") rnnoise wayland wayland-protocols - webkitgtk + webkitgtk-for-gtk3 webrtc-for-telegram-desktop xcb-util-keysyms xxhash diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm index 8ba1292e28..7b39aba58d 100644 --- a/gnu/packages/vnc.scm +++ b/gnu/packages/vnc.scm @@ -151,7 +151,7 @@ telepathy-glib vte ; for st plugin wayland - webkitgtk ; for www plugin + webkitgtk-for-gtk3 ; for www plugin libx11 libxext ; for xdmcp plugin xdg-utils diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 553d003631..5543ecab4d 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -712,7 +712,7 @@ driven and does not detract you from your daily work.") gsettings-desktop-schemas cl-gobject-introspection gtk+ ; For the main loop - webkitgtk ; Required when we use its typelib + webkitgtk-for-gtk3 ; Required when we use its typelib gobject-introspection pkg-config)) (synopsis "Extensible web-browser in Common Lisp") diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 100875dd52..a374711119 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -126,7 +126,7 @@ engine that uses Wayland for graphics output.") (define-public webkitgtk (package - (name "webkitgtk") ; webkit2gtk4 + (name "webkitgtk") (version "2.42.1") (source (origin (method url-fetch) @@ -149,10 +149,8 @@ engine that uses Wayland for graphics output.") #:build-type "Release" #:configure-flags #~(list "-DPORT=GTK" - ;; GTKDOC will be removed upstream soon in favor of - ;; gi-docgen; it is normally disabled because the - ;; doc is rather expensive to build. - "-DENABLE_GTKDOC=ON" + "-DENABLE_INTROSPECTION=ON" + "-DUSE_GTK4=ON" ;; The minibrowser, not built by default, is a good ;; tool to validate the good operation of ;; webkitgtk. @@ -232,7 +230,7 @@ engine that uses Wayland for graphics output.") ruby-2.7 unifdef)) (propagated-inputs - (list gtk+ libsoup)) + (list gtk libsoup)) (inputs (list at-spi2-core bubblewrap @@ -251,7 +249,6 @@ engine that uses Wayland for graphics output.") libjpeg-turbo libjxl libmanette - libnotify libpng libseccomp libsecret @@ -284,28 +281,28 @@ propagated by default) such as @code{gst-plugins-good} and license:bsd-2 license:bsd-3)))) -(define-public webkitgtk-next +(define-public webkitgtk-for-gtk3 (package (inherit webkitgtk) - (name "webkitgtk-next") ; webkit2gtk5 + (name "webkitgtk-for-gtk3") (arguments (substitute-keyword-arguments (package-arguments webkitgtk) ((#:configure-flags flags) - #~(cons* "-DENABLE_INTROSPECTION=ON" - "-DUSE_GTK4=ON" - (delete "-DENABLE_GTKDOC=ON" #$flags))))) + #~(cons* "-DENABLE_GTKDOC=ON" + (delete "-DENABLE_INTROSPECTION=ON" + (delete "-DUSE_GTK4=ON" #$flags)))))) (propagated-inputs (modify-inputs (package-propagated-inputs webkitgtk) - (replace "gtk+" gtk))) + (replace "gtk" gtk+))) (inputs (modify-inputs (package-inputs webkitgtk) - (delete "libnotify"))))) + (prepend libnotify))))) ;;; Required by e.g. emacs-next-pgtk, emacs-xwidgets, and some other GNOME ;;; packages for webkit2gtk-4.0. See also the upstream tracker for libsoup 3: ;;; https://gitlab.gnome.org/GNOME/libsoup/-/issues/218. (define-public webkitgtk-with-libsoup2 - (package/inherit webkitgtk + (package/inherit webkitgtk-for-gtk3 (name "webkitgtk-with-libsoup2") (arguments (substitute-keyword-arguments (package-arguments webkitgtk) ((#:configure-flags flags) -- cgit 1.4.1 From 7c52509992991ba639508ed167a5cc56f5e944f2 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Mon, 23 Oct 2023 00:20:16 +0200 Subject: gnu: webkitgtk-with-libsoup2: Use keyword arguments for GTK3. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes an error commit ee748c1df093dd63da982e2f3cd0e11c6633d3d6, where webkitgtk-with-libsoup2 would be built for GTK4 – a contradiction, as GTK4 builds require libsoup3. See also . * gnu/packages/webkit.scm (webkitgtk-with-libsoup2)[arguments]: Use package-arguments of webkitgtk-for-gtk3 rather than webkitgtk. Co-authored-by: Vivien Kraus --- gnu/packages/webkit.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index a374711119..6810ba74e7 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -304,7 +304,7 @@ propagated by default) such as @code{gst-plugins-good} and (define-public webkitgtk-with-libsoup2 (package/inherit webkitgtk-for-gtk3 (name "webkitgtk-with-libsoup2") - (arguments (substitute-keyword-arguments (package-arguments webkitgtk) + (arguments (substitute-keyword-arguments (package-arguments webkitgtk-for-gtk3) ((#:configure-flags flags) #~(cons "-DUSE_SOUP2=ON" #$flags)))) (propagated-inputs -- cgit 1.4.1 From 91e50cac910f0c63b59c7ea8b80e2e827a8dd529 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Tue, 24 Oct 2023 19:22:21 +0200 Subject: gnu: webkitgtk-with-libsoup2: Use propagated inputs from GTK3. This fixes an error in commits ee748c1df093dd63da982e2f3cd0e11c6633d3d6 and 9bac1cad271de4f4436755c296577c4e185d564c, the latter of which was missing a hunk to address the failing build of the former. See for the full patch. * gnu/packages/webkit.scm (webkitgtk-with-libsoup2)[propagated-inputs]: Use package-propagated-inputs from webkitgtk-for-gtk3 rather than webkitgtk. Co-authored-by: Vivien Kraus --- gnu/packages/webkit.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 6810ba74e7..7e0370abc0 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -308,7 +308,7 @@ propagated by default) such as @code{gst-plugins-good} and ((#:configure-flags flags) #~(cons "-DUSE_SOUP2=ON" #$flags)))) (propagated-inputs - (modify-inputs (package-propagated-inputs webkitgtk) + (modify-inputs (package-propagated-inputs webkitgtk-for-gtk3) (replace "libsoup" libsoup-minimal-2))))) (define-public wpewebkit -- cgit 1.4.1 From 325c98094be634e1fbedbb92b110a5059ba543db Mon Sep 17 00:00:00 2001 From: Jack Hill Date: Tue, 14 Nov 2023 16:50:53 -0500 Subject: gnu: webkitgtk: Update to 2.42.2. * gnu/packages/webkit.scm (webkitgtk): Update to 2.42.2. Signed-off-by: Liliana Marie Prikler --- gnu/packages/webkit.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 7e0370abc0..527195dbff 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -127,13 +127,13 @@ engine that uses Wayland for graphics output.") (define-public webkitgtk (package (name "webkitgtk") - (version "2.42.1") + (version "2.42.2") (source (origin (method url-fetch) (uri (string-append "https://www.webkitgtk.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "1694dnqrjzcqh1hlpqspqz5xxvfd77af33f410ffaglxk34zlhbg")) + (base32 "066i1dswmrgvxfb1fyv93pkkl8zqy16ps62j6bvbkw97hqzal82p")) (patches (search-patches "webkitgtk-adjust-bubblewrap-paths.patch")))) (build-system cmake-build-system) -- cgit 1.4.1 From 0f5677ddf80b97e549e229a44619c3a71c22b039 Mon Sep 17 00:00:00 2001 From: "Andre A. Gomes" Date: Fri, 8 Dec 2023 20:44:00 +0100 Subject: gnu: webkitgtk: Update to 2.42.3. * gnu/packages/webkit.scm (webkitgtk): Update to 2.42.3. Signed-off-by: Liliana Marie Prikler --- gnu/packages/webkit.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 527195dbff..95dac20b81 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -127,13 +127,13 @@ engine that uses Wayland for graphics output.") (define-public webkitgtk (package (name "webkitgtk") - (version "2.42.2") + (version "2.42.3") (source (origin (method url-fetch) (uri (string-append "https://www.webkitgtk.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "066i1dswmrgvxfb1fyv93pkkl8zqy16ps62j6bvbkw97hqzal82p")) + (base32 "1qnq2f6chsfns1psrqbbsqhgyb458zf75nlmzskb6a2n0hq4c6ha")) (patches (search-patches "webkitgtk-adjust-bubblewrap-paths.patch")))) (build-system cmake-build-system) -- cgit 1.4.1 From 822befbcae1ba3e06327c4dd9865bcfd61a49616 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Tue, 12 Dec 2023 22:07:08 +0100 Subject: gnu: epiphany: Build with webkitgtk-for-gtk3. This replacement was omitted in f3da903b0169edc19e07be5a91c80488332abe09: Epiphany 42 still builds with GTK+ 3, so let's use the right Webkit. * gnu/packages/gnome.scm (epiphany)[inputs]: Replace webkitgtk with webkitgtk-for-gtk3. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index b3f49c4b04..c9a6eb78a0 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7186,7 +7186,7 @@ almost all of them.") libxslt nettle ; for hogweed sqlite - webkitgtk)) + webkitgtk-for-gtk3)) (home-page "https://wiki.gnome.org/Apps/Web") (synopsis "GNOME web browser") (description -- cgit 1.4.1 From 9f6210cc5c114310a38ad1cc0ff5900409a7e7cc Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Sat, 16 Dec 2023 02:11:07 +0100 Subject: gnu: yelp: Build with webkitgtk-for-gtk3. This replacement was omitted in f3da903b0169edc19e07be5a91c80488332abe09: Yelp 42 still builds with GTK+ 3, so let's use the right Webkit. * gnu/packages/gnome.scm (yelp)[inputs]: Replace webkitgtk with webkitgtk-for-gtk3. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c9a6eb78a0..a0a7d268e9 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7376,7 +7376,7 @@ jQuery.Syntax JavaScript libraries.") man-db ;for URIs like "man:ls" groff-minimal ;ditto sqlite - webkitgtk + webkitgtk-for-gtk3 yelp-xsl)) (home-page "https://wiki.gnome.org/Apps/Yelp") (synopsis "GNOME help browser") -- cgit 1.4.1 From 6ab242609daec00e8bd54f7bff54557c92695724 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Sun, 17 Dec 2023 10:25:08 +0300 Subject: gnu: guile-ares-rs: Update to 0.9.1. * gnu/packages/guile-xyz.scm (guile-ares-rs): Update to 0.9.1. --- gnu/packages/guile-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index fcaf788d37..462286ad30 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -1106,7 +1106,7 @@ for calling methods on remote servers by exchanging JSON objects.") (define-public guile-ares-rs (package (name "guile-ares-rs") - (version "0.9.0") + (version "0.9.1") (source (origin (method git-fetch) @@ -1116,7 +1116,7 @@ for calling methods on remote servers by exchanging JSON objects.") (file-name (git-file-name name version)) (sha256 (base32 - "0jl4k54ydi1qxdvif4di0ri5jznlfc2gg1qhs94bhk4y22k0gp8c")))) + "173jg8z0cwq5r67lzxsmyir5f6cxd9i5gzb3qryq71cqq4h1c77n")))) (build-system guile-build-system) (arguments (list -- cgit 1.4.1 From 0cfaf5654abecc7809d3ee54421fc40ce6df2011 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Thu, 7 Dec 2023 20:48:10 +0100 Subject: gnu: python-pygame-sdl2: Update to 2.1.0+renpy8.1.3. * gnu/packages/game-development.scm (python-pygame-sdl2): Update to 2.1.0+renpy8.1.3. Change-Id: Ide0baef4762b2c4174d10e07ec94427916ac41af --- gnu/packages/game-development.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index c960f11e85..e664f2c371 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1341,17 +1341,17 @@ and multimedia programs in the Python language.") (define-public python-pygame-sdl2 (let ((real-version "2.1.0") - (renpy-version "8.1.0")) + (renpy-version "8.1.3")) (package (inherit python-pygame) (name "python-pygame-sdl2") - (version (string-append real-version "-for-renpy-" renpy-version)) + (version (string-append real-version "+renpy" renpy-version)) (source (origin (method url-fetch) (uri (string-append "https://www.renpy.org/dl/" renpy-version "/pygame_sdl2-" version ".tar.gz")) - (sha256 (base32 "1qj39jqnv334p4wnxc2v5qxyahp7nkqf9hpdd2sgqcmgaqwnqqmj")) + (sha256 (base32 "0qlprs9n3w254ilizqzvr6s01zx72gh7an0bgwxsq4hm22qypdws")) (modules '((guix build utils))) (snippet '(begin -- cgit 1.4.1 From 7b826d5734ca535c853142b8890a95407accf9ad Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Thu, 7 Dec 2023 20:48:43 +0100 Subject: gnu: python-renpy: Update to 8.1.3. * gnu/packages/game-development.scm (python-renpy): Update to 8.1.3. Change-Id: I5e265cdc0f83eda9ae19a3627fa8cd69ef103806 --- gnu/packages/game-development.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index e664f2c371..f2139b315f 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1392,7 +1392,7 @@ developed mainly for Ren'py.") (define-public python-renpy (package (name "python-renpy") - (version "8.1.0") + (version "8.1.3") (source (origin (method url-fetch) @@ -1400,7 +1400,7 @@ developed mainly for Ren'py.") "/renpy-" version "-source.tar.bz2")) (sha256 (base32 - "08l7z2vwqxkskj3rs2a0w9ahah28ixq8hy48h30k2dm9g19h450h")) + "1g6fz5dxp7yxhgv6q4brzf5hpfqq3l1g3dfv3fsiwwn6mj0b01z2")) (modules '((guix build utils))) (snippet #~(begin -- cgit 1.4.1 From e0e6d659b5d798068b9b03860cc2d3e391f6b74f Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:03:54 +0100 Subject: build-system: Add mix-build-system. * guix/build-system/mix.scm: New file. * guix/build/mix-build-system.scm: New file. Change-Id: I8066d00f7ada4a384621bf541e679bc512e93435 Signed-off-by: Liliana Marie Prikler --- guix/build-system/mix.scm | 186 ++++++++++++++++++++++++++++++++++++++++ guix/build/mix-build-system.scm | 161 ++++++++++++++++++++++++++++++++++ 2 files changed, 347 insertions(+) create mode 100644 guix/build-system/mix.scm create mode 100644 guix/build/mix-build-system.scm diff --git a/guix/build-system/mix.scm b/guix/build-system/mix.scm new file mode 100644 index 0000000000..1b04053d70 --- /dev/null +++ b/guix/build-system/mix.scm @@ -0,0 +1,186 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Pierre-Henry Fröhring +;;; +;;; 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 . + +;; Commentary: +;; +;; Standard build procedure for Elixir packages using 'mix'. This is +;; implemented as an extension of 'gnu-build-system'. +;; +;; Code: + +(define-module (guix build-system mix) + #:use-module (guix build mix-build-system) + #:use-module (guix build-system gnu) + #:use-module (guix build-system) + #:use-module (guix gexp) + #:use-module (guix monads) + #:use-module (guix packages) + #:use-module (guix search-paths) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (mix-build-system hexpm-uri)) + +;; Lazily resolve bindings to avoid circular dependencies. +(define (default-glibc-utf8-locales) + (let* ((base (resolve-interface '(gnu packages base)))) + (module-ref base 'glibc-utf8-locales))) + +(define (default-elixir-hex) + (let ((elixir (resolve-interface '(gnu packages elixir)))) + (module-ref elixir 'elixir-hex))) + +(define (default-rebar3) + (let ((erlang (resolve-interface '(gnu packages erlang)))) + (module-ref erlang 'rebar3))) + +(define (default-elixir) + (let ((elixir (resolve-interface '(gnu packages elixir)))) + (module-ref elixir 'elixir))) + +(define* (strip-prefix name #:optional (prefix "elixir-")) + "Return NAME without the prefix PREFIX." + (if (string-prefix? prefix name) + (string-drop name (string-length prefix)) + name)) + +(define (hexpm-uri name version) + "Return the URI where to fetch the sources of a Hex package NAME at VERSION. +NAME is the name of the package which should look like: elixir-pkg-name-X.Y.Z +See: https://github.com/hexpm/specifications/blob/main/endpoints.md" + ((compose + (cute string-append "https://repo.hex.pm/tarballs/" <> "-" version ".tar") + (cute string-replace-substring <> "-" "_") + strip-prefix) + name)) + +;; A number of environment variables specific to the Mix build system are +;; reflected here. They are documented at +;; https://hexdocs.pm/mix/1.15.7/Mix.html#module-environment-variables. Other +;; parameters located in mix.exs are defined at +;; https://hexdocs.pm/mix/1.15.7/Mix.Project.html#module-configuration +(define* (mix-build name + inputs + #:key + source + (tests? #t) + (mix-path #f) ;See MIX_PATH. + (mix-exs "mix.exs") ;See MIX_EXS. + (build-per-environment #t) ;See :build_per_environment. + (phases '%standard-phases) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (guile #f) + (imported-modules `((guix build mix-build-system) + ,@%gnu-build-system-modules)) + (modules '((guix build mix-build-system) + (guix build utils)))) + "Build SOURCE using Elixir, and with INPUTS." + + ;; Check the documentation of :build_per_environment here: + ;; https://hexdocs.pm/mix/1.15.7/Mix.Project.html#module-configuration And + ;; "Environments" here: + ;; https://hexdocs.pm/mix/1.15.7/Mix.html#module-environments + (define mix-environments + (if build-per-environment + `("prod" ,@(if tests? '("test") '())) + '("shared"))) + + (define builder + (with-imported-modules imported-modules + #~(begin + + (use-modules #$@(sexp->gexp modules)) + + #$(with-build-variables inputs outputs + #~(mix-build #:name #$name + #:source #+source + #:system #$system + #:tests? #$tests? + #:mix-path #$mix-path + #:mix-exs #$mix-exs + #:mix-environments '#$mix-environments + #:build-per-environment #$build-per-environment + #:phases #$(if (pair? phases) + (sexp->gexp phases) + phases) + #:outputs %outputs + #:search-paths '#$(sexp->gexp + (map + search-path-specification->sexp + search-paths)) + #:inputs + %build-inputs))))) + + (mlet %store-monad ((guile (package->derivation (or guile (default-guile)) + system + #:graft? #f))) + (gexp->derivation name + builder + #:system system + #:graft? #f ;consistent with 'gnu-build' + #:target #f + #:guile-for-build guile))) + +(define* (lower name + #:key + (elixir (default-elixir)) + (elixir-hex (default-elixir-hex)) + (glibc-utf8-locales (default-glibc-utf8-locales)) + (inputs '()) + (native-inputs '()) + (propagated-inputs '()) + (rebar3 (default-rebar3)) + (tests? #t) + outputs + source + system + target + #:allow-other-keys #:rest arguments) + "Return a bag for NAME." + (let ((private-keywords + '(#:inputs #:native-inputs + #:outputs #:system #:target + #:elixir #:elixir-hex #:glibc-utf8-locales + #:rebar3 #:erlang)) + (build-inputs + `(,@(standard-packages) + ("glibc-utf8-locales" ,glibc-utf8-locales) + ("erlang" ,(lookup-package-input elixir "erlang")) + ("rebar3" ,rebar3) + ("elixir" ,elixir) + ("elixir-hex" ,elixir-hex) + ,@inputs + ,@native-inputs))) + (bag (name name) + (system system) + (build-inputs build-inputs) + (host-inputs (if target inputs '())) + (outputs outputs) + (build mix-build) + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define mix-build-system + (build-system (name 'mix) + (description "The standard Mix build system") + (lower lower))) + +;;; mix.scm ends here diff --git a/guix/build/mix-build-system.scm b/guix/build/mix-build-system.scm new file mode 100644 index 0000000000..fe2e36d184 --- /dev/null +++ b/guix/build/mix-build-system.scm @@ -0,0 +1,161 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Pierre-Henry Fröhring +;;; +;;; 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 . + +;; Commentary: +;; +;; Code: + +(define-module (guix build mix-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (ice-9 ftw) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (ice-9 string-fun) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-71) + #:export (mix-build + %standard-phases)) + +;; The Elixir version is constant as soon as it is computable from the current +;; execution. It is a X.Y string where X and Y are respectively the major and +;; minor version number of the Elixir used in the build. +(define %elixir-version (make-parameter "X.Y")) + +(define* (elixir-libdir path #:optional (version (%elixir-version))) + "Return the path where all libraries under PATH for a specified Elixir +VERSION are installed." + (string-append path "/lib/elixir/" version)) + +(define* (strip-prefix name #:optional (prefix "elixir-")) + "Return NAME without the prefix PREFIX." + (if (string-prefix? prefix name) + (string-drop name (string-length prefix)) + name)) + +(define (mix-build-dir mix-build-root mix-env) + "Return the directory where build artifacts are to be installed according to +en environment MIX-ENV in the current directory. MIX-BUILD-ROOT depends on the +package arguments. See: https://hexdocs.pm/mix/1.15/Mix.html#module-environment-variables" + (string-append mix-build-root "/" mix-env "/lib")) + +(define (elixir-version inputs) + "Return an X.Y string where X and Y are respectively the major and minor version number of PACKAGE. +Example: /gnu/store/…-elixir-1.14.0 → 1.14" + ((compose + (cute string-join <> ".") + (cute take <> 2) + (cute string-split <> #\.) + strip-prefix + strip-store-file-name) + (assoc-ref inputs "elixir"))) + +(define* (unpack #:key source mix-path #:allow-other-keys) + "Unpack SOURCE in the working directory, and change directory within the +source. When SOURCE is a directory, copy it in a sub-directory of the current +working directory." + (let ((gnu-unpack (assoc-ref gnu:%standard-phases 'unpack))) + (gnu-unpack #:source source) + (when (file-exists? "contents.tar.gz") + (invoke "tar" "xvf" "contents.tar.gz")))) + +(define (list-directories dir) + "List absolute paths of directories directly under the directory DIR." + (map (cute string-append dir "/" <>) + (scandir dir (lambda (filename) + (and (not (member filename '("." ".."))) + (directory-exists? (string-append dir "/" filename))))))) + +(define* (set-mix-env #:key inputs mix-path mix-exs #:allow-other-keys) + "Set environment variables. +See: https://hexdocs.pm/mix/1.15.7/Mix.html#module-environment-variables" + (setenv "MIX_ARCHIVES" "archives") + (setenv "MIX_BUILD_ROOT" "_build") + (setenv "MIX_DEPS_PATH" "deps") + (setenv "MIX_EXS" mix-exs) + (setenv "MIX_HOME" (getcwd)) + (setenv "MIX_PATH" (or mix-path "")) + (setenv "MIX_REBAR3" (string-append (assoc-ref inputs "rebar3") "/bin/rebar3"))) + +(define* (set-elixir-version #:key inputs #:allow-other-keys) + "Store the version number of the Elixir input in a parameter." + (%elixir-version (elixir-version inputs)) + (format #t "Elixir version: ~a~%" (%elixir-version))) + +(define* (build #:key mix-environments #:allow-other-keys) + "Builds the Mix project." + (for-each (lambda (mix-env) + (setenv "MIX_ENV" mix-env) + (invoke "mix" "compile" "--no-deps-check")) + mix-environments)) + +(define* (check #:key (tests? #t) #:allow-other-keys) + "Test the Mix project." + (if tests? + (invoke "mix" "test" "--no-deps-check") + (format #t "tests? = ~a~%" tests?))) + +(define* (remove-mix-dirs . _) + "Remove all .mix/ directories. +We do not want to copy them to the installation directory." + (for-each delete-file-recursively + (find-files "." (file-name-predicate "\\.mix$") #:directories? #t))) + +(define (package-name->elixir-name name+ver) + "Convert the Guix package NAME-VER to the corresponding Elixir name-version +format. Example: elixir-a-pkg-1.2.3 -> a_pkg" + ((compose + (cute string-join <> "_") + (cute drop-right <> 1) + (cute string-split <> #\-)) + (strip-prefix name+ver))) + +(define* (install #:key + inputs + outputs + name + build-per-environment + #:allow-other-keys) + "Install build artifacts in the store." + (let* ((lib-name (package-name->elixir-name name)) + (lib-dir (string-append (elixir-libdir (assoc-ref outputs "out")) "/" lib-name)) + (root (getenv "MIX_BUILD_ROOT")) + (env (if build-per-environment "prod" "shared"))) + (mkdir-p lib-dir) + (copy-recursively (string-append (mix-build-dir root env) "/" lib-name) lib-dir + #:follow-symlinks? #t))) + +(define %standard-phases + (modify-phases gnu:%standard-phases + (delete 'bootstrap) + (delete 'configure) + (add-after 'install-locale 'set-mix-env set-mix-env) + (add-after 'set-mix-env 'set-elixir-version set-elixir-version) + (replace 'unpack unpack) + (replace 'build build) + (replace 'check check) + (add-before 'install 'remove-mix-dirs remove-mix-dirs) + (replace 'install install))) + +(define* (mix-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given Mix package, applying all of PHASES in order." + (apply gnu:gnu-build #:inputs inputs #:phases phases args)) + +;;; mix-build-system.scm ends here -- cgit 1.4.1 From c2ed5a7d134dff0755954dd966cb3a41fc047ba5 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:03:55 +0100 Subject: gnu: elixir: Wrap binaries. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/elixir.scm (elixir)[#:phases]: Add ‘wrap-programs’. [native-search-path]: Add “GUIX_ELIXIR_LIBS”. Change-Id: I75bdde3aeedc1d495ea5fc2c5fc3fcdc5dc3fad2 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir.scm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index 724b42512c..15cbdbdfc7 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -27,6 +27,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (guix gexp) + #:use-module (guix utils) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (gnu packages) @@ -96,9 +97,20 @@ (lambda* (#:key inputs #:allow-other-keys) ;; Some tests require access to a home directory. (setenv "HOME" "/tmp"))) - (delete 'configure)))) - (inputs - (list erlang git)) + (delete 'configure) + (add-after 'install 'wrap-programs + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (programs '("elixir" "elixirc" "iex" "mix"))) + (for-each (lambda (program) + (wrap-program (string-append out "/bin/" program) + '("ERL_LIBS" prefix ("${GUIX_ELIXIR_LIBS}")))) + programs))))))) + (inputs (list erlang git)) + (native-search-paths + (list (search-path-specification + (variable "GUIX_ELIXIR_LIBS") + (files (list (string-append "lib/elixir/" (version-major+minor version))))))) (home-page "https://elixir-lang.org/") (synopsis "Elixir programming language") (description "Elixir is a dynamic, functional language used to build -- cgit 1.4.1 From 612f8afac10a91b78ad5d134598488d43339c702 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:03:56 +0100 Subject: gnu: Add elixir-hex. * gnu/packages/elixir.scm (elixir-hex): New variable. Change-Id: I957688ae4e078afd79acd439880c38083fdab83a Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index 15cbdbdfc7..ef8c39d0d7 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -118,3 +118,48 @@ scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.") (license license:asl2.0))) + +(define-public elixir-hex + (package + (name "elixir-hex") + (version "2.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hexpm/hex.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1kvczwvij58kgkhak68004ap81pl26600bczg21mymy2sypkgxmj")))) + ;; The mix-build-system assumes that Hex exists. + ;; We build Hex using the gnu-build-system. + ;; Other Elixir packages use the mix-build-system. + (build-system gnu-build-system) + (inputs (list elixir)) + (arguments + (list + ;; Hex is needed to build packages used to test Hex. + ;; To avoid this circularity, we disable tests. + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (delete 'bootstrap) + (delete 'configure) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (setenv "MIX_ENV" "prod") + (invoke "mix" "compile"))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (define X.Y #$(version-major+minor (package-version elixir))) + (define out (string-append (assoc-ref outputs "out") "/lib/elixir/" X.Y "/hex")) + (mkdir-p out) + (copy-recursively "_build/prod/lib/hex" out)))))) + (synopsis "Package manager for the Erlang VM") + (description + "This project provides tasks that integrate with Mix, Elixir's build +tool.") + (home-page "https://hexdocs.pm/makeup_elixir/") + (license license:bsd-2))) -- cgit 1.4.1 From 303b9bd1639de4d3bb69136da5b6680eccdcd883 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:03:57 +0100 Subject: gnu: Add elixir-nimble-parsec. * gnu/packages/elixir-xyz.scm (elixir-nimble-parsec): New variable. Change-Id: I79bab8095aee3212bc295354ead55df49ef92d17 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 gnu/packages/elixir-xyz.scm diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm new file mode 100644 index 0000000000..a57d2aae8d --- /dev/null +++ b/gnu/packages/elixir-xyz.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Pierre-Henry Fröhring +;;; +;;; 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 . + +(define-module (gnu packages elixir-xyz) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages elixir) + #:use-module (gnu packages linux) + #:use-module (gnu packages) + #:use-module (guix build-system gnu) + #:use-module (guix build-system mix) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix gexp) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26)) + +(define-public elixir-nimble-parsec + (package + (name "elixir-nimble-parsec") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "0rxiw6jzz77v0j460wmzcprhdgn71g1hrz3mcc6djn7bnb0f70i6")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (synopsis "Text-based parser combinators") + (description + "This library provides primitives for efficient parser combinators, allowing +for higher-level combinators through composition.") + (home-page "https://hexdocs.pm/nimble_parsec/") + (license license:asl2.0))) + +;;; +;;; Avoid adding new packages to the end of this file. To reduce the chances +;;; of a merge conflict, place them above by existing packages with similar +;;; functionality or similar names. +;;; -- cgit 1.4.1 From be31d3f32f1c3974cd9a011372c95664f7c443f2 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:03:58 +0100 Subject: gnu: Add elixir-makeup. * gnu/packages/elixir-xyz.scm (elixir-makeup): New variable. Change-Id: I21fe9ffddb4c95a2c67b74340b1105c2a54d3c82 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index a57d2aae8d..ba682e7f07 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -50,6 +50,26 @@ for higher-level combinators through composition.") (home-page "https://hexdocs.pm/nimble_parsec/") (license license:asl2.0))) +(define-public elixir-makeup + (package + (name "elixir-makeup") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "19jpprryixi452jwhws3bbks6ki3wni9kgzah3srg22a3x8fsi8a")))) + (build-system mix-build-system) + (propagated-inputs (list elixir-nimble-parsec)) + (arguments (list #:tests? #f)) ; no tests + (synopsis "Syntax highlighter for source code") + (description + "Makeup is a generic syntax highlighter in the style of Pygments suitable for use in code hosting, +forums, wikis or other applications that need to prettify source code.") + (home-page "https://hexdocs.pm/makeup/") + (license license:bsd-2))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 4ee644f91874e5697b81ba3e9bcc1d8ab22839a7 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:03:59 +0100 Subject: gnu: Add elixir-jason. * gnu/packages/elixir-xyz.scm (elixir-jason): New variable. Change-Id: Iadd816e2b5db6d146728aacb4d6b2c66aba4304c Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index ba682e7f07..66c364fb32 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -70,6 +70,27 @@ forums, wikis or other applications that need to prettify source code.") (home-page "https://hexdocs.pm/makeup/") (license license:bsd-2))) +(define-public elixir-jason + (package + (name "elixir-jason") + (version "1.4.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "18d70i31bz11nr6vgsjn5prvhkvwqbyf3xq22ck5cnsnzp6ixc7v")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (synopsis "JSON parser and generator") + (description + "Parser and generator are written in pure Elixir and optimized for speed. They +are at least twice as fast as other Elixir/Erlang libraries (e.g. +Poison). The performance is comparable to jiffy, which is implemented in C as +a NIF.") + (home-page "https://hexdocs.pm/jason/") + (license license:asl2.0))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From e490763f2727b682c9a019ff7e7057e65aa5fbd5 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:00 +0100 Subject: gnu: Add elixir-file-system. * gnu/packages/elixir-xyz.scm (elixir-file-system): New variable. Change-Id: I54e9c9069ddf150bb0c882775b0b2c9d5e59abd6 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index 66c364fb32..948d8aecc6 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -20,6 +20,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages elixir) #:use-module (gnu packages linux) + #:use-module (gnu packages compression) + #:use-module (gnu packages base) #:use-module (gnu packages) #:use-module (guix build-system gnu) #:use-module (guix build-system mix) @@ -91,6 +93,37 @@ a NIF.") (home-page "https://hexdocs.pm/jason/") (license license:asl2.0))) +(define-public elixir-file-system + (package + (name "elixir-file-system") + (version "0.2.10") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "1p0myxmnjjds8bbg69dd6fvhk8q3n7lb78zd4qvmjajnzgdmw6a1")) + (snippet #~(begin + (use-modules (guix build utils) (ice-9 ftw)) + (mkdir "source") + (for-each (lambda (file) + (when (not (member file '("." ".." "source"))) + (rename-file file (string-append "source/" file)))) + (scandir ".")) + (with-directory-excursion "source" + (invoke (string-append #+gzip "/bin/gunzip") "-v" "contents.tar.gz") + (invoke (string-append #+tar "/bin/tar") "-xvf" "contents.tar") + (delete-file "contents.tar") + (delete-file "priv/inotifywait.exe")))))) + (build-system mix-build-system) + (propagated-inputs (list inotify-tools)) + (arguments (list #:tests? #f)) ; no tests + (synopsis "File system change watcher") + (description "Provides a file system change watcher wrapper based on +https://github.com/synrc/fs.") + (home-page "https://hexdocs.pm/file_system/") + (license license:wtfpl2))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 87e3f0b9b56af55a3180af2e5629d73c79926126 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:01 +0100 Subject: gnu: Add elixir-bunt. * gnu/packages/elixir-xyz.scm (elixir-bunt): New variable. Change-Id: Ib84797c31d6ab40d59b87b040993dae9391ead6b Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index 948d8aecc6..33fa20749b 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -124,6 +124,25 @@ https://github.com/synrc/fs.") (home-page "https://hexdocs.pm/file_system/") (license license:wtfpl2))) +(define-public elixir-bunt + (package + (name "elixir-bunt") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "19bp6xh052ql3ha0v3r8999cvja5d2p6cph02mxphfaj4jsbyc53")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (synopsis "256 color ANSI coloring in the terminal") + (description "Bunt is an Elixir package that enables 256 color ANSI +coloring in the terminal and allows users to alias colors to more semantic and +application-specific names1.") + (home-page "https://hexdocs.pm/bunt/") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 20312bdf5bb4b68f4b652e024471d9c31cf14d34 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:02 +0100 Subject: gnu: Add elixir-inch-ex. * gnu/packages/elixir-xyz.scm (elixir-inch-ex): New variable. Change-Id: I6e98424528a0264a2587d28fcf065fa74eff0f1a Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index 33fa20749b..ed61cac508 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -143,6 +143,27 @@ application-specific names1.") (home-page "https://hexdocs.pm/bunt/") (license license:expat))) +(define-public elixir-inch-ex + (package + (name "elixir-inch-ex") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "1a4rjcy3hn5pc40si1d1y7qg0b0mnxx6pw825la67ky8r9gfrl4n")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (propagated-inputs (list elixir-bunt elixir-jason)) + (synopsis + "Suggest enhancements for inline documentation") + (description + "This package provides a Mix task that gives you hints where to improve your +inline docs.") + (home-page "https://hex.pm/packages/inch_ex") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From ab74b47e92fd88ebcef20cec2600d690a6061c23 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:03 +0100 Subject: gnu: Add elixir-castore. * gnu/packages/elixir-xyz.scm (elixir-castore): New variable. Change-Id: Iea1fea8241d19ff35a183af9c3fbf2ed5198a259 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index ed61cac508..ef80c9550c 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -164,6 +164,24 @@ inline docs.") (home-page "https://hex.pm/packages/inch_ex") (license license:expat))) +(define-public elixir-castore + (package + (name "elixir-castore") + (version "1.0.4") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "1y44amb8falsmrfzpkmf7qp6215g9kdl76g91dpna4af2jwc264l")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (synopsis "Up-to-date CA certificate store") + (description "The Elixir castore package is a micro-library that provides +an up-to-date CA certificate store file for Elixir applications.") + (home-page "https://hexdocs.pm/castore/") + (license license:asl2.0))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 2060e3f5c8130bb9214a6951ac32475811963061 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:04 +0100 Subject: gnu: Add elixir-excoveralls. * gnu/packages/elixir-xyz.scm (elixir-excoveralls): New variable. Change-Id: Ib271d8a7393e21178806df28ab892afe99757297 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index ef80c9550c..14e67060e8 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -182,6 +182,28 @@ an up-to-date CA certificate store file for Elixir applications.") (home-page "https://hexdocs.pm/castore/") (license license:asl2.0))) +(define-public elixir-excoveralls + (package + (name "elixir-excoveralls") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "02x69ll5scvraky0k5gacvnnmldv5k04kgk02x087d9w3y8vn28i")))) + (build-system mix-build-system) + (propagated-inputs (list elixir-castore elixir-jason)) + (arguments (list #:tests? #f)) ; no tests + (synopsis "Coverage report tool with coveralls.io integration") + (description + "Library that reports test coverage statistics, with the option to +post to coveralls.io service. It uses Erlang's cover to generate coverage +information, and posts the test coverage results to coveralls.io through the +JSON API.") + (home-page "https://hexdocs.pm/excoveralls/") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From d3410fb2847d3b0a006e5f9ee569608dc8bafb2a Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:05 +0100 Subject: gnu: Add elixir-credo. * gnu/packages/elixir-xyz.scm (elixir-credo): New variable. Change-Id: I6df0d926e0fb96caa65d081892026b3495431c83 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index 14e67060e8..8485355e48 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -204,6 +204,30 @@ JSON API.") (home-page "https://hexdocs.pm/excoveralls/") (license license:expat))) +(define-public elixir-credo + (package + (name "elixir-credo") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "18jqi9s9r1587njzdxycvmmbma30cay9iamni4f3ih54jmh1r1z9")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (propagated-inputs (list elixir-bunt elixir-file-system elixir-jason)) + (native-inputs (list elixir-excoveralls elixir-inch-ex)) + (synopsis "Static code analysis tool") + (description + "Credo is a static code analysis tool for the Elixir language with a focus on +teaching and code consistency. Credo can show you refactoring opportunities in +your code, complex code fragments, warn you about common mistakes, show +inconsistencies in your naming scheme and - if needed - help you enforce a +desired coding style.") + (home-page "https://hexdocs.pm/credo/") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 43a74143ea9f78a4a660eb7d0f382852735875f3 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:06 +0100 Subject: gnu: Add elixir-erlex. * gnu/packages/elixir-xyz.scm (elixir-erlex): New variable. Change-Id: Ia518ad5fd32d3f5942b20113e61e4ef7e7895ff3 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index 8485355e48..df43284301 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -228,6 +228,26 @@ desired coding style.") (home-page "https://hexdocs.pm/credo/") (license license:expat))) +(define-public elixir-erlex + (package + (name "elixir-erlex") + (version "0.2.6") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "0x8c1j62y748ldvlh46sxzv5514rpzm809vxn594vd7y25by5lif")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (synopsis + "Convert Erlang style structs and error messages to equivalent Elixir") + (description + "Converted structs and error messages are useful for pretty printing +things like Dialyzer errors and Observer.") + (home-page "https://hexdocs.pm/erlex/") + (license license:asl2.0))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 32de15206d95d37c066ec13ce95a106d41fae11f Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:07 +0100 Subject: gnu: Add elixir-dialyxir. * gnu/packages/elixir-xyz.scm (elixir-dialyxir): New variable. Change-Id: I387062e0aaaded448022aa7534b95859b5979a06 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index df43284301..5a7330ca45 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -248,6 +248,25 @@ things like Dialyzer errors and Observer.") (home-page "https://hexdocs.pm/erlex/") (license license:asl2.0))) +(define-public elixir-dialyxir + (package + (name "elixir-dialyxir") + (version "1.4.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "00cqwhd1wabwds44jz94rvvr8z8cp12884d3lp69fqkrszb9bdw4")))) + (build-system mix-build-system) + (arguments (list #:tests? #f)) ; no tests + (propagated-inputs (list elixir-erlex)) + (synopsis "Mix tasks to simplify use of Dialyzer") + (description + "Mix Tasks are usable from the directory of the mix project you want to analyze.") + (home-page "https://hexdocs.pm/dialyxir/") + (license license:asl2.0))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 9002b04e13188d4eac2f7d614f7cda51d8baea76 Mon Sep 17 00:00:00 2001 From: Pierre-Henry Fröhring Date: Sun, 10 Dec 2023 14:04:08 +0100 Subject: gnu: Add elixir-machete. * gnu/packages/elixir-xyz.scm (elixir-machete): New variable. Change-Id: I76e0fd78aeeaeaa94a297032b3b309846510c975 Signed-off-by: Liliana Marie Prikler --- gnu/packages/elixir-xyz.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm index 5a7330ca45..5af8d7c1b4 100644 --- a/gnu/packages/elixir-xyz.scm +++ b/gnu/packages/elixir-xyz.scm @@ -267,6 +267,26 @@ things like Dialyzer errors and Observer.") (home-page "https://hexdocs.pm/dialyxir/") (license license:asl2.0))) +(define-public elixir-machete + (package + (name "elixir-machete") + (version "0.2.8") + (source + (origin + (method url-fetch) + (uri (hexpm-uri name version)) + (sha256 + (base32 "0952603bmqsf6v3ja99zpbnbx5d52i4xksjkfj3irl45ccq5pgq9")))) + (build-system mix-build-system) + (native-inputs (list elixir-credo elixir-dialyxir)) + (synopsis "Literate test matchers for ExUnit") + (description + "Machete provides ergonomic match operators that act as building blocks to let +you define test expectations that can match data against any combination of +literals, variables, or parametrically defined matchers.") + (home-page "https://hexdocs.pm/machete/") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar -- cgit 1.4.1 From 1a9f267f51f97b8ca7049aa72763ddd64aad5b62 Mon Sep 17 00:00:00 2001 From: antlers Date: Sun, 10 Dec 2023 11:37:37 +0000 Subject: gnu: emacs-embark: Update to 1.0 * gnu/packages/emacs-xyx.scm (emacs-embark): Update to 1.0 Change-Id: I230bac996df9883a20c9f70e0b27f5bed37c91fa Signed-off-by: Liliana Marie Prikler --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 9f219dd0dd..f8bd9a111e 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -11691,7 +11691,7 @@ them easier to distinguish from other, less important buffers.") (define-public emacs-embark (package (name "emacs-embark") - (version "0.23") + (version "1.0") (source (origin (method git-fetch) @@ -11699,7 +11699,7 @@ them easier to distinguish from other, less important buffers.") (url "https://github.com/oantolin/embark") (commit version))) (sha256 - (base32 "1dmsaw1m819kzmai45c4cqh5lyyha451f7dxzwwfz9crmzg2w5sf")) + (base32 "14alpanynww6z7yxxyiiy24c0p4pq1argsb0pmqavq25mdxgn4v2")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (arguments -- cgit 1.4.1 From 502bb9681b80f31d3c579462c863aae32a620c40 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 17 Dec 2023 14:32:34 +0200 Subject: gnu: Remove newsboat-2.13. * gnu/packages/syndication.scm (newsboat-2.13): Delete variable. Change-Id: I4453693485a45aee9ba93657624a6e7518808dc8 --- gnu/packages/syndication.scm | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index 4d9811096b..f9a2a6a729 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -43,7 +43,6 @@ #:use-module (gnu packages cmake) #:use-module (gnu packages crates-io) #:use-module (gnu packages curl) - #:use-module (gnu packages documentation) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) @@ -336,38 +335,6 @@ file system, and many more features.") (license (list license:gpl2+ ; filter/* license:expat)))) ; everything else -(define-public newsboat-2.13 - (package - (inherit newsboat) - (version "2.13") - (source - (origin - (method url-fetch) - (uri (string-append "https://newsboat.org/releases/" version - "/newsboat-" version ".tar.xz")) - (sha256 - (base32 - "0pik1d98ydzqi6055vdbkjg5krwifbk2hy2f5jp5p1wcy2s16dn7")))) - (build-system gnu-build-system) - (native-inputs - `(,@(fold alist-delete (package-native-inputs newsboat) - '("asciidoctor" "openssl")) - ;; For building documentation. - ("asciidoc" ,asciidoc))) - (inputs - (modify-inputs (package-inputs newsboat) - (replace "json-c" json-c-0.13))) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'configure) ; no configure script - (add-after 'build 'build-documentation - (lambda _ - (invoke "make" "doc")))) - #:make-flags - (list (string-append "prefix=" (assoc-ref %outputs "out"))) - #:test-target "test")))) - (define-public liferea (package (name "liferea") -- cgit 1.4.1 From 6e6ccef212b014a0526f93d58f263e238d4eb1cf Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 10 Dec 2023 09:50:51 +0200 Subject: gnu: ci: Build tuned packages for common baselines. * gnu/ci.scm (%x86-64-micro-architectures): Update the list of micro-architectures to also match the psABI levels. Change-Id: Iee2f65376a00ad2ee5fb393c2e64c07f866d8116 --- gnu/ci.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/ci.scm b/gnu/ci.scm index 38dc4d1d5c..6ee8499728 100644 --- a/gnu/ci.scm +++ b/gnu/ci.scm @@ -373,7 +373,7 @@ valid. Append SUFFIX to the job name." (define %x86-64-micro-architectures ;; Micro-architectures for which we build tuned variants. - '("westmere" "ivybridge" "haswell" "skylake" "skylake-avx512")) + '("haswell" "skylake" "x86-64-v2" "x86-64-v3" "x86-64-v4")) (define (tuned-package-jobs store package system) "Return a list of jobs for PACKAGE tuned for SYSTEM's micro-architectures." -- cgit 1.4.1 From f8c93ea712c9ea23fe605dc375df5961e204df2a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 17 Dec 2023 14:52:19 +0200 Subject: doc: Document the rust-target platform field. * doc/guix.texi (platform Reference): Document the rust-target platform field. Change-Id: I31642bbc64f6d4f2bfeed4a4000f95f853580444 --- doc/guix.texi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index e61a893af9..7d7697d318 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -45875,6 +45875,11 @@ This optional string field is only relevant if the kernel is Linux. In that case, it corresponds to the ARCH variable used when building Linux, @code{"mips"} for instance. +@item @code{rust-target} (default: @code{#false}) +This optional string field is used to determine which rust target is best +supported by this platform. For example, the base level system targeted by +@code{armhf-linux} system is closest to @code{armv7-unknown-linux-gnueabihf}. + @item @code{glibc-dynamic-linker} This field is the name of the GNU C Library dynamic linker for the corresponding system, as a string. It can be -- cgit 1.4.1 From 39009a8b301a15f7e998c62a0d480941dbd08085 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 17 Dec 2023 15:20:08 +0200 Subject: gnu: go-1.14: Mark i586-gnu as unsupported. * gnu/packages/golang.scm (go-1.14)[supported-systems]: Mark i586-gnu as unsupported. Change-Id: I226676e78e37047cf78ad185355dc4bff64e9d04 --- gnu/packages/golang.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index b5bf9d4b47..476edf6b4d 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -472,7 +472,8 @@ in the style of communicating sequential processes (@dfn{CSP}).") `(("gold" ,binutils-gold))) (_ `())) ,@(package-native-inputs go-1.4))) - (supported-systems (delete "powerpc-linux" %supported-systems)))) + (supported-systems (fold delete %supported-systems + (list "powerpc-linux" "i586-gnu"))))) (define-public go-1.16 (package -- cgit 1.4.1 From 59f60f56ba46b64edc654273d96074b2d5e4dfd0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 18 Dec 2023 08:20:18 +0200 Subject: gnu: Register new files. * gnu/local.mk (GNU_SYSTEM_MODULES): Register gnu/packages/elixir-xyz.scm. * Makefile.am (MODULES): Register guix/build-system/mix.scm, guix/build/mix-build-system.scm. Change-Id: I69c8fbaa6b16d658d5f6a43d1d39d680dd28ffe9 --- Makefile.am | 2 ++ gnu/local.mk | 1 + 2 files changed, 3 insertions(+) diff --git a/Makefile.am b/Makefile.am index 4940fd739c..b9f1c6ad5c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -171,6 +171,7 @@ MODULES = \ guix/build-system/julia.scm \ guix/build-system/linux-module.scm \ guix/build-system/maven.scm \ + guix/build-system/mix.scm \ guix/build-system/node.scm \ guix/build-system/perl.scm \ guix/build-system/pyproject.scm \ @@ -232,6 +233,7 @@ MODULES = \ guix/build/guile-build-system.scm \ guix/build/maven-build-system.scm \ guix/build/minetest-build-system.scm \ + guix/build/mix-build-system.scm \ guix/build/node-build-system.scm \ guix/build/perl-build-system.scm \ guix/build/pyproject-build-system.scm \ diff --git a/gnu/local.mk b/gnu/local.mk index c404d2f52f..ccc3c233bb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -245,6 +245,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/electronics.scm \ %D%/packages/elf.scm \ %D%/packages/elixir.scm \ + %D%/packages/elixir-xyz.scm \ %D%/packages/elm.scm \ %D%/packages/embedded.scm \ %D%/packages/emacs.scm \ -- cgit 1.4.1 From e2d9a8eb1441350c5561986b054046a2dde113c0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 18 Dec 2023 08:27:15 +0200 Subject: Makefile.am: Sort build-system modules alphabetically. * Makefile.am (MODULES): Sort guix/build-system modules alphabetically. Change-Id: I7625f87bda9fa714e6b4b29b6cf055948a859e91 --- Makefile.am | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Makefile.am b/Makefile.am index b9f1c6ad5c..0b733108d4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -144,51 +144,51 @@ MODULES = \ guix/platforms/riscv.scm \ guix/platforms/x86.scm \ guix/build-system.scm \ - guix/build-system/agda.scm \ + guix/build-system/agda.scm \ guix/build-system/android-ndk.scm \ guix/build-system/ant.scm \ + guix/build-system/asdf.scm \ guix/build-system/cargo.scm \ - guix/build-system/channel.scm \ - guix/build-system/chicken.scm \ - guix/build-system/clojure.scm \ + guix/build-system/channel.scm \ + guix/build-system/chicken.scm \ + guix/build-system/clojure.scm \ guix/build-system/cmake.scm \ + guix/build-system/copy.scm \ guix/build-system/dub.scm \ guix/build-system/dune.scm \ guix/build-system/elm.scm \ guix/build-system/emacs.scm \ guix/build-system/font.scm \ - guix/build-system/go.scm \ - guix/build-system/meson.scm \ - guix/build-system/mozilla.scm \ - guix/build-system/minify.scm \ - guix/build-system/minetest.scm \ - guix/build-system/asdf.scm \ - guix/build-system/copy.scm \ guix/build-system/glib-or-gtk.scm \ guix/build-system/gnu.scm \ + guix/build-system/go.scm \ guix/build-system/guile.scm \ - guix/build-system/haskell.scm \ + guix/build-system/haskell.scm \ guix/build-system/julia.scm \ guix/build-system/linux-module.scm \ guix/build-system/maven.scm \ + guix/build-system/meson.scm \ + guix/build-system/minetest.scm \ + guix/build-system/minify.scm \ guix/build-system/mix.scm \ + guix/build-system/mozilla.scm \ guix/build-system/node.scm \ + guix/build-system/ocaml.scm \ guix/build-system/perl.scm \ guix/build-system/pyproject.scm \ guix/build-system/python.scm \ - guix/build-system/renpy.scm \ - guix/build-system/ocaml.scm \ guix/build-system/qt.scm \ - guix/build-system/waf.scm \ guix/build-system/r.scm \ guix/build-system/rakudo.scm \ guix/build-system/rebar.scm \ + guix/build-system/renpy.scm \ guix/build-system/ruby.scm \ guix/build-system/scons.scm \ - guix/build-system/texlive.scm \ + guix/build-system/texlive.scm \ guix/build-system/tree-sitter.scm \ - guix/build-system/trivial.scm \ + guix/build-system/trivial.scm \ guix/build-system/vim.scm \ + guix/build-system/waf.scm \ guix/build-system/zig.scm \ guix/ftp-client.scm \ guix/http-client.scm \ -- cgit 1.4.1 From 29c94dd522833b2603a651c14a5b06120bcf1829 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 18 Dec 2023 12:51:56 +0200 Subject: gnu: freeimage: Patch 2 CVEs. * gnu/packages/image.scm (freeimage)[source]: Add patches. * gnu/packages/patches/freeimage-CVE-2020-21428.patch, gnu/packages/patches/freeimage-CVE-2020-22524.patch: New files. * gnu/local.mk (dist_patch_DATA): Register them. Change-Id: Iec114f2295cafbc8b55e81c0d8e4a361fd653152 --- gnu/local.mk | 2 + gnu/packages/image.scm | 4 +- .../patches/freeimage-CVE-2020-21428.patch | 17 ++ .../patches/freeimage-CVE-2020-22524.patch | 229 +++++++++++++++++++++ 4 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/freeimage-CVE-2020-21428.patch create mode 100644 gnu/packages/patches/freeimage-CVE-2020-22524.patch diff --git a/gnu/local.mk b/gnu/local.mk index ccc3c233bb..0a5ecd97dc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1189,6 +1189,8 @@ dist_patch_DATA = \ %D%/packages/patches/freedink-engine-fix-sdl-hints.patch \ %D%/packages/patches/freeimage-libtiff-compat.patch \ %D%/packages/patches/freeimage-unbundle.patch \ + %D%/packages/patches/freeimage-CVE-2020-21428.patch \ + %D%/packages/patches/freeimage-CVE-2020-22524.patch \ %D%/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch \ %D%/packages/patches/fuse-glibc-2.34.patch \ %D%/packages/patches/fuse-overlapping-headers.patch \ diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index d237bf689c..8a8e1eacb7 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1253,7 +1253,9 @@ supplies a generic doubly-linked list and some string functions.") (patches (append (search-patches "freeimage-unbundle.patch" - "freeimage-libtiff-compat.patch") + "freeimage-libtiff-compat.patch" + "freeimage-CVE-2020-21428.patch" + "freeimage-CVE-2020-22524.patch") ;; Take one patch from Arch Linux that adds LibRaw 0.20 compatibility. (list (origin (method url-fetch) diff --git a/gnu/packages/patches/freeimage-CVE-2020-21428.patch b/gnu/packages/patches/freeimage-CVE-2020-21428.patch new file mode 100644 index 0000000000..49f427360b --- /dev/null +++ b/gnu/packages/patches/freeimage-CVE-2020-21428.patch @@ -0,0 +1,17 @@ +https://sources.debian.org/data/main/f/freeimage/3.18.0%2Bds2-10/debian/patches/r1877-improved-DDS-plugin-against-malicious-images.patch + +Origin: upstream, r1877 +Index: Source/FreeImage/PluginDDS.cpp +=================================================================== +diff --git a/Source/FreeImage/PluginDDS.cpp b/Source/FreeImage/PluginDDS.cpp +--- a/Source/FreeImage/PluginDDS.cpp (revision 1876) ++++ b/Source/FreeImage/PluginDDS.cpp (revision 1877) +@@ -617,7 +617,7 @@ + // read the file + // ------------------------------------------------------------------------- + +- const int line = CalculateLine(width, bpp); ++ const int line = CalculateLine(width, FreeImage_GetBPP(dib)); + const int filePitch = ((desc->dwFlags & DDSD_PITCH) == DDSD_PITCH) ? (int)desc->dwPitchOrLinearSize : line; + const long delta = (long)filePitch - (long)line; + diff --git a/gnu/packages/patches/freeimage-CVE-2020-22524.patch b/gnu/packages/patches/freeimage-CVE-2020-22524.patch new file mode 100644 index 0000000000..47368d7d91 --- /dev/null +++ b/gnu/packages/patches/freeimage-CVE-2020-22524.patch @@ -0,0 +1,229 @@ +https://sources.debian.org/data/main/f/freeimage/3.18.0%2Bds2-10/debian/patches/r1848-improved-PFM-plugin-against-malicious-images.patch + +Origin: upstream, r1848 +Index: Source/FreeImage/PluginPFM.cpp +--- +diff --git a/Source/FreeImage/PluginPFM.cpp b/Source/FreeImage/PluginPFM.cpp +--- a/Source/FreeImage/PluginPFM.cpp (revision 1847) ++++ b/Source/FreeImage/PluginPFM.cpp (revision 1848) +@@ -23,6 +23,12 @@ + #include "Utilities.h" + + // ========================================================== ++// Plugin Interface ++// ========================================================== ++ ++static int s_format_id; ++ ++// ========================================================== + // Internal functions + // ========================================================== + +@@ -59,6 +65,9 @@ + + /** + Get an integer value from the actual position pointed by handle ++@param io ++@param handle ++@return Returns -1 in case of failure, returns the found number otherwise + */ + static int + pfm_get_int(FreeImageIO *io, fi_handle handle) { +@@ -65,70 +74,72 @@ + char c = 0; + BOOL bFirstChar; + +- // skip forward to start of next number ++ try { + +- if(!io->read_proc(&c, 1, 1, handle)) { +- throw FI_MSG_ERROR_PARSING; +- } ++ // skip forward to start of next number + +- while (1) { +- // eat comments ++ if (io->read_proc(&c, 1, 1, handle) != 1) { ++ throw FI_MSG_ERROR_PARSING; ++ } + +- if (c == '#') { +- // if we're at a comment, read to end of line ++ while (1) { ++ // eat comments + +- bFirstChar = TRUE; ++ if (c == '#') { ++ // if we're at a comment, read to end of line + +- while (1) { +- if(!io->read_proc(&c, 1, 1, handle)) { +- throw FI_MSG_ERROR_PARSING; +- } ++ bFirstChar = TRUE; + +- if (bFirstChar && c == ' ') { +- // loop off 1 sp after # +- bFirstChar = FALSE; +- } else if (c == '\n') { +- break; ++ while (1) { ++ if (io->read_proc(&c, 1, 1, handle) != 1) { ++ throw FI_MSG_ERROR_PARSING; ++ } ++ ++ if (bFirstChar && c == ' ') { ++ // loop off 1 sp after # ++ bFirstChar = FALSE; ++ } ++ else if (c == '\n') { ++ break; ++ } + } + } +- } + +- if (c >= '0' && c <='9') { +- // we've found what we were looking for +- break; +- } ++ if (c >= '0' && c <= '9') { ++ // we've found what we were looking for ++ break; ++ } + +- if(!io->read_proc(&c, 1, 1, handle)) { +- throw FI_MSG_ERROR_PARSING; ++ if (io->read_proc(&c, 1, 1, handle) != 1) { ++ throw FI_MSG_ERROR_PARSING; ++ } + } +- } + +- // we're at the start of a number, continue until we hit a non-number ++ // we're at the start of a number, continue until we hit a non-number + +- int i = 0; ++ int i = 0; + +- while (1) { +- i = (i * 10) + (c - '0'); ++ while (1) { ++ i = (i * 10) + (c - '0'); + +- if(!io->read_proc(&c, 1, 1, handle)) { +- throw FI_MSG_ERROR_PARSING; +- } ++ if (io->read_proc(&c, 1, 1, handle) != 1) { ++ throw FI_MSG_ERROR_PARSING; ++ } + +- if (c < '0' || c > '9') { +- break; ++ if (c < '0' || c > '9') { ++ break; ++ } + } +- } + +- return i; ++ return i; ++ } ++ catch (const char *message) { ++ FreeImage_OutputMessageProc(s_format_id, message); ++ return -1; ++ } + } + + // ========================================================== +-// Plugin Interface +-// ========================================================== +- +-static int s_format_id; +- +-// ========================================================== + // Plugin Implementation + // ========================================================== + +@@ -230,8 +241,12 @@ + } + + // Read the header information: width, height and the scale value +- unsigned width = (unsigned) pfm_get_int(io, handle); +- unsigned height = (unsigned) pfm_get_int(io, handle); ++ int width = pfm_get_int(io, handle); ++ int height = pfm_get_int(io, handle); ++ if ((width <= 0) || (height <= 0)) { ++ throw FI_MSG_ERROR_PARSING; ++ } ++ + float scalefactor = 1; + + BOOL bResult = pfm_get_line(io, handle, line_buffer, PFM_MAXLINE); +@@ -262,7 +277,7 @@ + throw FI_MSG_ERROR_MEMORY; + } + +- for (unsigned y = 0; y < height; y++) { ++ for (int y = 0; y < height; y++) { + FIRGBF *bits = (FIRGBF*)FreeImage_GetScanLine(dib, height - 1 - y); + + if(io->read_proc(lineBuffer, sizeof(float), lineWidth, handle) != lineWidth) { +@@ -271,7 +286,7 @@ + float *channel = lineBuffer; + if(scalefactor > 0) { + // MSB +- for (unsigned x = 0; x < width; x++) { ++ for (int x = 0; x < width; x++) { + REVERSEBYTES(channel++, &bits[x].red); + REVERSEBYTES(channel++, &bits[x].green); + REVERSEBYTES(channel++, &bits[x].blue); +@@ -278,7 +293,7 @@ + } + } else { + // LSB +- for (unsigned x = 0; x < width; x++) { ++ for (int x = 0; x < width; x++) { + bits[x].red = *channel++; + bits[x].green = *channel++; + bits[x].blue = *channel++; +@@ -296,7 +311,7 @@ + throw FI_MSG_ERROR_MEMORY; + } + +- for (unsigned y = 0; y < height; y++) { ++ for (int y = 0; y < height; y++) { + float *bits = (float*)FreeImage_GetScanLine(dib, height - 1 - y); + + if(io->read_proc(lineBuffer, sizeof(float), lineWidth, handle) != lineWidth) { +@@ -305,12 +320,12 @@ + float *channel = lineBuffer; + if(scalefactor > 0) { + // MSB - File is Big endian +- for (unsigned x = 0; x < width; x++) { ++ for (int x = 0; x < width; x++) { + REVERSEBYTES(channel++, &bits[x]); + } + } else { + // LSB - File is Little Endian +- for (unsigned x = 0; x < width; x++) { ++ for (int x = 0; x < width; x++) { + bits[x] = *channel++; + } + } +@@ -323,9 +338,12 @@ + return dib; + + } catch (const char *text) { +- if(lineBuffer) free(lineBuffer); +- if(dib) FreeImage_Unload(dib); +- ++ if (lineBuffer) { ++ free(lineBuffer); ++ } ++ if (dib) { ++ FreeImage_Unload(dib); ++ } + if(NULL != text) { + FreeImage_OutputMessageProc(s_format_id, text); + } -- cgit 1.4.1 From e84e33654cfa3723256788ba2ac38d67c9c3114d Mon Sep 17 00:00:00 2001 From: Clément Lassieur Date: Mon, 18 Dec 2023 18:14:36 +0100 Subject: gnu: ublock-origin: Update to 1.54.0. * gnu/packages/browser-extensions.scm (ublock-origin): Update to 1.54.0. (ublock-main-assets): Update to 76bd7cb53036a36f7e7df5ee9173f588ba8aa966. (ublock-prod-assets): Update to a379a168fc149ffbd6d10cd0700d4ab4801e57f2. Change-Id: I0296b45b684562afaef859b0144c875ff05cd2d8 --- gnu/packages/browser-extensions.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm index 0b42acc422..34dfa4b580 100644 --- a/gnu/packages/browser-extensions.scm +++ b/gnu/packages/browser-extensions.scm @@ -57,7 +57,7 @@ supported content to the Kodi media center.") ;; Arbitrary commit of branch master, ;; Update when updating uBlockOrigin. (let* ((name "ublock-main-assets") - (commit "d93605b8584df8cd47bcc91b3d932feecd9e3a2a") + (commit "76bd7cb53036a36f7e7df5ee9173f588ba8aa966") (revision "1") (version (git-version "0" revision commit))) (origin @@ -67,13 +67,13 @@ supported content to the Kodi media center.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1bbwxmb5rb1afh6i5a7m1ysaw0022wi5g091vpahi4h805p1s7a2"))))) + (base32 "1kdzvflr1yxykyva5vsjqr0p2ik1200xbhxwpl3cx2jsiv8l95sk"))))) (define ublock-prod-assets ;; Arbitrary commit of branch gh-pages, ;; Update when updating uBlockOrigin. (let* ((name "ublock-prod-assets") - (commit "1d3df32ef6672763f44b27a95fd5cb3b5770d5e2") + (commit "a379a168fc149ffbd6d10cd0700d4ab4801e57f2") (revision "1") (version (git-version "0" revision commit))) (origin @@ -83,12 +83,12 @@ supported content to the Kodi media center.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1cbx7w1nzdcjq0z4z7j9nr8922i27nslprrw5dy03xcdqwc3x4l6"))))) + (base32 "0syf3kbhvsbn5xka5knpclxby2kp92my1w7ixvf5fs9n08ylcip1"))))) (define ublock-origin (package (name "ublock-origin") - (version "1.53.2") + (version "1.54.0") (home-page "https://github.com/gorhill/uBlock") (source (origin (method git-fetch) @@ -98,7 +98,7 @@ supported content to the Kodi media center.") (file-name (git-file-name name version)) (sha256 (base32 - "0mz1k5ghyc25v51md02qx7chrbg4cxagvqi18bcbs4agq8ix6sp7")))) + "1yacqpf9z8lprwsj194bhlp2ba9ywzbagd6lwxj3h6g405s7zp2k")))) (build-system gnu-build-system) (outputs '("xpi" "firefox" "chromium")) (properties '((addon-id . "uBlock0@raymondhill.net"))) -- cgit 1.4.1 From 0a99d3a79d9e34d747c2acb29c5f6345368e667f Mon Sep 17 00:00:00 2001 From: antlers Date: Tue, 5 Dec 2023 20:02:54 +0000 Subject: gnu: zfs: Update to 2.1.14. * gnu/packages/file-systems.scm (zfs): Update to 2.1.14. Change-Id: I696467868924f1135ba678e8e743955d3767618f Signed-off-by: Efraim Flashner --- gnu/packages/file-systems.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index bc061a5958..05074b2eb4 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -1365,7 +1365,7 @@ with the included @command{xfstests-check} helper.") (define-public zfs (package (name "zfs") - (version "2.1.12") + (version "2.1.14") (outputs '("out" "module" "src")) (source (origin @@ -1374,7 +1374,7 @@ with the included @command{xfstests-check} helper.") "/download/zfs-" version "/zfs-" version ".tar.gz")) (sha256 - (base32 "0vbf9kfryprb2mbb65jllf6xpsy44xskshglyqqwj4iyxmma5nk4")))) + (base32 "0gzansmin40llxxh2zkgpdyp41ikd8s5hv5mpwhpcivk1q8fv7sh")))) (build-system linux-module-build-system) (arguments (list -- cgit 1.4.1 From d1eac4f3b744737d5274efca40c0437e6246c9db Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 18 Dec 2023 13:45:59 -0500 Subject: Update cookbook Texinfo menus. Automated via C-c C-u C-a with Emacs. Change-Id: I9e595430529f8f994988c1ac3c919bdaef930dc1 --- doc/guix-cookbook.texi | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi index 3d86fca396..cdca411706 100644 --- a/doc/guix-cookbook.texi +++ b/doc/guix-cookbook.texi @@ -78,7 +78,7 @@ manual}). * System Configuration:: Customizing the GNU System * Containers:: Isolated environments and nested systems * Advanced package management:: Power to the users! -* Software Development:: Environments, continuous integration, etc. +* Software Development:: Environments, continuous integration, etc. * Environment management:: Control environment * Installing Guix on a Cluster:: High-performance computing. @@ -167,6 +167,16 @@ Guix Profiles in Practice * The benefits of manifests:: * Reproducible profiles:: +Software Development + +* Getting Started:: Step 0: using `guix shell'. +* Building with Guix:: Step 1: building your code. +* The Repository as a Channel:: Step 2: turning the repo in a channel. +* Package Variants:: Bonus: Defining variants. +* Setting Up Continuous Integration:: Step 3: continuous integration. +* Build Manifest:: Bonus: Manifest. +* Wrapping Up:: Recap. + Environment management * Guix environment via direnv:: Setup Guix environment with direnv -- cgit 1.4.1 From 32d4f40589e32cbac6549c50962011084f13d9fc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 Dec 2023 22:32:11 +0100 Subject: maint: Build more development packages for GNU/Hurd. * etc/hurd-manifest.scm: Add Autotools and Guile-related packages. Change-Id: I6ded9623543a8f5444e9d6bb04284e9ca2aa2dcd --- etc/hurd-manifest.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/etc/hurd-manifest.scm b/etc/hurd-manifest.scm index 8132da7d08..cb6b82d5f8 100644 --- a/etc/hurd-manifest.scm +++ b/etc/hurd-manifest.scm @@ -31,8 +31,9 @@ (srfi srfi-1)) (use-package-modules - base bootloaders commencement compression file gawk gdb gettext gtk guile - hurd less m4 package-management python ssh version-control) + autotools base bootloaders commencement compression file gawk gdb gettext gtk + guile guile-xyz hurd less m4 package-management python ssh + texinfo tls version-control) (define (input->package input) "Return the INPUT as package, or #f." @@ -63,8 +64,12 @@ diffutils file findutils gawk grep gzip less m4 openssh-sans-x tar xz ;; development packages + autoconf automake libtool texinfo gcc-toolchain gdb-minimal git-minimal gnu-make gettext-minimal python-minimal + guile-3.0 guile-2.2 guile-2.0 + guile-readline guile-colorized + guile-gnutls guile-fibers guile-json-4 ;; ourselves! (package-without-tests guix) -- cgit 1.4.1 From b7e3945283daec8d6bc676b659d00ed73b8e82b7 Mon Sep 17 00:00:00 2001 From: Nicolas Graves Date: Thu, 2 Nov 2023 16:16:48 +0100 Subject: guix: import: Add composer importer. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/import/composer.scm: New file. * guix/scripts/import/composer.scm: New file. * guix/tests/composer.scm: New file. * Makefile.am: Add them. * guix/scripts/import.scm: Add composer importer. * doc/guix.texi (Invoking guix import): Mention it. Change-Id: I44a89b8cc80ef5b4a3cd15e8fbba4a18c1cea0b1 Co-authored-by: Julien Lepiller Co-authored-by: Ludovic Courtès --- Makefile.am | 3 + doc/guix.texi | 20 +++ guix/import/composer.scm | 268 +++++++++++++++++++++++++++++++++++++++ guix/scripts/import.scm | 2 +- guix/scripts/import/composer.scm | 107 ++++++++++++++++ tests/composer.scm | 88 +++++++++++++ 6 files changed, 487 insertions(+), 1 deletion(-) create mode 100644 guix/import/composer.scm create mode 100644 guix/scripts/import/composer.scm create mode 100644 tests/composer.scm diff --git a/Makefile.am b/Makefile.am index 0b733108d4..ee0f5ba4fc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -283,6 +283,7 @@ MODULES = \ guix/search-paths.scm \ guix/packages.scm \ guix/import/cabal.scm \ + guix/import/composer.scm \ guix/import/cpan.scm \ guix/import/cran.scm \ guix/import/crate.scm \ @@ -341,6 +342,7 @@ MODULES = \ guix/scripts/home/import.scm \ guix/scripts/lint.scm \ guix/scripts/challenge.scm \ + guix/scripts/import/composer.scm \ guix/scripts/import/crate.scm \ guix/scripts/import/cpan.scm \ guix/scripts/import/cran.scm \ @@ -509,6 +511,7 @@ SCM_TESTS = \ tests/challenge.scm \ tests/channels.scm \ tests/combinators.scm \ + tests/composer.scm \ tests/containers.scm \ tests/cpan.scm \ tests/cpio.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 7d7697d318..ffd8ae331d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -14533,6 +14533,26 @@ repository used by the OCaml community. Additional options include: +@table @code +@item --recursive +@itemx -r +Traverse the dependency graph of the given upstream package recursively +and generate package expressions for all those packages that are not yet +in Guix. +@end table + +@item composer +@cindex Composer +@cindex PHP +Import metadata from the @uref{https://getcomposer.org/, Composer} package +archive used by the PHP community, as in this example: + +@example +guix import composer phpunit/phpunit +@end example + +Additional options include: + @table @code @item --recursive @itemx -r diff --git a/guix/import/composer.scm b/guix/import/composer.scm new file mode 100644 index 0000000000..1ad608964b --- /dev/null +++ b/guix/import/composer.scm @@ -0,0 +1,268 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Julien Lepiller +;;; +;;; 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 . + +(define-module (guix import composer) + #:use-module (ice-9 match) + #:use-module (json) + #:use-module (guix hash) + #:use-module (guix base32) + #:use-module (guix build git) + #:use-module (guix build utils) + #:use-module (guix build-system) + #:use-module (guix build-system composer) + #:use-module (guix import json) + #:use-module (guix import utils) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix memoization) + #:use-module (guix packages) + #:use-module (guix serialization) + #:use-module (guix upstream) + #:use-module (guix utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-26) + #:export (composer->guix-package + %composer-updater + composer-recursive-import + + %composer-base-url)) + +(define %composer-base-url + (make-parameter "https://repo.packagist.org")) + +(define (fix-version version) + "Return a fixed version from a version string. For instance, v10.1 -> 10.1" + (cond + ((string-prefix? "version" version) + (if (char-set-contains? char-set:digit (string-ref version 7)) + (substring version 7) + (substring version 8))) + ((string-prefix? "v" version) + (substring version 1)) + (else version))) + +(define (latest-version versions) + (fold (lambda (a b) (if (version>? (fix-version a) (fix-version b)) a b)) + (car versions) versions)) + +(define (json->require dict) + (if dict + (let loop ((result '()) (require dict)) + (match require + (() result) + ((((? (cut string-contains <> "/") name) . _) + require ...) + (loop (cons name result) require)) + ((_ require ...) (loop result require)) + (_ result))) + '())) + +(define-json-mapping make-composer-source composer-source? + json->composer-source + (type composer-source-type) + (url composer-source-url) + (reference composer-source-reference)) + +(define-json-mapping make-composer-package composer-package? + json->composer-package + (description composer-package-description) + (homepage composer-package-homepage) + (source composer-package-source "source" json->composer-source) + (name composer-package-name "name" php-package-name) + (version composer-package-version "version" fix-version) + (require composer-package-require "require" json->require) + (dev-require composer-package-dev-require "require-dev" json->require) + (license composer-package-license "license" + (lambda (vector) + (let ((l (map string->license (vector->list vector)))) + (if (eq? (length l) 1) + (car l) + `(list ,@l)))))) + +(define (valid-version? v) + (let ((d (string-downcase v))) + (and (not (string-contains d "dev")) + (not (string-contains d "beta")) + (not (string-contains d "rc"))))) + +(define* (composer-fetch name #:key (version #f)) + "Return a composer-package representation of the Composer metadata for the +package NAME with optional VERSION, or #f on failure." + (let* ((url (string-append (%composer-base-url) "/p/" name ".json")) + (packages (and=> (json-fetch url) + (lambda (pkg) + (let ((pkgs (assoc-ref pkg "packages"))) + (or (assoc-ref pkgs name) pkg)))))) + (if packages + (json->composer-package + (if version + (assoc-ref packages version) + (cdr + (reduce + (lambda (new cur-max) + (match new + (((? valid-version? version) . tail) + (if (version>? (fix-version version) + (fix-version (car cur-max))) + (cons* version tail) + cur-max)) + (_ cur-max))) + (cons* "0.0.0" #f) + packages)))) + #f))) + +(define (php-package-name name) + "Given the NAME of a package on Packagist, return a Guix-compliant name for +the package." + (let ((name (string-join (string-split name #\/) "-"))) + (if (string-prefix? "php-" name) + (snake-case name) + (string-append "php-" (snake-case name))))) + +(define (make-php-sexp composer-package) + "Return the `package' s-expression for a PHP package for the given +COMPOSER-PACKAGE." + (let* ((source (composer-package-source composer-package)) + (dependencies (map php-package-name + (composer-package-require composer-package))) + (dev-dependencies (map php-package-name + (composer-package-dev-require composer-package))) + (git? (equal? (composer-source-type source) "git"))) + ((if git? call-with-temporary-directory call-with-temporary-output-file) + (lambda* (temp #:optional port) + (and (if git? + (begin + (mkdir-p temp) + (git-fetch (composer-source-url source) + (composer-source-reference source) + temp)) + (url-fetch (composer-source-url source) temp)) + `(package + (name ,(composer-package-name composer-package)) + (version ,(composer-package-version composer-package)) + (source + (origin + ,@(if git? + `((method git-fetch) + (uri (git-reference + (url ,(if (string-suffix? + ".git" + (composer-source-url source)) + (string-drop-right + (composer-source-url source) + (string-length ".git")) + (composer-source-url source))) + (commit ,(composer-source-reference source)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + ,(bytevector->nix-base32-string + (file-hash* temp))))) + `((method url-fetch) + (uri ,(composer-source-url source)) + (sha256 (base32 ,(guix-hash-url temp))))))) + (build-system composer-build-system) + ,@(if (null? dependencies) + '() + `((inputs + (list ,@(map string->symbol dependencies))))) + ,@(if (null? dev-dependencies) + '() + `((native-inputs + (list ,@(map string->symbol dev-dependencies))))) + (synopsis "") + (description ,(composer-package-description composer-package)) + (home-page ,(composer-package-homepage composer-package)) + (license ,(or (composer-package-license composer-package) + 'unknown-license!)))))))) + +(define composer->guix-package + (memoize + (lambda* (package-name #:key (version #f) #:allow-other-keys) + "Fetch the metadata for PACKAGE-NAME from packagist.org, and return the +`package' s-expression corresponding to that package and its list of +dependencies, or #f and the empty list on failure." + (let ((package (composer-fetch package-name #:version version))) + (if package + (let* ((dependencies-names (composer-package-require package)) + (dev-dependencies-names (composer-package-dev-require package))) + (values (make-php-sexp package) + (append dependencies-names dev-dependencies-names))) + (values #f '())))))) + +(define (guix-name->composer-name name) + "Given a guix package name, return the name of the package in Packagist." + (if (string-prefix? "php-" name) + (let ((components (string-split (substring name 4) #\-))) + (match components + ((namespace name ...) + (string-append namespace "/" (string-join name "-"))))) + name)) + +(define (guix-package->composer-name package) + "Given a Composer PACKAGE built from Packagist, return the name of the +package in Packagist." + (let ((upstream-name (assoc-ref + (package-properties package) + 'upstream-name)) + (name (package-name package))) + (if upstream-name + upstream-name + (guix-name->composer-name name)))) + +(define (string->license str) + "Convert the string STR into a license object." + (or (spdx-string->license str) + (match str + ("GNU LGPL" 'license:lgpl2.0) + ("GPL" 'license:gpl3) + ((or "BSD" "BSD License") 'license:bsd-3) + ((or "MIT" "MIT license" "Expat license") 'license:expat) + ("Public domain" 'license:public-domain) + ((or "Apache License, Version 2.0" "Apache 2.0") 'license:asl2.0) + (_ 'unknown-license!)))) + +(define (php-package? package) + "Return true if PACKAGE is a PHP package from Packagist." + (and + (eq? (package-build-system package) composer-build-system) + (string-prefix? "php-" (package-name package)))) + +(define (latest-release package) + "Return an for the latest release of PACKAGE." + (let* ((php-name (guix-package->composer-name package)) + (package (composer-fetch php-name)) + (version (composer-package-version package)) + (url (composer-source-url (composer-package-source package)))) + (upstream-source + (package (package-name package)) + (version version) + (urls (list url))))) + +(define %composer-updater + (upstream-updater + (name 'composer) + (description "Updater for Composer packages") + (pred php-package?) + (import latest-release))) + +(define* (composer-recursive-import package-name #:optional version) + (recursive-import package-name + #:version version + #:repo->guix-package composer->guix-package + #:guix-name php-package-name)) diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 1e8ffd25ec..d2a1cee56e 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -47,7 +47,7 @@ (define importers '("gnu" "pypi" "cpan" "hackage" "stackage" "egg" "elpa" "gem" "go" "cran" "crate" "texlive" "json" "opam" - "minetest" "elm" "hexpm")) + "minetest" "elm" "hexpm" "composer")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/composer.scm b/guix/scripts/import/composer.scm new file mode 100644 index 0000000000..412bae6318 --- /dev/null +++ b/guix/scripts/import/composer.scm @@ -0,0 +1,107 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; Copyright © 2018 Oleg Pykhalov +;;; +;;; 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 . + +(define-module (guix scripts import composer) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (guix scripts) + #:use-module (guix import composer) + #:use-module (guix scripts import) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-37) + #:use-module (srfi srfi-41) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:export (guix-import-composer)) + + +;;; +;;; Command-line options. +;;; + +(define %default-options + '()) + +(define (show-help) + (display (G_ "Usage: guix import composer PACKAGE-NAME +Import and convert the Composer package for PACKAGE-NAME.\n")) + (display (G_ " + -h, --help display this help and exit")) + (display (G_ " + -V, --version display version information and exit")) + (display (G_ " + -r, --recursive generate package expressions for all Composer packages\ + that are not yet in Guix")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (cons* (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix import composer"))) + (option '(#\r "recursive") #f #f + (lambda (opt name arg result) + (alist-cons 'recursive #t result))) + %standard-import-options)) + + +;;; +;;; Entry point. +;;; + +(define (guix-import-composer . args) + (define (parse-options) + ;; Return the alist of option values. + (args-fold* args %options + (lambda (opt name arg result) + (leave (G_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (alist-cons 'argument arg result)) + %default-options)) + + (let* ((opts (parse-options)) + (args (filter-map (match-lambda + (('argument . value) + value) + (_ #f)) + (reverse opts)))) + (match args + ((package-name) + (if (assoc-ref opts 'recursive) + (map (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + (composer-recursive-import package-name)) + (let ((sexp (composer->guix-package package-name))) + (unless sexp + (leave (G_ "failed to download meta-data for package '~a'~%") + package-name)) + sexp))) + (() + (leave (G_ "too few arguments~%"))) + ((many ...) + (leave (G_ "too many arguments~%")))))) diff --git a/tests/composer.scm b/tests/composer.scm new file mode 100644 index 0000000000..9114fef19e --- /dev/null +++ b/tests/composer.scm @@ -0,0 +1,88 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Julien Lepiller +;;; Copyright © 2023 Nicolas Graves +;;; +;;; 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 . + +(define-module (test-composer) + #:use-module (guix import composer) + #:use-module (guix base32) + #:use-module (gcrypt hash) + #:use-module (guix tests http) + #:use-module (guix grafts) + #:use-module (srfi srfi-64) + #:use-module (web client) + #:use-module (ice-9 match)) + +;; Globally disable grafts because they can trigger early builds. +(%graft? #f) + +(define test-json + "{ + \"packages\": { + \"foo/bar\": { + \"0.1\": { + \"name\": \"foo/bar\", + \"description\": \"description\", + \"keywords\": [\"testing\"], + \"homepage\": \"http://example.com\", + \"version\": \"0.1\", + \"license\": [\"BSD-3-Clause\"], + \"source\": { + \"type\": \"url\", + \"url\": \"http://example.com/Bar-0.1.tar.gz\" + }, + \"require\": {}, + \"require-dev\": {\"phpunit/phpunit\": \"1.0.0\"} + } + } + } +}") + +(define test-source + "foobar") + +(test-begin "composer") + +(test-assert "composer->guix-package" + ;; Replace network resources with sample data. + (with-http-server `((200 ,test-json) + (200 ,test-source)) + (parameterize ((%composer-base-url (%local-url)) + (current-http-proxy (%local-url))) + (match (composer->guix-package "foo/bar") + (`(package + (name "php-foo-bar") + (version "0.1") + (source (origin + (method url-fetch) + (uri "http://example.com/Bar-0.1.tar.gz") + (sha256 + (base32 + ,(? string? hash))))) + (build-system composer-build-system) + (native-inputs (list php-phpunit-phpunit)) + (synopsis "") + (description "description") + (home-page "http://example.com") + (license license:bsd-3)) + (string=? (bytevector->nix-base32-string + (call-with-input-string test-source port-sha256)) + hash)) + (x + (pk 'fail x #f)))))) + +(test-end "composer") -- cgit 1.4.1 From e8fd78d54e058008028420d87aa434983032fa9c Mon Sep 17 00:00:00 2001 From: Nicolas Graves Date: Thu, 2 Nov 2023 16:16:49 +0100 Subject: gnu: Add composer-classloader. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/php-xyz.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Signed-off-by: Ludovic Courtès --- gnu/local.mk | 1 + gnu/packages/php-xyz.scm | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 gnu/packages/php-xyz.scm diff --git a/gnu/local.mk b/gnu/local.mk index 0a5ecd97dc..caf2bb16fa 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -508,6 +508,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/photo.scm \ %D%/packages/phabricator.scm \ %D%/packages/php.scm \ + %D%/packages/php-xyz.scm \ %D%/packages/piet.scm \ %D%/packages/pikchr.scm \ %D%/packages/pkg-config.scm \ diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm new file mode 100644 index 0000000000..ac90ee3c25 --- /dev/null +++ b/gnu/packages/php-xyz.scm @@ -0,0 +1,60 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Julien Lepiller +;;; +;;; 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 . + +(define-module (gnu packages php-xyz) + #:use-module (gnu packages) + #:use-module (gnu packages php) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system composer) + #:use-module (guix build-system gnu) + #:use-module (guix utils) + #:use-module ((guix licenses) #:prefix license:)) + +(define-public composer-classloader + (package + (name "composer-classloader") + (version "1.9.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/composer/composer") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0127zmmg3yx84ljngfs86q7kjhyypybkf4d1ihfrfnzgynzxfxdf")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (delete 'check) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (install-file "src/Composer/Autoload/ClassLoader.php" + (string-append out "/share/web/composer/")))))))) + (home-page "https://getcomposer.org") + (synopsis "PHP class loader extracted from the composer package") + (description "This package contains the class loader class used by Composer to +build its autoloading feature. This package is used by the composer-build-system +to build its own store-aware autoloading feature.") + (license license:expat))) -- cgit 1.4.1 From 9dab75879140d0f6ca0a25e1f2e3c5b912090d7c Mon Sep 17 00:00:00 2001 From: Nicolas Graves Date: Thu, 2 Nov 2023 16:16:50 +0100 Subject: build-system: Add ‘composer-build-system’. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/build-system/composer.scm: New file. * guix/build/composer-build-system.scm: New file. * gnu/packages/aux-files/findclass.php: New file. * Makefile.am: Add them. * doc/guix.texi (Build Systems): Document it. Co-authored-by: Julien Lepiller Signed-off-by: Ludovic Courtès Change-Id: Ie6a05b42ff04d3ad774a0a20278a77e4820bb8f6 --- Makefile.am | 3 + doc/guix.texi | 14 ++ gnu/packages/aux-files/findclass.php | 125 +++++++++++++++ guix/build-system/composer.scm | 165 +++++++++++++++++++ guix/build/composer-build-system.scm | 301 +++++++++++++++++++++++++++++++++++ 5 files changed, 608 insertions(+) create mode 100644 gnu/packages/aux-files/findclass.php create mode 100644 guix/build-system/composer.scm create mode 100644 guix/build/composer-build-system.scm diff --git a/Makefile.am b/Makefile.am index ee0f5ba4fc..b64dcaa77c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -154,6 +154,7 @@ MODULES = \ guix/build-system/clojure.scm \ guix/build-system/cmake.scm \ guix/build-system/copy.scm \ + guix/build-system/composer.scm \ guix/build-system/dub.scm \ guix/build-system/dune.scm \ guix/build-system/elm.scm \ @@ -212,6 +213,7 @@ MODULES = \ guix/build/cargo-utils.scm \ guix/build/chicken-build-system.scm \ guix/build/cmake-build-system.scm \ + guix/build/composer-build-system.scm \ guix/build/dub-build-system.scm \ guix/build/dune-build-system.scm \ guix/build/elm-build-system.scm \ @@ -420,6 +422,7 @@ dist_noinst_DATA = \ AUX_FILES = \ gnu/packages/aux-files/chromium/master-preferences.json \ gnu/packages/aux-files/emacs/guix-emacs.el \ + gnu/packages/aux-files/findclass.php \ gnu/packages/aux-files/guix.vim \ gnu/packages/aux-files/linux-libre/6.6-arm.conf \ gnu/packages/aux-files/linux-libre/6.6-arm64.conf \ diff --git a/doc/guix.texi b/doc/guix.texi index ffd8ae331d..b742a3d5b2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -9598,6 +9598,20 @@ debugging information''), which roughly means that code is compiled with @code{-O2 -g}, as is the case for Autoconf-based packages by default. @end defvar +@defvar composer-build-system +This variable is exported by @code{(guix build-system composer)}. It +implements the build procedure for packages using +@url{https://getcomposer.org/, Composer}, the PHP package manager. + +It automatically adds the @code{php} package to the set of inputs. Which +package is used can be specified with the @code{#:php} parameter. + +The @code{#:test-target} parameter is used to control which script is run +for the tests. By default, the @code{test} script is run if it exists. If +the script does not exist, the build system will run @code{phpunit} from the +source directory, assuming there is a @file{phpunit.xml} file. +@end defvar + @defvar dune-build-system This variable is exported by @code{(guix build-system dune)}. It supports builds of packages using @uref{https://dune.build/, Dune}, a build diff --git a/gnu/packages/aux-files/findclass.php b/gnu/packages/aux-files/findclass.php new file mode 100644 index 0000000000..d0b250c8e1 --- /dev/null +++ b/gnu/packages/aux-files/findclass.php @@ -0,0 +1,125 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * This file is copied from the Symfony package. + * + * (c) Fabien Potencier + * + * To the extent to wich it makes sense, as the author of the extract: + * Copyright © 2020 Julien Lepiller + */ + +/** + * Extract the classes in the given file + * + * @param string $path The file to check + * @throws \RuntimeException + * @return array The found classes + */ +function findClasses($path) +{ + $extraTypes = PHP_VERSION_ID < 50400 ? '' : '|trait'; + if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) { + $extraTypes .= '|enum'; + } + // Use @ here instead of Silencer to actively suppress 'unhelpful' output + // @link https://github.com/composer/composer/pull/4886 + $contents = @php_strip_whitespace($path); + if (!$contents) { + if (!file_exists($path)) { + $message = 'File at "%s" does not exist, check your classmap definitions'; + } elseif (!is_readable($path)) { + $message = 'File at "%s" is not readable, check its permissions'; + } elseif ('' === trim(file_get_contents($path))) { + // The input file was really empty and thus contains no classes + return array(); + } else { + $message = 'File at "%s" could not be parsed as PHP, it may be binary or corrupted'; + } + $error = error_get_last(); + if (isset($error['message'])) { + $message .= PHP_EOL . 'The following message may be helpful:' . PHP_EOL . $error['message']; + } + throw new \RuntimeException(sprintf($message, $path)); + } + // return early if there is no chance of matching anything in this file + if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents)) { + return array(); + } + // strip heredocs/nowdocs + $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=\s+|[;,.)])}s', 'null', $contents); + // strip strings + $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents); + // strip leading non-php code if needed + if (substr($contents, 0, 2) !== '(?:[^<]++|<(?!\?))*+<\?}s', '?>'); + if (false !== $pos && false === strpos(substr($contents, $pos), '])(?Pclass|interface'.$extraTypes.') \s++ (?P[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+) + | \b(?])(?Pnamespace) (?P\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] + ) + }ix', $contents, $matches); + $classes = array(); + $namespace = ''; + for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { + if (!empty($matches['ns'][$i])) { + $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\'; + } else { + $name = $matches['name'][$i]; + // skip anon classes extending/implementing + if ($name === 'extends' || $name === 'implements') { + continue; + } + if ($name[0] === ':') { + // This is an XHP class, https://github.com/facebook/xhp + $name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); + } elseif ($matches['type'][$i] === 'enum') { + // In Hack, something like: + // enum Foo: int { HERP = '123'; } + // The regex above captures the colon, which isn't part of + // the class name. + $name = rtrim($name, ':'); + } + $classes[] = ltrim($namespace . $name, '\\'); + } + } + return $classes; +} + +$options = getopt('i:f:', []); +$file = $options["f"]; +$input = $options["i"]; + +$classes = findClasses($file); +foreach($classes as $class) { + echo '$classmap[\''.$class.'\'] = \''.$input.'/'.$file.'\';'; + echo "\n"; +} diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm new file mode 100644 index 0000000000..2bb807e614 --- /dev/null +++ b/guix/build-system/composer.scm @@ -0,0 +1,165 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Julien Lepiller +;;; +;;; 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 . + +(define-module (guix build-system composer) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix derivations) + #:use-module (guix search-paths) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:export (%composer-build-system-modules + lower + composer-build + composer-build-system)) + +;; Commentary: +;; +;; Standard build procedure for PHP packages using Composer. This is implemented +;; as an extension of `gnu-build-system'. +;; +;; Code: + +(define (default-php) + "Return the default PHP package." + + ;; Do not use `@' to avoid introducing circular dependencies. + (let ((module (resolve-interface '(gnu packages php)))) + (module-ref module 'php))) + +(define (default-findclass) + "Return the default findclass script." + (search-auxiliary-file "findclass.php")) + +(define (default-composer-classloader) + "Return the default composer-classloader package." + + ;; Do not use `@' to avoid introducing circular dependencies. + (let ((module (resolve-interface '(gnu packages php-xyz)))) + (module-ref module 'composer-classloader))) + +(define %composer-build-system-modules + ;; Build-side modules imported by default. + `((guix build composer-build-system) + (guix build union) + (json) + (json builder) + (json parser) + (json record) + ,@%gnu-build-system-modules)) + +(define* (lower name + #:key source inputs native-inputs outputs system target + (php (default-php)) + (composer-classloader (default-composer-classloader)) + (findclass (default-findclass)) + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME." + (define private-keywords + '(#:target #:php #:composer-classloader #:findclass #:inputs #:native-inputs)) + + (and (not target) ;XXX: no cross-compilation + (bag + (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs + + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (build-inputs `(("php" ,php) + ("findclass.php" ,findclass) + ("composer-classloader" ,composer-classloader) + ,@native-inputs)) + (outputs outputs) + (build composer-build) + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define* (composer-build name inputs + #:key + guile source + (outputs '("out")) + (configure-flags ''()) + (search-paths '()) + (out-of-source? #t) + (composer-file "composer.json") + (tests? #t) + (test-target "test") + (test-flags ''()) + (install-target "install") + (validate-runpath? #t) + (patch-shebangs? #t) + (strip-binaries? #t) + (strip-flags #~'("--strip-debug")) + (strip-directories #~'("lib" "lib64" "libexec" + "bin" "sbin")) + (phases '(@ (guix build composer-build-system) + %standard-phases)) + (system (%current-system)) + (imported-modules %composer-build-system-modules) + (modules '((guix build composer-build-system) + (guix build utils)))) + "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provides +a 'composer.json' file as its build system." + (define builder + (with-imported-modules imported-modules + #~(begin + (use-modules #$@(sexp->gexp modules)) + + #$(with-build-variables inputs outputs + #~(composer-build + #:source #$source + #:system #$system + #:outputs %outputs + #:inputs %build-inputs + #:search-paths '#$(map search-path-specification->sexp + search-paths) + #:phases #$phases + #:out-of-source? #$out-of-source? + #:composer-file #$composer-file + #:tests? #$tests? + #:test-target #$test-target + #:test-flags #$test-flags + #:install-target #$install-target + #:validate-runpath? #$validate-runpath? + #:patch-shebangs? #$patch-shebangs? + #:strip-binaries? #$strip-binaries? + #:strip-flags #$strip-flags + #:strip-directories #$strip-directories))))) + + (gexp->derivation name builder + #:system system + #:target #f + #:graft? #f + #:guile-for-build guile)) + +(define composer-build-system + (build-system + (name 'composer) + (description "The standard Composer build system") + (lower lower))) + +;;; composer.scm ends here diff --git a/guix/build/composer-build-system.scm b/guix/build/composer-build-system.scm new file mode 100644 index 0000000000..8896384e0a --- /dev/null +++ b/guix/build/composer-build-system.scm @@ -0,0 +1,301 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Julien Lepiller +;;; Copyright © 2023 Nicolas Graves +;;; +;;; 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 . + +(define-module (guix build composer-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (ice-9 match) + #:use-module (json) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (%standard-phases + composer-build)) + +;; Commentary: +;; +;; Builder-side code of the standard composer build procedure. +;; +;; Code: + +(define (json->require dict) + (if dict + (let loop ((result '()) (require dict)) + (match require + (() result) + ((((? (cut string-contains <> "/") name) . _) + require ...) + (loop (cons name result) require)) + ((_ require ...) (loop result require)) + (_ result))) + '())) + +(define (if-specified-to-list fn) + (match-lambda + ((? unspecified?) '()) + (arg (fn arg)) + (_ '()))) + +(define-json-mapping make-composer-autoload + composer-autoload? + json->composer-autoload + (psr-4 composer-autoload-psr-4 "psr-4" + (match-lambda + ((? unspecified?) '()) + ((? (lambda (al) + (and (list? al) (pair? (car al)) (vector? (cdar al)))) al) + (append-map + (lambda (vect-el) + (list (cons (caar al) vect-el))) + (vector->list (cdar al)))) + ((? list? l) l) + (_ '()))) + (psr-0 composer-autoload-psr-0 "psr-0" (if-specified-to-list identity)) + (classmap composer-autoload-classmap "classmap" + (if-specified-to-list vector->list)) + (files composer-autoload-files "files" + (if-specified-to-list vector->list))) + +(define-json-mapping make-composer-package composer-package? + json->composer-package + (name composer-package-name) + (autoload composer-package-autoload "autoload" + (if-specified-to-list json->composer-autoload)) + (autoload-dev composer-package-autoload-dev "autoload-dev" + (if-specified-to-list json->composer-autoload)) + (require composer-package-require "require" json->require) + (dev-require composer-package-dev-require "require-dev" json->require) + (scripts composer-package-scripts "scripts" + (if-specified-to-list identity)) + (binaries composer-package-binaries "bin" + (if-specified-to-list vector->list))) + +(define* (read-package-data #:key (filename "composer.json")) + (call-with-input-file filename + (lambda (port) + (json->composer-package (json->scm port))))) + +(define* (create-test-autoload #:key composer-file inputs outputs tests? + #:allow-other-keys) + "Create the autoload.php file for tests. This is a standalone phase so that +the autoload.php file can be edited before the check phase." + (when tests? + (mkdir-p "vendor") + (create-autoload (string-append (getcwd) "/vendor") composer-file + inputs #:dev-dependencies? #t))) + +(define (find-bin script inputs) + (search-input-file inputs + (string-append + "bin/" + (string-drop script (string-length "vendor/bin/"))))) + +(define* (check #:key composer-file inputs + tests? test-target test-flags #:allow-other-keys) + "Test the given package. +Please note that none of the PHP packages at the time of the rewrite of the +build-system did use the test-script field. This means that the @code{match +test-script} part is not tested on a real example and relies on the original +implementation." + (if tests? + (let* ((package-data (read-package-data #:filename composer-file)) + (scripts (composer-package-scripts package-data)) + (test-script (assoc-ref scripts test-target))) + (match test-script + ((? string? bin) + (let ((command (find-bin bin inputs))) + (unless (zero? (apply system command test-flags)) + (throw 'failed-command command)))) + (('@ (? string? bins) ...) + (for-each + (lambda (c) + (let ((command (find-bin c inputs))) + (unless (zero? (apply system command test-flags)) + (throw 'failed-command command)))) + bins)) + (_ (if (file-exists? "phpunit.xml.dist") + (apply invoke + (with-exception-handler + (lambda (exn) + (if (search-error? exn) + (error "\ +Missing php-phpunit-phpunit native input.~%") + (raise exn))) + (lambda () + (search-input-file (or inputs '()) "bin/phpunit"))) + test-flags)) + (format #t "No test suite found.~%")))) + (format #t "Test suite not run.~%"))) + +(define* (create-autoload vendor composer-file inputs #:key dev-dependencies?) + "creates an autoload.php file that sets up the class locations for this package, +so it can be autoloaded by PHP when the package classes are required." + (with-output-to-file (string-append vendor "/autoload.php") + (lambda _ + (display (string-append + " $paths) { + foreach ($paths as $path) { + $loader->addPsr4($namespace, $path); + } +} +$loader->addClassMap($classmap); +$loader->register(); +")))) + ;; Now, create autoload_conf.php that contains the actual data, as a set + ;; of arrays + (let* ((package-data (read-package-data #:filename composer-file)) + (autoload (composer-package-autoload package-data)) + (autoload-dev (composer-package-autoload-dev package-data)) + (dependencies (composer-package-require package-data)) + (dependencies-dev (composer-package-dev-require package-data))) + (with-output-to-file (string-append vendor "/autoload_conf.php") + (lambda _ + (format #t " Date: Mon, 18 Dec 2023 23:13:38 +0100 Subject: build-system/composer: Do not import host-side Guile-JSON modules. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Importing host-side (json …) modules would make builds dependent on the Guile-JSON version currently installed by the user. Use ‘with-extensions’ instead. * guix/build-system/composer.scm (%composer-build-system-modules): Remove (json …) modules. (composer-build)[guile-json]: New variable. [builder]: Wrap body in ‘with-extensions’. Change-Id: Ibe565572d60481b31292d73c6fa23d42aa3ceecb --- guix/build-system/composer.scm | 57 +++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm index 2bb807e614..2ad7bbb36a 100644 --- a/guix/build-system/composer.scm +++ b/guix/build-system/composer.scm @@ -62,10 +62,6 @@ ;; Build-side modules imported by default. `((guix build composer-build-system) (guix build union) - (json) - (json builder) - (json parser) - (json record) ,@%gnu-build-system-modules)) (define* (lower name @@ -124,31 +120,36 @@ (guix build utils)))) "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provides a 'composer.json' file as its build system." + (define guile-json + (module-ref (resolve-interface '(gnu packages guile)) + 'guile-json-4)) + (define builder - (with-imported-modules imported-modules - #~(begin - (use-modules #$@(sexp->gexp modules)) - - #$(with-build-variables inputs outputs - #~(composer-build - #:source #$source - #:system #$system - #:outputs %outputs - #:inputs %build-inputs - #:search-paths '#$(map search-path-specification->sexp - search-paths) - #:phases #$phases - #:out-of-source? #$out-of-source? - #:composer-file #$composer-file - #:tests? #$tests? - #:test-target #$test-target - #:test-flags #$test-flags - #:install-target #$install-target - #:validate-runpath? #$validate-runpath? - #:patch-shebangs? #$patch-shebangs? - #:strip-binaries? #$strip-binaries? - #:strip-flags #$strip-flags - #:strip-directories #$strip-directories))))) + (with-extensions (list guile-json) + (with-imported-modules imported-modules + #~(begin + (use-modules #$@(sexp->gexp modules)) + + #$(with-build-variables inputs outputs + #~(composer-build + #:source #$source + #:system #$system + #:outputs %outputs + #:inputs %build-inputs + #:search-paths '#$(map search-path-specification->sexp + search-paths) + #:phases #$phases + #:out-of-source? #$out-of-source? + #:composer-file #$composer-file + #:tests? #$tests? + #:test-target #$test-target + #:test-flags #$test-flags + #:install-target #$install-target + #:validate-runpath? #$validate-runpath? + #:patch-shebangs? #$patch-shebangs? + #:strip-binaries? #$strip-binaries? + #:strip-flags #$strip-flags + #:strip-directories #$strip-directories)))))) (gexp->derivation name builder #:system system -- cgit 1.4.1 From bed9103579686b1cc991ee4f955c2bc5067299d0 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 18 Dec 2023 23:49:27 -0500 Subject: gnu: guile-udev: Fix dlopen error at run time. * gnu/packages/guile-xyz.scm (guile-udev) [arguments]: Add patch-extension-path phase. Change-Id: I4620c234e8ac45dcc1c2a3ab8871b8ab9d9c35c0 --- gnu/packages/guile-xyz.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 2a6bd8071d..7b44dc3167 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -16,7 +16,7 @@ ;;; Copyright © 2017 Theodoros Foradis ;;; Copyright © 2017 Nikita ;;; Copyright © 2017, 2018, 2021 Tobias Geerinckx-Rice -;;; Copyright © 2018, 2021, 2022 Maxim Cournoyer +;;; Copyright © 2018, 2021, 2022, 2023 Maxim Cournoyer ;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023 Arun Isaac ;;; Copyright © 2018 Pierre-Antoine Rouby ;;; Copyright © 2018 Eric Bavier @@ -2278,6 +2278,18 @@ users and in some situations.") (base32 "1q1snj8gz2bvqw2v2jvwlzn5xfh7f7wlp922isnzismrp4adc918")))) (build-system gnu-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-extension-path + (lambda _ + ;; Provide the absolute path of the guile-libudev extension to + ;; ensure the dlopen call always succeeds. + (substitute* (find-files "." "\\.scm") + (("load-extension \"libguile-udev\"") + (format #f "load-extension \"~a/lib/libguile-udev.so\"" + #$output)))))))) (native-inputs (list autoconf automake gettext-minimal -- cgit 1.4.1 From ee93015b54a2abfe59bc2270c09ea4f7624488e5 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 19 Dec 2023 12:46:43 +0100 Subject: import/cran: Export a few more variables and procedures. This allows users of this module to provide e.g. caching alternatives to the download and fetch procedures. * guix/import/cran.scm (%bioconductor-version, download, fetch-description): Make these variables public. Change-Id: I9ce14db9be9b8b3314b06fa9eb50a4e24c5dd718 --- guix/import/cran.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/guix/import/cran.scm b/guix/import/cran.scm index ca984cb49c..723a770e41 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -55,6 +55,10 @@ #:use-module (guix sets) #:export (%input-style + %bioconductor-version + download + fetch-description + cran->guix-package bioconductor->guix-package cran-recursive-import -- cgit 1.4.1 From 521247658fbfc39efc4e86212c1559acebae3395 Mon Sep 17 00:00:00 2001 From: nafkhamdc Date: Tue, 19 Dec 2023 12:15:33 +0000 Subject: gnu: r-sccustomize: Update to 2.0.1-1.3973745. * gnu/packages/bioinformatics.scm (r-sccustomize): Update to 2.0.1-1.3973745. Change-Id: I4e4b499a658eaed0396263d1d9fd277a541a13d9 Signed-off-by: Ricardo Wurmus --- gnu/packages/bioinformatics.scm | 87 ++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 2546454acd..3e7b99ee61 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -10245,55 +10245,54 @@ auROC analysis.") (license license:gpl3)))) (define-public r-sccustomize - (let ((commit "8414d1f5fb32277855b0619191a568932b7baeb0") + (let ((commit "397374590dae2ccc0c560897dcd1ce4382c18798") (revision "1")) (package (name "r-sccustomize") - (version (git-version "0.7.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/samuel-marsh/scCustomize") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wcgfq7lx83a2kf8pjbw524gdvxf351n08cwd5wzmmy57kf4knbj")))) + (version (git-version "2.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/samuel-marsh/scCustomize") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11bafm0mlck27fqd8brz80pxb8dc5q0aqbp8zv0s9sx97njp7wsl")))) (properties `((upstream-name . "scCustomize"))) (build-system r-build-system) - (propagated-inputs - (list r-circlize - r-colorway - r-cowplot - r-data-table - r-dittoseq - r-dplyr - r-forcats - r-ggbeeswarm - r-ggplot2 - r-ggprism - r-ggpubr - r-ggrastr - r-ggrepel - r-glue - r-janitor - r-magrittr - r-matrix - r-paletteer - r-patchwork - r-pbapply - r-purrr - r-remotes - r-scales - r-scattermore - r-seurat - r-seuratobject - r-stringi - r-stringr - r-tibble - r-tidyr - r-tidyselect - r-viridis)) + (propagated-inputs (list r-circlize + r-colorway + r-cowplot + r-data-table + r-dittoseq + r-dplyr + r-forcats + r-ggbeeswarm + r-ggplot2 + r-ggprism + r-ggpubr + r-ggrastr + r-ggrepel + r-glue + r-janitor + r-magrittr + r-matrix + r-paletteer + r-patchwork + r-pbapply + r-purrr + r-remotes + r-scales + r-scattermore + r-seurat + r-seuratobject + r-stringi + r-stringr + r-tibble + r-tidyr + r-tidyselect + r-viridis)) (native-inputs (list r-knitr)) (home-page "https://github.com/samuel-marsh/scCustomize") (synopsis "Custom visualization and analyses of single-cell sequencing") -- cgit 1.4.1 From 6884770464bd9ba95c1a5ccf10bf50d186a220d5 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Tue, 12 Sep 2023 13:47:02 +0800 Subject: gnu: Add iptables-nft. * gnu/packages/linux.scm (iptables-nft): New variable. Change-Id: I281514fcf05e70b4d62f374269c50c76bb676f78 --- gnu/packages/linux.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c4da631089..2df711aab2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -3101,6 +3101,40 @@ Both commands are targeted at system administrators.") '((release-monitoring-url . "https://www.netfilter.org/pub/iptables/"))) (license license:gpl2+))) +(define-public iptables-nft + (package + (inherit iptables) + (name "iptables-nft") + (source #f) + (build-system copy-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (delete 'unpack) + (replace 'install + (lambda* (#:key inputs #:allow-other-keys) + (for-each + (lambda (command-path) + (let ((link-path (string-append #$output command-path))) + (mkdir-p (dirname link-path)) + (symlink (search-input-file inputs "sbin/xtables-nft-multi") + link-path))) + (apply append + '("/bin/iptables-xml") + (map (lambda (xtables) + (list (string-append "/sbin/" xtables) + (string-append "/sbin/" xtables "-restore") + (string-append "/sbin/" xtables "-save"))) + '("arptables" + "ebtables" + "iptables" + "ip6tables"))))))))) + (inputs (list iptables)) + (native-inputs '()) + (synopsis + "Programs to configure Linux IP packet filtering rules (nftables API)"))) + (define-public bolt (package (name "bolt") -- cgit 1.4.1 From 491ca36e32293e2f3a9d1c1bc44ea46867f102fb Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Thu, 7 Dec 2023 22:06:51 +0800 Subject: gnu: emacs-mbsync: Update to 0.1.2-5.d3c81da. * gnu/packages/emacs-xyz.scm (emacs-mbsync): Update to 0.1.2-5.d3c81da. Change-Id: Idf9a1807a2bdfec8bb12f6eee90c6ee12ca29877 --- gnu/packages/emacs-xyz.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index f8bd9a111e..77d49627fc 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -24433,8 +24433,8 @@ key again.") (license license:gpl3+))) (define-public emacs-mbsync - (let ((commit "b62491c0e0d89eb9c66261a16d7ac81231c9c453") - (revision "4")) + (let ((commit "d3c81da81ce5b154c0d048047a47277338721a70") + (revision "5")) (package (name "emacs-mbsync") (version (git-version "0.1.2" revision commit)) @@ -24447,7 +24447,7 @@ key again.") (file-name (git-file-name name version)) (sha256 (base32 - "1zlih37mkqjn2czl12zn7lgxxljvrwhqqpbksj9c91zn0f0rm3mz")))) + "10xxgvzjb7bl3lzgjkdsnnkd9wphkc2pm621agyjlayzcjnldz5p")))) (build-system emacs-build-system) (home-page "https://github.com/dimitri/mbsync-el") (synopsis "Interface to mbsync for Emacs") -- cgit 1.4.1 From d9c8432cb1f0c9ae996667d8214e7ff34a2b8651 Mon Sep 17 00:00:00 2001 From: Jaeme Sifat Date: Mon, 11 Dec 2023 00:32:09 -0500 Subject: gnu: hyfetch: Update to 1.4.11. * gnu/packages/admin.scm (hyfetch): Update to 1.4.11. Change-Id: I244020ef556911107040e913ef76932ed97ae6e9 Signed-off-by: Hilton Chain --- gnu/packages/admin.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 03b3acba8b..377caf8793 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -61,6 +61,7 @@ ;;; Copyright © 2023 Alexey Abramov ;;; Copyright © 2023 Bruno Victal ;;; Copyright © 2023 Tobias Kortkamp +;;; Copyright © 2023 Jaeme Sifat ;;; ;;; This file is part of GNU Guix. ;;; @@ -4019,7 +4020,7 @@ you are running, what theme or icon set you are using, etc.") (define-public hyfetch (package (name "hyfetch") - (version "1.4.10") + (version "1.4.11") (source (origin (method git-fetch) @@ -4029,7 +4030,7 @@ you are running, what theme or icon set you are using, etc.") (file-name (git-file-name name version)) (sha256 (base32 - "1lf1vrasinda9j6yazznpx54gg5j24xvkjb68dxhby9dg8ql1h87")))) + "1ymj72virh8y8gwgg3j3skf6j0zn7p0plcza57lln1drnjspycy7")))) (build-system python-build-system) (arguments (list #:tests? #f)) ;no tests (inputs (list python-typing-extensions)) -- cgit 1.4.1 From dfc950689fe3805436281c0d2eb16f59bd908d62 Mon Sep 17 00:00:00 2001 From: Jaeme Sifat Date: Sun, 10 Dec 2023 23:58:16 -0500 Subject: gnu: wireplumber: Update to 0.4.17. * gnu/packages/linux.scm (wireplumber): Update to 0.4.17. Change-Id: I1cdc156fde4cbbe6201f967db0701bb5dfdf1d7e Signed-off-by: Hilton Chain --- gnu/packages/linux.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2df711aab2..3ca756dead 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -77,6 +77,7 @@ ;;; Copyright © 2023 dan ;;; Copyright © 2023 Foundation Devices, Inc. ;;; Copyright © 2023 Wilko Meyer +;;; Copyright © 2023 Jaeme Sifat ;;; ;;; This file is part of GNU Guix. ;;; @@ -9423,7 +9424,7 @@ of Linux application development.") (define-public wireplumber (package (name "wireplumber") - (version "0.4.14") + (version "0.4.17") (source (origin (method git-fetch) @@ -9433,7 +9434,7 @@ of Linux application development.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0jmnd6000j4wx68lxgz5b4g4hxkf243ivi9swaaf8rnx99cbx91w")))) + (base32 "00jzn0pxy2ws819yg4p8xxhngqai3labd1alaxb8zwzymr7m06my")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Dsystemd=disabled" -- cgit 1.4.1 From 04c9af0b001bd1d7ac4b4e97d0e3e06c19e6a643 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Tue, 19 Dec 2023 21:06:24 +0800 Subject: gnu: traceroute: Update to 2.1.5. * gnu/packages/networking.scm (traceroute): Update to 2.1.5. Change-Id: I400292cd62afd76ca66e00071ae3afa45302735c Signed-off-by: Hilton Chain --- gnu/packages/networking.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index d5e44b53b8..2d2bce96c2 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -4195,7 +4195,7 @@ network. This must be enabled on the target host, usually in the BIOS.") (define-public traceroute (package (name "traceroute") - (version "2.1.2") + (version "2.1.5") (source (origin (method url-fetch) @@ -4203,7 +4203,7 @@ network. This must be enabled on the target host, usually in the BIOS.") "traceroute-" version "/traceroute-" version ".tar.gz")) (sha256 - (base32 "07svkglyizxirgcmv6d4ih59f3ds8pnyprvkrqcf5d3p567jcz2h")))) + (base32 "17l5barragw0mfgsbjfndny3w4l7zs20l6s6rvim3azajq6jcv4w")))) (build-system gnu-build-system) (arguments (list -- cgit 1.4.1 From 96f704548c66910f4f9b298d0a12a1c5b59d4d93 Mon Sep 17 00:00:00 2001 From: Saku Laesvuori Date: Thu, 14 Dec 2023 09:23:07 +0200 Subject: gnu: font-jetbrains-mono: Update to 2.304 * gnu/packages/fonts.scm (font-jetbrains-mono): Update to version 2.304. Change-Id: Id325fda8f9b50cf830107823c6ca1b439a6bdca0 Signed-off-by: Hilton Chain --- gnu/packages/fonts.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 813367be8a..35045c0b65 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -2494,7 +2494,7 @@ a different style of marking.") (define-public font-jetbrains-mono (package (name "font-jetbrains-mono") - (version "2.242") + (version "2.304") (source (origin (method url-fetch) @@ -2502,7 +2502,7 @@ a different style of marking.") (string-append "https://github.com/JetBrains/JetBrainsMono/releases/" "download/v" version "/JetBrainsMono-" version ".zip")) (sha256 - (base32 "17qs985v38x3rcg3v4av3qynwr4gvixrj50vjzy7zkkny575ncaf")))) + (base32 "1gvv5w0vfzndzp8k7g15j5i3yvnpr5z3imrwjs5flq19xp37cqvg")))) (build-system font-build-system) (arguments `(#:phases -- cgit 1.4.1 From fa92a7c2fe0c5b9e9923ad5f53bafd41aa6dbe66 Mon Sep 17 00:00:00 2001 From: Saku Laesvuori Date: Thu, 14 Dec 2023 09:26:14 +0200 Subject: gnu: font-jetbrains-mono: Use the correct license. The build scripts are licensed under asl2.0 but the packaged font files are licensed under silofl1.1. * gnu/packages/fonts.scm (font-jetbrains-mono)[license]: Use silofl1.1 instead of asl2.0. Change-Id: I256a89b6e4bdb368c9cc94cae0808f72c76e7599 Signed-off-by: Hilton Chain --- gnu/packages/fonts.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 35045c0b65..1b2bc319f7 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -2524,7 +2524,7 @@ a different style of marking.") "JetBrains Mono is a font family dedicated to developers. JetBrains Mono’s typeface forms are simple and free from unnecessary details. Rendered in small sizes, the text looks crisper.") - (license license:asl2.0))) + (license license:silofl1.1))) (define-public font-juliamono (package -- cgit 1.4.1 From 8c07a2c2ba8203da310bda7532b1acd3468fa57c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 19 Dec 2023 08:09:46 +0200 Subject: gnu: composer-classloader: Use copy-build-system. * gnu/packages/php-xyz.scm (composer-classloader)[build-system]: Switch to the copy-build-system. [arguments]: Adjust accordingly. Change-Id: Idb39ba92d973362bd6d8c1dd944a5d46919de5df --- gnu/packages/php-xyz.scm | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/gnu/packages/php-xyz.scm b/gnu/packages/php-xyz.scm index ac90ee3c25..bef5a2dcb4 100644 --- a/gnu/packages/php-xyz.scm +++ b/gnu/packages/php-xyz.scm @@ -20,10 +20,8 @@ #:use-module (gnu packages) #:use-module (gnu packages php) #:use-module (guix packages) - #:use-module (guix download) #:use-module (guix git-download) - #:use-module (guix build-system composer) - #:use-module (guix build-system gnu) + #:use-module (guix build-system copy) #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:)) @@ -40,18 +38,10 @@ (file-name (git-file-name name version)) (sha256 (base32 "0127zmmg3yx84ljngfs86q7kjhyypybkf4d1ihfrfnzgynzxfxdf")))) - (build-system gnu-build-system) + (build-system copy-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (delete 'check) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (install-file "src/Composer/Autoload/ClassLoader.php" - (string-append out "/share/web/composer/")))))))) + `(#:install-plan + '(("src/Composer/Autoload/ClassLoader.php" "/share/web/composer/")))) (home-page "https://getcomposer.org") (synopsis "PHP class loader extracted from the composer package") (description "This package contains the class loader class used by Composer to -- cgit 1.4.1 From aa373871cff0688d0c0ee30d0450dbcdca316f8d Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Sun, 17 Dec 2023 20:57:56 +0100 Subject: gnu: qemu: Update to 8.1.3. * gnu/packages/virtualization.scm (qemu): Update to 8.1.3. Change-Id: I9e9e90b836a0307637ead5893594b20d6850fe90 Signed-off-by: Efraim Flashner --- gnu/packages/virtualization.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index ea4601a5d0..35bac9a5ac 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -25,7 +25,7 @@ ;;; Copyright © 2021 Petr Hodina ;;; Copyright © 2021 Raghav Gururajan ;;; Copyright © 2022 Oleg Pykhalov -;;; Copyright © 2022 Ekaitz Zarraga +;;; Copyright © 2022, 2023 Ekaitz Zarraga ;;; Copyright © 2022 Arun Isaac ;;; Copyright © 2022 Zhu Zihao ;;; Copyright © 2023 Juliana Sims @@ -166,14 +166,14 @@ (define-public qemu (package (name "qemu") - (version "8.1.1") + (version "8.1.3") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) (sha256 - (base32 "1vvxmd7xbkl083anpqm797m070qi8n5wc5qid0ppbyq0wpsjxkip")) + (base32 "1fv5wbxpjxqzv10bdlq0ykgqfmzqx4s8yfch9zvqcm8h0il1gk23")) (patches (search-patches "qemu-disable-some-qtests-tests.patch" "qemu-fix-agent-paths.patch")) (modules '((guix build utils))) -- cgit 1.4.1 From 57aaaf290373075ae7a27c1eb8b5c66c03adb99f Mon Sep 17 00:00:00 2001 From: "spacecadet@purge.sh" Date: Sun, 12 Nov 2023 02:48:05 +0000 Subject: gnu: ovmf: Update to 202308. * gnu/packages/firmware.scm (ovmf): Update to 202308. [arguments]: Adjust phases to not hardcode gcc toolchain version. [native-inputs]: Remove python-2. Add perl, python-3. Signed-off-by: Efraim Flashner Change-Id: I74a7bd26240821aacf35e5020d9687406e7da9ed --- gnu/packages/firmware.scm | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index dfa29d35fa..9b2edcf9de 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -872,21 +872,21 @@ Executables included are: (license license:bsd-2))) (define-public ovmf - (let ((commit "13a50a6fe1dcfa6600c38456ee24e0f9ecf51b5f") - (revision "1")) + (let ((toolchain-ver "GCC5")) (package (name "ovmf") - (version (git-version "20170116" revision commit)) + (version "202308") (source (origin (method git-fetch) (uri (git-reference ;; OVMF is part of the edk2 source tree. (url "https://github.com/tianocore/edk2") - (commit commit))) + (recursive? #t) ;edk2 now uses a lot of submodules + (commit (string-append "edk2-stable" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1gy2332kdqk8bjzpcsripx10896rbvgl0ic7r344kmpiwdgm948b")))) + "04rnfnaqr2c7ayplj7ib730zp1snw157zx5rmykz5hz1zz2vb20j")))) (build-system gnu-build-system) (arguments (list @@ -916,41 +916,58 @@ Executables included are: (bin (string-append tools "/BinWrappers/PosixLike"))) (setenv "WORKSPACE" cwd) (setenv "EDK_TOOLS_PATH" tools) + (setenv "PYTHON3_ENABLE" "TRUE") + (setenv "PYTHON_COMMAND" "python3") (setenv "PATH" (string-append (getenv "PATH") ":" bin)) (invoke "bash" "edksetup.sh") + (substitute* "Conf/tools_def.txt" + ;; Guix gcc is compiled without pie + ;; The -no-pie flag causes the Ia32 build to fail + (("-no-pie") "")) (substitute* "Conf/target.txt" (("^TARGET[ ]*=.*$") "TARGET = RELEASE\n") + (("^TOOL_CHAIN_TAG[ ]*=.*$") + (string-append "TOOL_CHAIN_TAG = " #$toolchain-ver "\n")) + (("^TARGET_ARCH[ ]*=.*$") + (string-append "TARGET_ARCH = IA32" + #$@(if (string=? "x86_64-linux" (%current-system)) + '(", X64") + '()) + "\n")) (("^MAX_CONCURRENT_THREAD_NUMBER[ ]*=.*$") (format #f "MAX_CONCURRENT_THREAD_NUMBER = ~a~%" (number->string (parallel-job-count))))) ;; Build build support. - (setenv "BUILD_CC" "gcc") + (setenv "CC" "gcc") (invoke "make" "-C" tools)))) (replace 'build (lambda _ - (invoke "build" "-a" "IA32" "-t" "GCC49" + (invoke "build" "-a" "IA32" "-t" #$toolchain-ver "-p" "OvmfPkg/OvmfPkgIa32.dsc"))) #$@(if (string=? "x86_64-linux" (%current-system)) #~((add-after 'build 'build-x64 (lambda _ - (invoke "build" "-a" "X64" "-t" "GCC49" + (invoke "build" "-a" "X64" "-t" #$toolchain-ver "-p" "OvmfPkg/OvmfPkgX64.dsc")))) #~()) (replace 'install (lambda _ (let ((fmw (string-append #$output "/share/firmware"))) (mkdir-p fmw) - (copy-file "Build/OvmfIa32/RELEASE_GCC49/FV/OVMF.fd" + (copy-file (string-append "Build/OvmfIa32/RELEASE_" + #$toolchain-ver "/FV/OVMF.fd") (string-append fmw "/ovmf_ia32.bin")) #$@(if (string=? "x86_64-linux" (%current-system)) - '((copy-file "Build/OvmfX64/RELEASE_GCC49/FV/OVMF.fd" - (string-append fmw "/ovmf_x64.bin"))) - '()))))))) + #~((copy-file (string-append "Build/OvmfX64/RELEASE_" + #$toolchain-ver "/FV/OVMF.fd") + (string-append fmw "/ovmf_x64.bin"))) + #~()))))))) (native-inputs `(("acpica" ,acpica) ("gcc@5" ,gcc-5) ("nasm" ,nasm) - ("python-2" ,python-2) + ("perl" ,perl) + ("python-3" ,python-3) ("util-linux" ,util-linux "lib"))) (supported-systems '("x86_64-linux" "i686-linux")) (home-page "https://www.tianocore.org") -- cgit 1.4.1 From 1c9908fad5a9a9a3127c98148697bc5888af1cfc Mon Sep 17 00:00:00 2001 From: "spacecadet@purge.sh" Date: Sun, 12 Nov 2023 03:02:17 +0000 Subject: gnu: ovmf: Add OVMF_CODE and OVMF_VARS files. * gnu/packages/firmware.scm (ovmf)[arguments]: Add OVMF_CODE.fd and OVMF_VARS.fs to outputs as ovmf_code_arch.bin and ovmf_vars_arch.bin, respectively, for both ia32 and x64 architectures. Signed-off-by: Efraim Flashner Change-Id: Ie329f3f3515e7d015d9fbad01b8c2b82dc7da76e --- gnu/packages/firmware.scm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 9b2edcf9de..4ee5dc5523 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -954,14 +954,19 @@ Executables included are: (lambda _ (let ((fmw (string-append #$output "/share/firmware"))) (mkdir-p fmw) - (copy-file (string-append "Build/OvmfIa32/RELEASE_" - #$toolchain-ver "/FV/OVMF.fd") - (string-append fmw "/ovmf_ia32.bin")) - #$@(if (string=? "x86_64-linux" (%current-system)) - #~((copy-file (string-append "Build/OvmfX64/RELEASE_" - #$toolchain-ver "/FV/OVMF.fd") - (string-append fmw "/ovmf_x64.bin"))) - #~()))))))) + (for-each + (lambda (file) + (copy-file (string-append "Build/OvmfIa32/RELEASE_" + #$toolchain-ver "/FV/" file ".fd") + (string-append fmw "/" (string-downcase file) "_ia32.bin")) + #$@(if (string=? "x86_64-linux" (%current-system)) + #~((copy-file (string-append "Build/OvmfX64/RELEASE_" + #$toolchain-ver "/FV/" file ".fd") + (string-append fmw "/" (string-downcase file) "_x64.bin"))) + #~())) + (list "OVMF" + "OVMF_CODE" + "OVMF_VARS")))))))) (native-inputs `(("acpica" ,acpica) ("gcc@5" ,gcc-5) -- cgit 1.4.1 From c67e8c12d85ef2b88156dadeb5259e6d25137e3e Mon Sep 17 00:00:00 2001 From: "spacecadet@purge.sh" Date: Sun, 12 Nov 2023 03:06:13 +0000 Subject: gnu: ovmf-aarch64: Update to use GCC5. * gnu/packages/firmware.scm (ovmf-aarch64): Updating OVMF to 202308 requires GCC5, packages inheriting from ovmf also need to be updated. Signed-off-by: Efraim Flashner Change-Id: Iccd674f82c2f0160fa8097a09d10154be9736042 --- gnu/packages/firmware.scm | 63 +++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 4ee5dc5523..cb3ca63bde 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -983,36 +983,39 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") license:bsd-2 license:bsd-3 license:bsd-4))))) (define-public ovmf-aarch64 - (package - (inherit ovmf) - (name "ovmf-aarch64") - (native-inputs - (append (package-native-inputs ovmf) - (if (not (string-prefix? "aarch64" (%current-system))) - `(("cross-gcc" ,(cross-gcc "aarch64-linux-gnu")) - ("cross-binutils" ,(cross-binutils "aarch64-linux-gnu"))) - '()))) - (arguments - (substitute-keyword-arguments (package-arguments ovmf) - ((#:phases phases) - #~(modify-phases #$phases - #$@(if (string-prefix? "aarch64" (%current-system)) - '() - '((add-before 'configure 'set-env - (lambda _ - (setenv "GCC49_AARCH64_PREFIX" "aarch64-linux-gnu-"))))) - (replace 'build - (lambda _ - (invoke "build" "-a" "AARCH64" "-t" "GCC49" - "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) - (delete 'build-x64) - (replace 'install - (lambda _ - (let ((fmw (string-append #$output "/share/firmware"))) - (mkdir-p fmw) - (copy-file "Build/ArmVirtQemu-AARCH64/RELEASE_GCC49/FV/QEMU_EFI.fd" - (string-append fmw "/ovmf_aarch64.bin"))))))))) - (supported-systems %supported-systems))) + (let ((toolchain-ver "GCC5")) + (package + (inherit ovmf) + (name "ovmf-aarch64") + (native-inputs + (append (package-native-inputs ovmf) + (if (not (string-prefix? "aarch64" (%current-system))) + `(("cross-gcc" ,(cross-gcc "aarch64-linux-gnu")) + ("cross-binutils" ,(cross-binutils "aarch64-linux-gnu"))) + '()))) + (arguments + (substitute-keyword-arguments (package-arguments ovmf) + ((#:phases phases) + #~(modify-phases #$phases + #$@(if (string-prefix? "aarch64" (%current-system)) + '() + #~((add-before 'configure 'set-env + (lambda _ + (setenv (string-append #$toolchain-ver "_AARCH64_PREFIX") + "aarch64-linux-gnu-"))))) + (replace 'build + (lambda _ + (invoke "build" "-a" "AARCH64" "-t" #$toolchain-ver + "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) + (delete 'build-x64) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file (string-append "Build/ArmVirtQemu-AARCH64/RELEASE_" + #$toolchain-ver "/FV/QEMU_EFI.fd") + (string-append fmw "/ovmf_aarch64.bin"))))))))) + (supported-systems %supported-systems)))) (define-public ovmf-arm (package -- cgit 1.4.1 From edb794bbd45a3e290c678d3f50863278b8f09799 Mon Sep 17 00:00:00 2001 From: "spacecadet@purge.sh" Date: Sun, 12 Nov 2023 03:07:35 +0000 Subject: gnu: ovmf-arm: Update to use GCC5. * gnu/packages/firmware.scm (ovmf-arm): Updating OVMF to 202308 requires GCC5, packages inheriting from ovmf also need to be updated. Signed-off-by: Efraim Flashner Change-Id: I3a7b3f450e0da39129e7cffce7482b8e391e3858 --- gnu/packages/firmware.scm | 63 +++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index cb3ca63bde..5a67095235 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1018,36 +1018,39 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") (supported-systems %supported-systems)))) (define-public ovmf-arm - (package - (inherit ovmf) - (name "ovmf-arm") - (native-inputs - (append (package-native-inputs ovmf) - (if (not (string-prefix? "armhf" (%current-system))) - `(("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf")) - ("cross-binutils" ,(cross-binutils "arm-linux-gnueabihf"))) - '()))) - (arguments - (substitute-keyword-arguments (package-arguments ovmf) - ((#:phases phases) - #~(modify-phases #$phases - #$@(if (string-prefix? "armhf" (%current-system)) - '() - '((add-before 'configure 'set-env - (lambda _ - (setenv "GCC49_ARM_PREFIX" "arm-linux-gnueabihf-"))))) - (replace 'build - (lambda _ - (invoke "build" "-a" "ARM" "-t" "GCC49" - "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) - (delete 'build-x64) - (replace 'install - (lambda _ - (let ((fmw (string-append #$output "/share/firmware"))) - (mkdir-p fmw) - (copy-file "Build/ArmVirtQemu-ARM/RELEASE_GCC49/FV/QEMU_EFI.fd" - (string-append fmw "/ovmf_arm.bin"))))))))) - (supported-systems %supported-systems))) + (let ((toolchain-ver "GCC5")) + (package + (inherit ovmf) + (name "ovmf-arm") + (native-inputs + (append (package-native-inputs ovmf) + (if (not (string-prefix? "armhf" (%current-system))) + `(("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf")) + ("cross-binutils" ,(cross-binutils "arm-linux-gnueabihf"))) + '()))) + (arguments + (substitute-keyword-arguments (package-arguments ovmf) + ((#:phases phases) + #~(modify-phases #$phases + #$@(if (string-prefix? "armhf" (%current-system)) + '() + #~((add-before 'configure 'set-env + (lambda _ + (setenv (string-append #$toolchain-ver "_ARM_PREFIX") + "arm-linux-gnueabihf-"))))) + (replace 'build + (lambda _ + (invoke "build" "-a" "ARM" "-t" #$toolchain-ver + "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) + (delete 'build-x64) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file (string-append "Build/ArmVirtQemu-ARM/RELEASE_" + #$toolchain-ver "/FV/QEMU_EFI.fd") + (string-append fmw "/ovmf_arm.bin"))))))))) + (supported-systems %supported-systems)))) (define* (make-arm-trusted-firmware platform #:key (triplet "aarch64-linux-gnu")) -- cgit 1.4.1 From 7a7ba2d07573c1c4ed6be63c615727ad22f4caac Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 19 Dec 2023 10:52:50 +0200 Subject: gnu: ovmf: Build with newer gcc. * gnu/packages/firmware.scm (ovmf)[arguments]: Remove 'hide-implicit-gcc phase. [native-inputs]: Remove gcc-5. Change-Id: I2bcaea77019bb69214878713aa57cbef49c473db --- gnu/packages/firmware.scm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 5a67095235..222eec07e8 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -893,17 +893,6 @@ Executables included are: #:tests? #f ; No check target. #:phases #~(modify-phases %standard-phases - ;; Hide the default GCC from CPLUS_INCLUDE_PATH to prevent it from - ;; shadowing the version of GCC provided in native-inputs. - (add-after 'set-paths 'hide-implicit-gcc - (lambda* (#:key inputs #:allow-other-keys) - (let ((gcc (assoc-ref inputs "gcc"))) - (setenv "CPLUS_INCLUDE_PATH" - (string-join - (delete (string-append gcc "/include/c++") - (string-split (getenv "CPLUS_INCLUDE_PATH") - #\:)) - ":"))))) (add-after 'unpack 'patch-source (lambda _ (substitute* "edksetup.sh" @@ -969,7 +958,6 @@ Executables included are: "OVMF_VARS")))))))) (native-inputs `(("acpica" ,acpica) - ("gcc@5" ,gcc-5) ("nasm" ,nasm) ("perl" ,perl) ("python-3" ,python-3) -- cgit 1.4.1 From d542593092d93667cee28ba5b8bbca9d1469985e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 19 Dec 2023 14:05:57 +0200 Subject: gnu: Add ovmf-riscv64. * gnu/packages/firmware.scm (ovmf-riscv64): New variable. Change-Id: I483bc4496d7874cc0e9983de36cfc7a90ef7591c --- gnu/packages/firmware.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 222eec07e8..3bb6eff1ec 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1040,6 +1040,44 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") (string-append fmw "/ovmf_arm.bin"))))))))) (supported-systems %supported-systems)))) +(define-public ovmf-riscv64 + (let ((toolchain-ver "GCC5")) + (package + (inherit ovmf) + (name "ovmf-riscv64") + (native-inputs + (append (package-native-inputs ovmf) + (if (not (string-prefix? "riscv64" (%current-system))) + `(("cross-gcc" ,(cross-gcc "riscv64-linux-gnu")) + ("cross-binutils" ,(cross-binutils "riscv64-linux-gnu"))) + '()))) + (arguments + (substitute-keyword-arguments (package-arguments ovmf) + ((#:phases phases) + #~(modify-phases #$phases + #$@(if (string-prefix? "riscv64" (%current-system)) + '() + #~((add-before 'configure 'set-env + (lambda _ + (setenv (string-append #$toolchain-ver "_RISCV64_PREFIX") + "riscv64-linux-gnu-"))))) + (replace 'build + (lambda _ + (invoke "build" "-a" "RISCV64" "-t" #$toolchain-ver + "-p" "OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc"))) + (delete 'build-x64) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file (string-append "Build/RiscVVirtQemu/RELEASE_" + #$toolchain-ver "/FV/RISCV_VIRT_CODE.fd") + (string-append fmw "/RISCV_VIRT_CODE.fd")) + (copy-file (string-append "Build/RiscVVirtQemu/RELEASE_" + #$toolchain-ver "/FV/RISCV_VIRT_VARS.fd") + (string-append fmw "/RISCV_VIRT_VARS.fd"))))))))) + (supported-systems %supported-systems)))) + (define* (make-arm-trusted-firmware platform #:key (triplet "aarch64-linux-gnu")) (let ((native-build? (lambda () -- cgit 1.4.1 From a512bbd23a2e129cf3d8e71255d504ce8bac77d3 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 19 Dec 2023 14:44:12 +0200 Subject: gnu: ovmf: Set target to #f. * gnu/packages/firmware.scm (ovmf)[arguments]: Set target to #f. Change-Id: Iee1b731977f2731277d2e907ee2db2ad85af195f --- gnu/packages/firmware.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 3bb6eff1ec..5cebf515bf 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -891,6 +891,7 @@ Executables included are: (arguments (list #:tests? #f ; No check target. + #:target #f ; Package produces firmware. #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-source -- cgit 1.4.1 From 1adf1e36d27388df04d6873c3f58d7851a9a04b9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 20 Dec 2023 00:58:56 +0100 Subject: gnu: axoloti-patcher: Fix include paths. * gnu/packages/axoloti.scm (axoloti-patcher)[arguments]: Add missing "c++" sub-directory to search paths. Change-Id: Ia3297cb24e02f92ad7af40881b9021af25093e67 --- gnu/packages/axoloti.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm index 7b36922860..fbb027d9b5 100644 --- a/gnu/packages/axoloti.scm +++ b/gnu/packages/axoloti.scm @@ -320,9 +320,9 @@ runtime.") (toolchain (assoc-ref inputs "cross-toolchain")) (includes (string-append toolchain - "/arm-none-eabi/include:" + "/arm-none-eabi/include/c++:" toolchain - "/arm-none-eabi/include/arm-none-eabi/armv7e-m"))) + "/arm-none-eabi/include/c++/arm-none-eabi/armv7e-m"))) (display (string-append "#!" (which "sh") "\n" "export CROSS_CPATH=" includes "\n" -- cgit 1.4.1 From dc2b59ddc1e8f510935777db40e881896f7a0cab Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 20 Dec 2023 00:59:34 +0100 Subject: gnu: axoloti-patcher: Remove trailing #T. * gnu/packages/axoloti.scm (axoloti-patcher)[arguments]: Remove trailing #T from build phase. Change-Id: I1a741e41e7ae167cd72542c3f9cf9a13046bcd3c --- gnu/packages/axoloti.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm index fbb027d9b5..8e26884942 100644 --- a/gnu/packages/axoloti.scm +++ b/gnu/packages/axoloti.scm @@ -333,8 +333,7 @@ runtime.") " -Daxoloti_release=" runtime " -Daxoloti_runtime=" runtime " -jar " dir "/Axoloti.jar"))))) - (chmod target #o555)) - #t))) + (chmod target #o555))))) (add-after 'install 'strip-jar-timestamps (assoc-ref ant:%standard-phases 'strip-jar-timestamps))))) (inputs -- cgit 1.4.1 From 352594e812da043c322df370ada89b85b56d5ecd Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 19 Dec 2023 15:24:05 -0500 Subject: gnu: icecat: Update to 115.6.0-guix0-preview1 [security fixes]. Includes fixes for CVE-2023-6856, CVE-2023-6857, CVE-2023-6858, CVE-2023-6859, CVE-2023-6860, CVE-2023-6861, CVE-2023-6862, CVE-2023-6863, CVE-2023-6864, CVE-2023-6865, and CVE-2023-6867. * gnu/packages/gnuzilla.scm (%icecat-base-version, %icecat-build-id): Update. (icecat-source): Update gnuzilla commit, base version, and hashes. --- gnu/packages/gnuzilla.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index e5d0c4ea9b..7318ec727c 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -546,9 +546,9 @@ variable defined below. It requires guile-json to be installed." ;; XXXX: Workaround 'snippet' limitations. (define computed-origin-method (@@ (guix packages) computed-origin-method)) -(define %icecat-base-version "115.5.0") +(define %icecat-base-version "115.6.0") (define %icecat-version (string-append %icecat-base-version "-guix0-preview1")) -(define %icecat-build-id "20231121000000") ;must be of the form YYYYMMDDhhmmss +(define %icecat-build-id "20231219000000") ;must be of the form YYYYMMDDhhmmss ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' @@ -568,12 +568,12 @@ variable defined below. It requires guile-json to be installed." "firefox-" upstream-firefox-version ".source.tar.xz")) (sha256 (base32 - "0a578r4kri7jdw8pkkzp7f1mm9idlk7sjxjghcb08k5p14172gyv")))) + "0rmw486yhkb1is1j2fy51djl5p5qggf2fhp2hgzfdj4s2bjydmv6")))) ;; The upstream-icecat-base-version may be older than the ;; %icecat-base-version. - (upstream-icecat-base-version "115.5.0") - (gnuzilla-commit "bd66797f3bb057c9d051d4276d63843b4d7ee854") + (upstream-icecat-base-version "115.6.0") + (gnuzilla-commit "6a76a10682b6e63f562e4b9f26f3ef12f88bd839") (gnuzilla-source (origin (method git-fetch) @@ -585,7 +585,7 @@ variable defined below. It requires guile-json to be installed." (string-take gnuzilla-commit 8))) (sha256 (base32 - "0v3ckm8yv566f2y9a2bfzakbsk529f1ykr7dj69kb9k93dgny3ja")))) + "15bvlz7c4d8mk10zc317rai91hd96wnchikcfdfxzl35zdnd315r")))) ;; 'search-patch' returns either a valid file name or #f, so wrap it ;; in 'assume-valid-file-name' to avoid 'local-file' warnings. -- cgit 1.4.1 From 4af710b2ea91f7d8c24413afaad673c18921a1db Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Wed, 20 Dec 2023 10:48:03 +0300 Subject: gnu: Add obs-pipewire-audio-capture. * gnu/packages/video.scm (obs-pipewire-audio-capture): New variable. Change-Id: I6f8e400a8ec81b84c65d948b6c30d41d74bd5dca --- gnu/packages/video.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index ec777d935e..b25352fdaa 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3762,6 +3762,35 @@ This may help improve your viewers watching experience, and allows you to use your host privately.") (license license:gpl2+))) +(define-public obs-pipewire-audio-capture + (package + (name "obs-pipewire-audio-capture") + (version "1.1.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dimtpap/obs-pipewire-audio-capture") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qjl8xlaf54zgz34f1dfybdg2inc2ir42659kh15ncihpgbx0wzl")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ; no test target + #:configure-flags + #~(list (string-append "-DLIBOBS_INCLUDE_DIR=" + #$(this-package-input "obs") "/lib") + "-Wno-dev"))) + (native-inputs (list libconfig pkg-config)) + (inputs (list obs pipewire)) + (home-page "https://obsproject.com/forum/resources/pipewire-audio-capture.1458/") + (synopsis "Audio device and application capture for OBS Studio using PipeWire") + (description "This plugin adds 3 sources for capturing audio outputs, +inputs and applications using PipeWire.") + (license license:gpl2+))) + (define-public obs-websocket ;; Functionality was merged into OBS. (deprecated-package "obs-websocket" obs)) -- cgit 1.4.1 From 51c0490267726e2b69c31ca337983123334c4aee Mon Sep 17 00:00:00 2001 From: Michael Ford Date: Thu, 14 Dec 2023 10:40:55 +0000 Subject: gnu: bitcoin-core: Update to 26.0. * gnu/packages/finance.scm (bitcoin-core): Update to 26.0. Signed-off-by: Guillaume Le Vaillant Change-Id: Ied4b14221f862e05f37fc0516392d1b474bc6d19 --- gnu/packages/finance.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 6ed363552a..98a220385b 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -142,7 +142,7 @@ ;; . (package (name "bitcoin-core") - (version "25.1") + (version "26.0") (source (origin (method url-fetch) (uri @@ -150,7 +150,7 @@ version "/bitcoin-" version ".tar.gz")) (sha256 (base32 - "1jcq2686x6f1g8xk91h3qfw89v1klw931wbpbcvc5a6zv2cabhmy")))) + "18f0rl7nzr64m54d6hmrphg7z39mmj2ix47kv78n5nr8dqkrj7db")))) (build-system gnu-build-system) (native-inputs (list autoconf -- cgit 1.4.1 From 9dbb618a80a106a19a546f0f7b0769c89f103d4c Mon Sep 17 00:00:00 2001 From: Bruno Victal Date: Mon, 18 Dec 2023 18:09:09 +0000 Subject: gnu: i2pd: Update to 2.50.0. * gnu/packages/i2p.scm (i2pd): Update to 2.50.0. [native-inputs]: Add pkg-config, check. [arguments]: Use G-Expressions. <#:configure-flags>: Drop obsolete and defaulted flags. Enable testing with cmake. <#:phases>: Drop obsolete 'check replacement. Signed-off-by: Guillaume Le Vaillant Change-Id: If276d475587fa9431fbb9b55b051e71a2f5d39e3 --- gnu/packages/i2p.scm | 44 ++++++++++++-------------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/gnu/packages/i2p.scm b/gnu/packages/i2p.scm index 2e8c1d085d..b4f0c8d639 100644 --- a/gnu/packages/i2p.scm +++ b/gnu/packages/i2p.scm @@ -21,9 +21,12 @@ (define-module (gnu packages i2p) #:use-module (gnu packages boost) + #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls) #:use-module (gnu packages upnp) + #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix build-system cmake) @@ -32,7 +35,7 @@ (define-public i2pd (package (name "i2pd") - (version "2.44.0") + (version "2.50.0") (source (origin (method git-fetch) @@ -41,41 +44,18 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0fwaalfxqdahgvx5rfkvdmf6gl10w328a18ddhyn5kvpmp9x7fgl")))) + (base32 "1vr251mgffawi3rj51dzlnv3fs1ssz6gl17qbsyhfr5fcd7s0hc5")))) (build-system cmake-build-system) + (native-inputs (list check pkg-config)) (inputs (list boost miniupnpc openssl zlib)) (arguments - '(#:configure-flags - (let ((source (assoc-ref %build-inputs "source"))) - (list (string-append "-S" source "/build") - "-DWITH_PCH=OFF" - "-DWITH_STATIC=OFF" - "-DWITH_UPNP=ON" - "-DWITH_LIBRARY=ON" - "-DBUILD_SHARED_LIBS=ON" - "-DWITH_BINARY=ON")) - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key - tests? - (make-flags '()) - (parallel-tests? #t) - #:allow-other-keys) - (let ((source (assoc-ref %build-inputs "source"))) - (when tests? - (copy-recursively (string-append source "/tests") - "./tests") - (with-directory-excursion "tests" - (substitute* "Makefile" - (("../libi2pd") (string-append source "/libi2pd"))) - (apply invoke "make" "all" - `(,@(if parallel-tests? - `("-j" ,(number->string - (parallel-job-count))) - '()) - ,@make-flags)))))))))) + (list + #:configure-flags + #~(list (string-append "-S" #$source "/build") + "-DWITH_UPNP=ON" + "-DBUILD_SHARED_LIBS=ON" + "-DBUILD_TESTING=ON"))) (home-page "https://i2pd.website/") (synopsis "Router for an end-to-end encrypted and anonymous internet") (description "i2pd is a client for the anonymous I2P network, upon which -- cgit 1.4.1 From 2b12c1238c802076ddc5d272680a1bb7df4c99c1 Mon Sep 17 00:00:00 2001 From: Mădălin Ionel Patrașcu Date: Wed, 20 Dec 2023 10:11:41 +0100 Subject: gnu: Add r-ncmisc. * gnu/packages/cran.scm (r-ncmisc): New variable. Change-Id: I54bbaf23244767bdb7cce9f31e604ba6998448a4 Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index c9ce73b1de..9547086bf1 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -17904,6 +17904,28 @@ variables, and files, in either version 3 or 4 format, and manipulate existing netCDF files.") (license license:gpl3+))) +(define-public r-ncmisc + (package + (name "r-ncmisc") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "NCmisc" version)) + (sha256 + (base32 "10wzznqa26fxyj6bl979qmq29p3dkr8yap4s70l3mwhhk33zpz16")))) + (properties `((upstream-name . "NCmisc"))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/package=NCmisc") + (synopsis "Functions for creating adaptive functions and scripts") + (description + "This package provides a set of handy functions. It includes a versatile +one line progress bar, one line function timer with detailed output, time delay +function, text histogram, object preview, CRAN package search, simpler package +installer, Linux command install check, a flexible Mode function, top function, +simulation of correlated data, and more.") + (license license:gpl2+))) + (define-public r-biocmanager (package (name "r-biocmanager") -- cgit 1.4.1 From aa22cdd363d3b2cf64586ccee918531aa53ef365 Mon Sep 17 00:00:00 2001 From: Clément Lassieur Date: Wed, 20 Dec 2023 17:27:51 +0100 Subject: teams: Add entry for Clément Lassieur. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * etc/teams.scm ("Clément Lassieur"): New member. Change-Id: If6456d9496f59b0a26608ad5e55aa8fdfb8af492 --- etc/teams.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/etc/teams.scm b/etc/teams.scm index 76633c2184..44ebccd7d3 100755 --- a/etc/teams.scm +++ b/etc/teams.scm @@ -676,6 +676,10 @@ GLib/GIO, GTK, GStreamer and Webkit." "ekaitz@elenq.tech") bootstrap zig) +(define-member (person "Clément Lassieur" + "clement@lassieur.org") + mozilla) + (define (find-team name) (or (hash-ref %teams (string->symbol name)) -- cgit 1.4.1 From 49a7a95ba44e231e9e15a274f9a96de6fa012daf Mon Sep 17 00:00:00 2001 From: Benjamin Slade Date: Tue, 19 Dec 2023 12:23:03 -0600 Subject: gnu: Syncthing: Update to 1.27.1. * gnu/packages/syncthing.scm (syncthing): Update to 1.27.1. Signed-off-by: Leo Famulari Change-Id: Ib95828dee7b2b8b5f852a47026f3bbff69361329 --- gnu/packages/syncthing.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index 2b8a37b518..7598b46824 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2021 Maxim Cournoyer ;;; Copyright © 2021 Arun Isaac ;;; Copyright © 2022 John Kehayias +;;; Copyright © 2023 Benjamin Slade ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,7 +45,7 @@ (define-public syncthing (package (name "syncthing") - (version "1.25.0") + (version "1.27.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/syncthing/syncthing" @@ -52,7 +53,7 @@ "/syncthing-source-v" version ".tar.gz")) (sha256 (base32 - "18cyg0wnf34xi964fxvzxgcq6z0pbirk0k4z82w1cqi3f3l9jlg2")))) + "0d1qlzh07a9h2wx2fxm2fdask2sm750pqwk7jx62x2hcwmb08ysw")))) (build-system go-build-system) ;; The primary Syncthing executable goes to "out", while the auxiliary ;; server programs and utility tools go to "utils". This reduces the size -- cgit 1.4.1 From 97e517a5682af0fc031a5b7b1abf6d7c6ec2b2c9 Mon Sep 17 00:00:00 2001 From: Jack Hill Date: Wed, 20 Dec 2023 12:51:13 -0500 Subject: gnu: libssh: Update to 0.10.6 [security-fixes]. Fixes CVE-2023-6004, CVE-2023-48795, and CVE-2023-6918. * gnu/packages/ssh.scm (libssh): Update to 0.10.6. Change-Id: Ie9d304d78b2629f41af9836e5c7eab5df6f26bb5 Signed-off-by: John Kehayias --- gnu/packages/ssh.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 47089b197d..79ec702ebf 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -132,7 +132,7 @@ file names. (define-public libssh (package (name "libssh") - (version "0.10.5") + (version "0.10.6") (source (origin (method url-fetch) (uri (string-append "https://www.libssh.org/files/" @@ -140,7 +140,7 @@ file names. "/libssh-" version ".tar.xz")) (sha256 (base32 - "0d22gq77ga24ijlgr3d1wvhfvprx61iklkb3npifxfb7ygvjy3mn")) + "1hcxvsb4brznxqq6cjwxkk7yv4c48w4fcwxwd8dp9wdnyncd8q8q")) (modules '((guix build utils))) (snippet ;; 'PATH_MAX' is undefined on GNU/Hurd; work around it. -- cgit 1.4.1 From 04b63ea195cbcbcf519b7dd52546c6d56be6741b Mon Sep 17 00:00:00 2001 From: Jack Hill Date: Thu, 21 Dec 2023 00:33:08 -0500 Subject: gnu: openssh: Update to 9.6p1 [security-fixes]. Fixes CVE-2023-48795. * gnu/packages/ssh.scm (openssh): Update to 9.6p1. [arguments]<#:parallel-tests?>: Disable. Change-Id: I8b7707894d904ec8bcccb943908fff2e69a1a027 Signed-off-by: John Kehayias --- gnu/packages/ssh.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 79ec702ebf..0b364bbe90 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -198,7 +198,7 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "9.5p1") + (version "9.6p1") (source (origin (method url-fetch) @@ -206,11 +206,14 @@ a server that supports the SSH-2 protocol.") "openssh-" version ".tar.gz")) (patches (search-patches "openssh-trust-guix-store-directory.patch")) (sha256 - (base32 "0sq8hqk6f0x6djgvqawjbwwxpwd8r1nzjahqfl7m9yx7kfvyf9ph")))) + (base32 "0z3pgam8b4z05lvdb78iv06p204qwl7b94a3cnnwba2mfb0120li")))) (build-system gnu-build-system) (arguments (list #:test-target "tests" + ;; Not all of the tests can be run in parallel, see + ;; . + #:parallel-tests? #f ;; Otherwise, the test scripts try to use a nonexistent directory and fail. #:make-flags #~(list "REGRESSTMP=\"$${BUILDDIR}/regress\"") -- cgit 1.4.1