Skip to content

Commit

Permalink
Always invoke gradle except as root
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
rom1v committed Feb 14, 2018
1 parent c2127d0 commit 4c49b27
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
6 changes: 1 addition & 5 deletions server/meson.build
Original file line number Diff line number Diff line change
@@ -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')],
Expand Down
10 changes: 10 additions & 0 deletions server/scripts/build-wrapper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit 4c49b27

Please sign in to comment.