Some renames.
This commit is contained in:
parent
217e87a3a8
commit
78b59759c9
10 changed files with 57 additions and 49 deletions
|
@ -50,7 +50,7 @@ def shebang_binary(p):
|
||||||
return os.path.basename(args[0].decode()).strip()
|
return os.path.basename(args[0].decode()).strip()
|
||||||
|
|
||||||
|
|
||||||
class UpstreamRequirement(object):
|
class Requirement(object):
|
||||||
|
|
||||||
# Name of the family of requirements - e.g. "python-package"
|
# Name of the family of requirements - e.g. "python-package"
|
||||||
family: str
|
family: str
|
||||||
|
|
|
@ -62,9 +62,9 @@ STAGE_MAP = {
|
||||||
}
|
}
|
||||||
|
|
||||||
def determine_fixers(session, resolver):
|
def determine_fixers(session, resolver):
|
||||||
from .buildlog import UpstreamRequirementFixer
|
from .buildlog import RequirementFixer
|
||||||
from .resolver.apt import AptResolver
|
from .resolver.apt import AptResolver
|
||||||
return [UpstreamRequirementFixer(resolver)]
|
return [RequirementFixer(resolver)]
|
||||||
|
|
||||||
|
|
||||||
def main(): # noqa: C901
|
def main(): # noqa: C901
|
||||||
|
@ -136,6 +136,7 @@ def main(): # noqa: C901
|
||||||
if not args.ignore_declared_dependencies and not args.explain:
|
if not args.ignore_declared_dependencies and not args.explain:
|
||||||
stages = STAGE_MAP[args.subcommand]
|
stages = STAGE_MAP[args.subcommand]
|
||||||
if stages:
|
if stages:
|
||||||
|
logging.info('Checking that declared requirements are present')
|
||||||
for bs in bss:
|
for bs in bss:
|
||||||
install_necessary_declared_requirements(resolver, bs, stages)
|
install_necessary_declared_requirements(resolver, bs, stages)
|
||||||
fixers = determine_fixers(session, resolver)
|
fixers = determine_fixers(session, resolver)
|
||||||
|
@ -166,7 +167,7 @@ def main(): # noqa: C901
|
||||||
if args.subcommand == "info":
|
if args.subcommand == "info":
|
||||||
from .info import run_info
|
from .info import run_info
|
||||||
run_info(session, buildsystems=bss)
|
run_info(session, buildsystems=bss)
|
||||||
except UnidentifiedError:
|
except UnidentifiedError as e:
|
||||||
return 1
|
return 1
|
||||||
except NoBuildToolsFound:
|
except NoBuildToolsFound:
|
||||||
logging.info("No build tools found.")
|
logging.info("No build tools found.")
|
||||||
|
|
|
@ -173,7 +173,7 @@ def problem_to_upstream_requirement(problem):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class UpstreamRequirementFixer(BuildFixer):
|
class RequirementFixer(BuildFixer):
|
||||||
|
|
||||||
def __init__(self, resolver):
|
def __init__(self, resolver):
|
||||||
self.resolver = resolver
|
self.resolver = resolver
|
||||||
|
|
|
@ -118,6 +118,8 @@ class SetupPy(BuildSystem):
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
from distutils.core import run_setup
|
from distutils.core import run_setup
|
||||||
|
# TODO(jelmer): Perhaps run this in session, so we can install
|
||||||
|
# missing dependencies?
|
||||||
try:
|
try:
|
||||||
self.result = run_setup(os.path.abspath(path), stop_after="init")
|
self.result = run_setup(os.path.abspath(path), stop_after="init")
|
||||||
except RuntimeError as e:
|
except RuntimeError as e:
|
||||||
|
@ -421,6 +423,10 @@ class Make(BuildSystem):
|
||||||
self.setup(session, resolver, fixers)
|
self.setup(session, resolver, fixers)
|
||||||
run_with_build_fixers(session, ["make", "all"], 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):
|
def test(self, session, resolver, fixers):
|
||||||
self.setup(session, resolver, fixers)
|
self.setup(session, resolver, fixers)
|
||||||
run_with_build_fixers(session, ["make", "check"], fixers)
|
run_with_build_fixers(session, ["make", "check"], fixers)
|
||||||
|
|
|
@ -39,11 +39,9 @@ def run_apt(session: Session, args: List[str]) -> None:
|
||||||
match, error = find_apt_get_failure(lines)
|
match, error = find_apt_get_failure(lines)
|
||||||
if error is not None:
|
if error is not None:
|
||||||
raise DetailedFailure(retcode, args, error)
|
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] == "":
|
while lines and lines[-1] == "":
|
||||||
lines.pop(-1)
|
lines.pop(-1)
|
||||||
raise UnidentifiedError(retcode, args, lines)
|
raise UnidentifiedError(retcode, args, lines, secondary=match)
|
||||||
|
|
||||||
|
|
||||||
class FileSearcher(object):
|
class FileSearcher(object):
|
||||||
|
|
|
@ -81,7 +81,7 @@ from buildlog_consultant.sbuild import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from ..fix_build import BuildFixer, resolve_error, DependencyContext
|
from ..fix_build import BuildFixer, resolve_error, DependencyContext
|
||||||
from ..buildlog import UpstreamRequirementFixer
|
from ..buildlog import RequirementFixer
|
||||||
from ..resolver.apt import (
|
from ..resolver.apt import (
|
||||||
AptRequirement,
|
AptRequirement,
|
||||||
get_package_for_python_module,
|
get_package_for_python_module,
|
||||||
|
@ -525,7 +525,7 @@ def apt_fixers(apt) -> List[BuildFixer]:
|
||||||
SimpleBuildFixer(MissingPythonModule, fix_missing_python_module),
|
SimpleBuildFixer(MissingPythonModule, fix_missing_python_module),
|
||||||
SimpleBuildFixer(MissingPythonDistribution, fix_missing_python_distribution),
|
SimpleBuildFixer(MissingPythonDistribution, fix_missing_python_distribution),
|
||||||
SimpleBuildFixer(AptFetchFailure, retry_apt_failure),
|
SimpleBuildFixer(AptFetchFailure, retry_apt_failure),
|
||||||
UpstreamRequirementFixer(resolver),
|
RequirementFixer(resolver),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ def create_dist_schroot(
|
||||||
) -> str:
|
) -> str:
|
||||||
from .buildsystem import detect_buildsystems
|
from .buildsystem import detect_buildsystems
|
||||||
from .resolver.apt import AptResolver
|
from .resolver.apt import AptResolver
|
||||||
from .buildlog import UpstreamRequirementFixer
|
from .buildlog import RequirementFixer
|
||||||
|
|
||||||
if subdir is None:
|
if subdir is None:
|
||||||
subdir = "package"
|
subdir = "package"
|
||||||
|
@ -151,7 +151,7 @@ def create_dist_schroot(
|
||||||
|
|
||||||
buildsystems = list(detect_buildsystems(export_directory))
|
buildsystems = list(detect_buildsystems(export_directory))
|
||||||
resolver = AptResolver.from_session(session)
|
resolver = AptResolver.from_session(session)
|
||||||
fixers = [UpstreamRequirementFixer(resolver)]
|
fixers = [RequirementFixer(resolver)]
|
||||||
|
|
||||||
with DistCatcher(export_directory) as dc:
|
with DistCatcher(export_directory) as dc:
|
||||||
oldcwd = os.getcwd()
|
oldcwd = os.getcwd()
|
||||||
|
|
|
@ -89,11 +89,12 @@ def run_with_build_fixers(
|
||||||
return
|
return
|
||||||
match, error = find_build_failure_description(lines)
|
match, error = find_build_failure_description(lines)
|
||||||
if error is None:
|
if error is None:
|
||||||
logging.warning("Build failed with unidentified error. Giving up.")
|
if match:
|
||||||
if match is not None:
|
logging.warning("Build failed with unidentified error:")
|
||||||
raise UnidentifiedError(
|
logging.warning('%s', match.line.rstrip('\n'))
|
||||||
retcode, args, lines, secondary=(match.lineno, match.line))
|
else:
|
||||||
raise UnidentifiedError(retcode, args, lines)
|
logging.warning("Build failed and unable to find cause. Giving up.")
|
||||||
|
raise UnidentifiedError(retcode, args, lines, secondary=match)
|
||||||
|
|
||||||
logging.info("Identified error: %r", error)
|
logging.info("Identified error: %r", error)
|
||||||
if error in fixed_errors:
|
if error in fixed_errors:
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
import posixpath
|
import posixpath
|
||||||
from typing import Optional, List, Tuple
|
from typing import Optional, List, Tuple
|
||||||
|
|
||||||
from . import UpstreamRequirement
|
from . import Requirement
|
||||||
|
|
||||||
|
|
||||||
class PythonPackageRequirement(UpstreamRequirement):
|
class PythonPackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
package: str
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ class PythonPackageRequirement(UpstreamRequirement):
|
||||||
return "python package: %s" % self.package
|
return "python package: %s" % self.package
|
||||||
|
|
||||||
|
|
||||||
class BinaryRequirement(UpstreamRequirement):
|
class BinaryRequirement(Requirement):
|
||||||
|
|
||||||
binary_name: str
|
binary_name: str
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ class BinaryRequirement(UpstreamRequirement):
|
||||||
self.binary_name = binary_name
|
self.binary_name = binary_name
|
||||||
|
|
||||||
|
|
||||||
class PerlModuleRequirement(UpstreamRequirement):
|
class PerlModuleRequirement(Requirement):
|
||||||
|
|
||||||
module: str
|
module: str
|
||||||
filename: Optional[str]
|
filename: Optional[str]
|
||||||
|
@ -66,7 +66,7 @@ class PerlModuleRequirement(UpstreamRequirement):
|
||||||
return self.module.replace("::", "/") + ".pm"
|
return self.module.replace("::", "/") + ".pm"
|
||||||
|
|
||||||
|
|
||||||
class NodePackageRequirement(UpstreamRequirement):
|
class NodePackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
package: str
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ class NodePackageRequirement(UpstreamRequirement):
|
||||||
self.package = package
|
self.package = package
|
||||||
|
|
||||||
|
|
||||||
class CargoCrateRequirement(UpstreamRequirement):
|
class CargoCrateRequirement(Requirement):
|
||||||
|
|
||||||
crate: str
|
crate: str
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ class CargoCrateRequirement(UpstreamRequirement):
|
||||||
self.crate = crate
|
self.crate = crate
|
||||||
|
|
||||||
|
|
||||||
class PkgConfigRequirement(UpstreamRequirement):
|
class PkgConfigRequirement(Requirement):
|
||||||
|
|
||||||
module: str
|
module: str
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ class PkgConfigRequirement(UpstreamRequirement):
|
||||||
self.minimum_version = minimum_version
|
self.minimum_version = minimum_version
|
||||||
|
|
||||||
|
|
||||||
class PathRequirement(UpstreamRequirement):
|
class PathRequirement(Requirement):
|
||||||
|
|
||||||
path: str
|
path: str
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class PathRequirement(UpstreamRequirement):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
|
|
||||||
class CHeaderRequirement(UpstreamRequirement):
|
class CHeaderRequirement(Requirement):
|
||||||
|
|
||||||
header: str
|
header: str
|
||||||
|
|
||||||
|
@ -112,14 +112,14 @@ class CHeaderRequirement(UpstreamRequirement):
|
||||||
self.header = header
|
self.header = header
|
||||||
|
|
||||||
|
|
||||||
class JavaScriptRuntimeRequirement(UpstreamRequirement):
|
class JavaScriptRuntimeRequirement(Requirement):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(JavaScriptRuntimeRequirement, self).__init__(
|
super(JavaScriptRuntimeRequirement, self).__init__(
|
||||||
'javascript-runtime')
|
'javascript-runtime')
|
||||||
|
|
||||||
|
|
||||||
class ValaPackageRequirement(UpstreamRequirement):
|
class ValaPackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
package: str
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ class ValaPackageRequirement(UpstreamRequirement):
|
||||||
self.package = package
|
self.package = package
|
||||||
|
|
||||||
|
|
||||||
class RubyGemRequirement(UpstreamRequirement):
|
class RubyGemRequirement(Requirement):
|
||||||
|
|
||||||
gem: str
|
gem: str
|
||||||
minimum_version: Optional[str]
|
minimum_version: Optional[str]
|
||||||
|
@ -139,7 +139,7 @@ class RubyGemRequirement(UpstreamRequirement):
|
||||||
self.minimum_version = minimum_version
|
self.minimum_version = minimum_version
|
||||||
|
|
||||||
|
|
||||||
class GoPackageRequirement(UpstreamRequirement):
|
class GoPackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
package: str
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ class GoPackageRequirement(UpstreamRequirement):
|
||||||
self.package = package
|
self.package = package
|
||||||
|
|
||||||
|
|
||||||
class DhAddonRequirement(UpstreamRequirement):
|
class DhAddonRequirement(Requirement):
|
||||||
|
|
||||||
path: str
|
path: str
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ class DhAddonRequirement(UpstreamRequirement):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
|
|
||||||
class PhpClassRequirement(UpstreamRequirement):
|
class PhpClassRequirement(Requirement):
|
||||||
|
|
||||||
php_class: str
|
php_class: str
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ class PhpClassRequirement(UpstreamRequirement):
|
||||||
self.php_class = php_class
|
self.php_class = php_class
|
||||||
|
|
||||||
|
|
||||||
class RPackageRequirement(UpstreamRequirement):
|
class RPackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
package: str
|
||||||
minimum_version: Optional[str]
|
minimum_version: Optional[str]
|
||||||
|
@ -177,7 +177,7 @@ class RPackageRequirement(UpstreamRequirement):
|
||||||
self.minimum_version = minimum_version
|
self.minimum_version = minimum_version
|
||||||
|
|
||||||
|
|
||||||
class LibraryRequirement(UpstreamRequirement):
|
class LibraryRequirement(Requirement):
|
||||||
|
|
||||||
library: str
|
library: str
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ class LibraryRequirement(UpstreamRequirement):
|
||||||
self.library = library
|
self.library = library
|
||||||
|
|
||||||
|
|
||||||
class RubyFileRequirement(UpstreamRequirement):
|
class RubyFileRequirement(Requirement):
|
||||||
|
|
||||||
filename: str
|
filename: str
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ class RubyFileRequirement(UpstreamRequirement):
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
|
||||||
|
|
||||||
class XmlEntityRequirement(UpstreamRequirement):
|
class XmlEntityRequirement(Requirement):
|
||||||
|
|
||||||
url: str
|
url: str
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class XmlEntityRequirement(UpstreamRequirement):
|
||||||
self.url = url
|
self.url = url
|
||||||
|
|
||||||
|
|
||||||
class SprocketsFileRequirement(UpstreamRequirement):
|
class SprocketsFileRequirement(Requirement):
|
||||||
|
|
||||||
content_type: str
|
content_type: str
|
||||||
name: str
|
name: str
|
||||||
|
@ -215,7 +215,7 @@ class SprocketsFileRequirement(UpstreamRequirement):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
|
|
||||||
class JavaClassRequirement(UpstreamRequirement):
|
class JavaClassRequirement(Requirement):
|
||||||
|
|
||||||
classname: str
|
classname: str
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ class JavaClassRequirement(UpstreamRequirement):
|
||||||
self.classname = classname
|
self.classname = classname
|
||||||
|
|
||||||
|
|
||||||
class HaskellPackageRequirement(UpstreamRequirement):
|
class HaskellPackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
package: str
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ class HaskellPackageRequirement(UpstreamRequirement):
|
||||||
self.package = package
|
self.package = package
|
||||||
|
|
||||||
|
|
||||||
class MavenArtifactRequirement(UpstreamRequirement):
|
class MavenArtifactRequirement(Requirement):
|
||||||
|
|
||||||
artifacts: List[Tuple[str, str, str]]
|
artifacts: List[Tuple[str, str, str]]
|
||||||
|
|
||||||
|
@ -242,13 +242,13 @@ class MavenArtifactRequirement(UpstreamRequirement):
|
||||||
self.artifacts = artifacts
|
self.artifacts = artifacts
|
||||||
|
|
||||||
|
|
||||||
class GnomeCommonRequirement(UpstreamRequirement):
|
class GnomeCommonRequirement(Requirement):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(GnomeCommonRequirement, self).__init__('gnome-common')
|
super(GnomeCommonRequirement, self).__init__('gnome-common')
|
||||||
|
|
||||||
|
|
||||||
class JDKFileRequirement(UpstreamRequirement):
|
class JDKFileRequirement(Requirement):
|
||||||
|
|
||||||
jdk_path: str
|
jdk_path: str
|
||||||
filename: str
|
filename: str
|
||||||
|
@ -263,7 +263,7 @@ class JDKFileRequirement(UpstreamRequirement):
|
||||||
return posixpath.join(self.jdk_path, self.filename)
|
return posixpath.join(self.jdk_path, self.filename)
|
||||||
|
|
||||||
|
|
||||||
class PerlFileRequirement(UpstreamRequirement):
|
class PerlFileRequirement(Requirement):
|
||||||
|
|
||||||
filename: str
|
filename: str
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ class PerlFileRequirement(UpstreamRequirement):
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
|
||||||
|
|
||||||
class AutoconfMacroRequirement(UpstreamRequirement):
|
class AutoconfMacroRequirement(Requirement):
|
||||||
|
|
||||||
macro: str
|
macro: str
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ class AutoconfMacroRequirement(UpstreamRequirement):
|
||||||
self.macro = macro
|
self.macro = macro
|
||||||
|
|
||||||
|
|
||||||
class PythonModuleRequirement(UpstreamRequirement):
|
class PythonModuleRequirement(Requirement):
|
||||||
|
|
||||||
module: str
|
module: str
|
||||||
python_version: Optional[str]
|
python_version: Optional[str]
|
||||||
|
|
|
@ -23,11 +23,12 @@ from ..debian.apt import AptManager
|
||||||
|
|
||||||
from . import Resolver, UnsatisfiedRequirements
|
from . import Resolver, UnsatisfiedRequirements
|
||||||
from ..requirements import (
|
from ..requirements import (
|
||||||
|
Requirement,
|
||||||
BinaryRequirement,
|
BinaryRequirement,
|
||||||
CHeaderRequirement,
|
CHeaderRequirement,
|
||||||
PkgConfigRequirement,
|
PkgConfigRequirement,
|
||||||
PathRequirement,
|
PathRequirement,
|
||||||
UpstreamRequirement,
|
Requirement,
|
||||||
JavaScriptRuntimeRequirement,
|
JavaScriptRuntimeRequirement,
|
||||||
ValaPackageRequirement,
|
ValaPackageRequirement,
|
||||||
RubyGemRequirement,
|
RubyGemRequirement,
|
||||||
|
@ -53,9 +54,10 @@ from ..requirements import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class AptRequirement(object):
|
class AptRequirement(Requirement):
|
||||||
|
|
||||||
def __init__(self, package, minimum_version=None):
|
def __init__(self, package, minimum_version=None):
|
||||||
|
super(AptRequirement, self).__init__('apt')
|
||||||
self.package = package
|
self.package = package
|
||||||
self.minimum_version = minimum_version
|
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:
|
for rr_class, rr_fn in APT_REQUIREMENT_RESOLVERS:
|
||||||
if isinstance(req, rr_class):
|
if isinstance(req, rr_class):
|
||||||
return rr_fn(apt_mgr, req)
|
return rr_fn(apt_mgr, req)
|
||||||
|
@ -538,5 +540,5 @@ class AptResolver(Resolver):
|
||||||
def explain(self, requirements):
|
def explain(self, requirements):
|
||||||
raise NotImplementedError(self.explain)
|
raise NotImplementedError(self.explain)
|
||||||
|
|
||||||
def resolve(self, req: UpstreamRequirement):
|
def resolve(self, req: Requirement):
|
||||||
return resolve_requirement_apt(self.apt, req)
|
return resolve_requirement_apt(self.apt, req)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue