units: fix build with enableCurrenciesUpdater=false; pythonPackages=null;
Units allows to build it without a python dependency by setting {
enableCurrenciesUpdater=false; pythonPackages=null; }. Unfortunately
this feature is currently broken due to two problems:
1. The `pythonEnv` string is part of the builder environment, so it is
not evaluated lazily. This means that `pythonPackages==null` will
always cause eval to fail.
2. `pythonEnv` is used unconditionally in an antiquotation in the
`prePatch` phase; if it is null this will fail.
Let's fix these so we can build a pythonless "units" package.
This is helpful when cross-compiling, because right now a lot of
python packages (especially python-cryptography) fail to
cross-compile.
This commit is contained in:
@@ -9,7 +9,10 @@
|
||||
|
||||
assert enableCurrenciesUpdater -> pythonPackages != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
let pythonEnv = pythonPackages.python.withPackages(ps: [
|
||||
ps.requests
|
||||
]);
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "units";
|
||||
version = "2.21";
|
||||
|
||||
@@ -18,16 +21,12 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "sha256-bD6AqfmAWJ/ZYqWFKiZ0ZCJX2xxf1bJ8TZ5mTzSGy68=";
|
||||
};
|
||||
|
||||
pythonEnv = pythonPackages.python.withPackages(ps: [
|
||||
ps.requests
|
||||
]);
|
||||
|
||||
buildInputs = [ readline ]
|
||||
++ lib.optionals enableCurrenciesUpdater [
|
||||
pythonEnv
|
||||
]
|
||||
;
|
||||
prePatch = ''
|
||||
prePatch = lib.optionalString enableCurrenciesUpdater ''
|
||||
substituteInPlace units_cur \
|
||||
--replace "#!/usr/bin/env python" ${pythonEnv}/bin/python
|
||||
'';
|
||||
|
||||
Reference in New Issue
Block a user