GNU bug report logs - #59997
[PATCH] gnu: add minimacy

Previous Next

Package: guix-patches;

Reported by: Konrad Hinsen <konrad.hinsen <at> fastmail.net>

Date: Mon, 12 Dec 2022 10:10:02 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 59997 AT debbugs.gnu.org.

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#59997; Package guix-patches. (Mon, 12 Dec 2022 10:10:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Konrad Hinsen <konrad.hinsen <at> fastmail.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 12 Dec 2022 10:10:02 GMT) Full text and rfc822 format available.

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

From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: add minimacy
Date: Mon, 12 Dec 2022 11:09:35 +0100
* gnu/packages/minimacy.scm: New module.
---
 gnu/packages/minimacy.scm           | 90 +++++++++++++++++++++++++++++
 gnu/packages/patches/minimacy.patch | 34 +++++++++++
 2 files changed, 124 insertions(+)
 create mode 100644 gnu/packages/minimacy.scm
 create mode 100644 gnu/packages/patches/minimacy.patch

diff --git a/gnu/packages/minimacy.scm b/gnu/packages/minimacy.scm
new file mode 100644
index 0000000000..549ca8f14f
--- /dev/null
+++ b/gnu/packages/minimacy.scm
@@ -0,0 +1,90 @@
+;;; Copyright © 2022 Konrad Hinsen <konrad.hinsen <at> fastmail.net>
+;;;
+;;; 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 minimacy)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages linux)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public minimacy
+  (package
+    (name "minimacy")
+    (version "0.6.2")
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ambermind/minimacy/")
+                   (commit "0.6.2")))
+             (file-name (git-file-name name version))
+             (sha256
+              (base32
+               "1x9i1spf79lq3kxms55dx7lf8pl84cyblq313sjyfpr9l187ailb"))
+             (patches (search-patches "minimacy.patch"))))
+    (build-system gnu-build-system)
+    (inputs (list libx11 libxext alsa-lib mesa glu))
+    (outputs '("out"     ; the core
+               "X11"     ; for GUI programs, with X11 and ALSA
+               "X11GL")) ; for GUI programs, with X11, OpenGL, and ALSA
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-path
+                    (lambda _
+                      (substitute* "src/hw.c"
+                                   (("minimacy-in-gnu-store")
+                                    (assoc-ref %outputs "out")))))
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (chdir "unix")
+             (invoke "make" "nox")
+             (for-each delete-file
+                       (find-files "../obj" "\\.o$"))
+             (invoke "make" "x11")
+             (for-each delete-file
+                       (find-files "../obj" "\\.o$"))
+             (invoke "make" "x11gl")
+             (chdir "..")))
+         (replace 'install
+           (lambda _
+             (let ((output (assoc-ref %outputs "out")))
+               (install-file "bin/minimacy" (string-append output "/bin"))
+               (mkdir-p (string-append output "/rom"))
+               (mkdir-p (string-append output "/system"))
+               (copy-recursively "rom" (string-append output "/rom"))
+               (copy-recursively "system" (string-append output "/system")))
+             (let ((output (assoc-ref %outputs "X11")))
+               (install-file "bin/minimacyX11" (string-append output "/bin")))
+             (let ((output (assoc-ref %outputs "X11GL")))
+               (install-file "bin/minimacyX11GL" (string-append output "/bin")))))
+         (delete 'check))))
+    (synopsis "Minimalist computing system")
+    (description
+     "Minimacy is an open-source minimalist computing technology.
+It consists of a programming language (compiler plus virtual machine)
+and a library, written such that the whole system can be fully
+understood by a single person.  An optional extension to the virtual
+machine adds X11 and ALSA for user interfaces, another extension
+adds OpenGL support.")
+    (home-page "https://minimacy.net/")
+    (license license:gpl2)))
diff --git a/gnu/packages/patches/minimacy.patch b/gnu/packages/patches/minimacy.patch
new file mode 100644
index 0000000000..eca49431c3
--- /dev/null
+++ b/gnu/packages/patches/minimacy.patch
@@ -0,0 +1,34 @@
+The Minimacy distribution is set up for being compiled and used from the
+user's home directory. Running Minimacy as a Guix package requires adding
+its store path as a search path for the virtual machine. That is done in
+two steps: this patch, and a substitution of the actual store path in the
+build process.
+
+--- minimacy/src/hw.c	2022-12-05 18:51:13.000000000 +0100
++++ minimacy/src/hw.c	2022-12-09 15:55:47.122793826 +0100
+@@ -90,6 +90,13 @@
+ #if defined ON_UNIX || defined ON_MACOS_CMDLINE || defined ON_RASPBERRY64
+ void systemExecDir(char* path, int len)
+ {
++	char* p = "minimacy-in-gnu-store";
++	if (strlen(p) < len - 2)
++	{
++		strcpy(path, p);
++		systemCleanDir(path);
++		return;
++	}
+ 	path[0] = 0;
+ }
+ #endif
+@@ -583,8 +590,9 @@
+ 	PRINTF(th, LOG_USER, "1- command line argument: -dir path\n");
+ 	PRINTF(th, LOG_USER, "2- environment variable MINIMACY\n");
+ 	PRINTF(th, LOG_USER, "3- grand parent of minimacy.exe (windows only)\n");
+-	PRINTF(th, LOG_USER, "4- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
+-	PRINTF(th, LOG_USER, "5- Working directory\n\n");
++	PRINTF(th, LOG_USER, "4- the minimacy package under /gnu/store (Guix only)\n");
++	PRINTF(th, LOG_USER, "5- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
++	PRINTF(th, LOG_USER, "6- Working directory\n\n");
+ }
+ int hwInit(Thread* th, int argc, char** argv, int standalone)
+ {
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Fri, 27 Jan 2023 18:50:02 GMT) Full text and rfc822 format available.

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

From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: 59997 <at> debbugs.gnu.org
Cc: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
Subject: [PATCH v2] gnu: Add minimacy.
Date: Fri, 27 Jan 2023 19:49:25 +0100
From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>

* gnu/packages/minimacy.scm: New file.
* gnu/packages/patches/minimacy.patch: New patch.
* gnu/local.mk: Add them.
---
 gnu/local.mk                        |  2 +
 gnu/packages/minimacy.scm           | 97 +++++++++++++++++++++++++++++
 gnu/packages/patches/minimacy.patch | 34 ++++++++++
 3 files changed, 133 insertions(+)
 create mode 100644 gnu/packages/minimacy.scm
 create mode 100644 gnu/packages/patches/minimacy.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 29237b1138..212c95c98b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -424,6 +424,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/messaging.scm			\
   %D%/packages/minetest.scm			\
   %D%/packages/mingw.scm			\
+  %D%/packages/minimacy.scm			\
   %D%/packages/microcom.scm			\
   %D%/packages/moe.scm				\
   %D%/packages/motti.scm			\
@@ -1540,6 +1541,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/minimacy.patch                           \
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/minimacy.scm b/gnu/packages/minimacy.scm
new file mode 100644
index 0000000000..6d8e6a3f75
--- /dev/null
+++ b/gnu/packages/minimacy.scm
@@ -0,0 +1,97 @@
+;;; Copyright © 2022 Konrad Hinsen <konrad.hinsen <at> fastmail.net>
+;;;
+;;; 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 minimacy)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages linux)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public minimacy
+  (package
+    (name "minimacy")
+    (version "0.6.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ambermind/minimacy/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1x9i1spf79lq3kxms55dx7lf8pl84cyblq313sjyfpr9l187ailb"))
+              (patches (search-patches "minimacy.patch"))
+              (modules '((guix build utils)))
+              (snippet '(delete-file-recursively "windows"))))
+    (build-system gnu-build-system)
+    (inputs (list libx11 libxext alsa-lib mesa glu))
+    (outputs '("out"             ;core
+               "X11"             ;for GUI programs, with X11 and ALSA
+               "X11GL"))         ;for GUI programs, with X11, OpenGL, and ALSA
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "src/hw.c"
+               (("minimacy-in-gnu-store")
+                (assoc-ref outputs "out")))))
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (chdir "unix")
+             (invoke "make" "nox")
+             (for-each delete-file
+                       (find-files "../obj" "\\.o$"))
+             (invoke "make" "x11")
+             (for-each delete-file
+                       (find-files "../obj" "\\.o$"))
+             (invoke "make" "x11gl")
+             (chdir "..")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (x11 (assoc-ref outputs "X11"))
+                   (x11gl (assoc-ref outputs "X11GL")))
+               (mkdir-p (string-append out "/rom"))
+               (mkdir-p (string-append out "/system"))
+               (copy-recursively "rom"
+                                 (string-append out "/rom"))
+               (copy-recursively "system"
+                                 (string-append out "/system"))
+               (install-file "bin/minimacy"
+                             (string-append out "/bin"))
+               (install-file "bin/minimacyX11"
+                             (string-append x11 "/bin"))
+               (install-file "bin/minimacyX11GL"
+                             (string-append x11gl "/bin")))))
+         (delete 'check))))
+    (synopsis "Minimalist computing system")
+    (description
+     "Minimacy is an open-source minimalist computing technology.
+It consists of a programming language (compiler plus virtual machine)
+and a library, written such that the whole system can be fully
+understood by a single person.  An optional extension to the virtual
+machine adds X11 and ALSA for user interfaces, another extension
+adds OpenGL support.")
+    (home-page "https://minimacy.net/")
+    (license license:gpl2)))
diff --git a/gnu/packages/patches/minimacy.patch b/gnu/packages/patches/minimacy.patch
new file mode 100644
index 0000000000..eca49431c3
--- /dev/null
+++ b/gnu/packages/patches/minimacy.patch
@@ -0,0 +1,34 @@
+The Minimacy distribution is set up for being compiled and used from the
+user's home directory. Running Minimacy as a Guix package requires adding
+its store path as a search path for the virtual machine. That is done in
+two steps: this patch, and a substitution of the actual store path in the
+build process.
+
+--- minimacy/src/hw.c	2022-12-05 18:51:13.000000000 +0100
++++ minimacy/src/hw.c	2022-12-09 15:55:47.122793826 +0100
+@@ -90,6 +90,13 @@
+ #if defined ON_UNIX || defined ON_MACOS_CMDLINE || defined ON_RASPBERRY64
+ void systemExecDir(char* path, int len)
+ {
++	char* p = "minimacy-in-gnu-store";
++	if (strlen(p) < len - 2)
++	{
++		strcpy(path, p);
++		systemCleanDir(path);
++		return;
++	}
+ 	path[0] = 0;
+ }
+ #endif
+@@ -583,8 +590,9 @@
+ 	PRINTF(th, LOG_USER, "1- command line argument: -dir path\n");
+ 	PRINTF(th, LOG_USER, "2- environment variable MINIMACY\n");
+ 	PRINTF(th, LOG_USER, "3- grand parent of minimacy.exe (windows only)\n");
+-	PRINTF(th, LOG_USER, "4- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
+-	PRINTF(th, LOG_USER, "5- Working directory\n\n");
++	PRINTF(th, LOG_USER, "4- the minimacy package under /gnu/store (Guix only)\n");
++	PRINTF(th, LOG_USER, "5- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
++	PRINTF(th, LOG_USER, "6- Working directory\n\n");
+ }
+ int hwInit(Thread* th, int argc, char** argv, int standalone)
+ {

base-commit: 8e1cca32b938cef0812ce042c6c2e8bccb326ec7
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Fri, 27 Jan 2023 18:57:02 GMT) Full text and rfc822 format available.

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

From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: Konrad Hinsen <konrad.hinsen <at> fastmail.net>, 59997 <at> debbugs.gnu.org
Subject: Re: [bug#59997] [PATCH] gnu: add minimacy
Date: Fri, 27 Jan 2023 19:50:53 +0100
Hi Konrad,

I have sent a V2 with some minor tweaks.

Cheers,
simon




Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Fri, 27 Jan 2023 19:21:02 GMT) Full text and rfc822 format available.

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

From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: 59997 <at> debbugs.gnu.org
Cc: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
Subject: [PATCH v3] gnu: Add minimacy.
Date: Fri, 27 Jan 2023 20:20:31 +0100
From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>

* gnu/packages/minimacy.scm: New file.
* gnu/packages/patches/minimacy.patch: New patch.
* gnu/local.mk: Add them.
---
 gnu/local.mk                        |   2 +
 gnu/packages/minimacy.scm           | 102 ++++++++++++++++++++++++++++
 gnu/packages/patches/minimacy.patch |  34 ++++++++++
 3 files changed, 138 insertions(+)
 create mode 100644 gnu/packages/minimacy.scm
 create mode 100644 gnu/packages/patches/minimacy.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 29237b1138..212c95c98b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -424,6 +424,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/messaging.scm			\
   %D%/packages/minetest.scm			\
   %D%/packages/mingw.scm			\
+  %D%/packages/minimacy.scm			\
   %D%/packages/microcom.scm			\
   %D%/packages/moe.scm				\
   %D%/packages/motti.scm			\
@@ -1540,6 +1541,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/minimacy.patch                           \
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/minimacy.scm b/gnu/packages/minimacy.scm
new file mode 100644
index 0000000000..6cfba75879
--- /dev/null
+++ b/gnu/packages/minimacy.scm
@@ -0,0 +1,102 @@
+;;; Copyright © 2022 Konrad Hinsen <konrad.hinsen <at> fastmail.net>
+;;;
+;;; 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 minimacy)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages linux)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public minimacy
+  (package
+    (name "minimacy")
+    (version "0.6.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ambermind/minimacy/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1x9i1spf79lq3kxms55dx7lf8pl84cyblq313sjyfpr9l187ailb"))
+              (patches (search-patches "minimacy.patch"))
+              (modules '((guix build utils)))
+              (snippet '(delete-file-recursively "windows"))))
+    (build-system gnu-build-system)
+    (inputs (list libx11 libxext alsa-lib mesa glu))
+    (outputs '("out"             ;core
+               "X11"             ;for GUI programs, with X11 and ALSA
+               "X11GL"))         ;for GUI programs, with X11, OpenGL, and ALSA
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-path
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* "src/hw.c"
+                (("minimacy-in-gnu-store")
+                 (assoc-ref outputs "out")))))
+          (delete 'configure)
+          (replace 'build
+            (lambda _
+              (chdir "unix")
+              (invoke "make" "nox")
+              (for-each delete-file
+                        (find-files "../obj" "\\.o$"))
+              (invoke "make" "x11")
+              (for-each delete-file
+                        (find-files "../obj" "\\.o$"))
+              (invoke "make" "x11gl")
+              (chdir "..")))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out"))
+                    (x11 (assoc-ref outputs "X11"))
+                    (x11gl (assoc-ref outputs "X11GL")))
+                (mkdir-p (string-append out "/rom"))
+                (mkdir-p (string-append out "/system"))
+                (copy-recursively "rom"
+                                  (string-append out "/rom"))
+                (copy-recursively "system"
+                                  (string-append out "/system"))
+                (install-file "bin/minimacy"
+                              (string-append out "/bin"))
+                (install-file "bin/minimacyX11"
+                              (string-append x11 "/bin"))
+                (install-file "bin/minimacyX11GL"
+                              (string-append x11gl "/bin")))))
+          (delete 'check))))
+    (synopsis "Minimalist computing system")
+    (description
+     "Minimacy is an open-source minimalist computing technology.
+It consists of a programming language (compiler plus virtual machine)
+and a library, written such that the whole system can be fully
+understood by a single person.  An optional extension to the virtual
+machine adds X11 and ALSA for user interfaces, another extension
+adds OpenGL support.")
+    (home-page "https://minimacy.net/")
+    (license license:gpl2)))
diff --git a/gnu/packages/patches/minimacy.patch b/gnu/packages/patches/minimacy.patch
new file mode 100644
index 0000000000..eca49431c3
--- /dev/null
+++ b/gnu/packages/patches/minimacy.patch
@@ -0,0 +1,34 @@
+The Minimacy distribution is set up for being compiled and used from the
+user's home directory. Running Minimacy as a Guix package requires adding
+its store path as a search path for the virtual machine. That is done in
+two steps: this patch, and a substitution of the actual store path in the
+build process.
+
+--- minimacy/src/hw.c	2022-12-05 18:51:13.000000000 +0100
++++ minimacy/src/hw.c	2022-12-09 15:55:47.122793826 +0100
+@@ -90,6 +90,13 @@
+ #if defined ON_UNIX || defined ON_MACOS_CMDLINE || defined ON_RASPBERRY64
+ void systemExecDir(char* path, int len)
+ {
++	char* p = "minimacy-in-gnu-store";
++	if (strlen(p) < len - 2)
++	{
++		strcpy(path, p);
++		systemCleanDir(path);
++		return;
++	}
+ 	path[0] = 0;
+ }
+ #endif
+@@ -583,8 +590,9 @@
+ 	PRINTF(th, LOG_USER, "1- command line argument: -dir path\n");
+ 	PRINTF(th, LOG_USER, "2- environment variable MINIMACY\n");
+ 	PRINTF(th, LOG_USER, "3- grand parent of minimacy.exe (windows only)\n");
+-	PRINTF(th, LOG_USER, "4- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
+-	PRINTF(th, LOG_USER, "5- Working directory\n\n");
++	PRINTF(th, LOG_USER, "4- the minimacy package under /gnu/store (Guix only)\n");
++	PRINTF(th, LOG_USER, "5- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
++	PRINTF(th, LOG_USER, "6- Working directory\n\n");
+ }
+ int hwInit(Thread* th, int argc, char** argv, int standalone)
+ {

base-commit: 8e1cca32b938cef0812ce042c6c2e8bccb326ec7
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Sat, 28 Jan 2023 15:57:01 GMT) Full text and rfc822 format available.

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

From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
To: Simon Tournier <zimon.toutoune <at> gmail.com>, 59997 <at> debbugs.gnu.org
Subject: Re: [bug#59997] [PATCH] gnu: add minimacy
Date: Sat, 28 Jan 2023 16:56:42 +0100
Simon Tournier <zimon.toutoune <at> gmail.com> writes:

> I have sent a V2 with some minor tweaks.

And a V3. Looks good to me - and I learned about two more files in the
Guix infrastructure.

Konrad.




Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Fri, 24 Feb 2023 21:33:01 GMT) Full text and rfc822 format available.

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

From: Ludovic Courtès <ludo <at> gnu.org>
To: Simon Tournier <zimon.toutoune <at> gmail.com>
Cc: 59997 <at> debbugs.gnu.org, Konrad Hinsen <konrad.hinsen <at> fastmail.net>
Subject: Re: bug#59997: [PATCH] gnu: add minimacy
Date: Fri, 24 Feb 2023 22:32:28 +0100
HI,

Simon Tournier <zimon.toutoune <at> gmail.com> skribis:

> From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
>
> * gnu/packages/minimacy.scm: New file.
> * gnu/packages/patches/minimacy.patch: New patch.
> * gnu/local.mk: Add them.

[...]

> diff --git a/gnu/packages/minimacy.scm b/gnu/packages/minimacy.scm
> new file mode 100644
> index 0000000000..6cfba75879
> --- /dev/null
> +++ b/gnu/packages/minimacy.scm
> @@ -0,0 +1,102 @@
> +;;; Copyright © 2022 Konrad Hinsen <konrad.hinsen <at> fastmail.net>

It misses the very first line.  :-)

> +    (outputs '("out"             ;core
> +               "X11"             ;for GUI programs, with X11 and ALSA
> +               "X11GL"))         ;for GUI programs, with X11, OpenGL, and ALSA

Two things: output names are lowercase by convention, and the
(unofficial) convention for the GUI output is “gui”.

Does it make sense to separate the two GUI outputs?  It seems better to
me to keep just one “gui” output with both OpenGL and non-OpenGL
thingies.  WDYT?

> +          (delete 'check))))

Rather #:tests? #f with a comment explaining why.

> +    (synopsis "Minimalist computing system")
> +    (description
> +     "Minimacy is an open-source minimalist computing technology.

s/an open-source/a/

> +It consists of a programming language (compiler plus virtual machine)
> +and a library, written such that the whole system can be fully
> +understood by a single person.  An optional extension to the virtual
> +machine adds X11 and ALSA for user interfaces, another extension
> +adds OpenGL support.")

Could you send one last revision?

Thanks!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Sun, 26 Feb 2023 16:09:01 GMT) Full text and rfc822 format available.

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

From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
To: Ludovic Courtès <ludo <at> gnu.org>, Simon Tournier
 <zimon.toutoune <at> gmail.com>
Cc: 59997 <at> debbugs.gnu.org
Subject: Re: bug#59997: [PATCH] gnu: add minimacy
Date: Sun, 26 Feb 2023 17:08:15 +0100
Hi Ludo,

Thanks for looking into this!

> It misses the very first line.  :-)

Oops :-)

> Two things: output names are lowercase by convention, and the
> (unofficial) convention for the GUI output is “gui”.

OK. The three outputs are now "out", "gui" and "opengl".

> Does it make sense to separate the two GUI outputs?  It seems better to
> me to keep just one “gui” output with both OpenGL and non-OpenGL
> thingies.  WDYT?

A good reason for separating them is output size (with dependencies):

out:     72.7 MiB
gui:     82.1 MiB
opengl: 416.8 MiB

For software aiming at minimalism, that looks important enough to me. In
particular when using "guix pack" to deploy on small machines.

> Rather #:tests? #f with a comment explaining why.

OK.

> Could you send one last revision?

Coming...

Cheers,
  Konrad.




Information forwarded to guix-patches <at> gnu.org:
bug#59997; Package guix-patches. (Sun, 26 Feb 2023 16:14:01 GMT) Full text and rfc822 format available.

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

From: Konrad Hinsen <konrad.hinsen <at> fastmail.net>
To: 59997 <at> debbugs.gnu.org
Subject: [PATCH v4] gnu: add minimacy
Date: Sun, 26 Feb 2023 17:13:08 +0100
* gnu/packages/minimacy.scm: New file.
* gnu/packages/patches/minimacy.patch: New patch.
* gnu/local.mk: Add them.
---
 gnu/local.mk                        |   2 +
 gnu/packages/minimacy.scm           | 103 ++++++++++++++++++++++++++++
 gnu/packages/patches/minimacy.patch |  34 +++++++++
 3 files changed, 139 insertions(+)
 create mode 100644 gnu/packages/minimacy.scm
 create mode 100644 gnu/packages/patches/minimacy.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 4ccf015316..c72f14b685 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -423,6 +423,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/messaging.scm			\
   %D%/packages/minetest.scm			\
   %D%/packages/mingw.scm			\
+  %D%/packages/minimacy.scm			\
   %D%/packages/microcom.scm			\
   %D%/packages/moe.scm				\
   %D%/packages/mold.scm				\
@@ -1548,6 +1549,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/minimacy.patch                           \
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/minimacy.scm b/gnu/packages/minimacy.scm
new file mode 100644
index 0000000000..2a04d7c117
--- /dev/null
+++ b/gnu/packages/minimacy.scm
@@ -0,0 +1,103 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Konrad Hinsen <konrad.hinsen <at> fastmail.net>
+;;;
+;;; 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 minimacy)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages linux)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public minimacy
+  (package
+    (name "minimacy")
+    (version "0.6.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ambermind/minimacy/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1x9i1spf79lq3kxms55dx7lf8pl84cyblq313sjyfpr9l187ailb"))
+              (patches (search-patches "minimacy.patch"))
+              (modules '((guix build utils)))
+              (snippet '(delete-file-recursively "windows"))))
+    (build-system gnu-build-system)
+    (inputs (list libx11 libxext alsa-lib mesa glu))
+    (outputs '("out"        ; core
+               "gui"        ; for GUI programs, with X11 and ALSA
+               "opengl"))   ; for GUI programs, with X11, OpenGL, and ALSA
+    (arguments
+     (list
+      #:tests? #f           ; no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-path
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* "src/hw.c"
+                (("minimacy-in-gnu-store")
+                 (assoc-ref outputs "out")))))
+          (delete 'configure)
+          (replace 'build
+            (lambda _
+              (chdir "unix")
+              (invoke "make" "nox")
+              (for-each delete-file
+                        (find-files "../obj" "\\.o$"))
+              (invoke "make" "x11")
+              (for-each delete-file
+                        (find-files "../obj" "\\.o$"))
+              (invoke "make" "x11gl")
+              (chdir "..")))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out"))
+                    (gui (assoc-ref outputs "gui"))
+                    (opengl (assoc-ref outputs "opengl")))
+                (mkdir-p (string-append out "/rom"))
+                (mkdir-p (string-append out "/system"))
+                (copy-recursively "rom"
+                                  (string-append out "/rom"))
+                (copy-recursively "system"
+                                  (string-append out "/system"))
+                (install-file "bin/minimacy"
+                              (string-append out "/bin"))
+                (install-file "bin/minimacyX11"
+                              (string-append gui "/bin"))
+                (install-file "bin/minimacyX11GL"
+                              (string-append opengl "/bin"))))))))
+    (synopsis "Minimalist computing system")
+    (description
+     "Minimacy is a minimalist computing technology.
+It consists of a programming language (compiler plus virtual machine)
+and a library, written such that the whole system can be fully
+understood by a single person.  An optional extension to the virtual
+machine adds X11 and ALSA for user interfaces, another extension
+adds OpenGL support.")
+    (home-page "https://minimacy.net/")
+    (license license:gpl2)))
diff --git a/gnu/packages/patches/minimacy.patch b/gnu/packages/patches/minimacy.patch
new file mode 100644
index 0000000000..eca49431c3
--- /dev/null
+++ b/gnu/packages/patches/minimacy.patch
@@ -0,0 +1,34 @@
+The Minimacy distribution is set up for being compiled and used from the
+user's home directory. Running Minimacy as a Guix package requires adding
+its store path as a search path for the virtual machine. That is done in
+two steps: this patch, and a substitution of the actual store path in the
+build process.
+
+--- minimacy/src/hw.c	2022-12-05 18:51:13.000000000 +0100
++++ minimacy/src/hw.c	2022-12-09 15:55:47.122793826 +0100
+@@ -90,6 +90,13 @@
+ #if defined ON_UNIX || defined ON_MACOS_CMDLINE || defined ON_RASPBERRY64
+ void systemExecDir(char* path, int len)
+ {
++	char* p = "minimacy-in-gnu-store";
++	if (strlen(p) < len - 2)
++	{
++		strcpy(path, p);
++		systemCleanDir(path);
++		return;
++	}
+ 	path[0] = 0;
+ }
+ #endif
+@@ -583,8 +590,9 @@
+ 	PRINTF(th, LOG_USER, "1- command line argument: -dir path\n");
+ 	PRINTF(th, LOG_USER, "2- environment variable MINIMACY\n");
+ 	PRINTF(th, LOG_USER, "3- grand parent of minimacy.exe (windows only)\n");
+-	PRINTF(th, LOG_USER, "4- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
+-	PRINTF(th, LOG_USER, "5- Working directory\n\n");
++	PRINTF(th, LOG_USER, "4- the minimacy package under /gnu/store (Guix only)\n");
++	PRINTF(th, LOG_USER, "5- ~/minimacy (on Unix) or [user]/Documents/minimacy (on Windows)\n");
++	PRINTF(th, LOG_USER, "6- Working directory\n\n");
+ }
+ int hwInit(Thread* th, int argc, char** argv, int standalone)
+ {
-- 
2.39.1





This bug report was last modified 1 year and 67 days ago.

Previous Next


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