Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • trisquel/package-helpers
  • aklis/package-helpers
  • leny2010/package-helpers
  • fr33domlover/package-helpers
  • Legimet/package-helpers
  • ralphtheninja/package-helpers
  • damo22/package-helpers
  • wherrfrye/package-helpers
  • habs/package-helpers
  • pehjota/package-helpers
  • kpengboy/package-helpers
  • alvaro/package-helpers
  • salman/package-helpers
  • pabloyoyoista/package-helpers
  • mixalis/package-helpers
  • jorgesumle/package-helpers
  • a_slacker_here/package-helpers
  • chaosmonk/package-helpers
  • Beformed/package-helpers
  • dknight/package-helpers
  • proninyaroslav/package-helpers
  • adfeno/package-helpers
  • snd/package-helpers
  • davidpgil/package-helpers
  • diopon/package-helpers
  • ruben/package-helpers
  • bandali/package-helpers
  • joshaspinall/package-helpers
  • GNUtoo/package-helpers
  • Ark74/package-helpers
  • dragestil/package-helpers
  • bill-auger/package-helpers
  • andi89gi/package-helpers
  • Fikar/package-helpers
  • davidl/package-helpers
  • jas/package-helpers
  • parodper/package-helpers
  • David_Hedlund/package-helpers
  • dinomug/package-helpers
  • bf/package-helpers
  • hartkemd/package-helpers
  • del111/package-helpers
  • jxself/package-helpers
  • JacobK/package-helpers
44 results
Show changes
Showing
with 1119 additions and 634 deletions
reverts https://lore.kernel.org/all/iwlwifi.20211210110539.1f742f0eb58a.I1315f22f6aa632d94ae2069f85e1bca5e734dce0@changeid/
--- b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
@@ -1597,8 +1597,15 @@
* else from proceeding if the module fails to load
* or hangs loading.
*/
+ if (load_module) {
- if (load_module)
request_module("%s", op->name);
+#ifdef CONFIG_IWLWIFI_OPMODE_MODULAR
+ if (err)
+ IWL_ERR(drv,
+ "failed to load module %s (error %d), is dynamic loading enabled?\n",
+ op->name, err);
+#endif
+ }
failure = false;
goto free;
reverts https://lore.kernel.org/all/iwlwifi.20211210110539.1f742f0eb58a.I1315f22f6aa632d94ae2069f85e1bca5e734dce0@changeid/
--- b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
@@ -130,9 +130,6 @@
for (i = 0; i < IWL_UCODE_TYPE_MAX; i++)
iwl_free_fw_img(drv, drv->fw.img + i);
-
- /* clear the data for the aborted load case */
- memset(&drv->fw, 0, sizeof(drv->fw));
}
static int iwl_alloc_fw_desc(struct iwl_drv *drv, struct fw_desc *desc,
@@ -1429,7 +1426,6 @@
int i;
bool load_module = false;
bool usniffer_images = false;
- bool failure = true;
fw->ucode_capa.max_probe_length = IWL_DEFAULT_MAX_PROBE_LENGTH;
fw->ucode_capa.standard_phy_calibration_size =
@@ -1699,7 +1695,6 @@
op->name, err);
#endif
}
- failure = false;
goto free;
try_again:
@@ -1715,9 +1710,6 @@
complete(&drv->request_firmware_complete);
device_release_driver(drv->trans->dev);
free:
- if (failure)
- iwl_dealloc_ucode(drv);
-
if (pieces) {
for (i = 0; i < ARRAY_SIZE(pieces->img); i++)
kfree(pieces->img[i].sec);
reverts https://lore.kernel.org/all/iwlwifi.20211210110539.1f742f0eb58a.I1315f22f6aa632d94ae2069f85e1bca5e734dce0@changeid/
diff -ru source.orig/drivers/net/wireless/intel/iwlwifi/iwl-drv.c source/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
--- source.orig/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2022-05-13 16:10:11.883295769 -0400
+++ source/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2022-05-13 20:13:06.568151229 -0400
@@ -1605,7 +1605,6 @@
complete(&drv->request_firmware_complete);
device_release_driver(drv->trans->dev);
/* drv has just been freed by the release */
- failure = false;
free:
if (pieces) {
for (i = 0; i < ARRAY_SIZE(pieces->img); i++)
......@@ -1056,8 +1056,28 @@ diff -ur a/drivers/net/wireless/intel/iwlwifi/dvm/main.c b/drivers/net/wireless/
if (iwl_trans_start_hw(priv->trans))
goto out_free_hw;
diff -ur a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2021-06-25 14:52:20.000000000 +0200
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2021-06-25 14:54:58.336092716 +0200
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2022-05-13 15:20:06.000000000 -0400
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c 2022-05-13 15:40:28.252484852 -0400
@@ -237,19 +237,6 @@
if (drv->fw_index < cfg->ucode_api_min) {
IWL_ERR(drv, "no suitable firmware found!\n");
-
- if (cfg->ucode_api_min == cfg->ucode_api_max) {
- IWL_ERR(drv, "%s%d is required\n", cfg->fw_name_pre,
- cfg->ucode_api_max);
- } else {
- IWL_ERR(drv, "minimum version required: %s%d\n",
- cfg->fw_name_pre, cfg->ucode_api_min);
- IWL_ERR(drv, "maximum version supported: %s%d\n",
- cfg->fw_name_pre, cfg->ucode_api_max);
- }
-
- IWL_ERR(drv,
- "check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git\n");
return -ENOENT;
}
@@ -253,8 +253,7 @@
snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode",
cfg->fw_name_pre, tag);
......
--- source/screenfetch-dev 2019-11-12 15:59:19.000000000 -0600
+++ source/screenfetch-dev_trisquel 2022-08-14 03:01:18.002077839 -0500
@@ -4749,24 +4749,23 @@
startline="0"
logowidth="38"
fulloutput=(
-"${c1} ▄▄▄▄▄▄ %s"
-"${c1} ▄█████████▄ %s"
-"${c1} ▄▄▄▄▄▄ ████▀ ▀████ %s"
-"${c1} ▄██████████▄ ████▀ ▄▄ ▀███ %s"
-"${c1} ▄███▀▀ ▀▀████ ███▄ ▄█ ███ %s"
-"${c1} ▄███ ▄▄▄ ████▄ ▀██████ ▄███ %s"
-"${c1} ███ █▀▀██▄ █████▄ ▀▀ ▄████ %s"
-"${c1} ▀███ ███ ███████▄▄ ▄▄██████ %s"
-"${c1} ▀███▄ ▄███ █████████████${c2}████▀ %s"
-"${c1} ▀█████████ ███████${c2}███▀▀▀ %s"
-"${c1} ▀▀███▀▀ ██${c2}████▀▀ %s"
-"${c2} ██████▀ ▄▄▄▄ %s"
-"${c2} █████▀ ████████ %s"
-"${c2} █████ ███▀ ▀███ %s"
-"${c2} ████▄ ██▄▄▄ ███ %s"
-"${c2} █████▄ ▀▀ ▄██ %s"
-"${c2} ██████▄▄▄████ %s"
-"${c2} █████▀▀ %s")
+"${c1} ,o\$\$\$o. %s"
+"${c1} ,o\$\$Y\"\"\"Y\$\$b %s"
+"${c1} ,o\$\$\$\$\$\$o. ,\$\$' , Y\$\$b %s"
+"${c1} ,o\$\$\$\$\$\$\$\$\$\$\$\$o. :\$ b Y\$\$.%s"
+"${c1},\$\$\"' \"Y\$\$\$\$o. 'b. ,b d\$\$\$ %s"
+"${c1}\$\$' .d\$\$\$\$b '\$\$\$\$o 'Y\$\$\$Y d\$\$\$' %s"
+"${c1}\$\$' q' 'b '\$\$\$\$\$o._ _.o\$\$\$\$' %s"
+"${c1}.\$\$,_ _,d\$ ,\$\$\$\$\$\$\$\$\$\$\$\$${c2}\$\$\$\$Y' %s"
+"${c1} '\$\$\$\$aaa\$\$\$' .\$\$\$\$\$\$${c2}\$\$\$\$\$\$\$\$' %s"
+"${c1} \"\"\"\" ${c2}d\$\$\$\$\"' %s"
+"${c2} d\$\$\$' .d\$\$b. %s"
+"${c2} \$\$\$\$ .\$\" 'a\$. %s"
+"${c2} \$\$\$\$ \$b \$\$. %s"
+"${c2} '\$\$\$. '\$b,,. \$\$\$ %s"
+"${c2} '\$\$\$. .\$\$' %s"
+"${c2} 'a\$\$\$o._.o\$\$a' %s"
+"${c2} 'a\$\$\$\$a' %s")
;;
"Manjaro")
--- a/softwareproperties/LivepatchService.py 2020-01-06 15:10:21.950486591 -0500
+++ b/softwareproperties/LivepatchService.py 2020-01-06 15:07:49.294703393 -0500
@@ -29,8 +29,6 @@
import dateutil.parser
import requests_unixsocket
- gi.require_version('Snapd', '1')
- from gi.repository import Snapd
except(ImportError, ValueError):
pass
@@ -41,9 +39,6 @@
retry
)
-from softwareproperties.LivepatchSnap import LivepatchSnap
-
-
def datetime_parser(json_dict):
for (key, value) in json_dict.items():
try:
@@ -89,7 +84,6 @@
self._timeout_id = 0
- self._snap = LivepatchSnap()
self._session = requests_unixsocket.Session()
# Init Properties
@@ -129,8 +123,6 @@
# string rapresents the error message that needs to be shown if the
# callable returns false.
rules = [
- (lambda: self._snap.get_status() != Snapd.SnapStatus.UNKNOWN,
- _('Canonical Livepatch snap is not available.')),
(has_gnome_online_accounts,
_('Gnome Online Accounts is required to enable Livepatch.')),
(is_current_distro_lts,
@@ -177,16 +169,7 @@
Returns:
(False, '') if successful, (True, error_message) otherwise.
"""
- if self._enabled == enabled:
- return False, ''
-
- if not enabled:
- return self._disable_service()
- elif self._snap.get_status() == Snapd.SnapStatus.ACTIVE:
- return self._enable_service(token)
- else:
- success, msg = self._snap.enable_or_install()
- return self._enable_service(token) if success else (True, msg)
+ return self._disable_service()
def get_status(self):
"""Synchronously retrieve the status of Canonical Livepatch.
@@ -194,13 +177,7 @@
Returns:
str: The status. A valid string for success, None otherwise.
"""
- try:
- params = {'verbosity': 3, 'format': 'json'}
- r = self._session.get(self.STATUS_ENDPOINT, params=params)
- return r.json(object_hook=datetime_parser)
- except Exception as e:
- logging.debug('Failed to get Livepatch status: {}'.format(str(e)))
- return None
+ return None
# Private methods
def _enable_service(self, token):
--- a/softwareproperties/gtk/SoftwarePropertiesGtk.py 2020-01-06 15:10:21.970486562 -0500
+++ b/softwareproperties/gtk/SoftwarePropertiesGtk.py 2020-01-06 15:08:00.466687527 -0500
@@ -1038,12 +1037,7 @@
self.datadir)
d.run()
- self.quit_when_livepatch_responds = False
- if self.livepatch_page.waiting_livepatch_response:
- self.quit_when_livepatch_responds = True
- self.hide()
- else:
- self.quit()
+ self.quit()
def on_button_add_cdrom_clicked(self, widget):
""" when a cdrom is requested for adding """
diff -Nru source/softwareproperties/ppa.py source_fix/softwareproperties/ppa.py
--- source/softwareproperties/ppa.py 2023-01-28 16:19:59.142751924 -0600
+++ source_fix/softwareproperties/ppa.py 2023-01-28 16:53:52.630333755 -0600
@@ -35,6 +35,8 @@
from softwareproperties.shortcuts import ShortcutException
+from softwareproperties.trisquel_info import trisquel_upstream_rel
+
try:
import urllib.request
from urllib.error import HTTPError, URLError
@@ -445,7 +445,7 @@
# codename is not equal to the PPA's series.
# e.g. local:Foobar/xenial and ppa:Trisquel/xenial will use 'xenial'
# local:Foobar/fluffy and ppa:Trisquel/xenial will use '$latest'
- codename = get_current_series_from_lp(self._info["distribution"])
+ codename = trisquel_upstream_rel
debline = "deb http://ppa.launchpad.net/%s/%s/%s %s main" % (
self._info["owner"][1:], self._info["name"],
self._info["distribution"], codename)
--- source/debian/control 2023-01-28 15:46:34.096208164 -0600
+++ source/debain/control_fix 2023-01-28 15:50:38.056941413 -0600
@@ -75,9 +75,7 @@
Package: software-properties-gtk
Architecture: all
-Depends: ubuntu-advantage-desktop-daemon,
- ubuntu-advantage-tools (>= 27.11~),
- gir1.2-gtk-3.0,
+Depends: gir1.2-gtk-3.0,
libgtk3-perl,
python3,
python3-dateutil,
@@ -86,7 +84,6 @@
python3-requests-unixsocket,
python3-software-properties (= ${binary:Version}),
software-properties-common,
- ubuntu-drivers-common (>= 1:0.2.75),
${misc:Depends},
${python3:Depends}
Recommends: gnome-keyring,
diff -Nru software-properties-0.99.9.8/data/gtkbuilder/main.ui software-properties-0.99.9.8_new/data/gtkbuilder/main.ui
--- software-properties-0.99.9.8/data/gtkbuilder/main.ui 2021-10-26 07:27:56.000000000 -0500
+++ software-properties-0.99.9.8_new/data/gtkbuilder/main.ui 2021-11-15 21:32:20.534728294 -0600
@@ -1241,256 +1241,6 @@
<property name="tab_fill">False</property>
</packing>
</child>
- <child>
- <object class="GtkBox" id="vbox_livepatch">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">12</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkInfoBar" id="info_bar_ubuntu_pro">
- <property name="visible">True</property>
- <property name="show-close-button">True</property>
- <signal name="response" handler="on_info_bar_ubuntu_pro_response" swapped="no"/>
- <child internal-child="content_area">
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Preview: Ubuntu Pro for Desktop&lt;/b&gt;. Automatic security updates to over 30,000 open source software packages.</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label">&lt;a href="http://ubuntu.com/advantage"&gt;Join the beta programme&lt;/a&gt;.</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="label_livepatch_description">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Canonical Livepatch helps keep your system secure by applying security updates that don't require a restart. &lt;a href="https://www.ubuntu.com/livepatch"&gt;Learn More&lt;/a&gt;</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="max_width_chars">1</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="hbox_switch">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkSwitch" id="switch_livepatch">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinner" id="spinner_livepatch">
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_livepatch_switch">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_livepatch_login">
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkStack" id="stack_livepatch">
- <property name="can_focus">False</property>
- <property name="transition_type">crossfade</property>
- <property name="interpolate_size">True</property>
- <child>
- <object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTextView" id="textview_livepatch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="pixels_above_lines">6</property>
- <property name="editable">False</property>
- <property name="wrap_mode">word</property>
- <property name="left_margin">6</property>
- <property name="right_margin">6</property>
- <property name="cursor_visible">False</property>
- <property name="buffer">textbuffer_livepatch</property>
- <property name="accepts_tab">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="name">page_livepatch_message</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="label_livepatch_last_update">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_livepatch_header">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow_livepatch_fixes">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTreeView" id="treeview_livepatch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="model">model_livepatch_fixes</property>
- <property name="headers_visible">False</property>
- <property name="enable_search">False</property>
- <property name="show_expanders">False</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn">
- <property name="title" translatable="yes">column</property>
- <child>
- <object class="GtkCellRendererText">
- <property name="width_chars">100</property>
- <property name="wrap_mode">word</property>
- <property name="wrap_width">100</property>
- </object>
- <attributes>
- <attribute name="markup">0</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="name">page_livepatch_status</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="checkbutton_livepatch_topbar">
- <property name="label" translatable="yes">Show Livepatch status in the top bar</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">6</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label_livepatch">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label">Livepatch</property>
- </object>
- <packing>
- <property name="position">6</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
</object>
<packing>
<property name="expand">True</property>
diff -Nru software-properties-0.99.22.5+11.0trisquel11/data/gtkbuilder/main.ui software-properties-0.99.22.5+11.0trisquel11_fix/data/gtkbuilder/main.ui
--- software-properties-0.99.22.5+11.0trisquel11/data/gtkbuilder/main.ui 2023-01-27 09:12:26.635563930 -0600
+++ software-properties-0.99.22.5+11.0trisquel11_fix/data/gtkbuilder/main.ui 2023-01-27 09:21:43.497166997 -0600
@@ -1157,70 +1157,6 @@
<property name="tab_fill">False</property>
</packing>
</child>
- <child>
- <object class="GtkBox" id="dev_options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">12</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkFrame" id="frame_children1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <object class="GtkBox" id="dev_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label_updates1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Use proposed updates if you’re willing to report bugs on any problems that occur.</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="max_width_chars">110</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label">Trisquel Pro</property>
- </object>
- <packing>
- <property name="position">6</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
</object>
<packing>
<property name="expand">True</property>
diff -Nru software-properties-0.99.22.5+11.0trisquel11/softwareproperties/gtk/SoftwarePropertiesGtk.py software-properties-0.99.22.5+11.0trisquel11_fix/softwareproperties/gtk/SoftwarePropertiesGtk.py
--- software-properties-0.99.22.5+11.0trisquel11/softwareproperties/gtk/SoftwarePropertiesGtk.py 2023-01-27 09:54:48.314903324 -0600
+++ software-properties-0.99.22.5+11.0trisquel11_fix/softwareproperties/gtk/SoftwarePropertiesGtk.py 2023-01-27 10:15:52.589232983 -0600
@@ -410,24 +410,6 @@
self.vbox_dist_comps.add(checkbox)
checkbox.show()
- # Setup the checkbuttons for the child repos
- for checkbutton in self.dev_box.get_children():
- self.dev_box.remove(checkbutton)
- for template in self.distro.source_template.children:
- # Do not show source entries in there
- if template.type == "deb-src":
- continue
- if "proposed" in template.name:
- checkbox = Gtk.CheckButton(label="%s (%s)" % (template.description,
- template.name))
- checkbox.template = template
- self.handlers[checkbox] = \
- checkbox.connect("toggled",
- self.on_checkbutton_child_toggled,
- template)
- self.dev_box.add(checkbox)
- checkbox.show()
-
status = get_ua_status()
if not is_current_distro_lts():
esm_available = False
@@ -510,12 +492,6 @@
"""Fill the distro user interface with life"""
self.block_handlers()
- # Enable or disable the child source checkbuttons
- for checkbox in self.dev_box.get_children():
- (active, inconsistent) = self.get_comp_child_state(checkbox.template)
- checkbox.set_active(active)
- checkbox.set_inconsistent(inconsistent)
-
# Enable or disable the component checkbuttons
for checkbox in self.vbox_dist_comps.get_children():
# check if the comp is enabled
@@ -562,10 +538,8 @@
# and source code
if len(self.distro.enabled_comps) < 1:
self.combobox_updates_subscription.set_sensitive(False)
- self.dev_box.set_sensitive(False)
self.checkbutton_source_code.set_sensitive(False)
else:
- self.dev_box.set_sensitive(True)
self.checkbutton_source_code.set_sensitive(True)
# Check for source code sources
diff -Nru software-properties-0.99.22.5+11.0trisquel12/data/gtkbuilder/main.ui software-properties-0.99.22.5+11.0trisquel12_fix/data/gtkbuilder/main.ui
--- software-properties-0.99.22.5+11.0trisquel12/data/gtkbuilder/main.ui 2023-01-26 15:15:06.253819392 -0600
+++ software-properties-0.99.22.5+11.0trisquel12_fix/data/gtkbuilder/main.ui 2023-01-26 15:17:19.325782731 -0600
@@ -1211,423 +1211,6 @@
</packing>
</child>
<child type="tab">
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Developer Options</property>
- </object>
- <packing>
- <property name="position">5</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkStack" id="stack_ua_main">
- <property name="visible">True</property>
- <child>
- <object class="GtkBox" id="box_ua_options">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Subscription&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="max_width_chars">1</property>
- <property name="xalign">0</property>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="spacing">36</property>
- <property name="margin">18</property>
- <child>
- <object class="GtkImage" id="image_ubuntu_pro_logo">
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkStack" id="stack_ua_attach">
- <property name="visible">True</property>
- <child>
- <object class="GtkBox" id="box_ua_unattached">
- <property name="visible">True</property>
- <property name="spacing">24</property>
- <child>
- <object class="GtkButton" id="button_ua_attach">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="label" translatable="yes">_Enable Trisquel Pro</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;This machine is not covered by an Trisquel Pro subscription.&lt;/b&gt;
-Receive security updates for over 25,000 Trisquel packages, free for up to 5 machines. &lt;a href="https://ubuntu.com/pro"&gt;Learn more&lt;/a&gt;.</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="max-width-chars">90</property>
- <property name="xalign">0</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="box_ua_attached">
- <property name="visible">True</property>
- <property name="spacing">24</property>
- <child>
- <object class="GtkButton" id="button_ua_detach">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="label" translatable="yes">_Disable Trisquel Pro</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">emblem-default</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="use_markup">True</property>
- <property name="label" translatable="yes">&lt;span foreground="green"&gt;Trisquel Pro support is enabled&lt;/span&gt;</property>
- <property name="xalign">0</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">&lt;b&gt;Security&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="max_width_chars">1</property>
- <property name="xalign">0</property>
- </object>
- </child>
- <child>
- <object class="GtkGrid">
- <property name="visible">True</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">12</property>
- <child>
- <object class="GtkSwitch" id="switch_ua_esm_infra">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_esm_infra">
- <property name="visible">True</property>
- <property name="use_markup">True</property>
- <property name="valign">center</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_esm_infra_error">
- <property name="visible">False</property>
- <property name="valign">center</property>
- <property name="xalign">0</property>
- <attributes>
- <attribute name="foreground" value="red"/>
- <attribute name="scale" value="0.9"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSwitch" id="switch_ua_esm_apps">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_esm_apps">
- <property name="visible">True</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_esm_apps_error">
- <property name="visible">False</property>
- <property name="xalign">0</property>
- <attributes>
- <attribute name="foreground" value="red"/>
- <attribute name="scale" value="0.9"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkSwitch" id="switch_ua_livepatch">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_livepatch">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Kernel Livepatch&lt;/b&gt; helps keep your system secure by applying security updates that don't require a restart.</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_livepatch_error">
- <property name="visible">False</property>
- <property name="xalign">0</property>
- <attributes>
- <attribute name="foreground" value="red"/>
- <attribute name="scale" value="0.9"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="checkbutton_livepatch_topbar">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Show Livepatch status in the top bar</property>
- <property name="sensitive">False</property>
- <property name="halign">start</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">6</property>
- </packing>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <child>
- <object class="GtkExpander" id="expander_compliance_and_hardening">
- <property name="visible">True</property>
- <property name="margin">18</property>
- <child type="label">
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Compliance &amp;amp; Hardening&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Only recommended to assist with FedRAMP, HIPAA, and other compliance and hardening requirements. Includes FIPS 140-2 certified modules, DISA-STIG, CIS and Common Criteria.</property>
- <property name="wrap">True</property>
- <property name="xalign">0</property>
- <property name="max-width-chars">90</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkGrid">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">12</property>
- <property name="margin_top">12</property>
- <child>
- <object class="GtkButton" id="button_ua_fips">
- <property name="visible">True</property>
- <property name="width_request">160</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enable _FIPS</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_fips_status">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;FIPS 140-2&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_fips_description">
- <property name="visible">True</property>
- <property name="label" translatable="yes">A US and Canada government cryptographic module certification of compliance with the FIPS 140-2 data protection standard. &lt;a href="https://ubuntu.com/security/certifications/docs/fips"&gt;FIPS documentation&lt;/a&gt;</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="xalign">0</property>
- <property name="max-width-chars">75</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_ua_usg">
- <property name="visible">True</property>
- <property name="width_request">160</property>
- <child>
- <object class="GtkLabel" id="label_ua_usg_button">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enable _USG</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_usg_status">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Trisquel Security Guide (USG)&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_ua_usg_description">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Automates hardening and auditing with CIS benchmark and DISA-STIG profiles while allowing for environment-specific customizations. &lt;a href="https://ubuntu.com/security/certifications/docs/usg"&gt;USG documentation&lt;/a&gt;</property>
- <property name="use_markup">True</property>
- <property name="wrap">True</property>
- <property name="xalign">0</property>
- <property name="max-width-chars">75</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box_ua_fips_setup">
- <property name="visible">True</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">18</property>
- <property name="expand">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <child>
- <object class="GtkSpinner">
- <property name="visible">True</property>
- <property name="active">True</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Setting up FIPS</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
......@@ -3,7 +3,7 @@
#
# 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
......@@ -31,7 +31,14 @@ def trisquel_eol():
eol_datetime = datetime.strptime(line['eol'], '%Y-%m-%d')
eol_date = eol_datetime.date()
return eol_date
def trisquel_upstream():
with open('/usr/share/distro-info/trisquel.csv', 'r') as distro_data:
trisquel_distro_data = csv.DictReader(distro_data)
for line in trisquel_distro_data:
if line['series'] == (release_name):
codename_upstream = line['upstream']
return(codename_upstream)
trisquel_rel_desc = release_description
trisquel_eol = trisquel_eol()
trisquel_upstream_rel = trisquel_upstream()
helpers/DATA/thunderbird/branding/content/about-wordmark.png

11.2 KiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="52.493332mm"
height="14.111111mm"
viewBox="0 0 52.493332 14.111111"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="drawing.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="382.05713"
inkscape:cy="-459.04764"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="918"
inkscape:window-height="916"
inkscape:window-x="988"
inkscape:window-y="171"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-6.2592888,-13.265869)">
<image
y="13.265869"
x="6.2592888"
id="image3791"
xlink:href="data:image/png;base64,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
QaIFEGxSypI75hYxUiFSBBhepOpUxgcG0rP5gtIHmZDrmC9CngUBdfQYAcZFniAqHYGSWv+eKYLj
NINB6K9IVnNHUSl16gQFosSDoOWHEQwvItBB1gAVGhBgyFhSCrWld+qS8OykiYB7pF8VYRjSGH8f
T8skTX6JTGxD5cDekfoZghj2jlnJ8wX7YDugX+bPOp7sTidWVjqCnxdwkCtUVklnCPVzur6XDlTp
zpRKySggABvORgDBkggKcBUN2dH66AQUJrUizk+fZ0mwYyhJD/dkk6EN+NWiHr8U0TG41VTuOnKC
Z2jajrt+YuY04gINDBymMSQEAmaRlfkeWbB508kEqDlbh/9oDTa7qI6ASqKOniHYKuLdZO/rgvm5
nY3UoTMhdB6qB7sd8Nj7GpSLisyHSv3A+6F/ruv0NJkuCwBGnD0WSJ9wTigArdu6rM0gbZHJoT3p
WPRMxuZUQBR2Yw4XUDdsU49iwgbpBkYN5BuobQwZBTp4kcs2HY6jbagn+5xuEXEqEjvWFgXZBW+f
YwZVN6Vpwjqti6RRIWwa9EqFq1Fk9HKuTIUTQ59L1+ixpK/VFWDElh6+jk+bpIDUPwI+hIKIQKKY
0p70I3ZDJ17AD/4KwLg2YxD6X4BNGbfwXc2R0Lv6P4n0oKwEuJbybGuwQXpKD6U8ulLP8GiEo6f4
YH5B+ugAYTYUz0aQPWRL3zT8IQvjHU/Y+78xnnaAKmiISd0t3x3G1dZYQK/XuRr0QsQ/iMNAXL3L
lo+Wj6HpByEH2qAmw1bjfgAPgh+uQwvnZ6oZCDDifh1txIdefv7zV/ef3vCPBpKnNUjU/S9JcE/H
pMJIawAAAF56VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB42j1JuQ2AQAzrMwUjJLYlwjrkGjoK
9hfhBNiSXzvOq2yZEIwpaNNwNX/EiHJw7ZgEncFsxePzqX72dw2KMIyvutsNMgsU3r/6gaYAAA9K
aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBN
cENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEv
IiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3Jp
cHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczppcHRjRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3Rk
L0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9i
ZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94
YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVz
ZXBsdXMub3JnL2xkZi94bXAvMS4wLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5v
cmcveG1wLyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIK
ICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9j
dW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOmU5YWFjYmNiLTBmY2YtNGU5Zi1iNjU2LTA2N2NhYjAz
YTFiYyIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplMDg0YjQyZi1iNmZlLTQ3OTItOGJh
OS1iZThlOTU0MTAzZTciCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpmOGQx
NzYwYy1hMDM5LTQ5ZWYtYWExMy1mOGE5ZDg3MWIzNTIiCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJ
TVA6UGxhdGZvcm09IkxpbnV4IgogICBHSU1QOlRpbWVTdGFtcD0iMTUxODk5NDkwMjk0MDI4MyIK
ICAgR0lNUDpWZXJzaW9uPSIyLjkuOSIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIHhtcDpD
cmVhdG9yVG9vbD0iR0lNUCAyLjkvMi4xMCI+CiAgIDxpcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4K
ICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgPGlwdGNFeHQ6
TG9jYXRpb25TaG93bj4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uU2hvd24+
CiAgIDxpcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0
OkFydHdvcmtPck9iamVjdD4KICAgPGlwdGNFeHQ6UmVnaXN0cnlJZD4KICAgIDxyZGY6QmFnLz4K
ICAgPC9pcHRjRXh0OlJlZ2lzdHJ5SWQ+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+
CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFu
Z2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjRjMmU2YjZlLTMxYTctNGM1
NS05NjFlLTljNThlOGU2MDg5NCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjkv
Mi4xMCAoTGludXgpIgogICAgICBzdEV2dDp3aGVuPSItMDU6MDAiLz4KICAgIDwvcmRmOlNlcT4K
ICAgPC94bXBNTTpIaXN0b3J5PgogICA8cGx1czpJbWFnZVN1cHBsaWVyPgogICAgPHJkZjpTZXEv
PgogICA8L3BsdXM6SW1hZ2VTdXBwbGllcj4KICAgPHBsdXM6SW1hZ2VDcmVhdG9yPgogICAgPHJk
ZjpTZXEvPgogICA8L3BsdXM6SW1hZ2VDcmVhdG9yPgogICA8cGx1czpDb3B5cmlnaHRPd25lcj4K
ICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkNvcHlyaWdodE93bmVyPgogICA8cGx1czpMaWNlbnNv
cj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkxpY2Vuc29yPgogIDwvcmRmOkRlc2NyaXB0aW9u
PgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
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
"
preserveAspectRatio="none"
height="14.111111"
width="52.493332" />
<path
style="fill:#000000;stroke-width:0.28222221"
d=""
id="path3794"
inkscape:connector-curvature="0" />
</g>
</svg>
id="aboutWordmark"
x="0px"
y="0px"
width="130px"
height="38px"
viewBox="0 0 130 38"
xml:space="preserve"
inkscape:version="1.2 (1:1.2.1+202207142221+cd75a1ee6d)"
sodipodi:docname="about-wordmark.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1008"
id="namedview5"
showgrid="false"
inkscape:zoom="4.8940365"
inkscape:cx="68.450654"
inkscape:cy="28.810574"
inkscape:window-x="1366"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="aboutWordmark"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<g
aria-label="Icedove"
id="text1936-3-9"
style="font-weight:bold;font-size:33.6271px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';text-align:end;text-anchor:end;fill:#6f6f6f;stroke-width:0.452261"
transform="matrix(0.73871871,0,0,0.73871871,-0.40396669,-9.5617209)"><path
d="M 0.54684779,37.310169 V 14.175117 H 5.3905954 v 23.135052 z"
id="path1988-6-1" /><path
d="m 17.393237,37.638559 q -4.039193,0 -6.239403,-2.397245 -2.2002111,-2.413664 -2.2002111,-6.715568 0,-4.400422 2.2166301,-6.846925 2.21663,-2.462922 6.288662,-2.462922 3.136122,0 5.188557,1.57627 2.052435,1.57627 2.577859,4.351163 l -4.646714,0.229873 q -0.197034,-1.362817 -0.985169,-2.167372 -0.788135,-0.820974 -2.23305,-0.820974 -3.563027,0 -3.563027,5.960272 0,6.140887 3.628705,6.140887 1.313559,0 2.200211,-0.820974 0.886652,-0.837394 1.100106,-2.479342 l 4.630294,0.213453 q -0.246292,1.822563 -1.313559,3.251058 -1.050847,1.428495 -2.774893,2.21663 -1.724045,0.771716 -3.874998,0.771716 z"
id="path1990-7-2" /><path
d="m 35.963673,37.638559 q -4.006354,0 -6.157306,-2.364406 -2.150952,-2.380825 -2.150952,-6.929022 0,-4.400421 2.183791,-6.764827 2.183791,-2.364405 6.190145,-2.364405 3.82574,0 5.845336,2.545019 2.019597,2.528601 2.019597,7.421607 v 0.131356 H 32.499162 q 0,2.594278 0.95233,3.924256 0.96875,1.313559 2.742054,1.313559 2.446503,0 3.086863,-2.118113 l 4.351163,0.377648 q -1.888241,4.827328 -7.667899,4.827328 z m 0,-15.516412 q -1.625529,0 -2.512181,1.132944 -0.870232,1.132945 -0.919491,3.168961 h 6.896183 q -0.131356,-2.150953 -1.034427,-3.218219 -0.903072,-1.083686 -2.430084,-1.083686 z"
id="path1992-5-7" /><path
d="m 58.901692,37.310169 q -0.06568,-0.246292 -0.164195,-1.231461 -0.0821,-1.001589 -0.0821,-1.658368 h -0.06568 q -1.494173,3.218219 -5.681142,3.218219 -3.103282,0 -4.794489,-2.413664 -1.691207,-2.430084 -1.691207,-6.781247 0,-4.416841 1.773305,-6.814085 1.789723,-2.413664 5.0572,-2.413664 1.888241,0 3.251058,0.788135 1.379237,0.788135 2.118114,2.347986 h 0.03284 l -0.03284,-2.922668 v -6.485696 h 4.613874 v 20.491515 q 0,1.641948 0.131356,3.874998 z m -0.213454,-8.981457 q 0,-2.87341 -0.968749,-4.416841 -0.95233,-1.559851 -2.824151,-1.559851 -1.855402,0 -2.758473,1.510592 -0.903072,1.494173 -0.903072,4.581036 0,6.04237 3.628706,6.04237 1.822562,0 2.824151,-1.59269 1.001588,-1.609109 1.001588,-4.564616 z"
id="path1994-3-0" /><path
d="m 84.811634,28.410809 q 0,4.318324 -2.397244,6.781247 -2.397245,2.446503 -6.633472,2.446503 -4.154129,0 -6.518534,-2.462923 -2.364406,-2.462922 -2.364406,-6.764827 0,-4.285485 2.364406,-6.731988 2.364405,-2.462922 6.617051,-2.462922 4.351163,0 6.633472,2.380825 2.298727,2.364405 2.298727,6.814085 z m -4.827328,0 q 0,-3.16896 -1.034427,-4.597455 -1.034428,-1.428495 -3.004766,-1.428495 -4.203387,0 -4.203387,6.02595 0,2.971927 1.018008,4.531778 1.034427,1.543431 2.971926,1.543431 4.252646,0 4.252646,-6.075209 z"
id="path1996-5-9" /><path
d="m 98.127841,37.310169 h -5.516947 l -6.35434,-17.765881 h 4.876587 l 3.103282,9.933788 q 0.246292,0.820974 1.165783,4.10487 0.164195,-0.673198 0.673199,-2.364405 0.509004,-1.691207 3.776481,-11.674253 h 4.827324 z"
id="path1998-6-3" /><path
d="m 114.44881,37.638559 q -4.00636,0 -6.15731,-2.364406 -2.15095,-2.380825 -2.15095,-6.929022 0,-4.400421 2.18379,-6.764827 2.18379,-2.364405 6.19014,-2.364405 3.82574,0 5.84534,2.545019 2.0196,2.528601 2.0196,7.421607 v 0.131356 h -11.39513 q 0,2.594278 0.95233,3.924256 0.96875,1.313559 2.74206,1.313559 2.4465,0 3.08686,-2.118113 l 4.35116,0.377648 q -1.88824,4.827328 -7.66789,4.827328 z m 0,-15.516412 q -1.62553,0 -2.51219,1.132944 -0.87023,1.132945 -0.91949,3.168961 h 6.89619 q -0.13136,-2.150953 -1.03443,-3.218219 -0.90307,-1.083686 -2.43008,-1.083686 z"
id="path2000-2-6" /></g></svg>
helpers/DATA/thunderbird/debug_brand/account-watermark-light.png

38.5 KiB | W: 0px | H: 0px

helpers/DATA/thunderbird/debug_brand/account-watermark-light.png

43.6 KiB | W: 0px | H: 0px

helpers/DATA/thunderbird/debug_brand/account-watermark-light.png
helpers/DATA/thunderbird/debug_brand/account-watermark-light.png
helpers/DATA/thunderbird/debug_brand/account-watermark-light.png
helpers/DATA/thunderbird/debug_brand/account-watermark-light.png
  • 2-up
  • Swipe
  • Onion skin
helpers/DATA/thunderbird/debug_brand/account-watermark.png

42.9 KiB | W: 0px | H: 0px

helpers/DATA/thunderbird/debug_brand/account-watermark.png

47.9 KiB | W: 0px | H: 0px

helpers/DATA/thunderbird/debug_brand/account-watermark.png
helpers/DATA/thunderbird/debug_brand/account-watermark.png
helpers/DATA/thunderbird/debug_brand/account-watermark.png
helpers/DATA/thunderbird/debug_brand/account-watermark.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -51,10 +51,18 @@ class RemoteSettings:
DUMPS_PATH_ABSOLUTE = arguments.MAIN_PATH / DUMPS_PATH_RELATIVE
_WRAPPER_NAME = 'data'
_LAST_MODIFIED_KEY_NAME = 'last_modified'
@classmethod
def get_collection_timestamp(cls, collection):
return max((record[cls._LAST_MODIFIED_KEY_NAME]
for record in collection.content), default=0)
@classmethod
def wrap(cls, processed):
return File(processed.path, {cls._WRAPPER_NAME: processed.content})
return File(processed.path,
{cls._WRAPPER_NAME: processed.content,
'timestamp': cls.get_collection_timestamp(processed)})
@classmethod
def unwrap(cls, parsed_jsons):
......@@ -88,13 +96,15 @@ class RemoteSettings:
while timestamp in timestamps:
timestamp += 1
timestamps.append(timestamp)
record['last_modified'] = timestamp
record[cls._LAST_MODIFIED_KEY_NAME] = timestamp
if parsed_schema is not None:
validate(record, schema=parsed_schema)
result.append(record)
result.sort(
key=lambda record: record[cls._LAST_MODIFIED_KEY_NAME], reverse=True)
cls.OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True)
return File(cls.OUTPUT_PATH, result)
......@@ -109,7 +119,7 @@ class RemoteSettings:
class Changes(RemoteSettings):
JSON_PATHS = tuple(RemoteSettings.DUMPS_PATH_ABSOLUTE.glob('*/*.json'))
OUTPUT_PATH = RemoteSettings.DUMPS_PATH_ABSOLUTE / 'monitor/changes.json'
OUTPUT_PATH = RemoteSettings.DUMPS_PATH_ABSOLUTE / 'monitor/changes'
@classmethod
def wrap(cls, processed):
......@@ -124,8 +134,8 @@ class Changes(RemoteSettings):
for collection in unwrapped_jsons:
if collection.path != RemoteSettings.DUMPS_PATH_ABSOLUTE / 'main/example.json':
latest_change = {}
latest_change['last_modified'] = max(
(record['last_modified'] for record in collection.content), default=0)
latest_change[cls._LAST_MODIFIED_KEY_NAME] = cls.get_collection_timestamp(
collection)
latest_change['bucket'] = collection.path.parent.name
latest_change['collection'] = collection.path.stem
changes.append(latest_change)
......
No preview for this file type
#!/usr/bin/python3
# nice apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst
import apt
import apt_pkg
import os
import sys
from optparse import OptionParser
import re
import gettext
import distro_info
import subprocess
SYNAPTIC_PINFILE = "/var/lib/synaptic/preferences"
OS_RELEASE_PATH = "/etc/os-release"
def _get_info_from_os_release(key):
" get info directly from os-release file "
if os.path.exists(OS_RELEASE_PATH):
with open(OS_RELEASE_PATH) as f:
search_res = re.search(
r"{}=(?P<name>.*)".format(key),
f.read()
)
if search_res:
return search_res.group("name")
else:
raise Exception(
"Could not find {} in {}".format(
key, OS_RELEASE_PATH
)
)
else:
raise Exception(
"File {} was not found on the system".format(
OS_RELEASE_PATH
)
)
def _get_output_from_lsb_release(lsb_option):
" get info from lsb_release output "
return subprocess.check_output(
["lsb_release", lsb_option, "-s"], universal_newlines=True
).strip()
def get_distro():
" get distro name "
try:
return _get_info_from_os_release(key="UBUNTU_CODENAME")
except Exception:
# If the system does not have os-release file or does not have the
# required entry in it, we will get the distro name from lsb_release
# command
return _get_output_from_lsb_release("-c")
DISTRO = get_distro()
def _(msg):
return gettext.dgettext("update-notifier", msg)
def _handleException(type, value, tb):
sys.stderr.write("E: " + _("Unknown Error: '%s' (%s)") % (type, value))
sys.exit(-1)
def get_distro_version():
" get distro version "
try:
return _get_info_from_os_release(key="VERSION_ID").replace('"', "")
except Exception:
# If the system does not have os-release file or does not have the
# required entry in it, we will get the distro name from lsb_release
# command
return _get_output_from_lsb_release("-r")
def clean(cache, depcache):
" unmark (clean) all changes from the given depcache "
# mvo: looping is too inefficient with the new auto-mark code
# for pkg in cache.Packages:
# depcache.MarkKeep(pkg)
depcache.init()
def saveDistUpgrade(cache, depcache):
""" this function mimics a upgrade but will never remove anything """
depcache.upgrade(True)
if depcache.del_count > 0:
clean(cache, depcache)
depcache.upgrade()
def isSecurityUpgrade(ver):
" check if the given version is a security update (or masks one) "
security_pockets = [("Ubuntu", "%s-security" % DISTRO),
("gNewSense", "%s-security" % DISTRO),
("Debian", "%s-updates" % DISTRO)]
for (file, index) in ver.file_list:
for origin, archive in security_pockets:
if (file.archive == archive and file.origin == origin):
return True
return False
def write_package_names(outstream, cache, depcache):
" write out package names that change to outstream "
pkgs = [pkg for pkg in cache.packages if depcache.marked_install(pkg)
or depcache.marked_upgrade(pkg)]
outstream.write("\n".join([p.name for p in pkgs]))
def is_lts_distro():
" check if the current distro is LTS or not"
return distro_info.TrisquelDistroInfo().is_lts(DISTRO)
def write_human_readable_summary(outstream, upgrades, security_updates):
" write out human summary to outstream "
lts_distro = is_lts_distro()
outstream.write(
gettext.dngettext("update-notifier",
"%i update can be applied immediately.",
"%i updates can be applied immediately.",
upgrades) % upgrades
)
if security_updates > 0:
outstream.write("\n")
outstream.write(gettext.dngettext("update-notifier",
"%i of these updates is a "
"standard security update.",
"%i of these updates are "
"standard security updates.",
security_updates) %
security_updates)
def init():
" init the system, be nice "
# FIXME: do a ionice here too?
os.nice(19)
apt_pkg.init()
def run(options=None):
# we are run in "are security updates installed automatically?"
# question mode
if options.security_updates_unattended:
res = apt_pkg.config.find_i("APT::Periodic::Unattended-Upgrade", 0)
# print(res)
sys.exit(res)
# get caches
try:
cache = apt_pkg.Cache(apt.progress.base.OpProgress())
except SystemError as e:
sys.stderr.write("E: " + _("Error: Opening the cache (%s)") % e)
sys.exit(-1)
depcache = apt_pkg.DepCache(cache)
# read the synaptic pins too
if os.path.exists(SYNAPTIC_PINFILE):
depcache.read_pinfile(SYNAPTIC_PINFILE)
depcache.init()
if depcache.broken_count > 0:
sys.stderr.write("E: " + _("Error: BrokenCount > 0"))
sys.exit(-1)
# do the upgrade (not dist-upgrade!)
try:
saveDistUpgrade(cache, depcache)
except SystemError as e:
sys.stderr.write("E: " + _("Error: Marking the upgrade (%s)") % e)
sys.exit(-1)
# analyze the ugprade
upgrades = 0
security_updates = 0
# we need another cache that has more pkg details
with apt.Cache() as aptcache:
for pkg in cache.packages:
# skip packages that are not marked upgraded/installed
if not (depcache.marked_install(pkg)
or depcache.marked_upgrade(pkg)):
continue
# check if this is really a upgrade or a false positive
# (workaround for ubuntu #7907)
inst_ver = pkg.current_ver
cand_ver = depcache.get_candidate_ver(pkg)
if cand_ver == inst_ver:
continue
# check for security upgrades
if isSecurityUpgrade(cand_ver):
security_updates += 1
upgrades += 1
continue
# check to see if the update is a phased one
try:
from UpdateManager.Core.UpdateList import UpdateList
ul = UpdateList(None)
ignored = ul._is_ignored_phased_update(
aptcache[pkg.get_fullname()])
if ignored:
depcache.mark_keep(pkg)
continue
except ImportError:
pass
upgrades = upgrades + 1
# now check for security updates that are masked by a
# candidate version from another repo (-proposed or -updates)
for ver in pkg.version_list:
if (inst_ver
and apt_pkg.version_compare(ver.ver_str,
inst_ver.ver_str) <= 0):
continue
if isSecurityUpgrade(ver):
security_updates += 1
break
# print the number of upgrades
if options and options.show_package_names:
write_package_names(sys.stderr, cache, depcache)
elif options and options.readable_output:
write_human_readable_summary(sys.stdout, upgrades, security_updates)
else:
# print the number of regular upgrades and the number of
# security upgrades
sys.stderr.write("%s;%s" % (upgrades, security_updates))
# return the number of upgrades (if its used as a module)
return(upgrades, security_updates)
if __name__ == "__main__":
# setup a exception handler to make sure that uncaught stuff goes
# to the notifier
sys.excepthook = _handleException
# gettext
APP = "update-notifier"
DIR = "/usr/share/locale"
gettext.bindtextdomain(APP, DIR)
gettext.textdomain(APP)
# check arguments
parser = OptionParser()
parser.add_option("-p",
"--package-names",
action="store_true",
dest="show_package_names",
help=_("Show the packages that are "
"going to be installed/upgraded"))
parser.add_option("",
"--human-readable",
action="store_true",
dest="readable_output",
help=_("Show human readable output on stdout"))
parser.add_option("",
"--security-updates-unattended",
action="store_true",
help=_("Return the time in days when security updates "
"are installed unattended (0 means disabled)"))
(options, args) = parser.parse_args()
# run it
init()
run(options)
......@@ -46,7 +46,7 @@ export DOMAIN=trisquel.info
export UPSTREAM=focal
export UPSTREAMRELEASE=20.04
MIRROR=http://archive.ubuntu.com/ubuntu
LOCALMIRROR=https://archive.trisquel.org/trisquel
LOCALMIRROR=http://archive.trisquel.org/trisquel
LOCAL_APT=`mktemp -d`
if [ -n "$BUILD_UNTIL" ] && (( $(echo "$BUILD_UNTIL $REVISION" | awk '{print ($1 > $2)}') )); then
......@@ -68,7 +68,12 @@ find ${@:3} -type f -not -iregex '.*changelog.*' -not -iregex '.*copyright.*' -e
changelog(){
head -n 1 debian/changelog | grep -q $UPSTREAM-security && REPO=$CODENAME-security || REPO=$CODENAME
[ "$BACKPORT" = true ] || [ "$BACKPORTS" = true ] && REPO=${CODENAME}-backports
#Name convention issue "+" breaking packages build like console-setup, using "-" instead.
if [ "$NAME_CI" = true ];then
echo | dch -D $REPO -v `pkgversion`-${REVISION}trisquel${VERSION} "$1"
else
echo | dch -D $REPO -v `pkgversion`+${REVISION}trisquel${VERSION} "$1"
fi
# Make sure the changelog file is identical between archs
/bin/sed "/-- Trisquel/s/.*/ -- Trisquel GNU\/Linux developers <trisquel-devel@listas.trisquel.info> $DATE/" -i debian/changelog
......@@ -159,9 +164,9 @@ cd PACKAGES/$PACKAGE
#Get package and uncompress it
apt-get update -c $LOCAL_APT/etc/apt.conf
if [ -n "$FIXED_VER" ]; then
apt-get source $PACKAGE=$FIXED_VER --download-only -c ${LOCAL_APT}/etc/apt.conf
apt-get source --only-source $PACKAGE=$FIXED_VER --download-only -c ${LOCAL_APT}/etc/apt.conf
else
apt-get source $PACKAGE --download-only -c ${LOCAL_APT}/etc/apt.conf
apt-get source --only-source $PACKAGE --download-only -c ${LOCAL_APT}/etc/apt.conf
fi
# Verify it first
if grep -q "BEGIN PGP SIGNATURE" *.dsc; then
......@@ -189,10 +194,8 @@ cd source
[ -f debian/source/format ] && rm debian/source/format
[ -f debian/source/options ] && rm debian/source/options
#for i in debian.master/control.stub.in debian.master/control.stub debian.master/control debian/control.stub.in debian/control.stub debian/control
#do
# [ -f $i ] && /bin/sed "s_^Maintainer.*_Maintainer: $DEBFULLNAME <$DEBEMAIL>_g" -i $i
#done
grep -lr 'Maintainer:' debian*/control* | \
xargs sed -i "s_^Maintainer.*_Maintainer: $DEBFULLNAME <$DEBEMAIL>_g"
compile(){
......@@ -266,4 +269,7 @@ else
fi
}
remove_patch(){
rm "$(find debian/patches -name "$1")"
sed -i "/$1/d" debian/patches/series
}