Quick and dirty "how to try this" recipe ________________________________________ First, save this patch as /tmp/chromium-ebuild-widevine.patch Set the widevine useflag as you want it in /etc/portage/make.conf (or wherever). now, as root, run the something like the following sequence of commands in bash (warning: the following is untested, and unlikely to be 100% bug-free, so don't just copy-paste all this wholesale!): _GX86=$( portageq get_repo_path / gentoo ) _OVL=${_GX86} # (better) alternative: set _OVL to the location of your favorite overlay # if overlay != gx86, copy everything over from www-plugins/chrome-binary-plugins # and www-client/chromium (shouldn't overwrite any existing files). if [[ ${_GX86} != ${_OVL} ]]; then mkdir -p ${_OVL}/www-plugins cp -nrv ${_GX86}/www-plugins/chrome-binary-plugins ${_OVL}/www-plugins/ mkdir -p ${_OVL}/www-client cp -nrv ${_GX86}/www-client/chromium ${_OVL}/www-client/ fi # identify best gx86 ebuilds to use as basis _chrome_binary_plugins=$( portageq pquery www-plugins/chrome-binary-plugins:beta::gentoo | tail -n 1) _chrome_binary_plugins="${_GX86}/www-plugins/chrome-binary-plugins/${_chrome_binary_plugins#www-plugins/}.ebuild" _chromium=$( portageq pquery '=www-client/chromium-44*::gentoo' | tail -n 1 ) _chromium="${_GX86}/www-client/chromium/${_chromium#www-client/}.ebuild" # revbump/upgrade chrome-binary-plugins cd "${_OVL}/www-plugins/chrome-binary-plugins" cp -v "${_chrome_binary_plugins}" ./chrome-binary-plugins-44.0.2403.61_beta1.ebuild ebuild chrome-binary-plugins-44.0.2403.61_beta1.ebuild digest clean merge # revbump/patch chromium ebuild cd "${_OVL}/www-client/chromium" cp -v "${_chromium}" ./chromium-44.0.2403.61.ebuild patch -p1 < /tmp/chromium-ebuild-widevine.patch ebuild chromium-44.0.2403.61.ebuild digest # build it ebuild chromium-44.0.2403.61.ebuild clean install # wait ... for ... it ... # merge (optional) ebuild chromium-44.0.2403.61.ebuild merge --- a/chromium-44.0.2403.61.ebuild 2015-06-08 19:17:33.000000000 -0700 +++ b/chromium-44.0.2403.61.ebuild 2015-06-24 20:15:58.726368209 -0700 @@ -1,6 +1,6 @@ # Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/www-client/chromium/chromium-44.0.2403.30.ebuild,v 1.1 2015/06/09 02:17:33 floppym Exp $ +# $Header: $ EAPI="5" PYTHON_COMPAT=( python2_7 ) @@ -19,7 +19,7 @@ SRC_URI="https://commondatastorage.googl LICENSE="BSD" SLOT="0" KEYWORDS="~amd64 ~arm ~x86" -IUSE="cups gnome gnome-keyring hidpi kerberos neon pic +proprietary-codecs pulseaudio selinux +tcmalloc" +IUSE="cups gnome gnome-keyring hidpi kerberos neon pic +proprietary-codecs pulseaudio selinux +tcmalloc +widevine" RESTRICT="proprietary-codecs? ( bindist )" # Native Client binaries are compiled with different set of flags, bug #452066. @@ -91,7 +91,8 @@ DEPEND="${RDEPEND} sys-apps/hwids[usb(+)] >=sys-devel/bison-2.4.3 sys-devel/flex - virtual/pkgconfig" + virtual/pkgconfig + widevine? ( www-plugins/chrome-binary-plugins[widevine] )" # For nvidia-drivers blocker, see bug #413637 . RDEPEND+=" @@ -188,6 +189,19 @@ src_prepare() { epatch "${FILESDIR}/${PN}-system-jinja-r7.patch" + if use widevine; then + local WIDEVINE_VERSION="$(< "${ROOT}/usr/$(get_libdir)/chromium-browser/widevine.version")" + [[ -z $WIDEVINE_VERSION ]] && die "Could not determine Widevine version." + local sedscript='$i#include "third_party/widevine/cdm/widevine_cdm_common.h"\n' + sedscript+='#define WIDEVINE_CDM_AVAILABLE\n' + sedscript+="#define WIDEVINE_CDM_VERSION_STRING \"${WIDEVINE_VERSION}\"\\n" + sed -e "${sedscript}" -i third_party/widevine/cdm/widevine_cdm_version.h || die + + # build widevine_cdm but skip the license-server test + sed -e '1,/widevine_test_license_server/ s/"Chrome"/"Chromium"/g' \ + -i third_party/widevine/cdm/widevine_cdm.gyp || die + fi + epatch_user # Remove most bundled libraries. Some are still needed. @@ -285,10 +299,23 @@ src_prepare() { 'v8/src/third_party/fdlibm' \ 'v8/src/third_party/kernel' \ 'v8/src/third_party/valgrind' \ + 'third_party/devscripts' \ --do-remove || die } src_configure() { + + if use widevine; then + local WIDEVINE_SUPPORTED_ARCHS="x64 ia32" + local arch + for arch in $WIDEVINE_SUPPORTED_ARCHS; do + mkdir -p third_party/widevine/cdm/linux/$arch + cp "${ROOT}/usr/$(get_libdir)/chromium-browser/libwidevinecdm.so" \ + third_party/widevine/cdm/widevine_cdm_*.h \ + third_party/widevine/cdm/linux/$arch/ \ + || die "Could not copy headers for Widevine." + done + fi local myconf="" # Never tell the build system to "enable" SSE2, it has a few unexpected @@ -580,7 +607,9 @@ src_install() { newman out/Release/chrome.1 chromium${CHROMIUM_SUFFIX}.1 || die newman out/Release/chrome.1 chromium-browser${CHROMIUM_SUFFIX}.1 || die - doexe out/Release/libffmpegsumo.so || die + if use widevine; then + doexe out/Release/libwidevinecdmadapter.so || die + fi # Install icons and desktop entry. local branding size