firefox-52 套件實例

  1. 緣由:firefox v45 某些網頁無法瀏覽。
  2. 下載 SRPM 套件
    [dywang@dyw219 ~]$ cd rpmbuild
    [dywang@dyw219 rpmbuild]$ wget http://vault.centos.org/centos/6.9/updates/\
    Source/SPackages/firefox-52.6.0-1.el6.centos.src.rpm
    
  3. 安裝 SRPM 套件
    [dywang@dyw219 rpmbuild]$ rpm -ivh firefox-52.6.0-1.el6.centos.src.rpm 
    warning: firefox-52.6.0-1.el6.centos.src.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
       1:firefox                ########################################### [100%]
    
  4. 查看安裝的所有檔案。
    [dywang@dyw219 SOURCES]$ rpm -qpl ../firefox-52.6.0-1.el6.centos.src.rpm 
    warning: ../firefox-52.6.0-1.el6.centos.src.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Python-2.7.8.tgz
    build-icu-big-endian.patch
    build-missing-getrandom.patch
    build-nss-prbool.patch
    build-nss-version.patch
    build-s390-atomic.patch
    build-s390-missing-include.patch
    devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm
    ff52-pseudoelement-crash.patch
    find-external-requires
    firefox-52.6.0esr.source.tar.xz
    firefox-centos-default-prefs.js
    firefox-default.patch
    firefox-enable-addons.patch
    firefox-enable-plugins.patch
    firefox-install-dir.patch
    firefox-langpacks-52.6.0esr-20180118.tar.xz
    firefox-mozconfig
    firefox-ppc64le.patch
    firefox.1
    firefox.desktop
    firefox.sh.in.rhel6
    firefox.sh.in.rhel7
    firefox.spec
    gcc48-4.8.2-16.el5.src.rpm
    libffi-3.0.13-18.el7_3.src.rpm
    mozilla-1152515.patch
    mozilla-1170092-etc-conf.patch
    mozilla-256180.patch
    mozilla-api-key
    rhbz-1173156.patch
    rhbz-1414535.patch
    rhbz-1423012.patch
    rhbz-966424.patch
    webrtc-arch-cpu.patch
    xulrunner-24.0-jemalloc-ppc.patch
    yasm-1.2.0-3.el5.src.rpm
    
  5. 查看程式主要的打包壓縮檔。
    [dywang@dyw219 SOURCES]$ ls firefox-52.6.0esr.source.tar.xz 
    firefox-52.6.0esr.source.tar.xz
    
  6. 解壓縮原始碼 tarball,產生 firefox-45.1.0esr 目錄,存放原始碼。
    [dywang@dyw219 SOURCES]$ tar xJvf firefox-52.6.0esr.source.tar.xz
    
  7. 查看 firefox-45.1.0esr 目錄內的檔案。
    [dywang@dyw219 SOURCES]$ ls firefox-52.6.0esr
    accessible    devtools           mach                 rdf
    aclocal.m4    docshell           Makefile.in          README.txt
    addon-sdk     dom                media                security
    Android.mk    editor             memory               services
    AUTHORS       embedding          mfbt                 settings.gradle
    b2g           extensions         mobile               sourcestamp.txt
    browser       gfx                modules              startupcache
    build         GNUmakefile        moz.build            storage
    build.gradle  gradle             moz.configure        taskcluster
    caps          gradle.properties  mozglue              testing
    chrome        gradlew            mozilla-config.h.in  test.mozbuild
    client.mk     hal                netwerk              third_party
    client.py     image              nsprpub              toolkit
    CLOBBER       intl               old-configure        tools
    config        ipc                old-configure.in     uriloader
    configure     js                 other-licenses       view
    configure.in  layout             parser               widget
    configure.py  LEGAL              probes               xpcom
    db            LICENSE            python               xpfe
    
  8. 進入暫存目錄 tmp,解開原始 src.rpm,方便做修改的比對。
    [dywang@dyw219 SOURCES]$ cd ../tmp/
    [dywang@dyw219 tmp]$ rm ./* -rf
    [dywang@dyw219 tmp]$ rpm2cpio ../firefox-52.6.0-1.el6.centos.src.rpm | cpio -idvm
    Python-2.7.8.tgz
    build-icu-big-endian.patch
    build-missing-getrandom.patch
    build-nss-prbool.patch
    build-nss-version.patch
    build-s390-atomic.patch
    build-s390-missing-include.patch
    devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm
    ff52-pseudoelement-crash.patch
    find-external-requires
    firefox-52.6.0esr.source.tar.xz
    firefox-centos-default-prefs.js
    firefox-default.patch
    firefox-enable-addons.patch
    firefox-enable-plugins.patch
    firefox-install-dir.patch
    firefox-langpacks-52.6.0esr-20180118.tar.xz
    firefox-mozconfig
    firefox-ppc64le.patch
    firefox.1
    firefox.desktop
    firefox.sh.in.rhel6
    firefox.sh.in.rhel7
    firefox.spec
    gcc48-4.8.2-16.el5.src.rpm
    libffi-3.0.13-18.el7_3.src.rpm
    mozilla-1152515.patch
    mozilla-1170092-etc-conf.patch
    mozilla-256180.patch
    mozilla-api-key
    rhbz-1173156.patch
    rhbz-1414535.patch
    rhbz-1423012.patch
    rhbz-966424.patch
    webrtc-arch-cpu.patch
    xulrunner-24.0-jemalloc-ppc.patch
    yasm-1.2.0-3.el5.src.rpm
    758087 blocks
    
  9. 暫存目錄下解開 firefox-52.6.0esr.source.tar.xz。
    [dywang@dyw219 tmp]$ tar Jxvf firefox-52.6.0esr.source.tar.xz
    
  10. 修改 RPM spec 規格檔,版本加入 dyw。
    [dywang@dyw219 tmp]$ cd ../SOURCES/
    [dywang@dyw219 SOURCES]$ vim ../SPECS/firefox.spec
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox.spec ../SPECS/firefox.spec
    --- ../tmp/firefox.spec	2018-01-25 02:54:16.000000000 +0800
    +++ ../SPECS/firefox.spec	2018-03-27 11:47:07.768197470 +0800
    @@ -81,7 +81,7 @@
     Summary:        Mozilla Firefox Web browser
     Name:           firefox
     Version:        52.6.0
    -Release:        1%{?dist}
    +Release:        1%{?dist}.dyw
     URL:            http://www.mozilla.org/projects/firefox/
     License:        MPLv1.1 or GPLv2+ or LGPLv2+
     Group:          Applications/Internet
    
  11. 修改其他編碼為 UTF-8。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/browser/components/preferences/fonts.xul 
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/browser/components/preferences/fonts.xul \
    firefox-52.6.0esr/browser/components/preferences/fonts.xul
    --- ../tmp/firefox-52.6.0esr/browser/components/preferences/fonts.xul	2017-04-11 10:13:07.000000000 +0800
    +++ firefox-52.6.0esr/browser/components/preferences/fonts.xul	2018-03-27 11:49:57.713210403 +0800
    @@ -270,7 +270,7 @@
                 <menuitem label="&languages.customize.Fallback.thai;"        value="windows-874"/>
                 <menuitem label="&languages.customize.Fallback.turkish;"     value="windows-1254"/>
                 <menuitem label="&languages.customize.Fallback.vietnamese;"  value="windows-1258"/>
    -            <menuitem label="&languages.customize.Fallback.other;"       value="windows-1252"/>
    +            <menuitem label="&languages.customize.Fallback.other;"       value="UTF-8"/>
               </menupopup>
             </menulist>
           </hbox>
    
  12. 增加瀏覽器語系 en-US。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/browser/locales/all-locales 
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/browser/locales/all-locales \
    firefox-52.6.0esr/browser/locales/all-locales
    --- ../tmp/firefox-52.6.0esr/browser/locales/all-locales	2017-04-11 10:13:08.000000000 +0800
    +++ firefox-52.6.0esr/browser/locales/all-locales	2018-03-27 11:51:49.609218919 +0800
    @@ -18,6 +18,7 @@
     de
     dsb
     el
    +en-US
     en-GB
     en-ZA
     eo
    
  13. 當找不到編碼時預設使用 UTF-8。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/dom/encoding/FallbackEncoding.cpp 
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/dom/encoding/FallbackEncoding.cpp \
    firefox-52.6.0esr/dom/encoding/FallbackEncoding.cpp
    --- ../tmp/firefox-52.6.0esr/dom/encoding/FallbackEncoding.cpp	2017-04-11 10:13:18.000000000 +0800
    +++ firefox-52.6.0esr/dom/encoding/FallbackEncoding.cpp	2018-03-27 11:54:15.313230007 +0800
    @@ -97,7 +97,7 @@
     
       if (NS_FAILED(nsUConvPropertySearch::SearchPropertyValue(
           localesFallbacks, ArrayLength(localesFallbacks), locale, mFallback))) {
    -    mFallback.AssignLiteral("windows-1252");
    +    mFallback.AssignLiteral("UTF-8");
       }
     
       aFallback = mFallback;
    @@ -162,7 +162,7 @@
     {
       if (NS_FAILED(nsUConvPropertySearch::SearchPropertyValue(
           domainsFallbacks, ArrayLength(domainsFallbacks), aTLD, aFallback))) {
    -    aFallback.AssignLiteral("windows-1252");
    +    aFallback.AssignLiteral("UTF-8");
       }
     }
    
  14. unix 系統預設使用 UTF-8 編碼。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/intl/locale/unix/nsDateTimeFormatUnix.cpp 
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/intl/locale/unix/nsDateTimeFormatUnix.cpp \
    firefox-52.6.0esr/intl/locale/unix/nsDateTimeFormatUnix.cpp
    --- ../tmp/firefox-52.6.0esr/intl/locale/unix/nsDateTimeFormatUnix.cpp	2017-04-11 10:13:11.000000000 +0800
    +++ firefox-52.6.0esr/intl/locale/unix/nsDateTimeFormatUnix.cpp	2018-03-27 12:01:27.770262919 +0800
    @@ -45,7 +45,7 @@
         }
       }
     
    -  mCharset.AssignLiteral("windows-1252");
    +  mCharset.AssignLiteral("UTF-8");
       mPlatformLocale.AssignLiteral("en_US");
    
  15. 預設等寬字 monospace,實際使用時不會等寬,故修改成 DejaVu Sans Mono,並修改預設字型大小等寬字為 14。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/modules/libpref/init/all.js 
    [dywang@dyw219 SOURCES]$ sed -i 's/\(font.size.fixed.*\)1[0-9]/\114/g' \
    firefox-52.6.0esr/modules/libpref/init/all.js
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/modules/libpref/init/all.js \
    firefox-52.6.0esr/modules/libpref/init/all.js
    --- ../tmp/firefox-52.6.0esr/modules/libpref/init/all.js	2017-07-08 00:17:52.000000000 +0800
    +++ firefox-52.6.0esr/modules/libpref/init/all.js	2018-03-27 12:07:25.346290131 +0800
    @@ -2029,7 +2029,7 @@
     // fallback charset list for Unicode conversion (converting from Unicode)
     // currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes)
     // for ISO-8859-1
    -pref("intl.fallbackCharsetList.ISO-8859-1", "windows-1252");
    +pref("intl.fallbackCharsetList.ISO-8859-1", "UTF-8");
     pref("font.language.group",                 "chrome://global/locale/intl.properties");
     
     // Android-specific pref to use key-events-only mode for IME-unaware webapps.
    @@ -2894,149 +2894,149 @@
     pref("font.default.ar", "sans-serif");
     pref("font.minimum-size.ar", 0);
     pref("font.size.variable.ar", 16);
    -pref("font.size.fixed.ar", 13);
    +pref("font.size.fixed.ar", 14);
     
     pref("font.default.el", "serif");
     pref("font.minimum-size.el", 0);
     pref("font.size.variable.el", 16);
    -pref("font.size.fixed.el", 13);
    +pref("font.size.fixed.el", 14);
     
     pref("font.default.he", "sans-serif");
     pref("font.minimum-size.he", 0);
     pref("font.size.variable.he", 16);
    -pref("font.size.fixed.he", 13);
    +pref("font.size.fixed.he", 14);
     
     pref("font.default.ja", "sans-serif");
     pref("font.minimum-size.ja", 0);
     pref("font.size.variable.ja", 16);
    -pref("font.size.fixed.ja", 16);
    +pref("font.size.fixed.ja", 14);
     
     pref("font.default.ko", "sans-serif");
     pref("font.minimum-size.ko", 0);
     pref("font.size.variable.ko", 16);
    -pref("font.size.fixed.ko", 16);
    +pref("font.size.fixed.ko", 14);
     
     pref("font.default.th", "sans-serif");
     pref("font.minimum-size.th", 0);
     pref("font.size.variable.th", 16);
    -pref("font.size.fixed.th", 13);
    +pref("font.size.fixed.th", 14);
     
     pref("font.default.x-cyrillic", "serif");
     pref("font.minimum-size.x-cyrillic", 0);
     pref("font.size.variable.x-cyrillic", 16);
    -pref("font.size.fixed.x-cyrillic", 13);
    +pref("font.size.fixed.x-cyrillic", 14);
     
     pref("font.default.x-devanagari", "serif");
     pref("font.minimum-size.x-devanagari", 0);
     pref("font.size.variable.x-devanagari", 16);
    -pref("font.size.fixed.x-devanagari", 13);
    +pref("font.size.fixed.x-devanagari", 14);
     
     pref("font.default.x-tamil", "serif");
     pref("font.minimum-size.x-tamil", 0);
     pref("font.size.variable.x-tamil", 16);
    -pref("font.size.fixed.x-tamil", 13);
    +pref("font.size.fixed.x-tamil", 14);
     
     pref("font.default.x-armn", "serif");
     pref("font.minimum-size.x-armn", 0);
     pref("font.size.variable.x-armn", 16);
    -pref("font.size.fixed.x-armn", 13);
    +pref("font.size.fixed.x-armn", 14);
     
     pref("font.default.x-beng", "serif");
     pref("font.minimum-size.x-beng", 0);
     pref("font.size.variable.x-beng", 16);
    -pref("font.size.fixed.x-beng", 13);
    +pref("font.size.fixed.x-beng", 14);
     
     pref("font.default.x-cans", "serif");
     pref("font.minimum-size.x-cans", 0);
     pref("font.size.variable.x-cans", 16);
    -pref("font.size.fixed.x-cans", 13);
    +pref("font.size.fixed.x-cans", 14);
     
     pref("font.default.x-ethi", "serif");
     pref("font.minimum-size.x-ethi", 0);
     pref("font.size.variable.x-ethi", 16);
    -pref("font.size.fixed.x-ethi", 13);
    +pref("font.size.fixed.x-ethi", 14);
     
     pref("font.default.x-geor", "serif");
     pref("font.minimum-size.x-geor", 0);
     pref("font.size.variable.x-geor", 16);
    -pref("font.size.fixed.x-geor", 13);
    +pref("font.size.fixed.x-geor", 14);
     
     pref("font.default.x-gujr", "serif");
     pref("font.minimum-size.x-gujr", 0);
     pref("font.size.variable.x-gujr", 16);
    -pref("font.size.fixed.x-gujr", 13);
    +pref("font.size.fixed.x-gujr", 14);
     
     pref("font.default.x-guru", "serif");
     pref("font.minimum-size.x-guru", 0);
     pref("font.size.variable.x-guru", 16);
    -pref("font.size.fixed.x-guru", 13);
    +pref("font.size.fixed.x-guru", 14);
     
     pref("font.default.x-khmr", "serif");
     pref("font.minimum-size.x-khmr", 0);
     pref("font.size.variable.x-khmr", 16);
    -pref("font.size.fixed.x-khmr", 13);
    +pref("font.size.fixed.x-khmr", 14);
     
     pref("font.default.x-mlym", "serif");
     pref("font.minimum-size.x-mlym", 0);
     pref("font.size.variable.x-mlym", 16);
    -pref("font.size.fixed.x-mlym", 13);
    +pref("font.size.fixed.x-mlym", 14);
     
     pref("font.default.x-orya", "serif");
     pref("font.minimum-size.x-orya", 0);
     pref("font.size.variable.x-orya", 16);
    -pref("font.size.fixed.x-orya", 13);
    +pref("font.size.fixed.x-orya", 14);
     
     pref("font.default.x-telu", "serif");
     pref("font.minimum-size.x-telu", 0);
     pref("font.size.variable.x-telu", 16);
    -pref("font.size.fixed.x-telu", 13);
    +pref("font.size.fixed.x-telu", 14);
     
     pref("font.default.x-knda", "serif");
     pref("font.minimum-size.x-knda", 0);
     pref("font.size.variable.x-knda", 16);
    -pref("font.size.fixed.x-knda", 13);
    +pref("font.size.fixed.x-knda", 14);
     
     pref("font.default.x-sinh", "serif");
     pref("font.minimum-size.x-sinh", 0);
     pref("font.size.variable.x-sinh", 16);
    -pref("font.size.fixed.x-sinh", 13);
    +pref("font.size.fixed.x-sinh", 14);
     
     pref("font.default.x-tibt", "serif");
     pref("font.minimum-size.x-tibt", 0);
     pref("font.size.variable.x-tibt", 16);
    -pref("font.size.fixed.x-tibt", 13);
    +pref("font.size.fixed.x-tibt", 14);
     
     pref("font.default.x-unicode", "serif");
     pref("font.minimum-size.x-unicode", 0);
     pref("font.size.variable.x-unicode", 16);
    -pref("font.size.fixed.x-unicode", 13);
    +pref("font.size.fixed.x-unicode", 14);
     
     pref("font.default.x-western", "serif");
     pref("font.minimum-size.x-western", 0);
     pref("font.size.variable.x-western", 16);
    -pref("font.size.fixed.x-western", 13);
    +pref("font.size.fixed.x-western", 14);
     
     pref("font.default.zh-CN", "sans-serif");
     pref("font.minimum-size.zh-CN", 0);
     pref("font.size.variable.zh-CN", 16);
    -pref("font.size.fixed.zh-CN", 16);
    +pref("font.size.fixed.zh-CN", 14);
     
     pref("font.default.zh-HK", "sans-serif");
     pref("font.minimum-size.zh-HK", 0);
     pref("font.size.variable.zh-HK", 16);
    -pref("font.size.fixed.zh-HK", 16);
    +pref("font.size.fixed.zh-HK", 14);
     
     pref("font.default.zh-TW", "sans-serif");
     pref("font.minimum-size.zh-TW", 0);
     pref("font.size.variable.zh-TW", 16);
    -pref("font.size.fixed.zh-TW", 16);
    +pref("font.size.fixed.zh-TW", 14);
     
     // mathml.css sets font-size to "inherit" and font-family to "serif" so only
     // font.name.*.x-math and font.minimum-size.x-math are really relevant.
     pref("font.default.x-math", "serif");
     pref("font.minimum-size.x-math", 0);
     pref("font.size.variable.x-math", 16);
    -pref("font.size.fixed.x-math", 13);
    +pref("font.size.fixed.x-math", 14);
     
     /*
      * A value greater than zero enables font size inflation for
    @@ -4026,17 +4026,17 @@
     pref("font.name.serif.ar", "serif");
     pref("font.name.sans-serif.ar", "sans-serif");
     pref("font.name.monospace.ar", "monospace");
    -pref("font.size.fixed.ar", 12);
    +pref("font.size.fixed.ar", 14);
     
     pref("font.name.serif.el", "serif");
     pref("font.name.sans-serif.el", "sans-serif");
     pref("font.name.monospace.el", "monospace");
    -pref("font.size.fixed.el", 12);
    +pref("font.size.fixed.el", 14);
     
     pref("font.name.serif.he", "serif");
     pref("font.name.sans-serif.he", "sans-serif");
     pref("font.name.monospace.he", "monospace");
    -pref("font.size.fixed.he", 12);
    +pref("font.size.fixed.he", 14);
     
     pref("font.name.serif.ja", "serif");
     pref("font.name.sans-serif.ja", "sans-serif");
    @@ -4066,7 +4066,7 @@
     pref("font.name.serif.x-cyrillic", "serif");
     pref("font.name.sans-serif.x-cyrillic", "sans-serif");
     pref("font.name.monospace.x-cyrillic", "monospace");
    -pref("font.size.fixed.x-cyrillic", 12);
    +pref("font.size.fixed.x-cyrillic", 14);
     
     pref("font.name.serif.x-devanagari", "serif");
     pref("font.name.sans-serif.x-devanagari", "sans-serif");
    @@ -4123,12 +4123,12 @@
     pref("font.name.serif.x-unicode", "serif");
     pref("font.name.sans-serif.x-unicode", "sans-serif");
     pref("font.name.monospace.x-unicode", "monospace");
    -pref("font.size.fixed.x-unicode", 12);
    +pref("font.size.fixed.x-unicode", 14);
     
     pref("font.name.serif.x-western", "serif");
     pref("font.name.sans-serif.x-western", "sans-serif");
     pref("font.name.monospace.x-western", "monospace");
    -pref("font.size.fixed.x-western", 12);
    +pref("font.size.fixed.x-western", 14);
     
     pref("font.name.serif.zh-CN", "serif");
     pref("font.name.sans-serif.zh-CN", "sans-serif");
    @@ -4182,21 +4182,21 @@
     
     #if defined(ANDROID) || defined(MOZ_B2G)
     
    -pref("font.size.fixed.ar", 12);
    +pref("font.size.fixed.ar", 14);
     
     pref("font.default.el", "sans-serif");
    -pref("font.size.fixed.el", 12);
    +pref("font.size.fixed.el", 14);
     
    -pref("font.size.fixed.he", 12);
    +pref("font.size.fixed.he", 14);
     
     pref("font.default.x-cyrillic", "sans-serif");
    -pref("font.size.fixed.x-cyrillic", 12);
    +pref("font.size.fixed.x-cyrillic", 14);
     
     pref("font.default.x-unicode", "sans-serif");
    -pref("font.size.fixed.x-unicode", 12);
    +pref("font.size.fixed.x-unicode", 14);
     
     pref("font.default.x-western", "sans-serif");
    -pref("font.size.fixed.x-western", 12);
    +pref("font.size.fixed.x-western", 14);
     
     # ANDROID || MOZ_B2G
     #endif
    
  16. toolkit 語系增加 en-US。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/toolkit/locales/all-locales 
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/toolkit/locales/all-locales \
    firefox-52.6.0esr/toolkit/locales/all-locales
    --- ../tmp/firefox-52.6.0esr/toolkit/locales/all-locales	2017-04-11 10:13:23.000000000 +0800
    +++ firefox-52.6.0esr/toolkit/locales/all-locales	2018-03-27 12:05:53.279283125 +0800
    @@ -12,3 +12,4 @@
     ro
     sv-SE
     ru
    +en-US
    
  17. 增加 zh-TW 可用語系。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/toolkit/locales/\
    en-US/chrome/global/intl.properties 
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/toolkit/\
    locales/en-US/chrome/global/intl.properties firefox-52.6.0esr/toolkit/\
    locales/en-US/chrome/global/intl.properties
    --- ../tmp/firefox-52.6.0esr/toolkit/locales/en-US/chrome/global/
    intl.properties2017-04-11 10:13:23.000000000 +0800
    +++ firefox-52.6.0esr/toolkit/locales/en-US/chrome/global/intl.properties	
    2018-03-27 12:10:20.815303485 +0800
    @@ -30,7 +30,7 @@
     # British English in their list, since those languages are commonly spoken in
     # the same area as Breton:
     # intl.accept_languages=br, fr-FR, fr, en-GB, en
    -intl.accept_languages=en-US, en
    +intl.accept_languages=en-US, en, zh-TW
     
     # LOCALIZATION NOTE (font.language.group):
    
  18. 系統預設使用 UTF-8 編碼。
    [dywang@dyw219 SOURCES]$ vim firefox-52.6.0esr/toolkit/locales/en-US/chrome/\
    global-platform/unix/intl.properties 
    [dywang@dyw219 SOURCES]$ echo intl.charset.default=UTF-8 >> firefox-52.6.0esr/\
    toolkit/locales/en-US/chrome/global-platform/unix/intl.properties
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-52.6.0esr/toolkit/locales/en-US/\
    chrome/global-platform/unix/intl.properties firefox-52.6.0esr/toolkit/locales/en-US/\
    chrome/global-platform/unix/intl.properties
    --- ../tmp/firefox-52.6.0esr/toolkit/locales/en-US/chrome/global-platform/unix/intl.properties	
    2017-04-11 10:13:23.000000000 +0800
    +++ firefox-52.6.0esr/toolkit/locales/en-US/chrome/global-platform/unix/intl.properties	
    2018-03-27 12:13:12.387316542 +0800
    @@ -5,3 +5,4 @@
     # LOCALIZATION NOTE (intl.ellipsis): Use the unicode ellipsis char, \u2026,
     # or use "..." if \u2026 doesn't suit traditions in your locale.
     intl.ellipsis=…
    +intl.charset.default=UTF-8
    
  19. 修改預設首頁到個人網頁。
    [dywang@dyw219 SOURCES]$ vim firefox-centos-default-prefs.js 
    [dywang@dyw219 SOURCES]$ sed -i \
    's|\(startup.homepage.*\",\ *\"\).*\"|\1http://dy.csie.cyut.edu.tw\"|g' \
    firefox-centos-default-prefs.js
    [dywang@dyw219 SOURCES]$ diff -uN ../tmp/firefox-centos-default-prefs.js \
    firefox-centos-default-prefs.js
    --- ../tmp/firefox-centos-default-prefs.js	2018-01-25 02:55:04.000000000 +0800
    +++ firefox-centos-default-prefs.js	2018-03-27 12:16:40.905332411 +0800
    @@ -14,10 +14,10 @@
     pref("dom.ipc.plugins.enabled.nswrapper*",  false);
     pref("network.manage-offline-status",       true);
     pref("toolkit.networkmanager.disable",      false);
    -pref("browser.startup.homepage",            "data:text/plain,browser.startup.homepage=file:///usr/share/doc/HTML/index.html");
    +pref("browser.startup.homepage",            "http://dy.csie.cyut.edu.tw");
     pref("toolkit.storage.synchronous",         0);
    -pref("startup.homepage_override_url",       "http://www.centos.org");
    -pref("startup.homepage_welcome_url",        "http://www.centos.org");
    +pref("startup.homepage_override_url",       "http://dy.csie.cyut.edu.tw");
    +pref("startup.homepage_welcome_url",        "http://dy.csie.cyut.edu.tw");
     pref("extensions.shownSelectionUI",         true);
     /* Workaround for rhbz#1110291 */
     pref("network.negotiate-auth.allow-insecure-ntlm-v1", true);
    
  20. 重新打包壓縮 firefox-52.6.0esr 目錄。
    [dywang@dyw219 SOURCES]$ tar Jcvf firefox-52.6.0esr.source.tar.xz firefox-52.6.0esr
    
  21. 再同時建立 RPM 及 SRPM 二進位檔字,firefox RPM 建立要 1 小時以上,要耐心等候。成功建立的訊息最後幾行,看到產生 firefox firefox-debuginfo 二個 RPM 檔及一個 firefox SRPM 檔。
    [dywang@dyw219 SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec
    Building target platforms: x86_64
    Building for target x86_64
    Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.5HsccJ
    + umask 022
    + cd /home/dywang/rpmbuild/BUILD
    .....................
    BUILDROOT/firefox-52.6.0-1.el6.dyw.x86_64
    Wrote: /home/dywang/rpmbuild/SRPMS/firefox-52.6.0-1.el6.dyw.src.rpm
    Wrote: /home/dywang/rpmbuild/RPMS/x86_64/firefox-52.6.0-1.el6.dyw.x86_64.rpm
    Wrote: /home/dywang/rpmbuild/RPMS/x86_64/firefox-debuginfo-52.6.0-1.el6.dyw.x86_64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.DN7HlZ
    + umask 022
    + cd /home/dywang/rpmbuild/BUILD
    + cd firefox-52.6.0
    + /bin/rm -rf /home/dywang/rpmbuild/BUILDROOT/firefox-52.6.0-1.el6.dyw.x86_64
    + exit 0
    Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.4gcWdU
    + umask 022
    + cd /home/dywang/rpmbuild/BUILD
    + rm -rf firefox-52.6.0
    + exit 0