unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* guile-ncurses unicode support
@ 2024-05-27 10:15 tmarjeski
  2024-06-03 23:22 ` Frank Terbeck
  0 siblings, 1 reply; 3+ messages in thread
From: tmarjeski @ 2024-05-27 10:15 UTC (permalink / raw)
  To: help-guix


Hello,

I am using guix on a foreign distro (Arch) for now, and I would like to
create a manifest.scm file for a game I wrote in guile with
guile-ncurses, so that I can invoke `guix shell -m manifest -- ...` and
run my game.

I'm having issues running the game this way, and I suspect there is no
unicode support enabled on the guile-ncurses package build, even though
it says that there is. Everything is working fine on my Arch system
using guile and guile-ncurses from their package manager.

When I run my game (which uses unicode characters), I only see "?" in
place of the unicode. I attempted to `guix build guile-ncurses
--no-substitutes` and install from there, but it did not work.

Does this sound like an issue with guile-ncurses, or perhaps I am
missing something crucial for `guix shell` to work properly?

Here is the manifest: https://github.com/trevarj/gdotris/blob/master/manifest.scm

Any guidance would be appreciated. Thanks!


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

* Re: guile-ncurses unicode support
  2024-05-27 10:15 guile-ncurses unicode support tmarjeski
@ 2024-06-03 23:22 ` Frank Terbeck
       [not found]   ` <1555342211.843809.1717478647462@mail.yahoo.com>
  0 siblings, 1 reply; 3+ messages in thread
From: Frank Terbeck @ 2024-06-03 23:22 UTC (permalink / raw)
  To: tmarjeski; +Cc: help-guix, bug-guile-ncurses

Hi!

tmarjeski@gmail.com wrote:
[…]
> I'm having issues running the game this way, and I suspect there is no
> unicode support enabled on the guile-ncurses package build, even though
> it says that there is. Everything is working fine on my Arch system
> using guile and guile-ncurses from their package manager.
>
> When I run my game (which uses unicode characters), I only see "?" in
> place of the unicode. I attempted to `guix build guile-ncurses
> --no-substitutes` and install from there, but it did not work.
>
> Does this sound like an issue with guile-ncurses, or perhaps I am
> missing something crucial for `guix shell` to work properly?

I have just run into this as well,  though I am using guix on top of De-
bian. But that difference should not matter.

I believe this is an issue with the guile-ncurses build in guix, that is
caused by an issue in  guile-ncurses' configure.ac, that seems to behave
in  unexpected ways  with the  "--with-ncursesw" option,  that the  guix
build uses.


To check I've put in this patch into guile-ncurses:

diff --git a/configure.ac b/configure.ac
index 51cc785..6615664 100644
--- a/configure.ac
+++ b/configure.ac
@@ -115,6 +115,8 @@ AC_ARG_WITH(ncursesw,
             [with_ncursesw=no],
             [with_ncursesw=check])
 
+echo "DEBUG: ($with_ncursesw)"
+
 AC_MSG_NOTICE([checking for ncurses])
 
 have_ncursesw_curses_h=no


I am using this guix-shell from a guile-ncurses git repository clone:

% guix shell --pure ncurses coreutils grep sed gawk gcc-toolchain   \
                    make autoconf automake libtool pkg-config guile \
                    texinfo


With that, just calling the configure script:

% ./configure
…
DEBUG: (check)
configure: checking for ncurses
checking for ncursesw/curses.h... no
checking for ncurses/curses.h... no
checking for curses.h... yes
checking for library containing initscr... -lncursesw
checking for library containing u32_strconv_from_locale... -lunistring
checking for library containing new_menu... -lmenuw
checking for library containing new_form... -lformw
checking for library containing new_panel... -lpanelw
…

That looks very much like wide-character ncurses, and indeed if I build
it and run a little test script I get this:

% make
…
% ./tools/uninstalled-env guile -c '(use-modules (ncurses curses)) (format #t "wide-ncurses? ~a~%" %wide-ncurses)' 2> /dev/null
wide-ncurses? #t

That looks good.


Now with --with-ncursesw:

% ./configure --with-ncursesw
…
DEBUG: (no)
configure: checking for ncurses
checking for ncurses/curses.h... no
checking for curses.h... yes
checking for library containing initscr... -lncurses
checking for library containing new_menu... -lmenu
checking for library containing new_form... -lform
checking for library containing new_panel... -lpanel
checking for library containing initscr... (cached) -lncurses
…

…unexpected. Reading the configure.ac file looks to me like it is inten-
ded, that with  this option things should actually error  out instead of
falling back to the non-wide ncurses build,  but this looks like it is a
synonym for --without-ncursesw.


Just to check, if I run my little test script:

% make
…
% ./tools/uninstalled-env guile -c '(use-modules (ncurses curses)) (format #t "wide-ncurses? ~a~%" %wide-ncurses)' 2> /dev/null
wide-ncurses? #f


Which confirms the suspicion.


I think what is actually intended is this:

diff --git a/configure.ac b/configure.ac
index 51cc785..cd8b8d4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -112,7 +112,7 @@ esac
 AC_ARG_WITH(ncursesw,
             [AS_HELP_STRING([--without-ncursesw],
                             [Don't use ncursesw (wide character support)])],
-            [with_ncursesw=no],
+            [with_ncursesw=$with_ncursesw],
             [with_ncursesw=check])
 
 AC_MSG_NOTICE([checking for ncurses])
@@ -147,13 +147,15 @@ then
                   [AC_MSG_FAILURE([curses.h could not be found])])
 fi
 
-AS_IF([test "$with_ncursesw" = check],
+AS_IF([test "$with_ncursesw" = check || test "$with_ncursesw" = yes],
       [AC_SEARCH_LIBS([initscr], [ncursesw],
                       [AC_DEFINE([HAVE_NCURSESW],
                                  [1],
                                  [Define if you have libncursesw])
                        with_ncursesw=yes],
-                      [AC_MSG_FAILURE([--with-ncursesw was given, but, test for ncursesw failed])])])
+                      [AS_IF([test "$with_ncursesw" = check],
+                             [with_ncursesw=no],
+                             [AC_MSG_FAILURE([--with-ncursesw was given, but, test for ncursesw failed])])])])
 
 AS_IF([test "$with_ncursesw" = no],
       [AC_SEARCH_LIBS([initscr], [ncurses],


I  am Cc:ing  bug-guile-ncurses@gnu.org, which  is the  contact for  the
maintainer as  per the  guile-ncurses homepage.  I am  not an  expert in
autoconf, so this might not be the most idiomatic way of doing this.


In the meantime, the guix  build could just drop --without-ncursesw from
their build instructions to make this work: Guix's ncurses has wide-cha-
racter support and the default of  guile-ncurses is to test for this, so
it will succeed. A patch for that might look like this (untested):


diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 94417079c7..982b59efe7 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2718,8 +2718,12 @@ (define-public guile-ncurses
                   (guix build utils))
        #:imported-modules ((guix build guile-build-system)
                            ,@%gnu-build-system-modules)
-       #:configure-flags (list "--with-ncursesw" ; Unicode support
-                               "--with-gnu-filesystem-hierarchy")
+       #:configure-flags (list
+                          ;; This is currently commented out due to a bug
+                          ;; in configure.ac of guile-ncurses, which makes
+                          ;; this behave just like --without-ncurses.
+                          ;;"--with-ncursesw" ; Unicode support
+                          "--with-gnu-filesystem-hierarchy")
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'fix-libguile-ncurses-file-name


Regards, Frank


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

* Re: guile-ncurses unicode support
       [not found]   ` <1555342211.843809.1717478647462@mail.yahoo.com>
@ 2024-06-04  5:32     ` Trevor Arjeski
  0 siblings, 0 replies; 3+ messages in thread
From: Trevor Arjeski @ 2024-06-04  5:32 UTC (permalink / raw)
  To: Mike Gran; +Cc: Frank Terbeck, help-guix@gnu.org, bug-guile-ncurses@gnu.org

Hi Mike,

I actually have a patch for the fix already:
https://lists.gnu.org/archive/html/guix-patches/2024-05/msg01728.html
Maybe you can just merge that, if you have permissions.

Thanks!
Trevor

On Tue, Jun 4, 2024 at 8:24 AM Mike Gran <spk121@yahoo.com> wrote:

>
> >On Monday, June 3, 2024 at 06:08:03 PM PDT, Frank Terbeck <
> ft@bewatermyfriend.org> wrote:
>
> >Hi!
>
> >tmarjeski@gmail.com wrote:
> >[…]
> >> I'm having issues running the game this way, and I suspect there is no
> >> unicode support enabled on the guile-ncurses package build, even though
> >> it says that there is. Everything is working fine on my Arch system
> >> using guile and guile-ncurses from their package manager.
> >>
> >> When I run my game (which uses unicode characters), I only see "?" in
> >> place of the unicode. I attempted to `guix build guile-ncurses
> >> --no-substitutes` and install from there, but it did not work.
> >>
> >> Does this sound like an issue with guile-ncurses, or perhaps I am
> >> missing something crucial for `guix shell` to work properly?
>
> > I have just run into this as well,  though I am using guix on top of De-
> >bian. But that difference should not matter.
>
> >I believe this is an issue with the guile-ncurses build in guix, that is
> >caused by an issue in  guile-ncurses' configure.ac, that seems to behave
> >in  unexpected ways  with the  "--with-ncursesw" option,  that the  guix
> >build uses.
>
> Ha! I'm surprised to hear that guile-ncurses has any users at all.
> Since I am apparently still the official maintainer of guile-ncurses,
> I'll see if I can figure out the accounts and passwords necessary to
> apply a fix.
>
> Regards,
> Mike Gran
>

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

end of thread, other threads:[~2024-06-09 10:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-27 10:15 guile-ncurses unicode support tmarjeski
2024-06-03 23:22 ` Frank Terbeck
     [not found]   ` <1555342211.843809.1717478647462@mail.yahoo.com>
2024-06-04  5:32     ` Trevor Arjeski

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