Skip to contentSkip to conversation

mariadb: new package

RFC New Ryan Coe 2 participants 6 messages Dec 16, 2016 – Dec 17, 2016

lore
Share & tools
lore

Ryan Coe

author
#0 lore raw

v4 cover mariadb: new package

This patch series represents my attempt to add MariaDB 10.1 to Buildroot. Based on feedback, this series does three things. First, the old mysql package is renamed to oracle-mysql. Second, mariadb is added as a new package. Third, mysql is converted to a virtual package. I have tested this on arm and x86_64 with uclibc and glibc.

Based on the work by:
Sylvain Raybaud <[email protected]>
https://patchwork.ozlabs.org/patch/538045/

Changes v4 -> v3
- rebased
- bump version to 10.1.20
- removed second patch as it is now upstream
- explicitly disable dtrace to avoid detection of a host version (suggested by Frank Hunleth)
Changes v3 -> v2
- rebased
- add mariadb as new package instead of replacing mysql (suggested by Thomas Petazzoni)
- added patch to fix uclibc build on arm (suggested by Floris Bos)
- changed sysv startup script to use mysqladmin ping (suggested by Floris Bos)
- added depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS (suggested by Thomas Petazzoni)
- removed dependency on libtool (suggested by Thomas Petazzoni)
- fixed license (suggested by Thomas Petazzoni and Arnout Vandecappelle)
- formatting cleanups
Changes v1 -> v2
- rebased
- added openssl as dependency (suggested by Floris Bos)
- bumped to mariadb version 10.1 (suggested by Floris Bos)
- replaced custom my.cnf with my-small.cnf provided in the target (suggested by Floris Bos)

Ryan Coe (4):
mysql: rename package to oracle-mysql
mariadb: new package
DEVELOPERS: add entry for mariadb
mysql: convert to virtual package

 DEVELOPERS                                         |   1 +
 .../mariadb/0001-add-extra-check-for-librt.patch   |  27 ++++
 package/mariadb/S97mysqld                          |  77 ++++++++++++
 package/mariadb/mariadb.hash                       |   2 +
 package/mariadb/mariadb.mk                         | 114 +++++++++++++++++
 package/mariadb/mysqld.service                     |  13 ++
 package/mysql/Config.in                            |  73 +++++++++--
 package/mysql/mysql.mk                             | 130 +-------------------
 .../0000-ac_cache_check.patch                      |   0
 .../0001-configure-ps-cache-check.patch            |   0
 .../0002-use-new-readline-iface.patch              |   0
 .../0003-ac_stack_direction-is-unset.patch         |   0
 .../0004-Fix-gen_lex_hash-execution.patch          |   0
 .../0005-bison_3_breaks_mysql_server_build.patch   |   0
 .../0006-no-force-static-build.patch               |   0
 .../0007-dont-install-in-mysql-directory.patch     |   0
 package/{mysql => oracle-mysql}/S97mysqld          |   0
 package/{mysql => oracle-mysql}/mysqld.service     |   0
 .../mysql.hash => oracle-mysql/oracle-mysql.hash}  |   0
 package/oracle-mysql/oracle-mysql.mk               | 136 +++++++++++++++++++++
 20 files changed, 437 insertions(+), 136 deletions(-)
 create mode 100644 package/mariadb/0001-add-extra-check-for-librt.patch
 create mode 100644 package/mariadb/S97mysqld
 create mode 100644 package/mariadb/mariadb.hash
 create mode 100644 package/mariadb/mariadb.mk
 create mode 100644 package/mariadb/mysqld.service
 rename package/{mysql => oracle-mysql}/0000-ac_cache_check.patch (100%)
 rename package/{mysql => oracle-mysql}/0001-configure-ps-cache-check.patch (100%)
 rename package/{mysql => oracle-mysql}/0002-use-new-readline-iface.patch (100%)
 rename package/{mysql => oracle-mysql}/0003-ac_stack_direction-is-unset.patch (100%)
 rename package/{mysql => oracle-mysql}/0004-Fix-gen_lex_hash-execution.patch (100%)
 rename package/{mysql => oracle-mysql}/0005-bison_3_breaks_mysql_server_build.patch (100%)
 rename package/{mysql => oracle-mysql}/0006-no-force-static-build.patch (100%)
 rename package/{mysql => oracle-mysql}/0007-dont-install-in-mysql-directory.patch (100%)
 rename package/{mysql => oracle-mysql}/S97mysqld (100%)
 rename package/{mysql => oracle-mysql}/mysqld.service (100%)
 rename package/{mysql/mysql.hash => oracle-mysql/oracle-mysql.hash} (100%)
 create mode 100644 package/oracle-mysql/oracle-mysql.mk
Signature · 1 line
2.9.3
author
#1 lore raw

RFC v4 1/4 mysql: rename package to oracle-mysql

---
 package/Config.in                                  |  2 +-
 .../0000-ac_cache_check.patch                      |  0
 .../0001-configure-ps-cache-check.patch            |  0
 .../0002-use-new-readline-iface.patch              |  0
 .../0003-ac_stack_direction-is-unset.patch         |  0
 .../0004-Fix-gen_lex_hash-execution.patch          |  0
 .../0005-bison_3_breaks_mysql_server_build.patch   |  0
 .../0006-no-force-static-build.patch               |  0
 .../0007-dont-install-in-mysql-directory.patch     |  0
 package/{mysql => oracle-mysql}/Config.in          | 12 ++--
 package/{mysql => oracle-mysql}/S97mysqld          |  0
 package/{mysql => oracle-mysql}/mysqld.service     |  0
 .../mysql.hash => oracle-mysql/oracle-mysql.hash}  |  0
 .../mysql.mk => oracle-mysql/oracle-mysql.mk}      | 66 +++++++++++-----------
 14 files changed, 40 insertions(+), 40 deletions(-)
 rename package/{mysql => oracle-mysql}/0000-ac_cache_check.patch (100%)
 rename package/{mysql => oracle-mysql}/0001-configure-ps-cache-check.patch (100%)
 rename package/{mysql => oracle-mysql}/0002-use-new-readline-iface.patch (100%)
 rename package/{mysql => oracle-mysql}/0003-ac_stack_direction-is-unset.patch (100%)
 rename package/{mysql => oracle-mysql}/0004-Fix-gen_lex_hash-execution.patch (100%)
 rename package/{mysql => oracle-mysql}/0005-bison_3_breaks_mysql_server_build.patch (100%)
 rename package/{mysql => oracle-mysql}/0006-no-force-static-build.patch (100%)
 rename package/{mysql => oracle-mysql}/0007-dont-install-in-mysql-directory.patch (100%)
 rename package/{mysql => oracle-mysql}/Config.in (65%)
 rename package/{mysql => oracle-mysql}/S97mysqld (100%)
 rename package/{mysql => oracle-mysql}/mysqld.service (100%)
 rename package/{mysql/mysql.hash => oracle-mysql/oracle-mysql.hash} (100%)
 rename package/{mysql/mysql.mk => oracle-mysql/oracle-mysql.mk} (65%)
package/Config.in +1 -1
index f7e8c0a..bc9c164 100644
@@ -926,7 +926,7 @@ menu "Database"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
 	source "package/mongodb/Config.in"
-	source "package/mysql/Config.in"
+	source "package/oracle-mysql/Config.in"
 	source "package/postgresql/Config.in"
 	source "package/redis/Config.in"
 	source "package/sqlcipher/Config.in"
package/oracle-mysql/0000-ac_cache_check.patch renamed from package/mysql/0000-ac_cache_check.patch +0 -0
similarity index 100%
rename from package/mysql/0000-ac_cache_check.patch
rename to package/oracle-mysql/0000-ac_cache_check.patch
package/oracle-mysql/0001-configure-ps-cache-check.patch renamed from package/mysql/0001-configure-ps-cache-check.patch +0 -0
similarity index 100%
rename from package/mysql/0001-configure-ps-cache-check.patch
rename to package/oracle-mysql/0001-configure-ps-cache-check.patch
package/oracle-mysql/0002-use-new-readline-iface.patch renamed from package/mysql/0002-use-new-readline-iface.patch +0 -0
similarity index 100%
rename from package/mysql/0002-use-new-readline-iface.patch
rename to package/oracle-mysql/0002-use-new-readline-iface.patch
package/oracle-mysql/0003-ac_stack_direction-is-unset.patch renamed from package/mysql/0003-ac_stack_direction-is-unset.patch +0 -0
similarity index 100%
rename from package/mysql/0003-ac_stack_direction-is-unset.patch
rename to package/oracle-mysql/0003-ac_stack_direction-is-unset.patch
package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch renamed from package/mysql/0004-Fix-gen_lex_hash-execution.patch +0 -0
similarity index 100%
rename from package/mysql/0004-Fix-gen_lex_hash-execution.patch
rename to package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch
package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch renamed from package/mysql/0005-bison_3_breaks_mysql_server_build.patch +0 -0
similarity index 100%
rename from package/mysql/0005-bison_3_breaks_mysql_server_build.patch
rename to package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch
package/oracle-mysql/0006-no-force-static-build.patch renamed from package/mysql/0006-no-force-static-build.patch +0 -0
similarity index 100%
rename from package/mysql/0006-no-force-static-build.patch
rename to package/oracle-mysql/0006-no-force-static-build.patch
package/oracle-mysql/0007-dont-install-in-mysql-directory.patch renamed from package/mysql/0007-dont-install-in-mysql-directory.patch +0 -0
similarity index 100%
rename from package/mysql/0007-dont-install-in-mysql-directory.patch
rename to package/oracle-mysql/0007-dont-install-in-mysql-directory.patch
package/oracle-mysql/Config.in renamed from package/mysql/Config.in +6 -6
similarity index 65%
rename from package/mysql/Config.in
rename to package/oracle-mysql/Config.in
index 7133892..0622a13 100644
@@ -1,5 +1,5 @@
-config BR2_PACKAGE_MYSQL
-	bool "MySQL"
+config BR2_PACKAGE_ORACLE_MYSQL
+	bool "oracle mysql"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
@@ -10,15 +10,15 @@ config BR2_PACKAGE_MYSQL
 
 	  http://www.mysql.com/
 
-if BR2_PACKAGE_MYSQL
+if BR2_PACKAGE_ORACLE_MYSQL
 
-config BR2_PACKAGE_MYSQL_SERVER
-	bool "MySQL server"
+config BR2_PACKAGE_ORACLE_MYSQL_SERVER
+	bool "oracle mysql server"
 	help
 	  Install the MySQL server on the target.
 
 endif
 
-comment "MySQL needs a toolchain w/ C++, threads"
+comment "oracle mysql needs a toolchain w/ C++, threads"
 	depends on BR2_USE_MMU
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
package/oracle-mysql/S97mysqld renamed from package/mysql/S97mysqld +0 -0
similarity index 100%
rename from package/mysql/S97mysqld
rename to package/oracle-mysql/S97mysqld
package/oracle-mysql/mysqld.service renamed from package/mysql/mysqld.service +0 -0
similarity index 100%
rename from package/mysql/mysqld.service
rename to package/oracle-mysql/mysqld.service
package/oracle-mysql/oracle-mysql.hash renamed from package/mysql/mysql.hash +0 -0
similarity index 100%
rename from package/mysql/mysql.hash
rename to package/oracle-mysql/oracle-mysql.hash
package/oracle-mysql/oracle-mysql.mk renamed from package/mysql/mysql.mk +33 -33

144 lines not on this page · raw message

Signature · 1 line
2.9.3
author
#2 lore raw

RFC v4 2/4 mariadb: new package

In reply to Ryan Coe
---
 package/Config.in                                  |   1 +
 .../mariadb/0001-add-extra-check-for-librt.patch   |  27 +++++
 package/mariadb/Config.in                          |  32 ++++++
 package/mariadb/S97mysqld                          |  77 ++++++++++++++
 package/mariadb/mariadb.hash                       |   2 +
 package/mariadb/mariadb.mk                         | 113 +++++++++++++++++++++
 package/mariadb/mysqld.service                     |  13 +++
 package/oracle-mysql/Config.in                     |   1 +
 8 files changed, 266 insertions(+)
 create mode 100644 package/mariadb/0001-add-extra-check-for-librt.patch
 create mode 100644 package/mariadb/Config.in
 create mode 100644 package/mariadb/S97mysqld
 create mode 100644 package/mariadb/mariadb.hash
 create mode 100644 package/mariadb/mariadb.mk
 create mode 100644 package/mariadb/mysqld.service
package/Config.in +1 -0
index bc9c164..dd600bc 100644
@@ -925,6 +925,7 @@ menu "Database"
 	source "package/kompexsqlite/Config.in"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
+	source "package/mariadb/Config.in"
 	source "package/mongodb/Config.in"
 	source "package/oracle-mysql/Config.in"
 	source "package/postgresql/Config.in"
package/mariadb/0001-add-extra-check-for-librt.patch new file +27 -0
new file mode 100644
index 0000000..9a072a9
@@ -0,0 +1,27 @@
+From e6244400dfd3547531a3a3289fadbbe19873f096 Mon Sep 17 00:00:00 2001
+From: Ryan Coe <[email protected]>
+Date: Thu, 27 Oct 2016 20:33:21 -0700
+Subject: [PATCH 1/1] add extra check for librt
+
+Signed-off-by: Ryan Coe <[email protected]>
+---
+ configure.cmake | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure.cmake b/configure.cmake
+index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -126,6 +126,9 @@ IF(UNIX)
+   IF(NOT LIBRT)
+     MY_SEARCH_LIBS(clock_gettime rt LIBRT)
+   ENDIF()
++  IF(NOT LIBRT)
++    MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT)
++  ENDIF()
+   FIND_PACKAGE(Threads)
+ 
+   SET(CMAKE_REQUIRED_LIBRARIES 
+-- 
+2.9.3
+
package/mariadb/Config.in new file +32 -0
new file mode 100644
index 0000000..9d70b3e
@@ -0,0 +1,32 @@
+config BR2_PACKAGE_MARIADB
+	bool "mariadb"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
+	depends on !BR2_PACKAGE_ORACLE_MYSQL
+	select BR2_PACKAGE_LIBAIO
+	select BR2_PACKAGE_LIBXML2
+	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_READLINE
+	help
+	  MariaDB is one of the most popular database servers in the world.
+	  It's made by the original developers of MySQL and guaranteed to
+	  stay open source.
+
+	  http://www.mariadb.org/
+
+if BR2_PACKAGE_MARIADB
+
+config BR2_PACKAGE_MARIADB_SERVER
+	bool "mariadb server"
+	help
+	  Install the mariadb server on the target.
+
+endif
+
+comment "mariadb needs a toolchain w/ C++, threads"
+	depends on BR2_USE_MMU
+	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
package/mariadb/S97mysqld new file +77 -0

77 lines not on this page · raw message

package/mariadb/mariadb.hash new file +2 -0
new file mode 100644
index 0000000..c86eb44
@@ -0,0 +1,2 @@
+# Locally computed
+sha256 c24e83f24d674d9912319f9e9422f093c8ca6be1721a4380cbd74792b89ba0b9  mariadb-10.1.20.tar.gz
package/mariadb/mariadb.mk new file +113 -0

113 lines not on this page · raw message

package/mariadb/mysqld.service new file +13 -0
new file mode 100644
index 0000000..cd30831
@@ -0,0 +1,13 @@
+[Unit]
+Description=MySQL database server
+
+[Service]
+ExecStartPre=/bin/sh -c 'test "`ls -1 /var/lib/mysql | wc -l`" != "0" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
+ExecStart=/usr/bin/mysqld_safe
+Restart=always
+User=mysql
+RuntimeDirectory=mysql
+RuntimeDirectoryMode=0755
+
+[Install]
+WantedBy=multi-user.target
package/oracle-mysql/Config.in +1 -0
index 0622a13..1c2d33b 100644
@@ -3,6 +3,7 @@ config BR2_PACKAGE_ORACLE_MYSQL
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_PACKAGE_MARIADB
 	select BR2_PACKAGE_NCURSES
 	select BR2_PACKAGE_READLINE
 	help
Signature · 1 line
2.9.3
author
#4 lore raw

RFC v4 4/4 mysql: convert to virtual package

In reply to Ryan Coe
---
 package/Config.in                    |  3 +-
 package/mariadb/Config.in            | 32 --------------
 package/mariadb/mariadb.mk           |  1 +
 package/mysql/Config.in              | 83 ++++++++++++++++++++++++++++++++++++
 package/mysql/mysql.mk               |  7 +++
 package/oracle-mysql/Config.in       | 25 -----------
 package/oracle-mysql/oracle-mysql.mk |  1 +
 7 files changed, 93 insertions(+), 59 deletions(-)
 delete mode 100644 package/mariadb/Config.in
 create mode 100644 package/mysql/Config.in
 create mode 100644 package/mysql/mysql.mk
 delete mode 100644 package/oracle-mysql/Config.in
package/Config.in +1 -2
index dd600bc..f7e8c0a 100644
@@ -925,9 +925,8 @@ menu "Database"
 	source "package/kompexsqlite/Config.in"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
-	source "package/mariadb/Config.in"
 	source "package/mongodb/Config.in"
-	source "package/oracle-mysql/Config.in"
+	source "package/mysql/Config.in"
 	source "package/postgresql/Config.in"
 	source "package/redis/Config.in"
 	source "package/sqlcipher/Config.in"
package/mariadb/Config.in deleted +0 -32
deleted file mode 100644
index 9d70b3e..0000000
@@ -1,32 +0,0 @@
-config BR2_PACKAGE_MARIADB
-	bool "mariadb"
-	depends on BR2_INSTALL_LIBSTDCPP
-	depends on BR2_USE_MMU # fork()
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
-	depends on !BR2_PACKAGE_ORACLE_MYSQL
-	select BR2_PACKAGE_LIBAIO
-	select BR2_PACKAGE_LIBXML2
-	select BR2_PACKAGE_NCURSES
-	select BR2_PACKAGE_OPENSSL
-	select BR2_PACKAGE_READLINE
-	help
-	  MariaDB is one of the most popular database servers in the world.
-	  It's made by the original developers of MySQL and guaranteed to
-	  stay open source.
-
-	  http://www.mariadb.org/
-
-if BR2_PACKAGE_MARIADB
-
-config BR2_PACKAGE_MARIADB_SERVER
-	bool "mariadb server"
-	help
-	  Install the mariadb server on the target.
-
-endif
-
-comment "mariadb needs a toolchain w/ C++, threads"
-	depends on BR2_USE_MMU
-	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
package/mariadb/mariadb.mk +1 -0
index 7b47557..6c609da 100644
@@ -10,6 +10,7 @@ MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERS
 MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library)
 MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER
 MARIADB_INSTALL_STAGING = YES
+MARIADB_PROVIDES = mysql
 
 MARIADB_DEPENDENCIES = \
 	host-mariadb \
package/mysql/Config.in new file +83 -0

83 lines not on this page · raw message

package/mysql/mysql.mk new file +7 -0
new file mode 100644
index 0000000..d655625
@@ -0,0 +1,7 @@
+################################################################################
+#
+# mysql
+#
+################################################################################
+
+$(eval $(virtual-package))
package/oracle-mysql/Config.in deleted +0 -25
deleted file mode 100644
index 1c2d33b..0000000
@@ -1,25 +0,0 @@
-config BR2_PACKAGE_ORACLE_MYSQL
-	bool "oracle mysql"
-	depends on BR2_INSTALL_LIBSTDCPP
-	depends on BR2_USE_MMU # fork()
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_PACKAGE_MARIADB
-	select BR2_PACKAGE_NCURSES
-	select BR2_PACKAGE_READLINE
-	help
-	  The MySQL Open Source Database System
-
-	  http://www.mysql.com/
-
-if BR2_PACKAGE_ORACLE_MYSQL
-
-config BR2_PACKAGE_ORACLE_MYSQL_SERVER
-	bool "oracle mysql server"
-	help
-	  Install the MySQL server on the target.
-
-endif
-
-comment "oracle mysql needs a toolchain w/ C++, threads"
-	depends on BR2_USE_MMU
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
package/oracle-mysql/oracle-mysql.mk +1 -0
index 4ec6f73..ed3c0ea 100644
@@ -13,6 +13,7 @@ ORACLE_MYSQL_DEPENDENCIES = readline ncurses
 ORACLE_MYSQL_AUTORECONF = YES
 ORACLE_MYSQL_LICENSE = GPLv2
 ORACLE_MYSQL_LICENSE_FILES = README COPYING
+ORACLE_MYSQL_PROVIDES = mysql
 
 # Unix socket. This variable can also be consulted by other buildroot packages
 MYSQL_SOCKET = /run/mysql/mysql.sock
Signature · 1 line
2.9.3
#5 lore raw

v4 cover mariadb: new package

In reply to Ryan Coe

Hello,

Quoted 5 lines · Ryan Coe

This patch series represents my attempt to add MariaDB 10.1 to Buildroot. Based on feedback, this series does three things. First, the old mysql package is renamed to oracle-mysql. Second, mariadb is added as a new package. Third, mysql is converted to a virtual package. I have tested this on arm and x86_64 with uclibc and glibc.

Thanks a lot, I've applied your patch series. However, before doing so, I did a few changes. Indeed, with your patch series, after PATCH 1, but before PATCH 4, all packages in Buildroot that did depend or select BR2_PACKAGE_MYSQL would have been broken.

To keep things bisectable, here is what I have done:

- Move the patch introducing mariadb as the first patch. I adjusted the "depends on !BR2_PACKAGE_ORACLE_MYSQL" to "depends on !BR2_PACKAGE_MYSQL".

- Merge the patches renaming mysql to oracle-mysql and moving it to a virtual package (also offering mariadb).

I did some quick built tests, and it also went fine. Let's monitor the autobuilders in the next days to see if anything breaks.

However, it is good to remind you that since mariadb is only selected through a choice and is not the default, it will never be chosen by the autobuilders (due to a Kconfig issue, choices are not randomized in our autobuilder testing).

Thanks again!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com