diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2006-10-27 09:57:49 +0200 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2006-10-27 09:57:49 +0200 |
| commit | bed5736c7cf31070540bd7e27ffb073db3d7c396 (patch) | |
| tree | c733204d23625109cd282afcf2ac54539d300fd9 /DistUpgrade | |
| parent | 590c710c9feef18c9a23676aab1ce0fb7b6d2f75 (diff) | |
| parent | dcee921a1107db6e5c8042598641b422a77e24c2 (diff) | |
| download | python-apt-bed5736c7cf31070540bd7e27ffb073db3d7c396.tar.gz | |
* merged from main
Diffstat (limited to 'DistUpgrade')
| -rw-r--r-- | DistUpgrade/Changelog | 61 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgrade.cfg | 18 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgrade.glade | 3305 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeCache.py | 150 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeConfigParser.py | 4 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeControler.py | 196 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeView.py | 14 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeViewGtk.py | 100 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeViewText.py | 196 | ||||
| -rw-r--r-- | DistUpgrade/README | 15 | ||||
| -rw-r--r-- | DistUpgrade/ReleaseAnnouncement | 2 | ||||
| -rw-r--r-- | DistUpgrade/backport-source.list | 2 | ||||
| -rwxr-xr-x | DistUpgrade/build-tarball.sh | 5 | ||||
| -rwxr-xr-x | DistUpgrade/cdromupgrade | 4 | ||||
| -rwxr-xr-x | DistUpgrade/dist-upgrade.py | 6 | ||||
| -rw-r--r-- | DistUpgrade/removal_blacklist.cfg | 3 |
16 files changed, 2757 insertions, 1324 deletions
diff --git a/DistUpgrade/Changelog b/DistUpgrade/Changelog index 33ecff3d..b42e2d76 100644 --- a/DistUpgrade/Changelog +++ b/DistUpgrade/Changelog @@ -1,3 +1,64 @@ +2006-10-26: + - make sure that xserver-xorg-video-all get installed if + xserver-xorg-driver-all was installed before (lp: #58424) +2006-10-21: + - comment out old cdrom sources + - demotions updated +2006-10-21: + - fix incorrect arguments in fixup logging (lp: #67311) + - more error logging + - fix upgrade problems for people with unofficial compiz + repositories (lp: #58424) + - rosetta i18n updates + - uploaded +2006-10-17: + - ensure bzr, tomboy and xserver-xorg-input-* are properly + upgraded + - don't fail if dpkg sents unexpected status lines (lp: #66013) +2006-10-16: + - remove leftover references to ubuntu-base and + use ubuntu-minimal and ubuntu-standard instead + - updated translations from rosetta +2006-10-13: + - log held-back as well +2006-10-12: + - check if cdrom.lst actually exists before copying it +2006-10-11: + - keep pixbuf loader reference around so that we + have one after the upgrade when the old + /usr/lib/gtk-2.0/loader/2.4.0/ loader is gone. + This fixes the problem of missing stock-icons + after the upgrade. Also revalidate the theme + in each step. +2006-10-10: + - fix time calculation + - fix kubuntu upgrade case +2006-10-06: + - fix source.list rewrite corner case bug (#64159) +2006-10-04: + - improve the space checking/logging +2006-09-29: + - typo fix (thanks to Jane Silber) (lp: #62946) +2006-09-28: + - bugfix in the cdromupgrade script +2006-09-27: + - uploaded a version that only reverts the backport fetching + but no other changes compared to 2006-09-23 +2006-09-27: + - embarrassing bug cdromupgrade.sh +2006-09-26: + - comment out the getRequiredBackport code because we will + not use Breaks for the dapper->edgy upgrade yet + (see #54234 for the rationale) + - updated demotions.cfg for dapper->edgy + - special case the packages affected by the Breaks changes + - make sure that no translations get lost during the upgrade + (thanks to mdz for pointing this out) + - bugfixes +2006-09-23: + - support fetching backports of selected packages first and + use them for the upgrade (needed to support Breaks) + - fetch/use apt/dpkg/python-apt backports for the upgrade 2006-09-06: - increased the "free-space-savety-buffer" to 100MB 2006-09-05: diff --git a/DistUpgrade/DistUpgrade.cfg b/DistUpgrade/DistUpgrade.cfg index 7a8ebba9..c39cb9e5 100644 --- a/DistUpgrade/DistUpgrade.cfg +++ b/DistUpgrade/DistUpgrade.cfg @@ -1,22 +1,27 @@ [View] View=DistUpgradeViewGtk #View=DistUpgradeViewNonInteractive +#View=DistUpgradeViewText # Distro contains global information about the upgrade [Distro] # the meta-pkgs we support MetaPkgs=ubuntu-desktop, kubuntu-desktop, edubuntu-desktop, xubuntu-desktop -BaseMetaPkgs=ubuntu-minimal +BaseMetaPkgs=ubuntu-minimal, ubuntu-standard PostUpgradePurge=xorg-common, libgl1-mesa Demotions=demoted.cfg RemoveEssentialOk=sysvinit RemovalBlacklistFile=removal_blacklist.cfg +# if those packages were installed, make sure to keep them installed +# we use this right now to emulate Breaks +KeepInstalledPkgs=gnumeric, gnumeric-gtk, hpijs +KeepInstalledSection=translations # information about the individual meta-pkgs [ubuntu-desktop] KeyDependencies=gdm, gnome-panel, ubuntu-artwork # those pkgs will be marked remove right after the distUpgrade in the cache -PostUpgradeRemove=xchat, xscreensaver +PostUpgradeRemove=xscreensaver [kubuntu-desktop] KeyDependencies=kdm, kicker, kubuntu-artwork-usplash @@ -29,7 +34,6 @@ KeyDependencies=edubuntu-artwork, tuxpaint [xubuntu-desktop] KeyDependencies=xubuntu-artwork-usplash, xubuntu-default-settings, xfce4 - [Files] BackupExt=distUpgrade @@ -39,5 +43,11 @@ To=edgy ValidOrigin=Ubuntu ValidMirrors = mirrors.cfg +[Backports] +Packages=apt,dpkg,python2.4-apt +VersionIdent=~dapper +SourcesList=backport-source.list + + [Network] -MaxRetries=3
\ No newline at end of file +MaxRetries=3 diff --git a/DistUpgrade/DistUpgrade.glade b/DistUpgrade/DistUpgrade.glade index dbe7911d..2d4ebf92 100644 --- a/DistUpgrade/DistUpgrade.glade +++ b/DistUpgrade/DistUpgrade.glade @@ -1,1230 +1,2083 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> -<!-- Generated with glade3 - Version: 3.0.0 - Date: Tue Aug 29 21:21:15 2006 - User: egon - Host: top ---> +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + <glade-interface> - <widget class="GtkWindow" id="window_main"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="title">Upgrading Ubuntu</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER</property> - <property name="urgency_hint">True</property> - <signal name="delete_event" handler="on_window_main_delete_event"/> - <signal name="destroy_event" handler="on_window_main_destroy_event"/> - <child> - <widget class="GtkVBox" id="vbox5"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label_title"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="label" translatable="yes"><span weight="bold" size="x-large">Upgrading to Ubuntu 6.10</span></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox3"> - <property name="visible">True</property> - <child> - <widget class="GtkLabel" id="label17"> - <property name="visible">True</property> - <property name="label" translatable="yes"> </property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkTable" id="table_steps"> - <property name="visible">True</property> - <property name="n_rows">5</property> - <property name="n_columns">2</property> - <property name="column_spacing">6</property> - <property name="row_spacing">6</property> - <child> - <widget class="GtkLabel" id="label_step5"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="label" translatable="yes">Restarting the system</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkImage" id="image_step5"> - <property name="width_request">18</property> - <property name="height_request">18</property> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkImage" id="image_step1"> - <property name="width_request">18</property> - <property name="height_request">18</property> - <property name="visible">True</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label_step4"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="label" translatable="yes">Cleaning up</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label_step3"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="label" translatable="yes">Fetching and installing the upgrades</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label_step2"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="label" translatable="yes">Modifying the software channels</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label_step1"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="label" translatable="yes">Preparing the upgrade</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkImage" id="image_step4"> - <property name="width_request">18</property> - <property name="height_request">18</property> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkImage" id="image_step3"> - <property name="width_request">18</property> - <property name="height_request">18</property> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkImage" id="image_step2"> - <property name="width_request">18</property> - <property name="height_request">18</property> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox5"> - <property name="visible">True</property> - <property name="spacing">4</property> - <child> - <widget class="GtkProgressBar" id="progressbar_cache"> - <property name="width_request">350</property> - <property name="visible">True</property> - <property name="pulse_step">0.1</property> - <property name="text"> </property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label_status"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="wrap">True</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkExpander" id="expander_terminal"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="spacing">4</property> - <child> - <widget class="GtkHBox" id="hbox1"> - <property name="visible">True</property> - <child> - <widget class="Custom" id="custom_terminal"> - <property name="visible">True</property> - <property name="creation_function">create_terminal</property> - </widget> - </child> - <child> - <widget class="GtkVScrollbar" id="vscrollbar_terminal"> - <property name="visible">True</property> - <property name="adjustment">0.000000 0.000000 0.000000 0.000000 0.000000 0.000000</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label6"> - <property name="visible">True</property> - <property name="label" translatable="yes">Terminal</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="position">3</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_changes"> - <property name="border_width">6</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="default_width">500</property> - <property name="default_height">400</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="skip_taskbar_hint">True</property> - <property name="skip_pager_hint">True</property> - <property name="urgency_hint">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox2"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkHBox" id="hbox12"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image9"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-question</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox3"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label_summary"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="xalign">0.000000</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - <property name="selectable">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label_changes"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkExpander" id="expander_details"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="width_request">400</property> - <property name="height_request">200</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTreeView" id="treeview_details"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="label" translatable="yes">Details</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox1"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button_cancel_changes"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="response_id">-6</property> - </widget> - </child> - <child> - <widget class="GtkButton" id="button_confirm_changes"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">_Start Upgrade</property> - <property name="use_underline">True</property> - <property name="response_id">-8</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_restart"> - <property name="border_width">6</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="skip_taskbar_hint">True</property> - <property name="skip_pager_hint">True</property> - <property name="urgency_hint">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox5"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image2"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-info</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label19"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="label" translatable="yes"><b><big>Restart the system to complete the upgrade</big></b></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button_restart"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="response_id">-8</property> - <child> - <widget class="GtkAlignment" id="alignment1"> - <property name="visible">True</property> - <property name="xscale">0.000000</property> - <property name="yscale">0.000000</property> - <child> - <widget class="GtkHBox" id="hbox6"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <widget class="GtkImage" id="image3"> - <property name="visible">True</property> - <property name="stock">gtk-refresh</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label20"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Restart Now</property> - <property name="use_underline">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkButton" id="button_restart"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="response_id">-7</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_error"> - <property name="border_width">6</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="skip_taskbar_hint">True</property> - <property name="skip_pager_hint">True</property> - <property name="urgency_hint">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox6"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox8"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image5"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-error</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox7"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label_error"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="xalign">0.000000</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - <property name="selectable">True</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkScrolledWindow" id="scroll_error"> - <property name="width_request">400</property> - <property name="height_request">200</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTextView" id="textview_error"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="pixels_above_lines">4</property> - <property name="pixels_below_lines">4</property> - <property name="editable">False</property> - <property name="left_margin">4</property> - <property name="right_margin">4</property> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox3"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button_bugreport"> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="label" translatable="yes">_Report Bug</property> - <property name="use_underline">True</property> - <property name="response_id">-8</property> - </widget> - </child> - <child> - <widget class="GtkButton" id="button6"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="response_id">-7</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_obsolete"> - <property name="border_width">6</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="default_width">500</property> - <property name="default_height">400</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="skip_taskbar_hint">True</property> - <property name="skip_pager_hint">True</property> - <property name="urgency_hint">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox8"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkVBox" id="vbox9"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox9"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image6"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-question</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox10"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label26"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="label" translatable="yes"><b><big>Start the upgrade?</big></b></property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label27"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="label">The upgrade of your system requires - - ... to download 2000 MByte - - ... to install 23 new packages - ... to remove 19 packages - ... to update 200 packages - -This is you last chance to cancel the upgrade.</property> - <property name="wrap">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkExpander" id="expander2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow4"> - <property name="width_request">400</property> - <property name="height_request">200</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTreeView" id="treeview2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label25"> - <property name="visible">True</property> - <property name="label" translatable="yes">Details</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox4"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button7"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="response_id">-6</property> - </widget> - </child> - <child> - <widget class="GtkButton" id="button8"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">_Continue</property> - <property name="use_underline">True</property> - <property name="response_id">-8</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_cancel"> - <property name="border_width">6</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="skip_taskbar_hint">True</property> - <property name="skip_pager_hint">True</property> - <property name="urgency_hint">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox11"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox11"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image8"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-question</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label29"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="label" translatable="yes"><b><big>Cancel the running upgrade?</big></b> + +<widget class="GtkWindow" id="window_main"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="title">Distribution Upgrade</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <signal name="delete_event" handler="on_window_main_delete_event"/> + <signal name="destroy_event" handler="on_window_main_destroy_event"/> + + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label_title"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b><big>Upgrading Ubuntu to version 6.10</big></b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table_steps"> + <property name="visible">True</property> + <property name="n_rows">5</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">6</property> + + <child> + <widget class="GtkLabel" id="label_step1"> + <property name="visible">True</property> + <property name="label" translatable="yes">Preparing the upgrade</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_step2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Modifying the software channels</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_step3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Fetching and installing the upgrades</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_step4"> + <property name="visible">True</property> + <property name="label" translatable="yes">Cleaning up</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_step5"> + <property name="visible">True</property> + <property name="label" translatable="yes">Restarting the system</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox17"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkArrow" id="arrow_step1"> + <property name="arrow_type">GTK_ARROW_RIGHT</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkImage" id="image_step1"> + <property name="width_request">18</property> + <property name="height_request">18</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox18"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkArrow" id="arrow_step2"> + <property name="arrow_type">GTK_ARROW_RIGHT</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkImage" id="image_step2"> + <property name="width_request">18</property> + <property name="height_request">18</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox19"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkArrow" id="arrow_step3"> + <property name="arrow_type">GTK_ARROW_RIGHT</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkImage" id="image_step3"> + <property name="width_request">18</property> + <property name="height_request">18</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox20"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkArrow" id="arrow_step4"> + <property name="arrow_type">GTK_ARROW_RIGHT</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkImage" id="image_step4"> + <property name="width_request">18</property> + <property name="height_request">18</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox21"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkArrow" id="arrow_step5"> + <property name="arrow_type">GTK_ARROW_RIGHT</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkImage" id="image_step5"> + <property name="width_request">18</property> + <property name="height_request">18</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">4</property> + + <child> + <widget class="GtkProgressBar" id="progressbar_cache"> + <property name="width_request">350</property> + <property name="visible">True</property> + <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> + <property name="fraction">0</property> + <property name="pulse_step">0.10000000149</property> + <property name="text"> </property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_status"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkExpander" id="expander_terminal"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="expanded">False</property> + <property name="spacing">4</property> + + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="Custom" id="custom_terminal"> + <property name="visible">True</property> + <property name="creation_function">create_terminal</property> + <property name="int1">0</property> + <property name="int2">0</property> + <property name="last_modification_time">Mon, 11 Sep 2006 12:48:22 GMT</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVScrollbar" id="vscrollbar_terminal"> + <property name="visible">True</property> + <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> + <property name="inverted">False</property> + <property name="adjustment">0 0 0 0 0 0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes">Terminal</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_changes"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="default_width">500</property> + <property name="default_height">400</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_cancel_changes"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_confirm_changes"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Start Upgrade</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox12"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image9"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label_summary"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_changes"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkExpander" id="expander_details"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="expanded">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="width_request">400</property> + <property name="height_request">200</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview_details"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes">Details</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_restart"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_restart"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image3"> + <property name="visible">True</property> + <property name="stock">gtk-refresh</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label20"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Restart Now</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_restart"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox5"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-info</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label19"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b><big>Restart the system to complete the upgrade</big></b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_error"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_bugreport"> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Report Bug</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button6"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox8"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image5"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-error</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label_error"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scroll_error"> + <property name="width_request">400</property> + <property name="height_request">200</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="textview_error"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_NONE</property> + <property name="cursor_visible">True</property> + <property name="pixels_above_lines">4</property> + <property name="pixels_below_lines">4</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">4</property> + <property name="right_margin">4</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_obsolete"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="default_width">500</property> + <property name="default_height">400</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox8"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button7"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button8"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Continue</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox9"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image6"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label26"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b><big>Start the upgrade?</big></b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label27"> + <property name="visible">True</property> + <property name="label"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkExpander" id="expander2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="expanded">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow4"> + <property name="width_request">400</property> + <property name="height_request">200</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label25"> + <property name="visible">True</property> + <property name="label" translatable="yes">Details</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_cancel"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox11"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox5"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_cancel"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Cancel Upgrade</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_resume"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Resume Upgrade</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox11"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image8"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label29"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b><big>Cancel the running upgrade?</big></b> The system could be in an unusable state if you cancel the upgrade. You are strongly adviced to resume the upgrade.</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox5"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button_cancel"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">_Cancel Upgrade</property> - <property name="use_underline">True</property> - <property name="response_id">-6</property> - </widget> - </child> - <child> - <widget class="GtkButton" id="button_resume"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="label" translatable="yes">_Resume Upgrade</property> - <property name="use_underline">True</property> - <property name="response_id">-5</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_conffile"> - <property name="border_width">5</property> - <property name="resizable">False</property> - <property name="modal">True</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox12"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox15"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image12"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-question</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox13"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label_conffile"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkExpander" id="expander3"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <child> - <widget class="GtkVBox" id="vbox14"> - <property name="visible">True</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow5"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTextView" id="textview_conffile"> - <property name="height_request">300</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="cursor_visible">False</property> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label33"> - <property name="visible">True</property> - <property name="label" translatable="yes">Difference between the files</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox6"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button9"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="response_id">-9</property> - <child> - <widget class="GtkAlignment" id="alignment2"> - <property name="visible">True</property> - <property name="xscale">0.000000</property> - <property name="yscale">0.000000</property> - <child> - <widget class="GtkHBox" id="hbox13"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <widget class="GtkImage" id="image10"> - <property name="visible">True</property> - <property name="stock">gtk-cancel</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label30"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Keep</property> - <property name="use_underline">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkButton" id="button10"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="response_id">-8</property> - <child> - <widget class="GtkAlignment" id="alignment3"> - <property name="visible">True</property> - <property name="xscale">0.000000</property> - <property name="yscale">0.000000</property> - <child> - <widget class="GtkHBox" id="hbox14"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <widget class="GtkImage" id="image11"> - <property name="visible">True</property> - <property name="stock">gtk-ok</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label31"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Replace</property> - <property name="use_underline">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="dialog_information"> - <property name="border_width">6</property> - <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="skip_taskbar_hint">True</property> - <property name="skip_pager_hint">True</property> - <property name="urgency_hint">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox15"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkHBox" id="hbox16"> - <property name="visible">True</property> - <property name="border_width">6</property> - <property name="spacing">12</property> - <child> - <widget class="GtkImage" id="image13"> - <property name="visible">True</property> - <property name="xalign">0.000000</property> - <property name="yalign">0.000000</property> - <property name="stock">gtk-dialog-info</property> - <property name="icon_size">6</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox16"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <widget class="GtkLabel" id="label_information"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="xalign">0.000000</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - <property name="selectable">True</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkScrolledWindow" id="scroll_information"> - <property name="width_request">400</property> - <property name="height_request">200</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTextView" id="textview_information"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="pixels_above_lines">4</property> - <property name="pixels_below_lines">4</property> - <property name="editable">False</property> - <property name="left_margin">4</property> - <property name="right_margin">4</property> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox7"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="button12"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="response_id">-5</property> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_conffile"> + <property name="border_width">5</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">True</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox12"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox6"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button9"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-9</property> + + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image10"> + <property name="visible">True</property> + <property name="stock">gtk-cancel</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label30"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Keep</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button10"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + + <child> + <widget class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox14"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image11"> + <property name="visible">True</property> + <property name="stock">gtk-ok</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label31"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Replace</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox15"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image12"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox13"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label_conffile"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkExpander" id="expander3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="expanded">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkVBox" id="vbox14"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow5"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="textview_conffile"> + <property name="height_request">300</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_NONE</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">0</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">0</property> + <property name="right_margin">0</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label33"> + <property name="visible">True</property> + <property name="label" translatable="yes">Difference between the files</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_information"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox15"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox7"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button12"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox16"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image13"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-info</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox16"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label_information"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scroll_information"> + <property name="width_request">400</property> + <property name="height_request">200</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="textview_information"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_NONE</property> + <property name="cursor_visible">True</property> + <property name="pixels_above_lines">4</property> + <property name="pixels_below_lines">4</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">4</property> + <property name="right_margin">4</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + </glade-interface> diff --git a/DistUpgrade/DistUpgradeCache.py b/DistUpgrade/DistUpgradeCache.py index 680e7d9e..d9dc9959 100644 --- a/DistUpgrade/DistUpgradeCache.py +++ b/DistUpgrade/DistUpgradeCache.py @@ -66,10 +66,12 @@ class MyCache(apt.Cache): if pkg.markedDelete: self.to_remove.append(pkg.name) + def clear(self): + self._depcache.Init() + def restore_snapshot(self): """ restore a snapshot """ - for pkg in self: - pkg.markKeep() + self.clear() for name in self.to_remove: pkg = self[name] pkg.markDelete() @@ -108,6 +110,39 @@ class MyCache(apt.Cache): if self.has_key(pkg): self._depcache.MarkDelete(self[pkg]._pkg,True) + def keepInstalledRule(self): + """ run after the dist-upgrade to ensure that certain + packages are kept installed """ + def keepInstalled(self, pkgname, reason): + if (self.has_key(pkgname) + and self[pkgname].isInstalled + and self[pkgname].markedDelete): + self.markInstall(pkgname, reason) + + # first the global list + for pkgname in self.config.getlist("Distro","KeepInstalledPkgs"): + keepInstalled(self, pkgname, "Distro KeepInstalledPkgs rule") + # the the per-metapkg rules + for key in self.metapkgs: + if self.has_key(key) and (self[key].isInstalled or + self[key].markedInstall): + for pkgname in self.config.getlist(key,"KeepInstalledPkgs"): + keepInstalled(self, pkgname, "%s KeepInstalledPkgs rule" % key) + # now the keepInstalledSection code + for section in self.config.getlist("Distro","KeepInstalledSection"): + for pkg in self: + if pkg.markedDelete and pkg.section == section: + keepInstalled(self, pkg.name, "Distro KeepInstalledSection rule: %s" % section) + # the the per-metapkg rules + for key in self.metapkgs: + if self.has_key(key) and (self[key].isInstalled or + self[key].markedInstall): + for section in self.config.getlist(key,"KeepInstalledSection"): + for pkg in self: + if pkg.markedDelete and pkg.section == section: + keepInstalled(self, pkg.name, "%s KeepInstalledSection rule: %s" % (key, section)) + + def postUpgradeRule(self): " run after the upgrade was done in the cache " for (rule, action) in [("Install", self.markInstall), @@ -128,6 +163,67 @@ class MyCache(apt.Cache): if func is not None: func() + def edgyQuirks(self): + """ this function works around quirks in the dapper->edgy upgrade """ + logging.debug("running edgyQuirks handler") + for pkg in self: + # deal with the python2.4-$foo -> python-$foo transition + if (pkg.name.startswith("python2.4-") and + pkg.isInstalled and + not pkg.markedUpgrade): + basepkg = "python-"+pkg.name[len("python2.4-"):] + if (self.has_key(basepkg) and not self[basepkg].markedInstall): + try: + self.markInstall(basepkg, + "python2.4->python upgrade rule") + except SystemError, e: + logging.debug("Failed to apply python2.4->python install: %s (%s)" % (basepkg, e)) + # xserver-xorg-input-$foo gives us trouble during the upgrade too + if (pkg.name.startswith("xserver-xorg-input-") and + pkg.isInstalled and + not pkg.markedUpgrade): + try: + self.markInstall(pkg.name, "xserver-xorg-input fixup rule") + except SystemError, e: + logging.debug("Failed to apply fixup: %s (%s)" % (pkg.name, e)) + + # deal with held-backs that are unneeded + for pkgname in ["hpijs", "bzr", "tomboy"]: + if (self.has_key(pkgname) and self[pkgname].isInstalled and + not self[pkgname].markedUpgrade): + try: + self.markInstall(pkgname,"%s quirk upgrade rule" % pkgname) + except SystemError, e: + logging.debug("Failed to apply %s install (%s)" % (pkgname,e)) + # libgl1-mesa-dri from xgl.compiz.info (and friends) breaks the + # upgrade, work around this here by downgrading the package + if self.has_key("libgl1-mesa-dri"): + pkg = self["libgl1-mesa-dri"] + # the version from the compiz repo has a "6.5.1+cvs20060824" ver + if (pkg.candidateVersion == pkg.installedVersion and + "+cvs2006" in pkg.candidateVersion): + for ver in pkg._pkg.VersionList: + # the "officual" edgy version has "6.5.1~20060817-0ubuntu3" + if "~2006" in ver.VerStr: + # ensure that it is from a trusted repo + for (VerFileIter, index) in ver.FileList: + indexfile = self._list.FindIndex(VerFileIter) + if indexfile and indexfile.IsTrusted: + logging.info("Forcing downgrade of libgl1-mesa-dri for xgl.compz.info installs") + self._depcache.SetCandidateVer(pkg._pkg, ver) + break + + # deal with general if $foo is installed, install $bar + for (fr, to) in [("xserver-xorg-driver-all","xserver-xorg-video-all")]: + if self.has_key(fr) and self.has_key(to): + if self[fr].isInstalled and not self[to].markedInstall: + try: + self.markInstall(to,"%s->%s quirk upgrade rule" % (fr, to)) + except SystemError, e: + logging.debug("Failed to apply %s->%s install (%s)" % (fr, to, e)) + + + def dapperQuirks(self): """ this function works around quirks in the breezy->dapper upgrade """ logging.debug("running dapperQuirks handler") @@ -142,20 +238,23 @@ class MyCache(apt.Cache): # upgrade (and make sure this way that the cache is ok) self.upgrade(True) - # then see if meta-pkgs are missing - if not self._installMetaPkgs(view): - raise SystemError, _("Can't upgrade required meta-packages") + # see if our KeepInstalled rules are honored + self.keepInstalledRule() # and if we have some special rules self.postUpgradeRule() + # then see if meta-pkgs are missing + if not self._installMetaPkgs(view): + raise SystemError, _("Can't upgrade required meta-packages") + # see if it all makes sense if not self._verifyChanges(): raise SystemError, _("A essential package would have to be removed") except SystemError, e: # FIXME: change the text to something more useful view.error(_("Could not calculate the upgrade"), - _("A unresolvable problem occured while " + _("A unresolvable problem occurred while " "calculating the upgrade.\n\n" "Please report this bug against the 'update-manager' " "package and include the files in /var/log/dist-upgrade/ " @@ -168,6 +267,15 @@ class MyCache(apt.Cache): for pkg in self.getChanges(): if pkg.markedDelete: continue + # special case because of a bug in pkg.candidateOrigin + if pkg.markedDowngrade: + for ver in pkg._pkg.VersionList: + # version is lower than installed one + if apt_pkg.VersionCompare(ver.VerStr, pkg.installedVersion) < 0: + for (verFileIter,index) in ver.FileList: + if not origin.trusted: + untrusted.append(pkg.name) + continue origins = pkg.candidateOrigin trusted = False for origin in origins: @@ -244,8 +352,8 @@ class MyCache(apt.Cache): logging.debug("guessing '%s' as missing meta-pkg" % key) try: self[key].markInstall() - except SystemError: - logging.error("failed to mark '%s' for install" % key) + except SystemError, e: + logging.error("failed to mark '%s' for install (%s)" % (key,e)) view.error(_("Can't install '%s'" % key), _("It was impossible to install a " "required package. Please report " @@ -259,7 +367,7 @@ class MyCache(apt.Cache): "ubuntu-desktop, kubuntu-desktop or " "edubuntu-desktop package and it was not " "possible to detect which version of " - "ubuntu you are runing.\n " + "ubuntu you are running.\n " "Please install one of the packages " "above first using synaptic or " "apt-get before proceeding.")) @@ -277,13 +385,18 @@ class MyCache(apt.Cache): # if it dosn't remove other packages depending on it # that are not obsolete as well self.create_snapshot() - self[pkgname].markDelete() - for pkg in self.getChanges(): - if pkg.name not in remove_candidates or \ - pkg.name in foreign_pkgs or \ - self._inRemovalBlacklist(pkg.name): - self.restore_snapshot() - return False + try: + self[pkgname].markDelete() + for pkg in self.getChanges(): + if pkg.name not in remove_candidates or \ + pkg.name in foreign_pkgs or \ + self._inRemovalBlacklist(pkg.name): + self.restore_snapshot() + return False + except (SystemError,KeyError),e: + logging.warning("_tryMarkObsoleteForRemoval failed for '%s' (%s)" % (pkgname,e)) + self.restore_snapshot() + return False return True def _getObsoletesPkgs(self): @@ -315,3 +428,8 @@ class MyCache(apt.Cache): if foreign: foreign_pkgs.add(pkg.name) return foreign_pkgs + +if __name__ == "__main__": + import DistUpgradeConfigParser + c = MyCache(DistUpgradeConfigParser.DistUpgradeConfig(".")) + c.clear() diff --git a/DistUpgrade/DistUpgradeConfigParser.py b/DistUpgrade/DistUpgradeConfigParser.py index 6879dfda..d5391939 100644 --- a/DistUpgrade/DistUpgradeConfigParser.py +++ b/DistUpgrade/DistUpgradeConfigParser.py @@ -2,10 +2,10 @@ from ConfigParser import ConfigParser, NoOptionError class DistUpgradeConfig(ConfigParser): - def __init__(self, datadir): + def __init__(self, datadir, name="DistUpgrade.cfg"): ConfigParser.__init__(self) self.datadir=datadir - self.read([datadir+'/DistUpgrade.cfg']) + self.read([datadir+"/"+name]) def getlist(self, section, option): try: tmp = self.get(section, option) diff --git a/DistUpgrade/DistUpgradeControler.py b/DistUpgrade/DistUpgradeControler.py index 02d25121..4e76a65d 100644 --- a/DistUpgrade/DistUpgradeControler.py +++ b/DistUpgrade/DistUpgradeControler.py @@ -31,6 +31,7 @@ import logging import re import statvfs import shutil +import glob from DistUpgradeConfigParser import DistUpgradeConfig from aptsources import SourcesList, SourceEntry, Distribution, is_mirror @@ -59,7 +60,8 @@ class AptCdrom(object): if backup_ext: cdromstate = os.path.join(apt_pkg.Config.FindDir("Dir::State"), apt_pkg.Config.Find("Dir::State::cdroms")) - shutil.copy(cdromstate, cdromstate+backup_ext) + if os.path.exists(cdromstate): + shutil.copy(cdromstate, cdromstate+backup_ext) # do the actual work apt_pkg.Config.Set("Acquire::cdrom::mount",self.cdrompath) apt_pkg.Config.Set("APT::CDROM::NoMount","true") @@ -74,7 +76,7 @@ class AptCdrom(object): _("There was a error adding the CD, the " "upgrade will abort. Please report this as " "a bug if this is a valid Ubuntu CD.\n\n" - "The error message was:\n'%s'" % e)) + "The error message was:\n'%s'") % e) return False logging.debug("AptCdrom.add() returned: %s" % res) return res @@ -86,7 +88,7 @@ class AptCdrom(object): class DistUpgradeControler(object): """ this is the controler that does most of the work """ - def __init__(self, distUpgradeView, cdromPath=None, datadir=None): + def __init__(self, distUpgradeView, options=None, datadir=None): # setup the pathes localedir = "/usr/share/locale/update-manager/" if datadir == None: @@ -95,6 +97,8 @@ class DistUpgradeControler(object): gladedir = datadir self.datadir = datadir + self.options = options + # init gettext gettext.bindtextdomain("update-manager",localedir) gettext.textdomain("update-manager") @@ -104,9 +108,15 @@ class DistUpgradeControler(object): self._view.updateStatus(_("Reading cache")) self.cache = None - # specific for the CDROM based upgrade - self.aptcdrom = AptCdrom(distUpgradeView, cdromPath) - self.useNetwork = True + if not self.options or self.options.withNetwork == None: + self.useNetwork = True + else: + self.useNetwork = self.options.withNetwork + if options: + cdrompath = options.cdromPath + else: + cdrompath = None + self.aptcdrom = AptCdrom(distUpgradeView, cdrompath) # the configuration self.config = DistUpgradeConfig(datadir) @@ -123,9 +133,8 @@ class DistUpgradeControler(object): # turn on debuging in the cache apt_pkg.Config.Set("Debug::pkgProblemResolver","true") apt_pkg.Config.Set("Debug::pkgDepCache::AutoInstall","true") - # FIXME: make this "append"? fd = os.open("/var/log/dist-upgrade/apt.log", - os.O_RDWR|os.O_CREAT|os.O_TRUNC, 0644) + os.O_RDWR|os.O_CREAT|os.O_APPEND, 0644) os.dup2(fd,1) os.dup2(fd,2) @@ -134,12 +143,16 @@ class DistUpgradeControler(object): def prepare(self): """ initial cache opening, sanity checking, network checking """ - self.openCache() + try: + self.openCache() + except SystemError, e: + logging.error("openCache() failed: '%s'" % e) + return False if not self.cache.sanityCheck(self._view): return False - # FIXME: we may try to find out a bit more about the network connection here and ask more - # inteligent questions - if self.aptcdrom: + # FIXME: we may try to find out a bit more about the network + # connection here and ask more inteligent questions + if self.aptcdrom and self.options and self.options.withNetwork == None: res = self._view.askYesNoQuestion(_("Fetch data from the network for the upgrade?"), _("The upgrade can use the network to check " "the latest updates and to fetch packages that are not on the " @@ -157,6 +170,7 @@ class DistUpgradeControler(object): # enable main (we always need this!) distro = Distribution() distro.get_sources(self.sources) + # make sure that main is enabled distro.enable_component(self.sources, "main") # this must map, i.e. second in "from" must be the second in "to" @@ -188,7 +202,7 @@ class DistUpgradeControler(object): # we disable breezy cdrom sources to make sure that demoted # packages are removed - if entry.uri.startswith("cdrom:") and entry.dist == "breezy": + if entry.uri.startswith("cdrom:") and entry.dist == self.fromDist: entry.disabled = True continue # ignore cdrom sources otherwise @@ -270,7 +284,7 @@ class DistUpgradeControler(object): self.toDist+"-security", comps) else: self.abort() - + # write (well, backup first ;) ! self.sources.backup(self.sources_backup_ext) self.sources.save() @@ -293,7 +307,7 @@ class DistUpgradeControler(object): if self.sources_disabled: self._view.information(_("Third party sources disabled"), - _("Some third party entries in your souces.list " + _("Some third party entries in your sources.list " "were disabled. You can re-enable them " "after the upgrade with the " "'software-properties' tool or with synaptic." @@ -306,13 +320,17 @@ class DistUpgradeControler(object): inst = [] up = [] rm = [] + held = [] for pkg in self.cache: if pkg.markedInstall: inst.append(pkg.name) elif pkg.markedUpgrade: up.append(pkg.name) elif pkg.markedDelete: rm.append(pkg.name) + elif (pkg.isInstalled and pkg.isUpgradable): held.append(pkg.name) + logging.debug("Held-back: %s" % " ".join(held)) logging.debug("Remove: %s" % " ".join(rm)) logging.debug("Install: %s" % " ".join(inst)) logging.debug("Upgrade: %s" % " ".join(up)) + def doPreUpgrade(self): # FIXME: check out what packages are downloadable etc to @@ -341,7 +359,8 @@ class DistUpgradeControler(object): continue # no exception, so all was fine, we are done return True - + + logging.error("doUpdate() failed complettely") self._view.error(_("Error during update"), _("A problem occured during the update. " "This is usually some sort of network " @@ -359,6 +378,18 @@ class DistUpgradeControler(object): "packages of former installations using " "'sudo apt-get clean'.") + # gather/log some staticts + mnt_map = {} + for d in ["/","/usr","/var","/boot"]: + st = os.statvfs(d) + free = st[statvfs.F_BAVAIL]*st[statvfs.F_FRSIZE] + if st in mnt_map: + logging.debug("Dir %s mounted on %s" % (d,mnt_map[st])) + else: + logging.debug("Free space on %s: %s" % (d,free)) + mnt_map[st] = d + del mnt_map + # first check for /var (or where the archives are downloaded too) archivedir = apt_pkg.Config.FindDir("Dir::Cache::archives") st_archivedir = os.statvfs(archivedir) @@ -367,6 +398,7 @@ class DistUpgradeControler(object): logging.debug("free on %s: %s " % (archivedir, free)) if self.cache.requiredDownload > free: free_at_least = apt_pkg.SizeToStr(self.cache.requiredDownload-free) + logging.error("not enough free space (missing %s)" % free_at_least) self._view.error(err_sum, err_long % (free_at_least,archivedir)) return False @@ -418,6 +450,9 @@ class DistUpgradeControler(object): return res def doDistUpgrade(self): + if self.options and self.options.haveBackports: + backportsdir = os.getcwd()+"/backports" + apt_pkg.Config.Set("Dir::Bin::dpkg",backportsdir+"/usr/bin/dpkg"); currentRetry = 0 fprogress = self._view.getFetchProgress() iprogress = self._view.getInstallProgress(self.cache) @@ -428,6 +463,7 @@ class DistUpgradeControler(object): res = self.cache.commit(fprogress,iprogress) except SystemError, e: # installing the packages failed, can't be retried + logging.error("SystemError from cache.commit(): %s" % e) self._view.getTerminal().call(["dpkg","--configure","-a"]) self._view.error(_("Could not install the upgrades"), _("The upgrade aborts now. Your system " @@ -447,7 +483,7 @@ class DistUpgradeControler(object): return True # maximum fetch-retries reached without a successful commit - logging.debug("giving up on fetching after maximum retries") + logging.error("giving up on fetching after maximum retries") self._view.error(_("Could not download the upgrades"), _("The upgrade aborts now. Please check your "\ "internet connection or "\ @@ -485,15 +521,15 @@ class DistUpgradeControler(object): demoted = [pkg.name for pkg in installed_demotions] demoted.sort() logging.debug("demoted: '%s'" % " ".join(demoted)) - self._view.information(_("Some software no longer officially " - "supported"), - _("These installed packages are " - "no longer officially supported, " - "and are now only " - "community-supported ('universe').\n\n" - "If you don't have 'universe' enabled " + self._view.information(_("Support for some applications ended"), + _("Canonical Ltd. no longer provides " + "support for the following software " + "packages. You can still get support " + "from the community.\n\n" + "If you have not enabled community " + "maintained software (universe), " "these packages will be suggested for " - "removal in the next step. "), + "removal in the next step."), "\n".join(demoted)) # mark packages that are now obsolete (and where not obsolete @@ -532,6 +568,7 @@ class DistUpgradeControler(object): try: res = self.cache.commit(fprogress,iprogress) except (SystemError, IOError), e: + logging.error("cache.commit() in doPostUpgrade() failed: %s" % e) self._view.error(_("Error during commit"), _("Some problem occured during the clean-up. " "Please see the below message for more " @@ -540,22 +577,121 @@ class DistUpgradeControler(object): def abort(self): """ abort the upgrade, cleanup (as much as possible) """ - self.sources.restoreBackup(self.sources_backup_ext) - self.aptcdrom.restoreBackup(self.sources_backup_ext) + if hasattr(self, "sources"): + self.sources.restoreBackup(self.sources_backup_ext) + if hasattr(self, "aptcdrom"): + self.aptcdrom.restoreBackup(self.sources_backup_ext) # generate a new cache self._view.updateStatus(_("Restoring original system state")) + self._view.abort() self.openCache() sys.exit(1) - + def getRequiredBackports(self): + " download the backports specified in DistUpgrade.cfg " + # add the backports sources.list fragment + shutil.copy(self.config.get("Backports","SourcesList"), + apt_pkg.Config.FindDir("Dir::Etc::sourceparts")) + # run update + self.doUpdate() + self.openCache() + + # save cachedir and setup new one + cachedir = apt_pkg.Config.Find("Dir::Cache::archives") + cwd = os.getcwd() + backportsdir = os.path.join(os.getcwd(),"backports") + if not os.path.exists(backportsdir): + os.mkdir(backportsdir) + if not os.path.exists(os.path.join(backportsdir,"partial")): + os.mkdir(os.path.join(backportsdir,"partial")) + os.chdir(backportsdir) + apt_pkg.Config.Set("Dir::Cache::archives",backportsdir) + + # mark the backports for upgrade and get them + fetcher = apt_pkg.GetAcquire(self._view.getFetchProgress()) + # FIXME: add a version line to the cfg file to make sure + # we get the right version file! and add sanity checking + # that we don't get (accidently) the edgy version + for pkgname in self.config.getlist("Backports","Packages"): + pkg = self.cache[pkgname] + # look for the right version (backport) + for ver in pkg._pkg.VersionList: + print ver.VerStr + if self.config.get("Backports","VersionIdent") in ver.VerStr: + break + else: + # FIXME: be more clever here (exception) + raise Exception, "No backport found!?!" + return False + if ver.FileList == None: + print "No FileList for: %s " % self._pkg.Name() + return False + f, index = ver.FileList.pop(0) + pkg._records.Lookup((f,index)) + path = apt_pkg.ParseSection(pkg._records.Record)["Filename"] + for (packagefile,i) in ver.FileList: + indexfile = self.cache._list.FindIndex(packagefile) + if indexfile: + match = re.match(r"<.*ArchiveURI='(.*)'>$", + str(indexfile)) + if match: + uri = match.group(1) + path + apt_pkg.GetPkgAcqFile(fetcher, uri=uri, + size=ver.Size, + descr=_("Fetching backport of '%s'") % pkgname) + res = fetcher.Run() + if res != fetcher.ResultContinue: + # ick! error ... + return False + + # reset the cache dir + os.unlink(apt_pkg.Config.FindDir("Dir::Etc::sourceparts")+"/backport-source.list") + apt_pkg.Config.Set("Dir::Cache::archives",cachedir) + os.chdir(cwd) + # unpack it + for deb in glob.glob(backportsdir+"/*.deb"): + ret = os.system("dpkg-deb -x %s %s" % (deb, backportsdir)) + # FIXME: do error checking + return self.setupRequiredBackports(backportsdir) + + def setupRequiredBackports(self, backportsdir): + " setup the required backports in a evil way " + # setup some pathes to make sure the new stuff is used + os.environ["LD_LIBRARY_PATH"] = backportsdir+"/usr/lib" + os.environ["PYTHONPATH"] = backportsdir+"/usr/lib/python2.4/site-packages/" + os.environ["PATH"] = "%s:%s" % (backportsdir+"/usr/bin", + os.getenv("PATH")) + + # now exec self again + args = sys.argv+["--have-backports"] + if self.useNetwork: + args.append("--with-network") + else: + args.append("--without-network") + os.execve(sys.argv[0],args, os.environ) + # this is the core def edgyUpgrade(self): # sanity check (check for ubuntu-desktop, brokenCache etc) self._view.updateStatus(_("Checking package manager")) self._view.setStep(1) - + if not self.prepare(): - self.abort(1) + logging.error("self.prepared() failed") + self._view.error(_("Preparing the upgrade failed"), + _("Preparing the system for the upgrade " + "failed. Please report this as a bug " + "against the 'update-manager' " + "package and include the files in " + "/var/log/dist-upgrade/ " + "in the bugreport." )) + sys.exit(1) + + # mvo: commented out for now, see #54234, this needs to be + # refactored to use a arch=any tarball + #if self.options and self.options.haveBackports == False: + # # get backported packages (if needed) + # self.getRequiredBackports() # run a "apt-get update" now if not self.doUpdate(): diff --git a/DistUpgrade/DistUpgradeView.py b/DistUpgrade/DistUpgradeView.py index 9fda83d4..109a278b 100644 --- a/DistUpgrade/DistUpgradeView.py +++ b/DistUpgrade/DistUpgradeView.py @@ -35,14 +35,15 @@ def estimatedDownloadTime(requiredDownload): """ get the estimated download time """ timeModem = requiredDownload/(56*1024/8) # 56 kbit timeDSL = requiredDownload/(1024*1024/8) # 1Mbit = 1024 kbit - s= _("This download will take about %s with a 56k modem and about %s with " - "a 1Mbit DSL connection" % (FuzzyTimeToStr(timeModem), FuzzyTimeToStr(timeDSL))) + s= _("This download will take about %s with a 1Mbit DSL connection " + "and about %s with a 56k modem" % (FuzzyTimeToStr(timeDSL),FuzzyTimeToStr(timeModem))) return s class DumbTerminal(object): def call(self, cmd): " expects a command in the subprocess style (as a list) " + import subprocess subprocess.call(cmd) @@ -72,6 +73,9 @@ class DistUpgradeView(object): on the current view """ pass + def abort(): + """ provide a visual feedback that the upgrade was aborted """ + pass def setStep(self, step): """ we have 5 steps current for a upgrade: 1. Analyzing the system @@ -91,12 +95,14 @@ class DistUpgradeView(object): self.toInstall = [] self.toUpgrade = [] self.toRemove = [] + self.toDowngrade = [] for pkg in changes: if pkg.markedInstall: self.toInstall.append(pkg.name) elif pkg.markedUpgrade: self.toUpgrade.append(pkg.name) elif pkg.markedDelete: self.toRemove.append(pkg.name) - # no downgrades, re-installs - assert(len(self.toInstall)+len(self.toUpgrade)+len(self.toRemove) == len(changes)) + elif pkg.markedDowngrade: self.toDowngrade.append(pkg.name) + # no re-installs + assert(len(self.toInstall)+len(self.toUpgrade)+len(self.toRemove)+len(self.toDowngrade) == len(changes)) def askYesNoQuestion(self, summary, msg): " ask a Yes/No question and return True on 'Yes' " pass diff --git a/DistUpgrade/DistUpgradeViewGtk.py b/DistUpgrade/DistUpgradeViewGtk.py index 73440f3e..97a57772 100644 --- a/DistUpgrade/DistUpgradeViewGtk.py +++ b/DistUpgrade/DistUpgradeViewGtk.py @@ -97,7 +97,7 @@ class GtkFetchProgressAdapter(apt.progress.FetchProgress): self.parent = parent def mediaChange(self, medium, drive): #print "mediaChange %s %s" % (medium, drive) - msg = _("Please insert '%s' into the drive '%s'" % (medium,drive)) + msg = _("Please insert '%s' into the drive '%s'") % (medium,drive) dialog = gtk.MessageDialog(parent=self.parent.window_main, flags=gtk.DIALOG_MODAL, type=gtk.MESSAGE_QUESTION, @@ -126,10 +126,10 @@ class GtkFetchProgressAdapter(apt.progress.FetchProgress): currentItem = self.totalItems if self.currentCPS > 0: - self.status.set_text(_("Fetching file %li of %li at %s/s" % (currentItem, self.totalItems, apt_pkg.SizeToStr(self.currentCPS)))) + self.status.set_text(_("Fetching file %li of %li at %s/s") % (currentItem, self.totalItems, apt_pkg.SizeToStr(self.currentCPS))) self.progress.set_text(_("About %s remaining") % FuzzyTimeToStr(self.eta)) else: - self.status.set_text(_("Fetching file %li of %li" % (currentItem, self.totalItems))) + self.status.set_text(_("Fetching file %li of %li") % (currentItem, self.totalItems)) self.progress.set_text(" ") while gtk.events_pending(): @@ -184,7 +184,7 @@ class GtkInstallProgressAdapter(InstallProgress): logging.error("got an error from dpkg for pkg: '%s': '%s'" % (pkg, errormsg)) #self.expander_terminal.set_expanded(True) self.parent.dialog_error.set_transient_for(self.parent.window_main) - summary = _("Could not install '%s'" % pkg) + summary = _("Could not install '%s'") % pkg msg = _("The upgrade aborts now. Please report this bug against the 'update-manager' " "package and include the files in /var/log/dist-upgrade/ in the bugreport.") markup="<big><b>%s</b></big>\n\n%s" % (summary, msg) @@ -198,14 +198,12 @@ class GtkInstallProgressAdapter(InstallProgress): def conffile(self, current, new): logging.debug("got a conffile-prompt from dpkg for file: '%s'" % current) + start = time.time() #self.expander.set_expanded(True) - prim = _("Replace configuration file\n'%s'?" % current) - sec = ("The configuration file %s was modified (by " - "you or by a script). An updated version is shipped " - "in this package. If you want to keep your current " - "version say 'Keep'. Do you want to replace the " - "current file and install the new package " - "maintainers version? " % current) + prim = _("Replace the customized configuration file\n'%s'?") % current + sec = _("You will lose any changes you have made to this " + "configuration file if you choose to replace it with " + "a newer version.") markup = "<span weight=\"bold\" size=\"larger\">%s </span> \n\n%s" % (prim, sec) self.parent.label_conffile.set_markup(markup) self.parent.dialog_conffile.set_transient_for(self.parent.window_main) @@ -219,6 +217,7 @@ class GtkInstallProgressAdapter(InstallProgress): self.parent.textview_conffile.get_buffer().set_text(_("The 'diff' command was not found")) res = self.parent.dialog_conffile.run() self.parent.dialog_conffile.hide() + self.time_ui += time.time() - start # if replace, send this to the terminal if res == gtk.RESPONSE_YES: self.term.feed_child("y\n") @@ -245,9 +244,11 @@ class GtkInstallProgressAdapter(InstallProgress): self.last_activity = time.time() self.activity_timeout_reported = False delta = self.last_activity - self.start_time + # time wasted in conffile questions (or other ui activity) + delta -= self.time_ui time_per_percent = (float(delta)/percent) eta = (100.0 - self.percent) * time_per_percent - # only show if we have some sensible data + # only show if we have some sensible data (60sec < eta < 2days) if eta > 61.0 and eta < (60*60*24*2): self.progress.set_text(_("About %s remaining") % FuzzyTimeToStr(eta)) else: @@ -266,7 +267,10 @@ class GtkInstallProgressAdapter(InstallProgress): self.label_status.set_text("") def updateInterface(self): - InstallProgress.updateInterface(self) + try: + InstallProgress.updateInterface(self) + except ValueError, e: + logging.error("got ValueError from InstallPrgoress.updateInterface. Line was '%s' (%s)" % (self.read, e)) # check if we haven't started yet with packages, pulse then if self.start_time == 0.0: self.progress.pulse() @@ -322,8 +326,15 @@ class DistUpgradeViewGtk(DistUpgradeView,SimpleGladeApp): gtk.window_set_default_icon(icons.load_icon("update-manager", 32, 0)) SimpleGladeApp.__init__(self, gladedir+"/DistUpgrade.glade", None, domain="update-manager") + self.prev_step = 0 # keep a record of the latest step # we dont use this currently #self.window_main.set_keep_above(True) + self.icontheme = gtk.icon_theme_get_default() + # we keep a reference pngloader around so that its in memory + # -> this avoid the issue that during the dapper->edgy upgrade + # the loaders move from /usr/lib/gtk/2.4.0/loaders to 2.10.0 + self.pngloader = gtk.gdk.PixbufLoader("png") + self.window_main.realize() self.window_main.window.set_functions(gtk.gdk.FUNC_MOVE) self._opCacheProgress = GtkOpProgress(self.progressbar_cache) @@ -410,21 +421,37 @@ class DistUpgradeViewGtk(DistUpgradeView,SimpleGladeApp): label = getattr(self,"label_step%i" % step) image.hide() label.hide() + def abort(self): + size = gtk.ICON_SIZE_MENU + step = self.prev_step + if step > 0: + image = getattr(self,"image_step%i" % step) + arrow = getattr(self,"arrow_step%i" % step) + image.set_from_stock(gtk.STOCK_CANCEL, size) + image.show() + arrow.hide() def setStep(self, step): - # first update the "last" step as completed + if self.icontheme.rescan_if_needed(): + logging.debug("icon theme changed, re-reading") + # first update the "previous" step as completed size = gtk.ICON_SIZE_MENU attrlist=pango.AttrList() - if step > 1: - image = getattr(self,"image_step%i" % (step-1)) - label = getattr(self,"label_step%i" % (step-1)) - image.set_from_stock(gtk.STOCK_APPLY, size) + if self.prev_step: + image = getattr(self,"image_step%i" % self.prev_step) + label = getattr(self,"label_step%i" % self.prev_step) + arrow = getattr(self,"arrow_step%i" % self.prev_step) label.set_property("attributes",attrlist) + image.set_from_stock(gtk.STOCK_APPLY, size) + image.show() + arrow.hide() + self.prev_step = step + # show the an arrow for the current step and make the label bold image = getattr(self,"image_step%i" % step) label = getattr(self,"label_step%i" % step) - image.set_from_stock(gtk.STOCK_YES, size) + arrow = getattr(self,"arrow_step%i" % step) + arrow.show() + image.hide() attr = pango.AttrWeight(pango.WEIGHT_BOLD, 0, -1) - # we can't make it bold here without layout changes in the view :( - #attr = pango.AttrStyle(pango.STYLE_ITALIC, 0, -1) attrlist.insert(attr) label.set_property("attributes",attrlist) @@ -442,6 +469,8 @@ class DistUpgradeViewGtk(DistUpgradeView,SimpleGladeApp): self.dialog_information.window.set_functions(gtk.gdk.FUNC_MOVE) self.dialog_information.run() self.dialog_information.hide() + while gtk.events_pending(): + gtk.main_iteration() def error(self, summary, msg, extended_msg=None): self.dialog_error.set_transient_for(self.window_main) @@ -472,24 +501,24 @@ class DistUpgradeViewGtk(DistUpgradeView,SimpleGladeApp): if pkgs_remove > 0: # FIXME: make those two seperate lines to make it clear # that the "%" applies to the result of ngettext - msg += gettext.ngettext("%s package is going to be removed.", - "%s packages are going to be removed.", + msg += gettext.ngettext("%d package is going to be removed.", + "%d packages are going to be removed.", pkgs_remove) % pkgs_remove msg += " " if pkgs_inst > 0: - msg += gettext.ngettext("%s new package is going to be " + msg += gettext.ngettext("%d new package is going to be " "installed.", - "%s new packages are going to be " + "%d new packages are going to be " "installed.",pkgs_inst) % pkgs_inst msg += " " if pkgs_upgrade > 0: - msg += gettext.ngettext("%s package is going to be upgraded.", - "%s packages are going to be upgraded.", + msg += gettext.ngettext("%d package is going to be upgraded.", + "%d packages are going to be upgraded.", pkgs_upgrade) % pkgs_upgrade msg +=" " if downloadSize > 0: - msg += _("\n\nYou have to download a total of %s. " %\ - apt_pkg.SizeToStr(downloadSize)) + msg += _("\n\nYou have to download a total of %s. ") %\ + apt_pkg.SizeToStr(downloadSize) msg += estimatedDownloadTime(downloadSize) msg += "." @@ -503,8 +532,9 @@ class DistUpgradeViewGtk(DistUpgradeView,SimpleGladeApp): # Show an error if no actions are planned if (pkgs_upgrade + pkgs_inst + pkgs_remove) < 1: # FIXME: this should go into DistUpgradeController - summary = _("Could not find any upgrades") - msg = _("Your system has already been upgraded.") + summary = _("Your system is up-to-date") + msg = _("There are no upgrades available for your system. " + "The upgrade will now be canceled.") self.error(summary, msg) return False @@ -519,11 +549,11 @@ class DistUpgradeViewGtk(DistUpgradeView,SimpleGladeApp): # fill in the details self.details_list.clear() for rm in self.toRemove: - self.details_list.append([_("<b>Remove %s</b>" % rm)]) + self.details_list.append([_("<b>Remove %s</b>") % rm]) for inst in self.toInstall: - self.details_list.append([_("Install %s" % inst)]) + self.details_list.append([_("Install %s") % inst]) for up in self.toUpgrade: - self.details_list.append([_("Upgrade %s" % up)]) + self.details_list.append([_("Upgrade %s") % up]) self.treeview_details.scroll_to_cell((0,)) self.dialog_changes.set_transient_for(self.window_main) self.dialog_changes.realize() @@ -575,11 +605,11 @@ if __name__ == "__main__": fp = GtkFetchProgressAdapter(view) ip = GtkInstallProgressAdapter(view) - cache = apt.Cache() for pkg in sys.argv[1:]: cache[pkg].markInstall() cache.commit(fp,ip) + sys.exit(0) #sys.exit(0) ip.conffile("TODO","TODO~") diff --git a/DistUpgrade/DistUpgradeViewText.py b/DistUpgrade/DistUpgradeViewText.py new file mode 100644 index 00000000..b3bd61e3 --- /dev/null +++ b/DistUpgrade/DistUpgradeViewText.py @@ -0,0 +1,196 @@ +# DistUpgradeViewText.py +# +# Copyright (c) 2004-2006 Canonical +# +# Author: Michael Vogt <michael.vogt@ubuntu.com> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import sys +import logging +import time +import subprocess + +import apt +import apt_pkg +import os + +from apt.progress import InstallProgress +from DistUpgradeView import DistUpgradeView, FuzzyTimeToStr, estimatedDownloadTime + +import gettext +from gettext import gettext as _ + +class TextCdromProgressAdapter(apt.progress.CdromProgress): + """ Report the cdrom add progress """ + def update(self, text, step): + """ update is called regularly so that the gui can be redrawn """ + if text: + print "%s (%f)" % (text, step/float(self.totalSteps)*100) + def askCdromName(self): + return (False, "") + def changeCdrom(self): + return False + + +class DistUpgradeViewText(DistUpgradeView): + " text frontend of the distUpgrade tool " + def __init__(self, datadir=None): + if not datadir: + localedir=os.path.join(os.getcwd(),"mo") + else: + localedir="/usr/share/locale/update-manager" + + try: + gettext.bindtextdomain("update-manager", localedir) + gettext.textdomain("update-manager") + except Exception, e: + logging.warning("Error setting locales (%s)" % e) + + self.last_step = 0 # keep a record of the latest step + self._opCacheProgress = apt.progress.OpTextProgress() + self._fetchProgress = apt.progress.TextFetchProgress() + self._cdromProgress = TextCdromProgressAdapter() + self._installProgress = apt.progress.InstallProgress() + sys.excepthook = self._handleException + + def _handleException(self, type, value, tb): + import traceback + lines = traceback.format_exception(type, value, tb) + logging.error("not handled expection:\n%s" % "\n".join(lines)) + self.error(_("A fatal error occured"), + _("Please report this as a bug and include the " + "files /var/log/dist-upgrade/main.log and " + "/var/log/dist-upgrade/apt.log " + "in your report. The upgrade aborts now.\n" + "Your original sources.list was saved in " + "/etc/apt/sources.list.distUpgrade."), + "\n".join(lines)) + sys.exit(1) + + def getFetchProgress(self): + return self._fetchProgress + def getInstallProgress(self, cache): + self._installProgress._cache = cache + return self._installProgress + def getOpCacheProgress(self): + return self._opCacheProgress + def getCdromProgress(self): + return self._cdromProgress + def updateStatus(self, msg): + print msg + def abort(self): + print _("Aborting") + def setStep(self, step): + self.last_step = step + def information(self, summary, msg, extended_msg=None): + print summary + print msg + if extended_msg: + print extended_msg + def error(self, summary, msg, extended_msg=None): + print summary + print msg + if extended_msg: + print extended_msg + return False + def confirmChanges(self, summary, changes, downloadSize, actions=None): + DistUpgradeView.confirmChanges(self, summary, changes, downloadSize, actions) + pkgs_remove = len(self.toRemove) + pkgs_inst = len(self.toInstall) + pkgs_upgrade = len(self.toUpgrade) + msg = "" + + if pkgs_remove > 0: + # FIXME: make those two seperate lines to make it clear + # that the "%" applies to the result of ngettext + msg += gettext.ngettext("%d package is going to be removed.", + "%d packages are going to be removed.", + pkgs_remove) % pkgs_remove + msg += " " + if pkgs_inst > 0: + msg += gettext.ngettext("%d new package is going to be " + "installed.", + "%d new packages are going to be " + "installed.",pkgs_inst) % pkgs_inst + msg += " " + if pkgs_upgrade > 0: + msg += gettext.ngettext("%d package is going to be upgraded.", + "%d packages are going to be upgraded.", + pkgs_upgrade) % pkgs_upgrade + msg +=" " + if downloadSize > 0: + msg += _("\n\nYou have to download a total of %s. ") %\ + apt_pkg.SizeToStr(downloadSize) + msg += estimatedDownloadTime(downloadSize) + msg += "." + if (pkgs_upgrade + pkgs_inst + pkgs_remove) > 100: + msg += "\n\n%s" % _("Fetching and installing the upgrade can take several hours and "\ + "cannot be canceled at any time later.") + + # Show an error if no actions are planned + if (pkgs_upgrade + pkgs_inst + pkgs_remove) < 1: + # FIXME: this should go into DistUpgradeController + summary = _("Your system is up-to-date") + msg = _("There are no upgrades available for your system. " + "The upgrade will now be canceled.") + self.error(summary, msg) + return False + + return self.askYesNoQuestion(summary, msg) + + def askYesNoQuestion(self, summary, msg): + print summary + print msg + print _("Continue [Yn] "), + res = sys.stdin.readline() + if res.strip().lower().startswith("y"): + return True + return False + + def confirmRestart(self): + return self.askYesNoQuestion(_("Restart required"), + _("To fully ugprade, please restart")) + + +if __name__ == "__main__": + + view = DistUpgradeViewText() + view.confirmChanges("xx",[], 100) + sys.exit(0) + + fp = apt.progress.TextFetchProgress() + ip = apt.progress.InstallProgress() + + cache = apt.Cache() + for pkg in sys.argv[1:]: + cache[pkg].markInstall() + cache.commit(fp,ip) + + #sys.exit(0) + view.getTerminal().call(["dpkg","--configure","-a"]) + #view.getTerminal().call(["ls","-R","/usr"]) + view.error("short","long", + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + "asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended\n" + ) + view.confirmChanges("xx",[], 100) + print view.askYesNoQuestion("hello", "Icecream?") diff --git a/DistUpgrade/README b/DistUpgrade/README index 60c761d6..b9d6c5d2 100644 --- a/DistUpgrade/README +++ b/DistUpgrade/README @@ -32,6 +32,12 @@ ForcedObsoletes: happens *after* the cache.commit()) RemoveEssentialOk: Those packages are ok to remove even though they are essential +KeepInstalledPkgs: + If the package was installed before, it should still be installed + after the upgrade +KeepInstalledSection: + Packages from this section that were installed should always be + installed afterwards as well (useful for eg translations) [$meta-pkg] KeyDependencies: @@ -46,4 +52,11 @@ ForcedObsoletes: [Sources] - how to rewrite the sources.list -[Network] - network specific options
\ No newline at end of file +[Network] - network specific options + +[Backports] - use specific packages for dist-upgrade +Packages= List of what packages to look for +VersionIdent=Version identification. needs to be uniq, dist-upgrader will + fetch the version that contains this string +SourcesList=a sources.list fragment that will be placed into + /etc/apt/sources.list.d and that contains the backported pkgs
\ No newline at end of file diff --git a/DistUpgrade/ReleaseAnnouncement b/DistUpgrade/ReleaseAnnouncement index 98eca455..6d9adb2c 100644 --- a/DistUpgrade/ReleaseAnnouncement +++ b/DistUpgrade/ReleaseAnnouncement @@ -1,7 +1,7 @@ Welcome to Ubuntu 6.10 'Edgy Eft' --------------------------------- -*WARNING: THIS IS A DEVELOPMENT SNAPSHOT* +*WARNING: THIS IS A BETA RELEASE* The Ubuntu team is proud to announce Ubuntu 6.10 'Edgy Eft'. diff --git a/DistUpgrade/backport-source.list b/DistUpgrade/backport-source.list new file mode 100644 index 00000000..5945e218 --- /dev/null +++ b/DistUpgrade/backport-source.list @@ -0,0 +1,2 @@ +# sources.list fragment for backported apt/dpkg/python-apt +deb http://people.ubuntu.com/~mvo/backports/dapper /
\ No newline at end of file diff --git a/DistUpgrade/build-tarball.sh b/DistUpgrade/build-tarball.sh index 4f88b848..241eda06 100755 --- a/DistUpgrade/build-tarball.sh +++ b/DistUpgrade/build-tarball.sh @@ -3,7 +3,10 @@ DIST=edgy # cleanup -rm -f *~ *.bak *.pyc *.moved '#'* +echo "Cleaning up" +rm -f *~ *.bak *.pyc *.moved '#'* *.rej *.orig +sudo rm -rf backports/ profile/ result/ tarball/ *.deb + # update po (cd ../po; make update-po) diff --git a/DistUpgrade/cdromupgrade b/DistUpgrade/cdromupgrade index 9ed8cdea..37335045 100755 --- a/DistUpgrade/cdromupgrade +++ b/DistUpgrade/cdromupgrade @@ -23,10 +23,10 @@ if [ ! -f $fullpath/$CODENAME.tar.gz ]; then exit 1 fi -TMPDIR=$(mktemp -d distupgrade.XXXXXX) +TMPDIR=$(mktemp -d) cd $TMPDIR tar xzf $fullpath/$CODENAME.tar.gz -if [ ! -x $TMPDIR/$CODENAME ]; +if [ ! -x $TMPDIR/$CODENAME ]; then echo "Could not find the upgrade application in the archive, exiting" exit 1 fi diff --git a/DistUpgrade/dist-upgrade.py b/DistUpgrade/dist-upgrade.py index 07320fb9..ff2fb933 100755 --- a/DistUpgrade/dist-upgrade.py +++ b/DistUpgrade/dist-upgrade.py @@ -12,6 +12,10 @@ if __name__ == "__main__": parser = OptionParser() parser.add_option("-c", "--cdrom", dest="cdromPath", default=None, help="Use the given path to search for a cdrom with upgradable packages") + parser.add_option("--have-backports", dest="haveBackports", + action="store_true", default=False) + parser.add_option("--with-network", dest="withNetwork",action="store_true") + parser.add_option("--without-network", dest="withNetwork",action="store_false") (options, args) = parser.parse_args() if not os.path.exists("/var/log/dist-upgrade"): @@ -31,7 +35,7 @@ if __name__ == "__main__": logging.error("can't import view '%s'" % requested_view) print "can't find %s" % requested_view sys.exit(1) - app = DistUpgradeControler(view, cdromPath=options.cdromPath) + app = DistUpgradeControler(view, options) app.run() diff --git a/DistUpgrade/removal_blacklist.cfg b/DistUpgrade/removal_blacklist.cfg index 773395be..7bfb114b 100644 --- a/DistUpgrade/removal_blacklist.cfg +++ b/DistUpgrade/removal_blacklist.cfg @@ -1,5 +1,6 @@ # blacklist of packages that should never be removed -ubuntu-base +ubuntu-standard +ubuntu-minimal ubuntu-desktop kubuntu-destkop edubuntu-desktop |
