The Exec paths in these files already refer to absolute paths, infact,
/gnu/store paths
Thus the regex:
("^Exec=([^/[:blank:]\r\n]*)(.*)$" _ binary rest)
with binary = empty string and rest = everything after Exec=
Why? The second subexpression [^/[:blank:]\r\n]* is bound to binary, but it
means anything
that is a series of anything that is not /, space, or newline. absolute paths
start with /, so it matches nothing (empty string), and continues to call
(which "").
I notice this phase hasn't been edited in 5 years and has other issues, for
example:
1. patch-dot-desktop-files only searches the output of the package for paths,
not the inputs. This means for example xfce4-settings fails to patch references
to exo-open in desktop files.
The code should be remade to be more /correct/, and handle all unexpected
inputs. In this case the phase is accidentally doing the right thing by failing
in a harmless way and correctly not patching the files, but emitting a warning.