diff --git a/server/meson.build b/server/meson.build index fa5dc72717..7be2c8fd0e 100644 --- a/server/meson.build +++ b/server/meson.build @@ -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')], diff --git a/server/scripts/build-wrapper.sh b/server/scripts/build-wrapper.sh index c21e946f3d..f55e1ea408 100755 --- a/server/scripts/build-wrapper.sh +++ b/server/scripts/build-wrapper.sh @@ -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"