summaryrefslogtreecommitdiff
blob: 98867942b1eb810ff49d31c31b31c75f3ece718e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Copyright 1999-2023 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_{9..11} )
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 optfeature plocale

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=""
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}]
		dev-python/pyxdg[${PYTHON_USEDEP}]
	')
	media-libs/fontconfig
	media-libs/freetype:2
	sys-apps/dbus
	sys-devel/gcc
	sys-libs/glibc
	sys-libs/libutempter
	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/libxkbcommon
	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+="
	x11-base/xorg-server[xvfb]"
BDEPEND="$(unpacker_src_uri_depends)"

S=${WORKDIR}

QA_PREBUILT="/opt/google/chrome-remote-desktop/*"

PATCHES=(
	"${FILESDIR}"/${PN}-91.0.4472.10-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
	# These isn't always included.
	rm -f fake-bidi* || die
	PLOCALES=${PLOCALES//_/-} plocale_find_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"; }
	plocale_for_each_disabled_locale 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() {
	optfeature "Dynamic resolution changes" "x11-apps/xrandr"

	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
}