Re: First example of g-golf (hello world) not working

Zelphir Kaltstahl <[email protected]> Sun, 13 Apr 2025 15:55:39 +0000
Newsgroups gmane.lisp.guile.user
Message-ID <[email protected]>
On 13.04.25 21:24, pelzflorian (Florian Pelz) wrote:
> Sorry I cannot respond quickly.  I will try Zelphir’s Makefile later,
> but what I meant by wrapping is that
>
> $(guix build g-golf-gtk-4-examples)/share/doc/g-golf/examples/gtk-4/hello-world
>
> is a bash wrapper script that contains:
>
> #!/gnu/store/kz4ldfp06k1jznvxkb4v2pwsvwbnjyr4-bash-minimal-5.1.16/bin/bash
> export GUILE_LOAD_PATH="/gnu/store/axsrkn279pllrnr3vsiam28sv0nld1qc-guile-g-golf-0.8.1/share/guile/site/3.0:/gnu/store/f8x0l42h53ghy8r8bsbr2qqyn7mwsq1a-guile-cairo-next-1.11.2-0.30da459/share/guile/site/3.0${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
> export GUILE_LOAD_COMPILED_PATH="/gnu/store/axsrkn279pllrnr3vsiam28sv0nld1qc-guile-g-golf-0.8.1/lib/guile/3.0/site-ccache:/gnu/store/f8x0l42h53ghy8r8bsbr2qqyn7mwsq1a-guile-cairo-next-1.11.2-0.30da459/lib/guile/3.0/site-ccache${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
> export GI_TYPELIB_PATH="/gnu/store/4bvbq9x6nwvl0ly8hl94vj9jgkrnsq9i-gtk-4.16.13/lib/girepository-1.0:/gnu/store/iybgfig139slwqkibrgjvd5b1hc8a5g9-glib-2.82.1/lib/girepository-1.0:/gnu/store/qj58pbhwlx31anzxd1j2zwkrjihdljp3-pango-1.54.0/lib/girepository-1.0:/gnu/store/nlpgm2jl8mljw22q3di28ckn7n6d0ypg-graphene-1.10.8/lib/girepository-1.0:/gnu/store/jh3djd42swhzsv1rly4gv7y4p8jw4d2d-librsvg-2.58.5/lib/girepository-1.0:/gnu/store/dxc20f42qnmym0zjwmma7f986h633c4c-gobject-introspection-1.82.0/lib/girepository-1.0:/gnu/store/1z52bhjc12x7s0596s5i6bfgnzdpzx4p-harfbuzz-8.3.0/lib/girepository-1.0:/gnu/store/ffacv1k8vhqx42ibi907wfgij8mhcbw2-gdk-pixbuf-2.42.12/lib/girepository-1.0${GI_TYPELIB_PATH:+:}$GI_TYPELIB_PATH"
> export LD_LIBRARY_PATH="/gnu/store/f8x0l42h53ghy8r8bsbr2qqyn7mwsq1a-guile-cairo-next-1.11.2-0.30da459/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
> export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}/gnu/store/3cybsynqjfrp82vqylhfbh48gaak0mbf-adwaita-icon-theme-46.2/share"
> exec -a "$0" "/gnu/store/3wkjjgmk958adbnkbz5z53gwmw2bgvcd-g-golf-gtk-4-examples-0.8.1/share/doc/g-golf/examples/gtk-4/.hello-world-real" "$@"
>
>
> This script was created by the procedure call
>
> (wrap-program installed-binary
>    `("GUILE_LOAD_PATH" prefix
>      (,(string-append g-golf scm)
>       ,(string-append gcairo scm)))
>    `("GUILE_LOAD_COMPILED_PATH" prefix
>      (,(string-append g-golf go)
>       ,(string-append gcairo go)))
>    `("GI_TYPELIB_PATH" prefix
>      (,(getenv "GI_TYPELIB_PATH")))
>    ;; Library path for libraries loaded by binaries.
>    `("LD_LIBRARY_PATH" prefix
>      (,(string-append gcairo "/lib")))
>    `("XDG_DATA_DIRS" suffix
>      (,(string-append adwaita-icons "/share"))))
>
> seen in “guix edit g-golf-gtk-4-examples” with wrap-program being from
> the module (guix build utils), i.e. (@ (guix build utils) wrap-program).
>
> In particular, running
> $(guix build g-golf-gtk-4-examples)/share/doc/g-golf/examples/gtk-4/.hello-world-real
> or
> $(guix build --source g-golf)/examples/gtk-4/hello-world
> directly when in “guix shell g-golf -D g-golf”
> results in the same errors as Zelphir got:
>
> florian@florianhp ~/src/guix [env]$ $(guix build g-golf-gtk-4-examples)/share/doc/g-golf/examples/gtk-4/.hello-world-real
> **
> GLib-GObject:ERROR:../glib-2.82.1/gobject/gbinding.c:874:g_binding_class_init: assertion failed: (gobject_notify_signal_id != 0)
> Bail out! GLib-GObject:ERROR:../glib-2.82.1/gobject/gbinding.c:874:g_binding_class_init: assertion failed: (gobject_notify_signal_id != 0)
> Abgebrochen
>
>
> The bash wrapper
> $(guix build g-golf-gtk-4-examples)/share/doc/g-golf/examples/gtk-4/hello-world
> runs fine (even without guix shell).
>
> The development environment
> “guix shell g-golf -D g-golf gtk --no-grafts”
> can also run
> $(guix build g-golf-gtk-4-examples)/share/doc/g-golf/examples/gtk-4/.hello-world-real
>
> Omitting --no-grafts can cause errors here.
>
> Regards,
> Florian

Hello Florian!

Wow, that is a lot to take in.

It seems very complicated, tbh. My initial expectation was to simply install the 
dependencies and then being able to run my Guile code. But now it seems quite a 
bit more involved.

I have many questions now.

(1) So, if I understand correctly G-Golf applications can only be run with the 
help of Guix tooling like `wrap-program`? Unless I somehow set all the 
environment variables, that are in the wrapper script, by myself to run my own 
code, instead of examples?

(2) How do other people develop apps with G-Golf? Everyone using Guix and 
immediately defining packages in the same way as the gtk 4 examples?

(3) Can I somehow easily run the wrapper script, but then run my own code, 
instead of the example?

No worries about responding quickly. I am not under time pressure.

Best regards,
Zelphir

-- 
repositories: https://notabug.org/ZelphirKaltstahl, https://codeberg.org/ZelphirKaltstahl