From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id aHPhKVA6z2X1GQAA62LTzQ:P1 (envelope-from ) for ; Fri, 16 Feb 2024 11:34:56 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1.migadu.com with LMTPS id aHPhKVA6z2X1GQAA62LTzQ (envelope-from ) for ; Fri, 16 Feb 2024 11:34:56 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20230601 header.b=C905hklR; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1708079696; 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:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=W+4qw6lk0RANGdaVQheR/E8Jmh5h0lLd9kAZWvCPrGw=; b=byCxkGqVcfZaQI8vye/cgar/P3blebns54v+764zyr7M2HR6iupINRQIHNkZDssL1Y7z7j qFZqeJ9h7g6QHc0BOPYfCWikMi096SbGMYxxM8QHWN2dwQHLUH+LyBVtHWDJH9VumIDk9x NEEmfEwydktJpuCnqkG87pD7accpiiaUGhCczHL096rT3+7KgMMxdS05VoeLq1OezTrpkv XteTBtn2bW0VWfzD7fuVCbF6Be36cphJHJ96LwlDnhALLT6PZkAq+00GAFxr3Xkh3LfTso dGR3IjDXRPyWc5Ihy63tgkh2zFxAUaLbBf+q3e25OI4sz5JrYNg+6ZEle9pQlw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20230601 header.b=C905hklR; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1708079696; a=rsa-sha256; cv=none; b=JYAh3gbATQvDNtK9gAFiB8V+fUObzvINj/L1xRJsJbK0z9PVI/XKhcRqt8HQtRdba21i+X y+FQd1rzJifpX0DZ4BJZys/sy3ZPTYYeSEohxcU4LqwLBBnZsPnSCUu/86gaKhx/69Sisw 1xqROvmb6pfQL+J9DvU+JxGa8KUx6MgiNSTloQYJNVCt9SqmktXulsAeFddIQ+hsK20CoT N+d500/1XN6C6HtWyiHJ6IwXFilV7vkUrWA8EqImhELF62XN5TLZ2rw5M1vxx7mr5YgDbA TYS+eOKgFP3/V7xY0m9J2uoUjPnE4rKnIDz0dk5iUy31ZseeWTWErHFcyAfC4A== 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 1F67C3F691 for ; Fri, 16 Feb 2024 11:34:56 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ravXs-00049L-QI; Fri, 16 Feb 2024 05:34:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ravXo-00048w-N9 for guix-devel@gnu.org; Fri, 16 Feb 2024 05:34:12 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ravXk-0003p8-7r for guix-devel@gnu.org; Fri, 16 Feb 2024 05:34:11 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-33d146737e6so753264f8f.0 for ; Fri, 16 Feb 2024 02:34:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708079644; x=1708684444; darn=gnu.org; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:sender:from:to :cc:subject:date:message-id:reply-to; bh=W+4qw6lk0RANGdaVQheR/E8Jmh5h0lLd9kAZWvCPrGw=; b=C905hklRqJf5jtkAkXqfUzLcrWSqXVIMWznQ/VheoJpJy2MeF34lfGZ61qLjIb8kKM 7jwy7eA3yNCoZZSoVbjOdDzG86QRHzrnWVP5O9pNxqOEWX2Y1PfRNhVqrt4WrNBht57/ mFA279un4MTsMjVgPBv5jOsOrY3XLPgFRzSh2lnIDLI4nMSj23zIfJoQ2FzqXdngU84r SxsX/E6qP7sdWRq1CdLQHlhAFjGXgw96QS8IAC6u0jepKJFUvMae2tQTir1TSTPprzlG 4dPwEkp5KVG8rsl+sT2rX5HrgxarBVnnHK1UP5n30ClJjgSCgoshnY103HX2aM5SLosg duyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708079644; x=1708684444; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=W+4qw6lk0RANGdaVQheR/E8Jmh5h0lLd9kAZWvCPrGw=; b=mH0iqSsw1GTWVzwm5GsO0P+/8flPpjjAk0LMLqfKsZ4VcgsyV01ZsgPaClexEatfxh ZRpYZ7x1UNyuqnLDALtXlOAnOrAks8z7dP1qCkSkvdEp+v40e0Mn4d/uM8ut+hcBlnoY Cpv4tNaL1Abmegk2F1dn8CZ0JswpgMqk0Ia2Tf0QUqYibsSuUkfUlBhGHs+TEnQ6xv+J C0i5a6TGLqEJ4ImViQdba35FamolPP0/rqFGUFxMwtS9OLKlIkn0ldlheWwaMhRGNF1J nLv6Nxefy1re09h4oeujjfa3QUkMdbP6YJ+jPxHxKR2Q8AfUNQmk1ImQYVKLERyOrpcS t+zA== X-Forwarded-Encrypted: i=1; AJvYcCWMIq2u54yOfdP+GnCRyqTMMlKJZDnOCtLo6rj8azr2bE+FbGErKiuwVOcS9DzoDt+aPSUbyh5w9F0GXLQtcAZi3wQ= X-Gm-Message-State: AOJu0YwGhkzHamk4XWZXluoYEME7DMGiXCSQdjqOLJx5dbnYmkib7y3z 4dxST4EurGcf73mQuz0Mj546UvR2JMqvUWqFWusHrqPDBr8cwOs6 X-Google-Smtp-Source: AGHT+IGTkPqwo7sGHePPjtmcx1cbYE2g80BhuNdpDZ4OwNclXmgD0gqkD/eK9eqkNn+DiuieFDZirw== X-Received: by 2002:adf:e80c:0:b0:33b:49da:22e5 with SMTP id o12-20020adfe80c000000b0033b49da22e5mr3125502wrm.9.1708079644309; Fri, 16 Feb 2024 02:34:04 -0800 (PST) Received: from localhost ([141.226.12.177]) by smtp.gmail.com with ESMTPSA id e4-20020adfe384000000b0033cfa00e497sm1792666wrm.64.2024.02.16.02.34.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Feb 2024 02:34:03 -0800 (PST) Date: Fri, 16 Feb 2024 12:34:02 +0200 From: Efraim Flashner To: Konrad Hinsen Cc: Saku Laesvuori , Guix Devel Subject: Re: Debugging missing architecture support Message-ID: Mail-Followup-To: Konrad Hinsen , Saku Laesvuori , Guix Devel References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="dHfCa8Y5VusGkOvm" Content-Disposition: inline In-Reply-To: X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=efraim.flashner@gmail.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action 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: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -7.07 X-Spam-Score: -7.07 X-Migadu-Queue-Id: 1F67C3F691 X-Migadu-Scanner: mx11.migadu.com X-TUID: MbhpvP0vPoAm --dHfCa8Y5VusGkOvm Content-Type: multipart/mixed; boundary="9Ka0d/qMOlaUZibM" Content-Disposition: inline --9Ka0d/qMOlaUZibM Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Feb 15, 2024 at 11:29:55AM +0100, Konrad Hinsen wrote: > Hi Saku, >=20 > > Maybe someone else can give more general or Guix specific advice on > > finding out the cause of such problems, but I believe that in this case > > the fix would just be packaging GHC for aarch64-linux. It should[1] be > > possible but it will require some work. > > > > [1]: https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms >=20 > Thanks for the pointer! It looks indeed like GHC already support > aarch64, so it's just a matter of integrating that support into Guix. > I'll see if I can find someone motivated and competent to do that. I've been carrying around this diff for a while but I don't think I'm currently ready to finish it off. It adds aarch64 and armhf bootstrap binaries for GHC and gets started on the path to building ghc-8.6 with them. --=20 Efraim Flashner =D7=A8=D7=A0=D7=A9=D7=9C=D7=A4 = =D7=9D=D7=99=D7=A8=D7=A4=D7=90 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --9Ka0d/qMOlaUZibM Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="ghc-aarch64-support.diff" Content-Transfer-Encoding: quoted-printable diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 62815efbb1..92ba976189 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -57,6 +57,7 @@ (define-module (gnu packages haskell) #:use-module (gnu packages libffi) #:use-module (gnu packages linux) #:use-module (gnu packages lisp) + #:use-module (gnu packages llvm) #:use-module (gnu packages m4) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) @@ -699,6 +852,24 @@ (define ghc-bootstrap-i686-7.8.4 (base32 "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg")))) =20 +(define ghc-bootstrap-armhf-8.2.2 + (origin + (method url-fetch) + (uri + "https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-armv7-deb8-linux.= tar.xz") + (sha256 + (base32 + "1jmv8qmnh5bn324fivbwdcaj55kvw7cb2zq9pafmlmv3qwwx7s46")))) + +(define ghc-bootstrap-aarch64-8.2.2 + (origin + (method url-fetch) + (uri + "https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-aarch64-deb8-linu= x.tar.xz") + (sha256 + (base32 + "1k2amylcp1ad67c75h1pqf7czf9m0zj1i7hdc45ghjklnfq9hrk7")))) + ;; 43 tests out of 3965 fail. ;; ;; Most of them do not appear to be serious: @@ -1057,10 +1228,115 @@ (define-public ghc-8.4 (file-pattern ".*\\.conf\\.d$") (file-type 'directory)))))) =20 +(define ghc-8.4-bootstrap + (package + (inherit ghc-8.4) + (name "ghc") + (version "8.4.4") + (supported-systems '("aarch64-linux" "armhf-linux")) + (native-inputs + `(;("clang" ,clang) + ("gcc:lib" ,gcc "lib") + ("ghc-bootstrap" ,(if (target-aarch64?) + ghc-bootstrap-aarch64-8.2.2 + ghc-bootstrap-armhf-8.2.2)) + ("llvm" ,llvm-9) + ("patchelf" ,patchelf) + ;("ld-wrapper" ,(@ (gnu packages commencement) ld-gold-wrapper)) ; = for arm + ,@(filter (match-lambda + (("ghc-bootstrap" . _) #f) + (_ #t)) + (package-native-inputs ghc-8.4)))) + (arguments + (substitute-keyword-arguments (package-arguments ghc-8.4) + ((#:modules _ #~%gnu-build-system-modules) + '((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26) + (srfi srfi-1))) + ((#:phases phases) + #~(let* ((ghc-bootstrap-path + (string-append (getcwd) "/" #$name "-" #$version "/ghc-= bin")) + (ghc-bootstrap-prefix + (string-append ghc-bootstrap-path "/usr"))) + (modify-phases #$phases + (add-after 'unpack 'unpack-bin + (lambda* (#:key inputs #:allow-other-keys) + (mkdir-p ghc-bootstrap-prefix) + (with-directory-excursion ghc-bootstrap-path + (invoke "tar" "xvf" (assoc-ref inputs "ghc-bootstrap")= )))) + (add-before 'configure 'install-bin + (lambda _ + (with-directory-excursion + (string-append ghc-bootstrap-path "/ghc-8.2.2") + (invoke "make" "install")))) + (add-before 'install-bin 'configure-bin + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((binaries + (list "ghc/stage2/build/tmp/ghc-stage2" + "iserv/stage2/build/tmp/ghc-iserv" + "iserv/stage2_dyn/build/tmp/ghc-iserv-dyn" + "iserv/stage2_p/build/tmp/ghc-iserv-prof" + "utils/ghc-cabal/dist-install/build/tmp/g= hc-cabal" + "utils/ghc-pkg/dist-install/build/tmp/ghc= -pkg" + ;"utils/haddock/dist/build/tmp/haddock" ;= not on arm + "utils/hp2ps/dist/build/tmp/hp2ps" + "utils/hpc/dist-install/build/tmp/hpc" + "utils/hsc2hs/dist-install/build/tmp/hsc2= hs" + "utils/runghc/dist-install/build/tmp/rung= hc" + "utils/unlit/dist/build/tmp/unlit")) + (gmp (assoc-ref inputs "gmp")) + (gmp-lib (string-append gmp "/lib")) + (gmp-include (string-append gmp "/include")) + (ncurses-lib + (dirname (search-input-file inputs "/lib/libncu= rses.so"))) + (ld-so (search-input-file inputs #$(glibc-dynamic= -linker))) + (libtinfo-dir + (string-append ghc-bootstrap-prefix + "/lib/ghc-8.2.2/terminfo-0.4.1.0= "))) + (with-directory-excursion + (string-append ghc-bootstrap-path "/ghc-8.2.2") + (setenv "CONFIG_SHELL" (which "bash")) + (setenv "LD_LIBRARY_PATH" + (string-append gmp-lib ":" + (assoc-ref inputs "gcc:lib") = "/lib")) + ;; The binaries have "/lib64/ld-linux-x86-64.so.2" h= ardcoded. + (for-each + (cut invoke "patchelf" "--set-interpreter" ld-so <= >) + binaries) + ;; The binaries include a reference to libtinfo.so.5= which + ;; is a subset of libncurses.so.5. We create a syml= ink in a + ;; directory included in the bootstrap binaries rpat= h. + (mkdir-p libtinfo-dir) + (symlink + (string-append ncurses-lib "/libncursesw.so." + ;; Extract "6.2" from "6.2.20210619= " if a + ;; dash-separated version tag exist= s. + #$(let* ((v (package-version ncurse= s)) + (d (or (string-index v #\-) + (string-length v)))) + (version-major+minor (string-ta= ke v d)))) + (string-append libtinfo-dir "/libtinfo.so.5")) + + (setenv "PATH" + (string-append (getenv "PATH") ":" + ghc-bootstrap-prefix "/bin")) + (invoke + (string-append (getcwd) "/configure") + (string-append "--prefix=3D" ghc-bootstrap-prefix)= )))))))))) + (native-search-paths (list (search-path-specification + (variable "GHC_PACKAGE_PATH") + (files (list + (string-append "lib/ghc-" version)= )) + (file-pattern ".*\\.conf\\.d$") + (file-type 'directory)))))) + (define-public ghc-8.6 (package (inherit ghc-8.4) (name "ghc") (version "8.6.5") + (supported-systems (append (package-supported-systems ghc-8.4) + (package-supported-systems ghc-8.4-bootstra= p))) (source (origin (method url-fetch) @@ -1070,7 +1346,10 @@ (define-public ghc-8.6 (base32 "0qg3zsmbk4rkwkc3jpas3zs74qaxmw4sp4v1mhsbj0a0dzls2jjd")))) (native-inputs `(;; GHC 8.6.5 must be built with GHC >=3D 8.2. - ("ghc-bootstrap" ,ghc-8.4) + ("ghc-bootstrap" ,(if (member (%current-system) + (package-supported-systems ghc-8.4-bo= otstrap)) + ghc-8.4-bootstrap + ghc-8.4)) ("ghc-testsuite" ,(origin (method url-fetch) @@ -1140,6 +1419,105 @@ (define-public ghc-8.6 (file-pattern ".*\\.conf\\.d$") (file-type 'directory)))))) =20 +(define ghc-8.6-bootstrap + (package + (inherit ghc-8.6) + (name "ghc") + (version "8.6.5") + (supported-systems '("aarch64-linux" "armhf-linux")) + (native-inputs + `(;("clang" ,clang) + ("gcc:lib" ,gcc "lib") + ("ghc-bootstrap" ,(if (target-aarch64?) + ghc-bootstrap-aarch64-8.2.2 + ghc-bootstrap-armhf-8.2.2)) + ("llvm" ,llvm) + ("patchelf" ,patchelf) + ,@(filter (match-lambda + (("ghc-bootstrap" . _) #f) + (_ #t)) + (package-native-inputs ghc-8.6)))) + (arguments + (substitute-keyword-arguments (package-arguments ghc-8.6) + ((#:modules _ #~%gnu-build-system-modules) + '((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26) + (srfi srfi-1))) + ((#:phases phases) + #~(let* ((ghc-bootstrap-path + (string-append (getcwd) "/" #$name "-" #$version "/ghc-= bin")) + (ghc-bootstrap-prefix + (string-append ghc-bootstrap-path "/usr"))) + (modify-phases #$phases + (add-after 'unpack 'unpack-bin + (lambda* (#:key inputs #:allow-other-keys) + (mkdir-p ghc-bootstrap-prefix) + (with-directory-excursion ghc-bootstrap-path + (invoke "tar" "xvf" (assoc-ref inputs "ghc-bootstrap")= )))) + (add-before 'configure 'install-bin + (lambda _ + (with-directory-excursion + (string-append ghc-bootstrap-path "/ghc-8.2.2") + (invoke "make" "install")))) + (add-before 'install-bin 'configure-bin + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((binaries + (list "ghc/stage2/build/tmp/ghc-stage2" + "utils/ghc-cabal/dist-install/build/tmp/g= hc-cabal" + "utils/ghc-pkg/dist-install/build/tmp/ghc= -pkg" + "utils/haddock/dist/build/tmp/haddock" + "utils/hp2ps/dist/build/tmp/hp2ps" + "utils/hpc/dist-install/build/tmp/hpc" + "utils/hsc2hs/dist-install/build/tmp/hsc2= hs" + "utils/runghc/dist-install/build/tmp/rung= hc" + "utils/unlit/dist/build/tmp/unlit")) + (gmp (assoc-ref inputs "gmp")) + (gmp-lib (string-append gmp "/lib")) + (gmp-include (string-append gmp "/include")) + (ncurses-lib + (dirname (search-input-file inputs "/lib/libncu= rses.so"))) + (ld-so (search-input-file inputs #$(glibc-dynamic= -linker))) + (libtinfo-dir + (string-append ghc-bootstrap-prefix + "/lib/ghc-8.2.2/terminfo-0.4.1.0= "))) + (with-directory-excursion + (string-append ghc-bootstrap-path "/ghc-8.2.2") + (setenv "CONFIG_SHELL" (which "bash")) + (setenv "LD_LIBRARY_PATH" + (string-append gmp-lib ":" + (assoc-ref inputs "gcc:lib") = "/lib")) + ;; The binaries have "/lib64/ld-linux-x86-64.so.2" h= ardcoded. + (for-each + (cut invoke "patchelf" "--set-interpreter" ld-so <= >) + binaries) + ;; The binaries include a reference to libtinfo.so.5= which + ;; is a subset of libncurses.so.5. We create a syml= ink in a + ;; directory included in the bootstrap binaries rpat= h. + (mkdir-p libtinfo-dir) + (symlink + (string-append ncurses-lib "/libncursesw.so." + ;; Extract "6.2" from "6.2.20210619= " if a + ;; dash-separated version tag exist= s. + #$(let* ((v (package-version ncurse= s)) + (d (or (string-index v #\-) + (string-length v)))) + (version-major+minor (string-ta= ke v d)))) + (string-append libtinfo-dir "/libtinfo.so.5")) + + (setenv "PATH" + (string-append (getenv "PATH") ":" + ghc-bootstrap-prefix "/bin")) + (invoke + (string-append (getcwd) "/configure") + (string-append "--prefix=3D" ghc-bootstrap-prefix)= )))))))))) + (native-search-paths (list (search-path-specification + (variable "GHC_PACKAGE_PATH") + (files (list + (string-append "lib/ghc-" version)= )) + (file-pattern ".*\\.conf\\.d$") + (file-type 'directory)))))) + (define-public ghc-8.8 (package (inherit ghc-8.6) (name "ghc") --9Ka0d/qMOlaUZibM-- --dHfCa8Y5VusGkOvm Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmXPOhcACgkQQarn3Mo9 g1EWCQ//dSEmsm8E0PUVBqxvHcOR0VoY3ZRhbY6haAD6pEU6h89si4SyTZm/Rw1A AfH7skyxsac88g6yee8dvfzYkmCKfuV3f76ldjE+KzBagdCF8H8DeGyMR8F3qzCR jM03aFy0M1Zhz6QoYg6NvbHmeLk+dZMm1yEWRoiQB59KBuVQniyzIvP8G3tFKvAP WpOgw1b4BMXYZKJFeWWUJeF7YdZJyp4RLxImCIlTn4AcLgYES5tqmFi+LYbN5stQ vpfLWZHR5WtvIL5qEL8NG0PJiLzjFNIlfcSSLQV3dpjyYm/4CCIrFM+nz9pAQaPM qfpkgliV6DkS2sVmRWCa7zCyBdkwsjk/cqslCZWLxrk9frCFQffmvc7WBiT8p53c QTwC2Z6BL78ofsaF4SG/Ddv5QXOkbCJPmgkzgwBO1TNbBd6nIR6LUBxaJDxvdpsE e2Ni1wOhr1QoKTgIH1U83KzhBCwaWyU7HfKwr4jlKysP2uaR3vCobE/t4QYhN1xh Ut2nteNMTCB9rH3wRSMwWhPUumj4DIZbOFtPs7d4/oYEu8m+NasboE8K9u2Cp4wv JOHqJ7xAH0jSwxjz+OgH3ctHxcWofWa9rJrE9bQZTjq0GnMSbzx5MyaOPDLFxVnu Z98L8/2nks1zSqL8gwbryLMPg1fRuTO3Kq+8c5RXlpHeDmbGJ9A= =hTI+ -----END PGP SIGNATURE----- --dHfCa8Y5VusGkOvm--