mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-22 13:15:44 -05:00
packages/pkgbuild: support new key "_crossdirect" to enable/disable crossdirect for single packages
This commit is contained in:
parent
4b2150940d
commit
b006cd8f4d
4 changed files with 26 additions and 7 deletions
|
@ -575,7 +575,7 @@ def build_package(
|
|||
build_root = target_chroot
|
||||
makepkg_compile_opts += ['--nodeps' if package.nodeps else '--syncdeps']
|
||||
env = deepcopy(get_makepkg_env(arch))
|
||||
if foreign_arch and enable_crossdirect and package.name not in CROSSDIRECT_PKGS:
|
||||
if foreign_arch and package.crossdirect and enable_crossdirect and package.name not in CROSSDIRECT_PKGS:
|
||||
env['PATH'] = f"/native/usr/lib/crossdirect/{arch}:{env['PATH']}"
|
||||
target_chroot.mount_crossdirect(native_chroot)
|
||||
else:
|
||||
|
|
|
@ -313,7 +313,7 @@ def cmd_list():
|
|||
logging.info(f'Done! {len(packages)} Pkgbuilds:')
|
||||
for name in sorted(packages.keys()):
|
||||
p = packages[name]
|
||||
print(f'name: {p.name}; ver: {p.version}; mode: {p.mode}; provides: {p.provides}; replaces: {p.replaces};'
|
||||
print(f'name: {p.name}; ver: {p.version}; mode: {p.mode}; crossdirect: {p.crossdirect} provides: {p.provides}; replaces: {p.replaces};'
|
||||
f'local_depends: {p.local_depends}; depends: {p.depends}')
|
||||
|
||||
|
||||
|
@ -346,6 +346,7 @@ def cmd_check(paths):
|
|||
|
||||
mode_key = '_mode'
|
||||
nodeps_key = '_nodeps'
|
||||
crossdirect_key = '_crossdirect'
|
||||
pkgbase_key = 'pkgbase'
|
||||
pkgname_key = 'pkgname'
|
||||
arches_key = '_arches'
|
||||
|
@ -356,6 +357,7 @@ def cmd_check(paths):
|
|||
required = {
|
||||
mode_key: True,
|
||||
nodeps_key: False,
|
||||
crossdirect_key: False,
|
||||
pkgbase_key: False,
|
||||
pkgname_key: True,
|
||||
'pkgdesc': False,
|
||||
|
|
|
@ -156,6 +156,7 @@ class Pkgbuild(PackageInfo):
|
|||
repo: str
|
||||
mode: str
|
||||
nodeps: bool
|
||||
crossdirect: bool
|
||||
path: str
|
||||
pkgver: str
|
||||
pkgrel: str
|
||||
|
@ -190,6 +191,7 @@ class Pkgbuild(PackageInfo):
|
|||
self.repo = repo or ''
|
||||
self.mode = ''
|
||||
self.nodeps = False
|
||||
self.crossdirect = True
|
||||
self.path = relative_path
|
||||
self.pkgver = ''
|
||||
self.pkgrel = ''
|
||||
|
@ -223,6 +225,7 @@ class Pkgbuild(PackageInfo):
|
|||
self.repo = pkg.repo
|
||||
self.mode = pkg.mode
|
||||
self.nodeps = pkg.nodeps
|
||||
self.crossdirect = pkg.crossdirect
|
||||
self.path = pkg.path
|
||||
self.pkgver = pkg.pkgver
|
||||
self.pkgrel = pkg.pkgrel
|
||||
|
@ -357,7 +360,11 @@ def parse_pkgbuild(
|
|||
else:
|
||||
raise Exception(msg)
|
||||
|
||||
# if _crossdirect is unset (None), it defaults to True
|
||||
crossdirect_enabled = srcinfo_cache.build_crossdirect in (None, True)
|
||||
|
||||
base_package = Pkgbase(relative_pkg_dir, sources_refreshed=sources_refreshed, srcinfo_cache=srcinfo_cache)
|
||||
base_package.crossdirect = crossdirect_enabled
|
||||
base_package.mode = mode
|
||||
base_package.nodeps = nodeps
|
||||
base_package.repo = relative_pkg_dir.split('/')[0]
|
||||
|
|
|
@ -68,11 +68,19 @@ class SrcInitialisedFile(JsonFile):
|
|||
raise ex
|
||||
|
||||
|
||||
srcinfo_meta_defaults = {
|
||||
'build_mode': None,
|
||||
"build_nodeps": None,
|
||||
"build_crossdirect": None,
|
||||
}
|
||||
|
||||
|
||||
class SrcinfoMetaFile(JsonFile):
|
||||
|
||||
checksums: dict[str, str]
|
||||
build_mode: Optional[str]
|
||||
build_nodeps: Optional[bool]
|
||||
build_crossdirect: Optional[bool]
|
||||
|
||||
_changed: bool
|
||||
_filename: ClassVar[str] = SRCINFO_METADATA_FILE
|
||||
|
@ -92,9 +100,8 @@ class SrcinfoMetaFile(JsonFile):
|
|||
s = SrcinfoMetaFile({
|
||||
'_relative_path': relative_pkg_dir,
|
||||
'_changed': True,
|
||||
'build_mode': '',
|
||||
'build_nodeps': None,
|
||||
'checksums': {},
|
||||
**srcinfo_meta_defaults,
|
||||
})
|
||||
return s, s.refresh_all()
|
||||
|
||||
|
@ -120,9 +127,11 @@ class SrcinfoMetaFile(JsonFile):
|
|||
if not force_refresh:
|
||||
logging.debug(f'{metadata._relative_path}: srcinfo checksums match!')
|
||||
lines = lines or metadata.read_srcinfo_file()
|
||||
for build_field in ['build_mode', 'build_nodeps']:
|
||||
for build_field in srcinfo_meta_defaults.keys():
|
||||
if build_field not in metadata:
|
||||
metadata.refresh_build_fields()
|
||||
if write:
|
||||
metadata.write()
|
||||
break
|
||||
else:
|
||||
lines = metadata.refresh_all(write=write)
|
||||
|
@ -143,8 +152,7 @@ class SrcinfoMetaFile(JsonFile):
|
|||
self._changed = True
|
||||
|
||||
def refresh_build_fields(self):
|
||||
self['build_mode'] = None
|
||||
self['build_nodeps'] = None
|
||||
self.update(srcinfo_meta_defaults)
|
||||
with open(os.path.join(config.get_path('pkgbuilds'), self._relative_path, 'PKGBUILD'), 'r') as file:
|
||||
lines = file.read().split('\n')
|
||||
for line in lines:
|
||||
|
@ -156,6 +164,8 @@ class SrcinfoMetaFile(JsonFile):
|
|||
self.build_mode = val
|
||||
elif key == '_nodeps':
|
||||
self.build_nodeps = val.lower() == 'true'
|
||||
elif key == '_crossdirect':
|
||||
self.build_crossdirect = val.lower() == 'true'
|
||||
else:
|
||||
continue
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue