After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 770631 - NDK 12 has all ABIs enabled by default
NDK 12 has all ABIs enabled by default
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: cerbero
git master
Other Linux
: Normal blocker
: 1.9.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-08-31 09:28 UTC by Sebastian Dröge (slomo)
Modified: 2016-09-04 07:17 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
recipes: Install to the appropriate prefix instead of install dir (3.38 KB, patch)
2016-09-02 13:52 UTC, Arun Raghavan
committed Details | Review
cerbero: Allow alternate arch configs in universal builds (2.88 KB, patch)
2016-09-02 13:52 UTC, Arun Raghavan
committed Details | Review
android: Add a universal build (2.84 KB, patch)
2016-09-02 13:52 UTC, Arun Raghavan
committed Details | Review
Patch for gst-player to use the universal build (1.77 KB, patch)
2016-09-02 14:07 UTC, Arun Raghavan
committed Details | Review

Description Sebastian Dröge (slomo) 2016-08-31 09:28:52 UTC
We should provide a better way of using this, e.g. by having all ABIs in a single tarball and having our Android.mk automatically point at the correct subdirectories in there according to the ABI.

This needs cerbero changes: build all ABIs into one tarball and changes to our example applications (like here https://cgit.freedesktop.org/gstreamer/gst-examples/tree/playback/player/android/app/src/main/jni/Android.mk#n12 )
Comment 1 Sebastian Dröge (slomo) 2016-08-31 09:30:36 UTC
And this is a problem because now by default our applications fail to build unless the ABIs are correctly specified and everything is set up accordingly. Which is far from trivial unless we change some things.
Comment 2 Arun Raghavan 2016-09-02 13:52:31 UTC
Created attachment 334650 [details] [review]
recipes: Install to the appropriate prefix instead of install dir

This makes sure that files are correctly installed in the case of
universal builds.
Comment 3 Arun Raghavan 2016-09-02 13:52:38 UTC
Created attachment 334651 [details] [review]
cerbero: Allow alternate arch configs in universal builds

This allows us to specify universal_archs as a map of arch -> config
file (which can be None). If specified, the config file provides
overrides to the default config for that architecture.

This is useful on Android, for example, where we want to specify
DistroVersion as Lollipop+ for ARM64 and x86-64, but use a lower version
for the other arches.
Comment 4 Arun Raghavan 2016-09-02 13:52:47 UTC
Created attachment 334652 [details] [review]
android: Add a universal build

This is currently just the arch packages each in its own subdirectory,
with some duplication of common files. Enough for us to be able to dist
all of this and use it to build apps, though.
Comment 5 Arun Raghavan 2016-09-02 14:07:00 UTC
Created attachment 334653 [details] [review]
Patch for gst-player to use the universal build

I am able to build against all ABIs except MIPS with this patch. Only tested on my phone (arm64, I think), though.
Comment 6 Arun Raghavan 2016-09-02 14:07:28 UTC
Also still making sure that I didn't break non-universal builds.
Comment 7 Sebastian Dröge (slomo) 2016-09-02 14:44:27 UTC
Review of attachment 334652 [details] [review]:

::: cerbero/packages/__init__.py
@@ +71,3 @@
+        if self.config.target_arch == Architecture.UNIVERSAL:
+            # For the universal architecture, collect files from each
+            # sub-archtecture

This probably breaks the iOS universal builds, no? For that it was not needed before, but now this code would also run. Why?
Comment 8 Arun Raghavan 2016-09-02 15:09:51 UTC
(In reply to Sebastian Dröge (slomo) from comment #7)
> Review of attachment 334652 [details] [review] [review]:
> 
> ::: cerbero/packages/__init__.py
> @@ +71,3 @@
> +        if self.config.target_arch == Architecture.UNIVERSAL:
> +            # For the universal architecture, collect files from each
> +            # sub-archtecture
> 
> This probably breaks the iOS universal builds, no? For that it was not
> needed before, but now this code would also run. Why?

Yikes, that's true. I initially did this in the Android packager and then moved it up because it seemed necessary. The OS X universal packager does a try/catch on the packaging. Not sure if that's why it works already. I'll move this back into the Android packager unless you have a better idea.
Comment 9 Sebastian Dröge (slomo) 2016-09-02 15:18:56 UTC
I don't :) Change that and merge, thanks!
Comment 10 Sebastian Dröge (slomo) 2016-09-04 07:17:10 UTC
All merged, and the gst-player example in gst-examples is also updated. 1.9.2 will contain the old and the new binaries now, after 1.9.2 I'll only upload the universal ones (but we need to update the tutorials first then).