diff --git a/network/web/firefox/actions.py b/network/web/firefox/actions.py index d4fe208965..e8fe9ee7fa 100755 --- a/network/web/firefox/actions.py +++ b/network/web/firefox/actions.py @@ -4,33 +4,41 @@ # Licensed under the GNU General Public License, version 3. # See the file http://www.gnu.org/licenses/gpl.txt +import subprocess + from pisi.actionsapi import get from pisi.actionsapi import autotools from pisi.actionsapi import pisitools from pisi.actionsapi import shelltools #WorkDir = "mozilla-release-6b51784853e47e091d213d421a19cb623af718f0" -ObjDir = "build" +ObjDir = "objdir" locales = "az bs ca da de el en-US en-GB es-AR es-CL es-ES fi fr hr hu it lt nl pl pt-BR pt-PT ro ru sr sv-SE tr uk".split() xpidir = "%s/xpi" % get.workDIR() arch = get.ARCH() ver = ".".join(get.srcVERSION().split(".")[:3]) +jobs = jobs = "-j"+ subprocess.check_output("nproc 2>/dev/null", shell=True).rstrip("\n") + shelltools.export("SHELL", "/bin/sh") shelltools.export("MACH_USE_SYSTEM_PYTHON", "1") def setup(): + + shelltools.system("echo 'Instrumenting Firefox for PGO'") + shelltools.system("cp mozconfig-inst .mozconfig") + # Google API key shelltools.echo("google_api_key", "AIzaSyBINKL31ZYd8W5byPuwTXYK6cEyoceGh6Y") pisitools.dosed(".mozconfig", "%%PWD%%", get.curDIR()) pisitools.dosed(".mozconfig", "%%FILE%%", "google_api_key") - pisitools.dosed(".mozconfig", "##JOBCOUNT##", get.makeJOBS()) + pisitools.dosed(".mozconfig", "##JOBCOUNT##", jobs) # LOCALE shelltools.system("rm -rf langpack-ff/*/browser/defaults") if not shelltools.isDirectory(xpidir): shelltools.makedirs(xpidir) for locale in locales: - shelltools.system("wget -c -P %s http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/%s/linux-%s/xpi/%s.xpi" % (xpidir, ver, arch, locale)) + shelltools.system("wget -c -P %s https://download-origin.cdn.mozilla.net/pub/firefox/releases/%s/linux-%s/xpi/%s.xpi" % (xpidir, ver, arch, locale)) #shelltools.makedirs("langpack-ff/langpack-%s@firefox.mozilla.org" % locale) shelltools.makedirs("langpack-ff") #shelltools.system("unzip -uo %s/%s.xpi -d langpack-ff/langpack-%s@firefox.mozilla.org" % (xpidir, locale, locale)) @@ -39,21 +47,42 @@ def setup(): #shelltools.copy("browserconfig.properties", "langpack-ff/langpack-%s@firefox.mozilla.org/browser/chrome/%s/locale/branding/" % (locale, locale)) shelltools.copy("browserconfig.properties", "browser/branding/official/locales/") - shelltools.makedirs(ObjDir) - shelltools.cd(ObjDir) + #shelltools.makedirs(ObjDir) + #shelltools.cd(ObjDir) - shelltools.system("../configure --prefix=/usr --libdir=/usr/lib --disable-strip --disable-install-strip") + #shelltools.system("../configure --prefix=/usr --libdir=/usr/lib --disable-strip --disable-install-strip") def build(): - shelltools.cd(ObjDir) - shelltools.system("../mach build -j5") + shelltools.system("echo 'Building instrumented browser'") + #shelltools.cd(ObjDir) + shelltools.system("./mach build") + + shelltools.system("echo 'Profiling instrumented browser...'") + shelltools.system("./mach package") + shelltools.system("LLVM_PROFDATA=llvm-profdata \ + JARLOG_FILE='%s/jarlog' \ + xvfb-run -s '-screen 0 1920x1080x24 -nolisten local' \ + ./mach python build/pgo/profileserver.py" %get.curDIR()) + + shelltools.system("echo 'Removing instrumented browser...'") + shelltools.system("./mach clobber") + + shelltools.system("echo 'Building optimized browser...'") + shelltools.system("rm .mozconfig") + shelltools.system("cp mozconfig-opt .mozconfig") + #shelltools.echo("google_api_key", "AIzaSyBINKL31ZYd8W5byPuwTXYK6cEyoceGh6Y") + pisitools.dosed(".mozconfig", "%%PWD%%", get.curDIR()) + pisitools.dosed(".mozconfig", "%%FILE%%", "google_api_key") + pisitools.dosed(".mozconfig", "##JOBCOUNT##", jobs) + #shelltools.system("../configure --prefix=/usr --libdir=/usr/lib --disable-strip --disable-install-strip") + shelltools.system("./mach build") def install(): - shelltools.cd(ObjDir) - shelltools.system("DESTDIR=%s ../mach install " % get.installDIR()) + #shelltools.cd(ObjDir) + shelltools.system("DESTDIR=%s ./mach install " % get.installDIR()) - shelltools.cd("..") + #shelltools.cd("..") # Install language packs pisitools.insinto("/usr/lib/firefox/browser/extensions", "./langpack-ff/*") diff --git a/network/web/firefox/files/mozconfig-inst b/network/web/firefox/files/mozconfig-inst new file mode 100755 index 0000000000..1cb456cf73 --- /dev/null +++ b/network/web/firefox/files/mozconfig-inst @@ -0,0 +1,58 @@ +. $topsrcdir/browser/config/mozconfig +mk_add_options MOZ_MAKE_FLAGS="##JOBCOUNT##" + +ac_add_options --prefix=/usr +ac_add_options --enable-release +#ac_add_options --enable-linker=gold +ac_add_options --enable-hardening +ac_add_options --enable-optimize + +export MOZ_NOSPAM=1 +export MOZBUILD_STATE_PATH="%%PWD%%/mozbuild" + +export CC=clang +export CXX=clang++ +export AR=llvm-ar +export NM=llvm-nm +export RANLIB=llvm-ranlib +export LDFLAGS+=" -fuse-ld=lld" +ac_add_options --allow-addon-sideload +ac_add_options --enable-official-branding + +# System libraries +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +#ac_add_options --with-system-icu +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +#ac_add_options --with-system-bz2 +#ac_add_options --with-system-libevent +#ac_add_options --with-system-libvpx +#ac_add_options --enable-system-hunspell +ac_add_options --enable-system-ffi +#ac_add_options --enable-system-pixman +#ac_add_options --enable-system-sqlite +#ac_add_options --enable-gstreamer=1.0 +#ac_add_options --disable-elf-hack + +# Features +#ac_add_options --enable-application=browser +#ac_add_options --enable-alsa +#ac_add_options --enable-jack +#ac_add_options --enable-startup-notification +ac_add_options --disable-updater +ac_add_options --disable-crashreporter +#ac_add_options --disable-stylo +#ac_add_options --disable-gconf +ac_add_options --disable-tests + +# New MP4, etc +ac_add_options --enable-rust-simd + +ac_add_options --enable-profile-generate=cross + +ac_add_options --with-google-location-service-api-keyfile="%%PWD%%/%%FILE%%" +ac_add_options --with-google-safebrowsing-api-keyfile="%%PWD%%/%%FILE%%" +#ac_add_options --enable-safe-browsing + +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir diff --git a/network/web/firefox/files/mozconfig-opt b/network/web/firefox/files/mozconfig-opt new file mode 100755 index 0000000000..4e33363d95 --- /dev/null +++ b/network/web/firefox/files/mozconfig-opt @@ -0,0 +1,63 @@ +. $topsrcdir/browser/config/mozconfig +mk_add_options MOZ_MAKE_FLAGS="##JOBCOUNT##" + +ac_add_options --prefix=/usr +ac_add_options --enable-release +#ac_add_options --enable-linker=gold +ac_add_options --enable-hardening +ac_add_options --enable-optimize + +export MOZ_NOSPAM=1 +export MOZBUILD_STATE_PATH="%%PWD%%/mozbuild" + +export CC=clang +export CXX=clang++ +export AR=llvm-ar +export NM=llvm-nm +export RANLIB=llvm-ranlib +export LDFLAGS+=" -fuse-ld=lld" +ac_add_options --allow-addon-sideload +ac_add_options --enable-official-branding + +# System libraries +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +#ac_add_options --with-system-icu +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +#ac_add_options --with-system-bz2 +#ac_add_options --with-system-libevent +#ac_add_options --with-system-libvpx +#ac_add_options --enable-system-hunspell +ac_add_options --enable-system-ffi +#ac_add_options --enable-system-pixman +#ac_add_options --enable-system-sqlite +#ac_add_options --enable-gstreamer=1.0 +#ac_add_options --disable-elf-hack + +# Features +#ac_add_options --enable-application=browser +#ac_add_options --enable-alsa +#ac_add_options --enable-jack +#ac_add_options --enable-startup-notification +ac_add_options --disable-updater +ac_add_options --disable-crashreporter +#ac_add_options --disable-stylo +#ac_add_options --disable-gconf +ac_add_options --disable-tests + +# New MP4, etc +ac_add_options --enable-rust-simd + +ac_add_options --enable-lto=cross +ac_add_options --enable-profile-use=cross +ac_add_options --with-pgo-profile-path=%%PWD%%/merged.profdata +ac_add_options --with-pgo-jarlog=%%PWD%%/jarlog + + + +ac_add_options --with-google-location-service-api-keyfile="%%PWD%%/%%FILE%%" +ac_add_options --with-google-safebrowsing-api-keyfile="%%PWD%%/%%FILE%%" +#ac_add_options --enable-safe-browsing + +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir diff --git a/network/web/firefox/pspec.xml b/network/web/firefox/pspec.xml index 1a5344b0eb..1c632255e9 100644 --- a/network/web/firefox/pspec.xml +++ b/network/web/firefox/pspec.xml @@ -18,7 +18,9 @@ https://ftp.mozilla.org/pub/firefox/releases/84.0.1/source/firefox-84.0.1.source.tar.xz - mozconfig + + mozconfig-inst + mozconfig-opt configure pisilinux/browserconfig.properties @@ -62,6 +64,11 @@ llvm libxkbcommon-devel llvm-clang-devel + lld-devel + compiler-rt + xorg-server-xvfb + xorg-app + xkeyboard-config gdb-devel @@ -550,6 +557,13 @@ + + 2021-01-02 + 84.0.1 + Version bump and enable PGO and LTO + İdris Kalp + idriskalp@gmail.com + 2020-12-27 84.0.1