To view or print this file, you will need a PDF reader installed on your computer. Many PDF readers are free software and are available on most systems. If you don't already have one, you can browse a list of options at pdfreaders.org, or install a PDF reader from your operating system's software repository.
+
An Anarchist FAQ
+
+
+diff --git a/markdown/pdf.md b/markdown/pdf.md
+index 0375b395..5994bd6f 100644
+--- a/markdown/pdf.md
++++ b/markdown/pdf.md
+@@ -1,9 +1,10 @@
+ # "An Anarchist FAQ" in pdf format
+
+-To view and print out the file you will need to have Adobe Document Reader on
+-your computer. This is free software that now comes on many computers and with
+-many CD's. If you do not already have it you can [ download it from the Adobe
+-for a faster text only
++To view or print this file, you will need a PDF reader installed on your
++computer. Many PDF readers are free software and are available on most
++systems. If you don't already have one, you can browse a list of options at
++pdfreaders.org, or install a PDF reader from your operating system's software
++repository
+
+ ## _An Anarchist FAQ
+ _
diff --git a/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch b/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch
index 1216ca7..3f44f06 100644
--- a/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch
+++ b/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch
@@ -7,14 +7,12 @@ diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index c5f7cf3a..f0124235 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
-@@ -1251,11 +1251,11 @@ pref("accessibility.typeaheadfind.linksonly", false);
+@@ -1368,9 +1368,9 @@ pref("accessibility.typeaheadfind.linksonly", false);
pref("accessibility.typeaheadfind.flashBar", 1);
- // Whether we can show the "Firefox Labs" section.
--pref("browser.preferences.experimental", true);
-+pref("browser.preferences.experimental", false);
// Whether we had to hide the "Firefox Labs" section because it would be empty.
- pref("browser.preferences.experimental.hidden", false);
+-pref("browser.preferences.experimental.hidden", false);
++pref("browser.preferences.experimental.hidden", true);
// Whether we show the "More from Mozilla" section.
-pref("browser.preferences.moreFromMozilla", true);
+pref("browser.preferences.moreFromMozilla", false);
diff --git a/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch b/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch
index 6865594..ffa7ea9 100644
--- a/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch
+++ b/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch
@@ -1,33 +1,32 @@
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
-index 52a520fd..81cc685d 100644
+index 217ed280..d91cde94 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
-@@ -1718,19 +1718,19 @@
- pref("browser.topsites.component.enabled", false);
+@@ -1806,16 +1806,16 @@ pref("browser.topsites.component.enabled", false);
+
pref("browser.topsites.useRemoteSetting", true);
// Fetch sponsored Top Sites from Mozilla Tiles Service (Contile)
-pref("browser.topsites.contile.enabled", true);
-pref("browser.topsites.contile.endpoint", "https://contile.services.mozilla.com/v1/tiles");
+pref("browser.topsites.contile.enabled", false);
+pref("browser.topsites.contile.endpoint", "");
-
- // Whether to enable the Share-of-Voice feature for Sponsored Topsites via Contile.
--pref("browser.topsites.contile.sov.enabled", true);
-+pref("browser.topsites.contile.sov.enabled", false);
-
+
// The base URL for the Quick Suggest anonymizing proxy. To make a request to
// the proxy, include a campaign ID in the path.
-pref("browser.partnerlink.attributionURL", "https://topsites.services.mozilla.com/cid/");
-pref("browser.partnerlink.campaign.topsites", "amzn_2020_a1");
+pref("browser.partnerlink.attributionURL", "");
+pref("browser.partnerlink.campaign.topsites", "");
-
+
// Activates preloading of the new tab url.
-pref("browser.newtab.preload", true);
+pref("browser.newtab.preload", false);
-
- pref("browser.preonboarding.onTrainRolloutPopulation", 0);
-
+
+ // Do not enable the preonboarding experience on Linux
+ #ifdef XP_LINUX
+@@ -1856,24 +1856,24 @@ pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-c", false);
+ pref("browser.newtabpage.activity-stream.discoverystream.refinedCardsLayout.enabled", true);
+
// Mozilla Ad Routing Service (MARS) unified ads service
-pref("browser.newtabpage.activity-stream.unifiedAds.tiles.enabled", true);
-pref("browser.newtabpage.activity-stream.unifiedAds.spocs.enabled", true);
@@ -36,19 +35,23 @@ index 52a520fd..81cc685d 100644
+pref("browser.newtabpage.activity-stream.unifiedAds.spocs.enabled", false);
+pref("browser.newtabpage.activity-stream.unifiedAds.endpoint", "");
pref("browser.newtabpage.activity-stream.unifiedAds.adsFeed.enabled", false);
- pref("browser.newtabpage.activity-stream.unifiedAds.adsFeed.tiles.enabled", false);
-
+ pref("browser.newtabpage.activity-stream.unifiedAds.ohttp.enabled", false);
+
// Weather widget for newtab
-pref("browser.newtabpage.activity-stream.showWeather", true);
+pref("browser.newtabpage.activity-stream.showWeather", false);
pref("browser.newtabpage.activity-stream.weather.query", "");
pref("browser.newtabpage.activity-stream.weather.display", "simple");
-
-+pref("browser.newtabpage.activity-stream.images.smart", true);
-
+
+ pref("browser.newtabpage.activity-stream.images.smart", true);
+
// enable location search for newtab weather widget
-pref("browser.newtabpage.activity-stream.weather.locationSearchEnabled", true);
+pref("browser.newtabpage.activity-stream.weather.locationSearchEnabled", false);
-
+
// List of regions that get weather by default.
- pref("browser.newtabpage.activity-stream.discoverystream.region-weather-config", "US,CA")
+-pref("browser.newtabpage.activity-stream.discoverystream.region-weather-config", "US,CA");
++pref("browser.newtabpage.activity-stream.discoverystream.region-weather-config", "");
+
+ // List of locales that weather widget supports.
+ pref("browser.newtabpage.activity-stream.discoverystream.locale-weather-config", "en-US,en-GB,en-CA");
diff --git a/helpers/DATA/firefox/patch_changes/005-apply_custom_urls.patch b/helpers/DATA/firefox/patch_changes/005-apply_custom_urls.patch
index 4f57574..059f74c 100644
--- a/helpers/DATA/firefox/patch_changes/005-apply_custom_urls.patch
+++ b/helpers/DATA/firefox/patch_changes/005-apply_custom_urls.patch
@@ -19,35 +19,59 @@ with is="" and support-page="..."
Cheers!
-diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml_
-index 77ea8f5d..62c3ce8e 100644
+diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
+index a9e8501a..02328371 100644
--- a/browser/components/preferences/privacy.inc.xhtml
+++ b/browser/components/preferences/privacy.inc.xhtml
-@@ -372,10 +372,7 @@
- support-page="global-privacy-control" />
-
-
--
-+
-
-
-
-@@ -388,11 +385,10 @@
-
-
-
+@@ -21,13 +21,13 @@
+
+
+
+-
-
-+
++
++
-
-
+
+#-
+#+
+#
+#
+#
+# dropped 144
+#diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
+#index 205c0e01..029b9925 100644
+#--- a/browser/components/preferences/privacy.inc.xhtml
+#+++ b/browser/components/preferences/privacy.inc.xhtml
+#@@ -372,10 +372,7 @@
+# support-page="global-privacy-control" />
+#
+#
+#-
+#+
+#
+#
+#
diff --git a/helpers/DATA/firefox/patch_changes/014-remove_support_firefox_mission_on_abrowser.patch b/helpers/DATA/firefox/patch_changes/014-remove_support_firefox_mission_on_abrowser.patch
index 73f2ec6..680d38a 100644
--- a/helpers/DATA/firefox/patch_changes/014-remove_support_firefox_mission_on_abrowser.patch
+++ b/helpers/DATA/firefox/patch_changes/014-remove_support_firefox_mission_on_abrowser.patch
@@ -22,7 +22,7 @@ diff --git a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs b/browser/ex
index 0d43919b..f2e0fbd0 100644
--- a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs
+++ b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs
-@@ -120,37 +120,6 @@ const PREFS_FOR_SETTINGS = () => [
+@@ -88,33 +88,6 @@ const PREFS_FOR_SETTINGS = () => [
),
eventSource: "TOP_STORIES",
},
@@ -52,15 +52,11 @@ index 0d43919b..f2e0fbd0 100644
- },
- ],
- },
-- shouldHidePref: !Services.prefs.getBoolPref(
-- "browser.newtabpage.activity-stream.system.showSponsoredCheckboxes",
-- false
-- ),
- },
];
export class AboutPreferences {
-@@ -351,41 +320,8 @@ export class AboutPreferences {
+@@ -344,41 +317,9 @@ export class AboutPreferences {
}
});
@@ -89,7 +85,7 @@ index 0d43919b..f2e0fbd0 100644
- setupSupportFirefoxSubCheck("feeds.section.topstories", "showSponsored");
- setupSupportFirefoxSubCheck("feeds.topsites", "showSponsoredTopSites");
- }
--
+
pref.on("change", () => {
subChecks.forEach(subcheck => {
- // Update child preferences for the "Support Firefox" checkbox group
@@ -120,14 +116,13 @@ index 269eca10..4c35b53f 100644
# Variables:
# $num (number) - Number of rows displayed
diff --git a/browser/themes/shared/preferences/preferences.css b/browser/themes/shared/preferences/preferences.css
-index 9c8155e5..4718341f 100644
+index 701d29be..769791d7 100644
--- a/browser/themes/shared/preferences/preferences.css
+++ b/browser/themes/shared/preferences/preferences.css
-@@ -1541,12 +1541,3 @@ richlistitem .text-link:hover {
- .search-header:has(.section-heading) {
+@@ -1478,15 +1478,6 @@ setting-group[groupid="home"] {
margin: 0;
}
--
+
-/* Styles for the "sponsors support our mission" message and link on the Home tab */
-.mission-message {
- margin-block-start: var(--space-large);
@@ -136,3 +131,7 @@ index 9c8155e5..4718341f 100644
- font-size: var(--font-size-small);
- }
-}
+-
+ #dohProviderSelect {
+ --select-max-width: 235px;
+ }
diff --git a/helpers/DATA/firefox/settings.js b/helpers/DATA/firefox/settings.js
index a7ffc69..a297d56 100644
--- a/helpers/DATA/firefox/settings.js
+++ b/helpers/DATA/firefox/settings.js
@@ -305,9 +305,12 @@ pref("dom.private-attribution.submission.enabled", false);
// Disable Machine Learning
pref("browser.ml.chat.enabled", false);
+pref("browser.tabs.groups.smart.enabled", false);
+
// Hide from UI
pref("browser.ml.chat.hideFromLabs", true);
pref("browser.ml.chat.hideLabsShortcuts", true);
+pref("browser.tabs.groups.smart.userEnabled", false);
// Disable tab hover preview
pref("browser.tabs.hoverPreview.enabled", false);
diff --git a/helpers/DATA/gnome-boxes/001_add_trisquel_gnome-boxes_logo.patch b/helpers/DATA/gnome-boxes/patch_changes/001_add_trisquel_gnome-boxes_logo.patch
similarity index 100%
rename from helpers/DATA/gnome-boxes/001_add_trisquel_gnome-boxes_logo.patch
rename to helpers/DATA/gnome-boxes/patch_changes/001_add_trisquel_gnome-boxes_logo.patch
diff --git a/helpers/DATA/gnome-boxes/patch_changes/002_allow_recommended-downloads_parsing_handle_empty.patch b/helpers/DATA/gnome-boxes/patch_changes/002_allow_recommended-downloads_parsing_handle_empty.patch
new file mode 100644
index 0000000..1b57e3b
--- /dev/null
+++ b/helpers/DATA/gnome-boxes/patch_changes/002_allow_recommended-downloads_parsing_handle_empty.patch
@@ -0,0 +1,30 @@
+From 333dfad568ba77456ff3b00e6c2750d6a2cf0d73 Mon Sep 17 00:00:00 2001
+From: Felipe Borges
+Date: Wed, 10 Aug 2022 09:54:41 +0200
+Subject: [PATCH] util-app: Make recommended-downloads parsing handle empty
+ media lists
+
+---
+ src/util-app.vala | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/util-app.vala b/src/util-app.vala
+index c0a42a94d..c5f47ae22 100644
+--- a/src/util-app.vala
++++ b/src/util-app.vala
+@@ -250,7 +250,11 @@ private async GLib.List? parse_recommended_downloads_file (string
+ continue;
+ }
+
+- var media = os.get_media_list ().get_nth (0) as Osinfo.Media;
++ var media_list = os.get_media_list ();
++ if (media_list == null || media_list.get_length () == 0)
++ continue;
++
++ var media = media_list.get_nth (0) as Osinfo.Media;
+ if (media.url != null || os_id.has_prefix ("http://redhat.com"))
+ list.append (media);
+
+--
+GitLab
+
diff --git a/helpers/DATA/inetutils/patch_changes/000-fix_injection_bug_with_bogus_user_names.patch b/helpers/DATA/inetutils/patch_changes/000-fix_injection_bug_with_bogus_user_names.patch
new file mode 100644
index 0000000..344d9ab
--- /dev/null
+++ b/helpers/DATA/inetutils/patch_changes/000-fix_injection_bug_with_bogus_user_names.patch
@@ -0,0 +1,34 @@
+From fd702c02497b2f398e739e3119bed0b23dd7aa7b Mon Sep 17 00:00:00 2001
+From: Paul Eggert
+Date: Tue, 20 Jan 2026 01:10:36 -0800
+Subject: [PATCH] Fix injection bug with bogus user names
+
+Problem reported by Kyu Neushwaistein.
+* telnetd/utility.c (_var_short_name):
+Ignore user names that start with '-' or contain shell metacharacters.
+
+Signed-off-by: Simon Josefsson
+---
+ telnetd/utility.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/telnetd/utility.c b/telnetd/utility.c
+index b486226e..c02cd0e6 100644
+--- a/telnetd/utility.c
++++ b/telnetd/utility.c
+@@ -1733,7 +1733,14 @@ _var_short_name (struct line_expander *exp)
+ return user_name ? xstrdup (user_name) : NULL;
+
+ case 'U':
+- return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");
++ {
++ /* Ignore user names starting with '-' or containing shell
++ metachars, as they can cause trouble. */
++ char const *u = getenv ("USER");
++ return xstrdup ((u && *u != '-'
++ && !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
++ ? u : "");
++ }
+
+ default:
+ exp->state = EXP_STATE_ERROR;
diff --git a/helpers/DATA/inetutils/patch_changes/001-telnetd_sanitize_all_variable_expansions.patch b/helpers/DATA/inetutils/patch_changes/001-telnetd_sanitize_all_variable_expansions.patch
new file mode 100644
index 0000000..8b4653c
--- /dev/null
+++ b/helpers/DATA/inetutils/patch_changes/001-telnetd_sanitize_all_variable_expansions.patch
@@ -0,0 +1,78 @@
+From ccba9f748aa8d50a38d7748e2e60362edd6a32cc Mon Sep 17 00:00:00 2001
+From: Simon Josefsson
+Date: Tue, 20 Jan 2026 14:02:39 +0100
+Subject: [PATCH] telnetd: Sanitize all variable expansions
+
+* telnetd/utility.c (sanitize): New function.
+(_var_short_name): Use it for all variables.
+---
+ telnetd/utility.c | 32 ++++++++++++++++++--------------
+ 1 file changed, 18 insertions(+), 14 deletions(-)
+
+diff --git a/telnetd/utility.c b/telnetd/utility.c
+index c02cd0e6..b21ad961 100644
+--- a/telnetd/utility.c
++++ b/telnetd/utility.c
+@@ -1684,6 +1684,17 @@ static void _expand_cond (struct line_expander *exp);
+ static void _skip_block (struct line_expander *exp);
+ static void _expand_block (struct line_expander *exp);
+
++static char *
++sanitize (const char *u)
++{
++ /* Ignore values starting with '-' or containing shell metachars, as
++ they can cause trouble. */
++ if (u && *u != '-' && !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
++ return u;
++ else
++ return "";
++}
++
+ /* Expand a variable referenced by its short one-symbol name.
+ Input: exp->cp points to the variable name.
+ FIXME: not implemented */
+@@ -1710,13 +1721,13 @@ _var_short_name (struct line_expander *exp)
+ return xstrdup (timebuf);
+
+ case 'h':
+- return xstrdup (remote_hostname);
++ return xstrdup (sanitize (remote_hostname));
+
+ case 'l':
+- return xstrdup (local_hostname);
++ return xstrdup (sanitize (local_hostname));
+
+ case 'L':
+- return xstrdup (line);
++ return xstrdup (sanitize (line));
+
+ case 't':
+ q = strchr (line + 1, '/');
+@@ -1724,23 +1735,16 @@ _var_short_name (struct line_expander *exp)
+ q++;
+ else
+ q = line;
+- return xstrdup (q);
++ return xstrdup (sanitize (q));
+
+ case 'T':
+- return terminaltype ? xstrdup (terminaltype) : NULL;
++ return terminaltype ? xstrdup (sanitize (terminaltype)) : NULL;
+
+ case 'u':
+- return user_name ? xstrdup (user_name) : NULL;
++ return user_name ? xstrdup (sanitize (user_name)) : NULL;
+
+ case 'U':
+- {
+- /* Ignore user names starting with '-' or containing shell
+- metachars, as they can cause trouble. */
+- char const *u = getenv ("USER");
+- return xstrdup ((u && *u != '-'
+- && !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
+- ? u : "");
+- }
++ return xstrdup (sanitize (getenv ("USER")));
+
+ default:
+ exp->state = EXP_STATE_ERROR;
diff --git a/helpers/DATA/mate-control-center/patch_changes/001-enable-manual-time-when-no-ntp-provider.patch b/helpers/DATA/mate-control-center/patch_changes/001-enable-manual-time-when-no-ntp-provider.patch
new file mode 100644
index 0000000..f7372d2
--- /dev/null
+++ b/helpers/DATA/mate-control-center/patch_changes/001-enable-manual-time-when-no-ntp-provider.patch
@@ -0,0 +1,103 @@
+diff --git a/capplets/time-admin/src/main.c b/capplets/time-admin/src/main.c
+index a15254e6..ac9adb43 100644
+--- a/capplets/time-admin/src/main.c
++++ b/capplets/time-admin/src/main.c
+@@ -156,8 +156,14 @@ static void InitMainWindow(TimeAdmin *ta)
+
+ /* NTP sync switch */
+ ta->NtpState = GetNtpState(ta);
++ /* If there is no NTP provider, then disable ntp switch and manually set NtpState = FALSE */
++ if (!GetCanNtp(ta)) {
++ gtk_widget_set_sensitive (ta->NtpSyncSwitch, FALSE);
++ ta->NtpState = FALSE;
++ }
+ gtk_switch_set_state (GTK_SWITCH(ta->NtpSyncSwitch), ta->NtpState);
+-
++ /* Refresh the tooltip state consistently */
++ ChangeSpinBttonState (ta);
+ /* Time zone */
+ SetupTimezoneDialog(ta);
+ const char *TimeZone = GetTimeZone(ta);
+diff --git a/capplets/time-admin/src/time-tool.c b/capplets/time-admin/src/time-tool.c
+index 664f6284..ac41545a 100644
+--- a/capplets/time-admin/src/time-tool.c
++++ b/capplets/time-admin/src/time-tool.c
+@@ -138,6 +138,45 @@ EXIT:
+
+ }
+
++/* Returns TRUE if timedated reports a network time provider (CanNTP == TRUE). */
++gboolean GetCanNtp(TimeAdmin *ta)
++{
++ GDBusProxy *proxy = NULL;
++ GError *error = NULL;
++ GVariant *ret;
++ GVariant *canntp;
++
++ proxy = g_dbus_proxy_new_sync (ta->Connection,
++ G_DBUS_PROXY_FLAGS_NONE,
++ NULL,
++ "org.freedesktop.timedate1",
++ "/org/freedesktop/timedate1",
++ "org.freedesktop.DBus.Properties",
++ NULL,
++ &error);
++ if (proxy == NULL)
++ goto EXIT;
++
++ ret = g_dbus_proxy_call_sync (proxy,
++ "Get",
++ g_variant_new ("(ss)",
++ "org.freedesktop.timedate1",
++ "CanNTP"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++ if (ret == NULL)
++ goto EXIT;
++
++ g_variant_get (ret, "(v)", &canntp);
++ return g_variant_get_boolean (canntp);
++
++EXIT:
++ ErrorMessage (_("GetNtpState"), error ? error->message : _("Unknown error"));
++ if (error) g_error_free (error);
++ return FALSE;
++}
+ const gchar *GetTimeZone(TimeAdmin *ta)
+ {
+ GDBusProxy *proxy = NULL;
+@@ -200,10 +238,16 @@ void SetTimeZone(GDBusProxy *proxy,const char *zone)
+ }
+ }
+
+-static void
++void
+ ChangeSpinBttonState (TimeAdmin *ta)
+ {
++ /* Enable/disable manual edit widgets based on NTP state */
+ gtk_widget_set_sensitive (ta->SaveButton, !ta->NtpState);
++ gtk_widget_set_sensitive (ta->HourSpin, !ta->NtpState);
++ gtk_widget_set_sensitive (ta->MinuteSpin, !ta->NtpState);
++ gtk_widget_set_sensitive (ta->SecondSpin, !ta->NtpState);
++ gtk_widget_set_sensitive (ta->Calendar, !ta->NtpState);
++
+ SetTooltip (ta->SaveButton, !ta->NtpState);
+ SetTooltip (ta->HourSpin, !ta->NtpState);
+ SetTooltip (ta->MinuteSpin, !ta->NtpState);
+diff --git a/capplets/time-admin/src/time-tool.h b/capplets/time-admin/src/time-tool.h
+index 9c17703e..dfb0e601 100644
+--- a/capplets/time-admin/src/time-tool.h
++++ b/capplets/time-admin/src/time-tool.h
+@@ -42,6 +42,10 @@ void SaveModifyTime (GtkButton *button,
+
+ gboolean GetNtpState (TimeAdmin *ta);
+
++gboolean GetCanNtp (TimeAdmin *ta);
++
++void ChangeSpinBttonState (TimeAdmin *ta);
++
+ const gchar *GetTimeZone (TimeAdmin *ta);
+
+ void SetTimeZone (GDBusProxy *proxy,
diff --git a/helpers/DATA/mate-user-admin/add-cracklib-runtime-as-dependency.patch b/helpers/DATA/mate-user-admin/patch_changes/000-add-cracklib-runtime-as-dependency.patch
similarity index 100%
rename from helpers/DATA/mate-user-admin/add-cracklib-runtime-as-dependency.patch
rename to helpers/DATA/mate-user-admin/patch_changes/000-add-cracklib-runtime-as-dependency.patch
diff --git a/helpers/DATA/mate-user-admin/patch_changes/001-Use-adduser-NAME_REGEX-for-username-validation.patch b/helpers/DATA/mate-user-admin/patch_changes/001-Use-adduser-NAME_REGEX-for-username-validation.patch
new file mode 100644
index 0000000..e19611f
--- /dev/null
+++ b/helpers/DATA/mate-user-admin/patch_changes/001-Use-adduser-NAME_REGEX-for-username-validation.patch
@@ -0,0 +1,76 @@
+diff --git a/src/user-admin.c b/src/user-admin.c
+index c51a2022..a4fb6941 100644
+--- a/src/user-admin.c
++++ b/src/user-admin.c
+@@ -23,8 +23,10 @@
+ #include
+ #include
+ #include
++#include
+ #include
+ #include
++#include
+ #include
+ #include
+ #include
+@@ -285,6 +287,51 @@ static gboolean UserNameValidCheck (const gchar *UserName, gchar **Message)
+ valid = TRUE;
+ if (!in_use && !empty && !home_use)
+ {
++ /* Follow adduser(8) policy:
++ * Read NAME_REGEX from /etc/adduser.conf, compile an anchored regex,
++ * and require the username to fully match it. If unavailable or
++ * invalid, fall back to current Debian/Ubuntu default: ^[a-z][-a-z0-9_]*$
++ * (lowercase first char; then lowercase, digits, '-' and '_').
++ */
++ {
++ gchar *contents = NULL, *rx_s = NULL;
++ gsize len = 0;
++ const gchar *fallback = "^[a-z][-a-z0-9_]*$";
++ if (g_file_get_contents("/etc/adduser.conf", &contents, &len, NULL)) {
++ gchar **lines = g_strsplit(contents, "\n", -1);
++ for (gchar **p = lines; p && *p; ++p) {
++ gchar *line = g_strstrip(*p);
++ if (!line || !*line || line[0] == '#')
++ continue;
++ if (g_str_has_prefix(line, "NAME_REGEX")) {
++ /* Accept forms like: NAME_REGEX="...pattern..." */
++ gchar *q1 = strchr(line, '"');
++ if (q1) {
++ gchar *q2 = strrchr(q1 + 1, '"');
++ if (q2 && q2 > q1 + 1)
++ rx_s = g_strndup(q1 + 1, (gsize)(q2 - (q1 + 1)));
++ }
++ break;
++ }
++ }
++ g_strfreev(lines);
++ g_free(contents);
++ }
++
++ GError *rx_err = NULL;
++ GRegex *rx = g_regex_new(rx_s ? rx_s : fallback, G_REGEX_ANCHORED, 0, &rx_err);
++ g_free(rx_s);
++ if (rx) {
++ if (!g_regex_match(rx, UserName, 0, NULL)) {
++ valid = FALSE;
++ }
++ g_regex_unref(rx);
++ } else {
++ /* If regex cannot compile, be conservative */
++ if (rx_err) g_error_free(rx_err);
++ valid = FALSE;
++ }
++ }
+ for (c = UserName; *c; c++)
+ {
+ if (! ((*c >= 'a' && *c <= 'z') ||
+@@ -313,7 +360,7 @@ static gboolean UserNameValidCheck (const gchar *UserName, gchar **Message)
+ }
+ else
+ {
+- *Message = g_strdup (_("The username should only consist of upper and lower case \nletters from a-z,digits and the following characters: . - _"));
++ *Message = g_strdup (_("The username first character must be lower case, use only \nlowercase letters (a–z), digits and the following characters: -_"));
+ }
+ }
+
diff --git a/helpers/DATA/synaptic/patch_changes/001-158_fix_downloading_screenshots.patch b/helpers/DATA/synaptic/patch_changes/001-158_fix_downloading_screenshots.patch
new file mode 100644
index 0000000..3c22417
--- /dev/null
+++ b/helpers/DATA/synaptic/patch_changes/001-158_fix_downloading_screenshots.patch
@@ -0,0 +1,25 @@
+From 74f37ee5727f50f4175dbba9744391e3245e7982 Mon Sep 17 00:00:00 2001
+From: "I.Rezkov"
+Date: Fri, 31 Oct 2025 21:06:08 +0300
+Subject: [PATCH] fix downloading screenshots
+
+---
+ common/rpackage.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/common/rpackage.cc b/common/rpackage.cc
+index 834b199d..3b40fbc2 100644
+--- a/common/rpackage.cc
++++ b/common/rpackage.cc
+@@ -949,9 +949,9 @@ string RPackage::getScreenshotFile(pkgAcquire *fetcher, bool thumb)
+ verstr=string(verstr, verstr.find(':')+1);
+ char uri[512];
+ if(thumb)
+- snprintf(uri,512,"http://screenshots.debian.net/thumbnail/%s", name());
++ snprintf(uri,512,"https://screenshots.debian.net/thumbnail/%s", name());
+ else
+- snprintf(uri,512,"http://screenshots.debian.net/screenshot/%s", name());
++ snprintf(uri,512,"https://screenshots.debian.net/screenshot/%s", name());
+
+ //cerr << "uri is: " << uri << endl;
+
diff --git a/helpers/DATA/thunderbird/branding/content/about-logo@2x.png b/helpers/DATA/thunderbird/branding/content/about-logo@2x.png
new file mode 100644
index 0000000..0565d37
Binary files /dev/null and b/helpers/DATA/thunderbird/branding/content/about-logo@2x.png differ
diff --git a/helpers/DATA/thunderbird/branding/content/logo-gradient.svg b/helpers/DATA/thunderbird/branding/content/logo-gradient.svg
new file mode 100644
index 0000000..e4574c1
--- /dev/null
+++ b/helpers/DATA/thunderbird/branding/content/logo-gradient.svg
@@ -0,0 +1,2034 @@
+
+
diff --git a/helpers/DATA/thunderbird/branding/messengerWindow.ico b/helpers/DATA/thunderbird/branding/messengerWindow.ico
new file mode 100644
index 0000000..57707ce
Binary files /dev/null and b/helpers/DATA/thunderbird/branding/messengerWindow.ico differ
diff --git a/helpers/DATA/thunderbird/patches_changes/001-set_export_to_mobile_l10n.patch b/helpers/DATA/thunderbird/patches_changes/001-set_export_to_mobile_l10n.patch
index 4fc00e9..fd94aa2 100644
--- a/helpers/DATA/thunderbird/patches_changes/001-set_export_to_mobile_l10n.patch
+++ b/helpers/DATA/thunderbird/patches_changes/001-set_export_to_mobile_l10n.patch
@@ -519,18 +519,18 @@ diff --git a/l10n/ru/mail/messenger/preferences/preferences.ftl b/l10n/ru/mail/m
index eda8e814..709bc792 100644
--- a/l10n/ru/mail/messenger/preferences/preferences.ftl
+++ b/l10n/ru/mail/messenger/preferences/preferences.ftl
-@@ -818,12 +818,12 @@ sync-disconnected-turn-on-sync = Включить Cинхронизацию…
+@@ -948,12 +948,12 @@ sync-disconnected-turn-on-sync = Включить Cинхронизацию…
## Mobile QR Export Pane
-qr-export-pane-header = Экспорт учётных записей в { -brand-product-name } для мобильных устройств
-+qr-export-pane-header = Экспорт учётных записей для мобильных устройств
++qr-export-pane-header = Экспорт учётных записей в для мобильных устройств
qr-export-description = Быстро перенесите настройки своего аккаунта с ПК на мобильное устройство, сгенерировав QR-код. Выберите, какие учётные записи включить, решите, хотите ли вы передать свой пароль, и отсканируйте код мобильным устройством. Быстро, безопасно и просто.
- qr-export-get-app = У вас ещё нет { -brand-product-name } на мобильных устройствах? Загрузите в Google Play
+ qr-export-get-app = У вас ещё нет { -brand-product-name } на мобильных устройствах? Скачайте в Google Play
qr-export-create = Создайте QR-код для экспорта ваших учётных записей
qr-export-select-accounts = Выберите учётные записи для экспорта:
-qr-export-no-accounts = Не видите все ваши учётные записи? Некоторые учётные записи могут быть отключены, поскольку они не поддерживаются { -brand-product-name } для Android. Поддержка
-+qr-export-no-accounts = Не видите все ваши учётные записи? Некоторые учётные записи могут быть отключены, поскольку они не поддерживаются для Android. Поддержка
++qr-export-no-accounts = Не видите все ваши учётные записи? Некоторые учётные записи могут быть отключены, поскольку они не поддерживаются для Android. Поддержка
qr-export-accounts-legend = Учётные записи электронной почты
qr-export-select-all-accounts = Выбрать все
qr-export-security-legend = Защита
diff --git a/helpers/DATA/thunderbird/patches_changes/008-aboutRights_removal_fix.patch b/helpers/DATA/thunderbird/patches_changes/008-aboutRights_removal_fix.patch
new file mode 100644
index 0000000..e035ce2
--- /dev/null
+++ b/helpers/DATA/thunderbird/patches_changes/008-aboutRights_removal_fix.patch
@@ -0,0 +1,26 @@
+diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
+index c6498081..a8db34ad 100644
+--- a/browser/base/content/aboutDialog.xhtml
++++ b/browser/base/content/aboutDialog.xhtml
+@@ -138,7 +138,7 @@
+
+
+
+-
++
+
+
+
+diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
+index d1fe0148..ce5d1f42 100644
+--- a/browser/components/about/AboutRedirector.cpp
++++ b/browser/components/about/AboutRedirector.cpp
+@@ -90,7 +90,7 @@ static const RedirEntry kRedirMap[] = {
+ {"profiling",
+ "chrome://devtools/content/performance-new/aboutprofiling/index.xhtml",
+ nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::IS_SECURE_CHROME_UI},
+- {"rights", "https://www.mozilla.org/about/legal/terms/firefox/",
++ {"rights", "https://trisquel.info/legal",
+ nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+ nsIAboutModule::URI_MUST_LOAD_IN_CHILD},
+ {"robots", "chrome://browser/content/aboutRobots.xhtml",
diff --git a/helpers/DATA/thunderbird/process-json-files-v2.py b/helpers/DATA/thunderbird/process-json-files-v2.py
index c3098c0..9a4ef3d 100644
--- a/helpers/DATA/thunderbird/process-json-files-v2.py
+++ b/helpers/DATA/thunderbird/process-json-files-v2.py
@@ -295,7 +295,7 @@ class UrlClassifierSkipUrls(EmptyRemoteSettings):
class TippyTopSites(JsonProcessor):
JSON_PATHS = (
arguments.MAIN_PATH /
- 'browser/components/newtab/data/content/tippytop/top_sites.json',
+ 'browser/components/topsites/content/tippytop/top_sites.json',
arguments.BRANDING_PATH /
'tippytop/top_sites.json')
@@ -325,7 +325,7 @@ class TopSites(RemoteSettings):
@classmethod
def should_drop_record(cls, site):
- return site['url'] != 'https://www.wikipedia.org/'
+ return True
@classmethod
def process_record(cls, site):
diff --git a/helpers/DATA/yt-dlp/patch_changes/000-add_cookies_support_for_firefox_based_browser_abrowser.patch b/helpers/DATA/yt-dlp/patch_changes/000-add_cookies_support_for_firefox_based_browser_abrowser.patch
index 7f3b9ee..783d516 100644
--- a/helpers/DATA/yt-dlp/patch_changes/000-add_cookies_support_for_firefox_based_browser_abrowser.patch
+++ b/helpers/DATA/yt-dlp/patch_changes/000-add_cookies_support_for_firefox_based_browser_abrowser.patch
@@ -86,12 +86,15 @@ index 5675445a..7afd324b 100644
if sys.platform in ('cygwin', 'win32'):
yield from map(os.path.expandvars, (
R'%APPDATA%\Mozilla\Firefox\Profiles',
-@@ -205,7 +205,7 @@ def _firefox_browser_dirs():
-
- else:
+@@ -214,9 +214,9 @@ def _firefox_browser_dirs(browser_name='firefox'):
yield from map(os.path.expanduser, (
+ # New installations of FF147+ respect the XDG base directory specification
+ # Ref: https://bugzilla.mozilla.org/show_bug.cgi?id=259356
+- os.path.join(_config_home(), 'mozilla/firefox'),
++ os.path.join(_config_home(), 'mozilla/{browser_name}'),
+ # Existing FF version<=146 installations
- '~/.mozilla/firefox',
-+ f'~/.mozilla/{browser_name}',
- '~/snap/firefox/common/.mozilla/firefox',
++ '~/.mozilla/{browser_name}',
+ # Flatpak XDG: https://docs.flatpak.org/en/latest/conventions.html#xdg-base-directories
+ '~/.var/app/org.mozilla.firefox/config/mozilla/firefox',
'~/.var/app/org.mozilla.firefox/.mozilla/firefox',
- ))
diff --git a/helpers/DATA/yt-dlp/patch_changes/002-make_cookies_parsing_more_lentient_on_python3.12.patch b/helpers/DATA/yt-dlp/patch_changes/002-make_cookies_parsing_more_lentient_on_python3.12.patch
new file mode 100644
index 0000000..895c8f1
--- /dev/null
+++ b/helpers/DATA/yt-dlp/patch_changes/002-make_cookies_parsing_more_lentient_on_python3.12.patch
@@ -0,0 +1,35 @@
+diff --git a/yt_dlp/cookies.py b/yt_dlp/cookies.py
+index 8c05a09f..8b6f6613 100644
+--- a/yt_dlp/cookies.py
++++ b/yt_dlp/cookies.py
+@@ -1238,15 +1238,27 @@ def load(self, data):
+ else:
+ value, _ = self.value_decode(value)
+
+- morsel[key] = value
++ try:
++ morsel[key] = value
++ except http.cookies.CookieError:
++ # Lenient mode: ignore invalid attributes
++ pass
+
+ elif is_attribute:
+ morsel = None
+
+ elif value is not None:
+- morsel = self.get(key, http.cookies.Morsel())
++ morsel = self.get(key) or http.cookies.Morsel()
+ real_value, coded_value = self.value_decode(value)
+- morsel.set(key, real_value, coded_value)
++ try:
++ morsel.set(key, real_value, coded_value)
++ except http.cookies.CookieError:
++ # Python 3.12+ rejects control characters in cookies.
++ # LenientSimpleCookie should accept them (yt-dlp tests expect this), so
++ # bypass Morsel.set() validation, assign underlying fields to read-only props.
++ morsel._key = key
++ morsel._value = real_value
++ morsel._coded_value = coded_value
+ self[key] = morsel
+
+ else:
diff --git a/helpers/config b/helpers/config
index 20e461c..2f93b91 100755
--- a/helpers/config
+++ b/helpers/config
@@ -81,12 +81,33 @@ pkgversion(){
replace(){
find ${@:3} -type f -not -iregex '.*changelog.*' -not -iregex '.*copyright.*' -execdir /bin/sed --follow-symlinks -i s^"$1"^"$2"^g {} \;
}
+changelog_multiline() {
+ local msg="$1"
+ local version="${2:-$FULLVERSION}"
+ local dist="${3:-$REPO}"
+
+ if ! grep -q "$version" debian/changelog 2>/dev/null; then
+ dch -v "$version" -D "$dist" ""
+ fi
+
+ local count=0
+
+ while IFS= read -r line || [ -n "$line" ]; do
+ dch -a "$line"
+ count=$((count + 1))
+ done <<< "$msg"
+
+ if [ "$count" -gt 0 ]; then
+ dch -r ""
+ fi
+}
changelog(){
head -n 1 debian/changelog | grep -q $UPSTREAM-security && REPO=$CODENAME-security || REPO=$CODENAME
[ "$SECURITY" = true ] && REPO=${CODENAME}-security
[ "$BACKPORT" = true ] || [ "$BACKPORTS" = true ] && REPO=${CODENAME}-backports
#Name convention issue "+" breaking packages build like console-setup, using "-" instead.
-echo | dch -D $REPO -v $FULLVERSION "$1"
+local msg="$1"
+changelog_multiline "$msg" "$FULLVERSION" "$REPO"
# Make sure the changelog file is identical between archs
/bin/sed "/-- Desarrollo/s/.*/ -- Desarrollo CMXSL $DATE/" -i debian/changelog
@@ -212,7 +233,7 @@ package(){
# Make sure the series file is formated correctly after removals
if [ -f debian/patches/series ]; then
- grep -q [a-z] debian/patches/series || echo -n > debian/patches/series
+ grep -q [a-z] debian/patches/series || : > debian/patches/series
fi
if [ 1$QUILT != 1skip ]; then
@@ -283,6 +304,7 @@ fi
}
remove_patch(){
+ echo "> Removing patch $1 in progress..."
rm "$(find */patches -name "$1")"
sed -i "/$1/d" debian/patches/series
}
diff --git a/helpers/make-anarchism b/helpers/make-anarchism
new file mode 100644
index 0000000..1bae60e
--- /dev/null
+++ b/helpers/make-anarchism
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzmán
+#
+# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+VERSION=0
+
+. ./config
+
+apply_patch_changes
+
+changelog "Replace promotion of non-free PDF software"
+
+package
diff --git a/helpers/make-firefox b/helpers/make-firefox
index 226724a..49c4242 100644
--- a/helpers/make-firefox
+++ b/helpers/make-firefox
@@ -19,9 +19,9 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=126
+VERSION=129
EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main'
-REPOKEY=9BDB3D89CE49EC21
+REPOKEY=AEBDF4819BE21867
. ./config
@@ -50,10 +50,7 @@ sed '/"showSponsored"/,/value/s/value: true/value: false/' -i $ActivityStream
sed '/"telemetry"/,/value/s/value: true/value: false/' -i $ActivityStream
#141#sed '/"section.highlights.includePocket"/,/value/s/value: true/value: false/' -i $ActivityStream
sed '/"telemetry.structuredIngestion.endpoint"/,/value/s/value: .*/value: ""/' -i $ActivityStream
-sed '/read_more_endpoint/,+1s/http.*/",/' -i $ActivityStream
-sed '/stories_endpoint/s/getpocket.cdn.mozilla.net/127.0.0.1/' -i $ActivityStream
-sed '/stories_referrer/s/http.*/",/' -i $ActivityStream
-sed '/topics_endpoint/s/getpocket.cdn.mozilla.net/127.0.0.1/' -i $ActivityStream
+# feeds.section.topstories.options removed at 144.0.2
sed 's/preffedRegions.includes.geo. .. ..locales .. locales.includes.locale./false/' -i $ActivityStream
#sed 's/Ubuntu, //' -i browser/components/newtab/css/activity-stream*.css
#echo "#header-asrouter-container{display: none!important;}" >> browser/components/newtab/css/activity-stream-linux.css
@@ -61,7 +58,7 @@ sed 's/preffedRegions.includes.geo. .. ..locales .. locales.includes.locale./fal
sed '/"showSponsoredTopSites"/,/value/s/value: true/value: false/' -i $ActivityStream
sed -i '/activity-stream.showSponsored/s|true|false|g' $BAP_FirefoxJs
#Disable «Mozilla VPN» - firefox 94
-sed '/"browser.privatebrowsing.vpnpromourl"/s/https.*"/"/' -i $BAP_FirefoxJs
+# browser.privatebrowsing.vpnpromourl at 144.0.2
grep -rl browser.vpn_promo.enabled | xargs -r sed -i '/browser.vpn_promo.enabled/s|true|false|'
sed '/network.connectivity-service.IPv/s/http.*success.txt?ipv[46]//' -i modules/libpref/init/all.js
@@ -88,6 +85,16 @@ sed -i '/browser.uitour.enabled/s|true|false|' $BAP_FirefoxJs
##More info at $DATA/patch_changes/006_remova_mailto_handlers_correctly.patch
# keep contentRelevancy disabled (first appearence is false thus using /bin/sed)
/bin/sed -i '/"toolkit.contentRelevancy.ingestEnabled"/s|,.*)|, false)|' $BAP_FirefoxJs
+# 144.0.2 -- disabled settings
+for i in browser.urlbar.allowSearchSuggestionsForSimpleOrigins \
+ browser.urlbar.quicksuggest.online.enabled \
+ browser.urlbar.suggest.yelpRealtime \
+ browser.newtabpage.activity-stream.discoverystream.reportAds.enabled \
+ browser.newtabpage.activity-stream.discoverystream.publisherFavicon.enabled \
+ browser.ml.chat.page
+do
+ sed -i "/${i}/s|true|false|" $BAP_FirefoxJs
+done
# Remove ubufox recommendation and lower ublock to suggestion
# see more at: $DATA/009_remove_ubunfox_suggest_webext-ublock-origin.patch
@@ -303,13 +310,15 @@ s|firefox-help|abrowser-help|g;
echo "Running batch replace operation"
find . -type f -not -iregex '.*changelog.*' \
- -not -iregex '.*copyright.*' -not -iregex '.*third_party/.*' \
- -execdir /bin/sed --follow-symlinks -i "$SEDSCRIPT" '{}' ';'
+ -not -iregex '.*copyright.*' \
+ -not -iregex '.*third_party/.*' \
+ -not -iregex '.*/mozglue/static/rust/.*' \
+ -execdir /bin/sed --follow-symlinks -i "$SEDSCRIPT" '{}' ';'
echo "Replacing Firefox with Abrowser on ./l10n"
-find l10n -type f -not -iregex '.*changelog.*' \
- -not -iregex '.*copyright.*' \
- -execdir /bin/sed --follow-symlinks -i "s/Firefox/Abrowser/" '{}' ';'
+find l10n -type f -not -iregex '.*changelog.*' \
+ -not -iregex '.*copyright.*' \
+ -execdir /bin/sed --follow-symlinks -i "s/Firefox/Abrowser/" '{}' ';'
sed 's/Firefox/Abrowser/' -i debian/control.in \
browser/locales/en-US/chrome/overrides/appstrings.properties
diff --git a/helpers/make-flit-scm b/helpers/make-flit-scm
new file mode 100644
index 0000000..20184fd
--- /dev/null
+++ b/helpers/make-flit-scm
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzman
+#
+# 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 3 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, see .
+
+
+VERSION=1
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
+BACKPORT=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+
+changelog "Backport dependency for newer yt-dlp"
+
+package
diff --git a/helpers/make-gnome-boxes b/helpers/make-gnome-boxes
index 967651f..5e869c2 100644
--- a/helpers/make-gnome-boxes
+++ b/helpers/make-gnome-boxes
@@ -19,13 +19,10 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=5
+VERSION=6
. ./config
-# Add trisquel logo patch.
-patch_p1 $DATA/001_add_trisquel_gnome-boxes_logo.patch
-
remove_patch Update-recommended-downloads.patch
#Required dependencies not in upstream.
@@ -44,7 +41,6 @@ cat << recommended-os > data/recommended-downloads.xml
-->
http://trisquel.info/trisquel/11
- http://trisquel.info/trisquel/10http://guix.gnu.org/guix/1.3http://hyperbola.info/hyperbola/03http://pureos.net/pureos/8
@@ -54,6 +50,9 @@ recommended-os
# Remove gnome recommendation.
grep -rl ".*.iso.*" data/osinfo/|xargs -r sed -i "/.iso/d"
+# Apply patch_changes
+apply_patch_changes
+
changelog "Replace recommended downloads."
package
diff --git a/helpers/make-hatchling b/helpers/make-hatchling
new file mode 100644
index 0000000..fc127f2
--- /dev/null
+++ b/helpers/make-hatchling
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzman
+#
+# 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 3 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, see .
+
+
+VERSION=1
+EXTERNAL='deb-src http://deb.debian.org/debian trixie main'
+REPOKEY=6ED0E7B82643E131
+BACKPORTS=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+changelog "Backport dependency for newer yt-dlp"
+
+package
diff --git a/helpers/make-inetutils b/helpers/make-inetutils
new file mode 100644
index 0000000..f21bbe4
--- /dev/null
+++ b/helpers/make-inetutils
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzmán
+#
+# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+VERSION=0
+
+. ./config
+
+# WARNING: telnetd is not recommended in 2026, especially in production.
+# Applying these patches is a proactive mitigation effort for known issues and does not
+# endorse continued use of telnetd. The patch co-author recommends deprecating it.
+
+apply_patch_changes
+
+changelog "Apply security patches to mitigate known issues proactively; telnetd is not recommended: avoid in production."
+
+package
diff --git a/helpers/make-mate-control-center b/helpers/make-mate-control-center
new file mode 100644
index 0000000..466817a
--- /dev/null
+++ b/helpers/make-mate-control-center
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# Copyright (C) 2025 Luis Guzmán
+#
+# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+VERSION=1
+. ./config
+
+apply_patch_changes
+
+changelog "Add custom patch to fix TPH#162, non-editable mate clock w/o ntp server."
+package
diff --git a/helpers/make-mate-user-admin b/helpers/make-mate-user-admin
index b6785ce..b86424f 100644
--- a/helpers/make-mate-user-admin
+++ b/helpers/make-mate-user-admin
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (C) 2024 Luis Guzmán
+# Copyright (C) 2025 Luis Guzmán
#
# 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
@@ -17,7 +17,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=2
+VERSION=3
EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
. ./config
@@ -26,9 +26,11 @@ EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
export FULLVERSION="$(sed 's|build3||' <<< $FULLVERSION)"
# Add cracklib-runtime dependency to debian/control
-patch --no-backup-if-mismatch -p1 < $DATA/add-cracklib-runtime-as-dependency.patch
+apply_patch_changes
+
+changelog "Added cracklib-runtime dependency.
+Added custom implementation to use adduser regex for user creation"
-changelog "Imported into Trisquel Aramo | Added cracklib-runtime dependency."
head -n1 debian/changelog | grep -q build && echo "error: update upstream version" && exit
package
diff --git a/helpers/make-python-packaging b/helpers/make-python-packaging
new file mode 100644
index 0000000..fc127f2
--- /dev/null
+++ b/helpers/make-python-packaging
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzman
+#
+# 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 3 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, see .
+
+
+VERSION=1
+EXTERNAL='deb-src http://deb.debian.org/debian trixie main'
+REPOKEY=6ED0E7B82643E131
+BACKPORTS=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+changelog "Backport dependency for newer yt-dlp"
+
+package
diff --git a/helpers/make-python-pathspec b/helpers/make-python-pathspec
new file mode 100644
index 0000000..20184fd
--- /dev/null
+++ b/helpers/make-python-pathspec
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzman
+#
+# 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 3 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, see .
+
+
+VERSION=1
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
+BACKPORT=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+
+changelog "Backport dependency for newer yt-dlp"
+
+package
diff --git a/helpers/make-redshift b/helpers/make-redshift
index 525e499..fed034f 100644
--- a/helpers/make-redshift
+++ b/helpers/make-redshift
@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=5
+VERSION=6
. ./config
@@ -39,6 +39,10 @@ adjustment-method=randr
; The location provider and adjustment method settings
; are in their own sections.
+; When the local-provider is set to 'manual', you can obtain city latitude/longitude
+; values from the libgweather-common package:
+; libgweather-4-common: /usr/share/libgweather-4/Locations.xml
+
[manual]
lat=0.0
lon=0.0
diff --git a/helpers/make-synaptic b/helpers/make-synaptic
new file mode 100644
index 0000000..94d1bc3
--- /dev/null
+++ b/helpers/make-synaptic
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Copyright (C) 2025 Luis Guzmán
+#
+# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+VERSION=0
+BUILD_UNTIL=11.0
+
+. ./config
+
+apply_patch_changes
+
+changelog "Fix synaptic screenshot url issue."
+
+package
+
diff --git a/helpers/make-thunderbird b/helpers/make-thunderbird
index 678158f..dd439c1 100644
--- a/helpers/make-thunderbird
+++ b/helpers/make-thunderbird
@@ -19,21 +19,13 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=24
+VERSION=26
EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main'
-REPOKEY=9BDB3D89CE49EC21
+REPOKEY=AEBDF4819BE21867
. ./config
# Get initial SHA256 hashes.
-SHA256_F1=$(sha256sum third_party/cbindgen/vendor/winnow/examples/http/main.rs|awk '{print$1}')
-SHA256_F2=$(sha256sum third_party/cbindgen/vendor/winnow/examples/http/bench.rs|awk '{print$1}')
-SHA256_F3=$(sha256sum third_party/dump_syms/vendor/httparse/benches/parse.rs|awk '{print$1}')
-SHA256_F4=$(sha256sum third_party/dump_syms/vendor/httparse/src/lib.rs|awk '{print$1}')
-SHA256_F5=$(sha256sum third_party/dump_syms/vendor/hyper-rustls/src/connector/builder.rs|awk '{print$1}')
-SHA256_F6=$(sha256sum third_party/dump_syms/vendor/rustls/src/lib.rs|awk '{print$1}')
-SHA256_F7=$(sha256sum third_party/dump_syms/vendor/rustls-webpki/src/subject_name/dns_name.rs|awk '{print$1}')
-SHA256_F8=$(sha256sum third_party/dump_syms/vendor/rustls-webpki/src/verify_cert.rs|awk '{print$1}')
SHA256_F9=$(sha256sum comm/third_party/rust/glean/src/configuration.rs|awk '{print$1}')
# Copy in our local Trisquel branding files.
@@ -143,11 +135,14 @@ pref("datareporting.healthreport.infoURL", "https://trisquel.info/legal");
EOF
#cp toolkit/components/telemetry/healthreport-prefs.js mobile/android/chrome/content/healthreport-prefs.js
# Browser legal page
-sed 's%https://www.mozilla.org/legal/privacy/%https://trisquel.info/legal%' -i ./browser/app/profile/firefox.js ./toolkit/content/aboutRights.xhtml
sed -i 's|https://www.mozilla.org/thunderbird/legal/privacy/|https://trisquel.info/legal|' comm/mail/app/profile/all-thunderbird.js
sed -i 's|https://www.mozilla.org/en-US/privacy/thunderbird/|https://trisquel.info/legal|' comm/mail/app/profile/all-thunderbird.js
sed -i 's|https://www.mozilla.org/privacy/thunderbird/|https://trisquel.info/legal|' comm/mail/components/accountcreation/content/accountSetup.xhtml
-grep -rl https://www.mozilla.org/privacy/thunderbird/ | xargs -r sed -i 's|https://www.mozilla.org/privacy/thunderbird/|https://trisquel.info/legal|g'
+grep -rl https://www.mozilla.org/legal/privacy/ | \
+ xargs -r sed -i 's|https://www.mozilla.org/legal/privacy/.*"|https://trisquel.info/legal"|'
+
+grep -rl https://mozilla.org/privacy/firefox/ | xargs -r \
+ sed -i 's|https://mozilla.org/privacy/firefox/.*"|https://trisquel.info/en/privacy"|'
# Disable telemetry pings
grep -rl TELEMETRY_BASE_URL | xargs -r sed -i 's|"https://incoming.telemetry.mozilla.org/submit"|""|'
@@ -161,7 +156,7 @@ grep -rl toolkit.telemetry.newProfilePing.enabled | xargs -r sed -i '/toolkit.te
grep -rl toolkit.telemetry.firstShutdownPing.enabled | xargs -r sed -i '/toolkit.telemetry.firstShutdownPing.enabled/s|true|false|'
grep -rl toolkit.telemetry.bhrPing.enabled | xargs -r sed -i '/toolkit.telemetry.bhrPing.enabled/s|true|false|'
grep -rl browser.ping-centre.telemetry | xargs -r sed -i '/browser.ping-centre.telemetry/s|true|false|'
-grep -rl security.certerrors.recordEventTelemetry | xargs -r sed -i '/security.certerrors.recordEventTelemetry/s|true|false|'
+#grep -rl security.certerrors.recordEventTelemetry | xargs -r sed -i '/security.certerrors.recordEventTelemetry/s|true|false|'
grep -rl services.sync.telemetry.maxPayloadCount modules/ | xargs -r sed -i '/services.sync.telemetry.maxPayloadCount/s|500|-1|'
grep -rl services.sync.telemetry.submissionInterval modules/ | xargs -r sed -i '/services.sync.telemetry.submissionInterval/s|43200|-1|'
grep -rl '"datareporting.healthreport.uploadEnabled"'| xargs -r sed -i '/"datareporting.healthreport.uploadEnabled"/s|[Tt]rue|false|'
@@ -221,8 +216,10 @@ echo "Running batch replace operation"
find . -type f \
-not -iregex '.*changelog.*' \
-not -iregex '.*copyright.*' \
- -not -iregex '.*third_party/rust.*' \
-not -iregex '.*comm/rust.*' \
+ -not -iregex '.*third_party/rust.*' \
+ -not -iregex '.*third_party/dump_syms.*' \
+ -not -iregex '.*third_party/cbindgen.*' \
-execdir /bin/sed --follow-symlinks -i "$SEDSCRIPT" '{}' ';'
# Fix wrong changes, restore changes to reduce diff with previous sed script.
@@ -231,20 +228,33 @@ grep -rl "AbrowserGraphics" | xargs -r sed -i "/github/s|AbrowserGraphics|Firefo
grep -rl IcedoveProfileImporter. | xargs -r sed -i 's|IcedoveProfileImporter|ThunderbirdProfileImporter|g'
grep -rl IcedoveProfileMigrator | xargs -r sed -i 's|IcedoveProfileMigrator|ThunderbirdProfileMigrator|g'
grep -rl AbrowserViewTestUtils | xargs -r sed -i 's|AbrowserViewTestUtils|FirefoxViewTestUtils|g'
+grep -rl Abrowserview | xargs -r sed -i 's|Abrowserview|Firefoxview|g'
grep -rl AbrowserRelay | xargs -r sed -i 's|AbrowserRelay|FirefoxRelay|g'
+grep -rl test_AbrowserLabs.js | xargs -r sed -i 's|AbrowserLabs|FirefoxLabs|g'
+grep -rl AbrowserLabs.sys.mjs | xargs -r sed -i 's|AbrowserLabs|FirefoxLabs|g'
sed -i '/TB_/s|mozilla-icedove|mozilla-thunderbird|' debian/rules
+# Or missing ones.
+sed -i '/brand.ftl/s|thunderbird|icedove|' comm/rust/sys_tray/src/locales.rs
+
#Fix 1 character bigger than allowed yml line (81 > 80)
sed -i "s|Abrowser is not running. It|Abrowser isn't running. It|" toolkit/mozapps/update/pings.yaml
-sed -i '/Certificate data/s|Trisquel|Mozilla|' third_party/dump_syms/vendor/webpki-roots/LICENSE
+#140#sed -i '/Certificate data/s|Trisquel|Mozilla|' third_party/dump_syms/vendor/webpki-roots/LICENSE
# Set main links - check comm/mailnews/base/content/msgAccountCentral.xhtml for main class & id links.
-grep -rl 'https://www.icedove.net/participate/' comm/ | xargs -r sed -i 's|https://www.icedove.net/participate/|https://trisquel.info/wiki/|'
-grep -rl 'https://www.icedove.net/donate/' comm/ | xargs -r sed -i 's|https://www.icedove.net/donate/.*"|https://trisquel.info/donate/"|'
-grep -rl 'https://www.icedove.net/donate/' comm/ | xargs -r sed -i 's|https://www.icedove.net/donate/|https://trisquel.info/donate/|'
-grep -rl 'https://updates.icedove.net/' comm/ | xargs -r sed -i '/"URL":/s|https://updates.icedove.net/.*/appeal/.*"|https://trisquel.info/donate/"|'
-grep -rl 'https://support.mozilla.org/products/icedove' comm/ | xargs -r sed -i 's|https://support.mozilla.org/products/icedove.*"|https://trisquel.info/wiki/icedove"|'
-grep -rl 'https://support.mozilla.org/products/icedove' comm/ | xargs -r sed -i 's|https://support.mozilla.org/products/icedove/|https://trisquel.info/wiki/icedove/|'
-grep -rl 'https://developer.icedove.net/' comm/ | xargs -r sed -i 's|https://developer.icedove.net/|https://gitlab.trisquel.org/trisquel/package-helpers|'
+grep -rl 'https://www.icedove.net/participate/' comm/ | xargs -r \
+ sed -i 's|https://www.icedove.net/participate/|https://trisquel.info/wiki/|'
+grep -rl 'https://www.icedove.net/donate/' comm/ | xargs -r \
+ sed -i 's|https://www.icedove.net/donate/.*"|https://trisquel.info/donate/"|'
+grep -rl 'https://www.icedove.net/donate/' comm/ | xargs -r \
+ sed -i 's|https://www.icedove.net/donate/|https://trisquel.info/donate/|'
+grep -rl 'https://updates.icedove.net/' comm/ | xargs -r \
+ sed -i '/"URL":/s|https://updates.icedove.net/.*/appeal/.*"|https://trisquel.info/donate/"|'
+grep -rl 'https://support.mozilla.org/products/icedove' comm/ | xargs -r \
+ sed -i 's|https://support.mozilla.org/products/icedove.*"|https://trisquel.info/wiki/icedove"|'
+grep -rl 'https://support.mozilla.org/products/icedove' comm/ | xargs -r \
+ sed -i 's|https://support.mozilla.org/products/icedove/|https://trisquel.info/wiki/icedove/|'
+grep -rl 'https://developer.icedove.net/' comm/ | xargs -r \
+ sed -i 's|https://developer.icedove.net/|https://gitlab.trisquel.org/trisquel/package-helpers|'
replace Daily Trisquel comm/mail/branding/
# Remove Thunderbird branding
@@ -258,41 +268,19 @@ sed 's/Provides: mail-reader,/Provides: mail-reader, thunderbird,/' -i debian/co
sed "s/Provides.*/Provides: icedove-locale-@LANGCODE@/" -i debian/control.langpacks
# Set and replace sha256 checksums to match our changes.
-SHA256_F1_MOD=$(sha256sum third_party/cbindgen/vendor/winnow/examples/http/main.rs|awk '{print$1}')
-SHA256_F2_MOD=$(sha256sum third_party/cbindgen/vendor/winnow/examples/http/bench.rs|awk '{print$1}')
-SHA256_F3_MOD=$(sha256sum third_party/dump_syms/vendor/httparse/benches/parse.rs|awk '{print$1}')
-SHA256_F4_MOD=$(sha256sum third_party/dump_syms/vendor/httparse/src/lib.rs|awk '{print$1}')
-SHA256_F5_MOD=$(sha256sum third_party/dump_syms/vendor/hyper-rustls/src/connector/builder.rs|awk '{print$1}')
-SHA256_F6_MOD=$(sha256sum third_party/dump_syms/vendor/rustls/src/lib.rs|awk '{print$1}')
-SHA256_F7_MOD=$(sha256sum third_party/dump_syms/vendor/rustls-webpki/src/subject_name/dns_name.rs|awk '{print$1}')
-SHA256_F8_MOD=$(sha256sum third_party/dump_syms/vendor/rustls-webpki/src/verify_cert.rs|awk '{print$1}')
SHA256_F9_MOD=$(sha256sum comm/third_party/rust/glean/src/configuration.rs|awk '{print$1}')
-sed_csum $SHA256_F1 $SHA256_F1_MOD
-sed_csum $SHA256_F2 $SHA256_F2_MOD
-sed_csum $SHA256_F3 $SHA256_F3_MOD
-sed_csum $SHA256_F4 $SHA256_F4_MOD
-sed_csum $SHA256_F5 $SHA256_F5_MOD
-sed_csum $SHA256_F6 $SHA256_F6_MOD
-sed_csum $SHA256_F7 $SHA256_F7_MOD
-sed_csum $SHA256_F8 $SHA256_F8_MOD
sed_csum $SHA256_F9 $SHA256_F9_MOD
#EO Manual fixing.
# about: page mods, like rights.
## Hide extra links in about box
-find -wholename '*/brand.dtd' |xargs /bin/sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
+find -wholename '*/brand.dtd' | xargs -r \
+ perl -0777 -i -pe 's///g'
-for STRING in rights-intro-point-2 rights-intro-point-3 rights-intro-point-4 rights-intro-point-5 rights-intro-point-6 rights-webservices rights-safebrowsing
-do
- find -name aboutRights.ftl | xargs -r sed -i "s/^$STRING.*/$STRING = /"
-done
##Remove invalid policy for trisquel, make sure to check for changes on
##each release as they silently update and change.
-find -name aboutRights.ftl | xargs -r sed -i '/rights-intro-point-3/,/li>/d'
-find -name aboutRights.xhtml |xargs -r sed -i "/rights-intro-point-5/,/li>/d"
-find -name aboutRights.xhtml |xargs -r sed -i "/rights-intro-point-6/d"
-find -name aboutRights-unbranded.xhtml |xargs -r sed -i "/rights-intro-point-5/,/li>/d"
+## see more at DATA/thunderbird/patch_changes/008-aboutRights_removal_fix.patch
sed -i 's/Icedove\ Project<\/a>/Trisquel\ Project<\/a>/g' \
comm/mail/base/content/overrides/app-license.html
@@ -303,7 +291,10 @@ find devtools/client/themes/images/ -name aboutdebugging-firefox-*.svg | xargs -
find devtools/client/themes/images/ -name aboutdebugging-fenix*.svg | xargs -n1 cp $DATA/debug_brand/debuglogo.svg
find devtools/client/themes/images/ -name aboutdebugging-firefox-logo.svg | xargs -n1 cp $DATA/debug_brand/debuglogo_gray.svg
-cp $DATA/debug_brand/about-logo.svg comm/mail/branding/icedove/TB-symbolic.svg
+for i in icedove nightly
+do
+ cp $DATA/debug_brand/about-logo.svg comm/mail/branding/$i/TB-symbolic.svg
+done
cp $DATA/debug_brand/about-logo.svg comm/mail/themes/shared/mail/icons/aboutdebugging-logo.svg
cp $DATA/debug_brand/icon.png comm/mail/themes/icon.png
cp $DATA/debug_brand/icon64.png comm/mail/themes/icon64.png
@@ -327,7 +318,6 @@ done
echo "Customizing search engines..."
# Reprocess search preconfiguration dump
-python3 $DATA/process-json-files.py . browser/components/extensions/schemas/
python3 $DATA/process-json-files-v2.py . $DATA/search-custom/
#EO Debbuging tools
@@ -356,6 +346,7 @@ grep -rl 'qr-export-no-accounts =' | xargs -r sed -i '/^qr-export-no-accounts =/
s| supported by for | supported for |g
}'
+# As non-official we always use nightly, pending cleaning branding.
cat << EOF > comm/mail/branding/nightly/locales/en-US/brand.dtd
-
+
EOF
diff --git a/helpers/make-trove-classifiers b/helpers/make-trove-classifiers
new file mode 100644
index 0000000..20184fd
--- /dev/null
+++ b/helpers/make-trove-classifiers
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2026 Luis Guzman
+#
+# 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 3 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, see .
+
+
+VERSION=1
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
+BACKPORT=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+
+changelog "Backport dependency for newer yt-dlp"
+
+package
diff --git a/helpers/make-yt-dlp b/helpers/make-yt-dlp
index fe312d2..02b9bd6 100644
--- a/helpers/make-yt-dlp
+++ b/helpers/make-yt-dlp
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (C) 2025 Luis Guzman
+# Copyright (C) 2026 Luis Guzman
#
# 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