fix bug: some deps with markers were ignored (fixes #26)

This commit is contained in:
DavHau 2020-06-28 06:15:09 +00:00
parent c8f6586e20
commit 995e7d1ef4
4 changed files with 8 additions and 13 deletions

View file

@ -17,7 +17,7 @@ os.environ['disable_checks'] = 'true'
with open(pwd + "/../mach_nix/provider_defaults.toml") as f:
provider_settings = toml.load(f)
provider_settings.update(dict(
_default="wheel,nixpkgs,sdist",
_default="wheel,sdist,nixpkgs",
))
os.environ['providers'] = json.dumps(provider_settings)

View file

@ -1,5 +1,5 @@
let
pkgs = import (import ../mach_nix/nix/nixpkgs-src.nix).stable {};
pkgs = import (import ../mach_nix/nix/nixpkgs-src.nix) {};
commit = builtins.readFile ../mach_nix/nix/PYPI_DEPS_DB_COMMIT;
sha256 = builtins.readFile ../mach_nix/nix/PYPI_DEPS_DB_SHA256;
src = builtins.fetchTarball {

View file

@ -233,12 +233,6 @@ class NixpkgsDependencyProvider(DependencyProviderBase):
return [p.ver for p in self.nixpkgs.get_all_candidates(name)]
return []
# def unify_key(self, key: str) -> str:
# key = super(NixpkgsDependencyProvider, self).unify_key(key)
# if key in self._aliases:
# return self._aliases[key]
# return key
class WheelDependencyProvider(DependencyProviderBase):
name = 'wheel'
@ -408,8 +402,11 @@ class SdistDependencyProvider(DependencyProviderBase):
reqs_raw = pkg[t]
reqs = parse_reqs(reqs_raw)
requirements[t] = list(filter_reqs_by_eval_marker(reqs, self.context))
if extras:
requirements['install_requires'] += self.get_reqs_for_extras(pkg_name, pkg_version, extras)
if not extras:
extras = []
# even if no extras are selected we need to collect reqs for extras,
# because some extras consist of only a marker which needs to be evaluated
requirements['install_requires'] += self.get_reqs_for_extras(pkg_name, pkg_version, extras)
return requirements['install_requires'], requirements['setup_requires']
def _available_versions(self, pkg_name: str) -> Iterable[Version]:

View file

@ -26,9 +26,7 @@ class OverlaysGenerator(ExpressionGenerator):
super(OverlaysGenerator, self).__init__(*args, **kwargs)
def generate(self, reqs) -> str:
pkgs = self.resolver.resolve(
reqs,
)
pkgs = self.resolver.resolve(reqs)
pkgs = dict(sorted(((p.name, p) for p in pkgs), key=lambda x: x[1].name))
return self._gen_python_env(pkgs)