mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-06-28 19:25:37 -04:00
WIP: discover_packages(): export name->package dict, also build local depends
Signed-off-by: InsanePrawn <insane.prawny@gmail.com>
This commit is contained in:
parent
29e1914ca1
commit
838124b856
1 changed files with 20 additions and 12 deletions
30
packages.py
30
packages.py
|
@ -30,6 +30,7 @@ pacman_cmd = ['pacman',
|
||||||
|
|
||||||
|
|
||||||
class Package:
|
class Package:
|
||||||
|
name = ''
|
||||||
names = []
|
names = []
|
||||||
depends = []
|
depends = []
|
||||||
local_depends = None
|
local_depends = None
|
||||||
|
@ -49,7 +50,10 @@ class Package:
|
||||||
names = []
|
names = []
|
||||||
depends = []
|
depends = []
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if line.startswith('pkgbase') or line.startswith('\tpkgname') or line.startswith('\tprovides'):
|
if line.startswith('\tpkgname'):
|
||||||
|
self.name = line.split(' = ')[1]
|
||||||
|
names.append(self.name)
|
||||||
|
if line.startswith('pkgbase') or line.startswith('\tprovides'):
|
||||||
names.append(line.split(' = ')[1])
|
names.append(line.split(' = ')[1])
|
||||||
if line.startswith('\tdepends') or line.startswith('\tmakedepends') or line.startswith('\tcheckdepends') or line.startswith('\toptdepends'):
|
if line.startswith('\tdepends') or line.startswith('\tmakedepends') or line.startswith('\tcheckdepends') or line.startswith('\toptdepends'):
|
||||||
depends.append(line.split(' = ')[1].split('=')[0])
|
depends.append(line.split(' = ')[1].split('=')[0])
|
||||||
|
@ -133,8 +137,8 @@ def setup_chroot(chroot_path='/chroot/root'):
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
def discover_packages() -> list[Package]:
|
def discover_packages() -> dict[str, Package]:
|
||||||
packages = []
|
packages = {}
|
||||||
paths = []
|
paths = []
|
||||||
|
|
||||||
for dir in os.listdir('main'):
|
for dir in os.listdir('main'):
|
||||||
|
@ -145,14 +149,15 @@ def discover_packages() -> list[Package]:
|
||||||
|
|
||||||
for path in paths:
|
for path in paths:
|
||||||
logging.debug(f'Discovered {path}')
|
logging.debug(f'Discovered {path}')
|
||||||
packages.append(Package(path))
|
package = Package(path)
|
||||||
|
packages[package.name] = package
|
||||||
|
|
||||||
# This filters the deps to only include the ones that are provided in this repo
|
# This filters the deps to only include the ones that are provided in this repo
|
||||||
for package in packages:
|
for package in packages.values():
|
||||||
package.local_depends = package.depends.copy()
|
package.local_depends = package.depends.copy()
|
||||||
for dep in package.depends.copy():
|
for dep in package.depends.copy():
|
||||||
found = False
|
found = False
|
||||||
for p in packages:
|
for p in packages.values():
|
||||||
for name in p.names:
|
for name in p.names:
|
||||||
if dep == name:
|
if dep == name:
|
||||||
found = True
|
found = True
|
||||||
|
@ -357,13 +362,16 @@ def cmd_build(verbose, path):
|
||||||
|
|
||||||
check_prebuilts()
|
check_prebuilts()
|
||||||
|
|
||||||
if path == 'all':
|
|
||||||
packages = discover_packages()
|
packages = discover_packages()
|
||||||
else:
|
|
||||||
package = Package(path)
|
|
||||||
packages = package.local_depends + [package]
|
|
||||||
|
|
||||||
package_order = generate_package_order(packages)
|
if path != 'all':
|
||||||
|
selection = []
|
||||||
|
for package in packages.values():
|
||||||
|
if package.path == path:
|
||||||
|
# TODO: currently matches through package.name only, no provides
|
||||||
|
selection += [ packages[pkg] for pkg in package.local_depends] + [package]
|
||||||
|
|
||||||
|
package_order = generate_package_order(list(packages.values()))
|
||||||
need_build = []
|
need_build = []
|
||||||
for package in package_order:
|
for package in package_order:
|
||||||
update_package_version_and_sources(package)
|
update_package_version_and_sources(package)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue