Always invoke gradle except as root

The custom target used to invoke Gradle from Meson should always
be built, otherwise, the server would not be rebuilt on source changes.

However, when enabling "build_always", gradle is invoked as root on
"sudo ninja install" after "ninja", so it downloads the whole Gradle
world into /root/.gradle.

To avoid the problem, just do not call gradle if the effective user id
is 0.
master
Romain Vimont 8 years ago
parent c2127d0819
commit 4c49b27e9f

@ -1,9 +1,5 @@
project('scrcpy-server', 'c') # not really c, but meson expects something
# does not track dependencies, so meson does not guarantees that server is up to date
# call "touch server" or "ninja -t clean server/scrcpy-server.jar" before to rebuild
custom_target('scrcpy-server',
build_always: false, # do not enable, otherwise "sudo ninja install" will execute gradle!
build_always: true, # gradle is responsible for tracking source changes
input: '.',
output: 'scrcpy-server.jar',
command: [find_program('./scripts/build-wrapper.sh'), '@INPUT@', '@OUTPUT@', get_option('buildtype')],

@ -2,6 +2,16 @@
# Wrapper script to invoke gradle from meson
set -e
# Do not execute gradle when ninja is called as root (it would download the
# whole gradle world in /root/.gradle).
# This is typically useful for calling "sudo ninja install" after a "ninja
# install"
if [[ "$EUID" == 0 ]]
then
echo "(not invoking gradle, since we are root)" >&2
exit 0
fi
PROJECT_ROOT="$1"
OUTPUT="$2"
BUILDTYPE="$3"

Loading…
Cancel
Save