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.
This commit is contained in:
Romain Vimont 2018-02-14 11:25:12 +01:00
parent c2127d0819
commit 4c49b27e9f
2 changed files with 11 additions and 5 deletions

View File

@ -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')],

View File

@ -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"