summaryrefslogtreecommitdiff
path: root/UpdateManager
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2006-02-27 19:47:44 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2006-02-27 19:47:44 +0100
commit9fab3e0069ee2f9b05084787ce114a67ae65c13f (patch)
treea1d3680ffb37fac0550959de618d1640428eaf8c /UpdateManager
parenteadf5eaff85bec1548298ce14874cac070f44454 (diff)
parent67389517a2f4c58ee03b3ba6ee540df4f8f073f7 (diff)
downloadpython-apt-9fab3e0069ee2f9b05084787ce114a67ae65c13f.tar.gz
* merged with main
Diffstat (limited to 'UpdateManager')
-rw-r--r--UpdateManager/Common/DistInfo.py5
-rw-r--r--UpdateManager/DistUpgradeFetcher.py46
-rw-r--r--UpdateManager/MetaRelease.py8
-rw-r--r--UpdateManager/UpdateManager.py12
4 files changed, 54 insertions, 17 deletions
diff --git a/UpdateManager/Common/DistInfo.py b/UpdateManager/Common/DistInfo.py
index df244a51..102b981c 100644
--- a/UpdateManager/Common/DistInfo.py
+++ b/UpdateManager/Common/DistInfo.py
@@ -22,6 +22,7 @@
import os
import gettext
+from os import getenv
import ConfigParser
_ = gettext.gettext
@@ -51,6 +52,8 @@ class DistInfo:
pipe.close()
del pipe
+ self.dist = dist
+
dist_fname = "%s/%s.info" % (base_dir, dist)
dist_file = open (dist_fname)
if not dist_file:
@@ -100,7 +103,7 @@ class DistInfo:
if __name__ == "__main__":
- d = DistInfo ("Debian", "../distribution-data")
+ d = DistInfo ("Debian", "../../channels")
print d.changelogs_uri
for suite in d.suites:
print suite.name
diff --git a/UpdateManager/DistUpgradeFetcher.py b/UpdateManager/DistUpgradeFetcher.py
index b6d9161b..676f064b 100644
--- a/UpdateManager/DistUpgradeFetcher.py
+++ b/UpdateManager/DistUpgradeFetcher.py
@@ -91,7 +91,19 @@ class DistUpgradeFetcher(object):
return False
return True
- def authenticate(self, file, signature, keyring='/etc/apt/trusted.gpg'):
+ def authenticate(self):
+ if self.new_dist.upgradeToolSig:
+ f = self.tmpdir+"/"+os.path.basename(self.new_dist.upgradeTool)
+ sig = self.tmpdir+"/"+os.path.basename(self.new_dist.upgradeToolSig)
+ print "authenticate '%s' against '%s' " % (f,sig)
+ if not self.gpgauthenticate(f, sig):
+ return False
+
+ # we may return False here by default if we want to make a sig
+ # mandatory
+ return True
+
+ def gpgauthenticate(self, file, signature, keyring='/etc/apt/trusted.gpg'):
""" authenticated a file against a given signature, if no keyring
is given use the apt default keyring
"""
@@ -101,6 +113,7 @@ class DistUpgradeFetcher(object):
proc = gpg.run(['--verify', signature, file],
create_fhs=['status','logger','stderr'])
gpgres = proc.handles['status'].read()
+ proc.wait()
if "VALIDSIG" in gpgres:
return True
return False
@@ -140,19 +153,28 @@ class DistUpgradeFetcher(object):
# now download the tarball with the upgrade script
self.tmpdir = tmpdir = tempfile.mkdtemp()
os.chdir(tmpdir)
+
+ # turn debugging on here (if required)
+ #apt_pkg.Config.Set("Debug::Acquire::http","1")
+
+ progress = GtkProgress.GtkFetchProgress(self.parent,
+ _("Downloading the upgrade "
+ "tool"),
+ _("The upgrade tool will "
+ "guide you through the "
+ "upgrade process."))
+ fetcher = apt_pkg.GetAcquire(progress)
+
+ if self.new_dist.upgradeToolSig != None:
+ uri = self.new_dist.upgradeToolSig
+ af = apt_pkg.GetPkgAcqFile(fetcher,uri, descr=_("Upgrade tool signature"))
if self.new_dist.upgradeTool != None:
- progress = GtkProgress.GtkFetchProgress(self.parent,
- _("Downloading the upgrade "
- "tool"),
- _("The upgrade tool will "
- "guide you through the "
- "upgrade process."))
- fetcher = apt_pkg.GetAcquire(progress)
self.uri = self.new_dist.upgradeTool
af = apt_pkg.GetPkgAcqFile(fetcher,self.uri, descr=_("Upgrade tool"))
if fetcher.Run() != fetcher.ResultContinue:
return False
return True
+ return False
def runDistUpgrader(self):
#print "runing: %s" % script
@@ -185,10 +207,10 @@ class DistUpgradeFetcher(object):
print "verify failed"
self.cleanup()
return
- #if not self.authenticate(distUpgradeTar, distUpgradeSig):
- # print "authenticate failed"
- # self.cleanup()
- # return
+ if not self.authenticate():
+ print "authenticate failed"
+ self.cleanup()
+ return
self.runDistUpgrader()
diff --git a/UpdateManager/MetaRelease.py b/UpdateManager/MetaRelease.py
index cd56970f..fde705bb 100644
--- a/UpdateManager/MetaRelease.py
+++ b/UpdateManager/MetaRelease.py
@@ -38,12 +38,13 @@ class Dist(object):
self.supported = supported
self.releaseNotesURI = None
self.upgradeTool = None
+ self.upgradeToolSig = None
class MetaRelease(gobject.GObject):
# some constants
- #METARELEASE_URI = "http://changelogs.ubuntu.com/meta-release"
- METARELEASE_URI = "http://people.ubuntu.com/~mvo/dist-upgrader/meta-release-test.save"
+ METARELEASE_URI = "http://changelogs.ubuntu.com/meta-release"
+ #METARELEASE_URI = "http://people.ubuntu.com/~mvo/dist-upgrader/meta-release-test2"
METARELEASE_FILE = "/var/lib/update-manager/meta-release"
__gsignals__ = {
@@ -73,6 +74,7 @@ class MetaRelease(gobject.GObject):
if res != 0:
sys.stderr.write("lsb_release returned exitcode: %i\n" % res)
dist = string.strip(p.stdout.readline())
+ #dist = "breezy"
return dist
def check(self):
@@ -107,6 +109,8 @@ class MetaRelease(gobject.GObject):
dist.releaseNotesURI = index_tag.Section["ReleaseNotes"]
if index_tag.Section.has_key("UpgradeTool"):
dist.upgradeTool = index_tag.Section["UpgradeTool"]
+ if index_tag.Section.has_key("UpgradeToolSignature"):
+ dist.upgradeToolSig = index_tag.Section["UpgradeToolSignature"]
dists.append(dist)
if name == current_dist_name:
current_dist = dist
diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py
index 8549f1c3..590391b9 100644
--- a/UpdateManager/UpdateManager.py
+++ b/UpdateManager/UpdateManager.py
@@ -28,6 +28,7 @@ pygtk.require('2.0')
import gtk
import gtk.gdk
import gtk.glade
+import gconf
import gobject
import apt
import apt_pkg
@@ -40,7 +41,6 @@ import os.path
import urllib2
import re
import tempfile
-import gconf
import pango
import subprocess
import pwd
@@ -177,7 +177,7 @@ class UpdateList:
#print "WARNING, keeping packages"
msg = ("<big><b>%s</b></big>\n\n%s" % \
(_("Cannot install all available updates"),
- _("Some updates require to remove further software. "
+ _("Some updates require the removal of further software. "
"Use the function \"Smart Upgrade\" of the package manager "
"\"Synaptic\" or run \"sudo apt-get dist-upgrade\" in a "
"terminal to update your system completely.")))
@@ -288,6 +288,10 @@ class UpdateManager(SimpleGladeApp):
self.restore_state()
+ def on_checkbutton_reminder_toggled(self, checkbutton):
+ self.gconfclient.set_bool("/apps/update-manager/remind_reload",
+ not checkbutton.get_active())
+
def close(self, widget, data=None):
if self.window_main.get_property("sensitive") is False:
return True
@@ -702,6 +706,10 @@ class UpdateManager(SimpleGladeApp):
def check_auto_update(self):
# Check if automatic update is enabled. If not show a dialog to inform
# the user about the need of manual "reloads"
+ remind = self.gconfclient.get_bool("/apps/update-manager/remind_reload")
+ if remind == False:
+ return
+
update_days = apt_pkg.Config.FindI("APT::Periodic::Update-Package-Lists")
if update_days < 1:
self.dialog_manual_update.set_transient_for(self.window_main)