Skip to content

Checking repository consistency can "crash" for recipes with _doc packages that are not "any". #338

@OscarL

Description

@OscarL

From https://build.haiku-os.org/buildmaster/master/x86_gcc2/repo_consistency.txt:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/Main.py", line 39, in __init__
    self.run(args)
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/Main.py", line 128, in run
    self.repository.checkRepositoryConsistency(self.options.verbose)
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/Repository.py", line 645, in checkRepositoryConsistency
    resolver.determineRequiredPackagesFor(
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/DependencyResolver.py", line 78, in determineRequiredPackagesFor
    packageInfos = [
                   ^
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/DependencyResolver.py", line 79, in <listcomp>
    self._parsePackageInfo(dif, True) for dif in dependencyInfoFiles
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/DependencyResolver.py", line 293, in _parsePackageInfo
    packageInfo = PackageInfo(packageInfoFile)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/PackageInfo.py", line 86, in __init__
    self._parseFromDependencyInfoFile()
  File "/usr/local/lib/python3.11/dist-packages/HaikuPorter/PackageInfo.py", line 174, in _parseFromDependencyInfoFile
    with codecs.open(self.path, 'r', 'utf-8') as fh:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen codecs>", line 906, in open
FileNotFoundError: [Errno 2] No such file or directory: '/var/buildmaster/haikuports/repository/nextcloud_client_doc-3.11.1.DependencyInfo'

This is due to the nextcloud_client recipe containing:

ARCHITECTURES_doc="any"
PROVIDES_doc="
	nextcloud_client${secondaryArchSuffix}_doc = $portVersion
	"
REQUIRES_doc="
	nextcloud_client$secondaryArchSuffix == $portVersion base
	"

While the recipe should be fixed, it would be better if haikuporter --check-repository-consistency didn't just crashed here.

I'm not sure which is the better place to catch this... perhaps Package.dependencyInfoFile() just shouldn't return non-existing .DependencyInfo files, issuing a warning in that case? (not sure if other parts of the code use that method without expecting the returned paths to exist already, which would make the warning too noisy there).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions