From nobody Sun Oct 01 14:59:13 2023 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Rz6g52fP6z4vPS8; Sun, 1 Oct 2023 14:59:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Rz6g51sLtz4ckp; Sun, 1 Oct 2023 14:59:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1696172353; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7TNLo+waTer0AZmL8TYlkrn3CiObvjPLDJ13VCTbNo0=; b=xI0/RswAX+NumWzRx3DE6CfQxXnIj383sMTreo3yGpbwETLjM6wyjoWJzCTj0FEi6PmTPJ W2URoo3ZteO/1rxaMgswpa8gx3UPSvOsskn5KeHc3e7I8VQAY9R9Oo8lvTfz1I78zmdSlo 2Kti3ZB9Lr5Ey7bJg5hS2IDAogFsfDQb8BkKx2glUbcDtfkgca8IHYs2U82wKnlMouEMPN l6MWeUgeXoiJVNEEnexIfQSdF8zhaBpFgHz8EoSmfEUOS6NimKgKOWUjEY8fQg4UyXwHwB bFpZjPgFc0j1fAe9UaDdKApPJDZFY/KocHrj7Ysf2egyNP3/nWI+sJLi+Rrrzw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1696172353; a=rsa-sha256; cv=none; b=q/JhbU+rGcyre7lv/rbe8HGJTrZtGOunn6L4rqgmHG5azisF5VkTTVuUVvY7zyXf7hAI4Q V8VWxyfIjzYew54ZtHSYcZX5XOvMS57PuSiy9PL/0RbBB/zxFjL7LVXeO/e+RmOJC+U/bQ tAplIAlW+kyHcfsn0ASh8SuY/u/b6Pc56HjUb7Xf4QY2F//hO2CjF5LHc6y/KOxYiHHNHF 2cZigj8pfdMiZwBRnF/uZm/XX/IUJcNFRjJM/Iweb/jo3csW+33QnOp3DlWtaYSsQeUbrZ aWePYNaLSX7UOeirq7rv2G48MXD22b70tSN9hW4W95qtnpw7GXChzUnoMaJvOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1696172353; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7TNLo+waTer0AZmL8TYlkrn3CiObvjPLDJ13VCTbNo0=; b=aJ3mMv21t0LPAzG5Sf25fECESKyuCnGfysULEmFD760ksE7PF4tdmYkb8A2vfu/bAb5kFR VMfD4qURcgKeV1kJlgg419EbBjdkL33Z87QLFMq/JxsF6OssSoiedB1/yPAkAoIwwF4j3K JvTi2v+iYnUUIguorjmBipjSpQy+kwMYX7KbEI82kr/jclUIVLiAHXXyAIqzuN6htf74KQ ZY5Ri4nChIblDraFgLI6Cnic0gyldK6jczxqno4UqmfwluInkGyyXO3O1r0VXAyhGnIPVr trVNR1p9UsN8298PEqYfu2+0kfb/oIELHnfjFz4Awo+oNdNDPhm+VvlZkDovpw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Rz6g50vg8zZTC; Sun, 1 Oct 2023 14:59:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 391ExDPA040487; Sun, 1 Oct 2023 14:59:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 391ExDAp040484; Sun, 1 Oct 2023 14:59:13 GMT (envelope-from git) Date: Sun, 1 Oct 2023 14:59:13 GMT Message-Id: <202310011459.391ExDAp040484@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Gleb Popov Subject: git: 04ee4737c5f7 - main - www/chromium: Enable Widevine DRM via foreign-cdm. List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arrowd X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 04ee4737c5f74da5b7d2e6d0f7f40a06343e1222 Auto-Submitted: auto-generated The branch main has been updated by arrowd: URL: https://cgit.FreeBSD.org/ports/commit/?id=04ee4737c5f74da5b7d2e6d0f7f40a06343e1222 commit 04ee4737c5f74da5b7d2e6d0f7f40a06343e1222 Author: Gleb Popov AuthorDate: 2023-09-04 17:16:44 +0000 Commit: Gleb Popov CommitDate: 2023-10-01 14:59:09 +0000 www/chromium: Enable Widevine DRM via foreign-cdm. These patches allow native Chromium to call out to the Linux Widevine library via a proxy program called foreign-cdm. Reviewed by: rnagy Differential Revision: https://reviews.freebsd.org/D42026 --- www/chromium/Makefile | 7 ++- www/chromium/files/chrome.in | 5 +++ ..._updater_widevine__cdm__component__installer.cc | 11 +++++ .../patch-chrome_common_media_cdm__registration.cc | 52 ++++++++++++++++++++++ ...a_component__widevine__cdm__hint__file__linux.h | 11 +++++ .../patch-media_cdm_library__cdm_cdm__paths.gni | 11 +++++ .../patch-third__party_widevine_cdm_widevine.gni | 10 +++++ 7 files changed, 106 insertions(+), 1 deletion(-) diff --git a/www/chromium/Makefile b/www/chromium/Makefile index 6eee12f3ebd9..fdd0526fd357 100644 --- a/www/chromium/Makefile +++ b/www/chromium/Makefile @@ -1,5 +1,6 @@ PORTNAME= chromium PORTVERSION= 117.0.5938.132 +PORTREVISION= 1 CATEGORIES= www wayland MASTER_SITES= https://commondatastorage.googleapis.com/chromium-browser-official/ \ https://nerd.hu/distfiles/:external @@ -102,6 +103,7 @@ GN_ARGS+= clang_use_chrome_plugins=false \ enable_nacl=false \ enable_remoting=false \ enable_rust=false \ + enable_widevine=true \ fatal_linker_warnings=false \ icu_use_data_file=false \ is_clang=true \ @@ -137,7 +139,7 @@ GN_ARGS+= google_api_key="AIzaSyBsp9n41JLW8jCokwn7vhoaMejDFRd1mp8" SUB_FILES= chromium-browser.desktop chrome SUB_LIST+= COMMENT="${COMMENT}" -OPTIONS_DEFINE= CODECS CUPS DEBUG DRIVER KERBEROS LTO PIPEWIRE TEST +OPTIONS_DEFINE= CODECS CUPS DEBUG DRIVER KERBEROS LTO PIPEWIRE TEST WIDEVINE OPTIONS_DEFAULT= CODECS CUPS DRIVER KERBEROS PIPEWIRE SNDIO OPTIONS_EXCLUDE_aarch64=LTO OPTIONS_GROUP= AUDIO @@ -212,6 +214,9 @@ SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_VARS= GN_ARGS+=use_sndio=true SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false +WIDEVINE_DESC= Depend on foreign-cdm to enable playback of DRM content +WIDEVINE_RUN_DEPENDS= foreign-cdm>0:www/foreign-cdm + .include "Makefile.tests" TEST_DISTFILES= ${PORTNAME}-${DISTVERSION}-testdata${EXTRACT_SUFX} \ test_fonts-336e775eec536b2d785cc80eff6ac39051931286.tar.gz:external diff --git a/www/chromium/files/chrome.in b/www/chromium/files/chrome.in index 51ebe9d24bf2..9bd861920963 100644 --- a/www/chromium/files/chrome.in +++ b/www/chromium/files/chrome.in @@ -16,4 +16,9 @@ EOMSG exit 1 fi ulimit -c 0 + +# variables for foreign-cdm +export FCDM_CDM_SO_PATH=/compat/linux/usr/lib/foreign-cdm/libwidevinecdm.so +export FCDM_WORKER_PATH=/compat/linux/usr/bin/fcdm-worker + exec %%PREFIX%%/share/chromium/chrome ${1+"$@"} diff --git a/www/chromium/files/patch-chrome_browser_component__updater_widevine__cdm__component__installer.cc b/www/chromium/files/patch-chrome_browser_component__updater_widevine__cdm__component__installer.cc new file mode 100644 index 000000000000..ff0187e1cc42 --- /dev/null +++ b/www/chromium/files/patch-chrome_browser_component__updater_widevine__cdm__component__installer.cc @@ -0,0 +1,11 @@ +--- chrome/browser/component_updater/widevine_cdm_component_installer.cc.orig 2023-09-04 16:07:23 UTC ++++ chrome/browser/component_updater/widevine_cdm_component_installer.cc +@@ -72,6 +72,8 @@ const char kWidevineCdmPlatform[] = + "cros"; + #elif BUILDFLAG(IS_LINUX) + "linux"; ++#elif BUILDFLAG(IS_FREEBSD) ++ "linux"; + #else + #error This file should only be included for supported platforms. + #endif diff --git a/www/chromium/files/patch-chrome_common_media_cdm__registration.cc b/www/chromium/files/patch-chrome_common_media_cdm__registration.cc new file mode 100644 index 000000000000..cc4ebfdb5a15 --- /dev/null +++ b/www/chromium/files/patch-chrome_common_media_cdm__registration.cc @@ -0,0 +1,52 @@ +--- chrome/common/media/cdm_registration.cc.orig 2023-09-04 16:08:25 UTC ++++ chrome/common/media/cdm_registration.cc +@@ -25,11 +25,11 @@ + + #if BUILDFLAG(ENABLE_WIDEVINE) + #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FREEBSD) + #include "base/native_library.h" + #include "chrome/common/chrome_paths.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD) + #include "base/no_destructor.h" + #include "components/cdm/common/cdm_manifest.h" + #include "media/cdm/supported_audio_codecs.h" +@@ -58,7 +58,7 @@ using Robustness = content::CdmInfo::Robustness; + #if BUILDFLAG(ENABLE_WIDEVINE) + #if (BUILDFLAG(BUNDLE_WIDEVINE_CDM) || \ + BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD)) + // Create a CdmInfo for a Widevine CDM, using |version|, |cdm_library_path|, and + // |capability|. + std::unique_ptr CreateWidevineCdmInfo( +@@ -101,7 +101,7 @@ std::unique_ptr CreateCdmInfoFromWid + // BUILDFLAG(IS_CHROMEOS)) + + #if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD)) + // On Linux/ChromeOS we have to preload the CDM since it uses the zygote + // sandbox. On Windows and Mac, the bundled CDM is handled by the component + // updater. +@@ -125,7 +125,7 @@ content::CdmInfo* GetBundledWidevine() { + // BUILDFLAG(IS_CHROMEOS)) + + #if BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD)) + // This code checks to see if a component updated Widevine CDM can be found. If + // there is one and it looks valid, return the CdmInfo for that CDM. Otherwise + // return nullptr. +@@ -160,7 +160,7 @@ void AddSoftwareSecureWidevine(std::vector