Apertis 16.12 Release
16.12 is the current stable development release of Apertis, a Debian/Ubuntu derivative distribution geared towards the creation of product-specific images for ARM (ARMv7 using the hardfloat ABI) and Intel x86-64 (64-bit) systems.
This Apertis release is based on top of the Ubuntu 16.04 (Xenial) LTS release with several customization. Test results of the 16.12 release are available in the 16.12 test report.
Release downloads
Apertis 16.12 images |
---|
Intel 64-bit |
The minimal
, target
and development
images are tested on the
reference hardware (MinnowBoard MAX),
but they can run on any UEFI-based x86-64 system. The sdk
image is
tested under VirtualBox.
Apertis 16.12 repositories
deb
https://repositories.apertis.org/apertis/ 16.12 target helper-libs development sdk hmi
New features
Stable application bundle layout
Version 1.0.0 of the Application Bundle Specification has been published, which means that the layout of bundles is now stable and that bundles that adhere to it are guaranteed to be installable on any future release of Apertis with no changes.
The Canterbury application manager has been updated to match the specification
Web runtime
The first implementation of the Web runtime
specification has
landed in Apertis 16.12 as a technology preview. Application bundles can
use the /usr/bin/bredon-0-launcher
shared launcher to exclusively rely
on HTML/JS/CSS for their needs while still being able to access all the
native GObject-based APIs provides by Apertis through the
GObject-Introspection bindings provided by Seed.
Application store client
The old application store client implementation (Frome) has been refreshed to take advantage of the recent development in the finalized bundle specification, in the application manager (Canterbury) and in the application mounter (Ribchester), while preserving the same D-Bus API for applications.
The updated application store client can now create its own account on the reference server, download packed application bundles using the download manager service (Newport) and manage the installed state of application bundles.
Apertis Development Environment tools
To improve the developer experience for Apertis a lot of effort has been focused on providing tools to ease the time-consuming parts of setting up the appropriate development environment.
A command-line tool, ade
, can now help developers in managing sysroot
environments to target different releases of Apertis for different
architectures, cross-building programs and libraries, packing
application bundles that can be deployed on the target system and
connect to it to run application bundles under an interactive debugger.
Sample application bundles
The source code for some simple application bundles has been released to demonstrate how to accomplish specific tasks, showcasing different aspects of the SDK APIs provided in Apertis.
-
Basic application bundle skeleton (hello-world)
-
The hello-world bundle demonstrates the most simple graphical application, providing a base for all the other sample apps. It only displays a non-interactive message on screen, but shows how to provide entry points that can be shown in the application menu by using a .desktop file, demonstrates how to integrate with the application manager (
GApplication
), and provides the basic application bundle project scaffolding. -
Hardkeys (special keys) handling
-
Demonstrates how to listen for events triggered by standard and special keys like arrows and back/forward keys and react to them.
-
Preferences system (GSettings) usage
-
A simple applications that switches its background color on click and it is able to restore the last selected color when restarted by storing it as an application-specific setting.
-
Showing / dismissing notifications
-
Triggers a notification when the button is clicked, automatically dismissing it after two seconds.
-
Persistent data handling
-
Save the number of times the button gets pressed in a persistent data file, using the
GKeyFile
API -
Shipping a graphical program with a separate background agent
-
Demonstrate how to split an application in a graphical program implementing the user-facing part of the bundle and a separate agent running in the background which is controlled by the graphical program using D-Bus methods and properties.
-
Using C++ and embed existing external libraries
-
This fairly advanced sample applications demonstrates how to build an application using C++ instead of pure C using the same SDK API, and also how to embed a private copy of an existing, complex, and externally-maintained C++ library such as OpenCV which uses a different build system (CMake instead of the GNU Autotools).
-
Writing applications using HTML/JS/CSS with the web runtime
-
An application written without any C or C++ code, relying exclusively on the web runtime shipped in the latest version of Apertis to implement applications using only the standard HTML/JS/CSS web technologies and the GObject-Introspection bindings to access the native SDK APIs from JavaScript code
Groundwork
Web runtime JS bindings
Seed has been chosen to provide the GObject-Introspection bindings needed to access the native SDK API provided by Apertis from the JavaScript code of web applications running in the Apertis Web runtime, which uses WebKitGTK+ to display the HTML/CSS contents and the JSC JavaScript engine.
WebKit2GTK+ performance on Wayland
The work on hardware-accelerated compositing that landed in the previous release has been further improved by noticeably speeding up how GTK+ paints its windows, benefiting any application using GTK+ and not only WebKit2GTK+.
Multiple mockable backends in geocode-glib
This upstream
effort which has not
landed yet in 16.12 aims at improving the
testability of
geocode-glib
and also let it use different backend implementations.
Lightwood2
A new version of the Lightwood abstract widget set API is currently under review.
Traprain route guidance API
Traprain gained a new API allowing navigation services to send turn-by-turn notifications and progress information about the current journey accordingly to the Geolocation and navigation document.
Design
Audio management
A first version of the Audio management concept document has been published, describing how streams and their priorities should be managed in a Apertis system using PulseAudio.
List widgets
The list concept document has been further clarified and it is now available for public consumption, providing the architecture for modern, model-based advanced list widgets, based on the experience gathered working with the roller widget.
Speech-recognition
The Speech recognition document describes how an Apertis system can be operated using speech commands, without physically interacting with hardware buttons or touch screens.
It defines an uniform and consistent user interface, using three different types of user interaction: command and control, data selection and dictation.
Routing preferences handling in nav:
URIs
The Geolocation and navigation
document
has seen the addition of routing-specific parameters in nav:
URIs,
allowing applications to ask the navigation engine to plan routes for
specific kinds of vehicles, avoiding tolls and motorways, or trying to
pick the shortest or fastest route.
Web runtime
New provisions have been added to the Web runtime specification to provide more details about the requirements that any compatible implementation has to provide to be able to transparently run applications that target the Apertis web runtime.
Web portal caching
A document about caching in WebKitGTk+ and its usage in specific use-cases has been published, describing how a offline-first web portal could be implemented using web technologies available in Apertis.
Application layout
With the release of the stable bundle specification the Application layout document has been updated to point to it and to provide more clarifications.
Deprecations and ABI/API breaks
-
T2789: Add namespace to SampleItem of mildenhall
-
The
SampleItem
class and related symbols have been renamed toMildenhallSampleItem
to properly namespace them. -
T3031: mildenhall should keep the naming convention rules
-
Applications should
#include <mildenhall/mildenhall.h>
as direct inclusion of other Mildenhall headers is now deprecated.initialize_ui_toolkit()
has been deprecated, simply useclutter_init()
instead.create_mildenhall_window()
has been deprecated, usemildenhall_stage_new()
instead. -
T2640: Generate a single library for all the widgets
-
The
SONAME
of theliblightwood
widget library has changed since all the widgets have been moved in a single library to reduce the linking overhead. This means that applications linking to theliblightwoodbutton.so.0
and related libraries will need to be rebuilt to link to the newliblightwood-0.so.0
. No source code changes should be required, the new setup should be automatically be picked up by just rebuilding the existing code. -
T2707: Canterbury: remove support for GSettings-schema-based entry points
-
The old entry points discovery mechanism based on GSettings schemas is still available but will be removed immediately after the release and won’t be available in 17.03. Use
.desktop
files to describe entry points in application bundles.
Infrastructure
Apertis infrastructure tools
For Debian Jessie based systems:
deb
https://repositories.apertis.org/debian/ jessie tools
For Ubuntu Trusty based systems:
deb
https://repositories.apertis.org/ubuntu/ trusty tools
Images
Image daily builds, as well as release builds can be found at:
Image build tools can be found in the Apertis tools repositories.
Test Framework
The list of available test cases, including manual and automated, can be found here.
LAVA service packages are available in the Apertis tools repository. To install, please follow instructions.
Known issues
-
- Mildenhall compositor crops window
-
- Tracker issue when creating thumbnails on SDK and ARM
-
- Issue with cgroup tests on SDK
-
- Cannot update sysroot in Eclipse on SDK
-
- Kinetic scrolling is not smooth
-
- Bluetooth pairing fails on ARM
-
- Apparmor lockdown session profile does not work as expected
-
- PulseAudio AppArmor profile doesn’t work as expected on ARM
-
- Contact linking does not work on devel image
-
- Issue with LibreOffice AppArmor profile
-
- Issue with JavaScript engine
-
- Factory reset does not work
-
- Target doesn’t reboot after system update