mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-03-31 04:41:18 +00:00
Imported 2.624
No reason for CPC update specified.
This commit is contained in:
parent
a38c93708d
commit
2e7eb0d4bc
63
auto-markable-pkgs
Executable file
63
auto-markable-pkgs
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""List the packages which could be automatically installed without becoming autoremovable
|
||||||
|
|
||||||
|
Finds all manually installed meta packages, and prints their dependencies
|
||||||
|
which could be marked as automatically installed.
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import apt
|
||||||
|
|
||||||
|
|
||||||
|
def is_root(pkg):
|
||||||
|
"""Check if the package is a root package (manually inst. meta)"""
|
||||||
|
section = pkg.candidate.section if pkg.candidate else ""
|
||||||
|
return (pkg.is_installed and
|
||||||
|
not pkg.is_auto_installed and
|
||||||
|
(section == "metapackages" or
|
||||||
|
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()
|
||||||
|
ubiquity_depends = 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 and pkg not in ubiquity_depends:
|
||||||
|
if not pkg.is_auto_installed:
|
||||||
|
print(pkg.name)
|
||||||
|
|
||||||
|
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:
|
||||||
|
if pkg.name == "ubiquity":
|
||||||
|
ubiquity_depends.add(ver.package)
|
||||||
|
if pkg.name != "ubiquity":
|
||||||
|
# Reprocess this package again, as we did not mark it when we visited it from ubiquity
|
||||||
|
try:
|
||||||
|
ubiquity_depends.remove(ver.package)
|
||||||
|
# This will raise the KeyError here if ubiquity did not depend on it
|
||||||
|
seen.remove(ver.package)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
workset.add(ver.package)
|
||||||
|
|
||||||
|
seen.add(pkg)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
8
debian/changelog
vendored
8
debian/changelog
vendored
@ -1,3 +1,11 @@
|
|||||||
|
livecd-rootfs (2.624) focal; urgency=medium
|
||||||
|
|
||||||
|
* Mark packages as autoinstalled using apt-mark in the chroot
|
||||||
|
instead of using python-apt that potentially starts talking to the build
|
||||||
|
system's dbus causing various problems. (LP: #1835406)
|
||||||
|
|
||||||
|
-- Balint Reczey <rbalint@ubuntu.com> Wed, 13 Nov 2019 21:01:51 +0100
|
||||||
|
|
||||||
livecd-rootfs (2.623) focal; urgency=medium
|
livecd-rootfs (2.623) focal; urgency=medium
|
||||||
|
|
||||||
* Add new buildd based bootable image for snapcraft builds.
|
* Add new buildd based bootable image for snapcraft builds.
|
||||||
|
1
debian/install
vendored
1
debian/install
vendored
@ -1,3 +1,4 @@
|
|||||||
|
auto-markable-pkgs usr/share/livecd-rootfs
|
||||||
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
|
minimize-manual usr/share/livecd-rootfs
|
||||||
|
@ -1,64 +1,16 @@
|
|||||||
#!/usr/bin/python3
|
#!/bin/sh
|
||||||
"""Minimize the number of manually installed packages in the image.
|
|
||||||
|
|
||||||
Finds all manually installed meta packages, and marks their dependencies
|
# Minimize the number of manually installed packages in the image
|
||||||
as automatically installed.
|
|
||||||
"""
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import apt
|
# Finds all packages which could be marked as automatically installed and marks
|
||||||
|
# them as such
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
def is_root(pkg):
|
chroot=$1
|
||||||
"""Check if the package is a root package (manually inst. meta)"""
|
|
||||||
section = pkg.candidate.section if pkg.candidate else ""
|
|
||||||
return (pkg.is_installed and
|
|
||||||
not pkg.is_auto_installed and
|
|
||||||
(section == "metapackages" or
|
|
||||||
section.endswith("/metapackages")))
|
|
||||||
|
|
||||||
|
auto_packages=$(/usr/share/livecd-rootfs/auto-markable-pkgs $chroot)
|
||||||
def main():
|
if [ -n "$auto_packages" ]; then
|
||||||
"""Main function"""
|
chroot chroot apt-mark auto $auto_packages
|
||||||
cache = apt.Cache(rootdir=sys.argv[1] if len(sys.argv) > 1 else None)
|
fi
|
||||||
roots = set(pkg for pkg in cache if is_root(pkg))
|
[ -z "$(/usr/share/livecd-rootfs/auto-markable-pkgs $chroot 2> /dev/null)" ]
|
||||||
workset = set(roots)
|
|
||||||
seen = set()
|
|
||||||
ubiquity_depends = 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 and pkg not in ubiquity_depends:
|
|
||||||
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:
|
|
||||||
if pkg.name == "ubiquity":
|
|
||||||
ubiquity_depends.add(ver.package)
|
|
||||||
if pkg.name != "ubiquity":
|
|
||||||
# Reprocess this package again, as we did not mark it when we visited it from ubiquity
|
|
||||||
try:
|
|
||||||
ubiquity_depends.remove(ver.package)
|
|
||||||
# This will raise the KeyError here if ubiquity did not depend on it
|
|
||||||
seen.remove(ver.package)
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
workset.add(ver.package)
|
|
||||||
|
|
||||||
seen.add(pkg)
|
|
||||||
|
|
||||||
cache.commit()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user