diff --git a/helpers/DATA/cron/license-info-fix.patch b/helpers/DATA/cron/license-info-fix.patch
new file mode 100644
index 0000000..b6221bd
--- /dev/null
+++ b/helpers/DATA/cron/license-info-fix.patch
@@ -0,0 +1,37 @@
+diff --git a/debian/copyright b/debian/copyright
+index 3c8824f..c6ec81a 100644
+--- a/debian/copyright
++++ b/debian/copyright
+@@ -38,7 +38,7 @@ License: GPL-2+
+
+ Files: debian/examples/crontab2english.pl
+ Copyright: 2001, Sean M. Burke
+-License: Artistic
++License: GPL-1+ or Artistic
+
+ License: Paul-Vixie's-license
+ Distribute freely, except: don't remove my name from the source or
+@@ -67,6 +67,23 @@ License: GPL-2+
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
++License: GPL-1+
++ This package 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 1 of the License, or
++ (at your option) any later version.
++ .
++ This package 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
++ .
++ On Debian systems, the complete text of the GNU General
++ Public License version 1 can be found in "/usr/share/common-licenses/GPL-1".
++
+ License: Artistic
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the "Artistic License" which comes with Debian.
diff --git a/helpers/DATA/firefox/patch_changes/001_Remove_Android_and_iOS_promotion.patch b/helpers/DATA/firefox/patch_changes/001-Remove_Android_and_iOS_promotion.patch
similarity index 100%
rename from helpers/DATA/firefox/patch_changes/001_Remove_Android_and_iOS_promotion.patch
rename to helpers/DATA/firefox/patch_changes/001-Remove_Android_and_iOS_promotion.patch
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
similarity index 99%
rename from helpers/DATA/firefox/patch_changes/002_Remove_moreFromMozilla_Focus_and_Klar.patch
rename to helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch
index 859ed9a..1216ca7 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
@@ -487,63 +487,6 @@ index bb847abd..e69de29b 100644
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-diff --git a/browser/components/preferences/moreFromMozilla.js b/browser/components/preferences/moreFromMozilla.js
-index bf97580d..31017a6f 100644
---- a/browser/components/preferences/moreFromMozilla.js
-+++ b/browser/components/preferences/moreFromMozilla.js
-@@ -81,51 +81,7 @@ var gMoreFromMozillaPane = {
-
- renderProducts() {
- const isRegionUS = Region.home.toLowerCase() === "us";
-- let products = [
-- {
-- id: "firefox-mobile",
-- title_string_id: "more-from-moz-firefox-mobile-title",
-- description_string_id: "more-from-moz-firefox-mobile-description",
-- region: "global",
-- button: {
-- id: "fxMobile",
-- type: "link",
-- label_string_id: "more-from-moz-learn-more-link",
-- actionURL: AppConstants.isChinaRepack()
-- ? "https://www.firefox.com.cn/browsers/mobile/"
-- : "https://www.mozilla.org/firefox/browsers/mobile/",
-- },
-- qrcode: {
-- title: {
-- string_id: "more-from-moz-qr-code-box-firefox-mobile-title",
-- },
-- image_src_prefix:
-- "chrome://browser/content/preferences/more-from-mozilla-qr-code",
-- button: {
-- id: "qr-code-send-email",
-- label: {
-- string_id: "more-from-moz-qr-code-box-firefox-mobile-button",
-- },
-- actionURL: AppConstants.isChinaRepack()
-- ? "https://www.firefox.com.cn/mobile/get-app/"
-- : "https://www.mozilla.org/firefox/mobile/get-app/?v=mfm",
-- },
-- },
-- },
-- {
-- id: "mozilla-monitor",
-- title_string_id: "more-from-moz-mozilla-monitor-title",
-- description_string_id: isRegionUS
-- ? "more-from-moz-mozilla-monitor-us-description"
-- : "more-from-moz-mozilla-monitor-global-description",
-- region: isRegionUS ? "us" : "global",
-- button: {
-- id: "mozillaMonitor",
-- label_string_id: "more-from-moz-mozilla-monitor-button",
-- actionURL: "https://monitor.mozilla.org/",
-- },
-- },
-- ];
-+ let products = [];
-
- if (BrowserUtils.shouldShowVPNPromo()) {
- const vpn = {
diff -Nru a/browser/components/privatebrowsing/content/assets/focus-qr-code.svg b/browser/components/privatebrowsing/content/assets/focus-qr-code.svg
--- a/browser/components/privatebrowsing/content/assets/focus-qr-code.svg 2022-05-22 09:35:55.412674110 +0000
+++ b/browser/components/privatebrowsing/content/assets/focus-qr-code.svg 1970-01-01 00:00:00.000000000 +0000
@@ -794,3 +737,60 @@ index 3888af10..1d6c606f 100644
"chrome://browser/content/asrouter/assets/fox-with-box-on-cloud.svg",
"chrome://browser/content/asrouter/assets/fox-with-devices.svg",
"chrome://browser/content/asrouter/assets/fox-with-locked-box.svg",
+diff --git a/browser/components/preferences/moreFromMozilla.js b/browser/components/preferences/moreFromMozilla.js
+index 8807b5d3..82367922 100644
+--- a/browser/components/preferences/moreFromMozilla.js
++++ b/browser/components/preferences/moreFromMozilla.js
+@@ -81,51 +81,7 @@ var gMoreFromMozillaPane = {
+
+ renderProducts() {
+ const isRegionUS = Region.home.toLowerCase() === "us";
+- let products = [
+- {
+- id: "firefox-mobile",
+- title_string_id: "more-from-moz-firefox-mobile-title",
+- description_string_id: "more-from-moz-firefox-mobile-description",
+- region: "global",
+- button: {
+- id: "fxMobile",
+- type: "link",
+- label_string_id: "more-from-moz-learn-more-link",
+- actionURL: BrowserUtils.isChinaRepack()
+- ? "https://www.firefox.com.cn/browsers/mobile/"
+- : "https://www.mozilla.org/firefox/browsers/mobile/",
+- },
+- qrcode: {
+- title: {
+- string_id: "more-from-moz-qr-code-box-firefox-mobile-title",
+- },
+- image_src_prefix:
+- "chrome://browser/content/preferences/more-from-mozilla-qr-code",
+- button: {
+- id: "qr-code-send-email",
+- label: {
+- string_id: "more-from-moz-qr-code-box-firefox-mobile-button",
+- },
+- actionURL: BrowserUtils.isChinaRepack()
+- ? "https://www.firefox.com.cn/mobile/get-app/"
+- : "https://www.mozilla.org/firefox/mobile/get-app/?v=mfm",
+- },
+- },
+- },
+- {
+- id: "mozilla-monitor",
+- title_string_id: "more-from-moz-mozilla-monitor-title",
+- description_string_id: isRegionUS
+- ? "more-from-moz-mozilla-monitor-us-description"
+- : "more-from-moz-mozilla-monitor-global-description",
+- region: isRegionUS ? "us" : "global",
+- button: {
+- id: "mozillaMonitor",
+- label_string_id: "more-from-moz-mozilla-monitor-button",
+- actionURL: "https://monitor.mozilla.org/",
+- },
+- },
+- ];
++ let products = [];
+
+ if (BrowserUtils.shouldShowVPNPromo()) {
+ const vpn = {
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
similarity index 69%
rename from helpers/DATA/firefox/patch_changes/003_disable_sponsored_topsites_and_keep_weather_widget_static.patch
rename to helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch
index a19dfa0..6865594 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,45 +1,54 @@
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
-index 391bc93e..df6b3f84 100644
+index 52a520fd..81cc685d 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
-@@ -1718,19 +1718,19 @@ pref("browser.topsites.component.enabled", false);
-
+@@ -1718,19 +1718,19 @@
+ 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);
+
// Mozilla Ad Routing Service (MARS) unified ads service
- pref("browser.newtabpage.activity-stream.unifiedAds.tiles.enabled", false);
-@@ -1738,12 +1738,12 @@ pref("browser.newtabpage.activity-stream.unifiedAds.spocs.enabled", false);
- pref("browser.newtabpage.activity-stream.unifiedAds.endpoint", "https://ads.mozilla.org/");
-
+-pref("browser.newtabpage.activity-stream.unifiedAds.tiles.enabled", true);
+-pref("browser.newtabpage.activity-stream.unifiedAds.spocs.enabled", true);
+-pref("browser.newtabpage.activity-stream.unifiedAds.endpoint", "https://ads.mozilla.org/");
++pref("browser.newtabpage.activity-stream.unifiedAds.tiles.enabled", false);
++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);
+
// 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);
+
// 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")
diff --git a/helpers/DATA/firefox/patch_changes/004_sqlite-ppc.patch b/helpers/DATA/firefox/patch_changes/004-sqlite-ppc.patch
similarity index 100%
rename from helpers/DATA/firefox/patch_changes/004_sqlite-ppc.patch
rename to helpers/DATA/firefox/patch_changes/004-sqlite-ppc.patch
diff --git a/helpers/DATA/firefox/patch_changes/005_apply_custom_urls.patch b/helpers/DATA/firefox/patch_changes/005-apply_custom_urls.patch
similarity index 100%
rename from helpers/DATA/firefox/patch_changes/005_apply_custom_urls.patch
rename to helpers/DATA/firefox/patch_changes/005-apply_custom_urls.patch
diff --git a/helpers/DATA/firefox/patch_changes/006_remova_mailto_handlers_correctly.patch b/helpers/DATA/firefox/patch_changes/006-remova_mailto_handlers_correctly.patch
similarity index 100%
rename from helpers/DATA/firefox/patch_changes/006_remova_mailto_handlers_correctly.patch
rename to helpers/DATA/firefox/patch_changes/006-remova_mailto_handlers_correctly.patch
diff --git a/helpers/DATA/firefox/patch_changes/007_disable_remote_settings_antifeature.patch b/helpers/DATA/firefox/patch_changes/007-disable_remote_settings_antifeature.patch
similarity index 100%
rename from helpers/DATA/firefox/patch_changes/007_disable_remote_settings_antifeature.patch
rename to helpers/DATA/firefox/patch_changes/007-disable_remote_settings_antifeature.patch
diff --git a/helpers/DATA/firefox/patch_changes/008_aboutRights_removal_fix.patch b/helpers/DATA/firefox/patch_changes/008-aboutRights_removal_fix.patch
similarity index 88%
rename from helpers/DATA/firefox/patch_changes/008_aboutRights_removal_fix.patch
rename to helpers/DATA/firefox/patch_changes/008-aboutRights_removal_fix.patch
index 57ffc6f..e035ce2 100644
--- a/helpers/DATA/firefox/patch_changes/008_aboutRights_removal_fix.patch
+++ b/helpers/DATA/firefox/patch_changes/008-aboutRights_removal_fix.patch
@@ -1,14 +1,14 @@
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
-index 53e4616a..ba6a3dfb 100644
+index c6498081..a8db34ad 100644
--- a/browser/base/content/aboutDialog.xhtml
+++ b/browser/base/content/aboutDialog.xhtml
-@@ -137,7 +137,7 @@
+@@ -138,7 +138,7 @@
--
-+
-
+-
++
+
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
@@ -20,7 +20,7 @@ index d1fe0148..ce5d1f42 100644
"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/es/legal",
++ {"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/firefox/patch_changes/009_remove_ubunfox_suggest_webext-ublock-origin.patch b/helpers/DATA/firefox/patch_changes/009-remove_ubunfox_suggest_webext-ublock-origin.patch
similarity index 100%
rename from helpers/DATA/firefox/patch_changes/009_remove_ubunfox_suggest_webext-ublock-origin.patch
rename to helpers/DATA/firefox/patch_changes/009-remove_ubunfox_suggest_webext-ublock-origin.patch
diff --git a/helpers/DATA/firefox/patch_changes/010-remove_theme_recommendation_and_saas_forge.patch b/helpers/DATA/firefox/patch_changes/010-remove_theme_recommendation_and_saas_forge.patch
new file mode 100644
index 0000000..dd0eb98
--- /dev/null
+++ b/helpers/DATA/firefox/patch_changes/010-remove_theme_recommendation_and_saas_forge.patch
@@ -0,0 +1,23 @@
+diff --git a/toolkit/mozapps/extensions/content/aboutaddons.html b/toolkit/mozapps/extensions/content/aboutaddons.html
+index 77702576..35cf6593 100644
+--- a/toolkit/mozapps/extensions/content/aboutaddons.html
++++ b/toolkit/mozapps/extensions/content/aboutaddons.html
+@@ -799,18 +799,6 @@
+
+
+
+-
+-
+-
+-
+-
+-
+
+
+ profile) {
+ profile = gAppData->profile;
+ } else {
+- appName = gAppData->name;
++ // For Abrowser compatibility: force use of ~/.mozilla/abrowser
++ appName.AssignLiteral("abrowser");
+ vendor = gAppData->vendor;
+ }
+
diff --git a/helpers/DATA/firefox/process-json-files.py b/helpers/DATA/firefox/process-json-files.py
index f9d12b5..5be4f98 100644
--- a/helpers/DATA/firefox/process-json-files.py
+++ b/helpers/DATA/firefox/process-json-files.py
@@ -324,7 +324,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/firefox/settings.js b/helpers/DATA/firefox/settings.js
index 1cd77a4..978048e 100644
--- a/helpers/DATA/firefox/settings.js
+++ b/helpers/DATA/firefox/settings.js
@@ -1,4 +1,3 @@
-:
// Release notes and vendor URLs
pref("app.releaseNotesURL", "https://trisquel.info/en/wiki/abrowser-help");
pref("app.vendorURL", "https://trisquel.info/en/wiki/abrowser-help");
@@ -255,7 +254,7 @@ pref("browser.newtabpage.activity-stream.showTopSites",true);
pref("browser.newtabpage.activity-stream.feeds.section.topstories",false);
pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false);
pref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
-pref("browser.newtabpage.activity-stream.discoverystream.endpoints, "");
+pref("browser.newtabpage.activity-stream.discoverystream.endpoints", "");
pref("browser.newtabpage.activity-stream.feeds.snippets",false);
pref("browser.newtabpage.activity-stream.disableSnippets", true);
pref("browser.newtabpage.activity-stream.tippyTop.service.endpoint", "");
diff --git a/helpers/DATA/rustc-1.82/patch_changes/000-edit_rules_job_numbers_for_amd64.patch b/helpers/DATA/rustc-1.82/patch_changes/000-edit_rules_job_numbers_for_amd64.patch
new file mode 100644
index 0000000..5f55fc3
--- /dev/null
+++ b/helpers/DATA/rustc-1.82/patch_changes/000-edit_rules_job_numbers_for_amd64.patch
@@ -0,0 +1,18 @@
+diff --git a/debian/rules b/debian/rules
+index 5651361f..26738cfd 100755
+--- a/debian/rules
++++ b/debian/rules
+@@ -70,9 +70,13 @@ ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ ifeq ($(DEB_HOST_ARCH),riscv64)
+ NJOBS := -j $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ else
++ifeq ($(DEB_HOST_ARCH),amd64)
++NJOBS := -j 8
++else
+ NJOBS := -j 4
+ endif
+ endif
++endif
+ RUSTBUILD = RUST_BACKTRACE=1 python3 src/bootstrap/bootstrap.py $(NJOBS)
+ RUSTBUILD_FLAGS = --stage 2 --config debian/config.toml --on-fail env
+ # rust-tidy depends on lots of modules that we strip out of the build.
diff --git a/helpers/DATA/rustc-1.82/patch_changes/001-set_pkg-config_manual_path_for_aramo.patch b/helpers/DATA/rustc-1.82/patch_changes/001-set_pkg-config_manual_path_for_aramo.patch
new file mode 100644
index 0000000..2a93689
--- /dev/null
+++ b/helpers/DATA/rustc-1.82/patch_changes/001-set_pkg-config_manual_path_for_aramo.patch
@@ -0,0 +1,12 @@
+diff --git a/debian/rules b/debian/rules
+index 5651361f..2cc90e7b 100755
+--- a/debian/rules
++++ b/debian/rules
+@@ -4,6 +4,7 @@
+ # The build regressed back when LTO was systematized in Ubuntu.
+ # This should be periodically revisited.
+ export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
++export PKG_CONFIG=/usr/bin/pkg-config
+
+ include /usr/share/dpkg/pkg-info.mk
+ include /usr/share/dpkg/vendor.mk
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
new file mode 100644
index 0000000..ddcb270
--- /dev/null
+++ b/helpers/DATA/yt-dlp/patch_changes/000-add_cookies_support_for_firefox_based_browser_abrowser.patch
@@ -0,0 +1,102 @@
+Enables Firefox based browser 'Abrowser' with custom folder (.mozilla/abrowser)
+to use the --cookies-from-browser feature, might also work for other customized
+browser in similar cases.
+
+
+diff --git a/yt_dlp/cookies.py b/yt_dlp/cookies.py
+index 5675445a..7afd324b 100644
+--- a/yt_dlp/cookies.py
++++ b/yt_dlp/cookies.py
+@@ -47,7 +47,7 @@
+ from .utils.networking import normalize_url
+
+ CHROMIUM_BASED_BROWSERS = {'brave', 'chrome', 'chromium', 'edge', 'opera', 'vivaldi', 'whale'}
+-SUPPORTED_BROWSERS = CHROMIUM_BASED_BROWSERS | {'firefox', 'safari'}
++SUPPORTED_BROWSERS = CHROMIUM_BASED_BROWSERS | {'abrowser', 'firefox', 'safari'}
+
+
+ class YDLLogger(_YDLLogger):
+@@ -114,8 +114,8 @@ def load_cookies(cookie_file, browser_specification, ydl):
+
+
+ def extract_cookies_from_browser(browser_name, profile=None, logger=YDLLogger(), *, keyring=None, container=None):
+- if browser_name == 'firefox':
+- return _extract_firefox_cookies(profile, container, logger)
++ if browser_name in ('firefox', 'abrowser'):
++ return _extract_firefox_cookies(profile, container, logger, browser_name)
+ elif browser_name == 'safari':
+ return _extract_safari_cookies(profile, logger)
+ elif browser_name in CHROMIUM_BASED_BROWSERS:
+@@ -124,15 +124,15 @@ def extract_cookies_from_browser(browser_name, profile=None, logger=YDLLogger(),
+ raise ValueError(f'unknown browser: {browser_name}')
+
+
+-def _extract_firefox_cookies(profile, container, logger):
+- logger.info('Extracting cookies from firefox')
++def _extract_firefox_cookies(profile, container, logger, browser_name):
++ logger.info(f'Extracting cookies from {browser_name}')
+ if not sqlite3:
+- logger.warning('Cannot extract cookies from firefox without sqlite3 support. '
++ logger.warning(f'Cannot extract cookies from {browser_name} without sqlite3 support. '
+ 'Please use a Python interpreter compiled with sqlite3 support')
+ return YoutubeDLCookieJar()
+
+ if profile is None:
+- search_roots = list(_firefox_browser_dirs())
++ search_roots = list(_firefox_browser_dirs(browser_name))
+ elif _is_path(profile):
+ search_roots = [profile]
+ else:
+@@ -141,7 +141,7 @@ def _extract_firefox_cookies(profile, container, logger, browser_name):
+
+ cookie_database_path = _newest(_firefox_cookie_dbs(search_roots))
+ if cookie_database_path is None:
+- raise FileNotFoundError(f'could not find firefox cookies database in {search_root}')
++ raise FileNotFoundError(f'could not find {browser_name} cookies database in {search_root}')
+ logger.debug(f'Extracting cookies from: "{cookie_database_path}"')
+
+ container_id = None
+@@ -156,7 +156,7 @@ def _extract_firefox_cookies(profile, container, logger, browser_name):
+ try_call(lambda: re.fullmatch(r'userContext([^\.]+)\.label', context['l10nID']).group()),
+ )), None)
+ if not isinstance(container_id, int):
+- raise ValueError(f'could not find firefox container "{container}" in containers.json')
++ raise ValueError(f'could not find {browser_name} container "{container}" in containers.json')
+
+ with tempfile.TemporaryDirectory(prefix='yt_dlp') as tmpdir:
+ cursor = None
+@@ -164,7 +164,7 @@ def _extract_firefox_cookies(profile, container, logger, browser_name):
+ cursor = _open_database_copy(cookie_database_path, tmpdir)
+ if isinstance(container_id, int):
+ logger.debug(
+- f'Only loading cookies from firefox container "{container}", ID {container_id}')
++ f'Only loading cookies from {browser_name} container "{container}", ID {container_id}')
+ cursor.execute(
+ 'SELECT host, name, value, path, expiry, isSecure FROM moz_cookies WHERE originAttributes LIKE ? OR originAttributes LIKE ?',
+ (f'%userContextId={container_id}', f'%userContextId={container_id}&%'))
+@@ -186,14 +186,14 @@ def _extract_firefox_cookies(profile, container, logger):
+ path=path, path_specified=bool(path), secure=is_secure, expires=expiry, discard=False,
+ comment=None, comment_url=None, rest={})
+ jar.set_cookie(cookie)
+- logger.info(f'Extracted {len(jar)} cookies from firefox')
++ logger.info(f'Extracted {len(jar)} cookies from {browser_name}')
+ return jar
+ finally:
+ if cursor is not None:
+ cursor.connection.close()
+
+
+-def _firefox_browser_dirs():
++def _firefox_browser_dirs(browser_name='firefox'):
+ 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:
+ yield from map(os.path.expanduser, (
+- '~/.mozilla/firefox',
++ f'~/.mozilla/{browser_name}',
+ '~/snap/firefox/common/.mozilla/firefox',
+ '~/.var/app/org.mozilla.firefox/.mozilla/firefox',
+ ))
diff --git a/helpers/config b/helpers/config
index 2178600..ebc17f9 100755
--- a/helpers/config
+++ b/helpers/config
@@ -38,12 +38,12 @@ fi
[ -d PACKAGES ] || mkdir PACKAGES
export DEBIAN_FRONTEND=noninteractive
-export DEBEMAIL=trisquel-devel@listas.trisquel.info
-export DEBFULLNAME="Trisquel GNU/Linux developers"
+export DEBEMAIL=devel@cmxsl.org
+export DEBFULLNAME="Desarrollo CMXSL"
export CODENAME=aramo
export REVISION=11.0
-export RELEASE=trisquel
-export DOMAIN=trisquel.info
+export RELEASE=cmxsl
+export DOMAIN=cmxsl.org
export UPSTREAM=jammy
export UPSTREAMRELEASE=22.04
MIRROR=http://archive.ubuntu.com/ubuntu
@@ -88,7 +88,7 @@ head -n 1 debian/changelog | grep -q $UPSTREAM-security && REPO=$CODENAME-securi
echo | dch -D $REPO -v $FULLVERSION "$1"
# Make sure the changelog file is identical between archs
-/bin/sed "/-- Trisquel/s/.*/ -- Trisquel GNU\/Linux developers $DATE/" -i debian/changelog
+/bin/sed "/-- Desarrollo/s/.*/ -- Desarrollo CMXSL $DATE/" -i debian/changelog
}
@@ -197,7 +197,7 @@ UPSTREAMVERSION=$(dpkg-parsechangelog --show-field Version)
# This needs to be enabled (and reviewed) as first step of t12 release. Making it break here to force review
[ "$REVISION" == 12.0 ] && echo Review version string generation before building t12 packages! && exit 1
-export FULLVERSION=$(dpkg-parsechangelog --show-field Version)+${REVISION}trisquel${VERSION}
+export FULLVERSION=$(dpkg-parsechangelog --show-field Version)+${REVISION}cmxsl${VERSION}
[ "$PACKAGE" == "console-setup" ] && export FULLVERSION=$(dpkg-parsechangelog --show-field Version)-${REVISION}trisquel${VERSION}
# Use 3.0 (native) deb source format
@@ -223,7 +223,7 @@ cd ..
mv source $PACKAGE-$FULLVERSION
dpkg-source -b -I.falsefileextension99 $PACKAGE-$FULLVERSION
rm -rf ${LOCAL_APT}
-echo -e "> Trisquel source package built! - $(date -R)\n"
+echo -e "> CMXSL source package built! - $(date -R)\n"
notify_found_distro_match_on_debian_rules
}
diff --git a/helpers/make-cron b/helpers/make-cron
index 3f6c3de..df4d767 100644
--- a/helpers/make-cron
+++ b/helpers/make-cron
@@ -17,15 +17,13 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=1
+VERSION=2
. ./config
-rm debian/examples/crontab2english.pl
+patch_p1 $DATA/license-info-fix.patch
-sed '/crontab2english.pl/,/License: Artistic/d;/License: Artistic/,/common-licenses/d' -i debian/copyright
-
-changelog "Removed non-free example #10868"
+changelog "Corrected license info (package-helpers issue #199)"
package
diff --git a/helpers/make-debootstrap b/helpers/make-debootstrap
index 561a5af..644dd69 100644
--- a/helpers/make-debootstrap
+++ b/helpers/make-debootstrap
@@ -18,7 +18,7 @@
#
VERSION=7
-EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble main universe'
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble main'
NETINST=true
. ./config
diff --git a/helpers/make-dh-cargo b/helpers/make-dh-cargo
new file mode 100644
index 0000000..1f693f1
--- /dev/null
+++ b/helpers/make-dh-cargo
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2025 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 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
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble main'
+BACKPORT=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+changelog "Adding package as a dependency for newer abrowser releases."
+
+package
diff --git a/helpers/make-firefox b/helpers/make-firefox
index 10db9dd..057d176 100644
--- a/helpers/make-firefox
+++ b/helpers/make-firefox
@@ -19,8 +19,8 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=120.8
-EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main'
+VERSION=123
+EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu noble main'
REPOKEY=9BDB3D89CE49EC21
. ./config
@@ -43,9 +43,9 @@ sed "/async download.*/a\ \ \ \ console.warn(\"Function 'fetchLatestChanges' dis
# Disable activity-stream antifeatures.
# These are not condensed into a single sed script to make it fail on individual commands that didn't change the source
-ActivityStream=browser/components/newtab/lib/ActivityStream.sys.mjs
+ActivityStream=browser/extensions/newtab/lib/ActivityStream.sys.mjs
BAP_FirefoxJs=browser/app/profile/firefox.js
-sed '/^const DEFAULT_SITES/,/^])\;/c const DEFAULT_SITES = new Map\([[""]]\);' -i browser/components/newtab/lib/DefaultSites.sys.mjs
+sed '/^const DEFAULT_SITES/,/^])\;/c const DEFAULT_SITES = new Map\([[""]]\);' -i browser/extensions/newtab/lib/DefaultSites.sys.mjs
sed '/"showSponsored"/,/value/s/value: true/value: false/' -i $ActivityStream
sed '/"telemetry"/,/value/s/value: true/value: false/' -i $ActivityStream
sed '/"section.highlights.includePocket"/,/value/s/value: true/value: false/' -i $ActivityStream
@@ -81,7 +81,7 @@ sed -i '/services.sync.prefs.sync.browser.firefox-view.feature-tour/s|true|false
##disable ui tour
sed -i '/browser.uitour.enabled/s|true|false|' $BAP_FirefoxJs
##disable colorways closet
-sed -i '/browser.theme.colorway-closet/s|true|false|' $BAP_FirefoxJs
+#sed -i '/browser.theme.colorway-closet/s|true|false|' $BAP_FirefoxJs
##disable newtab intro - check adjustment for versions greater than 106
#grep -rl browser.newtabpage.introShown |xargs -r sed -i '/browser.newtabpage.introShown/s|true|false|'
##Remove mailto handlers. 110
@@ -135,6 +135,9 @@ sed -i '/media.gmp-manager.chromium-update-url/s|https://update.googleapis.com/s
sed -i 's|\(pref("media\.gmp-widevinecdm-l1\.chromium-guid", \)"[^"]*"|\1""|' $BAP_FirefoxJs
sed -i 's|\(pref("media\.gmp-widevinecdm\.chromium-guid", \)"[^"]*"|\1""|' $BAP_FirefoxJs
+# Replace mozilla url addons button
+sed -i '/extensions.getAddons.link.url/s|https://addons.mozilla.org/%LOCALE%/firefox/|https://gnuzilla.gnu.org/mozzarella/|' $BAP_FirefoxJs
+
# Update third_party/rust/glean/src/configuration.rs sha256sum at third_party/rust/glean/.cargo-checksum.json
GLEAN_CONF_RS_MODIFIED=$(sha256sum third_party/rust/glean/src/configuration.rs|awk '{print$1}')
sed_csum $GLEAN_CONF_RS_INITIAL \
@@ -145,7 +148,9 @@ sed '/Google API/,/google-api-keyfile/ d' debian/config/mozconfig.in -i
sed '/"geo.provider.network.url"/s|https.*"|"|' -i modules/libpref/init/all.js
# Disable save password in browser suggestion.
-#grep -lr '^pref("signon.rememberSignons"'| xargs sed -i "/^pref(\"signon.rememberSignons\"/s|true|false|" modules/libpref/init/all.js
+#grep -lr '^pref("signon.rememberSignons"'| \
+# xargs sed -i "/^pref(\"signon.rememberSignons\"/s|true|false|" \
+# modules/libpref/init/all.js
# Org branding
sed 's/com.ubuntu/org.trisquel/' -i debian/config/mozconfig.in
@@ -251,12 +256,14 @@ cp -a $DATA/branding/* browser/branding/nightly
cp -a $DATA/branding/* browser/branding/aurora
# We are using unofficial but also should have abrowser word on the about window.
cp browser/branding/official/content/jar.mn browser/branding/unofficial/content/jar.mn
-echo '#warningDesc, #communityExperimentalDesc, #communityDesc, #contributeDesc {display:none!important}' >> browser/base/content/aboutDialog.css
+echo '#warningDesc, #communityExperimentalDesc, #communityDesc, #contributeDesc {display:none!important}' >> \
+ browser/base/content/aboutDialog.css
# Replace/remove brand name on used view(s) to avoid branding issues.
for i in $(find . -name brandings.ftl)
do
/bin/sed -i '/firefoxview-brand-name/s|Firefox View|Abrowser View|' $i
+ /bin/sed -i '/firefox-home-brand-name/s|Firefox Home|Abrowser Home|' $i
sed -i 's|= Firefox |= |' $i
done
@@ -295,10 +302,14 @@ 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" '{}' ';'
+find . -type f -not -iregex '.*changelog.*' \
+ -not -iregex '.*copyright.*' -not -iregex '.*third_party/.*' \
+ -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
@@ -328,11 +339,14 @@ cat << EOF >> toolkit/mozapps/extensions/content/extensions.css
EOF
# Hide mobile promo
-echo ".fxaMobilePromo { display: none !important; }" >> browser/themes/shared/preferences/preferences.inc.css
+echo ".fxaMobilePromo { display: none !important; }" >> \
+ browser/themes/shared/preferences/preferences.inc.css
# Hide unwanted elements on about:addons
-echo ".discopane-notice, .privacy-policy-link, #main header, #plugindeprecation-notice { display: none !important; }" >> toolkit/mozapps/extensions/content/aboutaddons.css
+echo ".discopane-notice, .privacy-policy-link, #main header, #plugindeprecation-notice { display: none !important; }" >> \
+ toolkit/mozapps/extensions/content/aboutaddons.css
# Hide warnings on unsigned extensions
-echo ".warning{display: none!important; } .addon[notification=warning]{background-image: none!important;}" >> toolkit/mozapps/extensions/content/extensions.css
+echo ".warning{display: none!important; } .addon[notification=warning]{background-image: none!important;}" >> \
+ toolkit/mozapps/extensions/content/extensions.css
# Hide extra links in about box
# about: page mods, like rights.
@@ -344,8 +358,10 @@ echo ".warning{display: none!important; } .addon[notification=warning]{backgroun
#EO about: mods.
-sed -i 's|Mozilla Project|Trisquel Project|g' browser/base/content/overrides/app-license.html
-sed -i 's|https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html|https://gitlab.trisquel.org/trisquel/package-helpers|' toolkit/content/license.html
+sed -i 's|Mozilla Project|Trisquel Project|g' \
+ browser/base/content/overrides/app-license.html
+sed -i "s|https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html|$GIT_TPH_REPO|" \
+ toolkit/content/license.html
# We went too far...
#sed -i 's/iceweasel, abrowser, icecat,/iceweasel, firefox, icecat,/g' debian/control.in
@@ -405,12 +421,12 @@ find browser/branding/ -name PrivateBrowsing_150.png | xargs -n1 cp $DATA/debug_
find l10n/ -name aboutAddons.ftl | xargs -r sed -i '/.placeholder/s|addons.mozilla.org|gnuzilla.gnu.org|g'
sed -i "s|$OLD_WEB_DEV_URL|$WEB_DEV_URL|" devtools/client/menus.js
grep -lr addons-help toolkit/mozapps/extensions/ | xargs -r sed -i 's|addons-help|abrowser-help|'
+#sed -i '/domain ==/s|addons.mozilla.org|gnuzilla.gnu.org|' netwerk/protocol/http/nsHttpChannel.cpp
+sed -i "/browser.discovery.sites/s|addons.mozilla.org|gnuzilla.gnu.org|" $BAP_FirefoxJs
+sed -i "/lightweightThemes.getMoreURL/s|https://addons.mozilla.org/.*themes||" $BAP_FirefoxJs
#Fixes by patch on source, see DATA/firefox/patches for more info.
-for patch in $(ls -v ${DATA}/patch_changes/*.patch)
-do
- patch_p1 $patch
-done
+apply_patch_changes
# Postinst script to manage profile migration and system links
echo '
diff --git a/helpers/make-libgit2 b/helpers/make-libgit2
new file mode 100644
index 0000000..1f693f1
--- /dev/null
+++ b/helpers/make-libgit2
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Copyright (C) 2025 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 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
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble main'
+BACKPORT=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+changelog "Adding package as a dependency for newer abrowser releases."
+
+package
diff --git a/helpers/make-llvm-toolchain-19 b/helpers/make-llvm-toolchain-19
index a6a2b2b..c097abd 100644
--- a/helpers/make-llvm-toolchain-19
+++ b/helpers/make-llvm-toolchain-19
@@ -18,7 +18,7 @@
#
VERSION=1
-EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble main universe'
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
BACKPORTS=true
. ./config
diff --git a/helpers/make-mate-user-admin b/helpers/make-mate-user-admin
index f2858c7..b6785ce 100644
--- a/helpers/make-mate-user-admin
+++ b/helpers/make-mate-user-admin
@@ -18,7 +18,7 @@
#
VERSION=2
-EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble main universe'
+EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe'
. ./config
diff --git a/helpers/make-python-apt b/helpers/make-python-apt
index 1b54528..c53eae2 100644
--- a/helpers/make-python-apt
+++ b/helpers/make-python-apt
@@ -23,7 +23,7 @@
# a new release of the 'debian-installer' also ships the latest mirror
# list available on the resulting netinstall (mini.iso) image.
-VERSION=10
+VERSION=11
COMPONENT=main
#Be aware to not pull/build before publish date on T12.
@@ -36,6 +36,7 @@ export FULLVERSION="$(sed 's|ubuntu4||' <<< $FULLVERSION)"
Mirrors_masterlist=$(mktemp)
Mirrors_masterlist_git="trisquel-packages/-/raw/master/extra/mirrors/Mirrors.masterlist"
+#FIXME: Propose a way to integrate from git and avoid fetching via wget/curl.
wget https://gitlab.trisquel.org/trisquel/$Mirrors_masterlist_git -o /dev/null -O $Mirrors_masterlist
python3 $DATA/parse-mirror-masterlist.py $Mirrors_masterlist > data/templates/Trisquel.mirrors
rm $Mirrors_masterlist
diff --git a/helpers/make-rustc-1.82 b/helpers/make-rustc-1.82
new file mode 100644
index 0000000..a768f04
--- /dev/null
+++ b/helpers/make-rustc-1.82
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Copyright (C) 2025 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 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
+EXTERNAL='deb-src https://ppa.launchpadcontent.net/liushuyu-011/rust-updates-1.82/ubuntu noble main'
+REPOKEY=327405FE663500EF
+BACKPORTS=true
+BUILD_UNTIL=11.0
+
+. ./config
+
+apply_patch_changes
+
+changelog "Adding package as a dependency for newer abrowser releases."
+
+package
diff --git a/helpers/make-yt-dlp b/helpers/make-yt-dlp
index 24e780e..b74cd80 100644
--- a/helpers/make-yt-dlp
+++ b/helpers/make-yt-dlp
@@ -17,7 +17,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-VERSION=1
+VERSION=2
EXTERNAL='deb-src http://deb.debian.org/debian sid main'
REPOKEY=0E98404D386FA1D9
BACKPORTS=true
@@ -32,6 +32,8 @@ sed -i "/Currently supported/s|are:|are at:|" debian/control
[ "$SUPPORTED_SITES" != "$(tail -n2 debian/control|awk NF|sed 's|^ ||')" ] && \
echo -e ">>>Site replacement needs fixing, exiting...<<<\n" && exit
+apply_patch_changes
+
changelog "Track latest release and remove explicit site listing, redirecting to website author."
package