diff --git a/chromium/PKGBUILD b/chromium/PKGBUILD new file mode 100644 index 0000000..5d8de17 --- /dev/null +++ b/chromium/PKGBUILD @@ -0,0 +1,117 @@ +# +# Chakra Packages for Chakra, part of chakra-project.org +# + +pkgname=chromium +pkgver=26.0.1410.63 +pkgrel=1 +_verbld=26.0.1410.63-192696 # used for libpdf and pepper-flash +_pepperflashver=11.7.700.169 +pkgdesc="The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser" +arch=('x86_64') +url="http://www.chromium.org/" +license=('BSD') +depends=('gtk2' 'dbus-glib' 'nss' 'alsa-lib' 'xdg-utils' 'bzip2' 'libevent' 'harfbuzz' + 'libxss' 'libgcrypt' 'ttf-dejavu' 'desktop-file-utils' 'hicolor-icon-theme' 'systemd' 'speech-dispatcher' 'filesystem-extra') +makedepends=('python2' 'perl' 'gperf' 'yasm' 'mesa' 'libgnome-keyring' 'elfutils' 'subversion') +install=chromium.install +source=(http://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz + http://dl.google.com/linux/chrome/rpm/stable/${CARCH}/google-chrome-stable-${_verbld}.${CARCH}.rpm + license.html::http://www.google.com/chrome/intl/en/eula_text.html + chromium.desktop + chromium.sh + chromium.default + template_url_prepopulate_data.diff + search_engine_type.diff + prepopulated_engines_json.diff + system-libpng.patch + chromium-20.0.1132.57-glib-2.16-use-siginfo_t.patch) +sha1sums=('3e0f15bded75561d09aace52712cd24fe799dcb6' + '295df87c2983b425258d33fc44e97b92afc352cc' + 'cdda47faa791d56089f92854957070b1ec135c2e' + 'd02e7eaaa5de9407d8744a03a1306c117b659098' + 'e4b853a245fe47ce37fd0035e9671b65f98bd2be' + '3d9663f614113c137016fadb963e150f11f17402' + '90619af5afa000b47ac03ab01b7cba8b6d16daa1' + 'f7a705d539361d63fa0e3fe0e276341c87d484fc' + '4ac33284c534b5117741b551cc531589cfa08d75' + 'bfb59a53456272c901b8e4eb872069ff99a2cbeb' + '73fc081513282ae94fe7a050f3636f8d3056b49e') + +build() { + cd "$srcdir/chromium-$pkgver" + + # Set DDG as default search + patch -p1 -i "$srcdir/chromium-20.0.1132.57-glib-2.16-use-siginfo_t.patch" + patch -p1 -i "$srcdir/template_url_prepopulate_data.diff" + patch -p1 -i "$srcdir/search_engine_type.diff" + patch -p1 -i "$srcdir/prepopulated_engines_json.diff" + + + build/gyp_chromium --depth=. \ + -Dwerror= \ + -Dlinux_sandbox_path=/extra/usr/lib/chromium/chromium-sandbox \ + -Dlinux_strip_binary=1 \ + -Dlinux_use_gold_binary=0 \ + -Dlinux_use_gold_flags=0 \ + -Drelease_extra_cflags="$CFLAGS" \ + -Dffmpeg_branding=Chrome \ + -Dproprietary_codecs=1 \ + -Duse_system_bzip2=1 \ + -Duse_system_ffmpeg=0 \ + -Duse_system_libevent=1 \ + -Duse_system_libjpeg=1 \ + -Duse_system_libpng=1 \ + -Duse_system_libxml=0 \ + -Duse_system_ssl=0 \ + -Duse_system_yasm=1 \ + -Duse_system_zlib=0 \ + -Duse_gconf=0 \ + -Ddisable_nacl=1 + + make chrome chrome_sandbox BUILDTYPE=Release +} + +package() { + cd "$srcdir/chromium-$pkgver" + + install -D out/Release/chrome ${pkgdir}/extra/usr/lib/chromium/chromium + + install -Dm4755 -o root -g root out/Release/chrome_sandbox \ + "$pkgdir/extra/usr/lib/chromium/chromium-sandbox" + + cp out/Release/{*.pak,libffmpegsumo.so} \ + "$pkgdir/extra/usr/lib/chromium/" + + # override command-line options + install -Dm644 "$srcdir/chromium.default" "$pkgdir/extra/etc/chromium/default" + + cp -a out/Release/locales out/Release/resources "$pkgdir/extra/usr/lib/chromium/" + + find "$pkgdir/extra/usr/lib/chromium/" -name '*.d' -type f -delete + + install -Dm644 out/Release/chrome.1 "$pkgdir/extra/usr/share/man/man1/chromium.1" + + install -Dm644 "$srcdir/chromium.desktop" \ + "$pkgdir/extra/usr/share/applications/chromium.desktop" + + for size in 22 24 48 64 128 256; do + install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ + "$pkgdir/extra/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + install -D "$srcdir/chromium.sh" "$pkgdir/extra/usr/bin/chromium" + + install -Dm644 LICENSE "$pkgdir/extra/usr/share/licenses/chromium/LICENSE" + + #### PepperFlash #### + cd "$srcdir" + install -d "$pkgdir/extra/usr/lib/PepperFlash" + install -m644 opt/google/chrome/PepperFlash/* "$pkgdir/extra/usr/lib/PepperFlash" + sed -i "s/flashver=.*/flashver=$_pepperflashver/" "$startdir/chromium.install" + install -Dm644 "$srcdir/license.html" "$pkgdir/extra/usr/share/licenses/$pkgname/license.html" + + #### libpdf #### + install -d "${pkgdir}/extra/usr/lib/chromium" + install -m644 opt/google/chrome/libpdf.so "${pkgdir}/extra/usr/lib/chromium" +} diff --git a/chromium/chromium-20.0.1132.57-glib-2.16-use-siginfo_t.patch b/chromium/chromium-20.0.1132.57-glib-2.16-use-siginfo_t.patch new file mode 100644 index 0000000..1d11a39 --- /dev/null +++ b/chromium/chromium-20.0.1132.57-glib-2.16-use-siginfo_t.patch @@ -0,0 +1,35 @@ +diff -upr chromium-20.0.1132.57.orig/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h chromium-20.0.1132.57/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h +--- chromium-20.0.1132.57.orig/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h 2012-07-10 10:48:31.000000000 +0300 ++++ chromium-20.0.1132.57/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h 2012-07-11 23:44:11.000000000 +0300 +@@ -243,14 +243,13 @@ struct kernel_rusage { + long ru_nivcsw; + }; + +-struct siginfo; + #if defined(__i386__) || defined(__arm__) || defined(__PPC__) + + /* include/asm-{arm,i386,mips,ppc}/signal.h */ + struct kernel_old_sigaction { + union { + void (*sa_handler_)(int); +- void (*sa_sigaction_)(int, struct siginfo *, void *); ++ void (*sa_sigaction_)(int, siginfo_t *, void *); + }; + unsigned long sa_mask; + unsigned long sa_flags; +@@ -287,13 +286,13 @@ struct kernel_sigaction { + unsigned long sa_flags; + union { + void (*sa_handler_)(int); +- void (*sa_sigaction_)(int, struct siginfo *, void *); ++ void (*sa_sigaction_)(int, siginfo_t *, void *); + }; + struct kernel_sigset_t sa_mask; + #else + union { + void (*sa_handler_)(int); +- void (*sa_sigaction_)(int, struct siginfo *, void *); ++ void (*sa_sigaction_)(int, siginfo_t *, void *); + }; + unsigned long sa_flags; + void (*sa_restorer)(void); diff --git a/chromium/chromium-26.0.1410.43-speechd-0.8.patch b/chromium/chromium-26.0.1410.43-speechd-0.8.patch new file mode 100644 index 0000000..c2e11e6 --- /dev/null +++ b/chromium/chromium-26.0.1410.43-speechd-0.8.patch @@ -0,0 +1,11 @@ +--- chromium-browser-26.0.1410.19/src/build/linux/system.gyp~ 2013-03-04 00:04:06.000000000 +0200 ++++ chromium-browser-26.0.1410.19/src/build/linux/system.gyp 2013-03-04 13:45:31.822101677 +0200 +@@ -494,7 +494,7 @@ + '--name', 'LibSpeechdLoader', + '--output-h', '<(output_h)', + '--output-cc', '<(output_cc)', +- '--header', '', ++ '--header', '', + '--link-directly=<(linux_link_libspeechd)', + 'spd_open', + 'spd_say', diff --git a/chromium/chromium.default b/chromium/chromium.default new file mode 100644 index 0000000..92fdcec --- /dev/null +++ b/chromium/chromium.default @@ -0,0 +1,5 @@ +# Default settings for chromium. This file is sourced by /usr/bin/chromium + +# Options to pass to chromium +# flash-version updated dynamically with .install file +CHROMIUM_FLAGS="--ppapi-flash-path=/extra/usr/lib/PepperFlash/libpepflashplayer.so --ppapi-flash-version=1.2.3.4" \ No newline at end of file diff --git a/chromium/chromium.desktop b/chromium/chromium.desktop new file mode 100644 index 0000000..a379197 --- /dev/null +++ b/chromium/chromium.desktop @@ -0,0 +1,67 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=Chromium +# Only KDE 4 seems to use GenericName, so we reuse the KDE strings. +# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413. +GenericName=Web Browser +GenericName[ar]=متصفح الشبكة +GenericName[bg]=Уеб браузър +GenericName[ca]=Navegador web +GenericName[cs]=WWW prohlížeč +GenericName[da]=Browser +GenericName[de]=Web-Browser +GenericName[el]=Περιηγητής ιστού +GenericName[en_GB]=Web Browser +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gu]=વેબ બ્રાઉઝર +GenericName[he]=דפדפן אינטרנט +GenericName[hi]=वेब ब्राउज़र +GenericName[hu]=Webböngésző +GenericName[it]=Browser Web +GenericName[ja]=ウェブブラウザ +GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ +GenericName[ko]=웹 브라우저 +GenericName[lt]=Žiniatinklio naršyklė +GenericName[lv]=Tīmekļa pārlūks +GenericName[ml]=വെബ് ബ്രൌസര്‍ +GenericName[mr]=वेब ब्राऊजर +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador da Internet +GenericName[ro]=Navigator de Internet +GenericName[ru]=Веб-браузер +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[ta]=இணைய உலாவி +GenericName[th]=เว็บเบราว์เซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[uk]=Навігатор Тенет +GenericName[zh_CN]=网页浏览器 +GenericName[zh_HK]=網頁瀏覽器 +GenericName[zh_TW]=網頁瀏覽器 +# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1. +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[fil]=Web Browser +GenericName[hr]=Web preglednik +GenericName[id]=Browser Web +GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର +GenericName[sk]=WWW prehliadač +GenericName[sr]=Интернет прегледник +GenericName[te]=మహాతల అన్వేషి +GenericName[vi]=Bộ duyệt Web +# Gnome and KDE 3 uses Comment. +Comment=Chromium web-browser bundle, including pdf, flash and gtalk plugin +Comment[de]=Chromium web-browser bundel, mit pdf, flash und gtalk plugin +Comment[en_GB]=Chromium web-browser bundle, including pdf, pepper-flash and gtalk plugin +Exec=chromium %U +Terminal=false +Icon=chromium.png +Type=Application +Categories=Application;Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml_xml; diff --git a/chromium/chromium.install b/chromium/chromium.install new file mode 100644 index 0000000..4e63354 --- /dev/null +++ b/chromium/chromium.install @@ -0,0 +1,28 @@ +[ -f extra/etc/chromium-browser/default ] && _default='extra/etc/chromium-browser/default' +[ -f extra/etc/chromium/default ] && _default='extra/etc/chromium/default' +flashver=11.7.700.169 + +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + + if [[ $(cat "$_default") == *ppapi* ]]; then + sed -i "s/ppapi-flash-version=.*[0-9]/ppapi-flash-version=$flashver/g" "$_default" + else + sed -i '/CHROMIUM_FLAGS/s|"$| --ppapi-flash-path=/extra/usr/lib/PepperFlash/libpepflashplayer.so --ppapi-flash-version='$flashver'"|' "$_default" + fi +} + +post_upgrade() { + post_install + +} + +post_remove() { + post_install + + if [ -f "$_default" ]; then + sed -i 's| --ppapi-flash-path=/usr/lib/PepperFlash/libpepflashplayer.so --ppapi-flash-version=1.*[0-999]||' "$_default" + else + : # do nothing + fi +} diff --git a/chromium/chromium.sh b/chromium/chromium.sh new file mode 100755 index 0000000..351c073 --- /dev/null +++ b/chromium/chromium.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Override command-line options +# Based on Gentoo's chromium package (and by extension, Debian's) +if [[ -f /extra/etc/chromium/default ]]; then + . /extra/etc/chromium/default +fi + +# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system +# default CHROMIUM_FLAGS (from /etc/chromium/default) +CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-$CHROMIUM_FLAGS} + +export CHROME_WRAPPER=$(readlink -f "$0") +export CHROME_DESKTOP=chromium.desktop + +exec /extra/usr/lib/chromium/chromium $CHROMIUM_FLAGS "$@" + diff --git a/chromium/prepopulated_engines_json.diff b/chromium/prepopulated_engines_json.diff new file mode 100644 index 0000000..a21885c --- /dev/null +++ b/chromium/prepopulated_engines_json.diff @@ -0,0 +1,18 @@ +--- a/chrome/browser/search_engines/prepopulated_engines.json 2013-02-22 11:04:47.043248397 -0500 ++++ b/chrome/browser/search_engines/prepopulated_engines_new.json 2013-02-22 11:05:02.036900238 -0500 +@@ -788,6 +788,15 @@ + "type": "SEARCH_ENGINE_DELFI", + "id": 45 + }, ++ ++ "duckduckgo": { ++ "name": "DuckDuckGo", ++ "keyword": "duckduckgo.com", ++ "favicon_url": "http://duckduckgo.com/favicon.ico", ++ "search_url": "http://duckduckgo.com/?t=chakra&q={searchTerms}", ++ "type": "SEARCH_ENGINE_DUCKDUCKGO", ++ "id": 6 ++ }, + + "delfi_lv": { + "name": "DELFI", diff --git a/chromium/search_engine_type.diff b/chromium/search_engine_type.diff new file mode 100644 index 0000000..811f1cf --- /dev/null +++ b/chromium/search_engine_type.diff @@ -0,0 +1,10 @@ +--- a/chrome/browser/search_engines/search_engine_type.h 2013-01-07 21:41:59.000000000 -0500 ++++ a/chrome/browser/search_engines/search_engine_type.h 2013-01-10 16:12:16.581024995 -0500 +@@ -27,6 +27,7 @@ + SEARCH_ENGINE_DAUM, + SEARCH_ENGINE_DELFI, + SEARCH_ENGINE_DIRI, ++ SEARCH_ENGINE_DUCKDUCKGO, + SEARCH_ENGINE_GOO, + SEARCH_ENGINE_IN, + SEARCH_ENGINE_NAJDI, diff --git a/chromium/strip.sh b/chromium/strip.sh new file mode 100755 index 0000000..8674403 --- /dev/null +++ b/chromium/strip.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# standard dirs +rm -rf ./usr/share/man +rm -rf ./usr/include + +# wx gtk libs +rm -f ./usr/lib/libwx_gtk2u_{svg,stc,richtext,qa,plot,ogl,media,gl,fl,giz*}-2.8.so* diff --git a/chromium/system-libpng.patch b/chromium/system-libpng.patch new file mode 100644 index 0000000..a4f2f1f --- /dev/null +++ b/chromium/system-libpng.patch @@ -0,0 +1,11 @@ +--- build/shim_headers.gypi.orig 2012-12-20 02:51:12.000000000 +0100 ++++ build/shim_headers.gypi 2012-12-20 02:51:40.000000000 +0100 +@@ -10,7 +10,7 @@ + + { + 'variables': { +- 'shim_headers_path': '<(INTERMEDIATE_DIR)/shim_headers', ++ 'shim_headers_path': '<(SHARED_INTERMEDIATE_DIR)/shim_headers/<(_target_name)', + }, + 'direct_dependent_settings': { + 'include_dirs+': [ diff --git a/chromium/template_url_prepopulate_data.diff b/chromium/template_url_prepopulate_data.diff new file mode 100644 index 0000000..62ff408 --- /dev/null +++ b/chromium/template_url_prepopulate_data.diff @@ -0,0 +1,556 @@ +--- a/chrome/browser/search_engines/template_url_prepopulate_data.cc 2013-01-07 21:41:59.000000000 -0500 ++++ b/chrome/browser/search_engines/template_url_prepopulate_data.cc 2013-01-10 17:15:11.909841488 -0500 +@@ -2455,436 +2468,436 @@ + + // Default (for countries with no better engine set) + const PrepopulatedEngine* engines_default[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // United Arab Emirates + const PrepopulatedEngine* engines_AE[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &araby, &maktoob, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &araby, &maktoob, }; + + // Albania + const PrepopulatedEngine* engines_AL[] = +- { &google, &yahoo, &bing_en_XA, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, }; + + // Argentina + const PrepopulatedEngine* engines_AR[] = +- { &google, &yahoo_ar, &bing_es_AR, &terra_ar, &altavista_ar, }; ++ { &duckduckgo, &google, &yahoo_ar, &bing_es_AR, &terra_ar, &altavista_ar, }; + + // Austria + const PrepopulatedEngine* engines_AT[] = +- { &google, &yahoo_at, &bing_de_AT, }; ++ { &duckduckgo, &google, &yahoo_at, &bing_de_AT, }; + + // Australia + const PrepopulatedEngine* engines_AU[] = +- { &google, &bing_en_AU, &yahoo_au, }; ++ { &duckduckgo, &google, &bing_en_AU, &yahoo_au, }; + + // Bosnia and Herzegovina + const PrepopulatedEngine* engines_BA[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Belgium + const PrepopulatedEngine* engines_BE[] = +- { &google, &bing_nl_BE, &yahoo, &bing_fr_BE, }; ++ { &duckduckgo, &google, &bing_nl_BE, &yahoo, &bing_fr_BE, }; + + // Bulgaria + const PrepopulatedEngine* engines_BG[] = +- { &google, &bing_bg_BG, &yahoo, &diri, &jabse, }; ++ { &duckduckgo, &google, &bing_bg_BG, &yahoo, &diri, &jabse, }; + + // Bahrain + const PrepopulatedEngine* engines_BH[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, }; + + // Burundi + const PrepopulatedEngine* engines_BI[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Brunei + const PrepopulatedEngine* engines_BN[] = +- { &google, &yahoo_malaysia, &bing_en_MY, }; ++ { &duckduckgo, &google, &yahoo_malaysia, &bing_en_MY, }; + + // Bolivia + const PrepopulatedEngine* engines_BO[] = +- { &google, &altavista, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &altavista, &bing_es_XL, &yahoo, }; + + // Brazil + const PrepopulatedEngine* engines_BR[] = +- { &google, &bing_pt_BR, &yahoo_br, &uol, }; ++ { &duckduckgo, &google, &bing_pt_BR, &yahoo_br, &uol, }; + + // Belarus + const PrepopulatedEngine* engines_BY[] = +- { &google, &tut, &yandex_ru, &rambler, &yahoo, }; ++ { &duckduckgo, &google, &tut, &yandex_ru, &rambler, &yahoo, }; + + // Belize + const PrepopulatedEngine* engines_BZ[] = +- { &google, &yahoo, &bing, &aol, }; ++ { &duckduckgo, &google, &yahoo, &bing, &aol, }; + + // Canada + const PrepopulatedEngine* engines_CA[] = +- { &google, &yahoo_ca, &yahoo_qc, &bing_en_CA, &bing_fr_CA, }; ++ { &duckduckgo, &google, &yahoo_ca, &yahoo_qc, &bing_en_CA, &bing_fr_CA, }; + + // Switzerland + const PrepopulatedEngine* engines_CH[] = +- { &google, &yahoo_ch, &bing_de_CH, &bing_fr_CH, &search_de_CH, ++ { &duckduckgo, &google, &yahoo_ch, &bing_de_CH, &bing_fr_CH, &search_de_CH, + &search_fr_CH, }; + + // Chile + const PrepopulatedEngine* engines_CL[] = +- { &google, &yahoo_cl, &bing_es_CL, }; ++ { &duckduckgo, &google, &yahoo_cl, &bing_es_CL, }; + + // China + const PrepopulatedEngine* engines_CN[] = +- { &google, &baidu, &yahoo_cn, &bing_zh_CN, }; ++ { &duckduckgo, &google, &baidu, &yahoo_cn, &bing_zh_CN, }; + + // Colombia + const PrepopulatedEngine* engines_CO[] = +- { &google, &bing_es_XL, &yahoo_co, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo_co, }; + + // Costa Rica + const PrepopulatedEngine* engines_CR[] = +- { &google, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, }; + + // Czech Republic + const PrepopulatedEngine* engines_CZ[] = +- { &google, &seznam, &bing_cs_CZ, ¢rum_cz, &atlas_cz, }; ++ { &duckduckgo, &google, &seznam, &bing_cs_CZ, ¢rum_cz, &atlas_cz, }; + + // Germany + const PrepopulatedEngine* engines_DE[] = +- { &google, &ask_de, &bing_de_DE, &yahoo_de }; ++ { &duckduckgo, &google, &ask_de, &bing_de_DE, &yahoo_de }; + + // Denmark + const PrepopulatedEngine* engines_DK[] = +- { &google, &bing_da_DK, &yahoo_dk, }; ++ { &duckduckgo, &google, &bing_da_DK, &yahoo_dk, }; + + // Dominican Republic + const PrepopulatedEngine* engines_DO[] = +- { &google, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, }; + + // Algeria + const PrepopulatedEngine* engines_DZ[] = +- { &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, }; ++ { &duckduckgo, &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, }; + + // Ecuador + const PrepopulatedEngine* engines_EC[] = +- { &google, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, }; + + // Estonia + const PrepopulatedEngine* engines_EE[] = +- { &google, &bing_et_EE, &neti, &yahoo, }; ++ { &duckduckgo, &google, &bing_et_EE, &neti, &yahoo, }; + + // Egypt + const PrepopulatedEngine* engines_EG[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &masrawy, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &masrawy, }; + + // Spain + const PrepopulatedEngine* engines_ES[] = +- { &google, &ask_es, &bing_es_ES, &yahoo_es, &terra_es, &hispavista, }; ++ { &duckduckgo, &google, &ask_es, &bing_es_ES, &yahoo_es, &terra_es, &hispavista, }; + + // Faroe Islands + const PrepopulatedEngine* engines_FO[] = +- { &google, &bing_da_DK, &yahoo_dk, &jubii }; ++ { &duckduckgo, &google, &bing_da_DK, &yahoo_dk, &jubii }; + + // Finland + const PrepopulatedEngine* engines_FI[] = +- { &google, &bing_fi_FI, &yahoo_fi, &eniro_fi, &fonecta_02_fi, }; ++ { &duckduckgo, &google, &bing_fi_FI, &yahoo_fi, &eniro_fi, &fonecta_02_fi, }; + + // France + const PrepopulatedEngine* engines_FR[] = +- { &google, &yahoo_fr, &bing_fr_FR, }; ++ { &duckduckgo, &google, &yahoo_fr, &bing_fr_FR, }; + + // United Kingdom + const PrepopulatedEngine* engines_GB[] = +- { &google, &ask_uk, &yahoo_uk, &bing_en_GB, }; ++ { &duckduckgo, &google, &ask_uk, &yahoo_uk, &bing_en_GB, }; + + // Greece + const PrepopulatedEngine* engines_GR[] = +- { &google, &yahoo, &in, &bing_el_GR }; ++ { &duckduckgo, &google, &yahoo, &in, &bing_el_GR }; + + // Guatemala + const PrepopulatedEngine* engines_GT[] = +- { &google, &bing_es_XL, &yahoo, &ask_es, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, &ask_es, }; + + // Hong Kong + const PrepopulatedEngine* engines_HK[] = +- { &google, &yahoo_hk, &bing_zh_HK, &baidu, }; ++ { &duckduckgo, &google, &yahoo_hk, &bing_zh_HK, &baidu, }; + + // Honduras + const PrepopulatedEngine* engines_HN[] = +- { &google, &bing_es_XL, &yahoo, &ask_es, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, &ask_es, }; + + // Croatia + const PrepopulatedEngine* engines_HR[] = +- { &google, &yahoo, &bing_hr_HR, }; ++ { &duckduckgo, &google, &yahoo, &bing_hr_HR, }; + + // Hungary + const PrepopulatedEngine* engines_HU[] = +- { &google, &ok, &bing_hu_HU, }; ++ { &duckduckgo, &google, &ok, &bing_hu_HU, }; + + // Indonesia + const PrepopulatedEngine* engines_ID[] = +- { &google, &yahoo_id, &bing_en_ID, }; ++ { &duckduckgo, &google, &yahoo_id, &bing_en_ID, }; + + // Ireland + const PrepopulatedEngine* engines_IE[] = +- { &google, &yahoo_uk, &bing_en_IE, }; ++ { &duckduckgo, &google, &yahoo_uk, &bing_en_IE, }; + + // Israel + const PrepopulatedEngine* engines_IL[] = +- { &google, &walla, &bing_he_IL, }; ++ { &duckduckgo, &google, &walla, &bing_he_IL, }; + + // India + const PrepopulatedEngine* engines_IN[] = +- { &google, &yahoo_in, &bing_en_IN, &rediff, &guruji, }; ++ { &duckduckgo, &google, &yahoo_in, &bing_en_IN, &rediff, &guruji, }; + + // Iraq + const PrepopulatedEngine* engines_IQ[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &ask, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &ask, }; + + // Iran + const PrepopulatedEngine* engines_IR[] = +- { &google, &yahoo, }; ++ { &duckduckgo, &google, &yahoo, }; + + // Iceland + const PrepopulatedEngine* engines_IS[] = +- { &google, &yahoo, &bing, &leit, }; ++ { &duckduckgo, &google, &yahoo, &bing, &leit, }; + + // Italy + const PrepopulatedEngine* engines_IT[] = +- { &google, &ask_it, &virgilio, &bing_it_IT, &yahoo_it, &libero, }; ++ { &duckduckgo, &google, &ask_it, &virgilio, &bing_it_IT, &yahoo_it, &libero, }; + + // Jamaica + const PrepopulatedEngine* engines_JM[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Jordan + const PrepopulatedEngine* engines_JO[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby, }; + + // Japan + const PrepopulatedEngine* engines_JP[] = +- { &google, &yahoo_jp, &bing_ja_JP, &goo, }; ++ { &duckduckgo, &google, &yahoo_jp, &bing_ja_JP, &goo, }; + + // Kenya + const PrepopulatedEngine* engines_KE[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Kuwait + const PrepopulatedEngine* engines_KW[] = +- { &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, &araby, }; ++ { &duckduckgo, &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, &araby, }; + + // South Korea + const PrepopulatedEngine* engines_KR[] = +- { &google, &naver, &daum, &yahoo_kr, &nate, }; ++ { &duckduckgo, &google, &naver, &daum, &yahoo_kr, &nate, }; + + // Kazakhstan + const PrepopulatedEngine* engines_KZ[] = +- { &google, &rambler, &yandex_ru, &nur_kz, }; ++ { &duckduckgo, &google, &rambler, &yandex_ru, &nur_kz, }; + + // Lebanon + const PrepopulatedEngine* engines_LB[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby, }; + + // Liechtenstein + const PrepopulatedEngine* engines_LI[] = +- { &google, &bing_de_DE, &yahoo_de, }; ++ { &duckduckgo, &google, &bing_de_DE, &yahoo_de, }; + + // Lithuania + const PrepopulatedEngine* engines_LT[] = +- { &google, &delfi_lt, &yahoo, &bing_lt_LT, }; ++ { &duckduckgo, &google, &delfi_lt, &yahoo, &bing_lt_LT, }; + + // Luxembourg + const PrepopulatedEngine* engines_LU[] = +- { &google, &bing_fr_FR, &yahoo_fr, }; ++ { &duckduckgo, &google, &bing_fr_FR, &yahoo_fr, }; + + // Latvia + const PrepopulatedEngine* engines_LV[] = +- { &google, &bing, &yandex_ru, &yahoo, &latne, }; ++ { &duckduckgo, &google, &bing, &yandex_ru, &yahoo, &latne, }; + + // Libya + const PrepopulatedEngine* engines_LY[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &ask, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &ask, }; + + // Morocco + const PrepopulatedEngine* engines_MA[] = +- { &google, &bing_en_XA, &yahoo, &bing_ar_XA, }; ++ { &duckduckgo, &google, &bing_en_XA, &yahoo, &bing_ar_XA, }; + + // Monaco + const PrepopulatedEngine* engines_MC[] = +- { &google, &bing_fr_FR, &yahoo_fr, }; ++ { &duckduckgo, &google, &bing_fr_FR, &yahoo_fr, }; + + // Moldova + const PrepopulatedEngine* engines_MD[] = +- { &google, &yandex_ru, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yandex_ru, &yahoo, &bing, }; + + // Montenegro + const PrepopulatedEngine* engines_ME[] = +- { &google, &yahoo, &bing }; ++ { &duckduckgo, &google, &yahoo, &bing }; + + // Macedonia + const PrepopulatedEngine* engines_MK[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Mexico + const PrepopulatedEngine* engines_MX[] = +- { &google, &bing_es_MX, &yahoo_mx, }; ++ { &duckduckgo, &google, &bing_es_MX, &yahoo_mx, }; + + // Malaysia + const PrepopulatedEngine* engines_MY[] = +- { &google, &yahoo_malaysia, &bing_en_MY, }; ++ { &duckduckgo, &google, &yahoo_malaysia, &bing_en_MY, }; + + // Nicaragua + const PrepopulatedEngine* engines_NI[] = +- { &google, &bing_es_XL, &yahoo, &ask_es, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, &ask_es, }; + + // Netherlands + const PrepopulatedEngine* engines_NL[] = +- { &google, &bing_nl_NL, &yahoo_nl, &ask_nl, }; ++ { &duckduckgo, &google, &bing_nl_NL, &yahoo_nl, &ask_nl, }; + + // Norway + const PrepopulatedEngine* engines_NO[] = +- { &google, &bing_nb_NO, &abcsok, &yahoo_no, &kvasir, }; ++ { &duckduckgo, &google, &bing_nb_NO, &abcsok, &yahoo_no, &kvasir, }; + + // New Zealand + const PrepopulatedEngine* engines_NZ[] = +- { &google, &yahoo_nz, &bing_en_NZ, }; ++ { &duckduckgo, &google, &yahoo_nz, &bing_en_NZ, }; + + // Oman + const PrepopulatedEngine* engines_OM[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, }; + + // Panama + const PrepopulatedEngine* engines_PA[] = +- { &google, &bing_es_XL, &yahoo, &ask_es, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, &ask_es, }; + + // Peru + const PrepopulatedEngine* engines_PE[] = +- { &google, &bing_es_XL, &yahoo_pe, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo_pe, }; + + // Philippines + const PrepopulatedEngine* engines_PH[] = +- { &google, &yahoo_ph, &bing_en_PH, }; ++ { &duckduckgo, &google, &yahoo_ph, &bing_en_PH, }; + + // Pakistan + const PrepopulatedEngine* engines_PK[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Puerto Rico + const PrepopulatedEngine* engines_PR[] = +- { &google, &bing_es_XL, &yahoo, &ask_es, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, &ask_es, }; + + // Poland + const PrepopulatedEngine* engines_PL[] = +- { &google, &bing_pl_PL, &netsprint, &yahoo_uk, &onet, &wp, }; ++ { &duckduckgo, &google, &bing_pl_PL, &netsprint, &yahoo_uk, &onet, &wp, }; + + // Portugal + const PrepopulatedEngine* engines_PT[] = +- { &google, &sapo, &bing_pt_PT, &yahoo, }; ++ { &duckduckgo, &google, &sapo, &bing_pt_PT, &yahoo, }; + + // Paraguay + const PrepopulatedEngine* engines_PY[] = +- { &google, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, }; + + // Qatar + const PrepopulatedEngine* engines_QA[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby }; + + // Romania + const PrepopulatedEngine* engines_RO[] = +- { &google, &yahoo_uk, &bing_ro_RO, }; ++ { &duckduckgo, &google, &yahoo_uk, &bing_ro_RO, }; + + // Serbia + const PrepopulatedEngine* engines_RS[] = +- { &google, &pogodak_rs, &bing, }; ++ { &duckduckgo, &google, &pogodak_rs, &bing, }; + + // Russia + const PrepopulatedEngine* engines_RU[] = +- { &google, &yandex_ru, &mail_ru, &tut, &rambler, &bing_ru_RU, }; ++ { &duckduckgo, &google, &yandex_ru, &mail_ru, &tut, &rambler, &bing_ru_RU, }; + + // Rwanda + const PrepopulatedEngine* engines_RW[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Saudi Arabia + const PrepopulatedEngine* engines_SA[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, }; + + // Sweden + const PrepopulatedEngine* engines_SE[] = +- { &google, &bing_sv_SE, &yahoo_se, &altavista_se, &eniro_se }; ++ { &duckduckgo, &google, &bing_sv_SE, &yahoo_se, &altavista_se, &eniro_se }; + + // Singapore + const PrepopulatedEngine* engines_SG[] = +- { &google, &yahoo_sg, &bing_en_SG, &rednano, }; ++ { &duckduckgo, &google, &yahoo_sg, &bing_en_SG, &rednano, }; + + // Slovenia + const PrepopulatedEngine* engines_SI[] = +- { &google, &najdi, &yahoo, &bing_sl_SI, }; ++ { &duckduckgo, &google, &najdi, &yahoo, &bing_sl_SI, }; + + // Slovakia + const PrepopulatedEngine* engines_SK[] = +- { &google, &zoznam, &bing_sk_SK, &atlas_sk, ¢rum_sk }; ++ { &duckduckgo, &google, &zoznam, &bing_sk_SK, &atlas_sk, ¢rum_sk }; + + // El Salvador + const PrepopulatedEngine* engines_SV[] = +- { &google, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, }; + + // Syria + const PrepopulatedEngine* engines_SY[] = +- { &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, &yamli, }; ++ { &duckduckgo, &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, &yamli, }; + + // Thailand + const PrepopulatedEngine* engines_TH[] = +- { &google, &sanook, &yahoo_th, &bing_th_TH, }; ++ { &duckduckgo, &google, &sanook, &yahoo_th, &bing_th_TH, }; + + // Tunisia + const PrepopulatedEngine* engines_TN[] = +- { &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, &yamli }; ++ { &duckduckgo, &google, &bing_en_XA, &yahoo, &bing_ar_XA, &maktoob, &yamli }; + + // Turkey + const PrepopulatedEngine* engines_TR[] = +- { &google, &bing_tr_TR, &yahoo, &mynet, }; ++ { &duckduckgo, &google, &bing_tr_TR, &yahoo, &mynet, }; + + // Trinidad and Tobago + const PrepopulatedEngine* engines_TT[] = +- { &google, &bing, &yahoo, &aol, }; ++ { &duckduckgo, &google, &bing, &yahoo, &aol, }; + + // Taiwan + const PrepopulatedEngine* engines_TW[] = +- { &google, &yahoo_tw, &bing_zh_TW, }; ++ { &duckduckgo, &google, &yahoo_tw, &bing_zh_TW, }; + + // Tanzania + const PrepopulatedEngine* engines_TZ[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + // Ukraine + const PrepopulatedEngine* engines_UA[] = +- { &google, &yandex_ua, &mail_ru, &rambler, }; ++ { &duckduckgo, &google, &yandex_ua, &mail_ru, &rambler, }; + + // United States + const PrepopulatedEngine* engines_US[] = +- { &google, &yahoo, &bing_en_US, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_US, }; + + // Uruguay + const PrepopulatedEngine* engines_UY[] = +- { &google, &bing_es_XL, &yahoo, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo, }; + + // Venezuela + const PrepopulatedEngine* engines_VE[] = +- { &google, &bing_es_XL, &yahoo_ve, }; ++ { &duckduckgo, &google, &bing_es_XL, &yahoo_ve, }; + + // Vietnam + const PrepopulatedEngine* engines_VN[] = +- { &google, &yahoo_vn, }; ++ { &duckduckgo, &google, &yahoo_vn, }; + + // Yemen + const PrepopulatedEngine* engines_YE[] = +- { &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_XA, &bing_ar_XA, &maktoob, &araby, }; + + // South Africa + const PrepopulatedEngine* engines_ZA[] = +- { &google, &yahoo, &bing_en_ZA, }; ++ { &duckduckgo, &google, &yahoo, &bing_en_ZA, }; + + // Zimbabwe + const PrepopulatedEngine* engines_ZW[] = +- { &google, &yahoo, &bing, }; ++ { &duckduckgo, &google, &yahoo, &bing, }; + + + // A list of all the engines that we know about. +@@ -2904,7 +2917,7 @@ + &bing_pt_PT, &bing_ro_RO, &bing_ru_RU, &bing_sl_SI, &bing_sk_SK, + &bing_sv_SE, &bing_th_TH, &bing_tr_TR, &bing_uk_UA, &bing_zh_CN, + &bing_zh_HK, &bing_zh_TW, ¢rum_cz, ¢rum_sk, &daum, &delfi_lt, +- &delfi_lv, &diri, &eniro_fi, &eniro_se, &fonecta_02_fi, &goo, &google, ++ &delfi_lv, &diri, &eniro_fi, &eniro_se, &fonecta_02_fi, &goo, &duckduckgo, &google, + &guruji, &hispavista, &in, &jabse, &jubii, &kvasir, &latne, &leit, + &libero, &mail_ru, &maktoob, &masrawy, &mynet, &najdi, &nate, &naver, + &neti, &netsprint, &nur_kz, &ok, &onet, &pogodak_rs, &rambler, &rediff,