Subject: bug#79355: [PATCH v2] Update to 140.2.0-1.

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 03 Sep 2025 23:14:42 +0900

Hey Mark!

Thanks for your reactivity!

Mark H Weaver <[email-masked]> writes:

[...]

>> * makeicecat: Update FFMINOR and SOURCEBALL_CHECKSUM.
>> Update patching for moved files on no longer existing patterns.
>> Do not set MOZ_APP_VENDOR/MOZ_APP_UA_NAME/MOZ_APP_PROFILE, as confvars, which now
>> fails the build. Delete no obsolete variables, or those already set to
>> the correct value in browser/moz.configure.
>> Do not patch (and break) translation data.
>> * data/patches/hide-firefox-view-button.patch: Update patch.
>> * data/patches/hide-submit-feedback-menu-item.patch: Likewise.
>> * data/patches/icecat-about-dialog.patch: Likewise.
>> * data/patches/moz-configure-changes.patch: Likewise. Set
>> MOZILLA_OFFICIAL to False by default, which disables telemetry.
>
> Interesting observation about telemetry!  Can you please cite a
> reference for this claim, or else tell us how you came to know it?

I spent quite some time grepping the firefox source, and I randomly
found that odd relationship. In Telemetry.cpp, there's:

--8<---------------cut here---------------start------------->8---
// This function was copied from the implementation of
// nsITelemetry::isOfficialTelemetry, currently found in the file
// toolkit/components/telemetry/core/Telemetry.cpp.
static bool IsOfficialTelemetry() {
#if defined(MOZILLA_OFFICIAL) && defined(MOZ_TELEMETRY_REPORTING) && \
    !defined(DEBUG)
  return true;
#else
  return false;
#endif
}

[...]

  // Do not send the ping if we are not an official telemetry-enabled build;
  // don't even generate the ping in fact, because if we write the file out
  // then some other build might find it later and decide to submit it.
  if (!IsOfficialTelemetry() || IsTelemetryDisabled()) {
    return MaybeCache(cache, notificationType, notificationShown,
                      notificationAction, prevNotificationAction);
  }
--8<---------------cut here---------------end--------------->8---

[...]

>> +--- a/browser/base/content/aboutDialog.css	2025-08-26 21:26:43.618669160 +0900
>> ++++ b/browser/base/content/aboutDialog.css	2025-08-26 21:31:54.207067616 +0900
>> +@@ -32,10 +32,9 @@
>>   #rightBox {
>>     background-image: url("chrome://branding/content/about-wordmark.svg");
>>     background-repeat: no-repeat;
>> @@ -19,6 +19,9 @@
>>     padding-top: 38px;
>>  -  margin-top: 20px;
>>  +  margin-top: 60px;
>> - }
>> - 
>> +   /* We don't want this box to contribute arbitrarily to the intrinsic size of
>> +    * the dialog, so set the width to a reasonable size, but let it flex to take
>> +    * all available space. */
>> +--- a/browser/base/content/aboutDialog.css
>> ++++ b/browser/base/content/aboutDialog.css
>>   #rightBox:-moz-locale-dir(rtl) {
>
> The three lines above, which are the last three lines of
> 'data/patches/icecat-about-dialog.patch' after your patch is applied,
> are vestigial and should be dropped.

These lines are part of the context (from recent commit 0da0a471026ca),
so I'm not sure what is the suggestion here.

[...]

> It's a minor point, but I'd prefer to name this patch
> "fix-install.patch" without the "icecat-" prefix.

Done.

>>  --- a/browser/moz.configure
>>  +++ b/browser/moz.configure
>> -@@ -5,11 +5,11 @@
>> +@@ -5,16 +5,17 @@
>>   # file, You can obtain one at http://mozilla.org/MPL/2.0/.
>>   
>>   imply_option("MOZ_PLACES", True)
>>  -imply_option("MOZ_SERVICES_HEALTHREPORT", True)
>> -+imply_option("MOZ_SERVICES_HEALTHREPORT", False)
>> - imply_option("MOZ_SERVICES_SYNC", True)
>> +-imply_option("MOZ_SERVICES_SYNC", True)
>>  -imply_option("MOZ_DEDICATED_PROFILES", True)
>>  -imply_option("MOZ_BLOCK_PROFILE_DOWNGRADE", True)
>>  -imply_option("MOZ_NORMANDY", True)
>> ++imply_option("MOZ_SERVICES_HEALTHREPORT", False)
>> ++imply_option("MOZ_SERVICES_SYNC", False)
>>  +imply_option("MOZ_DEDICATED_PROFILES", False)
>>  +imply_option("MOZ_BLOCK_PROFILE_DOWNGRADE", False)
>>  +imply_option("MOZ_NORMANDY", False)
>> + imply_option("MOZ_PROFILE_MIGRATOR", True)
>> + 
>> + 
>> +-imply_option("MOZ_APP_VENDOR", "Mozilla")
>> ++imply_option("MOZ_APP_VENDOR", "GNU")
>> + imply_option("MOZ_APP_ID", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}")
>> ++imply_option("MOZ_APP_PROFILE", "mozilla/icecat")
>> + # Include the DevTools client, not just the server (which is the default)
>> + imply_option("MOZ_DEVTOOLS", "all")
>> + imply_option("BROWSER_CHROME_URL", "chrome://browser/content/browser.xhtml")
>
> I suggest adding the line:
>
>    imply_option("MOZ_APP_UA_NAME", "Firefox")
>
> to 'browser/moz.configure' above, to compensate for the fact that the
> MOZ_APP_UA_NAME option had to be removed from 'browser/confvars.sh' (via
> the code in 'makeicecat').

This doesn't seem to be necessary; testing 140.2 my useragent is
currently:

--8<---------------cut here---------------start------------->8---
Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
--8<---------------cut here---------------end--------------->8---

According to code in nsHttpHandler.cpp, a fallback is used when it's not
set:

--8<---------------cut here---------------start------------->8---
  mAppName.AssignLiteral(MOZ_APP_UA_NAME);
  if (mAppName.Length() == 0 && appInfo) {
    // Try to get the UA name from appInfo, falling back to the name
    appInfo->GetUAName(mAppName);
    if (mAppName.Length() == 0) {
      appInfo->GetName(mAppName);
    }
    appInfo->GetVersion(mAppVersion);
    mAppName.StripChars(R"( ()<>@,;:\"/[]?={})");
  } else {
    mAppVersion.AssignLiteral(MOZ_APP_UA_VERSION);
  }
--8<---------------cut here---------------end--------------->8---

>
>> diff --git a/makeicecat b/makeicecat
>> index fc0bb76..85ca5c6 100755
>> --- a/makeicecat
>> +++ b/makeicecat
>> @@ -21,12 +21,13 @@
>>  
>>  
>>  # metadata
>> -readonly FFMAJOR=128
>> -readonly FFMINOR=14
>> +readonly FFMAJOR=140
>> +readonly FFMINOR=2
>>  readonly FFSUB=0
>>  readonly FFBUILD=1
>>  readonly GNUVERSION=1
>> -readonly SOURCEBALL_CHECKSUM='93b9ef6229f41cb22ff109b95bbf61a78395a0fe4b870192eeca22947cb09a53'
>> +# SHA-256
>
> I'd prefer to drop the "# SHA-256" comment.  It's trivial enough to find
> this out by grepping for SOURCEBALL_CHECKSUM in the script.

The purpose of the comment was to tell the reader *which* checksum type
is used here. Maybe be obvious for some, but I had to check.

>> +readonly SOURCEBALL_CHECKSUM='956dce675c3b706d563caf07ed3ca9af632ab830be710dfd4351da78a0a2ef55'
>>  readonly SOURCEBALL_SIGNINGKEY='14F26682D0916CDD81E37B6D61B7B526D98F0353'
>>  readonly FFVERSION=${FFMAJOR}.${FFMINOR}.${FFSUB}
>>  readonly SOURCEBALL=firefox-${FFVERSION}esr.source.tar.xz
>> @@ -41,7 +42,7 @@ readonly LIST_URL=lists.gnu.org/mailman/listinfo/bug-gnuzilla
>>  
>>  # l10n
>>  readonly L10N_URL=https://github.com/mozilla-l10n/firefox-l10n
>> -readonly L10N_REV=fcd0300e8478d1ec4d1c097a073ddb8e1e0351e3
>> +readonly L10N_REV=4846304555affc92db4c693149c0f1c59afc7828
>
> I prefer to set L10N_REV to the commit specified in
> 'browser/locales/l10n-changesets.json', which in the case of 140.2 is
> a0c1ffda4ed19c0399e4175610361179e09829de.

Good catch! Adjusted.

>> @@ -541,7 +541,6 @@ configure_mobile()
>>  
>>      cat << EOF >> mobile/android/confvars.sh
>>  # IceCat settings
>> -MOZ_APP_VENDOR=GNU
>>  MOZ_APP_VERSION=${FFVERSION}
>>  MOZ_PAY=0
>>  MOZ_SERVICES_HEALTHREPORT=0
>
> Did you intend to make this change to the Android configuration?  Note
> that our Android support has fallen into disrepair, and is not currently
> functional.

Yeah, it's not used right now, but if someone tried, it fail, so it's
better to remove it.

>> @@ -606,15 +605,6 @@ apply_branding()
>>  
>>      # Custom legal about pages
>>      find l10n -wholename '*/brand.ftl' | xargs /bin/sed
>> 's/^trademarkInfo = .*/trademarkInfo = The IceCat logo is Copyright
>> 2008-2015 Free Software Foundation, released under the terms of the
>> GNU Lesser General Public License, version 3 or any later version./'
>> -i
>> -    local string
>> - for string in rights-intro-point-2 rights-intro-point-3
>> rights-intro-point-4 rights-intro-point-5 rights-intro-point-6
>> rights-webservices rights-safebrowsing
>> -    do
>> -        find -name aboutRights.ftl | xargs sed -i "s/^${string}.*/${string} = /"
>> -    done
>> -    for string in helpus community-2 community-exp
>> -    do
>> -        find -wholename '*/browser/aboutDialog.ftl' | xargs sed -i "s/^${string}.*/${string} = /"
>> -    done
>>      cp "${DATADIR}"/aboutRights.xhtml toolkit/content/aboutRights.xhtml
>>      cp "${DATADIR}"/aboutRights.xhtml toolkit/content/aboutRights-unbranded.xhtml
>>      sed -i 's|<a href="http://www\.mozilla\.org/">Mozilla
>> Project</a>|<a href="http://www.gnu.org/">GNU Project</a>|g'
>> browser/base/content/overrides/app-license.html
>
> Are you sure that the code above is no longer appropriate?  I see files
> named 'aboutRights.ftl' in l10n that still contain bindings for
> 'rights-intro-point-*', and therefore at least the first loop above
> still seems to be relevant.

I think the above code above was only clearing the last 3 keys (helpus,
comMnity-2, community-exp) with empty values, which is no longer valid
and broke the fluent parser (localization tool)

These values left unpatched are thus:

--8<---------------cut here---------------start------------->8---
community-exp = <label data-l10n-name="community-exp-mozillaLink">{ -vendor-short-name }</label> is a <label data-l10n-name="community-exp-creditsLink">global community</label> working together to keep the Web open, public and accessible to all.

community-2 = { -brand-short-name } is designed by <label data-l10n-name="community-mozillaLink">{ -vendor-short-name }</label>, a <label data-l10n-name="community-creditsLink">global community</label> working together to keep the Web open, public and accessible to all.

helpus = Want to help? <label data-l10n-name="helpus-donateLink">Make a donation</label> or <label data-l10n-name="helpus-getInvolvedLink">get involved!</label>
--8<---------------cut here---------------end--------------->8---

Which doesn't look too critical to my eye.

>> @@ -713,27 +703,18 @@ s/OpenSource/Free Software/g;
>>      # Ditto for browser/modules/moz.build
>>      sort_inner_list_in_file "EXTRA_JS_MODULES += [" "]" browser/modules/moz.build
>>  
>> +    # Adjust the capitalization of IceCat to match the expected symbol
>> +    # names in build-time generated source files like TelemetryEventEnums.h.
>> +    sed 's/IceCatview/Icecatview/g' -i browser/components/icecatview/metrics.yaml
>> +
>
> Hmm.  Do you know where the "Icecatview" is originating from?  Is there
> some code that changes all but the first letter of that identifier to
> lowercase?

I think it comes from the scripts under
toolkit/components/telemetry/build_scripts/gen_*.py, but I can't find
where the capital casing code is anymore.

>
>>      # Copy js settings
>>      cat "${DATADIR}"/settings.js >> browser/app/profile/icecat.js
>>  
>>      cat << EOF >> browser/confvars.sh
>>  # IceCat settings
>>  MOZ_APP_BASENAME=IceCat
>> -MOZ_APP_UA_NAME=Firefox
>> -MOZ_APP_VENDOR=GNU
>>  MOZ_APP_VERSION=${FFVERSION}
>> -MOZ_APP_PROFILE=mozilla/icecat
>> -MOZ_PAY=0
>> -MOZ_SERVICES_HEALTHREPORT=0
>> -MOZ_SERVICES_HEALTHREPORTER=0
>> -MOZ_SERVICES_FXACCOUNTS=0
>> -MOZ_SERVICES_METRICS=0
>>  MOZ_DATA_REPORTING=0
>> -MOZ_NORMANDY=0
>> -MOZ_SERVICES_SYNC=0
>> -MOZ_DEVICES=0
>> -MOZ_ANDROID_GOOGLE_PLAY_SERVICES=0
>> -MOZ_ADDON_SIGNING=0
>>  EOF
>>  }
>
> In the code above, what is the rationale for removing the settings for
> MOZ_PAY=0, MOZ_SERVICES_HEALTHREPORTER=0, MOZ_SERVICES_FXACCOUNTS=0,
> MOZ_SERVICES_METRICS=0, MOZ_DEVICES=0,
> MOZ_ANDROID_GOOGLE_PLAY_SERVICES=0, and MOZ_ADDON_SIGNING=0?

None of these outside MOZ_SERVICES_HEALTHREPORTER are still in use,
according to 'git grep' on Firefox's source.

++imply_option("MOZ_SERVICES_HEALTHREPORT", False) is now in the
'moz-configure-changes.patch'

There are two things that are currently broken in IceCat 140.2 based on
limited testing:

1. Contextual menu on right click has empty lines (sounds deja-vu? what was the past
resolution?)

2. The parameters page is borked. I have no idea what needs fixing.

I'd appreciate your help for the above two points.

-- 
Thanks,
Maxim