Some renames.

This commit is contained in:
Jelmer Vernooij 2021-03-01 15:00:32 +00:00
parent 217e87a3a8
commit 78b59759c9
10 changed files with 57 additions and 49 deletions

View file

@ -50,7 +50,7 @@ def shebang_binary(p):
return os.path.basename(args[0].decode()).strip()
class UpstreamRequirement(object):
class Requirement(object):
# Name of the family of requirements - e.g. "python-package"
family: str

View file

@ -62,9 +62,9 @@ STAGE_MAP = {
}
def determine_fixers(session, resolver):
from .buildlog import UpstreamRequirementFixer
from .buildlog import RequirementFixer
from .resolver.apt import AptResolver
return [UpstreamRequirementFixer(resolver)]
return [RequirementFixer(resolver)]
def main(): # noqa: C901
@ -136,6 +136,7 @@ def main(): # noqa: C901
if not args.ignore_declared_dependencies and not args.explain:
stages = STAGE_MAP[args.subcommand]
if stages:
logging.info('Checking that declared requirements are present')
for bs in bss:
install_necessary_declared_requirements(resolver, bs, stages)
fixers = determine_fixers(session, resolver)
@ -166,7 +167,7 @@ def main(): # noqa: C901
if args.subcommand == "info":
from .info import run_info
run_info(session, buildsystems=bss)
except UnidentifiedError:
except UnidentifiedError as e:
return 1
except NoBuildToolsFound:
logging.info("No build tools found.")

View file

@ -173,7 +173,7 @@ def problem_to_upstream_requirement(problem):
return None
class UpstreamRequirementFixer(BuildFixer):
class RequirementFixer(BuildFixer):
def __init__(self, resolver):
self.resolver = resolver

View file

@ -118,6 +118,8 @@ class SetupPy(BuildSystem):
def __init__(self, path):
self.path = path
from distutils.core import run_setup
# TODO(jelmer): Perhaps run this in session, so we can install
# missing dependencies?
try:
self.result = run_setup(os.path.abspath(path), stop_after="init")
except RuntimeError as e:
@ -421,6 +423,10 @@ class Make(BuildSystem):
self.setup(session, resolver, fixers)
run_with_build_fixers(session, ["make", "all"], fixers)
def clean(self, session, resolver, fixers):
self.setup(session, resolver, fixers)
run_with_build_fixers(session, ["make", "clean"], fixers)
def test(self, session, resolver, fixers):
self.setup(session, resolver, fixers)
run_with_build_fixers(session, ["make", "check"], fixers)

View file

@ -39,11 +39,9 @@ def run_apt(session: Session, args: List[str]) -> None:
match, error = find_apt_get_failure(lines)
if error is not None:
raise DetailedFailure(retcode, args, error)
if match is not None:
raise UnidentifiedError(retcode, args, lines, secondary=(match.lineno, match.line))
while lines and lines[-1] == "":
lines.pop(-1)
raise UnidentifiedError(retcode, args, lines)
raise UnidentifiedError(retcode, args, lines, secondary=match)
class FileSearcher(object):

View file

@ -81,7 +81,7 @@ from buildlog_consultant.sbuild import (
)
from ..fix_build import BuildFixer, resolve_error, DependencyContext
from ..buildlog import UpstreamRequirementFixer
from ..buildlog import RequirementFixer
from ..resolver.apt import (
AptRequirement,
get_package_for_python_module,
@ -525,7 +525,7 @@ def apt_fixers(apt) -> List[BuildFixer]:
SimpleBuildFixer(MissingPythonModule, fix_missing_python_module),
SimpleBuildFixer(MissingPythonDistribution, fix_missing_python_distribution),
SimpleBuildFixer(AptFetchFailure, retry_apt_failure),
UpstreamRequirementFixer(resolver),
RequirementFixer(resolver),
]

View file

@ -125,7 +125,7 @@ def create_dist_schroot(
) -> str:
from .buildsystem import detect_buildsystems
from .resolver.apt import AptResolver
from .buildlog import UpstreamRequirementFixer
from .buildlog import RequirementFixer
if subdir is None:
subdir = "package"
@ -151,7 +151,7 @@ def create_dist_schroot(
buildsystems = list(detect_buildsystems(export_directory))
resolver = AptResolver.from_session(session)
fixers = [UpstreamRequirementFixer(resolver)]
fixers = [RequirementFixer(resolver)]
with DistCatcher(export_directory) as dc:
oldcwd = os.getcwd()

View file

@ -89,11 +89,12 @@ def run_with_build_fixers(
return
match, error = find_build_failure_description(lines)
if error is None:
logging.warning("Build failed with unidentified error. Giving up.")
if match is not None:
raise UnidentifiedError(
retcode, args, lines, secondary=(match.lineno, match.line))
raise UnidentifiedError(retcode, args, lines)
if match:
logging.warning("Build failed with unidentified error:")
logging.warning('%s', match.line.rstrip('\n'))
else:
logging.warning("Build failed and unable to find cause. Giving up.")
raise UnidentifiedError(retcode, args, lines, secondary=match)
logging.info("Identified error: %r", error)
if error in fixed_errors:

View file

@ -19,10 +19,10 @@
import posixpath
from typing import Optional, List, Tuple
from . import UpstreamRequirement
from . import Requirement
class PythonPackageRequirement(UpstreamRequirement):
class PythonPackageRequirement(Requirement):
package: str
@ -41,7 +41,7 @@ class PythonPackageRequirement(UpstreamRequirement):
return "python package: %s" % self.package
class BinaryRequirement(UpstreamRequirement):
class BinaryRequirement(Requirement):
binary_name: str
@ -50,7 +50,7 @@ class BinaryRequirement(UpstreamRequirement):
self.binary_name = binary_name
class PerlModuleRequirement(UpstreamRequirement):
class PerlModuleRequirement(Requirement):
module: str
filename: Optional[str]
@ -66,7 +66,7 @@ class PerlModuleRequirement(UpstreamRequirement):
return self.module.replace("::", "/") + ".pm"
class NodePackageRequirement(UpstreamRequirement):
class NodePackageRequirement(Requirement):
package: str
@ -75,7 +75,7 @@ class NodePackageRequirement(UpstreamRequirement):
self.package = package
class CargoCrateRequirement(UpstreamRequirement):
class CargoCrateRequirement(Requirement):
crate: str
@ -84,7 +84,7 @@ class CargoCrateRequirement(UpstreamRequirement):
self.crate = crate
class PkgConfigRequirement(UpstreamRequirement):
class PkgConfigRequirement(Requirement):
module: str
@ -94,7 +94,7 @@ class PkgConfigRequirement(UpstreamRequirement):
self.minimum_version = minimum_version
class PathRequirement(UpstreamRequirement):
class PathRequirement(Requirement):
path: str
@ -103,7 +103,7 @@ class PathRequirement(UpstreamRequirement):
self.path = path
class CHeaderRequirement(UpstreamRequirement):
class CHeaderRequirement(Requirement):
header: str
@ -112,14 +112,14 @@ class CHeaderRequirement(UpstreamRequirement):
self.header = header
class JavaScriptRuntimeRequirement(UpstreamRequirement):
class JavaScriptRuntimeRequirement(Requirement):
def __init__(self):
super(JavaScriptRuntimeRequirement, self).__init__(
'javascript-runtime')
class ValaPackageRequirement(UpstreamRequirement):
class ValaPackageRequirement(Requirement):
package: str
@ -128,7 +128,7 @@ class ValaPackageRequirement(UpstreamRequirement):
self.package = package
class RubyGemRequirement(UpstreamRequirement):
class RubyGemRequirement(Requirement):
gem: str
minimum_version: Optional[str]
@ -139,7 +139,7 @@ class RubyGemRequirement(UpstreamRequirement):
self.minimum_version = minimum_version
class GoPackageRequirement(UpstreamRequirement):
class GoPackageRequirement(Requirement):
package: str
@ -148,7 +148,7 @@ class GoPackageRequirement(UpstreamRequirement):
self.package = package
class DhAddonRequirement(UpstreamRequirement):
class DhAddonRequirement(Requirement):
path: str
@ -157,7 +157,7 @@ class DhAddonRequirement(UpstreamRequirement):
self.path = path
class PhpClassRequirement(UpstreamRequirement):
class PhpClassRequirement(Requirement):
php_class: str
@ -166,7 +166,7 @@ class PhpClassRequirement(UpstreamRequirement):
self.php_class = php_class
class RPackageRequirement(UpstreamRequirement):
class RPackageRequirement(Requirement):
package: str
minimum_version: Optional[str]
@ -177,7 +177,7 @@ class RPackageRequirement(UpstreamRequirement):
self.minimum_version = minimum_version
class LibraryRequirement(UpstreamRequirement):
class LibraryRequirement(Requirement):
library: str
@ -186,7 +186,7 @@ class LibraryRequirement(UpstreamRequirement):
self.library = library
class RubyFileRequirement(UpstreamRequirement):
class RubyFileRequirement(Requirement):
filename: str
@ -195,7 +195,7 @@ class RubyFileRequirement(UpstreamRequirement):
self.filename = filename
class XmlEntityRequirement(UpstreamRequirement):
class XmlEntityRequirement(Requirement):
url: str
@ -204,7 +204,7 @@ class XmlEntityRequirement(UpstreamRequirement):
self.url = url
class SprocketsFileRequirement(UpstreamRequirement):
class SprocketsFileRequirement(Requirement):
content_type: str
name: str
@ -215,7 +215,7 @@ class SprocketsFileRequirement(UpstreamRequirement):
self.name = name
class JavaClassRequirement(UpstreamRequirement):
class JavaClassRequirement(Requirement):
classname: str
@ -224,7 +224,7 @@ class JavaClassRequirement(UpstreamRequirement):
self.classname = classname
class HaskellPackageRequirement(UpstreamRequirement):
class HaskellPackageRequirement(Requirement):
package: str
@ -233,7 +233,7 @@ class HaskellPackageRequirement(UpstreamRequirement):
self.package = package
class MavenArtifactRequirement(UpstreamRequirement):
class MavenArtifactRequirement(Requirement):
artifacts: List[Tuple[str, str, str]]
@ -242,13 +242,13 @@ class MavenArtifactRequirement(UpstreamRequirement):
self.artifacts = artifacts
class GnomeCommonRequirement(UpstreamRequirement):
class GnomeCommonRequirement(Requirement):
def __init__(self):
super(GnomeCommonRequirement, self).__init__('gnome-common')
class JDKFileRequirement(UpstreamRequirement):
class JDKFileRequirement(Requirement):
jdk_path: str
filename: str
@ -263,7 +263,7 @@ class JDKFileRequirement(UpstreamRequirement):
return posixpath.join(self.jdk_path, self.filename)
class PerlFileRequirement(UpstreamRequirement):
class PerlFileRequirement(Requirement):
filename: str
@ -272,7 +272,7 @@ class PerlFileRequirement(UpstreamRequirement):
self.filename = filename
class AutoconfMacroRequirement(UpstreamRequirement):
class AutoconfMacroRequirement(Requirement):
macro: str
@ -281,7 +281,7 @@ class AutoconfMacroRequirement(UpstreamRequirement):
self.macro = macro
class PythonModuleRequirement(UpstreamRequirement):
class PythonModuleRequirement(Requirement):
module: str
python_version: Optional[str]

View file

@ -23,11 +23,12 @@ from ..debian.apt import AptManager
from . import Resolver, UnsatisfiedRequirements
from ..requirements import (
Requirement,
BinaryRequirement,
CHeaderRequirement,
PkgConfigRequirement,
PathRequirement,
UpstreamRequirement,
Requirement,
JavaScriptRuntimeRequirement,
ValaPackageRequirement,
RubyGemRequirement,
@ -53,9 +54,10 @@ from ..requirements import (
)
class AptRequirement(object):
class AptRequirement(Requirement):
def __init__(self, package, minimum_version=None):
super(AptRequirement, self).__init__('apt')
self.package = package
self.minimum_version = minimum_version
@ -493,7 +495,7 @@ APT_REQUIREMENT_RESOLVERS = [
]
def resolve_requirement_apt(apt_mgr, req: UpstreamRequirement) -> AptRequirement:
def resolve_requirement_apt(apt_mgr, req: Requirement) -> AptRequirement:
for rr_class, rr_fn in APT_REQUIREMENT_RESOLVERS:
if isinstance(req, rr_class):
return rr_fn(apt_mgr, req)
@ -538,5 +540,5 @@ class AptResolver(Resolver):
def explain(self, requirements):
raise NotImplementedError(self.explain)
def resolve(self, req: UpstreamRequirement):
def resolve(self, req: Requirement):
return resolve_requirement_apt(self.apt, req)