unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Liliana Marie Prikler <liliana.prikler@gmail.com>,
	Maxime Devos <maximedevos@telenet.be>,
	51559@debbugs.gnu.org
Cc: maxim.cournoyer@gmail.com
Subject: bug#51559: [PATCH] gnu: webkitgtk: Disable SSE2 when not on x86_64.
Date: Sat, 06 Nov 2021 04:00:44 -0400	[thread overview]
Message-ID: <87h7cpu308.fsf@netris.org> (raw)
In-Reply-To: <c18ba786c523f8dfa115f40c34bf42e2e41abd3a.camel@gmail.com>

Hi Liliana,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Freitag, den 05.11.2021, 20:15 +0000 schrieb Maxime Devos:
>> Liliana Marie Prikler schreef op vr 05-11-2021 om 21:06 [+0100]:
>> > * gnu/packages/webkit.scm (webkitgtk)[#:phases]: Add ‘disable-
>> > sse2’.
>> > ---
>> >  gnu/packages/webkit.scm | 5 +++++
>> >  1 file changed, 5 insertions(+)
>> > 
>> > diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
>> > index e54b680855..45150e185f 100644
>> > --- a/gnu/packages/webkit.scm
>> > +++ b/gnu/packages/webkit.scm
>> > @@ -295,6 +295,11 @@ (define-public webkitgtk
>> >                   (("libWPEBackend-fdo-([\\.0-9]+)\\.so" all
>> > version)
>> >                    (string-append wpebackend-fdo "/lib/" all)))
>> >                 #t)))
>> > +         (add-after 'unpack 'disable-sse2
>> > +           (lambda* (#:key system #:allow-other-keys)
>> > +             (unless (string-prefix? "x86_64" system)
>> 
>> IIUC, when cross-compiling, you need to look at 'target', not
>> 'system'.  At least, that's the case if %current-system/%current-
>> target-system is used. Not sure about 'system' and 'target'.
> Do target and system follow the same rules?

Unfortunately not.  It's a bit of a mess, IMO.

%current-system is a Nix system string, e.g. "x86_64-linux",
"i686-linux", "aarch64-linux", etc.

%current-target-system is either #f (if not cross-compiling) or a GNU
triplet, e.g. "x86_64-unknown-linux-gnu".

It is quite common to write code like:

__ (or %current-target-system
______ %current-system)

but then you must then write code that copes properly with either Nix
system strings or GNU triplets.

> If so, I could write (or target system), no?  Packages on master sadly
> follow wildly different conventions and I picked one at random.

A nice touch would be to use quasiquotation to perform the target checks
in the host-side code, maybe something like this (after adding
'target-x86-32?' from 'core-updates-frozen' to (guix utils)):

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 358254f23f..439341c222 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -292,6 +292,12 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.")
                  (("libWPEBackend-fdo-([\\.0-9]+)\\.so" all version)
                   (string-append wpebackend-fdo "/lib/" all)))
                #t)))
+         ,@(if (target-x86-32?)
+               '((add-after 'unpack 'disable-sse2
+                   (lambda _
+                     (substitute* "Source/cmake/DetectSSE2.cmake"
+                       (("CHECK_FOR_SSE2\\(\\)") "")))))
+               '())
          (add-before 'configure 'prepare-build-environment
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CC" "clang")
--8<---------------cut here---------------end--------------->8---

The nice thing about this approach is that it does not cause rebuilds on
other systems.  This benefit is especially useful for core packages,
where the cost of rebuilds can be prohibitive, but where it is sometimes
necessary to add more target-specific bits like this when Guix is
bootstrapped on a new platform.

What do you think?

Anyway, thanks for working on it.

      Regards,
        Mark

-- 
Disinformation flourishes because many people care deeply about injustice
but very few check the facts.  Ask me about <https://stallmansupport.org>.




  parent reply	other threads:[~2021-11-06  8:03 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-01 21:02 bug#51559: Webkit fails to build Liliana Marie Prikler
2021-11-02  3:14 ` Maxim Cournoyer
2021-11-02  5:43   ` Mark H Weaver
2021-11-04 18:23     ` Maxim Cournoyer
2021-11-04 19:59       ` Liliana Marie Prikler
2021-11-04 21:58         ` Mark H Weaver
2021-11-05  4:21           ` Maxim Cournoyer
2021-11-05  5:17           ` Liliana Marie Prikler
2021-11-05 20:06 ` bug#51559: [PATCH] gnu: webkitgtk: Disable SSE2 when not on x86_64 Liliana Marie Prikler
2021-11-05 20:15   ` Maxime Devos
2021-11-05 22:19     ` Liliana Marie Prikler
2021-11-05 22:38       ` Maxime Devos
2021-11-06  8:00       ` Mark H Weaver [this message]
2021-11-06  8:21 ` bug#51559: [PATCH v2] gnu: webkit: " Liliana Marie Prikler
2021-11-06  8:44   ` Mark H Weaver
2021-11-06  8:55   ` Mark H Weaver
2021-11-06  9:42     ` Liliana Marie Prikler
2021-11-06 18:06       ` Mark H Weaver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87h7cpu308.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=51559@debbugs.gnu.org \
    --cc=liliana.prikler@gmail.com \
    --cc=maxim.cournoyer@gmail.com \
    --cc=maximedevos@telenet.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).