The `dmenu` package includes two binary programs, `dmenu` and `stest`,
and two shell scripts, `dmenu_run` and `dmenu_path`. `dmenu_run`
invokes `dmenu` and `dmenu_path`, and `dmenu_path` invokes `stest`.
`dmenu_run`'s invocation of `dmenu` was patched to run it by its full
store path, but its invocation of `dmenu_path` and `dmenu_path`'s
invocation of `stest` were not.
If `dmenu_path` and `stest` were not in the set of system packages or
otherwise in the `PATH`, this situation would result in `dmenu_run`
opening a dmenu instance with no menu entries (which would normally be
generated by `dmenu_path`, which `dmenu_run` couldn't find, as it was
running it by `PATH` lookup).
This commit fixes the package to also patch the invocation of
`dmenu_path` in `dmenu_run` and the invocations of `stest` in
`dmenu_path` to invoke those programs by their full store paths.
I have tested this change on NixOS.
After #16017 there were a lot
of comments saying that `nix` would be better than `JSON`
for Go packages dependency sets.
As said in https://github.com/NixOS/nixpkgs/pull/16017#issuecomment-229624046
> Because of the content-addressable store, if two programs have the
> same dependency it will already result in the same derivation in
> the
> store. Git also has compression in the pack files so it won't make
> much difference to duplicate the dependencies on disk. And finally
> most users will just use the binary builds so it won't make any
> differences to them.
This PR removes `libs.json` file and puts all package dependencies in
theirs `deps.json`.
Darwin build fails from conflicts in libSystem:
In file included from altdom.c:1:
In file included from /private/var/folders/7t/4vz31njj37b8y_bg6z3t7tk00000gn/T/nix-build-LiE-2.2.2.drv-0/LiE/lie.h:34:
In file included from /nix/store/9ll4m9yx854hr64fn1w9ra3qimm3pzdk-Libsystem-osx-10.9.5/include/string.h:176:
/nix/store/9ll4m9yx854hr64fn1w9ra3qimm3pzdk-Libsystem-osx-10.9.5/include/strings.h:73:7: error: redefinition of 'index' as different kind of symbol
char *index(const char *, int) __POSIX_C_DEPRECATED(200112L);
^
/private/var/folders/7t/4vz31njj37b8y_bg6z3t7tk00000gn/T/nix-build-LiE-2.2.2.drv-0/LiE/lie.h:6:14: note: previous definition is here
typedef long index;
^
1 error generated.
This commit fixes 2 main problems:
- Android Studio comes with its own package manager. The current
packaging approach doesn't allow such management. As a result the
package is unusable (see
https://github.com/NixOS/nixpkgs/issues/8650 and
https://github.com/NixOS/nixpkgs/issues/14903). In this version,
$ANDROID_HOME is _not_ set, allowing Android Studio to deal with the
Android SDK as it pleases (typically in $HOME/Android/Sdk).
- Android Studio downloads prebuilt binaries as part of the SDK. These
tools (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the
interpreter. An FHS environment is used as a work around for that.