Version bump to work around a flash hang (bug #324365 by lack). Also fix bug #323865...
authorPaweł Hajdan <phajdan.jr@gentoo.org>
Sun, 20 Jun 2010 08:17:17 +0000 (08:17 +0000)
committerPaweł Hajdan <phajdan.jr@gentoo.org>
Sun, 20 Jun 2010 08:17:17 +0000 (08:17 +0000)
Package-Manager: portage-2.1.8.3/cvs/Linux i686

www-client/chromium/ChangeLog
www-client/chromium/Manifest
www-client/chromium/chromium-5.0.375.70-r1.ebuild [new file with mode: 0644]
www-client/chromium/files/chromium-flash-hang-workaround-r1.patch [new file with mode: 0644]

index f5dd8a1a584b12d957534fcf85cc321155a5f82c..a9d20c4b1cd4638c23b4bfb87e352dbea72c3274 100644 (file)
@@ -1,6 +1,14 @@
 # ChangeLog for www-client/chromium
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/www-client/chromium/ChangeLog,v 1.119 2010/06/19 16:30:14 phajdan.jr Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-client/chromium/ChangeLog,v 1.120 2010/06/20 08:17:17 phajdan.jr Exp $
+
+*chromium-5.0.375.70-r1 (20 Jun 2010)
+
+  20 Jun 2010; Pawel Hajdan jr <phajdan.jr@gentoo.org>
+  +files/chromium-flash-hang-workaround-r1.patch,
+  +chromium-5.0.375.70-r1.ebuild:
+  Version bump to work around a flash hang (bug #324365 by lack). Also fix
+  bug #323865 by Alex Barker <alex@1stleg.com>.
 
   19 Jun 2010; Pawel Hajdan jr <phajdan.jr@gentoo.org>
   chromium-6.0.437.1.ebuild, chromium-9999.ebuild:
index ab6c0f8494871234c0ee0ccabc83f53fb55cfb2a..4012bec54c7fa334a86782f505dbb69044cf382c 100644 (file)
@@ -1,6 +1,7 @@
 AUX chromium-20100122-ubuntu-html5-video-mimetypes.patch 1228 RMD160 69157e703e14138cc838ae26191ef42116f3f614 SHA1 f9bac7a6840c060c921119051cd724b7b53ff2fd SHA256 d6f8e5dabf8b55c3fb9ae58920807758e5d1aa76f536efc6f53949208a567566
 AUX chromium-disable-vp8-r1.patch 1204 RMD160 22264b89adf908149e5405c316e4666c4eda4ad8 SHA1 7e104772a645f50449432d4c970d52ffc3555c8a SHA256 ebb9031cd447aca0f3d7f9a2b4081f64dd8244ffd90564ecab06724e1dda63e8
 AUX chromium-drop_sse2-r0.patch 1387 RMD160 5be0a252d4e99064e2cc5ba3fce33a5f525ba785 SHA1 a356549db631a7b147bf0046be8ab09d88874f15 SHA256 f035f196eea72855cf37d269810f4f99a5f348b7b8d7aaf537e35a11d6e1f1df
+AUX chromium-flash-hang-workaround-r1.patch 2225 RMD160 837c49e1fe0b2bdb8a96391e01b730b4f7a7bbef SHA1 32c7f82c80b79ec48d09488481ede323dcf47ce1 SHA256 f2a6ba25834107bd7e673f0ed6361cb7bad1432c5fb9908d0bcdf3151c84df51
 AUX chromium-gyp-fixes-r1.patch 1122 RMD160 8f37f016c9ca937ac0b02d4af533ddd0bb21b340 SHA1 d481f92313ad2aee0b00e2fda3698057e7de4c7e SHA256 22cd04c272d07cef36b1b3e639fad78486dc85dfd21c6cf542dbf4ebea0c2fe5
 AUX chromium-gyp-fixes-r2.patch 446 RMD160 ff89b0b16b55e0a6109b6c083e8c91973abd7a28 SHA1 6f72fc64cdb1e733666597d1237eed783ece42fa SHA256 33f6391dfefce19115f08034943f936a24c7edb23fd3f185b4bcba0a8b03f4d4
 AUX chromium-launcher.sh 1097 RMD160 6a35819d6ae463d1614ecd5976fe8aeae1a3519e SHA1 93b8259fe9ddf6914faa9a4cdbaf451a97031228 SHA256 9d16e2afe508c33aa987001a0442696eaefd5cf91e7a6c9eeb900bc9824390c9
@@ -10,9 +11,10 @@ AUX chromium.xml 390 RMD160 6b2f901da76555a7112f71a6f9dae6e2e3307324 SHA1 81148a
 DIST chromium-5.0.375.70.tar.bz2 163191937 RMD160 cb43307d095dc7ba146762b2a997ba32c5c12907 SHA1 96234ce716e5124f8c8ada92ed9a8cbe6183c5ed SHA256 dd2e440b1a230b1adcc8941d825155e5aeaf887fe67702697a845bd459455902
 DIST chromium-6.0.427.0.tar.bz2 179247836 RMD160 6b42d4145514557eba30b99a0799e181e2f45a16 SHA1 65897ae8d05e04e821333fca05d77cbe0b08771f SHA256 e5ab816d0b39511d6718c2f76c3436c4db3664c06496fe413273a70864d4f3d8
 DIST chromium-6.0.437.1.tar.bz2 124160031 RMD160 80ac4d434de50a923f11aebaf7755c9de4b16a5b SHA1 01440e58c29bc24f9dbf646391859475dd34b856 SHA256 82207de9036cbfe30e91f3e81c5faab35a2077b9007af89b8e87c2218d8ba269
+EBUILD chromium-5.0.375.70-r1.ebuild 5495 RMD160 a412257fcf03483f876f1953ef39b6388b6295d9 SHA1 79bd48784eef113ce0b9aea3efb662078725573d SHA256 39ab55a74a11862d0551f4f0e00f46e8d451f85d89dc80905acf180ff3b72b91
 EBUILD chromium-5.0.375.70.ebuild 5653 RMD160 accd9bebc41a61e8544e2d2073bfa8eb558cb8cc SHA1 c48b195937ea1c65bde66fdf9be0dabba470644c SHA256 68904b0221796b90cbf779d107dd81c7f31bcab12068e27fe22d24c38977133a
 EBUILD chromium-6.0.427.0.ebuild 5869 RMD160 3db0e8f2a551247e1bf370dcc09f22af48dbb628 SHA1 7499494a3540b3e802dd5cbc75f857d7075c9e1d SHA256 caf0867efaa0c786653342e0e0b62b52f49f3ac705590bac62b978d80963883c
 EBUILD chromium-6.0.437.1.ebuild 6257 RMD160 794ae41a32cb52b8501b18406e4d48f3ecf4f876 SHA1 1bbd45716b4af4ace3320fcc7c08709459be1a03 SHA256 3a1a0761e5c37b11d5210df3c3b1781f015c08c15dd3b5565851fbf248f26d61
 EBUILD chromium-9999.ebuild 7897 RMD160 ab9d3fe8bb0b01fd60ed1fb2f26c6c4f1a017b2d SHA1 b0e283bd961c63ce1a6c9e563810c2e602ed3a75 SHA256 48ec2139c73491e4c657629a19d3d0534029d45eb55b67f1718ab950c7c1cbd7
-MISC ChangeLog 26884 RMD160 a4b5bb096be090a7c7eb00282a4601bd9a3f872f SHA1 26f01d6ca2c7b023443723cbeb3bf19e8b55856b SHA256 eea97e32ea0a7478a4f617ba3ec872bc181d468cc0abf608b3e4f43ad11ab057
+MISC ChangeLog 27186 RMD160 458d97c8516623d3ad30a7546a29bb30d2d3adee SHA1 c4ed9bed41610a38bb5adaf86cfaf92fdd3b6443 SHA256 b0eefe756e079c8b87806a362e639a7b815221efc77c8d946b3a90687b4fbaaf
 MISC metadata.xml 572 RMD160 458a635f4040d8552b46256c8437099608041b99 SHA1 6ed49919f57f709065cf06c148f1df68119a3b3f SHA256 4a433c3dadf06af7e3dca492ffaa3f26a6c4419de61a044609e2d528891e09a5
diff --git a/www-client/chromium/chromium-5.0.375.70-r1.ebuild b/www-client/chromium/chromium-5.0.375.70-r1.ebuild
new file mode 100644 (file)
index 0000000..d3ce5a4
--- /dev/null
@@ -0,0 +1,176 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/www-client/chromium/chromium-5.0.375.70-r1.ebuild,v 1.1 2010/06/20 08:17:17 phajdan.jr Exp $
+
+EAPI="2"
+
+inherit eutils flag-o-matic multilib pax-utils toolchain-funcs
+
+DESCRIPTION="Open-source version of Google Chrome web browser"
+HOMEPAGE="http://chromium.org/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="+plugins-symlink"
+
+RDEPEND="app-arch/bzip2
+       >=dev-libs/libevent-1.4.13
+       dev-libs/libxml2
+       dev-libs/libxslt
+       >=dev-libs/nss-3.12.3
+       >=gnome-base/gconf-2.24.0
+       >=media-libs/alsa-lib-1.0.19
+       media-libs/jpeg:0
+       media-libs/libpng
+       media-video/ffmpeg[threads]
+       sys-libs/zlib
+       >=x11-libs/gtk+-2.14.7
+       x11-libs/libXScrnSaver"
+#      dev-db/sqlite:3
+DEPEND="${RDEPEND}
+       dev-lang/perl
+       >=dev-util/gperf-3.0.3
+       >=dev-util/pkgconfig-0.23
+       sys-devel/flex"
+RDEPEND+="
+       || (
+               x11-themes/gnome-icon-theme
+               x11-themes/oxygen-molecule
+               x11-themes/tango-icon-theme
+               x11-themes/xfce4-icon-theme
+       )
+       x11-apps/xmessage
+       x11-misc/xdg-utils
+       virtual/ttf-fonts"
+
+# Incompatible system plugins:
+# www-plugins/gecko-mediaplayer, bug #309231.
+RDEPEND+="
+       plugins-symlink? (
+               !www-plugins/gecko-mediaplayer[gnome]
+       )"
+
+src_prepare() {
+       # Prevent automatic -march=pentium4 -msse2 enabling on x86, http://crbug.com/9007
+       epatch "${FILESDIR}"/${PN}-drop_sse2-r0.patch
+
+       # Allow supporting more media types.
+       epatch "${FILESDIR}"/${PN}-20100122-ubuntu-html5-video-mimetypes.patch
+
+       # Fix build failure with libpng-1.4, bug 310959.
+       epatch "${FILESDIR}"/${PN}-libpng-1.4.patch
+
+       # Work around a flash hang, bug #324365.
+       epatch "${FILESDIR}"/${PN}-flash-hang-workaround-r1.patch
+}
+
+src_configure() {
+       export CHROMIUM_HOME=/usr/$(get_libdir)/chromium-browser
+
+       # Workaround for bug #318969.
+       # TODO: remove when http://crbug.com/43778 is fixed.
+       append-flags -D__STDC_CONSTANT_MACROS
+
+       # Fails to build on arm if we don't do this
+       use arm && append-flags -fno-tree-sink
+
+       # Configuration options (system libraries)
+       local myconf="-Duse_system_zlib=1 -Duse_system_bzip2=1 -Duse_system_ffmpeg=1 -Duse_system_libevent=1 -Duse_system_libjpeg=1 -Duse_system_libpng=1 -Duse_system_libxml=1 -Duse_system_libxslt=1"
+       # -Duse_system_sqlite=1 : http://crbug.com/22208
+       # Others still bundled: icu (not possible?), hunspell (changes required for sandbox support)
+
+       # Sandbox paths
+       myconf="${myconf} -Dlinux_sandbox_path=${CHROMIUM_HOME}/chrome_sandbox -Dlinux_sandbox_chrome_path=${CHROMIUM_HOME}/chrome"
+
+       # Disable the V8 snapshot. It breaks the build on hardened (bug #301880),
+       # and the performance gain isn't worth it.
+       myconf="${myconf} -Dv8_use_snapshot=0"
+
+       # Disable tcmalloc memory allocator. It causes problems,
+       # for example bug #320419.
+       myconf="${myconf} -Dlinux_use_tcmalloc=0"
+
+       # Use target arch detection logic from bug #296917.
+       local myarch="$ABI"
+       [[ $myarch = "" ]] && myarch="$ARCH"
+
+       if [[ $myarch = amd64 ]] ; then
+               myconf="${myconf} -Dtarget_arch=x64"
+       elif [[ $myarch = x86 ]] ; then
+               myconf="${myconf} -Dtarget_arch=ia32"
+       elif [[ $myarch = arm ]] ; then
+               myconf="${myconf} -Dtarget_arch=arm -Ddisable_nacl=1 -Dlinux_use_tcmalloc=0"
+       else
+               die "Failed to determine target arch, got '$myarch'."
+       fi
+
+       if [[ "$(gcc-major-version)$(gcc-minor-version)" == "44" ]]; then
+               myconf="${myconf} -Dno_strict_aliasing=1 -Dgcc_version=44"
+       fi
+
+       # Make sure that -Werror doesn't get added to CFLAGS by the build system.
+       # Depending on GCC version the warnings are different and we don't want
+       # the build to fail because of that.
+       myconf="${myconf} -Dwerror="
+
+       build/gyp_chromium -f make build/all.gyp ${myconf} --depth=. || die "gyp failed"
+}
+
+src_compile() {
+       emake -r V=1 chrome chrome_sandbox BUILDTYPE=Release \
+               rootdir="${S}" \
+               CC=$(tc-getCC) \
+               CXX=$(tc-getCXX) \
+               AR=$(tc-getAR) \
+               RANLIB=$(tc-getRANLIB) \
+               || die "compilation failed"
+}
+
+src_install() {
+       # Chromium does not have "install" target in the build system.
+       export CHROMIUM_HOME=/usr/$(get_libdir)/chromium-browser
+
+       dodir ${CHROMIUM_HOME}
+
+       exeinto ${CHROMIUM_HOME}
+       pax-mark m out/Release/chrome
+       doexe out/Release/chrome
+       doexe out/Release/chrome_sandbox
+       fperms 4755 ${CHROMIUM_HOME}/chrome_sandbox
+       doexe out/Release/xdg-settings
+       doexe "${FILESDIR}"/chromium-launcher.sh
+
+       insinto ${CHROMIUM_HOME}
+       doins out/Release/chrome.pak
+
+       doins -r out/Release/locales
+       doins -r out/Release/resources
+
+       # chrome.1 is for chromium --help
+       newman out/Release/chrome.1 chrome.1
+       newman out/Release/chrome.1 chromium.1
+
+       # Chromium looks for these in its folder
+       # See media_posix.cc and base_paths_linux.cc
+       dosym /usr/$(get_libdir)/libavcodec.so.52 ${CHROMIUM_HOME}
+       dosym /usr/$(get_libdir)/libavformat.so.52 ${CHROMIUM_HOME}
+       dosym /usr/$(get_libdir)/libavutil.so.50 ${CHROMIUM_HOME}
+
+       # Plugins symlink, optional wrt bug #301911
+       if use plugins-symlink; then
+               dosym /usr/$(get_libdir)/nsbrowser/plugins ${CHROMIUM_HOME}/plugins
+       fi
+
+       # Icon and desktop entry
+       newicon out/Release/product_logo_48.png ${PN}-browser.png
+       dosym ${CHROMIUM_HOME}/chromium-launcher.sh /usr/bin/chromium
+       make_desktop_entry chromium "Chromium" ${PN}-browser "Network;WebBrowser"
+       sed -e "/^Exec/s/$/ %U/" -i "${D}"/usr/share/applications/*.desktop \
+               || die "desktop file sed failed"
+       # Gnome default application entry
+       dodir /usr/share/gnome-control-center/default-apps
+       insinto /usr/share/gnome-control-center/default-apps
+       doins "${FILESDIR}"/chromium.xml
+}
diff --git a/www-client/chromium/files/chromium-flash-hang-workaround-r1.patch b/www-client/chromium/files/chromium-flash-hang-workaround-r1.patch
new file mode 100644 (file)
index 0000000..bafeb23
--- /dev/null
@@ -0,0 +1,47 @@
+Index: webkit/glue/plugins/webplugin_delegate_impl.h
+===================================================================
+--- webkit/glue/plugins/webplugin_delegate_impl.h      (revision 48979)
++++ webkit/glue/plugins/webplugin_delegate_impl.h      (working copy)
+@@ -68,6 +68,7 @@
+     PLUGIN_QUIRK_PATCH_REGENUMKEYEXW = 2048, // Windows
+     PLUGIN_QUIRK_ALWAYS_NOTIFY_SUCCESS = 4096, // Windows
+     PLUGIN_QUIRK_ALLOW_FASTER_QUICKDRAW_PATH = 8192, // Mac
++    PLUGIN_QUIRK_WINDOWLESS_NO_RIGHT_CLICK = 32768, // Linux
+   };
+ 
+   static WebPluginDelegateImpl* Create(const FilePath& filename,
+Index: webkit/glue/plugins/webplugin_delegate_impl_gtk.cc
+===================================================================
+--- webkit/glue/plugins/webplugin_delegate_impl_gtk.cc (revision 48979)
++++ webkit/glue/plugins/webplugin_delegate_impl_gtk.cc (working copy)
+@@ -55,9 +55,13 @@
+   memset(&window_, 0, sizeof(window_));
+   if (instance_->mime_type() == "application/x-shockwave-flash") {
+     // Flash is tied to Firefox's whacky behavior with windowless plugins. See
+-    // comments in WindowlessPaint
++    // comments in WindowlessPaint.
++    // TODO(viettrungluu): PLUGIN_QUIRK_WINDOWLESS_NO_RIGHT_CLICK: Don't allow
++    // right-clicks in windowless content since Flash 10.1 (initial release, at
++    // least) hangs in that case. Remove this once Flash is fixed.
+     quirks_ |= PLUGIN_QUIRK_WINDOWLESS_OFFSET_WINDOW_TO_DRAW
+-        | PLUGIN_QUIRK_WINDOWLESS_INVALIDATE_AFTER_SET_WINDOW;
++        | PLUGIN_QUIRK_WINDOWLESS_INVALIDATE_AFTER_SET_WINDOW
++        | PLUGIN_QUIRK_WINDOWLESS_NO_RIGHT_CLICK;
+   }
+ 
+   // TODO(evanm): I played with this for quite a while but couldn't
+@@ -696,6 +700,14 @@
+   if (!NPEventFromWebInputEvent(event, timestamp, &np_event)) {
+     return false;
+   }
++  // See comment about PLUGIN_QUIRK_WINDOWLESS_NO_RIGHT_CLICK in constructor.
++  if (windowless_ &&
++      (quirks_ & PLUGIN_QUIRK_WINDOWLESS_NO_RIGHT_CLICK) &&
++      (np_event.type == ButtonPress || np_event.type == ButtonRelease) &&
++      (np_event.xbutton.button == Button3)) {
++    return false;
++  }
++
+   bool ret = instance()->NPP_HandleEvent(&np_event) != 0;
+ 
+   // Flash always returns false, even when the event is handled.