unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#59997] [PATCH] gnu: add minimacy
@ 2022-12-12 10:09 Konrad Hinsen
  2023-01-27 18:49 ` [bug#59997] [PATCH v2] gnu: Add minimacy Simon Tournier
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Konrad Hinsen @ 2022-12-12 10:09 UTC (permalink / raw)
  To: 59997

* 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@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





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH v2] gnu: Add minimacy.
  2022-12-12 10:09 [bug#59997] [PATCH] gnu: add minimacy Konrad Hinsen
@ 2023-01-27 18:49 ` Simon Tournier
  2023-01-27 18:50 ` [bug#59997] [PATCH] gnu: add minimacy Simon Tournier
  2023-01-27 19:20 ` [bug#59997] [PATCH v3] gnu: Add minimacy Simon Tournier
  2 siblings, 0 replies; 8+ messages in thread
From: Simon Tournier @ 2023-01-27 18:49 UTC (permalink / raw)
  To: 59997; +Cc: Konrad Hinsen

From: Konrad Hinsen <konrad.hinsen@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@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





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH] gnu: add minimacy
  2022-12-12 10:09 [bug#59997] [PATCH] gnu: add minimacy Konrad Hinsen
  2023-01-27 18:49 ` [bug#59997] [PATCH v2] gnu: Add minimacy Simon Tournier
@ 2023-01-27 18:50 ` Simon Tournier
  2023-01-28 15:56   ` Konrad Hinsen
  2023-01-27 19:20 ` [bug#59997] [PATCH v3] gnu: Add minimacy Simon Tournier
  2 siblings, 1 reply; 8+ messages in thread
From: Simon Tournier @ 2023-01-27 18:50 UTC (permalink / raw)
  To: Konrad Hinsen, 59997

Hi Konrad,

I have sent a V2 with some minor tweaks.

Cheers,
simon




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH v3] gnu: Add minimacy.
  2022-12-12 10:09 [bug#59997] [PATCH] gnu: add minimacy Konrad Hinsen
  2023-01-27 18:49 ` [bug#59997] [PATCH v2] gnu: Add minimacy Simon Tournier
  2023-01-27 18:50 ` [bug#59997] [PATCH] gnu: add minimacy Simon Tournier
@ 2023-01-27 19:20 ` Simon Tournier
  2023-02-24 21:32   ` [bug#59997] [PATCH] gnu: add minimacy Ludovic Courtès
  2023-02-26 16:13   ` [bug#59997] [PATCH v4] " Konrad Hinsen
  2 siblings, 2 replies; 8+ messages in thread
From: Simon Tournier @ 2023-01-27 19:20 UTC (permalink / raw)
  To: 59997; +Cc: Konrad Hinsen

From: Konrad Hinsen <konrad.hinsen@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@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





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH] gnu: add minimacy
  2023-01-27 18:50 ` [bug#59997] [PATCH] gnu: add minimacy Simon Tournier
@ 2023-01-28 15:56   ` Konrad Hinsen
  0 siblings, 0 replies; 8+ messages in thread
From: Konrad Hinsen @ 2023-01-28 15:56 UTC (permalink / raw)
  To: Simon Tournier, 59997

Simon Tournier <zimon.toutoune@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.




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH] gnu: add minimacy
  2023-01-27 19:20 ` [bug#59997] [PATCH v3] gnu: Add minimacy Simon Tournier
@ 2023-02-24 21:32   ` Ludovic Courtès
  2023-02-26 16:08     ` Konrad Hinsen
  2023-02-26 16:13   ` [bug#59997] [PATCH v4] " Konrad Hinsen
  1 sibling, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2023-02-24 21:32 UTC (permalink / raw)
  To: Simon Tournier; +Cc: 59997, Konrad Hinsen

HI,

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

> From: Konrad Hinsen <konrad.hinsen@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@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’.




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH] gnu: add minimacy
  2023-02-24 21:32   ` [bug#59997] [PATCH] gnu: add minimacy Ludovic Courtès
@ 2023-02-26 16:08     ` Konrad Hinsen
  0 siblings, 0 replies; 8+ messages in thread
From: Konrad Hinsen @ 2023-02-26 16:08 UTC (permalink / raw)
  To: Ludovic Courtès, Simon Tournier; +Cc: 59997

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.




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#59997] [PATCH v4] gnu: add minimacy
  2023-01-27 19:20 ` [bug#59997] [PATCH v3] gnu: Add minimacy Simon Tournier
  2023-02-24 21:32   ` [bug#59997] [PATCH] gnu: add minimacy Ludovic Courtès
@ 2023-02-26 16:13   ` Konrad Hinsen
  1 sibling, 0 replies; 8+ messages in thread
From: Konrad Hinsen @ 2023-02-26 16:13 UTC (permalink / raw)
  To: 59997

* 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@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





^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-02-26 16:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-12 10:09 [bug#59997] [PATCH] gnu: add minimacy Konrad Hinsen
2023-01-27 18:49 ` [bug#59997] [PATCH v2] gnu: Add minimacy Simon Tournier
2023-01-27 18:50 ` [bug#59997] [PATCH] gnu: add minimacy Simon Tournier
2023-01-28 15:56   ` Konrad Hinsen
2023-01-27 19:20 ` [bug#59997] [PATCH v3] gnu: Add minimacy Simon Tournier
2023-02-24 21:32   ` [bug#59997] [PATCH] gnu: add minimacy Ludovic Courtès
2023-02-26 16:08     ` Konrad Hinsen
2023-02-26 16:13   ` [bug#59997] [PATCH v4] " Konrad Hinsen

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).