chiark / gitweb /
Error if buildjni= is present but no native code was packaged
authorDaniel Martí <mvdan@mvdan.cc>
Thu, 27 Mar 2014 18:22:21 +0000 (19:22 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Thu, 27 Mar 2014 18:22:21 +0000 (19:22 +0100)
docs/fdroid.texi
fdroidserver/build.py

index ac0ec4e333eeedade075999682271c2b872e23dc..fa6a251ad5609478242d4aba516e68cbfa26b71b 100644 (file)
@@ -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=<flavour>[@@<dir>]
 Build with gradle instead of ant, specifying what flavour to assemble.
 If <flavour> 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 @@<dir> is attached to <flavour>, 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=<flavour>@@..'.
+If @@<dir> is attached to <flavour>, 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=<flavour>@@..'.
 
 @item maven=yes[@@<dir>]
 Build with maven instead of ant. Like gradle, an extra @@<dir> tells f-droid
index cb063af6111ff564fd769f3bf49963f34304f557..e8a0eb37ab2da310d809f56e5f7d40a6d949fb3c 100644 (file)
@@ -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']