File: env

package info (click to toggle)
mpv-mpris 1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 176 kB
  • sloc: ansic: 1,063; sh: 184; makefile: 79
file content (111 lines) | stat: -rwxr-xr-x 2,623 bytes parent folder | download | duplicates (2)
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
#!/bin/bash

set -e


exec {BASH_XTRACEFD}>&1
echo "$0" "$@"
set -x


test="$(basename "$1")"


if [ -z "${MPV_MPRIS_TEST_PLUGIN+set}" ] ; then
	export MPV_MPRIS_TEST_PLUGIN=../mpris.so
fi

if [ -z "$MPV_MPRIS_TEST_PLAY" ] ; then
	export MPV_MPRIS_TEST_PLAY=/usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga
fi

if [ -z "$MPV_MPRIS_TEST_MPV_IPC" ] ; then
	export MPV_MPRIS_TEST_MPV_IPC=.
fi

if [ -z "$MPV_MPRIS_TEST_LOG" ] ; then
	export MPV_MPRIS_TEST_LOG=.
fi

if [ -z "$MPV_MPRIS_TEST_DBUS" ] ; then
	MPV_MPRIS_TEST_DBUS=.
fi

if [ -z "$MPV_MPRIS_TEST_XAUTH" ] ; then
	MPV_MPRIS_TEST_XAUTH=.
fi

if [ -z "$MPV_MPRIS_TEST_TMP" ] ; then
	MPV_MPRIS_TEST_TMP=.
fi

if [ -n "$MPV_MPRIS_TEST_PLUGIN" ] ; then
	if [ ! -f "$MPV_MPRIS_TEST_PLUGIN" ] ||
	   [ ! -r "$MPV_MPRIS_TEST_PLUGIN" ] ; then
		echo "$MPV_MPRIS_TEST_PLUGIN not an existing file with read perms" >&2
		exit 1
	fi
fi

if [ ! -f "$MPV_MPRIS_TEST_PLAY" ] ||
   [ ! -r "$MPV_MPRIS_TEST_PLAY" ] ; then
	echo "$MPV_MPRIS_TEST_PLAY not an existing readable file" >&2
	exit 1
fi

writable_dir () {
	if [ ! -d "$1" ] ||
	   [ ! -r "$1" ] ||
	   [ ! -w "$1" ] ||
	   [ ! -x "$1" ] ; then
		echo "$1 not an existing writable directory" >&2
		exit 1
	fi
}

writable_dir "$MPV_MPRIS_TEST_MPV_IPC"
writable_dir "$MPV_MPRIS_TEST_DBUS"
writable_dir "$MPV_MPRIS_TEST_XAUTH"
writable_dir "$MPV_MPRIS_TEST_LOG"
writable_dir "$MPV_MPRIS_TEST_TMP"


MPV_MPRIS_TEST_DBUS="$MPV_MPRIS_TEST_DBUS/dbus"
mkdir -p -m 0700 "$MPV_MPRIS_TEST_DBUS"


# These are not used outside this script so unexport them
export -n \
	MPV_MPRIS_TEST_DBUS \
	MPV_MPRIS_TEST_XAUTH \
	MPV_MPRIS_TEST_TMP


# On some distros --auto-servernum doesn't work in parallel scenarios,
# but --auto-display is offered and does work in parallel scenarios.
# On other distros --auto-servernum *does* work in parallel scenarios,
# but --auto-display is not offered so cannot work at all.
# Detect which xvfb-run we have and use the right option.
if xvfb-run --help | grep -- --auto-display ; then
	xvfb_auto=--auto-display
else
	xvfb_auto=--auto-servernum
fi


rm -f "$MPV_MPRIS_TEST_LOG/$test.xvfb.log" "$MPV_MPRIS_TEST_XAUTH/$test.Xauthority"


# xvfb-run -f is --auth-file, but that does not work on some distros:
# https://bugs.archlinux.org/task/73865
exec \
env \
MPV_MPRIS_TEST_NAME="$test" \
XDG_RUNTIME_DIR="$MPV_MPRIS_TEST_DBUS" \
TEMPDIR="$MPV_MPRIS_TEST_TMP" \
TMPDIR="$MPV_MPRIS_TEST_TMP" \
TEMP="$MPV_MPRIS_TEST_TMP" \
TMP="$MPV_MPRIS_TEST_TMP" \
dbus-run-session -- \
xvfb-run "$xvfb_auto" --error-file "$MPV_MPRIS_TEST_LOG/$test.xvfb.log" -f "$MPV_MPRIS_TEST_XAUTH/$test.Xauthority" \
"$@"