mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
packages/pkgbuild: parse _nodeps and cache in srcinfo_cache
This commit is contained in:
parent
cac150d11b
commit
6ddab50e21
2 changed files with 25 additions and 6 deletions
|
@ -69,6 +69,7 @@ class Pkgbuild(PackageInfo):
|
||||||
local_depends: list[str]
|
local_depends: list[str]
|
||||||
repo: str
|
repo: str
|
||||||
mode: str
|
mode: str
|
||||||
|
nodeps: bool
|
||||||
path: str
|
path: str
|
||||||
pkgver: str
|
pkgver: str
|
||||||
pkgrel: str
|
pkgrel: str
|
||||||
|
@ -100,6 +101,7 @@ class Pkgbuild(PackageInfo):
|
||||||
self.local_depends = []
|
self.local_depends = []
|
||||||
self.repo = repo or ''
|
self.repo = repo or ''
|
||||||
self.mode = ''
|
self.mode = ''
|
||||||
|
self.nodeps = False
|
||||||
self.path = relative_path
|
self.path = relative_path
|
||||||
self.pkgver = ''
|
self.pkgver = ''
|
||||||
self.pkgrel = ''
|
self.pkgrel = ''
|
||||||
|
@ -131,6 +133,7 @@ class Pkgbuild(PackageInfo):
|
||||||
self.local_depends = list(pkg.local_depends)
|
self.local_depends = list(pkg.local_depends)
|
||||||
self.repo = pkg.repo
|
self.repo = pkg.repo
|
||||||
self.mode = pkg.mode
|
self.mode = pkg.mode
|
||||||
|
self.nodeps = pkg.nodeps
|
||||||
self.path = pkg.path
|
self.path = pkg.path
|
||||||
self.pkgver = pkg.pkgver
|
self.pkgver = pkg.pkgver
|
||||||
self.pkgrel = pkg.pkgrel
|
self.pkgrel = pkg.pkgrel
|
||||||
|
@ -230,6 +233,8 @@ def parse_pkgbuild(
|
||||||
assert lines and srcinfo_cache
|
assert lines and srcinfo_cache
|
||||||
assert 'build_mode' in srcinfo_cache
|
assert 'build_mode' in srcinfo_cache
|
||||||
mode = srcinfo_cache.build_mode
|
mode = srcinfo_cache.build_mode
|
||||||
|
assert 'build_nodeps' in srcinfo_cache
|
||||||
|
nodeps = srcinfo_cache.build_nodeps
|
||||||
if mode not in ['host', 'cross']:
|
if mode not in ['host', 'cross']:
|
||||||
err = 'an invalid' if mode is not None else 'no'
|
err = 'an invalid' if mode is not None else 'no'
|
||||||
err_end = f": {repr(mode)}" if mode is not None else "."
|
err_end = f": {repr(mode)}" if mode is not None else "."
|
||||||
|
@ -237,6 +242,7 @@ def parse_pkgbuild(
|
||||||
|
|
||||||
base_package = Pkgbase(relative_pkg_dir, sources_refreshed=sources_refreshed, srcinfo_cache=srcinfo_cache)
|
base_package = Pkgbase(relative_pkg_dir, sources_refreshed=sources_refreshed, srcinfo_cache=srcinfo_cache)
|
||||||
base_package.mode = mode
|
base_package.mode = mode
|
||||||
|
base_package.nodeps = nodeps
|
||||||
base_package.repo = relative_pkg_dir.split('/')[0]
|
base_package.repo = relative_pkg_dir.split('/')[0]
|
||||||
|
|
||||||
current: Pkgbuild = base_package
|
current: Pkgbuild = base_package
|
||||||
|
@ -425,6 +431,5 @@ def filter_pkgbuilds(
|
||||||
result += [pkg]
|
result += [pkg]
|
||||||
|
|
||||||
if not allow_empty_results and not result:
|
if not allow_empty_results and not result:
|
||||||
|
|
||||||
raise Exception(f'No packages matched by {fields_err}: ' + ', '.join([f'"{p}"' for p in paths]))
|
raise Exception(f'No packages matched by {fields_err}: ' + ', '.join([f'"{p}"' for p in paths]))
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -20,6 +20,7 @@ class SrcinfoMetaFile(DataClass):
|
||||||
|
|
||||||
checksums: dict[str, str]
|
checksums: dict[str, str]
|
||||||
build_mode: Optional[str]
|
build_mode: Optional[str]
|
||||||
|
build_nodeps: Optional[bool]
|
||||||
src_initialised: Optional[str]
|
src_initialised: Optional[str]
|
||||||
|
|
||||||
_relative_path: str
|
_relative_path: str
|
||||||
|
@ -47,6 +48,7 @@ class SrcinfoMetaFile(DataClass):
|
||||||
'_relative_path': relative_pkg_dir,
|
'_relative_path': relative_pkg_dir,
|
||||||
'_changed': True,
|
'_changed': True,
|
||||||
'build_mode': '',
|
'build_mode': '',
|
||||||
|
'build_nodeps': None,
|
||||||
'checksums': {},
|
'checksums': {},
|
||||||
'src_initialised': None,
|
'src_initialised': None,
|
||||||
})
|
})
|
||||||
|
@ -74,6 +76,10 @@ class SrcinfoMetaFile(DataClass):
|
||||||
if not force_refresh:
|
if not force_refresh:
|
||||||
logging.debug(f'{metadata._relative_path}: srcinfo checksums match!')
|
logging.debug(f'{metadata._relative_path}: srcinfo checksums match!')
|
||||||
lines = lines or metadata.read_srcinfo_file()
|
lines = lines or metadata.read_srcinfo_file()
|
||||||
|
for build_field in ['build_mode', 'build_nodeps']:
|
||||||
|
if build_field not in metadata:
|
||||||
|
metadata.refresh_build_fields()
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
lines = metadata.refresh_all(write=write)
|
lines = metadata.refresh_all(write=write)
|
||||||
return metadata, lines
|
return metadata, lines
|
||||||
|
@ -92,14 +98,22 @@ class SrcinfoMetaFile(DataClass):
|
||||||
if checksums != checksums_old:
|
if checksums != checksums_old:
|
||||||
self._changed = True
|
self._changed = True
|
||||||
|
|
||||||
def refresh_build_mode(self):
|
def refresh_build_fields(self):
|
||||||
self['build_mode'] = None
|
self['build_mode'] = None
|
||||||
|
self['build_nodeps'] = None
|
||||||
with open(os.path.join(config.get_path('pkgbuilds'), self._relative_path, 'PKGBUILD'), 'r') as file:
|
with open(os.path.join(config.get_path('pkgbuilds'), self._relative_path, 'PKGBUILD'), 'r') as file:
|
||||||
lines = file.read().split('\n')
|
lines = file.read().split('\n')
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if line.startswith('_mode='):
|
if not line.startswith('_') or '=' not in line:
|
||||||
self.build_mode = line.split('=', 1)[1].strip("\"'")
|
continue
|
||||||
return
|
key, val = line.split('=', 1)
|
||||||
|
val = val.strip("\"'")
|
||||||
|
if key == '_mode':
|
||||||
|
self.build_mode = val
|
||||||
|
elif key == '_nodeps':
|
||||||
|
self.build_nodeps = val.lower() == 'true'
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
def refresh_srcinfo(self) -> list[str]:
|
def refresh_srcinfo(self) -> list[str]:
|
||||||
'Run `makepkg --printsrcinfo` to create an updated SRCINFO file and return the lines from it'
|
'Run `makepkg --printsrcinfo` to create an updated SRCINFO file and return the lines from it'
|
||||||
|
@ -127,7 +141,7 @@ class SrcinfoMetaFile(DataClass):
|
||||||
def refresh_all(self, write: bool = True) -> list[str]:
|
def refresh_all(self, write: bool = True) -> list[str]:
|
||||||
lines = self.refresh_srcinfo()
|
lines = self.refresh_srcinfo()
|
||||||
self.refresh_checksums()
|
self.refresh_checksums()
|
||||||
self.refresh_build_mode()
|
self.refresh_build_fields()
|
||||||
if write:
|
if write:
|
||||||
self.write()
|
self.write()
|
||||||
return lines
|
return lines
|
||||||
|
|
Loading…
Add table
Reference in a new issue