diff --git a/docs/fdroid.texi b/docs/fdroid.texi index ac0ec4e3..fa6a251a 100644 --- a/docs/fdroid.texi +++ b/docs/fdroid.texi @@ -981,19 +981,22 @@ multi-component projects. The build and scan processes will complain (refuse to build) if this parameter is not defined, but there is a @code{jni} directory present. -If the native code is being built by other means, you can specify -@code{no} here to avoid that. However, if the native code is actually -not required, remove the directory instead (using @code{prebuild} for -example). +If the native code is being built by other means like a gradle task, you +can specify @code{no} here to avoid that. However, if the native code is +actually not required or used, remove the directory instead (using +@code{rm=jni} for example). Using @code{buildjni=no} when the jni code +isn't used nor built will result in an error saying that native +libraries were expected in the resulting package. @item gradle=[@@] Build with gradle instead of ant, specifying what flavour to assemble. If is 'yes', 'main' or empty, no flavour will be used. Note that this will not work on projects with flavours, since it will build all flavours and there will be no 'main' build. -If @@ is attached to , then the gradle tasks will be run in that -directory. This might be necessary if gradle needs to be run in the parent -directory, in which case one would use 'gradle=@@..'. +If @@ is attached to , then the gradle tasks will be run +in that directory. This might be necessary if gradle needs to be run in +the parent directory, in which case one would use +'gradle=@@..'. @item maven=yes[@@] Build with maven instead of ant. Like gradle, an extra @@ tells f-droid diff --git a/fdroidserver/build.py b/fdroidserver/build.py index cb063af6..e8a0eb37 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -688,6 +688,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d vercode = None version = None foundid = None + nativecode = None for line in p.stdout.splitlines(): if line.startswith("package:"): pat = re.compile(".*name='([a-zA-Z0-9._]*)'.*") @@ -702,7 +703,12 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d m = pat.match(line) if m: version = m.group(1) + elif line.startswith("native-code:"): + nativecode = line[12:] + if thisbuild.get('buildjni') is not None: + if nativecode is None or "'" not in nativecode: + raise BuildException("Native code should have been built but none was packaged") if thisbuild['novcheck']: vercode = thisbuild['vercode'] version = thisbuild['version']