I am trying to integrate the F-Droid build server into a CI pipeline for an app.
I have done this successfully for another app by following these steps:
- drop the build recipe into the root dir of the source tree, named
- add a CI job running on the
ci-images-clientimage which installs a bunch of dependencies and eventually runs
fdroid buildwithout specifying a package ID
Since there is no way to extract the package name from the build recipe (in
fdroiddata it would be part of the filename, but not in this setup), F-Droid needs to analyze the sources to determine the package name.
For my first app this works: since it build with gradle, F-Droid analyzes
build.gradle in the root of the source tree to get the manifest path, and then extracts the package name from the manifest,
For the second app, things are a bit trickier since it involves a lot of native code built outside of gradle. The root dir has a file named
build.gradle, which is essentially a NOP (no operation), but
settings.gradle includes another
build.gradle residing in a subdir. The manifest is only referenced in the
build.gradle which resides in the subdir. However, F-Droid does not resolve this inclusion and therefore fails to determine the package name.
Is there any way I can direct F-Droid to the package name, or specify it explicitly in some way?
I have tried adding
subdir: path/to/subdir to the build recipe and
cding back up at the beginning of the
build sections, but that resulted in other weird errors appearing (like the build script no liner finding the C compiler, which works just fine otherwise).
What gives? Should I file a bug for fdroidserver that gradle includes should be analyzed and followed? Or is there any other solution?