mirror of
https://github.com/BioArchLinux/Packages.git
synced 2025-03-10 12:02:42 +00:00
r-*: improve R package checking
- handle DESCRIPTION files with missing whitespace - allow manually specifying expected NeedsCompilation value
This commit is contained in:
parent
6851af30cc
commit
f726729dcd
1 changed files with 17 additions and 9 deletions
|
@ -65,15 +65,16 @@ class Description:
|
||||||
if c == space or c == tab:
|
if c == space or c == tab:
|
||||||
if value is None:
|
if value is None:
|
||||||
raise Exception("Invalid DESCRIPTION")
|
raise Exception("Invalid DESCRIPTION")
|
||||||
value.append(space)
|
if len(value) > 0:
|
||||||
|
value.append(space)
|
||||||
value.extend(line.strip())
|
value.extend(line.strip())
|
||||||
else:
|
else:
|
||||||
i = line.find(b": ")
|
i = line.find(b":")
|
||||||
if i == -1:
|
if i == -1:
|
||||||
error = line.decode(errors = "replace")
|
error = line.decode(errors = "replace")
|
||||||
raise Exception("Invalid line in DESCRIPTION: '{error}'")
|
raise Exception(f"Invalid line in DESCRIPTION: '{error}'")
|
||||||
field = line[:i]
|
field = line[:i]
|
||||||
value = bytearray(line[i+2:-1])
|
value = bytearray(line[i+1:-1].strip())
|
||||||
rawdata[field] = value
|
rawdata[field] = value
|
||||||
|
|
||||||
enc_key = b"Encoding"
|
enc_key = b"Encoding"
|
||||||
|
@ -95,10 +96,11 @@ class Description:
|
||||||
if field not in self.desc:
|
if field not in self.desc:
|
||||||
return []
|
return []
|
||||||
ret = []
|
ret = []
|
||||||
for dep in self.desc[field].split(", "):
|
for dep in self.desc[field].split(","):
|
||||||
i = dep.find(" (")
|
i = dep.find("(")
|
||||||
if i != -1:
|
if i != -1:
|
||||||
dep = dep[:i]
|
dep = dep[:i]
|
||||||
|
dep = dep.strip()
|
||||||
if dep != "R":
|
if dep != "R":
|
||||||
ret.append(self._r_name_to_arch(dep))
|
ret.append(self._r_name_to_arch(dep))
|
||||||
return ret
|
return ret
|
||||||
|
@ -218,10 +220,12 @@ class CheckFailed(Exception):
|
||||||
class CheckConfig:
|
class CheckConfig:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
expect_license: str = None,
|
expect_license: str = None,
|
||||||
|
expect_needscompilation: bool = None,
|
||||||
expect_systemrequirements: str = None,
|
expect_systemrequirements: str = None,
|
||||||
ignore_fortran_files: bool = False,
|
ignore_fortran_files: bool = False,
|
||||||
):
|
):
|
||||||
self.expect_license = expect_license
|
self.expect_license = expect_license
|
||||||
|
self.expect_needscompilation = expect_needscompilation
|
||||||
self.expect_systemrequirements = expect_systemrequirements
|
self.expect_systemrequirements = expect_systemrequirements
|
||||||
self.ignore_fortran_files = ignore_fortran_files
|
self.ignore_fortran_files = ignore_fortran_files
|
||||||
|
|
||||||
|
@ -322,9 +326,13 @@ def check_pkgdesc(pkg: Pkgbuild, desc: Description, cfg: CheckConfig):
|
||||||
raise CheckFailed(f"Wrong pkgdesc, expected '{desc.title}'")
|
raise CheckFailed(f"Wrong pkgdesc, expected '{desc.title}'")
|
||||||
|
|
||||||
def check_arch(pkg: Pkgbuild, desc: Description, cfg: CheckConfig):
|
def check_arch(pkg: Pkgbuild, desc: Description, cfg: CheckConfig):
|
||||||
expected = "x86_64" if desc.needscompilation else "any"
|
if cfg.expect_needscompilation is not None:
|
||||||
if pkg.arch != [expected]:
|
if desc.needscompilation != cfg.expect_needscompilation:
|
||||||
raise CheckFailed(f"Wrong arch, expected {expected}")
|
raise CheckFailed(f"NeedsCompilation value has changed: {desc.needscompilation}")
|
||||||
|
else:
|
||||||
|
expected = "x86_64" if desc.needscompilation else "any"
|
||||||
|
if pkg.arch != [expected]:
|
||||||
|
raise CheckFailed(f"Wrong arch, expected {expected}")
|
||||||
|
|
||||||
def check_md5sum(pkg: Pkgbuild, desc: Description, cfg: CheckConfig):
|
def check_md5sum(pkg: Pkgbuild, desc: Description, cfg: CheckConfig):
|
||||||
if pkg.md5sums[0] != cfg.md5sum:
|
if pkg.md5sums[0] != cfg.md5sum:
|
||||||
|
|
Loading…
Add table
Reference in a new issue