summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 5747c8814b2d2980e9cc1f46ee9481f448636cff (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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Maintainer: leuko <aur_et_aydos_de>
# Maintainer: bug <bug2000@gmail.com>
_pkgname=xpra
pkgname=${_pkgname}-git
pkgver=4.4.r1887.g4d73c3644
pkgrel=1
pkgdesc='multi-platform screen and application forwarding system screen for X11'
arch=(x86_64)
url='https://www.xpra.org'
license=(GPL2)

# https://github.com/Xpra-org/xpra/blob/master/docs/Build/Dependencies.md
# c => for client
# s => for server
depends=(
	# core
	gtk3  # UI toolkit cs

	# for GTK
	python-cairo  # pkg-config --libs py3cairo
	python-gobject  # pkg-config --libs gtk+-3.0 pygobject-3.0

	# network layer
	python-rencode  # packet encoding
	python-lz4  # packet compression
	openssl  # cs
	python-paramiko  # SSH integration (depends on python-cryptography)
	
	# encodings
	python-pillow  # png,jpeg,webp encoding and decoding, format conversion cs

	# xserver
	# pkg-config --libs x11 xtst xfixes xkbfile
	# pkg-config --libs x11 xtst xfixes xcomposite xdamage xext
	# pkg-config --libs x11 xres
	libx11
	libxtst
	libxfixes
	libxkbfile
	libxcomposite
	libxdamage
	libxext
	libxres
	xf86-video-dummy  # default virtual X server
	
	# pkg-config --libs libavutil
	ffmpeg
	# includes:
	# - libvpx (vp8 and 9 codecs for cs)
	# - libwebp (includes libpng, libjpeg(-turbo))
	# - x264
	# - libvorbis
	# - lame (MP3 encoder)
	# - opus
	# - speex
	
	qrencode  # Otherwise client menu does not work
	xorg-server  # Server requires an X executable

	# Above list contains the minimal dependencies. The following are optional but useful.
	gstreamer
	python-opengl
	#python-aioquic  # QUIC protocol, requires pylsqpack and ls-qpack
	python-zeroconf
	python-dbus
	libspng
	libavif
	openh264
)
optdepends=(
	# unless otherwise noted, the deps are both for client and server
	# To use these optional features, install them and then build the package
	# again. `setup.py` enables optional features only if the corresponding
	# package installations can be found.

	# core
	#'python-opengl: OpenGL rendering c'
	'python-opengl-accelerate: accelerated rendering c'
	'python-pycups: Printing cs'

	# network layer
	'python-pyaml: alternative packet encoder cs'
	#'python-aioquic: QUIC protocol cs'
	'python-zeroconf: Multicast DNS session publishing s'  # depends on -netifaces
	'python-dbus: desktop integration, server control interface cs'
	'sshpass: non-interactive SSH password authentication c'

	# authentication
	'python-gssapi: GSSAPI authentication s'
	'python-pykerberos: Kerberos authentication s'
	'python-ldap: LDAP authentication s'
	'python-ldap3: LDAP v3 authentication s'
	'python-pyu2f: U2F authentication s'

	# encoding
	'libspng: faster png encoding cs'
	'opencv: Webcam capture c'
	'libyuv: Colourspace conversion cs'
	'python-pycuda: NVENC s'
	'cuda: NVENC s'
	'python-pynvml: NVENC s'

	# audio forwarding
	# libogg is used by various codecs
	#'gstreamer: audio framework'
	'flac: flac codec (includes libogg)'
	'wavpack: wavpack codec'
	'faac: aac encoder'
	'faad: aac decoder'
	'twolame: MP2 encoder'

	# not listed on Github deps page but in setup.py
	'python-uinput: fine-grained scrolling using virtual input'
	'python-numpy: GPU accelerated capture and compression for NVIDIA cards'
	'python-pyinotify: watch for application menu changes'
	'xpra-html5: HTML5 client. Can be used with Xpra proxy'
	#'xf86-video-dummy-xpra-patch: Xdummy with constant-dpi. Recommended by Xpra' 
)
conflicts=(xpra)
provides=(xpra=$pkgver)
makedepends=(
	git
	cython
	pandoc
	brotli  # HTML client compression'
)
backup=(
	etc/xpra/xpra.conf
	etc/xpra/conf.d/05_features.conf
	etc/xpra/conf.d/10_network.conf
	etc/xpra/conf.d/12_ssl.conf
	etc/xpra/conf.d/15_file_transfers.conf
	etc/xpra/conf.d/16_printing.conf
	etc/xpra/conf.d/20_audio.conf
	etc/xpra/conf.d/30_picture.conf
	etc/xpra/conf.d/35_webcam.conf
	etc/xpra/conf.d/40_client.conf
	etc/xpra/conf.d/42_client_keyboard.conf
	etc/xpra/conf.d/50_server_network.conf
	etc/xpra/conf.d/55_server_x11.conf
	etc/xpra/conf.d/60_server.conf
	etc/xpra/conf.d/65_proxy.conf
	etc/default/xpra
	etc/pam.d/xpra
)
source=('git+https://github.com/Xpra-org/xpra')
md5sums=(SKIP)

pkgver() {
  cd $_pkgname
  git describe --long --tags | sed -E 's/([^-]*-g)/r\1/;s/-/./g;s/^v//'
}

build() {
  cd $_pkgname
  python setup.py build -j $(nproc)
}

package() {
  cd $_pkgname
  python setup.py install --root="$pkgdir" --optimize=1 --skip-build
  mv "$pkgdir"/lib/* "$pkgdir"/usr/lib/

  # /lib exists already
  rmdir "$pkgdir"/lib

  #Move D-BUS Policy
  mkdir -p "$pkgdir"/usr/share/dbus-1
  mv "$pkgdir"/{etc,usr/share}/dbus-1/system.d
}