From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48340) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gCtKR-0003In-PX for guix-patches@gnu.org; Wed, 17 Oct 2018 17:26:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gCtKN-0002He-3P for guix-patches@gnu.org; Wed, 17 Oct 2018 17:26:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:51617) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gCtKM-0002HQ-O3 for guix-patches@gnu.org; Wed, 17 Oct 2018 17:26:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gCtKM-0008JK-EB for guix-patches@gnu.org; Wed, 17 Oct 2018 17:26:02 -0400 Subject: [bug#33080] [PATCH] gnu: Add inferno. Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48094) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gCtJg-0003Fy-41 for guix-patches@gnu.org; Wed, 17 Oct 2018 17:25:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gCtJb-0001gU-Jv for guix-patches@gnu.org; Wed, 17 Oct 2018 17:25:20 -0400 Received: from mout01.posteo.de ([185.67.36.65]:45070) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gCtJb-0001dq-3Q for guix-patches@gnu.org; Wed, 17 Oct 2018 17:25:15 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id EF935210E6 for ; Wed, 17 Oct 2018 23:25:12 +0200 (CEST) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 42b4vr1chlz6tm5 for ; Wed, 17 Oct 2018 23:25:12 +0200 (CEST) From: Diego Nicola Barbato Date: Wed, 17 Oct 2018 23:25:11 +0200 Message-ID: <87bm7sjmfc.fsf@GlaDOS.home> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 33080@debbugs.gnu.org --=-=-= Content-Type: text/plain Hello Guix, This patch adds inferno as discussed here: https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00031.html --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-gnu-Add-inferno.patch Content-Transfer-Encoding: quoted-printable >From c97b28e97a210cc31e34c08bc1abdc8bd74114fa Mon Sep 17 00:00:00 2001 From: Diego Nicola Barbato 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 =3D \ %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 =C2=A9 2018 Diego Nicola Barbato +;;; +;;; 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 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=3D= 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 "/bi= n/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=3D.*$") + "KERNDATE=3D0\n")) + #t)) + (configure . ,(lambda _ + (substitute* "mkconfig" + (("ROOT=3D/usr/inferno") + (string-append "ROOT=3D" root)) + (("SYSHOST=3DPlan9") + "SYSHOST=3DLinux") + (("OBJTYPE=3D\\$objtype") + (string-append "OBJTYPE=3D" 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 s= ystems") + (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 ac= ross +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" "aarc= h64-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))))) --=20 2.19.0 --=-=-=--