Hi,
On Thu, 08 Dec 2022 at 09:21, Peter Polidoro <[email protected]> wrote:
> realistically I never want to go back to life
> before Guix. Spending too much effort making it work without Guix
> just encourages other people to use bad practices I am starting to
> think.
Well, it depends on your collaborators, if you have. :-)
For instance, maybe your collaborators are using other tools than Guix
and they do not want to give a try for whatever reason. Sometime, this
folder guix/ is not in the Git repository since some colleagues do not
want to be “polluted” by some extra files unrelated to the direct
project.
> I do not know enough about writing Makefiles, but is there a way
> to chain together the rules and targets so you could either use
> Guix or not, like a "make serial-shell" and a "make
> guix-serial-shell" with the latter prepending "guix
> time-machine..." to the serial-shell command?
You mean compose the rule, right? Well, without being a Makefile guru,
I think you can have some recursion.
--8<---------------cut here---------------start------------->8---
$ cat Makefile
ifndef GUIX_ENVIRONMENT
todo:=echo
else
todo:=hello
endif
stuff:
@echo "Enter stuff"
@echo "GUIX_ENVIRONMENT: ${GUIX_ENVIRONMENT}"
$(todo)
@echo "stuff done."
hello:
guix shell -C hello make -- $(MAKE) stuff
.PHONY: stuff hello
$ make stuff
Enter stuff
GUIX_ENVIRONMENT:
echo
stuff done.
$ make hello
guix shell -C hello make -- make stuff
Enter stuff
GUIX_ENVIRONMENT: /gnu/store/qh9mcsp50kc21h505qvzj9asrkdk0bl1-profile
hello
Hello, world!
stuff done.
--8<---------------cut here---------------end--------------->8---
Note that the Makefile calls the Makefile but since it is run inside a
shell --container, then you need to provide ’make’.
Cheers,
simon