From d0b967ee7a2c857a16efb565c198c9a6a5e27575 Mon Sep 17 00:00:00 2001 From: Florian Finkernagel Date: Fri, 25 Nov 2022 13:06:02 +0100 Subject: [PATCH 1/2] debug setup.py failures --- lib/extractor/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/extractor/default.nix b/lib/extractor/default.nix index 95f4c66..04b8803 100644 --- a/lib/extractor/default.nix +++ b/lib/extractor/default.nix @@ -128,6 +128,7 @@ let mkdir $out echo "extracting dependencies" SETUPTOOLS_USE_DISTUTILS=stdlib out_file=$out/python.json ${py}/bin/python -c "${setuptools_shim}" install &> $out/python.log || true + cat $out/python.log ''; base_derivation = pyVersions: with pkgs; { buildInputs = [ unzip pkg-config ]; From ec286864d68bebea3e3ca101ef6ef19f1353f125 Mon Sep 17 00:00:00 2001 From: Florian Finkernagel Date: Mon, 10 Jul 2023 08:53:57 +0200 Subject: [PATCH 2/2] ignore all packages/version where the versions no longer parses via packaging --- mach_nix/data/providers.py | 74 ++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/mach_nix/data/providers.py b/mach_nix/data/providers.py index 95e2567..2444ba2 100644 --- a/mach_nix/data/providers.py +++ b/mach_nix/data/providers.py @@ -12,6 +12,7 @@ import distlib.markers from pkg_resources import RequirementParseError +import packaging from mach_nix.requirements import filter_reqs_by_eval_marker, Requirement, parse_reqs, context, filter_versions from mach_nix.versions import PyVer, parse_ver, Version @@ -313,13 +314,20 @@ def __init__(self, data_dir: str, *args, **kwargs): def all_candidates(self, pkg_name, extras, builds) -> List[Candidate]: if builds: return [] - return [Candidate( - w.name, - parse_ver(w.ver), - w.ver, - extras, - provider_info=ProviderInfo(provider=self, wheel_fname=w.fn, data=w) - ) for w in self._suitable_wheels(pkg_name)] + result = [] + for w in self._suitable_wheels(pkg_name): + try: + result.append(Candidate( + w.name, + parse_ver(w.ver), + w.ver, + extras, + provider_info=ProviderInfo(provider=self, wheel_fname=w.fn, data=w) + )) + except packaging.version.InvalidVersion: + print(f"Error parsing (wheel) {w.name} version '{w.ver}") + continue + return result def get_pkg_reqs(self, c: Candidate) -> Tuple[List[Requirement], List[Requirement]]: """ @@ -479,13 +487,21 @@ def get_pkg_reqs(self, c: Candidate) -> Tuple[List[Requirement], List[Requiremen def all_candidates(self, pkg_name, extras, builds) -> Iterable[Candidate]: if builds: return [] - return [Candidate( - pkg_name, - parse_ver(ver), - ver, - extras, - provider_info=ProviderInfo(self, data=pkg) - ) for ver, pkg in self._get_candidates(pkg_name).items()] + result = [] + for ver, pkg in self._get_candidates(pkg_name).items(): + try: + result.append( + Candidate( + pkg_name, + parse_ver(ver), + ver, + extras, + provider_info=ProviderInfo(self, data=pkg) + )) + except packaging.version.InvalidVersion: + print(f"Error parsing (sdist) {pkg} version '{ver}") + continue + return result def conda_virtual_packages(): @@ -601,19 +617,23 @@ def all_candidates(self, pkg_name, extras, builds) -> Iterable[Candidate]: else: url = f"https://anaconda.org/{self.channel}/{p['name']}/" \ f"{p['version']}/download/{p['subdir']}/{p['fname']}" - candidates.append(Candidate( - p['name'], - parse_ver(p['version']), - p['version'], - selected_extras=tuple(), - build=p['build'], - provider_info=ProviderInfo( - self, - url=url, - hash=p['sha256'], - data=p, - ) - )) + try: + candidates.append(Candidate( + p['name'], + parse_ver(p['version']), + p['version'], + selected_extras=tuple(), + build=p['build'], + provider_info=ProviderInfo( + self, + url=url, + hash=p['sha256'], + data=p, + ) + )) + except packaging.version.InvalidVersion: + print(f"Error parsing (conda) {p['name']} version '{p['version']}") + continue if 'collisions' in p: print( f"WARNING: Colliding conda package in channel '{self.channel}' "