On 13.04.25 05:56, David Pirotte wrote:
Hello Zelphir,
I guess --no-grafts is not sufficient, and I need to use it, and
additionally install one of the two packages you mentioned. Merely
adding --no-grafts still results in the error:
I believe your guix shell command is incomplete.
Florian, could you tell us the exact command line steps a guix g-golf
user must accomplish to run the upstream version of an example, or
their own app as there are developing it, thanks.
Guix now two separate g-golf examples packages:
g-golf-gtk-4-examples
g-golf-adw-1-examples
I installed those 2 packages and tried running like before, which
results in a new, different error, but I am not sure what it means to
"run from my profile bin dir", so I did not take any steps towards
that:
Here as well, your guix shell command is incomplete (it misses gtk-4).
But I think that as you installed the above listed packages, all you
have to do is to go to 'your guix user bin dir' and run from there:
./hello-world [or any other example
This is because those are the wrapper version of the upstream examples.
Note that in your bin dir, they probably are symlink, the examples are
effectively installed in $(prefix)/share/doc/g-golf/examples/gtk-4
I suggest you list the content of $(prefix)/share/doc/g-golf/examples/gtk-4
and edit both the wrapper (launcher) and the updated original version
of the script, to see and learn from Florian.
You might also want to edit the (gnu packages guile-xyz) and read the
g-golf-gtk-4-examples and g-golf-adw-1-examples package definition, and
learn from those as well.
Cheers,
David
Hello David!
I think there is some confusion, or at least something I am unaware of:
I am running a guix command like this:
~~~~Makefile~~~~
.POSIX:
.RECIPEPREFIX = >
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
# --no-grafts is required to run g-golf examples. Some bug in Guix.
SHELL ::= guix time-machine --channels=guix-env/channels.scm -- shell
--no-grafts --check --manifest=guix-env/manifest.scm -- bash -c
.SHELLFLAGS = -Euo pipefail -c
GUILE_LOAD_PATH ::= .
# GUILE_LOAD_PATH += utils
GUILE_LOAD_PATH_ARG ::= $(foreach dir, $(GUILE_LOAD_PATH),-L $(dir))
.PHONY: run
run:
guile $(GUILE_LOAD_PATH_ARG) main.scm
.PHONY: repl
repl:
guile
~~~~
In this Makefile I am defining what shell make uses. I use guix time-machine to
make sure the result is reproducible, locked to one specific commit, described
using the channels.scm. Then there is the guix shell command with the
--no-grafts argument. In that guix shell I am then running a normal shell to run
the guile command in, with all the required directories of my project added to
the load path. There is no profile, which would have a well known location of
the bin directory, only that temporary shell, that has a bin directory somewhere
at location with unpredictable name. If I update to a newer commit for
time-machine, then that location will also change. At no point I am (currently!)
creating a profile with predictable/specifiable bin dir location to go to. There
is no predictable prefix, as far as I am aware.
It may be, that G-Golf is not meant or ready to be used in such a way.
To summarize it:
I guess, I want to have a single command, that will make the code run based on
reproducible dependencies (specified somewhere, in my case in manifest.scm and
channels.scm), so that I can run it on another machine, where there is guix
installed. A few descriptive/declarative files like channels.scm and
manifest.scm are OK, since I can simply commit them in my repo and all will be
reproducible again. Usually I can run Guile code like this, with reproducible
result on other machines.
I have some ideas:
(1) switch to making a guix profile instead, so that the bin directory is in a
predictable location and then try running the ./hello-world thing (but how to do
it with my own code??)
(2) perhaps there is a way to ask guix shell where its bin directory is, so that
I can switch to that automatically to then run the code from there?
(3) Generally I would like to run the code, not a prebuilt example package. How
else do I know, that the code listed in the repository of G-Golf as example
actually works?
Best regards,
Zelphir
--
repositories:https://notabug.org/ZelphirKaltstahl,https://codeberg.org/ZelphirKaltstahl