GNU bug report logs - #33080
[PATCH] gnu: Add inferno.

Previous Next

Package: guix-patches;

Reported by: Diego Nicola Barbato <dnbarbato <at> posteo.de>

Date: Wed, 17 Oct 2018 21:26:02 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 33080 in the body.
You can then email your comments to 33080 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#33080; Package guix-patches. (Wed, 17 Oct 2018 21:26:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Diego Nicola Barbato <dnbarbato <at> posteo.de>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 17 Oct 2018 21:26:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Diego Nicola Barbato <dnbarbato <at> posteo.de>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: Add inferno.
Date: Wed, 17 Oct 2018 23:25:11 +0200
[Message part 1 (text/plain, inline)]
Hello Guix,

This patch adds inferno as discussed here:
https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00031.html

[0001-gnu-Add-inferno.patch (text/x-patch, inline)]
From c97b28e97a210cc31e34c08bc1abdc8bd74114fa Mon Sep 17 00:00:00 2001
From: Diego Nicola Barbato <dnbarbato <at> posteo.de>
Date: Wed, 17 Oct 2018 23:07:40 +0200
Subject: [PATCH] gnu: Add inferno.

* gnu/packages/inferno.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Register it.
---
 gnu/local.mk             |   1 +
 gnu/packages/inferno.scm | 201 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 202 insertions(+)
 create mode 100644 gnu/packages/inferno.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 402505e22..d10db3dcc 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -232,6 +232,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/image-processing.scm	\
   %D%/packages/image-viewers.scm	\
   %D%/packages/imagemagick.scm			\
+  %D%/packages/inferno.scm			\
   %D%/packages/inklingreader.scm		\
   %D%/packages/inkscape.scm			\
   %D%/packages/irc.scm  			\
diff --git a/gnu/packages/inferno.scm b/gnu/packages/inferno.scm
new file mode 100644
index 000000000..7bf9f970e
--- /dev/null
+++ b/gnu/packages/inferno.scm
@@ -0,0 +1,201 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Diego Nicola Barbato <dnbarbato <at> posteo.de>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages inferno)
+  #:use-module (ice-9 match)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix hg-download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages xorg))
+
+(define-public inferno
+  (let ((commit "62ae0f7")
+        (revision "0"))
+    (package
+      (name "inferno")
+      (version (git-version "4" revision commit))
+      (source
+       (origin
+         (method hg-fetch)
+         (uri (hg-reference
+               (url "https://bitbucket.org/inferno-os/inferno-os")
+               (changeset commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32 "18irka9qad8m1r2m9f56glv9d0gwk4ai7n7i0mzbi47vcmm60hdd"))
+         ;; Remove bundled non-free fonts.
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             (for-each delete-file-recursively
+                       '("fonts/lucidasans"
+                         "fonts/pelm"
+                         "fonts/lucida"
+                         "fonts/lucm"))
+             #t))))
+      (build-system gnu-build-system)
+      (inputs `(("libx11" ,libx11)
+                ("xorgproto" ,xorgproto)
+                ("libxext" ,libxext)))
+      (arguments
+       `(;; Force a 32-bit build targeting a similar architecture, i.e.:
+         ;; armhf for armhf/aarch64, i686 for i686/x86_64.
+         #:system ,@(match (%current-system)
+                      ((or "armhf-linux" "aarch64-linux")
+                       `("armhf-linux"))
+                      (_
+                       `("i686-linux")))
+         #:phases
+         (let* ((bash (assoc-ref %build-inputs "bash"))
+                (objtype ,@(match (%current-system)
+                             ((or "armhf-linux" "aarch64-linux")
+                              `("arm"))
+                             (_
+                              `("386"))))
+                (out (assoc-ref %outputs "out"))
+                (root (string-append out "/share/inferno"))
+                (root/bindir (string-append root "/Linux/"
+                                            objtype "/bin"))
+                (bindir (string-append out "/bin"))
+                (infwm-script (string-append bindir "/infwm")))
+           `(,(assoc 'set-paths %standard-phases)
+             (unpack . ,(lambda* (#:key source #:allow-other-keys)
+                          ;; Extract directly to 'root' since the source
+                          ;; tree doubles as Inferno's root directory
+                          ;; and its path is baked into the emu binary.
+                          (mkdir-p root)
+                          ;; Do not preserve the data modification time
+                          ;; of files ('-m' flag) otherwise the 'build'
+                          ;; phase fails.
+                          (invoke "tar" "xvf" source "-C" root "--strip=1" "-m")
+                          (chdir root)
+                          #t))
+             (patch-src-files . ,(lambda _
+                                   ;; Substitute ocurrences of /bin/sh.
+                                   (for-each (lambda (file)
+                                               (substitute* file
+                                                 (("/bin/sh")
+                                                  (string-append bash "/bin/sh"))))
+                                             '("makemk.sh"
+                                               "mkfiles/mkhost-Linux"
+                                               "emu/Linux/mk-wrt"
+                                               "utils/mk/Posix.c"))
+                                   ;; Do not pass '-m32' unconditionally
+                                   ;; when building mk.
+                                   (substitute* "makemk.sh"
+                                     (("-m32") ""))
+                                   ;; Use the correct name for gcc.
+                                   (substitute* "mkfiles/mkfile-Linux-386"
+                                     (("cc -") ; Don't match yacc.
+                                      "gcc -"))
+                                   (substitute* "mkfiles/mkfile-Linux-arm"
+                                     (("arm-gcc") "gcc"))
+                                   ;; Make build reproducible by
+                                   ;; ensuring timestamps embedded into
+                                   ;; binaries are set to 0.
+                                   (substitute* "emu/Linux/mkfile"
+                                     (("^KERNDATE=.*$")
+                                      "KERNDATE=0\n"))
+                                   #t))
+             (configure . ,(lambda _
+                             (substitute* "mkconfig"
+                               (("ROOT=/usr/inferno")
+                                (string-append "ROOT=" root))
+                               (("SYSHOST=Plan9")
+                                "SYSHOST=Linux")
+                               (("OBJTYPE=\\$objtype")
+                                (string-append "OBJTYPE=" objtype)))
+                             #t))
+             ;; Build mk.
+             ;; TODO: Use mk from 9base instead.
+             (makemk . ,(lambda _
+                          (invoke "./makemk.sh")))
+             (build . ,(lambda _
+                         ;; Add mk's location to PATH.
+                         (setenv "PATH"
+                                 (string-append
+                                  root/bindir ":"
+                                  (getenv "PATH")))
+                         ;; Build emu and .dis files using mk.
+                         (invoke "mk" "-s" "nuke" "mkdirs" "install")))
+             (install . ,(lambda _
+                           ;; Install infwm script.
+                           (mkdir-p bindir)
+                           (with-output-to-file infwm-script
+                             (lambda ()
+                               (display
+                                (string-append
+                                 "#!" bash "/bin/sh\n"
+                                 "exec " root/bindir "/emu $* "
+                                 "/dis/sh.dis -c \""
+                                 ;; Bind the host's /tmp to Inferno's
+                                 ;; /tmp to make it writable.
+                                 "bind -bc '#U*/tmp' /tmp; "
+                                 ;; Bind the host's /home to Inferno's
+                                 ;; /usr.
+                                 "bind '#U*/home' /usr; "
+                                 ;; Launch the window manager and login
+                                 ;; as $USER.
+                                 "wm/wm wm/logon -u $USER"
+                                 "\"\n"))))
+                           (chmod infwm-script #o755)
+                           ;; Install a symlink to the Inferno emulator.
+                           (symlink (string-append root/bindir "/emu")
+                                    (string-append bindir "/emu"))
+                           ;; Install a symlink to the Limbo compiler.
+                           (symlink (string-append root/bindir "/limbo")
+                                    (string-append bindir "/limbo"))
+                           #t))))))
+      (home-page "http://www.inferno-os.org")
+      (synopsis
+       "Compact operating system for building cross-platform distributed systems")
+      (description
+       ;; Except for the last sentence this is taken verbatim from the
+       ;; intro(1) man page (man/1/0intro in the source tree).
+       "Inferno is a virtualised operating system that can run natively across
+a wide range of processor architectures or hosted on a wide range of
+operating systems.  The principal components of the system are:
+@itemize
+@item The Inferno kernel which can run both native and hosted on a
+range of platforms and which presents the same interface to programs
+in both cases.
+@item The Dis virtual machine.
+@item Styx - the tiny broad-spectrum file service protocol.
+@item Limbo - a new simple, modular, concurrent programming language.
+@item Tk and Prefab - graphical user interface (GUI) primitives
+without a lot of goo.
+@item The portable cross-development suites that allow any native
+Inferno platform to be cross-compiled on any hosted system.
+@end itemize
+This package provides hosted Inferno.\n")
+      (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux" "aarch64-linux"))
+      (license (list
+                ;; According to NOTICE the combined work is effectively
+                ;; GPLv2+.
+                license:gpl2+
+                license:lgpl2.0+
+                license:expat
+                ;; XXX: Contrary to NOTICE, which claims that the
+                ;; licenses of individual components "are all compatible
+                ;; with the GPLv2", the Lucent Public License 1.02 is
+                ;; not compatible with the GPL.
+                (license:non-copyleft
+                 "https://www.gnu.org/licenses/license-list.html#lucent102")
+                license:freetype)))))
-- 
2.19.0


Information forwarded to guix-patches <at> gnu.org:
bug#33080; Package guix-patches. (Sat, 10 Nov 2018 18:46:02 GMT) Full text and rfc822 format available.

Message #8 received at 33080 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Diego Nicola Barbato <dnbarbato <at> posteo.de>
Cc: 33080 <at> debbugs.gnu.org
Subject: Re: [bug#33080] [PATCH] gnu: Add inferno.
Date: Sat, 10 Nov 2018 19:05:32 +0100
Hi Diego,

Sorry for the late reply.

Diego Nicola Barbato <dnbarbato <at> posteo.de> skribis:

> This patch adds inferno as discussed here:
> https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00031.html

In that thread we discussed the font issue, and I’m unsure if it was
resolved:

  <https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00265.html>

Is everything “known good” with this version of the patch?

> From c97b28e97a210cc31e34c08bc1abdc8bd74114fa Mon Sep 17 00:00:00 2001
> From: Diego Nicola Barbato <dnbarbato <at> posteo.de>
> Date: Wed, 17 Oct 2018 23:07:40 +0200
> Subject: [PATCH] gnu: Add inferno.
>
> * gnu/packages/inferno.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Register it.

Overall it LGTM!  Minor suggestions here:

> +         #:phases
> +         (let* ((bash (assoc-ref %build-inputs "bash"))
> +                (objtype ,@(match (%current-system)
> +                             ((or "armhf-linux" "aarch64-linux")
> +                              `("arm"))
> +                             (_
> +                              `("386"))))
> +                (out (assoc-ref %outputs "out"))
> +                (root (string-append out "/share/inferno"))
> +                (root/bindir (string-append root "/Linux/"
> +                                            objtype "/bin"))
> +                (bindir (string-append out "/bin"))
> +                (infwm-script (string-append bindir "/infwm")))
> +           `(,(assoc 'set-paths %standard-phases)
> +             (unpack . ,(lambda* (#:key source #:allow-other-keys)

For consistency, I would very much prefer if we could use
‘modify-phases’ here, which is what is used throughout gnu/packages.
If that’s fine with you, could you update the patch?

> +      (synopsis
> +       "Compact operating system for building cross-platform distributed systems")

Maybe shorten to “Operating system for building distributed systems”?

Thanks!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#33080; Package guix-patches. (Thu, 15 Nov 2018 11:23:01 GMT) Full text and rfc822 format available.

Message #11 received at 33080 <at> debbugs.gnu.org (full text, mbox):

From: Diego Nicola Barbato <dnbarbato <at> posteo.de>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 33080 <at> debbugs.gnu.org
Subject: Re: [bug#33080] [PATCH] gnu: Add inferno.
Date: Thu, 15 Nov 2018 12:22:43 +0100
Hello Ludo,

ludo <at> gnu.org (Ludovic Courtès) writes:

> Hi Diego,
>
> Sorry for the late reply.
>
> Diego Nicola Barbato <dnbarbato <at> posteo.de> skribis:
>
>> This patch adds inferno as discussed here:
>> https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00031.html
>
> In that thread we discussed the font issue, and I’m unsure if it was
> resolved:
>
>   <https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00265.html>
>
> Is everything “known good” with this version of the patch?

Unfortunately it is not.  As you suggested, I wrote to the
GNU/Linux-libre mailing list asking for advice on the font issues [1]
and the licensing issues [2].  The only reply I got so far is not very
encouraging.  Maybe it is best to put this on hold until I receive more
information?

>> From c97b28e97a210cc31e34c08bc1abdc8bd74114fa Mon Sep 17 00:00:00 2001
>> From: Diego Nicola Barbato <dnbarbato <at> posteo.de>
>> Date: Wed, 17 Oct 2018 23:07:40 +0200
>> Subject: [PATCH] gnu: Add inferno.
>>
>> * gnu/packages/inferno.scm: New file.
>> * gnu/local.mk (GNU_SYSTEM_MODULES): Register it.
>
> Overall it LGTM!  Minor suggestions here:
>
>> +         #:phases
>> +         (let* ((bash (assoc-ref %build-inputs "bash"))
>> +                (objtype ,@(match (%current-system)
>> +                             ((or "armhf-linux" "aarch64-linux")
>> +                              `("arm"))
>> +                             (_
>> +                              `("386"))))
>> +                (out (assoc-ref %outputs "out"))
>> +                (root (string-append out "/share/inferno"))
>> +                (root/bindir (string-append root "/Linux/"
>> +                                            objtype "/bin"))
>> +                (bindir (string-append out "/bin"))
>> +                (infwm-script (string-append bindir "/infwm")))
>> +           `(,(assoc 'set-paths %standard-phases)
>> +             (unpack . ,(lambda* (#:key source #:allow-other-keys)
>
> For consistency, I would very much prefer if we could use
> ‘modify-phases’ here, which is what is used throughout gnu/packages.
> If that’s fine with you, could you update the patch?
>
>> +      (synopsis
>> +       "Compact operating system for building cross-platform distributed systems")
>
> Maybe shorten to “Operating system for building distributed systems”?

If it is OK I will wait for the font and licensing issues to be resolved
before I update the patch, since, as of now, it looks to me like Inferno
can not be included in an FSDG distro. 

Thanks for the feedback and I am sorry this turned out to be more
complicated than I anticipated.

Diego


[1]: https://lists.nongnu.org/archive/html/gnu-linux-libre/2018-11/msg00000.html
[2]: https://lists.nongnu.org/archive/html/gnu-linux-libre/2018-11/msg00001.html




Information forwarded to guix-patches <at> gnu.org:
bug#33080; Package guix-patches. (Thu, 15 Nov 2018 11:52:01 GMT) Full text and rfc822 format available.

Message #14 received at 33080 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Diego Nicola Barbato <dnbarbato <at> posteo.de>
Cc: 33080 <at> debbugs.gnu.org
Subject: Re: [bug#33080] [PATCH] gnu: Add inferno.
Date: Thu, 15 Nov 2018 12:51:24 +0100
Hi Diego,

Diego Nicola Barbato <dnbarbato <at> posteo.de> skribis:

> ludo <at> gnu.org (Ludovic Courtès) writes:
>
>> Hi Diego,
>>
>> Sorry for the late reply.
>>
>> Diego Nicola Barbato <dnbarbato <at> posteo.de> skribis:
>>
>>> This patch adds inferno as discussed here:
>>> https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00031.html
>>
>> In that thread we discussed the font issue, and I’m unsure if it was
>> resolved:
>>
>>   <https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00265.html>
>>
>> Is everything “known good” with this version of the patch?
>
> Unfortunately it is not.  As you suggested, I wrote to the
> GNU/Linux-libre mailing list asking for advice on the font issues [1]
> and the licensing issues [2].  The only reply I got so far is not very
> encouraging.  Maybe it is best to put this on hold until I receive more
> information?

Sure, thanks for asking for advice on gnu-linux-libre.

Ludo’.




Reply sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
You have taken responsibility. (Tue, 13 Jul 2021 12:52:02 GMT) Full text and rfc822 format available.

Notification sent to Diego Nicola Barbato <dnbarbato <at> posteo.de>:
bug acknowledged by developer. (Tue, 13 Jul 2021 12:52:02 GMT) Full text and rfc822 format available.

Message #19 received at 33080-done <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Diego Nicola Barbato <dnbarbato <at> posteo.de>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 33080-done <at> debbugs.gnu.org
Subject: Re: bug#33080: [PATCH] gnu: Add inferno.
Date: Tue, 13 Jul 2021 08:51:35 -0400
Hello Diego,

Diego Nicola Barbato <dnbarbato <at> posteo.de> writes:

> Hello Ludo,
>
> ludo <at> gnu.org (Ludovic Courtès) writes:
>
>> Hi Diego,
>>
>> Sorry for the late reply.
>>
>> Diego Nicola Barbato <dnbarbato <at> posteo.de> skribis:
>>
>>> This patch adds inferno as discussed here:
>>> https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00031.html
>>
>> In that thread we discussed the font issue, and I’m unsure if it was
>> resolved:
>>
>>   <https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00265.html>
>>
>> Is everything “known good” with this version of the patch?
>
> Unfortunately it is not.  As you suggested, I wrote to the
> GNU/Linux-libre mailing list asking for advice on the font issues [1]
> and the licensing issues [2].  The only reply I got so far is not very
> encouraging.  Maybe it is best to put this on hold until I receive more
> information?
>

[...]

> If it is OK I will wait for the font and licensing issues to be resolved
> before I update the patch, since, as of now, it looks to me like Inferno
> can not be included in an FSDG distro. 

Sadly, it seems a blocker that there are no sources to rebuild the fonts
from.

We'll have to do without them it seems.

Closing.

Maxim




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 11 Aug 2021 11:24:12 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 251 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.