Imported using git-ubuntu import.
Changelog parent: 4de1045012
New changelog entries:
* Minimize the number of manually installed packages in images by marking
dependencies of metapackages as automatically installed.
impish
parent
4de1045012
commit
d36578f6bb
@ -1,5 +0,0 @@
|
|||||||
2018-06-12 10:15:24,458 subiquity:107 Starting SUbiquity v0.0.5
|
|
||||||
2018-06-12 10:15:24,458 subiquity:108 Arguments passed: ['/home/mwhudson/src/subiquity/subiquity/__main__.py', '--dry-run', '--machine-config', 'examples/mwhudson.json', '--screens', 'Filesystem', '--uefi', '--click', 'Use', '--click', 'Cru']
|
|
||||||
2018-06-12 10:15:24,458 subiquitycore.utils:30 Checking environment for installer requirements...
|
|
||||||
2018-06-12 10:15:24,461 subiquitycore.utils:81 FAIL: /usr/bin/curtin is not found on the filesystem
|
|
||||||
2018-06-12 10:15:24,461 subiquitycore.prober:40 User specified machine_config: examples/mwhudson.json
|
|
@ -1,2 +1,3 @@
|
|||||||
live-build usr/share/livecd-rootfs
|
live-build usr/share/livecd-rootfs
|
||||||
get-ppa-fingerprint usr/share/livecd-rootfs
|
get-ppa-fingerprint usr/share/livecd-rootfs
|
||||||
|
minimize-manual usr/share/livecd-rootfs
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""Minimize the number of manually installed packages in the image.
|
||||||
|
|
||||||
|
Finds all manually installed meta packages, and marks their dependencies
|
||||||
|
as automatically installed.
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import apt
|
||||||
|
|
||||||
|
|
||||||
|
def is_root(pkg):
|
||||||
|
"""Check if the package is a root package (manually inst. meta)"""
|
||||||
|
return (pkg.is_installed and
|
||||||
|
not pkg.is_auto_installed and
|
||||||
|
(pkg.section == "metapackages" or
|
||||||
|
pkg.section.endswith("/metapackages")))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Main function"""
|
||||||
|
cache = apt.Cache(rootdir=sys.argv[1] if len(sys.argv) > 1 else None)
|
||||||
|
roots = set(pkg for pkg in cache if is_root(pkg))
|
||||||
|
workset = set(roots)
|
||||||
|
seen = set()
|
||||||
|
|
||||||
|
with cache.actiongroup():
|
||||||
|
while True:
|
||||||
|
print("Iteration", file=sys.stderr)
|
||||||
|
to_proc = workset - seen
|
||||||
|
if not to_proc:
|
||||||
|
break
|
||||||
|
for pkg in sorted(to_proc):
|
||||||
|
print(" Visiting", pkg, file=sys.stderr)
|
||||||
|
|
||||||
|
if pkg not in roots:
|
||||||
|
pkg.mark_auto()
|
||||||
|
|
||||||
|
for dep in (pkg.installed.dependencies +
|
||||||
|
pkg.installed.recommends):
|
||||||
|
for bdep in dep.or_dependencies:
|
||||||
|
for ver in bdep.target_versions:
|
||||||
|
if ver.package.is_installed:
|
||||||
|
workset.add(ver.package)
|
||||||
|
|
||||||
|
seen.add(pkg)
|
||||||
|
|
||||||
|
cache.commit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in new issue