Gradle v1.12 daemon fails to start if /tmp is mounted with noexec

The daemon creates a native-platformXXXdir directory with a copy of libnative-platform.so in /tmp and tries to load the library. This fails when /tmp is mounted with the noexec option.

It’s a regression introduced in v1.12. The daemon from v1.11 works with this setup

Just stumbled over the same issue and documented it in GRADLE-3076 before finding this forum entry.

Setting the system property ‘java.io.tmpdir’ to a directory without ‘noexec’ is a workaround.

This is annoying, any chance this will be fixed for 2.0-rc-2 (still broken 2.0-rc-1)?

Setting systemProp.java.io.tmpdir=/some/dir/with/exec/set in ~/.gradle/gradle.properties did not work for me. It seems that gradle does not at all pick this up. Setting TMPDIR=… did not work, either.

At least for the 2.x versions of Gradle, the system property workaround cannot work.

This may be by design, but DefaultDaemonStarter.java sets daemonOpts = daemonParameters.getEffectiveJvmArgs();

All system properties (i.e. -D anything) are treated separately and never passed along to the startProcess() method.

I have been unable to make the daemon work with 2.1 as a normal user yet in an environment where /tmp is set to noexec, and the result is an empty native- directory in /tmp after each failure.

A fix for this issue should be in the latest 2.4 nightly. That is, the daemon should now work on a system with a noexec /tmp partition without having to set java.io.tmpdir or any other workaround.