From f9f0aae9de53d98f80641e2d6d3e3645e73bd6de Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Tue, 13 Mar 2018 10:42:46 +0000 Subject: [PATCH] Migrate ppa_browser to python3/aptdaemon --- test | 2 +- usr/lib/linuxmint/mintSources/ppa_browser.py | 37 +++++++++----------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/test b/test index 8e46631..b455776 100755 --- a/test +++ b/test @@ -2,4 +2,4 @@ sudo rm -rf /usr/lib/linuxmint/mintSources sudo cp -R usr / -mintsources +sudo mintsources diff --git a/usr/lib/linuxmint/mintSources/ppa_browser.py b/usr/lib/linuxmint/mintSources/ppa_browser.py index 1141420..e6db57f 100755 --- a/usr/lib/linuxmint/mintSources/ppa_browser.py +++ b/usr/lib/linuxmint/mintSources/ppa_browser.py @@ -1,11 +1,12 @@ -#!/usr/bin/python2 +#!/usr/bin/python3 import os import sys import apt -import commands import gettext import tempfile import subprocess +import mintcommon +import platform import gi gi.require_version('Gtk', '3.0') @@ -17,18 +18,18 @@ class PPA_Browser(): def __init__(self, base_codename, ppa_owner, ppa_name): - architecture = commands.getoutput("dpkg --print-architecture") + if platform.machine() == "X86_64": + architecture = "amd64" + else: + architecture = "i386" ppa_origin = "LP-PPA-%s-%s" % (ppa_owner, ppa_name) ppa_origin_simple = "LP-PPA-%s" % (ppa_owner) ppa_file = "/var/lib/apt/lists/ppa.launchpad.net_%s_%s_ubuntu_dists_%s_main_binary-%s_Packages" % (ppa_owner, ppa_name, base_codename, architecture) if not os.path.exists(ppa_file): - print "%s not found!" % ppa_file + print ("%s not found!" % ppa_file) sys.exit(1) - # print "Using origin: %s" % ppa_origin - # print "Using release info: %s" % ppa_file - self.packages_to_install = [] self.packages_installed_from_ppa = [] @@ -68,8 +69,9 @@ def __init__(self, base_codename, ppa_owner, ppa_name): col.set_sort_column_id(2) cache = apt.Cache() + self.apt = mintcommon.APT(self.window) - packages = commands.getoutput("grep 'Package:' %s | sort | awk {'print $2;'}" % ppa_file).split("\n") + packages = subprocess.getoutput("grep 'Package:' %s | sort | awk {'print $2;'}" % ppa_file).split("\n") for package in packages: if package in cache: pkg = cache[package] @@ -87,7 +89,7 @@ def __init__(self, base_codename, ppa_owner, ppa_name): self.packages_installed_from_ppa.append(pkg.name) else: self.model.append((pkg, False, "%s %s" % (pkg.name, candidate.version))) - + break treeview.show() self.window.show_all() @@ -115,18 +117,11 @@ def toggled (self, renderer, path): self.install_button.set_sensitive(len(self.packages_to_install) > 0) def install (self, button): - cmd = ["pkexec", "/usr/sbin/synaptic", "--hide-main-window", "--non-interactive", "--parent-window-id", "%s" % self.window.get_window().get_xid(), "-o", "Synaptic::closeZvt=true"] - f = tempfile.NamedTemporaryFile() - for pkg in self.packages_to_install: - f.write("%s\tinstall\n" % pkg) - cmd.append("--set-selections-file") - cmd.append("%s" % f.name) - f.flush() - comnd = subprocess.Popen(' '.join(cmd), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) - returnCode = comnd.wait() - f.close() - if (returnCode == 0): - sys.exit(0) + self.apt.set_finished_callback(self.exit) + self.apt.install_packages(self.packages_to_install) + + def exit(self, transaction=None, exit_state=None): + sys.exit(0) if __name__ == "__main__": base_codename = sys.argv[1]