Hi, Ricardo Wurmus <rek...@elephly.net> skribis:
> it happened a couple of times already that a “substitute*” expression > silently failed and I only found out about it when investigating the > remains of a failing build (“guix build -K”). This can easily happen > when a package is updated and substitutions “anchors” no longer exist in > the updated source code. > > Would it be desirable to change “substitute*” (or replace it) such that > it throws an error or returns a value if substitution failed? “Failed” as in “there were no pattern matches”, right? > This might be helpful for the more complex packages with many > substitutions. If we make it return a value (#f for error) it would > also make our build phases a little prettier, I think. (Now we > forcefully return #t in any case and that seems wrong.) I like this idea. Like others wrote, it could return #t if one or more substitutions were made, and #f otherwise. I think it’s better than throwing an error, because there are cases where it doesn’t matter whether a substitution was made or not (e.g., when replacing strings en masse on a set of files.) WDYT? Thanks, Ludo’.