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 3f44f063..20fddec8 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 @@ -4,10 +4,10 @@ Based on https://git.parabola.nu/abslibre.git/diff/libre/iceweasel/9004-FSDG-mis - Remove promos of Firefox Focus and Klar from Private Browsing diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js -index c5f7cf3a..f0124235 100644 +index cc42846d..52d35d49 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js -@@ -1368,9 +1368,9 @@ pref("accessibility.typeaheadfind.linksonly", false); +@@ -1388,11 +1388,11 @@ pref("accessibility.typeaheadfind.linksonly", false); pref("accessibility.typeaheadfind.flashBar", 1); // Whether we had to hide the "Firefox Labs" section because it would be empty. @@ -16,9 +16,12 @@ index c5f7cf3a..f0124235 100644 // Whether we show the "More from Mozilla" section. -pref("browser.preferences.moreFromMozilla", true); +pref("browser.preferences.moreFromMozilla", false); - - // Used by settings to track whether the user customized advanced - // performance settings. Not used directly elsewhere. + // Whether we show the "AI Controls" pane. +-pref("browser.preferences.aiControls", true); ++pref("browser.preferences.aiControls", false); + // Whether to show unavailable AI controls regardless of region/locale + // restrictions. This is intended for localizers to be able to see the strings. + pref("browser.preferences.aiControls.showUnavailable", false); @@ -2281,7 +2281,7 @@ pref("browser.contentblocking.report.vpn_regions", "ca,my,nz,sg,gb,gg,im,io,je,u pref("browser.promo.focus.disallowed_regions", "cn"); @@ -456,17 +459,19 @@ index b5ff592..22cdf39 100644 { id: "PB_NEWTAB_VPN_PROMO", template: "pb_newtab", -diff -Nru a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn ---- a/browser/components/preferences/jar.mn 2022-05-22 09:35:55.400673986 +0000 -+++ b/browser/components/preferences/jar.mn 2022-05-22 21:45:51.512354083 +0000 -@@ -18,7 +18,5 @@ +diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn +index b2d65603..b44a1525 100644 +--- a/browser/components/preferences/jar.mn ++++ b/browser/components/preferences/jar.mn +@@ -19,8 +19,6 @@ browser.jar: content/browser/preferences/fxaPairDevice.xhtml content/browser/preferences/fxaPairDevice.js content/browser/preferences/findInPage.js - content/browser/preferences/more-from-mozilla-qr-code-simple.svg - content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg + content/browser/preferences/browser-layout-horizontal.svg + content/browser/preferences/browser-layout-vertical.svg content/browser/preferences/web-appearance-dark.svg - content/browser/preferences/web-appearance-light.svg diff --git a/browser/components/preferences/more-from-mozilla-qr-code-simple-cn.svg b/browser/components/preferences/more-from-mozilla-qr-code-simple-cn.svg index edcad0f3..e69de29b 100644 --- a/browser/components/preferences/more-from-mozilla-qr-code-simple-cn.svg @@ -736,10 +741,10 @@ index 3888af10..1d6c606f 100644 "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 +index 109d334e..ee49d63f 100644 --- a/browser/components/preferences/moreFromMozilla.js +++ b/browser/components/preferences/moreFromMozilla.js -@@ -81,51 +81,7 @@ var gMoreFromMozillaPane = { +@@ -81,50 +81,7 @@ var gMoreFromMozillaPane = { renderProducts() { const isRegionUS = Region.home.toLowerCase() === "us"; @@ -777,9 +782,8 @@ index 8807b5d3..82367922 100644 - { - 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", +- description_string_id: +- "more-from-moz-mozilla-monitor-global-description", - region: isRegionUS ? "us" : "global", - button: { - id: "mozillaMonitor", 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 ffa7ea94..d015201f 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 @@ -24,8 +24,8 @@ index 217ed280..d91cde94 100644 // 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); +@@ -1886,24 +1886,24 @@ pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-b", false); + pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-c", false); // Mozilla Ad Routing Service (MARS) unified ads service -pref("browser.newtabpage.activity-stream.unifiedAds.tiles.enabled", true); @@ -35,13 +35,14 @@ index 217ed280..d91cde94 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.ohttp.enabled", false); +-pref("browser.newtabpage.activity-stream.unifiedAds.ohttp.enabled", true); ++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.weather.display", "detailed"); pref("browser.newtabpage.activity-stream.images.smart", true); diff --git a/helpers/DATA/firefox/patch_changes/013-remove_finish_setup_third_party_services.patch b/helpers/DATA/firefox/patch_changes/013-remove_finish_setup_third_party_services.patch index c00136f7..0bc8d3ca 100644 --- a/helpers/DATA/firefox/patch_changes/013-remove_finish_setup_third_party_services.patch +++ b/helpers/DATA/firefox/patch_changes/013-remove_finish_setup_third_party_services.patch @@ -11,53 +11,53 @@ index ba47adb6..c4b29ec4 100644 where: "tabshifted", }, navigate: true, -@@ -750,49 +750,6 @@ const MR_ABOUT_WELCOME_DEFAULT = { +@@ -865,6 +865,49 @@ const MR_ABOUT_WELCOME_DEFAULT = { }, targeting: "isFxASignedIn", }, -- { -- id: "AW_ACCOUNT_LOGIN", -- content: { -- fullscreen: true, -- position: "split", -- split_narrow_bkg_position: "-228px", -- image_alt_text: { -- string_id: "mr2022-onboarding-gratitude-image-alt", -- }, -- background: -- "url('chrome://activity-stream/content/data/content/assets/fox-doodle-waving-laptop.svg') center center / 80% no-repeat var(--mr-screen-background-color)", -- progress_bar: true, -- logo: {}, -- title: { -- string_id: "onboarding-sign-up-title", -- }, -- subtitle: { -- string_id: "onboarding-sign-up-description", -- }, -- secondary_button: { -- label: { -- string_id: "mr2-onboarding-start-browsing-button-label", -- }, -- style: "secondary", -- action: { -- navigate: true, -- }, -- }, -- primary_button: { -- label: { -- string_id: "onboarding-sign-up-button", -- }, -- action: { -- data: { -- entrypoint: "newuser-onboarding-desktop", -- }, -- type: "FXA_SIGNIN_FLOW", -- navigate: true, -- }, -- }, -- }, -- targeting: "!isFxASignedIn", -- }, ++ { ++ id: "AW_ACCOUNT_LOGIN", ++ content: { ++ fullscreen: true, ++ position: "split", ++ split_narrow_bkg_position: "-228px", ++ image_alt_text: { ++ string_id: "mr2022-onboarding-gratitude-image-alt", ++ }, ++ background: ++ "url('chrome://activity-stream/content/data/content/assets/br-fxa-fox-mirror.svg') var(--mr-secondary-position) no-repeat light-dark(rgba(252, 245, 240, 1), rgba(33, 3, 64, 1))", ++ progress_bar: true, ++ logo: {}, ++ title: { ++ string_id: "onboarding-sign-up-title", ++ }, ++ subtitle: { ++ string_id: "onboarding-sign-up-description", ++ }, ++ secondary_button: { ++ label: { ++ string_id: "mr2-onboarding-start-browsing-button-label", ++ }, ++ style: "secondary", ++ action: { ++ navigate: true, ++ }, ++ }, ++ primary_button: { ++ label: { ++ string_id: "onboarding-sign-up-button", ++ }, ++ action: { ++ data: { ++ entrypoint: "newuser-onboarding-desktop", ++ }, ++ type: "FXA_SIGNIN_FLOW", ++ navigate: true, ++ }, ++ }, ++ }, ++ targeting: "!isFxASignedIn", ++ }, ], }; diff --git a/helpers/DATA/firefox/patch_changes/016-set_custom_cargo_1.91.patch b/helpers/DATA/firefox/patch_changes/016-set_custom_cargo_1.91.patch new file mode 100644 index 00000000..5be58ff7 --- /dev/null +++ b/helpers/DATA/firefox/patch_changes/016-set_custom_cargo_1.91.patch @@ -0,0 +1,28 @@ +diff --git a/debian/control.in b/debian/control.in +index 758352f8..26383a38 100644 +--- a/debian/control.in ++++ b/debian/control.in +@@ -43,8 +43,8 @@ Build-Depends: cdbs, + libclang-22-dev | libclang-21-dev | libclang-20-dev | libclang-19-dev | libclang-18-dev, + llvm-22-dev | llvm-21-dev | llvm-20-dev | llvm-19-dev | llvm-18-dev, + lld-22 | lld-21 | lld-20 | lld-19 | lld-18, +- cargo-1.90, +- rustc-1.90, ++ cargo-1.91 | cargo-1.90, ++ rustc-1.91 | rustc-1.90, + nodejs (>= 12.22.12) + Standards-Version: 3.9.1 + +diff --git a/debian/build/rules.mk b/debian/build/rules.mk +index 896150e7..413e34fc 100644 +--- a/debian/build/rules.mk ++++ b/debian/build/rules.mk +@@ -109,7 +109,7 @@ LLVM_VERSIONS = 22 21 20 19 18 + DEB_LLVM_VERSION = $(firstword $(foreach llvm_version, $(LLVM_VERSIONS), \ + $(if $(shell which clang-$(llvm_version)), $(llvm_version)))) + +-RUSTC_VERSIONS = 1.90 ++RUSTC_VERSIONS = 1.91 1.90 + DEB_RUSTC_VERSION = $(firstword $(foreach rustc_version, $(RUSTC_VERSIONS), \ + $(if $(shell which rustc-$(rustc_version)), $(rustc_version)))) + diff --git a/helpers/DATA/firefox/patch_changes/017-modify_sidebar_pins_promo_icons.patch b/helpers/DATA/firefox/patch_changes/017-modify_sidebar_pins_promo_icons.patch new file mode 100644 index 00000000..8dfee481 --- /dev/null +++ b/helpers/DATA/firefox/patch_changes/017-modify_sidebar_pins_promo_icons.patch @@ -0,0 +1,38 @@ +diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn +index 3a12a7a3..ac1245a9 100644 +--- a/browser/themes/shared/jar.inc.mn ++++ b/browser/themes/shared/jar.inc.mn +@@ -266,10 +266,10 @@ + skin/classic/browser/search-indicator-badge-add.svg (../shared/search/search-indicator-badge-add.svg) + skin/classic/browser/searchbar.css (../shared/search/searchbar.css) + +- skin/classic/browser/sidebar/firefox.svg (../shared/sidebar/firefox.svg) +- skin/classic/browser/sidebar/foxy.svg (../shared/sidebar/foxy.svg) +- skin/classic/browser/sidebar/gmail.svg (../shared/sidebar/gmail.svg) +- skin/classic/browser/sidebar/slack.svg (../shared/sidebar/slack.svg) ++ skin/classic/browser/sidebar/trisquel.svg (../shared/sidebar/trisquel.svg) ++ skin/classic/browser/sidebar/fsf.svg (../shared/sidebar/fsf.svg) ++ skin/classic/browser/sidebar/wikipedia.svg (../shared/sidebar/wikipedia.svg) ++ skin/classic/browser/sidebar/liberachat.svg (../shared/sidebar/liberachat.svg) + + skin/classic/browser/tabbrowser/content-area.css (../shared/tabbrowser/content-area.css) + skin/classic/browser/tabbrowser/crashed.svg (../shared/tabbrowser/crashed.svg) +diff --git a/browser/components/sidebar/sidebar-pins-promo.mjs b/browser/components/sidebar/sidebar-pins-promo.mjs +index beac7ea4..538ae9aa 100644 +--- a/browser/components/sidebar/sidebar-pins-promo.mjs ++++ b/browser/components/sidebar/sidebar-pins-promo.mjs +@@ -56,10 +56,10 @@ export default class SidebarPinsPromo extends MozLitElement { + this.launcherObserver = new MutationObserver(() => this.requestUpdate()); + } + #icons = [ +- { name: "firefox", src: "chrome://browser/skin/sidebar/firefox.svg" }, +- { name: "slack", src: "chrome://browser/skin/sidebar/slack.svg" }, +- { name: "foxy", src: "chrome://browser/skin/sidebar/foxy.svg" }, +- { name: "gmail", src: "chrome://browser/skin/sidebar/gmail.svg" }, ++ { name: "trisquel", src: "chrome://browser/skin/sidebar/trisquel.svg" }, ++ { name: "liberachat", src: "chrome://browser/skin/sidebar/liberachat.svg" }, ++ { name: "fsf", src: "chrome://browser/skin/sidebar/fsf.svg" }, ++ { name: "wikipedia", src: "chrome://browser/skin/sidebar/wikipedia.svg" }, + ]; + + connectedCallback() { diff --git a/helpers/DATA/firefox/patch_changes/018-adjust_wallpapers_abrowser.patch b/helpers/DATA/firefox/patch_changes/018-adjust_wallpapers_abrowser.patch new file mode 100644 index 00000000..d582d489 --- /dev/null +++ b/helpers/DATA/firefox/patch_changes/018-adjust_wallpapers_abrowser.patch @@ -0,0 +1,28 @@ +diff --git a/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs b/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs +index 72df22b3..24f2f807 100644 +--- a/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs ++++ b/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs +@@ -156,7 +156,9 @@ export class WallpaperFeed { + ...record, + ...(record.attachment + ? { +- wallpaperUrl: `${baseAttachmentURL}${record.attachment.location}`, ++ wallpaperUrl: record.attachment.location.includes("trisquel") ++ ? `https://trisquel.cmxsl.org/newtab/${record.attachment.filename.replace(".avif", ".webp")}` ++ : `${baseAttachmentURL}${record.attachment.location}`, + } + : {}), + background_position: record.background_position || "center", +diff --git a/services/settings/remote-settings.sys.mjs b/services/settings/remote-settings.sys.mjs +index 2330fb01..2c4062d1 100644 +--- a/services/settings/remote-settings.sys.mjs ++++ b/services/settings/remote-settings.sys.mjs +@@ -301,7 +301,7 @@ function remoteSettingsFunction() { + bucketName: bucket, + signerName, + }); +- if (client.verifySignature) { ++ if (client.verifySignature && collection!== "newtab-wallpapers-v2") { + lazy.console.debug( + `${identifier}: Verify signature of bundled changeset` + ); diff --git a/helpers/DATA/firefox/ui_branding/build.json b/helpers/DATA/firefox/ui_branding/build.json new file mode 100644 index 00000000..d51c79df --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/build.json @@ -0,0 +1,72 @@ +{ + "1d43f5a1-64bd-4ad4-b825-88a89878662f": { + "title": "trisquel-abe-01", + "theme": "dark", + "attachment": { + "hash": "962073af456fd63c6fc9b11dadbef724a56b223e04a7136f87e9b670f2b9283d", + "size": 62524, + "filename": "trisquel-abe-01.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-01.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "2bf99683-cde8-438b-9f8e-a1222dc7f59c": { + "title": "trisquel-abe-02", + "theme": "light", + "attachment": { + "hash": "e3363cf5554c98e1243434ee047de9c31ddc3060355a55ce7b3cecd977f379ab", + "size": 72574, + "filename": "trisquel-abe-02.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-02.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "2e468f89-ac6a-474f-a789-5de0be601887": { + "title": "trisquel-abe-03", + "theme": "dark", + "attachment": { + "hash": "3d6687928a6eeee6bd9f52ef2fae115ddfdcf974a832cce2286b37c642c0ede7", + "size": 48020, + "filename": "trisquel-abe-03.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-03.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "429c288c-8d92-4baa-aefb-a04719882454": { + "title": "trisquel-abe-04", + "theme": "light", + "attachment": { + "hash": "f6b225b3f091dd556040028e758d143cbcb4d52d4e43ede3a2a367f44505993f", + "size": 25226, + "filename": "trisquel-abe-04.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-04.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "451090be-cdf1-49fc-b1f3-bd2f3b4ac34d": { + "title": "trisquel-aramo", + "theme": "dark", + "attachment": { + "hash": "8c9ae9eb2063b763c737cd795af0f7b8883b43b2519d455b4097462ba6f4ad70", + "size": 196288, + "filename": "trisquel-aramo.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-aramo.avif", + "mimetype": "image/avif" + } + }, + "62aa72d9-b9f3-4f29-88f5-5120ee004e7c": { + "title": "trisquel-ecne", + "theme": "dark", + "attachment": { + "hash": "6a233237277c7cdc3a1078f250f1ae21576ceedec9d0abbe33be9f93add25355", + "size": 110186, + "filename": "trisquel-ecne.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-ecne.avif", + "mimetype": "image/avif" + } + } +} \ No newline at end of file diff --git a/helpers/DATA/firefox/ui_branding/debranding/assets/puzzle-fox.svg b/helpers/DATA/firefox/ui_branding/debranding/assets/puzzle-fox.svg new file mode 100644 index 00000000..b4ba9bcf --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/assets/puzzle-fox.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/debranding/assets/trisquel_qr.png b/helpers/DATA/firefox/ui_branding/debranding/assets/trisquel_qr.png new file mode 100644 index 00000000..d6e08c71 Binary files /dev/null and b/helpers/DATA/firefox/ui_branding/debranding/assets/trisquel_qr.png differ diff --git a/helpers/DATA/firefox/ui_branding/debranding/content/history-empty.svg b/helpers/DATA/firefox/ui_branding/debranding/content/history-empty.svg new file mode 100644 index 00000000..1c18635f --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/content/history-empty.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-empty.svg b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-empty.svg new file mode 100644 index 00000000..9ba72654 --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-empty.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-error.svg b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-error.svg new file mode 100644 index 00000000..501befcf --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-error.svg @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/fsf.svg b/helpers/DATA/firefox/ui_branding/sidebar/fsf.svg new file mode 100644 index 00000000..3f3bc136 --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/fsf.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/liberachat.svg b/helpers/DATA/firefox/ui_branding/sidebar/liberachat.svg new file mode 100644 index 00000000..c76567fd --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/liberachat.svg @@ -0,0 +1,3 @@ + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/trisquel.svg b/helpers/DATA/firefox/ui_branding/sidebar/trisquel.svg new file mode 100644 index 00000000..43b8b1cc --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/trisquel.svg @@ -0,0 +1,3 @@ + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/wikipedia.svg b/helpers/DATA/firefox/ui_branding/sidebar/wikipedia.svg new file mode 100644 index 00000000..cdfca18f --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/wikipedia.svg @@ -0,0 +1,3 @@ + + + diff --git a/helpers/DATA/firefox/ui_branding/wallpaper-replace.py b/helpers/DATA/firefox/ui_branding/wallpaper-replace.py new file mode 100644 index 00000000..95942438 --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/wallpaper-replace.py @@ -0,0 +1,163 @@ +# 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 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. + +import json +import hashlib +import os +import time +import argparse +import sys + +def calculate_sha256_hash(file_path): + """ + Calculates the SHA-256 hash of a physical file. + """ + sha256_hash = hashlib.sha256() + with open(file_path, "rb") as f: + for byte_block in iter(lambda: f.read(4096), b""): + sha256_hash.update(byte_block) + return sha256_hash.hexdigest() + +def build_step(config_path, output_path): + """ + Step 1: Reads config.json, processes the data, and creates build.json. + """ + print(f"--- Step 1: Building standalone artifact ---") + + if not os.path.exists(config_path): + print(f"ERROR: Configuration file '{config_path}' not found.") + sys.exit(1) + + with open(config_path, 'r', encoding='utf-8') as f: + config = json.load(f) + + build_data = {} + + for item in config.get('replacements',): + item_id = item.get('id_to_replace') + image_path = item.get('local_image_path') + theme = item.get('theme', '').strip() + + if not image_path or not os.path.exists(image_path): + print(f"WARNING: Local image not found at '{image_path}' for ID {item_id}. Skipping.") + continue + + file_size_bytes = os.path.getsize(image_path) + sha256_hash = calculate_sha256_hash(image_path) + + # Get the real file name (e.g., 'trisquel-aramo.webp') + real_file_name = os.path.basename(image_path) + + # Create the "disguised" file name to bypass Mozilla's strict schema validation + disguised_file_name = real_file_name.replace('.webp', '.avif') + + # Create a 100% schema-compliant entry masking the webp as an avif + build_data[item_id] = { + "title": real_file_name.replace('.webp', ''), + "theme": theme, + "attachment": { + "hash": sha256_hash, + "size": file_size_bytes, + "filename": disguised_file_name, + "location": f"main-workspace/newtab-wallpapers-v2/{disguised_file_name}", + "mimetype": "image/avif" # Masking the mime type for the validator + } + } + + # Check if the wallpaper is an "abe" one, to position logo accordingly + if "abe" in real_file_name.lower(): + build_data[item_id]["background_position"] = "bottom right" + + # Make sure dark theme is used on trisquel-ecne & trisquel-aramo images + if "trisquel-ecne" in real_file_name.lower() or "trisquel-aramo" in real_file_name.lower(): + build_data[item_id]["theme"] = "dark" + + print(f"Processed: {real_file_name} -> Masked as: {disguised_file_name} -> ID: {item_id}") + + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(build_data, f, indent=2, ensure_ascii=False) + + print(f"\nSUCCESS: Generated standalone artifact at '{output_path}'.") + +def replace_step(source_path, target_path): + """ + Step 2: Injects the build.json data into the target Firefox JSON database. + """ + print(f"\n--- Step 2: Injecting into target JSON ---") + + if not os.path.exists(source_path): + print(f"ERROR: Build source file '{source_path}' not found.") + sys.exit(1) + + if not os.path.exists(target_path): + print(f"ERROR: Target JSON file '{target_path}' not found.") + sys.exit(1) + + with open(source_path, 'r', encoding='utf-8') as f: + build_data = json.load(f) + + with open(target_path, 'r', encoding='utf-8') as f: + target_db = json.load(f) + + current_timestamp = int(time.time() * 1000) + modified_count = 0 + + for item in target_db.get('data',): + item_id = item.get('id') + + if item_id in build_data: + new_data = build_data[item_id] + + # Wipe old custom keys if they exist from previous tests + item.pop('wallpaperUrl', None) + + # Apply schema-compliant data + item['attachment'] = new_data['attachment'] + item['title'] = new_data['title'] + item['schema'] = current_timestamp + item['last_modified'] = current_timestamp + + if new_data.get('theme'): + item['theme'] = new_data['theme'] + + # Apply background_position if it exists in build_data + if new_data.get('background_position'): + item['background_position'] = new_data['background_position'] + + print(f"Updated ID: {item_id} with file '{new_data['attachment']['filename']}'") + modified_count += 1 + + if modified_count > 0: + target_db['timestamp'] = current_timestamp + with open(target_path, 'w', encoding='utf-8') as f: + json.dump(target_db, f, indent=2, ensure_ascii=False) + print(f"\nSUCCESS: Modified {modified_count} entries in '{target_path}'.") + else: + print("\nWARNING: No matching IDs found in the target JSON to replace.") + +def main(): + parser = argparse.ArgumentParser(description="Firefox Newtab Wallpaper Injection Tool") + parser.add_argument('--config', type=str, nargs='?', const='./config.json', help="Step 1: Path to config.json.") + parser.add_argument('--replace', type=str, help="Step 2: Path to target Firefox JSON file to be modified.") + parser.add_argument('--source', type=str, default='./build.json', help="Step 2: Path to the standalone build.json.") + + args = parser.parse_args() + + if not args.config and not args.replace: + parser.print_help() + sys.exit(1) + + if args.config: build_step(args.config, './build.json') + if args.replace: replace_step(args.source, args.replace) + +if __name__ == "__main__": + main() 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 deleted file mode 100644 index 344d9abd..00000000 --- a/helpers/DATA/inetutils/patch_changes/000-fix_injection_bug_with_bogus_user_names.patch +++ /dev/null @@ -1,34 +0,0 @@ -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 deleted file mode 100644 index 8b4653cf..00000000 --- a/helpers/DATA/inetutils/patch_changes/001-telnetd_sanitize_all_variable_expansions.patch +++ /dev/null @@ -1,78 +0,0 @@ -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/libreoffice/debian-rules_7.3.patch b/helpers/DATA/libreoffice/patch_changes/000-debian-rules_7.3.patch similarity index 100% rename from helpers/DATA/libreoffice/debian-rules_7.3.patch rename to helpers/DATA/libreoffice/patch_changes/000-debian-rules_7.3.patch diff --git a/helpers/DATA/libreoffice/patch_changes/001-disable_tests_pyuno_trisquel.patch b/helpers/DATA/libreoffice/patch_changes/001-disable_tests_pyuno_trisquel.patch new file mode 100644 index 00000000..4dbd438c --- /dev/null +++ b/helpers/DATA/libreoffice/patch_changes/001-disable_tests_pyuno_trisquel.patch @@ -0,0 +1,34 @@ +diff --git a/debian/control b/debian/control +index b0f95119..073ece8e 100644 +--- a/debian/control ++++ b/debian/control +@@ -196,9 +196,7 @@ Build-Depends-Arch: at-spi2-core [amd64 arm64 armhf] , + poppler-data [amd64 arm64 armhf] , + pstoedit [amd64 arm64 armhf] , + python3-lxml [!ppc64el !riscv64 !s390x] , +- python3-pip [!ppc64el !riscv64 !s390x] , + python3-setuptools [!ppc64el !riscv64 !s390x] , +- python3-venv [!ppc64el !riscv64 !s390x] , + qt5-qmake, + qtbase5-dev, + qtbase5-dev-tools, +diff --git a/pyuno/qa/pytests/testimports.py b/pyuno/qa/pytests/testimports.py +index 29b14736..85ed1a53 100644 +--- a/pyuno/qa/pytests/testimports.py ++++ b/pyuno/qa/pytests/testimports.py +@@ -33,6 +33,7 @@ class ImportsTest(unittest.TestCase): + print(str(ssl), file=devnull) + + # tdf#162786: make sure importing pip works on all platforms ++ @unittest.skip("Test disabled on Trisquel") + def test_pip_import(self): + import pip + +@@ -40,6 +41,7 @@ class ImportsTest(unittest.TestCase): + with open(os.devnull, "w") as devnull: + print(str(pip), file=devnull) + ++ @unittest.skip("Test disabled on Trisquel") + def test_venv_import(self): + import venv + diff --git a/helpers/DATA/linux-hwe-6.8/000-silent-accept-firmware.patch b/helpers/DATA/linux-hwe-6.8/000-silent-accept-firmware.patch index d0c1e834..8c0ac4a0 100644 --- a/helpers/DATA/linux-hwe-6.8/000-silent-accept-firmware.patch +++ b/helpers/DATA/linux-hwe-6.8/000-silent-accept-firmware.patch @@ -158,19 +158,20 @@ diff --color -Nru a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/am } /* SMC */ -diff --color -Nru a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 2023-03-09 11:48:45.000000000 -0600 -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 2023-03-09 19:35:41.949114270 -0600 -@@ -627,8 +627,7 @@ - */ +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +index 6ac35313..932e5d49 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +@@ -676,8 +676,7 @@ psp_cmd_submit_buf(struct psp_context *psp, if (!skip_unsupport && (psp->cmd_buf_mem->resp.status || !timeout) && !ras_intr) { if (ucode) -- DRM_WARN("failed to load ucode %s(0x%X) ", -- amdgpu_ucode_name(ucode->ucode_id), ucode->ucode_id); -+ DRM_WARN("failed to load ucode"); - DRM_WARN("psp gfx command %s(0x%X) failed and response status is (0x%X)\n", + dev_warn(psp->adev->dev, +- "failed to load ucode %s(0x%X) ", +- amdgpu_ucode_name(ucode->ucode_id), ucode->ucode_id); ++ "failed to load ucode"); + dev_warn(psp->adev->dev, + "psp gfx command %s(0x%X) failed and response status is (0x%X)\n", psp_gfx_cmd_name(psp->cmd_buf_mem->cmd_id), psp->cmd_buf_mem->cmd_id, - psp->cmd_buf_mem->resp.status); diff --color -Nru a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c 2022-07-31 16:03:01.000000000 -0500 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c 2023-03-09 19:38:05.801817530 -0600 @@ -1503,16 +1504,19 @@ diff --color -Nru a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c b/driver err = request_firmware_nowait(THIS_MODULE, 1, wowlan_fw_name, rtlpriv->io.dev, GFP_KERNEL, hw, -diff -Nru --color a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 2023-03-13 07:14:05.000000000 +0000 -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 2023-03-13 07:46:23.778827386 +0000 -@@ -223,8 +223,7 @@ - - r = request_firmware(&fw, fw_name, adev->dev); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +index 36d0deef..5f03247f 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +@@ -289,9 +289,9 @@ static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev, + r = firmware_request_nowarn(&fw, fw_name, adev->dev); if (r) { -- dev_err(adev->dev, "can't load firmware \"%s\"\n", -- fw_name); -+ dev_err(adev->dev, "can't load firmware\n"); + if (amdgpu_discovery == 2) +- dev_err(adev->dev, "can't load firmware \"%s\"\n", fw_name); ++ dev_err(adev->dev, "can't load firmware\n"); + else +- drm_info(&adev->ddev, "Optional firmware \"%s\" was not found\n", fw_name); ++ drm_info(&adev->ddev, "Optional firmware was not found\n"); return r; } 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 fd94aa22..0f5fd2b7 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 @@ -24,7 +24,7 @@ diff --git a/l10n/cs/mail/messenger/preferences/preferences.ftl b/l10n/cs/mail/m index 67947ec7..ca2c1194 100644 --- a/l10n/cs/mail/messenger/preferences/preferences.ftl +++ b/l10n/cs/mail/messenger/preferences/preferences.ftl -@@ -895,12 +895,12 @@ sync-disconnected-turn-on-sync = Zapnout synchronizaci… +@@ -1054,12 +1054,12 @@ sync-disconnected-turn-on-sync = Zapnout synchronizaci… ## Mobile QR Export Pane @@ -33,9 +33,9 @@ index 67947ec7..ca2c1194 100644 qr-export-description = Rychle přeneste nastavení účtu z počítače do mobilu vygenerováním QR kódu. Vyberte, které účty chcete zahrnout, rozhodněte, zda chcete přenést heslo, a naskenujte kód pomocí mobilního zařízení. Rychlé, bezpečné a jednoduché. qr-export-get-app = Ještě nemáte { -brand-product-name } v mobilu? Stáhněte si ji z Google Play qr-export-create = Vytvoření QR kódu pro export účtů - qr-export-select-accounts = Vyberte, které účty chcete exportovat: + qr-export-select-accounts = Vyberte, které účty se mají exportovat: -qr-export-no-accounts = Nevidíte všechny své účty? Některé účty mohou být zakázány, protože je { -brand-product-name } pro Android nepodporuje. Podpora -+qr-export-no-accounts = Nevidíte všechny své účty? Některé účty mohou být zakázány, protože je pro Android nepodporuje. Podpora ++qr-export-no-accounts = Nevidíte všechny své účty? Některé účty mohou být zakázány, protože je pro Android nepodporuje. Podpora qr-export-accounts-legend = E-mailové účty qr-export-select-all-accounts = Vybrat vše qr-export-security-legend = Zabezpečení 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 deleted file mode 100644 index 895c8f1a..00000000 --- a/helpers/DATA/yt-dlp/patch_changes/002-make_cookies_parsing_more_lentient_on_python3.12.patch +++ /dev/null @@ -1,35 +0,0 @@ -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/make-apt-mirror b/helpers/make-apt-mirror index 5962b05f..0ed99347 100644 --- a/helpers/make-apt-mirror +++ b/helpers/make-apt-mirror @@ -18,12 +18,12 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=5 +VERSION=6 . ./config # Set version number due to source origin change -export FULLVERSION="$(sed 's|ubuntu0.22.04.1||' <<< $FULLVERSION)" +export FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" cp $DATA/Trisquel-mirror.list debian/ @@ -54,7 +54,6 @@ index e9c85e9..b6c1c97 100755 EOF changelog "Added config and update manpage for Trisquel." -head -n1 debian/changelog | grep -q ubuntu && echo "error: update upstream version" && exit package diff --git a/helpers/make-devscripts b/helpers/make-devscripts index e907dc8b..acf2310f 100644 --- a/helpers/make-devscripts +++ b/helpers/make-devscripts @@ -18,7 +18,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=2 +VERSION=3 . ./config @@ -26,7 +26,6 @@ VERSION=2 sed -i 's|UbuntuDistroInfo|TrisquelDistroInfo|' scripts/debchange.pl #Prevent debian test failing. -sed -i '/verifyGuessedDistribution/s|buster-backports|bookworm-backports|g' test/test_debchange rm scripts/devscripts/test/test_flake8.py changelog "Make use of TrisquelDistroInfo from distro-info package." diff --git a/helpers/make-expat b/helpers/make-expat index 711f5341..4ed5023c 100644 --- a/helpers/make-expat +++ b/helpers/make-expat @@ -23,15 +23,14 @@ # such packages from Debian in order to build the required udeb packages. ## -VERSION=5 +VERSION=6 NETINST=true . ./config #FIXME:T12 # Set version number due to source origin change -export FULLVERSION="$(sed 's|ubuntu0.6||' <<< $FULLVERSION)" +export FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" changelog "Fetch and build as udeb dependency for debian-installer." -head -n1 debian/changelog | grep -q ubuntu && echo "> error: update upstream version" && exit package diff --git a/helpers/make-extra-cmake-modules b/helpers/make-extra-cmake-modules deleted file mode 100644 index d770f93b..00000000 --- a/helpers/make-extra-cmake-modules +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2024 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 -EXTERNAL='deb-src http://ppa.launchpad.net/nextcloud-devs/client/ubuntu $UPSTREAM main' -REPOKEY="60EE47FBAD3DD469" -BACKPORT=true - -. ./config - - -changelog "Added as a dependency for nextcloud-desktop backport" - -package diff --git a/helpers/make-firefox b/helpers/make-firefox index 49c42426..6440b799 100644 --- a/helpers/make-firefox +++ b/helpers/make-firefox @@ -2,7 +2,7 @@ # # Copyright (C) 2008-2023 Ruben Rodriguez # Copyright (C) 2015 Santiago Rodriguez -# 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 @@ -19,12 +19,13 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=129 +VERSION=132 EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main' REPOKEY=AEBDF4819BE21867 . ./config +MAIN_REBRANDING_ENABLED=1 # SHA256 HASHES UPDATES GLEAN_CONF_RS_INITIAL=$(sha256sum third_party/rust/glean/src/configuration.rs|awk '{print$1}') # GNUZILLA ADDON REPLACEMENT @@ -274,6 +275,26 @@ do /bin/sed -i 's|= Firefox |= |' $i done +# Replace sidebar icons +rm -rf browser/themes/shared/sidebar +cp -R $DATA/ui_branding/sidebar browser/themes/shared/ + +python3 $DATA/ui_branding/wallpaper-replace.py --source $DATA/ui_branding/build.json \ + --replace services/settings/dumps/main/newtab-wallpapers-v2.json + +# Graphic Debranding +cp $DATA/ui_branding/debranding/assets/puzzle-fox.svg browser/extensions/newtab/data/content/assets/puzzle-fox.svg +## replace multiple firefox qr codes. +for qr in download-qr-code-var-a.png download-qr-code-var-b.png download-qr-code-var-c.png +do + cp $DATA/ui_branding/debranding/assets/trisquel_qr.png browser/extensions/newtab/data/content/assets/$qr +done +## Remove mascot +for graph in history-empty.svg synced-tabs-empty.svg synced-tabs-error.svg +do + cp $DATA/ui_branding/debranding/content/$graph browser/components/firefoxview/content/$graph +done + # Disable preprocessor sed 's/_PP//' -i browser/branding/branding-common.mozbuild #Prevent duplicated values. @@ -287,6 +308,7 @@ MOZ_ENABLE_BREAKPAD = 0 MOZ_ENABLE_TELEMETRY = 0 EOF +main_rebranding() { SEDSCRIPT=" s|Updates from { -vendor-short-name } and { -brand-product-name }|Updates from { -vendor-short-name }|; s/Try Firefox/Try Abrowser/g; @@ -322,8 +344,11 @@ find l10n -type f -not -iregex '.*changelog.*' \ sed 's/Firefox/Abrowser/' -i debian/control.in \ browser/locales/en-US/chrome/overrides/appstrings.properties +} +# Useful when trying to catch patch issues faster. +[ "$MAIN_REBRANDING_ENABLED" = 1 ] && main_rebranding -sed s/ubuntu/trisquel/g debian/distribution.ini -i +sed "s/ubuntu/trisquel/g" -i debian/distribution.ini sed "s/ubuntu_version/trisquel_version/; s/Ubuntu 10.10/Trisquel $REVISION/; s/1010/40/" -i debian/firefox.postinst.in # Delete stuff we don't use and that may contain trademaked logos diff --git a/helpers/make-gnome-user-docs b/helpers/make-gnome-user-docs index 2863796f..acca1535 100644 --- a/helpers/make-gnome-user-docs +++ b/helpers/make-gnome-user-docs @@ -1,6 +1,7 @@ #!/bin/sh # # Copyright (C) 2020 Rubén Rodríguez +# Copyright (C) 2026 Denis 'GNUtoo' Carikli # # 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,15 +18,20 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=2 +VERSION=3 COMPONENT=main . ./config sed '/ubuntu-docs/d' -i debian/control* + +# Ubuntu overrides all the files defined in the DO_NOT_INSTALL +# variable by deleting them. Since we don't use ubuntu-docs, we do +# want these files. +sed '/rm \$(DO_NOT_INSTALL); \\/d' -i debian/rules + touch AUTHORS changelog "Removed ubuntu-docs dependency" package - diff --git a/helpers/make-inetutils b/helpers/make-inetutils index f21bbe47..a1517bde 100644 --- a/helpers/make-inetutils +++ b/helpers/make-inetutils @@ -17,6 +17,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # +BUILD_UNTIL=11.0 VERSION=0 . ./config @@ -25,8 +26,9 @@ VERSION=0 # 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 +# Remove patch now applied upstream -changelog "Apply security patches to mitigate known issues proactively; telnetd is not recommended: avoid in production." +changelog "Restore build to upstream changes +Apply security patches to mitigate known issues proactively; telnetd is not recommended: avoid in production." package diff --git a/helpers/make-kf6-karchive b/helpers/make-kdsingleapplication similarity index 66% rename from helpers/make-kf6-karchive rename to helpers/make-kdsingleapplication index d770f93b..854890c0 100644 --- a/helpers/make-kf6-karchive +++ b/helpers/make-kdsingleapplication @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2024 Luis Guzmán +# 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 @@ -12,10 +12,6 @@ # 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://ppa.launchpad.net/nextcloud-devs/client/ubuntu $UPSTREAM main' @@ -24,7 +20,11 @@ BACKPORT=true . ./config +#sed -i "s|Utility|Network|" mirall.desktop.in -changelog "Added as a dependency for nextcloud-desktop backport" +#Prevent ppc64el arch since qtwebengine is not build for ppc64el. +sed -i 's|Architecture: any|Architecture: amd64 arm64 armhf i386 mips64el mipsel|g' debian/control + +changelog "Backported into Trisquel as nextcloud-desktop client dependency" package diff --git a/helpers/make-libreoffice b/helpers/make-libreoffice index dfa401b0..a49c883f 100644 --- a/helpers/make-libreoffice +++ b/helpers/make-libreoffice @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2023 Luis Guzmán +# 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 @@ -17,18 +17,19 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=4 +VERSION=6 EXTERNAL='deb-src http://ppa.launchpad.net/libreoffice/ppa/ubuntu $UPSTREAM main' REPOKEY="83FBA1751378B444" BACKPORT=true . ./config -patch --no-backup-if-mismatch -p1 < $DATA/debian-rules_7.3.patch +apply_patch_changes # Increase CPU usage for amd64 build. sed -i "/NUM_CPUS=/s|3|7|" debian/rules -changelog "Backport libreoffice fresh into Trisquel" +changelog "Disabled python-pip/venv tests for Trisquel +Backport libreoffice fresh into Trisquel" package diff --git a/helpers/make-linux-hwe-6.8 b/helpers/make-linux-hwe-6.8 index c6d62a08..96a4dfe1 100644 --- a/helpers/make-linux-hwe-6.8 +++ b/helpers/make-linux-hwe-6.8 @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2025 Luis Guzman +# Copyright (C) 2026 Luis Guzman # Copyright (C) 2008-2023 Ruben Rodriguez # Copyright (C) 2019 David Trudgian # @@ -19,7 +19,10 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=34 +# Advice: fixes to 000-silent-accept-firmware.patch could speed up by testing changes +# disabling deblob in order to apply changes. + +VERSION=35 HWEKR=6.8 DI_ENABLED=1 HWE_ENABLED=1 diff --git a/helpers/make-mate-user-admin b/helpers/make-mate-user-admin index b86424fd..2df890c9 100644 --- a/helpers/make-mate-user-admin +++ b/helpers/make-mate-user-admin @@ -17,13 +17,13 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=3 +VERSION=4 EXTERNAL='deb-src http://archive.ubuntu.com/ubuntu noble universe' . ./config # Set version number due to source origin change -export FULLVERSION="$(sed 's|build3||' <<< $FULLVERSION)" +FULLVERSION=$(sed -E 's/^(.*)build([0-9]+)(\+.*)$/\1\3~build\2/' <<< $FULLVERSION) # Add cracklib-runtime dependency to debian/control apply_patch_changes @@ -31,6 +31,4 @@ apply_patch_changes changelog "Added cracklib-runtime dependency. Added custom implementation to use adduser regex for user creation" -head -n1 debian/changelog | grep -q build && echo "error: update upstream version" && exit - package diff --git a/helpers/make-nano b/helpers/make-nano index 61875840..4776206e 100644 --- a/helpers/make-nano +++ b/helpers/make-nano @@ -23,15 +23,14 @@ # or fetch such packages from Debian in order to build the required udeb packages. ## -VERSION=1 +VERSION=2 NETINST=true . ./config # Set version number due to source origin change -export FULLVERSION="$(sed 's|ubuntu0.1||' <<< $FULLVERSION)" +export FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" changelog "Fetch and build as udeb dependency for debian-installer." -head -n1 debian/changelog | grep -q ubuntu && echo "error: update upstream version" && exit changelog "Rebuild upstream to get udeb dependency for debian-installer." package diff --git a/helpers/make-ncurses b/helpers/make-ncurses index 7f494e08..2a0fe91c 100644 --- a/helpers/make-ncurses +++ b/helpers/make-ncurses @@ -23,19 +23,18 @@ # such packages from Debian in order to build the required udeb packages. ## -VERSION=2 +VERSION=3 NETINST=true BUILD_UNTIL=11.0 . ./config #FIXME:T12 # Set version number due to source origin change -export FULLVERSION="$(sed 's|ubuntu0.1||' <<< $FULLVERSION)" +FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" # Apply Debian#1035621: ncurses: FTBFS: dh_autoreconf error on various architectures patch --no-backup-if-mismatch -p1 < $DATA/bbd46b3955647bf401325951d9f31db054e8d889.patch changelog "Rebuild as udeb dependency for debian-installer and patch dh_autoreconf." -head -n1 debian/changelog | grep -q ubuntu && echo "error: update upstream version" && exit package diff --git a/helpers/make-openssh b/helpers/make-openssh index e914e1ad..b9baf347 100644 --- a/helpers/make-openssh +++ b/helpers/make-openssh @@ -17,20 +17,19 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=9 +VERSION=10 NETINST=true . ./config #FIXME:T12 # Set version number due to source origin change -export FULLVERSION="$(sed 's|ubuntu0.13||' <<< $FULLVERSION)" +FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" sed 's:Ubuntu:Trisquel\ GNU/Linux:g' -i debian/rules sed "s|^SSH_EXTRAVERSION.*|SSH_EXTRAVERSION := Trisquel_GNU/Linux_$REVISION-$VERSION|" -i debian/rules changelog "Rebranded for Trisquel" -head -n1 debian/changelog | grep -q ubuntu && echo "error: update upstream version" && exit package diff --git a/helpers/make-pkg-kde-tools b/helpers/make-pkg-kde-tools deleted file mode 100644 index 68a08f70..00000000 --- a/helpers/make-pkg-kde-tools +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2024 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=3 -EXTERNAL='deb-src http://ppa.launchpad.net/nextcloud-devs/client/ubuntu $UPSTREAM main' -REPOKEY="60EE47FBAD3DD469" -BACKPORT=true - -. ./config - -# Add trisquel as maintainer to pass checks on custom packages. -patch_p1 $DATA/000_add_trisquel_maintainer.patch - -changelog "Upgrade backport as a dependency for nextcloud-desktop" - -package diff --git a/helpers/make-python-apt b/helpers/make-python-apt index c53eae27..14f628f9 100644 --- a/helpers/make-python-apt +++ b/helpers/make-python-apt @@ -23,14 +23,14 @@ # a new release of the 'debian-installer' also ships the latest mirror # list available on the resulting netinstall (mini.iso) image. -VERSION=11 +VERSION=13 COMPONENT=main #Be aware to not pull/build before publish date on T12. . ./config # Fix version number due to early release. -export FULLVERSION="$(sed 's|ubuntu4||' <<< $FULLVERSION)" +FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" # Use git Mirrors.masterlist as source. Mirrors_masterlist=$(mktemp) @@ -92,7 +92,6 @@ EOF export DEB_BUILD_OPTIONS=nocheck changelog "Compiled for Trisquel" -head -n1 debian/changelog | grep -q ubuntu && echo "error: update FULLVERSION value" && exit package diff --git a/helpers/make-screen b/helpers/make-screen index 49ec864c..0c726cc2 100644 --- a/helpers/make-screen +++ b/helpers/make-screen @@ -23,10 +23,12 @@ # or fetch such packages from Debian in order to build the required udeb packages. ## -VERSION=0 +VERSION=1 NETINST=true . ./config +# Fix version number due to early release. +FULLVERSION="$(sed -E 's/^(.*)ubuntu([^+]+)(\+.*)$/\1\3~ubuntu\2/' <<< $FULLVERSION)" changelog "Rebuild upstream to get udeb dependency for debian-installer." package diff --git a/helpers/make-thunderbird b/helpers/make-thunderbird index dd439c1e..cd15d0a5 100644 --- a/helpers/make-thunderbird +++ b/helpers/make-thunderbird @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (C) 2025 Luis Guzmán +# Copyright (C) 2026 Luis Guzmán # Copyright (C) 2020 Ruben Rodriguez # Copyright (C) 2019 David Trudgian # @@ -19,12 +19,14 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=26 -EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main' +VERSION=27 +#EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main' +EXTERNAL='deb-src http://ppa.si-n.cc/mozillateam/ubuntu/ppa/ $UPSTREAM main' REPOKEY=AEBDF4819BE21867 . ./config +MAIN_REBRANDING_ENABLED=1 # Get initial SHA256 hashes. SHA256_F9=$(sha256sum comm/third_party/rust/glean/src/configuration.rs|awk '{print$1}') @@ -188,6 +190,7 @@ MOZ_WANT_UNIT_TESTS = 0 MOZ_ENABLE_BREAKPAD = 0 EOF +main_rebranding() { # Replace Thunderbird branding find -type d -name '*thunderbird*' | xargs rename s/thunderbird/icedove/ find -type f -name '*thunderbird*' | xargs rename s/thunderbird/icedove/ @@ -247,8 +250,8 @@ 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://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 \ @@ -362,6 +365,10 @@ cat << EOF > comm/mail/branding/nightly/locales/en-US/brand.dtd EOF +} + +# Useful when trying to catch patch issues faster, careful with mixed branding issues. +[ "$MAIN_REBRANDING_ENABLED" = 1 ] && main_rebranding debian/rules debian/control touch -d "yesterday" debian/control diff --git a/helpers/make-yt-dlp b/helpers/make-yt-dlp index 02b9bd6e..4b74cd92 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=3 +VERSION=4 EXTERNAL='deb-src http://deb.debian.org/debian sid main' REPOKEY=6ED0E7B82643E131 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 +! grep -q "Priority:" debian/control && sed -i '/Section:/a Priority: optional' debian/control + apply_patch_changes changelog "Track latest release and remove explicit site listing, redirecting to website author."