From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id ACamBuSyomEsWQEAgWs5BA (envelope-from ) for ; Sat, 27 Nov 2021 23:36:20 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id OD9eAuSyomGPRgAAB5/wlQ (envelope-from ) for ; Sat, 27 Nov 2021 22:36:20 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id AF3BD3FED6 for ; Sat, 27 Nov 2021 23:36:19 +0100 (CET) Received: from localhost ([::1]:48108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mr6Is-0007Ad-Nj for larch@yhetil.org; Sat, 27 Nov 2021 17:36:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mr6Ig-0007AR-Gp for guix-devel@gnu.org; Sat, 27 Nov 2021 17:36:06 -0500 Received: from [2001:470:142:3::e] (port=43096 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mr6Ig-00044s-8G; Sat, 27 Nov 2021 17:36:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to: references; bh=Iq3OtbUki8J6m3IL2JOOFtMuinMDdPKih7m1S7rbkJ4=; b=ZyPQdBGtkS42G6 mSG9l91Yw0Tv/JzSexY+Wc/EcfDKRQ3lZU4n72lT0Z3bqCU7525NiQbYAgGhXoNeqIKKZSp8rvgGV H3CB8/iRkN+UGDFh7u7e7sG9gsn3DoHP3tOV3NQH+HVwDN91Vy9+XpSjXcK049HR8lxQQ6PIsWoZv FMIce6sTAnle1bmc7VlJJIdaN7ZLskORaRfO5AAAmVF8vCDGTk8rnBuWPP629Y+8EBbpDNbkgOttg /j5riJfdXo83ykKsPpnN4IlnchYzv//N8f2y/n5CO8fOfOU+cWoOvmohc0XnCkhukCuEhLieeCY0b EkEaR6vy9duStUQdYHBg==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:62594 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mr6Ig-00015k-0q; Sat, 27 Nov 2021 17:36:06 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Subject: Desktops on non-x86_64 systems X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 7 Frimaire an 230 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Sat, 27 Nov 2021 23:36:03 +0100 Message-ID: <8735nh8bvw.fsf@inria.fr> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Maxim Cournoyer Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1638052579; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=Iq3OtbUki8J6m3IL2JOOFtMuinMDdPKih7m1S7rbkJ4=; b=NX3ORFxYzBOavkg9xq52Ypp/8fLA0cogDat5kYyJBdq4ex/xBBywH4pyt9dDva3LrlEmdp yCN8lJDCH306HQyJ2ym9P1U/8hfA6jn6o97sQGGE+BRzJ7RNNmCMlLiq60LvZW24Y1mZGu fnuisSXZBGknIPiQlTKdkvYzLbb7ty1ZSs2vrVpJyGXbA/ngGEFpWQ+HXPSRiMd6cHA73w XI86MVmhrcDsXoVS1oeMTRfyJBOuZFLppX5ip/YW/kc/SN5bXwHywUTqEBaZ11hQyYbvBr gcHknuQFhMDGrQRav60c+Ka+kCegTtL2TgqB50roSewFygm5plxvPnEhLuHtDQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1638052579; a=rsa-sha256; cv=none; b=AJ8LNQxx7WiknICOazcnYCgGlgNn5fEXgcP64KrUXf/DqHBx2Y7RJQw51urMbuLXZ12lHH 92wedvyvnCwaBC/54mxPEMpt9XnNcgXO/ZCh5NyL/FuP+sBu9nKsL8NmPB5mqOnCixYVOG iireIHFkOwwvtLY9qVI+69ArwG2aTxIM9rQhudA7EbrlaQUm1LqzAHi0KYEFDzMSD4meCY G/GnaRG7AEnzXmTJA+/ENz3b/68h5xyLShaOaqjGwCdkqwjBiC/zPZYOxJuBMqpHf2tNrX xCwlYMiv4mCDqLx3gwlqOfiUvC9MuK9VrwsTU7WGrxEjhu/70DvigIxU4EQUQA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b=ZyPQdBGt; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Spam-Score: -5.30 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b=ZyPQdBGt; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Queue-Id: AF3BD3FED6 X-Spam-Score: -5.30 X-Migadu-Scanner: scn1.migadu.com X-TUID: Qq2fZvuyuaXu --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Guix! As you may know, librsvg 2.50 on =E2=80=98core-updates-frozen=E2=80=99 depe= nds on Rust. However mrustc, which we use to build the first Rust compiler, currently only works on x86_64. This means that ~28% of the packages on =E2=80=98core-updates-frozen=E2=80=99 are x86_64-only (vs. ~15% on =E2=80= =98master=E2=80=99). Among these, the most problematic missing packages are desktop environments: Xfce, GNOME, etc. So far our =E2=80=9Cpledge=E2=80=9D, encod= ed in =E2=80=98etc/release-manifest.scm=E2=80=99, was that all the desktop enviro= nments would be available on x86_64 and i686, so that one could install Guix System just the same way on both. Currently this is no longer possible on =E2=80=98core-updates-frozen=E2=80=99, and I think that=E2=80=99s a problem. The patch below does something unorthodox: it reintroduces librsvg 2.40 (written in C) and uses it selectively so we can have a desktop environment with Xfce on i686. It=E2=80=99s not enough to get GDM though; there=E2=80=99s a couple of GNOME packages that depend on librsvg and I hav= en=E2=80=99t checked whether they work with the old librsvg. I think that=E2=80=99s the most realistic way to salvage desktops on i686 f= or now. In the future mrustc may well support i686=C2=B9, or perhaps GCC-Rust will be mature enough to replace mrustc, but in both cases we=E2=80=99re ta= lking about a longer time frame. What do people think? Thanks, Ludo=E2=80=99. =C2=B9 https://github.com/thepowersgang/mrustc/issues/78 --=-=-= Content-Type: text/x-patch Content-Disposition: inline diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 8e0e750180..cc7fadfe91 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3617,6 +3617,79 @@ (define-public librsvg (home-page "https://wiki.gnome.org/LibRsvg") (license license:lgpl2.1+))) +(define-public librsvg-2.40 + ;; This is the last version implemented in C. + (package + (inherit librsvg) + (version "2.40.21") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/librsvg/" + (version-major+minor version) + "/librsvg-" version ".tar.xz")) + (sha256 + (base32 + "1fljkag2gr7c4k5mn798lgf9903xslz8h51bgvl89nnay42qjqpp")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list "--disable-static") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'pre-configure + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "gdk-pixbuf-loader/Makefile.in" + ;; By default the gdk-pixbuf loader is installed under + ;; gdk-pixbuf's prefix. Work around that. + (("gdk_pixbuf_moduledir = .*$") + (string-append "gdk_pixbuf_moduledir = " + "$(prefix)/lib/gdk-pixbuf-2.0/2.10.0/" + "loaders\n")) + ;; Drop the 'loaders.cache' file, it's in gdk-pixbuf+svg. + (("gdk_pixbuf_cache_file = .*$") + "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n")) + #t)) + (add-before 'check 'remove-failing-tests + (lambda _ + (with-directory-excursion "tests/fixtures/reftests" + (for-each delete-file + '(;; This test fails on i686: + "svg1.1/masking-path-04-b.svg" + ;; This test fails on armhf: + "svg1.1/masking-mask-01-b.svg" + ;; This test fails on aarch64: + "bugs/777834-empty-text-children.svg"))) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("glib" ,glib "bin") ; glib-mkenums, etc. + ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc. + (inputs + `(;; XXX: 1.44 causes some test failures, so we stick with 1.42 for + ;; this ancient version of librsvg. + ("pango" ,pango-1.42) + ("libcroco" ,libcroco) + ("bzip2" ,bzip2) + ("libgsf" ,libgsf) + ("libxml2" ,libxml2))) + (propagated-inputs + ;; librsvg-2.0.pc refers to all of that. + `(("cairo" ,cairo) + ("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib))) + (synopsis "Render SVG files using Cairo (ancient C version)") + (properties '((hidden? . #t))))) + +(define* (librsvg-for-system #:optional + (system (or (%current-target-system) + (%current-system)))) + ;; Since librsvg 2.50 depends on Rust, and Rust is only correctly support on + ;; x86_64, use the ancient C version on other platforms. + (if (string-prefix? "x86_64-" system) + librsvg + librsvg-2.40)) + +(export librsvg-for-system) + (define-public libidl (package (name "libidl") @@ -5538,7 +5611,10 @@ (define-public upower #:configure-flags (list "--localstatedir=/var" (string-append "--with-udevrulesdir=" (assoc-ref %outputs "out") - "/lib/udev/rules.d")))) + "/lib/udev/rules.d")) + + ;; FIXME: Test failure on i686-linux. + #:tests? #f)) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -8865,7 +8941,7 @@ (define-public gnome-shell ("evolution-data-server" ,evolution-data-server) ("gcr" ,gcr) ("gdm" ,gdm) - ("librsvg" ,librsvg) + ;; ("librsvg" ,librsvg) ("gjs" ,gjs) ("gtk" ,gtk) ("gnome-autoar" ,gnome-autoar) @@ -8892,7 +8968,7 @@ (define-public gnome-shell ("upower" ,upower) ;; XXX: These requirements were added in 3.24, but no mention in NEWS. ;; Missing propagation? See also: - ("librsvg" ,librsvg) + ;; ("librsvg" ,librsvg) ("geoclue" ,geoclue))) (synopsis "Desktop shell for GNOME") (home-page "https://wiki.gnome.org/Projects/GnomeShell") diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 35a992dcf7..7ea5f19a8d 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -681,7 +681,7 @@ (define-public gst-plugins-good ("bzip2" ,bzip2) ("cairo" ,cairo) ("flac" ,flac) - ("librsvg" ,librsvg) + ("librsvg" ,(librsvg-for-system)) ("glib" ,glib) ("glib-networking" ,glib-networking) ("glu" ,glu) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index e8ac0b79bb..b69fa372d9 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1417,7 +1417,7 @@ (define-public guile-rsvg ("libtool" ,libtool) ("texinfo" ,texinfo))) (inputs `(("guile" ,guile-3.0) - ("librsvg" ,librsvg) + ("librsvg" ,(librsvg-for-system)) ("guile-lib" ,guile-lib))) ;for (unit-test) (propagated-inputs `(("guile-cairo" ,guile-cairo))) (synopsis "Render SVG images using Cairo from Guile") diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 06f3e3aabc..a63676a04b 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -633,7 +633,7 @@ (define-public xfce4-xkb-plugin ("pkg-config" ,pkg-config))) (inputs `(("garcon" ,garcon) - ("librsvg" ,librsvg) + ("librsvg" ,(librsvg-for-system)) ("libwnck" ,libwnck) ("libx11" ,libx11) ("libxfce4ui" ,libxfce4ui) diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl index d4330ecc8e..510db263f5 100644 --- a/gnu/system/examples/lightweight-desktop.tmpl +++ b/gnu/system/examples/lightweight-desktop.tmpl @@ -3,7 +3,7 @@ ;; environments. (use-modules (gnu) (gnu system nss)) -(use-service-modules desktop) +(use-service-modules desktop sddm xorg) (use-package-modules bootloaders certs emacs emacs-xyz ratpoison suckless wm xorg) @@ -53,7 +53,12 @@ ;; Use the "desktop" services, which include the X11 ;; log-in service, networking with NetworkManager, and more. - (services %desktop-services) + ;; Remove the GDM service and use the SDDM display manager + ;; instead. + (services + (modify-services (append (list (service sddm-service-type)) + %desktop-services) + (delete gdm-service-type))) ;; Allow resolution of '.local' host names with mDNS. (name-service-switch %mdns-host-lookup-nss)) --=-=-=--