Hello!

I'm starting to play with emacsy and the readme said this was the
mailing list to send bug reports too.

These patches allow me to build emacsy and run the example programs.
They also add a build with guile 3.0 but that doesn't seem to work too
good so I'll have to try and debug that.

Thanks,

Morgan

>From e74bc4e6712db9b57782c76b985c935c82fcda90 Mon Sep 17 00:00:00 2001
From: Morgan Smith <morgan.j.sm...@outlook.com>
Date: Wed, 29 Nov 2023 17:52:10 -0500
Subject: [PATCH 1/3] configure: Update dependencies

---
 configure.ac | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index c18374f..231fd41 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,12 +69,13 @@ AS_IF([test x$with_examples != xno],
   [BUILD_EXAMPLES=yes],
   [BUILD_EXAMPLES=no])
 
-PKG_CHECK_MODULES([FREEGLUT], [freeglut >= 3.0], [HAVE_FREEGLUT=yes], [HAVE_FREEGLUT=no])
+dnl Freeglut 3.2 provides 'glut.pc', not 'freeglut.pc'.
+PKG_CHECK_MODULES([FREEGLUT], [glut >= 3.0], [HAVE_FREEGLUT=yes], [HAVE_FREEGLUT=no])
 PKG_CHECK_MODULES([GL], [gl >= 18.0.0], [HAVE_GL=yes], [HAVE_GL=no])
 PKG_CHECK_MODULES([GLU], [glu >= 9.0.0], [HAVE_GLU=yes], [HAVE_GLU=no])
 AM_CONDITIONAL([HELLO_EMACSY], [test x$BUILD_EXAMPLES$HAVE_FREEGLUT$HAVE_GL$HAVE_GLU = xyesyesyesyes])
 
-PKG_CHECK_MODULES([WEBKIT], [webkit2gtk-4.0], [HAVE_WEBKIT=yes], [HAVE_WEBKIT=no])
+PKG_CHECK_MODULES([WEBKIT], [webkit2gtk-4.1], [HAVE_WEBKIT=yes], [HAVE_WEBKIT=no])
 AM_CONDITIONAL([EMACSY_WEBKIT_GTK], [test x$BUILD_EXAMPLES$HAVE_WEBKIT = xyesyes])
 
 AC_CONFIG_FILES([Makefile])
-- 
2.41.0

>From dc7db5ebc864a28363bd7090755a8db4a91358c6 Mon Sep 17 00:00:00 2001
From: Morgan Smith <morgan.j.sm...@outlook.com>
Date: Wed, 29 Nov 2023 17:52:44 -0500
Subject: [PATCH 2/3] guix: Fix build and modernize

---
 guix.scm | 97 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 48 insertions(+), 49 deletions(-)

diff --git a/guix.scm b/guix.scm
index da127a9..3180e30 100644
--- a/guix.scm
+++ b/guix.scm
@@ -70,60 +70,59 @@
                         #:select? (git-predicate %source-dir)))
     (build-system glib-or-gtk-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("bzip2" ,bzip2)
-       ("guile" ,guile-2.2)
-       ("gettext" ,gnu-gettext)
-       ("libtool" ,libtool)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)
-       ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
+     (list autoconf
+           automake
+           bzip2
+           gnu-gettext
+           libtool
+           perl
+           pkg-config
+           texinfo
+           (texlive-updmap.cfg (list texlive-epsf))))
     (inputs
-     `(("dbus-glib" ,dbus-glib)
-       ("guile" ,guile-2.2)
-       ("guile-lib" ,guile-lib)
-       ("guile-readline" ,guile-readline)
-       ("freeglut" ,freeglut)
-       ("glib-networking" ,glib-networking)
-       ("gssettings-desktop-schemas"
-        ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk)))
+     (list dbus-glib
+           guile-2.2
+           guile2.2-lib
+           guile2.2-readline
+           freeglut
+           glib-networking
+           gsettings-desktop-schemas
+           webkitgtk))
     (arguments
-     `(#:tests? #t
-       #:modules ((guix build gnu-build-system)
+     (list
+      #:configure-flags #~'("BUILD_EXAMPLES=true")
+      #:tests? #t
+      #:imported-modules `((guix build guile-build-system)
+                           (guix build gnu-build-system)
+                           ,@%glib-or-gtk-build-system-modules)
+      #:modules '((guix build guile-build-system)
+                  (guix build gnu-build-system)
                   (guix build glib-or-gtk-build-system)
                   (guix build utils)
-                  (ice-9 popen)
-                  (ice-9 rdelim)
-                  (ice-9 regex)
-                  (ice-9 ftw)
                   (srfi srfi-26))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'setenv
-           (lambda _
-             (setenv "GUILE_AUTO_COMPILE" "0")
-             #t))
-         (add-after 'install 'wrap-binaries
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (effective (read-line
-                                (open-pipe* OPEN_READ
-                                            "guile" "-c"
-                                            "(display (effective-version))")))
-                    (deps (map (cut assoc-ref inputs <>) '("guile-lib" "guile-readline")))
-                    (scm-path (map (cut string-append <> "/share/guile/site/" effective) `(,out ,@deps)))
-                    (go-path (map (cut string-append <> "/lib/guile/" effective "/site-ccache/") `(,out ,@deps)))
-                    (examples (filter (cut string-match "emacsy" <>)
-                                      (scandir (string-append out "/bin/"))))
-                    (progs (map (cut string-append out "/bin/" <>)
-                                examples)))
-               (map (cut wrap-program <>
-                         `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
-                         `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path)) progs)
-               #t))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'setenv
+            (lambda _
+              (setenv "GUILE_AUTO_COMPILE" "0")))
+          (add-after 'install 'wrap-binaries
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (deps (cons
+                            (call-with-values (lambda () (target-guile-scm+go out)) cons)
+                            (map (lambda (dep) (call-with-values
+                                              (lambda () (target-guile-scm+go dep))
+                                            cons))
+                                 (list (or #$(this-package-input "guile2.2-lib")
+                                           #$(this-package-input "guile-lib"))
+                                       (or #$(this-package-input "guile2.2-readline")
+                                           #$(this-package-input "guile-readline"))))))
+                     (scm-path (map car deps))
+                     (go-path (map cdr deps))
+                     (progs (find-files (string-append out "/bin/"))))
+                (map (cut wrap-program <>
+                          `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+                          `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path)) progs)))))))
     (home-page "https://savannah.nongnu.org/projects/emacsy";)
     (synopsis "Embeddable GNU Emacs-like library using Guile")
     (description
-- 
2.41.0

>From 26cb52b0c75f23e664acaad2d88a51666e42ddf8 Mon Sep 17 00:00:00 2001
From: Morgan Smith <morgan.j.sm...@outlook.com>
Date: Wed, 29 Nov 2023 17:53:19 -0500
Subject: [PATCH 3/3] guix: Add guile3.0-emacsy (does not work yet)

---
 guix.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/guix.scm b/guix.scm
index 3180e30..ef1b932 100644
--- a/guix.scm
+++ b/guix.scm
@@ -134,4 +134,13 @@ comes with a simple counter example using FreeGLUT and browser examples
 in C using Gtk+-3 and WebKitGtk.")
     (license license:gpl3+)))
 
+;; TODO: tests don't pass
+(define-public guile3.0-emacsy
+  (package
+    (inherit emacsy)
+    (inputs (modify-inputs (package-inputs emacsy)
+              (replace "guile" guile-3.0)
+              (replace "guile2.2-lib" guile-lib)
+              (replace "guile2.2-readline" guile-readline)))))
+
 emacsy
-- 
2.41.0

Reply via email to