diff options
Diffstat (limited to 'net-misc/chrome-remote-desktop')
6 files changed, 249 insertions, 0 deletions
diff --git a/net-misc/chrome-remote-desktop/Manifest b/net-misc/chrome-remote-desktop/Manifest new file mode 100644 index 000000000000..d6f71e651cb5 --- /dev/null +++ b/net-misc/chrome-remote-desktop/Manifest @@ -0,0 +1,6 @@ +AUX chrome-remote-desktop-44.0.2403.44-always-sudo.patch 820 BLAKE2B f1e2c9d3a7bf2d53407b9ee4e4f34bf915d59502799bc4d38c9886d6c216dafb8ad957229a454da2ff750b00bc967e668cb022b06d4ad382e7427d61907970a1 SHA512 aa35c9e81b056fded2ff95b6fc7ab9cf3bb89282513b7bf1a04a9d25567d0e59da9c8c9877500e7290e40d712f4be06ae8b482d3f830d818ea5897e6ffde248b +AUX chrome-remote-desktop.conf.d 283 BLAKE2B a0146298fa2e18e16911587de10aa3dd229cfb26a2d1865637cc4c69c317f4cb303b98daa7f91b6e69cc34c6fbbab3d19332396d4f5c11eeef4958401e26ff14 SHA512 5391c4a2d5787047f773abbf1c5a9dd3842160d768122edc32f0a0275e198882a41a3ca88526d52347f89d1fb4e1a51b6dc785c4dd4a0c0b5935e1e6eff30f49 +AUX chrome-remote-desktop.rc 1183 BLAKE2B d1d56ac91a2ced2c6f13019f9d5c7f1d554c2fbd3f57842d6d0b791f2e90233e4d6e8a49155b634a5e20c0bad212a5bc5f63924b1a83d45db01b1fd69445fa07 SHA512 831391b6fcaeeda476a3064d6fff1fdcebb8037aba124814a81ad4a1336a68973f319a003d1ed0938eea68f5ddad179fe29fb12efa05fd204f7fa9c5fb8dd735 +DIST chrome-remote-desktop_88.0.4324.33_amd64.deb 33645072 BLAKE2B 5fc565c3a27307e46ff307ad2e68a9a390b5fb86be9d3d8bb5f82f3d22013f70af18002c888d5df82956b6f33b3397cf2cb8b9a7e4c07db480ead81abbb5743c SHA512 0cf6ebe8ce916874be79255faf870b20df892ce4825902996685416cedd8d8ef52215e7f278301fd6ff11e2cbc3b2e82078d7b0ee23ab35669760b1102d5827e +EBUILD chrome-remote-desktop-88.0.4324.33.ebuild 4716 BLAKE2B 32dd5fc913b4240e91d6bb62817e4d7fe1028ba93b1e51a0022e99e7e2bef4893b1e18c38bdd1da462bd1bd37ee84618a974cff71ec3947318177a5902aaa3f3 SHA512 6c8053cfb1137594e206b16a24bb1e765b2554c4159998cda82c499310cd3adae4466cec09d5d21d6f76664f00e56b0684b1a6fd4383d1941325aea017b77f51 +MISC metadata.xml 324 BLAKE2B 06aa537ecdc6bbcacbbfd245dfb6400f988a9479963032ba1f8734445342cb22cb943e8cbb77f1c1fb8a6f175506b19606ca43aafda5c503c6b38f36ece15a90 SHA512 0b117b42b32bda19d274c55a1673115eabdea39cd77fb5498d72040fa3eb1666c5e990b64918bf20fee113c42e8cba5888544621d284aa9db95fe895d805c121 diff --git a/net-misc/chrome-remote-desktop/chrome-remote-desktop-88.0.4324.33.ebuild b/net-misc/chrome-remote-desktop/chrome-remote-desktop-88.0.4324.33.ebuild new file mode 100644 index 000000000000..ace3c7112e56 --- /dev/null +++ b/net-misc/chrome-remote-desktop/chrome-remote-desktop-88.0.4324.33.ebuild @@ -0,0 +1,141 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Base URL: https://dl.google.com/linux/chrome-remote-desktop/deb/ +# Fetch the Release file: +# https://dl.google.com/linux/chrome-remote-desktop/deb/dists/stable/Release +# Which gives you the Packages file: +# https://dl.google.com/linux/chrome-remote-desktop/deb/dists/stable/main/binary-i386/Packages +# https://dl.google.com/linux/chrome-remote-desktop/deb/dists/stable/main/binary-amd64/Packages +# And finally gives you the file name: +# pool/main/c/chrome-remote-desktop/chrome-remote-desktop_29.0.1547.32_amd64.deb +# +# Use curl to find the answer: +# curl -q https://dl.google.com/linux/chrome-remote-desktop/deb/dists/stable/main/binary-amd64/Packages | grep ^Filename + +EAPI="7" + +PYTHON_COMPAT=( python3_{7,8,9} ) +PLOCALES="am ar bg bn ca cs da de el en_GB en es_419 es et fa fil fi fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt_BR pt_PT ro ru sk sl sr sv sw ta te th tr uk vi zh_CN zh_TW" + +inherit unpacker python-single-r1 l10n + +DESCRIPTION="access remote computers via Chrome!" +PLUGIN_URL="https://chrome.google.com/remotedesktop" +HOMEPAGE="https://support.google.com/chrome/answer/1649523 + https://chrome.google.com/remotedesktop" +BASE_URI="https://dl.google.com/linux/chrome-remote-desktop/deb/pool/main/c/${PN}/${PN}_${PV}" +SRC_URI="amd64? ( ${BASE_URI}_amd64.deb )" + +LICENSE="google-chrome" +SLOT="0" +KEYWORDS="-* ~amd64" +IUSE="xrandr" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="bindist mirror" + +# Packages we execute, but don't link. +RDEPEND="app-admin/sudo + ${PYTHON_DEPS}" +# All the libs this package links against. +RDEPEND+=" + >=dev-libs/expat-2 + dev-libs/glib:2 + dev-libs/nspr + dev-libs/nss + $(python_gen_cond_dep 'dev-python/psutil[${PYTHON_USEDEP}]') + gnome-base/gconf:2 + media-libs/fontconfig + media-libs/freetype:2 + sys-apps/dbus + sys-devel/gcc + sys-libs/glibc + sys-libs/pam + x11-apps/xdpyinfo + x11-apps/setxkbmap + x11-libs/cairo + x11-libs/gtk+:3 + x11-libs/libX11 + x11-libs/libxcb + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libXtst + x11-libs/pango" +# Settings we just need at runtime. +# TODO: Look at switching to xf86-video-dummy & xf86-input-void instead of xvfb. +# - The env var (CHROME_REMOTE_DESKTOP_USE_XORG) seems to be stripped before being checked. +# - The Xorg invocation uses absolute paths with -logfile & -config which are rejected. +# - The config takes over the active display in addition to starting up a virtual one. +RDEPEND+=" + xrandr? ( x11-apps/xrandr ) + x11-base/xorg-server[xvfb]" +DEPEND="$(unpacker_src_uri_depends)" + +S=${WORKDIR} + +QA_PREBUILT="/opt/google/chrome-remote-desktop/*" + +PATCHES=( + "${FILESDIR}"/${PN}-44.0.2403.44-always-sudo.patch #541708 +) + +src_prepare() { + default + + gunzip usr/share/doc/${PN}/*.gz || die + + cd opt/google/chrome-remote-desktop + python_fix_shebang chrome-remote-desktop + + cd remoting_locales + rm fake-bidi* || die + PLOCALES=${PLOCALES//_/-} l10n_find_plocales_changes "${PWD}" '' '.pak' +} + +src_install() { + pushd opt/google/chrome-remote-desktop/remoting_locales >/dev/null || die + rm_pak() { local l=${1//_/-}; rm "${l}.pak" "${l}.pak.info"; } + l10n_for_each_disabled_locale_do rm_pak + popd >/dev/null + + insinto /etc + doins -r etc/opt + dosym ../opt/chrome/native-messaging-hosts /etc/chromium/native-messaging-hosts #581754 + + insinto /opt + doins -r opt/google + chmod a+rx "${ED}"/opt/google/${PN}/* || die + fperms +s /opt/google/${PN}/user-session + + dodir /etc/pam.d + dosym system-remote-login /etc/pam.d/${PN} + + dodoc usr/share/doc/${PN}/changelog* + + newinitd "${FILESDIR}"/${PN}.rc ${PN} + newconfd "${FILESDIR}"/${PN}.conf.d ${PN} +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog "Two ways to launch the server:" + elog "(1) access an existing desktop" + elog " (a) install the Chrome plugin on the server & client:" + elog " ${PLUGIN_URL}" + elog " (b) on the server, run the Chrome plugin & enable remote access" + elog " (c) on the client, connect to the server" + elog "(2) headless system" + elog " (a) install the Chrome plugin on the client:" + elog " ${PLUGIN_URL}" + elog " (b) run ${EPREFIX}/opt/google/chrome-remote-desktop/start-host --help to get the auth URL" + elog " (c) when it redirects you to a blank page, look at the URL for a code=XXX field" + elog " (d) run start-host again, and past the code when asked for an authorization code" + elog " (e) on the client, connect to the server" + elog + elog "Configuration settings you might want to be aware of:" + elog " ~/.${PN}-session - shell script to start your session" + elog " /etc/init.d/${PN} - script to auto-restart server" + fi +} diff --git a/net-misc/chrome-remote-desktop/files/chrome-remote-desktop-44.0.2403.44-always-sudo.patch b/net-misc/chrome-remote-desktop/files/chrome-remote-desktop-44.0.2403.44-always-sudo.patch new file mode 100644 index 000000000000..d303e5e753f9 --- /dev/null +++ b/net-misc/chrome-remote-desktop/files/chrome-remote-desktop-44.0.2403.44-always-sudo.patch @@ -0,0 +1,20 @@ +https://bugs.gentoo.org/541708 + +just use `sudo` for everything + +--- a/opt/google/chrome-remote-desktop/chrome-remote-desktop ++++ b/opt/google/chrome-remote-desktop/chrome-remote-desktop +@@ -1092,12 +1092,7 @@ + logging.info("Group '%s' not found." % CHROME_REMOTING_GROUP_NAME) + + command = [SCRIPT_PATH, '--add-user-as-root', user] +- if os.getenv("DISPLAY"): +- # TODO(rickyz): Add a Polkit policy that includes a more friendly message +- # about what this command does. +- command = ["/usr/bin/pkexec"] + command +- else: +- command = ["/usr/bin/sudo", "-k", "--"] + command ++ command = ["/usr/bin/sudo", "-k", "--"] + command + + # Run with an empty environment out of paranoia, though if an attacker + # controls the environment this script is run under, we're already screwed diff --git a/net-misc/chrome-remote-desktop/files/chrome-remote-desktop.conf.d b/net-misc/chrome-remote-desktop/files/chrome-remote-desktop.conf.d new file mode 100644 index 000000000000..aa3d8919c87f --- /dev/null +++ b/net-misc/chrome-remote-desktop/files/chrome-remote-desktop.conf.d @@ -0,0 +1,7 @@ +# /etc/conf.d/chrome-remote-desktop: config file for /etc/init.d/chrome-remote-desktop + +# List of users to start Chrome Remote Desktop for. +CHROME_REMOTING_USERS='' + +# Options to pass to chrome-remote-desktop. Only the -s option is interesting. +#OPTIONS='-s 1600x1200 -s 3840x1600' diff --git a/net-misc/chrome-remote-desktop/files/chrome-remote-desktop.rc b/net-misc/chrome-remote-desktop/files/chrome-remote-desktop.rc new file mode 100644 index 000000000000..272923ce6afb --- /dev/null +++ b/net-misc/chrome-remote-desktop/files/chrome-remote-desktop.rc @@ -0,0 +1,65 @@ +#!/sbin/openrc-run +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="checkconfig reload" + +CRD=/opt/google/chrome-remote-desktop/chrome-remote-desktop + +depend() { + need net + use logger +} + +checkconfig() { + local ret=0 + if [ -z "${CHROME_REMOTING_USERS}" ] ; then + eerror "You must set CHROME_REMOTING_USERS in /etc/conf.d/${SVCNAME} first" + ret=1 + else + local user + for user in ${CHROME_REMOTING_USERS} ; do + if ! id "${user}" >/dev/null ; then + eerror "Invalid user found in CHROME_REMOTING_USERS: ${user}" + ret=1 + fi + done + fi + return ${ret} +} + +for_users() { + local user ret msg log + msg=$1; shift + + for user in ${CHROME_REMOTING_USERS} ; do + ebegin "${msg} ${SVCNAME} for ${user}" + + # We need to background the app as it won't fork until the network + # (including DNS) is available. + start-stop-daemon \ + -b \ + -u "${user}" \ + -x "${CRD}" \ + -- \ + ${OPTIONS} \ + "$@" + eend $? + : $(( ret |= $? )) + done + + return ${ret} +} + +start() { + checkconfig || return + for_users Starting --start +} + +stop() { + for_users Stopping --stop +} + +reload() { + for_users Reloading --reload +} diff --git a/net-misc/chrome-remote-desktop/metadata.xml b/net-misc/chrome-remote-desktop/metadata.xml new file mode 100644 index 000000000000..09ff7ff62a4c --- /dev/null +++ b/net-misc/chrome-remote-desktop/metadata.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<maintainer type="person"> + <email>vapier@gentoo.org</email> +</maintainer> +<use> + <flag name="xrandr">Enable support for the XRandR extension for dynamic desktop resizing</flag> +</use> +</pkgmetadata> |