Page MenuHomeSolus

D985.id7006.diff
No OneTemporary

D985.id7006.diff

diff --git a/Makefile b/Makefile
new file mode 100644
--- /dev/null
+++ b/Makefile
@@ -0,0 +1 @@
+include ../Makefile.common
diff --git a/abi_used_libs b/abi_used_libs
new file mode 100644
--- /dev/null
+++ b/abi_used_libs
@@ -0,0 +1,65 @@
+ld-linux-x86-64.so.2
+libFLAC.so.8
+libX11-xcb.so.1
+libX11.so.6
+libXcomposite.so.1
+libXcursor.so.1
+libXdamage.so.1
+libXext.so.6
+libXfixes.so.3
+libXi.so.6
+libXrandr.so.2
+libXrender.so.1
+libXss.so.1
+libXtst.so.6
+libasound.so.2
+libatk-1.0.so.0
+libatk-bridge-2.0.so.0
+libatomic.so.1
+libc.so.6
+libcairo.so.2
+libcups.so.2
+libdbus-1.so.3
+libdl.so.2
+libevent-2.1.so.6
+libexpat.so.1
+libfontconfig.so.1
+libfreetype.so.6
+libgcc_s.so.1
+libgdk-3.so.0
+libgdk_pixbuf-2.0.so.0
+libgio-2.0.so.0
+libglib-2.0.so.0
+libgobject-2.0.so.0
+libgtk-3.so.0
+libharfbuzz.so.0
+libicui18n.so.60
+libicuuc.so.60
+libjpeg.so.8
+liblcms2.so.2
+libm.so.6
+libminizip.so.1
+libnspr4.so
+libnss3.so
+libnssutil3.so
+libopenjp2.so.7
+libopus.so.0
+libpango-1.0.so.0
+libpangocairo-1.0.so.0
+libpng16.so.16
+libpthread.so.0
+libpulse.so.0
+libre2.so
+librt.so.1
+libsmime3.so
+libsnappy.so.1
+libstdc++.so.6
+libvpx.so.5
+libwebp.so.7
+libwebpdemux.so.2
+libwebpmux.so.3
+libwidevinecdm.so
+libxcb.so.1
+libxml2.so.2
+libxslt.so.1
+libz.so.1
diff --git a/files/api-keys b/files/api-keys
new file mode 100644
--- /dev/null
+++ b/files/api-keys
@@ -0,0 +1,3 @@
+google_api_key="AIzaSyDvTqULEU7AFl9Co6b-j1lEX7mlaV4wQuM"
+google_default_client_id="647124852452-k4g91dgda0qftulavda5u9hale7gh8fu.apps.googleusercontent.com"
+google_default_client_secret="uJsvlfp5vfGxrkUMzmQNbGW4"
diff --git a/files/chromium-widevine-r1.patch b/files/chromium-widevine-r1.patch
new file mode 100644
--- /dev/null
+++ b/files/chromium-widevine-r1.patch
@@ -0,0 +1,14 @@
+Minimal patch to get chromium to compile with widevine support
+
+https://bugs.gentoo.org/show_bug.cgi?id=547630
+
+--- a/third_party/widevine/cdm/stub/widevine_cdm_version.h
++++ b/third_party/widevine/cdm/stub/widevine_cdm_version.h
+@@ -10,6 +10,7 @@
+
+ #include "third_party/widevine/cdm/widevine_cdm_common.h"
+
++#define WIDEVINE_CDM_VERSION_STRING "unknown"
+ #define WIDEVINE_CDM_AVAILABLE
+
+ #endif // WIDEVINE_CDM_VERSION_H_
diff --git a/files/chromium.desktop b/files/chromium.desktop
new file mode 100644
--- /dev/null
+++ b/files/chromium.desktop
@@ -0,0 +1,165 @@
+[Desktop Entry]
+Name=Chromium
+Comment=Access the Internet
+Comment[ar]=الدخول إلى الإنترنت
+Comment[bg]=Достъп до интернет
+Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
+Comment[ca]=Accedeix a Internet
+Comment[cs]=Přístup k internetu
+Comment[da]=Få adgang til internettet
+Comment[de]=Internetzugriff
+Comment[el]=Πρόσβαση στο Διαδίκτυο
+Comment[en_GB]=Access the Internet
+Comment[es]=Accede a Internet.
+Comment[et]=Pääs Internetti
+Comment[fi]=Käytä internetiä
+Comment[fil]=I-access ang Internet
+Comment[fr]=Accéder à Internet
+Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
+Comment[he]=גישה אל האינטרנט
+Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
+Comment[hr]=Pristup Internetu
+Comment[hu]=Internetelérés
+Comment[id]=Akses Internet
+Comment[it]=Accesso a Internet
+Comment[ja]=インターネットにアクセス
+Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
+Comment[ko]=인터넷 연결
+Comment[lt]=Interneto prieiga
+Comment[lv]=Piekļūt internetam
+Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക
+Comment[mr]=इंटरनेटमध्ये प्रवेश करा
+Comment[nb]=Gå til Internett
+Comment[nl]=Verbinding maken met internet
+Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
+Comment[pl]=Skorzystaj z internetu
+Comment[pt]=Aceder à Internet
+Comment[pt_BR]=Acessar a internet
+Comment[ro]=Accesaţi Internetul
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prístup do siete Internet
+Comment[sl]=Dostop do interneta
+Comment[sr]=Приступите Интернету
+Comment[sv]=Gå ut på Internet
+Comment[ta]=இணையத்தை அணுகுதல்
+Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి
+Comment[th]=เข้าถึงอินเทอร์เน็ต
+Comment[tr]=İnternet'e erişin
+Comment[uk]=Доступ до Інтернету
+Comment[vi]=Truy cập Internet
+Comment[zh_CN]=访问互联网
+Comment[zh_HK]=連線到網際網路
+Comment[zh_TW]=連線到網際網路
+Exec=chromium %U
+Terminal=false
+Icon=chromium
+Type=Application
+Categories=GTK;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+Actions=NewWindow;NewPrivateWindow;
+
+[Desktop Action NewWindow]
+Name=New Window
+Name[am]=አዲስ መስኮት
+Name[ar]=نافذة جديدة
+Name[bg]=Нов прозорец
+Name[bn]=নতুন উইন্ডো
+Name[ca]=Finestra nova
+Name[cs]=Nové okno
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[el]=Νέο Παράθυρο
+Name[en_GB]=New Window
+Name[es]=Nueva ventana
+Name[et]=Uus aken
+Name[fa]=پنجره جدید
+Name[fi]=Uusi ikkuna
+Name[fil]=New Window
+Name[fr]=Nouvelle fenêtre
+Name[gu]=નવી વિંડો
+Name[hi]=नई विंडो
+Name[hr]=Novi prozor
+Name[hu]=Új ablak
+Name[id]=Jendela Baru
+Name[it]=Nuova finestra
+Name[iw]=חלון חדש
+Name[ja]=新規ウインドウ
+Name[kn]=ಹೊಸ ವಿಂಡೊ
+Name[ko]=새 창
+Name[lt]=Naujas langas
+Name[lv]=Jauns logs
+Name[ml]=പുതിയ വിന്‍ഡോ
+Name[mr]=नवीन विंडो
+Name[nl]=Nieuw venster
+Name[no]=Nytt vindu
+Name[pl]=Nowe okno
+Name[pt]=Nova janela
+Name[pt_BR]=Nova janela
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[sr]=Нови прозор
+Name[sv]=Nytt fönster
+Name[sw]=Dirisha Jipya
+Name[ta]=புதிய சாளரம்
+Name[te]=క్రొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni Pencere
+Name[uk]=Нове вікно
+Name[vi]=Cửa sổ Mới
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=chromium
+
+[Desktop Action NewPrivateWindow]
+Name=New Incognito Window
+Name[ar]=نافذة جديدة للتصفح المتخفي
+Name[bg]=Нов прозорец „инкогнито“
+Name[bn]=নতুন ছদ্মবেশী উইন্ডো
+Name[ca]=Finestra d'incògnit nova
+Name[cs]=Nové anonymní okno
+Name[da]=Nyt inkognitovindue
+Name[de]=Neues Inkognito-Fenster
+Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
+Name[en_GB]=New Incognito window
+Name[es]=Nueva ventana de incógnito
+Name[et]=Uus inkognito aken
+Name[fa]=پنجره جدید حالت ناشناس
+Name[fi]=Uusi incognito-ikkuna
+Name[fil]=Bagong Incognito window
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[gu]=નવી છુપી વિંડો
+Name[hi]=नई गुप्त विंडो
+Name[hr]=Novi anoniman prozor
+Name[hu]=Új Inkognitóablak
+Name[id]=Jendela Penyamaran baru
+Name[it]=Nuova finestra di navigazione in incognito
+Name[iw]=חלון חדש לגלישה בסתר
+Name[ja]=新しいシークレット ウィンドウ
+Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
+Name[ko]=새 시크릿 창
+Name[lt]=Naujas inkognito langas
+Name[lv]=Jauns inkognito režīma logs
+Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്‍ഡോ
+Name[mr]=नवीन गुप्त विंडो
+Name[nl]=Nieuw incognitovenster
+Name[no]=Nytt inkognitovindu
+Name[pl]=Nowe okno incognito
+Name[pt]=Nova janela de navegação anónima
+Name[pt_BR]=Nova janela anônima
+Name[ro]=Fereastră nouă incognito
+Name[ru]=Новое окно в режиме инкогнито
+Name[sk]=Nové okno inkognito
+Name[sl]=Novo okno brez beleženja zgodovine
+Name[sr]=Нови прозор за прегледање без архивирања
+Name[sv]=Nytt inkognitofönster
+Name[ta]=புதிய மறைநிலைச் சாளரம்
+Name[te]=క్రొత్త అజ్ఞాత విండో
+Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
+Name[tr]=Yeni Gizli pencere
+Name[uk]=Нове вікно в режимі анонімного перегляду
+Name[vi]=Cửa sổ ẩn danh mới
+Name[zh_CN]=新建隐身窗口
+Name[zh_TW]=新增無痕式視窗
+Exec=chromium --incognito
diff --git a/files/event.patch b/files/event.patch
new file mode 100644
--- /dev/null
+++ b/files/event.patch
@@ -0,0 +1,82 @@
+description: build using system libevent
+author: Michael Gilbert <mgilbert@debian.org>
+
+--- a/third_party/webrtc/rtc_base/task_queue_libevent.cc
++++ b/third_party/webrtc/rtc_base/task_queue_libevent.cc
+@@ -16,7 +16,7 @@
+ #include <unistd.h>
+ #include <list>
+
+-#include "base/third_party/libevent/event.h"
++#include <event.h>
+ #include "rtc_base/checks.h"
+ #include "rtc_base/criticalsection.h"
+ #include "rtc_base/logging.h"
+--- a/tools/gn/bootstrap/bootstrap.py
++++ b/tools/gn/bootstrap/bootstrap.py
+@@ -643,26 +643,6 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/time/time_conversion_posix.cc',
+ 'base/trace_event/heap_profiler_allocation_register_posix.cc',
+ ])
+- static_libraries['libevent'] = {
+- 'sources': [
+- 'base/third_party/libevent/buffer.c',
+- 'base/third_party/libevent/evbuffer.c',
+- 'base/third_party/libevent/evdns.c',
+- 'base/third_party/libevent/event.c',
+- 'base/third_party/libevent/event_tagging.c',
+- 'base/third_party/libevent/evrpc.c',
+- 'base/third_party/libevent/evutil.c',
+- 'base/third_party/libevent/http.c',
+- 'base/third_party/libevent/log.c',
+- 'base/third_party/libevent/poll.c',
+- 'base/third_party/libevent/select.c',
+- 'base/third_party/libevent/signal.c',
+- 'base/third_party/libevent/strlcpy.c',
+- ],
+- 'tool': 'cc',
+- 'include_dirs': [],
+- 'cflags': cflags + ['-DHAVE_CONFIG_H'],
+- }
+
+ if is_linux or is_aix:
+ ldflags.extend(['-pthread'])
+@@ -696,13 +676,7 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/allocator/allocator_shim.cc',
+ 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc',
+ ])
+- libs.extend(['-lrt', '-latomic', '-lnspr4'])
+- static_libraries['libevent']['include_dirs'].extend([
+- os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux')
+- ])
+- static_libraries['libevent']['sources'].extend([
+- 'base/third_party/libevent/epoll.c',
+- ])
++ libs.extend(['-lrt', '-latomic', '-lnspr4', '-levent'])
+ else:
+ ldflags.extend(['-pthread'])
+ libs.extend(['-lrt'])
+@@ -742,12 +716,6 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/time/time_mac.cc',
+ 'base/threading/platform_thread_mac.mm',
+ ])
+- static_libraries['libevent']['include_dirs'].extend([
+- os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'mac')
+- ])
+- static_libraries['libevent']['sources'].extend([
+- 'base/third_party/libevent/kqueue.c',
+- ])
+
+ libs.extend([
+ '-framework', 'AppKit',
+--- a/base/message_loop/message_pump_libevent.cc
++++ b/base/message_loop/message_pump_libevent.cc
+@@ -14,7 +14,7 @@
+ #include "base/files/file_util.h"
+ #include "base/logging.h"
+ #include "base/posix/eintr_wrapper.h"
+-#include "base/third_party/libevent/event.h"
++#include <event.h>
+ #include "base/time/time.h"
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
diff --git a/files/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch b/files/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch
new file mode 100644
--- /dev/null
+++ b/files/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch
@@ -0,0 +1,53 @@
+From f15e8b573ada0fcd643ae393484214b1c7c940f8 Mon Sep 17 00:00:00 2001
+From: Evangelos Foutras <evangelos@foutrelis.com>
+Date: Sat, 24 Mar 2018 00:04:33 +0000
+Subject: [PATCH] Fix crash in is_cfi=true builds with unbundled ICU
+
+Ensure ICU symbols have public visibility and are thus excluded from CFI
+checks and whole-program optimization. The former caused a startup crash
+and the latter has the potential to break virtual calls in weird ways.
+
+BUG=822820
+
+Change-Id: Ia809eefcb9e93b3c612f2381d394db83bbc67120
+Reviewed-on: https://chromium-review.googlesource.com/978008
+Reviewed-by: Peter Collingbourne <pcc@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#545638}
+---
+ build/linux/unbundle/icu.gn | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn
+index 5bdd91555df7..4450e409dba5 100644
+--- a/build/linux/unbundle/icu.gn
++++ b/build/linux/unbundle/icu.gn
+@@ -17,6 +17,24 @@ config("icu_config") {
+ "USING_SYSTEM_ICU=1",
+ "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
+ "UCHAR_TYPE=uint16_t",
++
++ # U_EXPORT (defined in unicode/platform.h) is used to set public visibility
++ # on classes through the U_COMMON_API and U_I18N_API macros (among others).
++ # When linking against the system ICU library, we want its symbols to have
++ # public LTO visibility. This disables CFI checks for the ICU classes and
++ # allows whole-program optimization to be applied to the rest of Chromium.
++ #
++ # Both U_COMMON_API and U_I18N_API macros would be defined to U_EXPORT only
++ # when U_COMBINED_IMPLEMENTATION is defined (see unicode/utypes.h). Because
++ # we override the default system UCHAR_TYPE (char16_t), it is not possible
++ # to use U_COMBINED_IMPLEMENTATION at this moment, meaning the U_COMMON_API
++ # and U_I18N_API macros are set to U_IMPORT which is an empty definition.
++ #
++ # Until building with UCHAR_TYPE=char16_t is supported, one way to apply
++ # public visibility (and thus public LTO visibility) to all ICU classes is
++ # to define U_IMPORT to have the same value as U_EXPORT. For more details,
++ # please see: https://crbug.com/822820
++ "U_IMPORT=U_EXPORT",
+ ]
+ }
+
+--
+2.16.3
+
diff --git a/files/fuzzers.patch b/files/fuzzers.patch
new file mode 100644
--- /dev/null
+++ b/files/fuzzers.patch
@@ -0,0 +1,15 @@
+description: fuzzers aren't built, so don't depend on them
+author: Michael Gilbert <mgilbert@debian.org>
+
+--- a/BUILD.gn
++++ b/BUILD.gn
+@@ -698,8 +698,7 @@ group("gn_all") {
+ }
+ }
+
+- if ((is_linux && !is_chromeos && !is_chromecast) || (is_win && use_drfuzz) ||
+- (use_libfuzzer && is_mac)) {
++ if (false) {
+ deps += [
+ "//testing/libfuzzer/fuzzers",
+ "//testing/libfuzzer/tests:libfuzzer_tests",
diff --git a/files/gn-build-config b/files/gn-build-config
new file mode 100644
--- /dev/null
+++ b/files/gn-build-config
@@ -0,0 +1,26 @@
+cc_wrapper="ccache"
+clang_base_path="/usr/"
+clang_use_chrome_plugins=false
+enable_hangout_services_extension=true
+enable_nacl=false
+enable_swiftshader=false
+enable_widevine=true
+ffmpeg_branding="ChromeOS"
+is_official_build=true
+link_pulseaudio=true
+linux_use_bundled_binutils=false
+proprietary_codecs=true
+remove_webcore_debug_symbols=true
+symbol_level=0
+treat_warnings_as_errors=false
+use_custom_libcxx=false
+use_gnome_keyring=false
+use_jumbo_build=true
+use_system_freetype=true
+use_system_harfbuzz=true
+use_system_lcms2=true
+use_system_libjpeg=true
+use_system_zlib=true
+use_sysroot=false
+use_xkbcommon=true
+use_vaapi=true
diff --git a/files/lcms2.patch b/files/lcms2.patch
new file mode 100644
--- /dev/null
+++ b/files/lcms2.patch
@@ -0,0 +1,30 @@
+description: use system lcms2
+author: Michael Gilbert <mgilbert@debian.org>
+bug-debian: http://bugs.debian.org/879153
+
+--- a/third_party/pdfium/BUILD.gn
++++ b/third_party/pdfium/BUILD.gn
+@@ -194,6 +194,7 @@ jumbo_static_library("pdfium") {
+ ":fxge",
+ ":fxjs",
+ ":pwl",
++ "third_party:lcms2",
+ "third_party:bigint",
+ "third_party:pdfium_base",
+ ]
+@@ -687,6 +688,7 @@ jumbo_static_library("fpdftext") {
+ configs += [ ":pdfium_core_config" ]
+ deps = [
+ ":fxcrt",
++ "third_party:lcms2",
+ ]
+ }
+
+@@ -1081,6 +1083,7 @@ jumbo_static_library("fxge") {
+
+ deps = [
+ ":fxcrt",
++ "third_party:lcms2",
+ ]
+
+ defines = [ "DEFINE_PS_TABLES" ]
diff --git a/files/libcxx.patch b/files/libcxx.patch
new file mode 100644
--- /dev/null
+++ b/files/libcxx.patch
@@ -0,0 +1,100 @@
+description: avoid chromium's embedded C++ library when bootstrapping gn
+author: Michael Gilbert <mgilbert@debian.org>
+
+--- a/tools/gn/bootstrap/bootstrap.py
++++ b/tools/gn/bootstrap/bootstrap.py
+@@ -663,6 +663,8 @@ def write_gn_ninja(path, root_gen_dir, o
+ }
+
+ if is_linux or is_aix:
++ ldflags.extend(['-pthread'])
++
+ static_libraries['xdg_user_dirs'] = {
+ 'sources': [
+ 'base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc',
+@@ -688,85 +690,6 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/threading/platform_thread_linux.cc',
+ ])
+ if is_linux:
+- libcxx_root = SRC_ROOT + '/buildtools/third_party/libc++/trunk'
+- libcxxabi_root = SRC_ROOT + '/buildtools/third_party/libc++abi/trunk'
+- cflags_cc.extend([
+- '-nostdinc++',
+- '-isystem' + libcxx_root + '/include',
+- '-isystem' + libcxxabi_root + '/include',
+- ])
+- ldflags.extend(['-nodefaultlibs'])
+- libs.extend([
+- '-lc',
+- '-lgcc_s',
+- '-lm',
+- '-lpthread',
+- ])
+- static_libraries['libc++'] = {
+- 'sources': [
+- libcxx_root + '/src/algorithm.cpp',
+- libcxx_root + '/src/any.cpp',
+- libcxx_root + '/src/bind.cpp',
+- libcxx_root + '/src/chrono.cpp',
+- libcxx_root + '/src/condition_variable.cpp',
+- libcxx_root + '/src/debug.cpp',
+- libcxx_root + '/src/exception.cpp',
+- libcxx_root + '/src/functional.cpp',
+- libcxx_root + '/src/future.cpp',
+- libcxx_root + '/src/hash.cpp',
+- libcxx_root + '/src/ios.cpp',
+- libcxx_root + '/src/iostream.cpp',
+- libcxx_root + '/src/locale.cpp',
+- libcxx_root + '/src/memory.cpp',
+- libcxx_root + '/src/mutex.cpp',
+- libcxx_root + '/src/new.cpp',
+- libcxx_root + '/src/optional.cpp',
+- libcxx_root + '/src/random.cpp',
+- libcxx_root + '/src/regex.cpp',
+- libcxx_root + '/src/shared_mutex.cpp',
+- libcxx_root + '/src/stdexcept.cpp',
+- libcxx_root + '/src/string.cpp',
+- libcxx_root + '/src/strstream.cpp',
+- libcxx_root + '/src/system_error.cpp',
+- libcxx_root + '/src/thread.cpp',
+- libcxx_root + '/src/typeinfo.cpp',
+- libcxx_root + '/src/utility.cpp',
+- libcxx_root + '/src/valarray.cpp',
+- libcxx_root + '/src/variant.cpp',
+- libcxx_root + '/src/vector.cpp',
+- ],
+- 'tool': 'cxx',
+- 'cflags': cflags + [
+- '-D_LIBCPP_NO_EXCEPTIONS',
+- '-D_LIBCPP_BUILDING_LIBRARY',
+- '-DLIBCXX_BUILDING_LIBCXXABI',
+- ]
+- }
+- static_libraries['libc++abi'] = {
+- 'sources': [
+- libcxxabi_root + '/src/abort_message.cpp',
+- libcxxabi_root + '/src/cxa_aux_runtime.cpp',
+- libcxxabi_root + '/src/cxa_default_handlers.cpp',
+- libcxxabi_root + '/src/cxa_demangle.cpp',
+- libcxxabi_root + '/src/cxa_exception_storage.cpp',
+- libcxxabi_root + '/src/cxa_guard.cpp',
+- libcxxabi_root + '/src/cxa_handlers.cpp',
+- libcxxabi_root + '/src/cxa_noexception.cpp',
+- libcxxabi_root + '/src/cxa_unexpected.cpp',
+- libcxxabi_root + '/src/cxa_vector.cpp',
+- libcxxabi_root + '/src/cxa_virtual.cpp',
+- libcxxabi_root + '/src/fallback_malloc.cpp',
+- libcxxabi_root + '/src/private_typeinfo.cpp',
+- libcxxabi_root + '/src/stdlib_exception.cpp',
+- libcxxabi_root + '/src/stdlib_stdexcept.cpp',
+- libcxxabi_root + '/src/stdlib_typeinfo.cpp',
+- ],
+- 'tool': 'cxx',
+- 'cflags': cflags + [
+- '-DLIBCXXABI_SILENT_TERMINATE',
+- '-D_LIBCXXABI_NO_EXCEPTIONS',
+- ]
+- }
+ static_libraries['base']['sources'].extend([
+ 'base/allocator/allocator_shim.cc',
+ 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc',
diff --git a/files/nspr.patch b/files/nspr.patch
new file mode 100644
--- /dev/null
+++ b/files/nspr.patch
@@ -0,0 +1,65 @@
+description: use system nspr library
+author: Michael Gilbert <mgilbert@debian.org>
+
+--- a/base/time/pr_time_unittest.cc
++++ b/base/time/pr_time_unittest.cc
+@@ -7,7 +7,7 @@
+
+ #include "base/compiler_specific.h"
+ #include "base/macros.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr/prtime.h>
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+--- a/base/time/time.cc
++++ b/base/time/time.cc
+@@ -14,7 +14,7 @@
+ #include "base/macros.h"
+ #include "base/no_destructor.h"
+ #include "base/strings/stringprintf.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr/prtime.h>
+ #include "base/time/time_override.h"
+ #include "build/build_config.h"
+
+--- a/tools/gn/bootstrap/bootstrap.py
++++ b/tools/gn/bootstrap/bootstrap.py
+@@ -555,7 +555,6 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/third_party/dmg_fp/dtoa_wrapper.cc',
+ 'base/third_party/dmg_fp/g_fmt.cc',
+ 'base/third_party/icu/icu_utf.cc',
+- 'base/third_party/nspr/prtime.cc',
+ 'base/threading/post_task_and_reply_impl.cc',
+ 'base/threading/scoped_blocking_call.cc',
+ 'base/threading/sequence_local_storage_map.cc',
+@@ -697,7 +696,7 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/allocator/allocator_shim.cc',
+ 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc',
+ ])
+- libs.extend(['-lrt', '-latomic'])
++ libs.extend(['-lrt', '-latomic', '-lnspr4'])
+ static_libraries['libevent']['include_dirs'].extend([
+ os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux')
+ ])
+--- a/base/BUILD.gn
++++ b/base/BUILD.gn
+@@ -76,6 +76,9 @@ config("base_flags") {
+ "-Wexit-time-destructors",
+ ]
+ }
++ ldflags = [
++ "-lnspr4",
++ ]
+ }
+
+ config("base_implementation") {
+@@ -883,8 +886,6 @@ jumbo_component("base") {
+ "third_party/dmg_fp/g_fmt.cc",
+ "third_party/icu/icu_utf.cc",
+ "third_party/icu/icu_utf.h",
+- "third_party/nspr/prtime.cc",
+- "third_party/nspr/prtime.h",
+ "third_party/superfasthash/superfasthash.c",
+ "thread_annotations.h",
+ "threading/platform_thread.h",
diff --git a/files/openjpeg.patch b/files/openjpeg.patch
new file mode 100644
--- /dev/null
+++ b/files/openjpeg.patch
@@ -0,0 +1,117 @@
+description: build using system openjpeg
+author: Michael Gilbert <mgilbert@debian.org>
+
+--- a/third_party/pdfium/third_party/BUILD.gn
++++ b/third_party/pdfium/third_party/BUILD.gn
+@@ -368,38 +368,11 @@ config("fx_libopenjpeg_warnings") {
+ }
+ }
+
+-static_library("fx_libopenjpeg") {
+- configs -= [ "//build/config/compiler:chromium_code" ]
+- configs += [
+- "//build/config/compiler:no_chromium_code",
+- ":pdfium_third_party_config",
+-
+- # Must be after no_chromium_code for warning flags to be ordered correctly.
+- ":fx_libopenjpeg_warnings",
+- ]
+- sources = [
+- "libopenjpeg20/bio.c",
+- "libopenjpeg20/cio.c",
+- "libopenjpeg20/dwt.c",
+- "libopenjpeg20/event.c",
+- "libopenjpeg20/function_list.c",
+- "libopenjpeg20/image.c",
+- "libopenjpeg20/invert.c",
+- "libopenjpeg20/j2k.c",
+- "libopenjpeg20/jp2.c",
+- "libopenjpeg20/mct.c",
+- "libopenjpeg20/mqc.c",
+- "libopenjpeg20/openjpeg.c",
+- "libopenjpeg20/opj_clock.c",
+- "libopenjpeg20/pi.c",
+- "libopenjpeg20/sparse_array.c",
+- "libopenjpeg20/sparse_array.h",
+- "libopenjpeg20/t1.c",
+- "libopenjpeg20/t2.c",
+- "libopenjpeg20/tcd.c",
+- "libopenjpeg20/tgt.c",
+- "libopenjpeg20/thread.c",
+- ]
++pkg_config("libopenjpeg_from_pkgconfig") {
++ packages = [ "libopenjp2" ]
++}
++group("fx_libopenjpeg") {
++ public_configs = [ ":libopenjpeg_from_pkgconfig" ]
+ }
+
+ config("system_libpng_config") {
+--- a/third_party/pdfium/core/fxcodec/codec/codec_int.h
++++ b/third_party/pdfium/core/fxcodec/codec/codec_int.h
+@@ -15,7 +15,7 @@
+ #include <vector>
+
+ #include "core/fxcodec/jbig2/JBig2_Context.h"
+-#include "third_party/libopenjpeg20/openjpeg.h"
++#include <openjpeg-2.3/openjpeg.h>
+
+ class CPDF_ColorSpace;
+
+--- a/third_party/pdfium/core/fxcodec/codec/fx_codec_jpx_opj.cpp
++++ b/third_party/pdfium/core/fxcodec/codec/fx_codec_jpx_opj.cpp
+@@ -16,8 +16,6 @@
+ #include "core/fxcrt/fx_memory.h"
+ #include "core/fxcrt/fx_safe_types.h"
+ #include "third_party/base/ptr_util.h"
+-#include "third_party/libopenjpeg20/openjpeg.h"
+-#include "third_party/libopenjpeg20/opj_malloc.h"
+
+ namespace {
+
+@@ -513,7 +511,6 @@ bool CJPX_Decoder::Init(const unsigned c
+ m_Image = nullptr;
+ return false;
+ }
+- m_Image->pdfium_use_colorspace = !!m_ColorSpace;
+
+ if (!m_Parameters.nb_tile_to_decode) {
+ if (!opj_set_decode_area(m_Codec, m_Image, m_Parameters.DA_x0,
+@@ -550,7 +547,7 @@ bool CJPX_Decoder::Init(const unsigned c
+ // TODO(palmer): Using |opj_free| here resolves the crash described in
+ // https://crbug.com/737033, but ultimately we need to harmonize the
+ // memory allocation strategy across OpenJPEG and its PDFium callers.
+- opj_free(m_Image->icc_profile_buf);
++ free(m_Image->icc_profile_buf);
+ m_Image->icc_profile_buf = nullptr;
+ m_Image->icc_profile_len = 0;
+ }
+--- a/third_party/pdfium/core/fxcodec/codec/cjpx_decoder.h
++++ b/third_party/pdfium/core/fxcodec/codec/cjpx_decoder.h
+@@ -12,7 +12,7 @@
+
+ #include "core/fxcodec/codec/codec_int.h"
+ #include "core/fxcrt/unowned_ptr.h"
+-#include "third_party/libopenjpeg20/openjpeg.h"
++#include <openjpeg-2.3/openjpeg.h>
+
+ class CPDF_ColorSpace;
+
+--- a/third_party/pdfium/BUILD.gn
++++ b/third_party/pdfium/BUILD.gn
+@@ -21,7 +21,6 @@ config("pdfium_common_config") {
+ ldflags = []
+ include_dirs = [ "." ]
+ defines = [
+- "OPJ_STATIC",
+ "PNG_PREFIX",
+ "PNG_USE_READ_MACROS",
+ ]
+@@ -80,7 +79,6 @@ config("pdfium_core_config") {
+ if (is_linux) {
+ if (current_cpu == "x64") {
+ defines += [ "_FX_CPU_=_FX_X64_" ]
+- cflags += [ "-fPIC" ]
+ } else if (current_cpu == "x86") {
+ defines += [ "_FX_CPU_=_FX_X86_" ]
+ }
diff --git a/files/parallel.patch b/files/parallel.patch
new file mode 100644
--- /dev/null
+++ b/files/parallel.patch
@@ -0,0 +1,22 @@
+description: respect specified number of parallel jobs while bootstrapping gn
+author: Michael Gilbert <mgilbert@debian.org>
+
+--- a/tools/gn/bootstrap/bootstrap.py
++++ b/tools/gn/bootstrap/bootstrap.py
+@@ -115,6 +115,7 @@ def main(argv):
+ 'relative to the src directory. (eg. out/Release)')
+ parser.add_option('-v', '--verbose', action='store_true',
+ help='Log more details')
++ parser.add_option('-j', '--jobs', help='Number of jobs')
+ options, args = parser.parse_args(argv)
+
+ if args:
+@@ -236,6 +237,8 @@ def build_gn_with_ninja_manually(tempdir
+ cmd = ['ninja', '-C', tempdir, '-w', 'dupbuild=err']
+ if options.verbose:
+ cmd.append('-v')
++ if options.jobs:
++ cmd.append('-j'+str(options.jobs))
+
+ if is_win:
+ cmd.append('gn.exe')
diff --git a/files/series b/files/series
new file mode 100644
--- /dev/null
+++ b/files/series
@@ -0,0 +1,11 @@
+parallel.patch
+libcxx.patch
+nspr.patch
+event.patch
+lcms2.patch
+vpx.patch
+openjpeg.patch
+fuzzers.patch
+chromium-widevine-r1.patch
+fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch
+vaapi.patch
diff --git a/files/unbundle.py b/files/unbundle.py
new file mode 100644
--- /dev/null
+++ b/files/unbundle.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python3
+
+import os
+import sys
+import shutil
+
+sys.path.append("build/linux/unbundle")
+
+import replace_gn_files
+
+def strip(path):
+ if os.path.exists(path):
+ for filename in os.listdir(path):
+ remove=True
+ for extension in ('.py','.gn','.gni','google','chromium'):
+ if filename.endswith(extension):
+ remove=False
+ if remove:
+ removal=os.path.join(path,filename)
+ print('removing: %s'%removal)
+ if os.path.isdir(removal):
+ shutil.rmtree(removal)
+ else:
+ os.remove(removal)
+
+keepers = (
+ 'third_party/openh264'
+ 'third_party/flot'
+ 'third_party/ffmpeg'
+)
+
+for lib,rule in replace_gn_files.REPLACEMENTS.items():
+ if lib not in keepers:
+ # remove conflicting embedded third party source files
+ strip(os.path.dirname(rule))
+ strip(os.path.join('third_party',lib))
+ # remove the gn file that builds the embedded library
+ if os.path.lexists(rule):
+ os.remove(rule)
+ # create a symlink to the unbundle gn file
+ symlink = "ln -s "
+ path = os.path.split(rule)
+ while path[0] != '':
+ path = os.path.split(path[0])
+ symlink += '../'
+ symlink += "build/linux/unbundle/%s.gn %s"%(lib,rule)
+ if os.system(symlink):
+ raise RuntimeError("error creating symlink",symlink)
+
+# libjpeg_turbo is unlike all the others, so clean it manually here
+strip('third_party/libjpeg_turbo')
diff --git a/files/vaapi.patch b/files/vaapi.patch
new file mode 100644
--- /dev/null
+++ b/files/vaapi.patch
@@ -0,0 +1,539 @@
+From e95d904578c265a84f117d7d5eff598423f9283d Mon Sep 17 00:00:00 2001
+From: Daniel Charles <daniel.charles@intel.com>
+Date: Fri, 09 Feb 2018 14:39:27 -0800
+Subject: [PATCH] Enable VAVDA, VAVEA and VAJDA on linux with VAAPI only
+
+This patch contains all the changes necessary to use VA-API along with
+vaapi-driver to run all media use cases supported with hardware acceleration.
+
+It is intended to remain as experimental accessible from chrome://flags on linux.
+It requires libva/intel-vaapi-driver to be installed on the system path where
+chrome is executed. Other drivers could be tested if available. Flags are
+kept independent for linux, where this feature has to be enabled before
+actually using it. This should not change how other OSes use the flags
+already, the new flags will show at the buttom on the section of unavailable
+experiments
+
+The changes cover a range of compiler pre-processor flags to enable the stack.
+It moves the presandbox operations to the vaapi_wrapper class as the hook function
+is available there. vaInit will open driver on the correct installed folder.
+
+chrome flags consolidtation into only two flags for linux. Mjpeg and accelerated
+video are used. The other flags are kept for ChromeOS and other OSes.
+
+Developer testing was made on skylake hardware, ChromeOS and Ubuntu.
+
+BUG=NONE
+TEST=subjective testing with VAVDA,VAVEA and VAJDA, autotest for encoder
+ and decoder hardware accelerated
+ have libva/intel-vaapi-driver installed and not installed in the system
+ repeat on different hardware families
+
+Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
+Change-Id: Ifbbf5c9e5221a8b5733fc6d4d0cf984a1f103171
+Signed-off-by: Daniel Charles <daniel.charles@intel.com>
+---
+
+--- a/chrome/browser/about_flags.cc
++++ b/chrome/browser/about_flags.cc
+@@ -1234,12 +1234,14 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kUiPartialSwapDescription, kOsAll,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)},
+ #if BUILDFLAG(ENABLE_WEBRTC)
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+ {"disable-webrtc-hw-decoding", flag_descriptions::kWebrtcHwDecodingName,
+ flag_descriptions::kWebrtcHwDecodingDescription, kOsAndroid | kOsCrOS,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding)},
+ {"disable-webrtc-hw-encoding", flag_descriptions::kWebrtcHwEncodingName,
+ flag_descriptions::kWebrtcHwEncodingDescription, kOsAndroid | kOsCrOS,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding)},
++#endif
+ {"enable-webrtc-hw-h264-encoding",
+ flag_descriptions::kWebrtcHwH264EncodingName,
+ flag_descriptions::kWebrtcHwH264EncodingDescription, kOsAndroid | kOsCrOS,
+@@ -1553,6 +1555,13 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kShowTouchHudDescription, kOsCrOS,
+ SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud)},
+ #endif // OS_CHROMEOS
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ {
++ "enable-accelerated-video", flag_descriptions::kAcceleratedVideoName,
++ flag_descriptions::kAcceleratedVideoDescription, kOsLinux,
++ SINGLE_VALUE_TYPE(switches::kEnableAcceleratedVideo),
++ },
++#else
+ {
+ "disable-accelerated-video-decode",
+ flag_descriptions::kAcceleratedVideoDecodeName,
+@@ -1560,6 +1569,7 @@ const FeatureEntry kFeatureEntries[] = {
+ kOsMac | kOsWin | kOsCrOS | kOsAndroid,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
+ },
++#endif
+ #if defined(OS_WIN)
+ {"enable-hdr", flag_descriptions::kEnableHDRName,
+ flag_descriptions::kEnableHDRDescription, kOsWin,
+@@ -2283,12 +2293,17 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kOpenVR)},
+ #endif // ENABLE_OPENVR
+ #endif // ENABLE_VR
+-#if defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ {"enable-accelerated-mjpeg-decode",
++ flag_descriptions::kAcceleratedMjpegDecodeName,
++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsLinux,
++ SINGLE_VALUE_TYPE(switches::kEnableAcceleratedMjpegDecode)},
++#elif defined(OS_CHROMEOS)
+ {"disable-accelerated-mjpeg-decode",
+ flag_descriptions::kAcceleratedMjpegDecodeName,
+ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
+-#endif // OS_CHROMEOS
++#endif
+ {"v8-cache-options", flag_descriptions::kV8CacheOptionsName,
+ flag_descriptions::kV8CacheOptionsDescription, kOsAll,
+ MULTI_VALUE_TYPE(kV8CacheOptionsChoices)},
+--- a/chrome/browser/chromeos/login/chrome_restart_request.cc
++++ b/chrome/browser/chromeos/login/chrome_restart_request.cc
+@@ -19,6 +19,7 @@
+ #include "base/sys_info.h"
+ #include "base/timer/timer.h"
+ #include "base/values.h"
++#include "build/build_config.h"
+ #include "cc/base/switches.h"
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/chromeos/boot_times_recorder.h"
+@@ -84,9 +85,14 @@ void DeriveCommandLine(const GURL& start
+ ::switches::kDisable2dCanvasImageChromium,
+ ::switches::kDisableAccelerated2dCanvas,
+ ::switches::kDisableAcceleratedJpegDecoding,
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ ::switches::kEnableAcceleratedMjpegDecode,
++ ::switches::kEnableAcceleratedVideo,
++#else
+ ::switches::kDisableAcceleratedMjpegDecode,
+ ::switches::kDisableAcceleratedVideoDecode,
+ ::switches::kDisableAcceleratedVideoEncode,
++#endif
+ ::switches::kDisableBlinkFeatures,
+ ::switches::kDisableCastStreamingHWEncoding,
+ ::switches::kDisableDistanceFieldText,
+@@ -163,7 +169,7 @@ void DeriveCommandLine(const GURL& start
+ ::switches::kDisableWebGLImageChromium,
+ ::switches::kEnableWebGLImageChromium,
+ ::switches::kEnableWebVR,
+-#if BUILDFLAG(ENABLE_WEBRTC)
++#if BUILDFLAG(ENABLE_WEBRTC) && (defined(OS_CHROMEOS) || defined(OS_ANDROID))
+ ::switches::kDisableWebRtcHWDecoding,
+ ::switches::kDisableWebRtcHWEncoding,
+ #endif
+--- a/chrome/browser/flag_descriptions.cc
++++ b/chrome/browser/flag_descriptions.cc
+@@ -14,6 +14,13 @@ const char kAccelerated2dCanvasDescripti
+ "Enables the use of the GPU to perform 2d canvas rendering instead of "
+ "using software rendering.";
+
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++const char kAcceleratedVideoName[] = "Hardware-accelerated video";
++const char kAcceleratedVideoDescription[] =
++ "Hardware-accelerated video where VA-API driver is installed on the"
++ "system.";
++#endif
++
+ const char kAcceleratedVideoDecodeName[] = "Hardware-accelerated video decode";
+ const char kAcceleratedVideoDecodeDescription[] =
+ "Hardware-accelerated video decode where available.";
+@@ -1730,6 +1737,7 @@ const char kWebrtcEchoCanceller3Name[] =
+ const char kWebrtcEchoCanceller3Description[] =
+ "Experimental WebRTC echo canceller (AEC3).";
+
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+ const char kWebrtcHwDecodingName[] = "WebRTC hardware video decoding";
+ const char kWebrtcHwDecodingDescription[] =
+ "Support in WebRTC for decoding video streams using platform hardware.";
+@@ -1737,6 +1745,7 @@ const char kWebrtcHwDecodingDescription[
+ const char kWebrtcHwEncodingName[] = "WebRTC hardware video encoding";
+ const char kWebrtcHwEncodingDescription[] =
+ "Support in WebRTC for encoding video streams using platform hardware.";
++#endif
+
+ const char kWebrtcHwH264EncodingName[] = "WebRTC hardware h264 video encoding";
+ const char kWebrtcHwH264EncodingDescription[] =
+@@ -2561,14 +2570,16 @@ const char kTabStripKeyboardFocusDescrip
+
+ // Chrome OS -------------------------------------------------------------------
+
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+
+ const char kAcceleratedMjpegDecodeName[] =
+ "Hardware-accelerated mjpeg decode for captured frame";
+ const char kAcceleratedMjpegDecodeDescription[] =
+ "Enable hardware-accelerated mjpeg decode for captured frame where "
+ "available.";
++#endif
+
++#if defined(OS_CHROMEOS)
+ const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click";
+ const char kAllowTouchpadThreeFingerClickDescription[] =
+ "Enables touchpad three-finger-click as middle button.";
+--- a/chrome/browser/flag_descriptions.h
++++ b/chrome/browser/flag_descriptions.h
+@@ -37,6 +37,10 @@ namespace flag_descriptions {
+ extern const char kAccelerated2dCanvasName[];
+ extern const char kAccelerated2dCanvasDescription[];
+
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++extern const char kAcceleratedVideoName[];
++extern const char kAcceleratedVideoDescription[];
++#endif
+ extern const char kAcceleratedVideoDecodeName[];
+ extern const char kAcceleratedVideoDecodeDescription[];
+
+@@ -1569,13 +1573,17 @@ extern const char kPermissionPromptPersi
+
+ #endif // defined(OS_MACOSX)
+
+-// Chrome OS ------------------------------------------------------------------
+-
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+
+ extern const char kAcceleratedMjpegDecodeName[];
+ extern const char kAcceleratedMjpegDecodeDescription[];
+
++#endif
++
++// Chrome OS ------------------------------------------------------------------
++
++#if defined(OS_CHROMEOS)
++
+ extern const char kAllowTouchpadThreeFingerClickName[];
+ extern const char kAllowTouchpadThreeFingerClickDescription[];
+
+--- a/content/browser/gpu/compositor_util.cc
++++ b/content/browser/gpu/compositor_util.cc
+@@ -99,7 +99,11 @@ const GpuFeatureData GetGpuFeatureData(s
+ {"video_decode",
+ manager->GetFeatureStatus(
+ gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ !command_line.HasSwitch(switches::kEnableAcceleratedVideo),
++#else
+ command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode),
++#endif
+ "Accelerated video decode has been disabled, either via blacklist,"
+ " about:flags or the command line.",
+ true},
+--- a/content/browser/gpu/gpu_process_host.cc
++++ b/content/browser/gpu/gpu_process_host.cc
+@@ -132,7 +132,7 @@ static const char* const kSwitchNames[]
+ switches::kDisableGLExtensions,
+ switches::kDisableLogging,
+ switches::kDisableShaderNameHashing,
+-#if BUILDFLAG(ENABLE_WEBRTC)
++#if BUILDFLAG(ENABLE_WEBRTC) && !defined(OS_LINUX)
+ switches::kDisableWebRtcHWEncoding,
+ #endif
+ #if defined(OS_WIN)
+--- a/content/browser/renderer_host/media/video_capture_browsertest.cc
++++ b/content/browser/renderer_host/media/video_capture_browsertest.cc
+@@ -163,8 +163,13 @@ class VideoCaptureBrowserTest : public C
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kUseFakeJpegDecodeAccelerator);
+ } else {
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ base::CommandLine::ForCurrentProcess()->AppendSwitch(
++ switches::kEnableAcceleratedMjpegDecode);
++#else
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kDisableAcceleratedMjpegDecode);
++#endif
+ }
+ }
+
+--- a/content/browser/renderer_host/media/video_capture_gpu_jpeg_decoder.cc
++++ b/content/browser/renderer_host/media/video_capture_gpu_jpeg_decoder.cc
+@@ -65,15 +65,21 @@ void VideoCaptureGpuJpegDecoder::Initial
+ bool is_platform_supported =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kUseFakeJpegDecodeAccelerator);
+-#if defined(OS_CHROMEOS)
+- // Non-ChromeOS platforms do not support HW JPEG decode now. Do not establish
+- // gpu channel to avoid introducing overhead.
++#if !defined(OS_ANDROID) && defined(OS_LINUX)
++ // Non-ChromeOS or Non-Linux platforms do not support HW JPEG decode now. Do
++ // not establish gpu channel to avoid introducing overhead.
+ is_platform_supported = true;
+ #endif
+
+ if (!is_platform_supported ||
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ !base::CommandLine::ForCurrentProcess()->HasSwitch(
++ switches::kEnableAcceleratedMjpegDecode)
++#else
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+- switches::kDisableAcceleratedMjpegDecode)) {
++ switches::kDisableAcceleratedMjpegDecode)
++#endif
++ ) {
+ decoder_status_ = FAILED;
+ RecordInitDecodeUMA_Locked();
+ return;
+--- a/content/browser/renderer_host/render_process_host_impl.cc
++++ b/content/browser/renderer_host/render_process_host_impl.cc
+@@ -2524,7 +2524,11 @@ void RenderProcessHostImpl::PropagateBro
+ switches::kDefaultTileHeight,
+ switches::kDisable2dCanvasImageChromium,
+ switches::kDisableAcceleratedJpegDecoding,
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ switches::kEnableAcceleratedVideo,
++#else
+ switches::kDisableAcceleratedVideoDecode,
++#endif
+ switches::kDisableBackgroundTimerThrottling,
+ switches::kDisableBreakpad,
+ switches::kDisableCompositorUkmForTests,
+@@ -2658,8 +2662,10 @@ void RenderProcessHostImpl::PropagateBro
+ switches::kDisableMojoRenderer,
+ #endif
+ #if BUILDFLAG(ENABLE_WEBRTC)
++#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
+ switches::kDisableWebRtcHWDecoding,
+ switches::kDisableWebRtcHWEncoding,
++#endif
+ switches::kEnableWebRtcSrtpAesGcm,
+ switches::kEnableWebRtcSrtpEncryptedHeaders,
+ switches::kEnableWebRtcStunOrigin,
+--- a/content/browser/webrtc/webrtc_media_recorder_browsertest.cc
++++ b/content/browser/webrtc/webrtc_media_recorder_browsertest.cc
+@@ -58,7 +58,12 @@ class WebRtcMediaRecorderTest
+ return;
+ // This flag is also used for encoding, https://crbug.com/616640.
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+- switches::kDisableAcceleratedVideoDecode);
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ switches::kEnableAcceleratedVideo
++#else
++ switches::kDisableAcceleratedVideoDecode
++#endif
++ );
+ }
+
+ private:
+--- a/content/gpu/BUILD.gn
++++ b/content/gpu/BUILD.gn
+@@ -130,4 +130,8 @@ target(link_target_type, "gpu_sources")
+ (!is_chromecast || is_cast_desktop_build)) {
+ configs += [ "//build/config/linux/dri" ]
+ }
++
++ if (is_desktop_linux) {
++ public_configs = [ "//media/gpu:libva_config" ]
++ }
+ }
+--- a/content/gpu/gpu_main.cc
++++ b/content/gpu/gpu_main.cc
+@@ -286,7 +286,7 @@ int GpuMain(const MainFunctionParams& pa
+
+ base::PlatformThread::SetName("CrGpuMain");
+
+-#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX)
+ // Set thread priority before sandbox initialization.
+ base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY);
+ #endif
+@@ -315,7 +315,7 @@ int GpuMain(const MainFunctionParams& pa
+ GetContentClient()->SetGpuInfo(gpu_init->gpu_info());
+
+ base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL;
+-#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX)
+ io_thread_priority = base::ThreadPriority::DISPLAY;
+ #endif
+
+--- a/content/public/browser/gpu_utils.cc
++++ b/content/public/browser/gpu_utils.cc
+@@ -7,6 +7,7 @@
+ #include "base/command_line.h"
+ #include "base/single_thread_task_runner.h"
+ #include "base/strings/string_number_conversions.h"
++#include "build/build_config.h"
+ #include "content/browser/gpu/gpu_process_host.h"
+ #include "content/public/common/content_features.h"
+ #include "content/public/common/content_switches.h"
+@@ -55,9 +56,17 @@ const gpu::GpuPreferences GetGpuPreferen
+ gpu_preferences.in_process_gpu =
+ command_line->HasSwitch(switches::kInProcessGPU);
+ gpu_preferences.disable_accelerated_video_decode =
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ !command_line->HasSwitch(switches::kEnableAcceleratedVideo);
++#else
+ command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode);
++#endif
+ gpu_preferences.disable_accelerated_video_encode =
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ !command_line->HasSwitch(switches::kEnableAcceleratedVideo);
++#else
+ command_line->HasSwitch(switches::kDisableAcceleratedVideoEncode);
++#endif
+ #if defined(OS_WIN)
+ uint32_t enable_accelerated_vpx_decode_val =
+ gpu::GpuPreferences::VPX_VENDOR_MICROSOFT;
+--- a/content/public/common/content_switches.cc
++++ b/content/public/common/content_switches.cc
+@@ -78,12 +78,21 @@ const char kDisable3DAPIs[]
+
+ // Disable gpu-accelerated 2d canvas.
+ const char kDisableAccelerated2dCanvas[] = "disable-accelerated-2d-canvas";
+-
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++// Enable hardware accelerated mjpeg decode on linux
++const char kEnableAcceleratedMjpegDecode[] = "enable-accelerated-mjpeg-decode";
++#else
+ // Disable hardware acceleration of mjpeg decode for captured frame, where
+ // available.
+ const char kDisableAcceleratedMjpegDecode[] =
+ "disable-accelerated-mjpeg-decode";
++#endif
+
++#if defined(OS_LINUX)
++// Enables hardware acceleration of video for Linux only. VA-API driver
++// is required to be present on the system installation.
++const char kEnableAcceleratedVideo[] = "enable-accelerated-video";
++#endif
+ // Disables hardware acceleration of video decode, where available.
+ const char kDisableAcceleratedVideoDecode[] =
+ "disable-accelerated-video-decode";
+@@ -859,11 +868,13 @@ const char kZygoteProcess[]
+ // ignores this switch on its stable and beta channels.
+ const char kDisableWebRtcEncryption[] = "disable-webrtc-encryption";
+
++#if defined(OS_CHROMEOS)
+ // Disables HW decode acceleration for WebRTC.
+ const char kDisableWebRtcHWDecoding[] = "disable-webrtc-hw-decoding";
+
+ // Disables HW encode acceleration for WebRTC.
+ const char kDisableWebRtcHWEncoding[] = "disable-webrtc-hw-encoding";
++#endif
+
+ // Enables negotiation of GCM cipher suites from RFC 7714 for SRTP in WebRTC.
+ // See https://tools.ietf.org/html/rfc7714 for further information.
+--- a/content/public/common/content_switches.h
++++ b/content/public/common/content_switches.h
+@@ -33,7 +33,11 @@ CONTENT_EXPORT extern const char kDisabl
+ CONTENT_EXPORT extern const char kDisable3DAPIs[];
+ CONTENT_EXPORT extern const char kDisableAccelerated2dCanvas[];
+ CONTENT_EXPORT extern const char kDisableAcceleratedJpegDecoding[];
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++CONTENT_EXPORT extern const char kEnableAcceleratedMjpegDecode[];
++#else
+ CONTENT_EXPORT extern const char kDisableAcceleratedMjpegDecode[];
++#endif
+ CONTENT_EXPORT extern const char kDisableAcceleratedVideoDecode[];
+ CONTENT_EXPORT extern const char kDisableAcceleratedVideoEncode[];
+ CONTENT_EXPORT extern const char kDisableAudioSupportForDesktopShare[];
+@@ -106,6 +110,9 @@ CONTENT_EXPORT extern const char kDisabl
+ CONTENT_EXPORT extern const char kDomAutomationController[];
+ extern const char kDisable2dCanvasClipAntialiasing[];
+ CONTENT_EXPORT extern const char kDumpBlinkRuntimeCallStats[];
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++CONTENT_EXPORT extern const char kEnableAcceleratedVideo[];
++#endif
+ CONTENT_EXPORT extern const char kEnableAggressiveDOMStorageFlushing[];
+ CONTENT_EXPORT extern const char kEnableAutomation[];
+ CONTENT_EXPORT extern const char kEnablePreferCompositingToLCDText[];
+@@ -240,8 +247,10 @@ CONTENT_EXPORT extern const char kZygote
+
+ #if BUILDFLAG(ENABLE_WEBRTC)
+ CONTENT_EXPORT extern const char kDisableWebRtcEncryption[];
++#if defined(OS_CHROMEOS)
+ CONTENT_EXPORT extern const char kDisableWebRtcHWDecoding[];
+ CONTENT_EXPORT extern const char kDisableWebRtcHWEncoding[];
++#endif
+ CONTENT_EXPORT extern const char kEnableWebRtcSrtpAesGcm[];
+ CONTENT_EXPORT extern const char kEnableWebRtcSrtpEncryptedHeaders[];
+ CONTENT_EXPORT extern const char kEnableWebRtcStunOrigin[];
+--- a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
++++ b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
+@@ -282,10 +282,18 @@ void PeerConnectionDependencyFactory::In
+
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+ if (gpu_factories && gpu_factories->IsGpuVideoAcceleratorEnabled()) {
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ if (cmd_line->HasSwitch(switches::kEnableAcceleratedVideo))
++#else
+ if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWDecoding))
++#endif
+ decoder_factory.reset(new RTCVideoDecoderFactory(gpu_factories));
+
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ if (cmd_line->HasSwitch(switches::kEnableAcceleratedVideo))
++#else
+ if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWEncoding))
++#endif
+ encoder_factory.reset(new RTCVideoEncoderFactory(gpu_factories));
+ }
+
+--- a/content/renderer/render_thread_impl.cc
++++ b/content/renderer/render_thread_impl.cc
+@@ -1581,7 +1581,11 @@ media::GpuVideoAcceleratorFactories* Ren
+ scoped_refptr<base::SingleThreadTaskRunner> media_task_runner =
+ GetMediaThreadTaskRunner();
+ const bool enable_video_accelerator =
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++ cmd_line->HasSwitch(switches::kEnableAcceleratedVideo) &&
++#else
+ !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) &&
++#endif
+ (gpu_channel_host->gpu_feature_info()
+ .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] ==
+ gpu::kGpuFeatureStatusEnabled);
+--- a/gpu/config/software_rendering_list.json
++++ b/gpu/config/software_rendering_list.json
+@@ -373,17 +373,6 @@
+ ]
+ },
+ {
+- "id": 48,
+- "description": "Accelerated video decode is unavailable on Linux",
+- "cr_bugs": [137247],
+- "os": {
+- "type": "linux"
+- },
+- "features": [
+- "accelerated_video_decode"
+- ]
+- },
+- {
+ "id": 50,
+ "description": "Disable VMware software renderer on older Mesa",
+ "cr_bugs": [145531, 332596, 571899, 629434],
+--- a/media/gpu/BUILD.gn
++++ b/media/gpu/BUILD.gn
+@@ -482,6 +482,14 @@ if (use_v4l2_codec || use_vaapi || is_ma
+ }
+ }
+
++if (is_desktop_linux && use_vaapi) {
++ import("//build/config/linux/pkg_config.gni")
++
++ pkg_config("libva_config") {
++ packages = [ "libva" ]
++ }
++}
++
+ if (use_vaapi) {
+ test("jpeg_encode_accelerator_unittest") {
+ deps = [
+@@ -542,6 +550,10 @@ if (use_v4l2_codec || use_vaapi) {
+ if (use_ozone) {
+ deps += [ "//ui/ozone" ]
+ }
++
++ if (is_desktop_linux) {
++ public_configs = [ ":libva_config" ]
++ }
+ }
+ }
+
diff --git a/files/vpx.patch b/files/vpx.patch
new file mode 100644
--- /dev/null
+++ b/files/vpx.patch
@@ -0,0 +1,18 @@
+description: new vp9 implementation tries to access data members that don't exist
+author: chromium 65 authors
+
+--- a/third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
++++ b/third_party/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
+@@ -716,10 +716,8 @@ int VP9EncoderImpl::GetEncodedLayerFrame
+ encoded_image_.content_type_ = (codec_.mode == kScreensharing)
+ ? VideoContentType::SCREENSHARE
+ : VideoContentType::UNSPECIFIED;
+- encoded_image_._encodedHeight =
+- pkt->data.frame.height[layer_id.spatial_layer_id];
+- encoded_image_._encodedWidth =
+- pkt->data.frame.width[layer_id.spatial_layer_id];
++ encoded_image_._encodedHeight = raw_->d_h;
++ encoded_image_._encodedWidth = raw_->d_w;
+ encoded_image_.timing_.flags = TimingFrameFlags::kInvalid;
+ int qp = -1;
+ vpx_codec_control(encoder_, VP8E_GET_LAST_QUANTIZER, &qp);
diff --git a/package.yml b/package.yml
new file mode 100644
--- /dev/null
+++ b/package.yml
@@ -0,0 +1,127 @@
+name : chromium
+version : '66.0.3359.139'
+release : 1
+source :
+ - https://commondatastorage.googleapis.com/chromium-browser-official/chromium-66.0.3359.139.tar.xz : be75a5b5f8c5789d359238f374a43bf52ded49425f13ed68b8021c24e2e264b2
+license :
+ - Apache-2.0
+ - BSD-3-Clause
+ - GPL-3.0-or-later
+ - IJG
+ - ISC
+ - LGPL-3.0-or-later
+ - MIT
+ - MPL-1.1
+ - OpenSSL
+component : network.web.browser
+summary : A web browser built for speed, simplicity, and security
+description: |
+ Chromium is an open-source web browser project started by Google, to provide the source code for the proprietary Google Chrome browser. The two browsers share the majority of code and features, though there are some minor differences in features, logos and they have different licensing.
+clang : yes
+builddeps :
+ - pkgconfig(alsa)
+ - pkgconfig(flac)
+ - pkgconfig(gtk+-3.0)
+ - pkgconfig(json-glib-1.0)
+ - pkgconfig(krb5-gssapi)
+ - pkgconfig(lcms2)
+ - pkgconfig(libavcodec)
+ - pkgconfig(libevent)
+ - pkgconfig(libjpeg)
+ - pkgconfig(libopenjp2)
+ - pkgconfig(libpci)
+ - pkgconfig(libpulse)
+ - pkgconfig(libva)
+ - pkgconfig(libwebp)
+ - pkgconfig(libxslt)
+ - pkgconfig(minizip)
+ - pkgconfig(nss)
+ - pkgconfig(opus)
+ - pkgconfig(vpx)
+ - pkgconfig(xscrnsaver)
+ - pkgconfig(xtst)
+ - cups-devel
+ - git
+ - gperf
+ - nodejs
+ - re2-devel
+ - snappy-devel
+ - yasm
+setup : |
+ %apply_patches
+
+ # Remove bundled dependancies to force chromium to use system libraries
+ mv $pkgfiles/unbundle.py $workdir/
+ python3 unbundle.py
+
+ # Export build config & keys
+ FLAGS=(`cat $pkgfiles/gn-build-config`)
+ API_KEYS=(`cat $pkgfiles/api-keys`)
+
+ # Allow building against system libraries in official builds
+ sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+ tools/generate_shim_headers/generate_shim_headers.py
+
+ # Bootstrap GN with build configuration
+ python tools/gn/bootstrap/bootstrap.py %JOBS% --gn-gen-args "${FLAGS[*]} ${API_KEYS[*]}" -v
+build : |
+ # Link system nodejs to thirdparty
+ mkdir -p third_party/node/linux/node-linux-x64/bin
+ ln -s /usr/bin/node $workdir/third_party/node/linux/node-linux-x64/bin/node
+
+ # chromium
+ ninja %JOBS% -C out/Release -v chrome chrome_sandbox chromedriver widevinecdmadapter
+
+ # remote desktop
+ #export GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=
+ #ninja -C out/Release -v remoting_me2me_host remoting_start_host remoting_native_messaging_host remoting_native_messaging_manifests remoting/webapp
+install : |
+ # install binary to $PATH
+ install -Dm00755 out/Release/chrome $installdir/usr/share/chromium/chromium
+ install -dm00755 $installdir/usr/bin
+ ln -sv /usr/share/chromium/chromium $installdir/usr/bin/chromium
+
+ # chromium
+ cp -a \
+ out/Release/{chrome_{100,200}_percent,resources}.pak \
+ out/Release/{*.bin,chromedriver,chrome_sandbox,libwidevinecdmadapter.so} \
+ out/Release/locales \
+ $installdir/usr/share/chromium/
+
+ # Set right permissions for sandbox
+ chmod 4755 $installdir/usr/share/chromium/chrome_sandbox
+
+ # headless shell support
+ # install -Dm00644 out/Release/headless_lib.pak $installdir/usr/share/chromium/headless_lib.pak
+ # install -Dm00755 out/Release/headless_shell $installdir/usr/share/chromium/headless_shell
+
+ # desktop file
+ install -Dm00644 $pkgfiles/chromium.desktop $installdir/usr/share/applications/chromium-browser.desktop
+
+ # man page
+ install -Dm00644 chrome/app/resources/manpage.1.in $installdir/usr/share/man/man1/chromium.1
+
+ # icons
+ for size in 22 24 48 64 128 256; do
+ install -Dm00644 chrome/app/theme/chromium/product_logo_$size.png \
+ $installdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png
+ done
+ for size in 16 32; do
+ install -Dm00644 chrome/app/theme/default_100_percent/chromium/product_logo_$size.png \
+ $installdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png
+ done
+
+ # appstream data
+ install -Dm00644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
+ $installdir/usr/share/metainfo/chromium-browser.appdata.xml
+
+ # Remote Desktop Webapp
+ # TODO - SEE remoting/host/installer/linux/Makefile & fedora spec file
+ #cp -a \
+ # out/Release/remoting_native_messaging_host \
+ # out/Release/remote_assistance_host \
+ # out/Release/remoting_locales \
+ # remoting_me2me_host \
+ # remoting_start_host \
+ # remoting_user_session \
+ #$installdir/usr/share/chromium/
diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml
new file mode 100644
--- /dev/null
+++ b/pspec_x86_64.xml
@@ -0,0 +1,54 @@
+<PISI>
+ <Source>
+ <Name>chromium</Name>
+ <Packager>
+ <Name>Joey Riches</Name>
+ <Email>josephriches@gmail.com</Email>
+ </Packager>
+ <License>Apache-2.0</License>
+ <License>BSD-3-Clause</License>
+ <License>GPL-3.0-or-later</License>
+ <License>IJG</License>
+ <License>ISC</License>
+ <License>LGPL-3.0-or-later</License>
+ <License>MIT</License>
+ <License>MPL-1.1</License>
+ <License>OpenSSL</License>
+ <PartOf>network.web.browser</PartOf>
+ <Summary xml:lang="en">A web browser built for speed, simplicity, and security</Summary>
+ <Description xml:lang="en">Chromium is an open-source web browser project started by Google, to provide the source code for the proprietary Google Chrome browser. The two browsers share the majority of code and features, though there are some minor differences in features, logos and they have different licensing.
+</Description>
+ <Archive type="binary" sha1sum="79eb0752a961b8e0d15c77d298c97498fbc89c5a">https://solus-project.com/sources/README.Solus</Archive>
+ </Source>
+ <Package>
+ <Name>chromium</Name>
+ <Summary xml:lang="en">A web browser built for speed, simplicity, and security</Summary>
+ <Description xml:lang="en">Chromium is an open-source web browser project started by Google, to provide the source code for the proprietary Google Chrome browser. The two browsers share the majority of code and features, though there are some minor differences in features, logos and they have different licensing.
+</Description>
+ <PartOf>network.web.browser</PartOf>
+ <Files>
+ <Path fileType="executable">/usr/bin</Path>
+ <Path fileType="data">/usr/share/applications/chromium-browser.desktop</Path>
+ <Path fileType="data">/usr/share/chromium</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/128x128/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/16x16/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/22x22/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/24x24/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/256x256/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/32x32/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/48x48/apps/chromium.png</Path>
+ <Path fileType="data">/usr/share/icons/hicolor/64x64/apps/chromium.png</Path>
+ <Path fileType="man">/usr/share/man</Path>
+ <Path fileType="data">/usr/share/metainfo/chromium-browser.appdata.xml</Path>
+ </Files>
+ </Package>
+ <History>
+ <Update release="1">
+ <Date>2018-05-04</Date>
+ <Version>66.0.3359.139</Version>
+ <Comment>Packaging update</Comment>
+ <Name>Joey Riches</Name>
+ <Email>josephriches@gmail.com</Email>
+ </Update>
+ </History>
+</PISI>
\ No newline at end of file
diff --git a/todo.txt b/todo.txt
new file mode 100644
--- /dev/null
+++ b/todo.txt
@@ -0,0 +1,63 @@
+
+VIEW ALL BUILD FLAGS
+./out/Release/gn args --list out/Release | less
+
+SYSTEM LIBRARIES
+ffmpeg - working but using bundled for vivialdi/opera
+flac - working
+freetype - working
+harfbuzz-ng - working
+icu - working
+libdrm - working
+libevent - working
+libjpeg - working
+libpng - working
+libvpx - working
+libwebp - working
+libxml - working
+openh264 - not in repo, using bundled
+opus - working
+re2 - working
+snappy - working
+yasm - working
+zlib(minizip) - working
+
+HOW TO BUILD WITH SYSTEM CXXFLAGS
+in gn-build-config add
+
+custom_toolchain="//build/toolchain/linux/unbundle:default"
+host_toolchain="//build/toolchain/linux/unbundle:default"
+
+in gn-build-config you can probably remove these
+cc_wrapper="ccache"
+clang_base_path="/usr/"
+
+in setup of package.yml add
+export AR=ar
+export NM=nm
+
+OTHER/FUTURE
+use system protobuf? theres no flag for it though
+use system hunspell?
+replace boringssl with system ssl?
+fix build with system html5lib BeautifulSoup([your markup], "html5lib")
+
+--use_bundled_pylibs - as this is not a boolean flag we can't use system pylibs, not that it would work anyway.
+
+use_system_sqlite
+ Current value (from the default) = false
+ From //third_party/sqlite/BUILD.gn:11
+
+ Controls whether the build should uses the version of sqlite3 library
+ shipped with the system (currently only supported on iOS) or the one
+ shipped with Chromium source.
+
+remove third_party/mesa
+remove third_party/liblouis (use pkgconfig(liblouis))?
+remove third_party/swig (use swig package)?
+remove third_party/ply (use python-ply)?
+remove third_party/pywebsocket (disable or use python-mod/pywebsocket)?
+remove base/third_party/xdg_mime (use support in xdg-utils)?
+remove crypto/third_party/nss?
+
+(DONE)is_component_ffmpeg - this allows for, of the third party libraries, only libffmpeg to be built seperately as a .so. We could enable this and create symlinks for vivaldi and opera without the need for a seperate chromium-ffmpeg package. However, we are stuck to using chromium's ffmpeg forever, when the system ffmpeg works fine, there is also the possibility of a future chromium update breaking h264 playback for vivaldi and opera, a seperate chromium-ffmpeg would resolve that issue as we could update chromium but only update chromium-ffmpeg as required for compatibility.

File Metadata

Mime Type
text/plain
Expires
Mon, Aug 7, 9:15 AM (1 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5803239
Default Alt Text
D985.id7006.diff (64 KB)

Event Timeline