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