def prepare(self): if (self.db.get('apt-setup/restricted') == 'false' or self.db.get('apt-setup/multiverse') == 'false'): self.ui.set_allow_nonfree(False) else: use_nonfree = self.db.get('ubiquity/use_nonfree') == 'true' self.ui.set_use_nonfree(use_nonfree) arch, subarch = archdetect() if 'efi' in subarch: if is_secure_boot(): self.ui.set_using_secureboot(True) self.ui.download_updates = self.db.get( 'ubiquity/download_updates') == 'true' if self.ui.download_updates_enabled: self.ui.set_download_updates(self.ui.download_updates) minimal_install = self.db.get('ubiquity/minimal_install') == 'true' self.ui.set_minimal_install(minimal_install) self.apply_debconf_branding() # wait for it to finish if self.frontend.ubuntu_drivers: self.frontend.ubuntu_drivers.communicate() self.frontend.ubuntu_drivers = None # output whether there are OEM packages for this system try: with open('/run/ubuntu-drivers-oem.autoinstall', 'r') as f: syslog.syslog( F'ubuntu-drivers list-oem finished with: "{" ".join(f.read().splitlines())}"' ) except FileNotFoundError: syslog.syslog( "ubuntu-drivers list-oem finished with no available packages. Maybe we need to apt update? " "Doing that and trying again.") # We only do this when we really have to since it could be slow: apt update & re-run of ubuntu-drivers self.frontend.save_oem_metapackages_list(wait_finished=True) try: with open('/run/ubuntu-drivers-oem.autoinstall', 'r') as f: syslog.syslog( F'ubuntu-drivers list-oem finished with: "{" ".join(f.read().splitlines())}"' ) except FileNotFoundError: syslog.syslog("No, we didn't find any OEM packages again.") if self.should_show_rst_page(): if not self.ui.show_rst_page(): self.setup_sufficient_space() else: self.ui.plugin_is_restart = True else: self.setup_sufficient_space() command = ['/usr/share/ubiquity/simple-plugins', 'prepare'] questions = ['ubiquity/use_nonfree'] return command, questions
def prepare(self): if (self.db.get('apt-setup/restricted') == 'false' or self.db.get('apt-setup/multiverse') == 'false'): self.ui.set_allow_nonfree(False) else: use_nonfree = self.db.get('ubiquity/use_nonfree') == 'true' self.ui.set_use_nonfree(use_nonfree) arch, subarch = archdetect() if 'efi' in subarch: if is_secure_boot(): self.ui.set_using_secureboot(True) download_updates = self.db.get('ubiquity/download_updates') == 'true' self.ui.set_download_updates(download_updates) self.apply_debconf_branding() self.setup_sufficient_space() command = ['/usr/share/ubiquity/simple-plugins', 'prepare'] questions = ['ubiquity/use_nonfree'] return command, questions
def generate_blacklist(self): manifest_remove = os.path.join(self.casper_path, 'filesystem.manifest-remove') manifest_desktop = os.path.join(self.casper_path, 'filesystem.manifest-desktop') manifest = os.path.join(self.casper_path, 'filesystem.manifest') if os.path.exists(manifest_remove) and os.path.exists(manifest): difference = set() with open(manifest_remove) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] difference.add(pkg.split()[0]) live_packages = set() with open(manifest) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] live_packages.add(pkg.split()[0]) desktop_packages = live_packages - difference elif os.path.exists(manifest_desktop) and os.path.exists(manifest): desktop_packages = set() with open(manifest_desktop) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] desktop_packages.add(pkg.split()[0]) live_packages = set() with open(manifest) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] live_packages.add(pkg.split()[0]) difference = live_packages - desktop_packages else: difference = set() cache = Cache() use_restricted = True try: if self.db.get('apt-setup/restricted') == 'false': use_restricted = False except debconf.DebconfError: pass if not use_restricted: for pkg in cache.keys(): if (cache[pkg].is_installed and cache[pkg].section.startswith('restricted/')): difference.add(pkg) # Keep packages we explicitly installed. keep = install_misc.query_recorded_installed() arch, subarch = install_misc.archdetect() # Less than ideal. Since we cannot know which bootloader we'll need # at file copy time, we should figure out why grub still fails when # apt-install-direct is present during configure_bootloader (code # removed). if arch in ('amd64', 'i386'): if subarch == 'efi': keep.add('grub-efi') keep.add('grub-efi-amd64') keep.add('grub-efi-amd64-signed') keep.add('shim-signed') keep.add('mokutil') keep.add('fwupdate-signed') install_misc.record_installed(['fwupdate-signed']) try: altmeta = self.db.get('base-installer/kernel/altmeta') if altmeta: altmeta = '-%s' % altmeta except debconf.DebconfError: altmeta = '' keep.add('linux-signed-generic%s' % altmeta) else: keep.add('grub') keep.add('grub-pc') elif (arch in ('armel', 'armhf') and subarch in ('omap', 'omap4', 'mx5')): keep.add('flash-kernel') keep.add('u-boot-tools') elif arch == 'powerpc': keep.add('yaboot') keep.add('hfsutils') # Even adding ubiquity as a depends to oem-config-{gtk,kde} doesn't # appear to force ubiquity and libdebian-installer4 to copy all of # their files, so this does the trick. try: if self.db.get('oem-config/enable') == 'true': keep.add('ubiquity') except (debconf.DebconfError, IOError): pass difference -= install_misc.expand_dependencies_simple( cache, keep, difference) # Consider only packages that don't have a prerm, and which can # therefore have their files removed without any preliminary work. difference = { x for x in difference if not os.path.exists('/var/lib/dpkg/info/%s.prerm' % x) } confirmed_remove = set() with cache.actiongroup(): for pkg in sorted(difference): if pkg in confirmed_remove: continue would_remove = install_misc.get_remove_list(cache, [pkg], recursive=True) if would_remove <= difference: confirmed_remove |= would_remove # Leave these marked for removal in the apt cache to # speed up further calculations. else: for removedpkg in would_remove: cachedpkg = install_misc.get_cache_pkg( cache, removedpkg) cachedpkg.mark_keep() difference = confirmed_remove if len(difference) == 0: del cache self.blacklist = {} return cmd = ['dpkg', '-L'] cmd.extend(difference) subp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) res = subp.communicate()[0].splitlines() u = {} for x in res: u[x] = 1 self.blacklist = u
def generate_blacklist(self): manifest_remove = os.path.join(self.casper_path, 'filesystem.manifest-remove') manifest_desktop = os.path.join(self.casper_path, 'filesystem.manifest-desktop') manifest = os.path.join(self.casper_path, 'filesystem.manifest') if os.path.exists(manifest_remove) and os.path.exists(manifest): difference = set() with open(manifest_remove) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] difference.add(pkg.split()[0]) live_packages = set() with open(manifest) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] live_packages.add(pkg.split()[0]) desktop_packages = live_packages - difference elif os.path.exists(manifest_desktop) and os.path.exists(manifest): desktop_packages = set() with open(manifest_desktop) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] desktop_packages.add(pkg.split()[0]) live_packages = set() with open(manifest) as manifest_file: for line in manifest_file: if line.strip() != '' and not line.startswith('#'): pkg = line.split(':')[0] live_packages.add(pkg.split()[0]) difference = live_packages - desktop_packages else: difference = set() cache = Cache() use_restricted = True try: if self.db.get('apt-setup/restricted') == 'false': use_restricted = False except debconf.DebconfError: pass if not use_restricted: for pkg in cache.keys(): if (cache[pkg].is_installed and cache[pkg].section.startswith('restricted/')): difference.add(pkg) # Keep packages we explicitly installed. keep = install_misc.query_recorded_installed() arch, subarch = install_misc.archdetect() # Less than ideal. Since we cannot know which bootloader we'll need # at file copy time, we should figure out why grub still fails when # apt-install-direct is present during configure_bootloader (code # removed). if arch in ('amd64', 'i386'): if subarch == 'efi': keep.add('grub-efi') keep.add('grub-efi-amd64') keep.add('grub-efi-amd64-signed') keep.add('shim-signed') keep.add('mokutil') keep.add('fwupdate-signed') install_misc.record_installed(['fwupdate-signed']) try: altmeta = self.db.get( 'base-installer/kernel/altmeta') if altmeta: altmeta = '-%s' % altmeta except debconf.DebconfError: altmeta = '' keep.add('linux-signed-generic%s' % altmeta) else: keep.add('grub') keep.add('grub-pc') elif (arch in ('armel', 'armhf') and subarch in ('omap', 'omap4', 'mx5')): keep.add('flash-kernel') keep.add('u-boot-tools') elif arch == 'powerpc': keep.add('yaboot') keep.add('hfsutils') # Even adding ubiquity as a depends to oem-config-{gtk,kde} doesn't # appear to force ubiquity and libdebian-installer4 to copy all of # their files, so this does the trick. try: if self.db.get('oem-config/enable') == 'true': keep.add('ubiquity') except (debconf.DebconfError, IOError): pass difference -= install_misc.expand_dependencies_simple( cache, keep, difference) # Consider only packages that don't have a prerm, and which can # therefore have their files removed without any preliminary work. difference = { x for x in difference if not os.path.exists('/var/lib/dpkg/info/%s.prerm' % x)} confirmed_remove = set() with cache.actiongroup(): for pkg in sorted(difference): if pkg in confirmed_remove: continue would_remove = install_misc.get_remove_list( cache, [pkg], recursive=True) if would_remove <= difference: confirmed_remove |= would_remove # Leave these marked for removal in the apt cache to # speed up further calculations. else: for removedpkg in would_remove: cachedpkg = install_misc.get_cache_pkg( cache, removedpkg) cachedpkg.mark_keep() difference = confirmed_remove if len(difference) == 0: del cache self.blacklist = {} return cmd = ['dpkg', '-L'] cmd.extend(difference) subp = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) res = subp.communicate()[0].splitlines() u = {} for x in res: u[x] = 1 self.blacklist = u
def generate_blacklist(self): manifest_remove = os.path.join(self.casper_path, "filesystem.manifest-remove") manifest_desktop = os.path.join(self.casper_path, "filesystem.manifest-desktop") manifest = os.path.join(self.casper_path, "filesystem.manifest") if os.path.exists(manifest_remove) and os.path.exists(manifest): difference = set() with open(manifest_remove) as manifest_file: for line in manifest_file: if line.strip() != "" and not line.startswith("#"): difference.add(line.split()[0]) live_packages = set() with open(manifest) as manifest_file: for line in manifest_file: if line.strip() != "" and not line.startswith("#"): live_packages.add(line.split()[0]) desktop_packages = live_packages - difference elif os.path.exists(manifest_desktop) and os.path.exists(manifest): desktop_packages = set() with open(manifest_desktop) as manifest_file: for line in manifest_file: if line.strip() != "" and not line.startswith("#"): desktop_packages.add(line.split()[0]) live_packages = set() with open(manifest) as manifest_file: for line in manifest_file: if line.strip() != "" and not line.startswith("#"): live_packages.add(line.split()[0]) difference = live_packages - desktop_packages else: difference = set() cache = Cache() use_restricted = True try: if self.db.get("apt-setup/restricted") == "false": use_restricted = False except debconf.DebconfError: pass if not use_restricted: for pkg in cache.keys(): if cache[pkg].is_installed and cache[pkg].section.startswith("restricted/"): difference.add(pkg) # Keep packages we explicitly installed. keep = install_misc.query_recorded_installed() arch, subarch = install_misc.archdetect() # Less than ideal. Since we cannot know which bootloader we'll need # at file copy time, we should figure out why grub still fails when # apt-install-direct is present during configure_bootloader (code # removed). if arch in ("amd64", "i386"): if subarch == "efi": keep.add("grub-efi") keep.add("grub-efi-amd64") efi_vars = "/sys/firmware/efi/vars" sb_var = os.path.join(efi_vars, "SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c", "data") if os.path.exists(sb_var): with open(sb_var, "rb") as sb_var_file: if sb_var_file.read(1) == b"\x01": keep.add("grub-efi-amd64-signed") keep.add("shim-signed") try: altmeta = self.db.get("base-installer/kernel/altmeta") if altmeta: altmeta = "-%s" % altmeta except debconf.DebconfError: altmeta = "" keep.add("linux-signed-generic%s" % altmeta) else: keep.add("grub") keep.add("grub-pc") elif arch in ("armel", "armhf") and subarch in ("omap", "omap4", "mx5"): keep.add("flash-kernel") keep.add("u-boot-tools") elif arch == "powerpc": keep.add("yaboot") keep.add("hfsutils") # Even adding ubiquity as a depends to oem-config-{gtk,kde} doesn't # appear to force ubiquity and libdebian-installer4 to copy all of # their files, so this does the trick. try: if self.db.get("oem-config/enable") == "true": keep.add("ubiquity") except (debconf.DebconfError, IOError): pass difference -= install_misc.expand_dependencies_simple(cache, keep, difference) # Consider only packages that don't have a prerm, and which can # therefore have their files removed without any preliminary work. difference = {x for x in difference if not os.path.exists("/var/lib/dpkg/info/%s.prerm" % x)} confirmed_remove = set() with cache.actiongroup(): for pkg in sorted(difference): if pkg in confirmed_remove: continue would_remove = install_misc.get_remove_list(cache, [pkg], recursive=True) if would_remove <= difference: confirmed_remove |= would_remove # Leave these marked for removal in the apt cache to # speed up further calculations. else: for removedpkg in would_remove: cachedpkg = install_misc.get_cache_pkg(cache, removedpkg) cachedpkg.mark_keep() difference = confirmed_remove if len(difference) == 0: del cache self.blacklist = {} return cmd = ["dpkg", "-L"] cmd.extend(difference) subp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) res = subp.communicate()[0].splitlines() u = {} for x in res: u[x] = 1 self.blacklist = u