Skip to contentSkip to conversation

package/libseccomp: bump version to 2.2.0

PATCH New Bernd Kuhls 3 participants 6 messages Mar 29, 2015 – Apr 20, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 package/libseccomp: bump version to 2.2.0

- change upstream URL, project moved to github
- removed patches not needed anymore since project switched to autoconf
- add newly supported platforms to Config.in

---
 package/libseccomp/0001-remove-static.patch        |   29 ++++++++++++++
 .../0001-use-system-headers-from-sysroot.patch     |   17 --------
 .../0002-Remove-the-dependency-on-proc.patch       |   42 --------------------
 package/libseccomp/Config.in                       |    5 ++-
 package/libseccomp/libseccomp.hash                 |    4 +-
 package/libseccomp/libseccomp.mk                   |   17 ++++----
 6 files changed, 42 insertions(+), 72 deletions(-)
 create mode 100644 package/libseccomp/0001-remove-static.patch
 delete mode 100644 package/libseccomp/0001-use-system-headers-from-sysroot.patch
 delete mode 100644 package/libseccomp/0002-Remove-the-dependency-on-proc.patch
package/libseccomp/0001-remove-static.patch new file +29 -0
new file mode 100644
index 0000000..6fd81f9
@@ -0,0 +1,29 @@
+Do not force static link, it breaks build with
+# BR2_STATIC_LIBS is not set
+BR2_SHARED_LIBS=y
+
+Signed-off-by: Bernd Kuhls <[email protected]>
+
+diff -uNr libseccomp-2.2.0.org/tests/Makefile.am libseccomp-2.2.0/tests/Makefile.am
+--- libseccomp-2.2.0.org/tests/Makefile.am	2015-02-11 21:57:11.000000000 +0100
++++ libseccomp-2.2.0/tests/Makefile.am	2015-03-29 16:03:49.668946652 +0200
+@@ -16,7 +16,6 @@
+ # along with this library; if not, see <http://www.gnu.org/licenses>.
+ #
+ 
+-AM_LDFLAGS = -static
+ LDADD = util.la ../src/libseccomp.la
+ 
+ check_LTLIBRARIES = util.la
+diff -uNr libseccomp-2.2.0.org/tools/Makefile.am libseccomp-2.2.0/tools/Makefile.am
+--- libseccomp-2.2.0.org/tools/Makefile.am	2015-02-11 21:57:11.000000000 +0100
++++ libseccomp-2.2.0/tools/Makefile.am	2015-03-29 16:03:46.164992302 +0200
+@@ -33,8 +33,6 @@
+ scmp_bpf_sim_SOURCES = scmp_bpf_sim.c bpf.h util.h
+ 
+ scmp_sys_resolver_LDADD = ../src/libseccomp.la
+-scmp_sys_resolver_LDFLAGS = -static
+ scmp_arch_detect_LDADD = ../src/libseccomp.la
+-scmp_arch_detect_LDFLAGS = -static
+ scmp_bpf_disasm_LDADD = util.la
+ scmp_bpf_sim_LDADD = util.la
package/libseccomp/0001-use-system-headers-from-sysroot.patch deleted +0 -17
deleted file mode 100644
index 0997edd..0000000
@@ -1,17 +0,0 @@
-configure: check headers in sysroot, not in host's system headers
-
-Signed-off-by: "Yann E. MORIN" <[email protected]>
-
-diff -durN libseccomp-1.0.0.orig/configure libseccomp-1.0.0/configure
---- libseccomp-1.0.0.orig/configure	2012-07-27 22:35:05.000000000 +0200
-+++ libseccomp-1.0.0/configure	2012-10-27 00:12:50.739196219 +0200
-@@ -205,7 +205,8 @@
- #
- 
- # system seccomp includes
--if [[ -r "/usr/include/linux/seccomp.h" ]]; then
-+# ${SYSROOT} added by buildroot for cross-compilation
-+if [[ -r "${SYSROOT}/usr/include/linux/seccomp.h" ]]; then
- 	opt_sysinc_seccomp="yes"
- else
- 	opt_sysinc_seccomp="no"
package/libseccomp/0002-Remove-the-dependency-on-proc.patch deleted +0 -42

42 lines not on this page · raw message

package/libseccomp/Config.in +3 -2
index e851011..4e893c8 100644
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBSECCOMP
 	bool "libseccomp"
-	depends on BR2_i386 || BR2_x86_64
+	depends on BR2_aarch64 || BR2_mips || BR2_mipsel || BR2_mips64 || \
+		BR2_mips64el || BR2_i386 || BR2_x86_64
 	help
 	  High level interface to the Linux Kernel's seccomp filter
 
@@ -11,4 +12,4 @@ config BR2_PACKAGE_LIBSECCOMP
 	  function-call based filtering interface that should be familiar to,
 	  and easily adopted by application developers.
 
-	  http://sourceforge.net/projects/libseccomp/
+	  https://github.com/seccomp/libseccomp
package/libseccomp/libseccomp.hash +2 -2
index f87633e..6bca5c2 100644
@@ -1,2 +1,2 @@
-# Locally computed:
-sha256  8812c11e407c383f5ad6afb84a88e5a0224477bcfe8ff03f0c548e5abaac841c  libseccomp-2.1.1.tar.gz
+# From https://github.com/seccomp/libseccomp/releases/tag/v2.2.0
+sha1	5aa8a230f8529d6ee777098550245e43d2247395fdfd5a2176e28cf7236f1b10	libseccomp-2.2.0.tar.gz
package/libseccomp/libseccomp.mk +8 -9
index fbc4f90..a188298 100644
@@ -4,18 +4,17 @@
 #
 ################################################################################
 
-LIBSECCOMP_VERSION = 2.1.1
-LIBSECCOMP_SITE = http://downloads.sourceforge.net/project/libseccomp/libseccomp-$(LIBSECCOMP_VERSION)
+LIBSECCOMP_VERSION = v2.2.0
+LIBSECCOMP_SITE = $(call github,seccomp,libseccomp,$(LIBSECCOMP_VERSION))
 LIBSECCOMP_LICENSE = LGPLv2.1
 LIBSECCOMP_LICENSE_FILES = LICENSE
 LIBSECCOMP_INSTALL_STAGING = YES
+LIBSECCOMP_AUTORECONF = YES
 
-# Needed for configure to find our system headers:
-LIBSECCOMP_CONF_ENV = SYSROOT=$(STAGING_DIR)
-LIBSECCOMP_MAKE_ENV = $(TARGET_CONFIGURE_OPTS)
-LIBSECCOMP_MAKE_OPTS = SUBDIRS_BUILD=src
-LIBSECCOMP_INSTALL_STAGING_OPTS = SUBDIRS_BUILD=src SUBDIRS_INSTALL="src include" DESTDIR=$(STAGING_DIR) install
-LIBSECCOMP_INSTALL_TARGET_OPTS = SUBDIRS_BUILD=src SUBDIRS_INSTALL="src include" DESTDIR=$(TARGET_DIR) install
+# Needed for autoreconf to work properly, see ./autogen.sh
+define LIBSECCOMP_FIXUP_M4_DIR
+	mkdir $(@D)/m4
+endef
+LIBSECCOMP_POST_EXTRACT_HOOKS += LIBSECCOMP_FIXUP_M4_DIR
 
-# Not a real autotools package, but works quite OK nonetheless
 $(eval $(autotools-package))
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 2/2 package/tor: new package

---
 package/Config.in                   |    1 +
 package/tor/0001-openssl-libz.patch |   89 +++++++++++++++++++++++++++++++++++
 package/tor/Config.in               |   13 +++++
 package/tor/tor.hash                |    2 +
 package/tor/tor.mk                  |   36 ++++++++++++++
 5 files changed, 141 insertions(+)
 create mode 100644 package/tor/0001-openssl-libz.patch
 create mode 100644 package/tor/Config.in
 create mode 100644 package/tor/tor.hash
 create mode 100644 package/tor/tor.mk
package/Config.in +1 -0
index 566a78a..2771ba7 100644
@@ -1233,6 +1233,7 @@ endif
 	source "package/tinc/Config.in"
 	source "package/tinyhttpd/Config.in"
 	source "package/tn5250/Config.in"
+	source "package/tor/Config.in"
 	source "package/transmission/Config.in"
 	source "package/tvheadend/Config.in"
 	source "package/udpcast/Config.in"
package/tor/0001-openssl-libz.patch new file +89 -0

89 lines not on this page · raw message

package/tor/Config.in new file +13 -0
new file mode 100644
index 0000000..0f48d36
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_TOR
+	bool "tor"
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_LIBEVENT
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_ZLIB
+	help
+	  Tor is free software and an open network that helps you defend against
+	  traffic analysis, a form of network surveillance that threatens
+	  personal freedom and privacy, confidential business activities and
+	  relationships, and state security.
+
+	  https://www.torproject.org
package/tor/tor.hash new file +2 -0
new file mode 100644
index 0000000..fdcb069
@@ -0,0 +1,2 @@
+# Locally computed
+sha256	aee0faee9c3f1bb265ee8e94b4bb93967413f3c56e65f954db16b09451546769	tor-0.2.5.11.tar.gz
package/tor/tor.mk new file +36 -0
new file mode 100644
index 0000000..1d0b117
@@ -0,0 +1,36 @@
+################################################################################
+#
+# tor
+#
+################################################################################
+
+TOR_VERSION = 0.2.5.11
+TOR_SITE = https://dist.torproject.org
+TOR_LICENSE = BSD-3c
+TOR_LICENSE_FILES = LICENSE
+TOR_DEPENDENCIES = libevent openssl zlib
+TOR_AUTORECONF = YES
+
+TOR_CONF_OPTS = \
+	--disable-gcc-hardening \
+	--with-libevent-dir=$(STAGING_DIR)/usr \
+	--with-openssl-dir=$(STAGING_DIR)/usr \
+	--with-zlib-dir=$(STAGING_DIR)/usr
+
+ifeq ($(BR2_STATIC_LIBS),y)
+TOR_CONF_OPTS += \
+	--enable-static-libevent \
+	--enable-static-openssl \
+	--enable-static-tor \
+	--enable-static-zlib
+endif
+
+# libseccomp support depends on largefile, see src/common/sandbox.c, line 16
+ifeq ($(BR2_PACKAGE_LIBSECCOMP)$(BR2_LARGEFILE),yy)
+TOR_CONF_OPTS += --enable-seccomp
+TOR_DEPENDENCIES += libseccomp
+else
+TOR_CONF_OPTS += --disable-seccomp
+endif
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.10.4
#2 lore raw

PATCH 2/2 package/tor: new package

Quoted 154 lines · Bernd Kuhls
---
 package/Config.in                   |    1 +
 package/tor/0001-openssl-libz.patch |   89 +++++++++++++++++++++++++++++++++++
 package/tor/Config.in               |   13 +++++
 package/tor/tor.hash                |    2 +
 package/tor/tor.mk                  |   36 ++++++++++++++
 5 files changed, 141 insertions(+)
 create mode 100644 package/tor/0001-openssl-libz.patch
 create mode 100644 package/tor/Config.in
 create mode 100644 package/tor/tor.hash
 create mode 100644 package/tor/tor.mk
package/Config.in +1 -0
index 566a78a..2771ba7 100644
@@ -1233,6 +1233,7 @@ endif
        source "package/tinc/Config.in"
        source "package/tinyhttpd/Config.in"
        source "package/tn5250/Config.in"
+       source "package/tor/Config.in"
        source "package/transmission/Config.in"
        source "package/tvheadend/Config.in"
        source "package/udpcast/Config.in"
package/tor/0001-openssl-libz.patch new file +89 -0
new file mode 100644
index 0000000..802555e
@@ -0,0 +1,89 @@
+Adjust link order of libz to solve bug with static linking
+and remove host paths when looking for openssl.
+
+Signed-off-by: Bernd Kuhls <[email protected]>
+
+diff -uNr tor-0.2.5.11.org/configure.ac tor-0.2.5.11/configure.ac
+--- tor-0.2.5.11.org/configure.ac      2015-03-12 17:49:50.000000000 +0100
++++ tor-0.2.5.11/configure.ac  2015-03-29 14:32:05.058142751 +0200
+@@ -559,11 +559,11 @@
+       fi
+   ])
+
+-TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI],
++TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto -lz $TOR_LIB_GDI],
+     [#include <openssl/rand.h>],
+     [void RAND_add(const void *buf, int num, double entropy);],
+     [RAND_add((void*)0,0,0); exit(0);], [],
+-    [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl])
++    [])
+
+ dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay()
+
+diff -uNr tor-0.2.5.11.org/src/or/include.am tor-0.2.5.11/src/or/include.am
+--- tor-0.2.5.11.org/src/or/include.am 2015-03-12 17:49:50.000000000 +0100
++++ tor-0.2.5.11/src/or/include.am     2015-03-29 14:37:35.409997674 +0200
+@@ -115,7 +115,7 @@
+ src_or_tor_LDADD = src/or/libtor.a src/common/libor.a \
+       src/common/libor-crypto.a $(LIBDONNA) \
+       src/common/libor-event.a \
+-      @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
++      @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \
+       @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+
+ if COVERAGE_ENABLED
+diff -uNr tor-0.2.5.11.org/src/test/include.am tor-0.2.5.11/src/test/include.am
+--- tor-0.2.5.11.org/src/test/include.am       2015-03-12 17:49:50.000000000 +0100
++++ tor-0.2.5.11/src/test/include.am   2015-03-29 14:39:53.264265077 +0200
+@@ -59,16 +59,16 @@
+ src_test_test_LDADD = src/or/libtor-testing.a src/common/libor-testing.a \
+       src/common/libor-crypto-testing.a $(LIBDONNA) \
+       src/common/libor-event-testing.a \
+-      @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
+-      @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
++      @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
++      @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+
+ src_test_bench_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \
+         @TOR_LDFLAGS_libevent@
+ src_test_bench_LDADD = src/or/libtor.a src/common/libor.a \
+       src/common/libor-crypto.a $(LIBDONNA) \
+       src/common/libor-event.a \
+-      @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
+-      @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
++      @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
++      @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+
+ noinst_HEADERS+= \
+       src/test/test.h
+@@ -79,8 +79,8 @@
+ src_test_test_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
+ src_test_test_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \
+       src/common/libor-crypto.a $(LIBDONNA) \
+-      @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
+-      @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
++      @TOR_LIB_MATH@ \
++      @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+ src_test_test_ntor_cl_AM_CPPFLAGS =          \
+       -I"$(top_srcdir)/src/or"
+ NTOR_TEST_DEPS=src/test/test-ntor-cl
+diff -uNr tor-0.2.5.11.org/src/tools/include.am tor-0.2.5.11/src/tools/include.am
+--- tor-0.2.5.11.org/src/tools/include.am      2014-06-18 21:11:45.000000000 +0200
++++ tor-0.2.5.11/src/tools/include.am  2015-03-29 14:41:29.143058949 +0200
+@@ -9,14 +9,14 @@
+ src_tools_tor_gencert_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
+ src_tools_tor_gencert_LDADD = src/common/libor.a src/common/libor-crypto.a \
+       $(LIBDONNA) \
+-        @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
++        @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \
+         @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+
+ src_tools_tor_checkkey_SOURCES = src/tools/tor-checkkey.c
+ src_tools_tor_checkkey_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
+ src_tools_tor_checkkey_LDADD = src/common/libor.a src/common/libor-crypto.a \
+       $(LIBDONNA) \
+-        @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
++        @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \
+         @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+
+ include src/tools/tor-fw-helper/include.am
package/tor/Config.in new file +13 -0
new file mode 100644
index 0000000..0f48d36
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_TOR
+       bool "tor"
+       depends on BR2_USE_MMU # fork()
+       select BR2_PACKAGE_LIBEVENT
+       select BR2_PACKAGE_OPENSSL
+       select BR2_PACKAGE_ZLIB
+       help
+         Tor is free software and an open network that helps you defend against
+         traffic analysis, a form of network surveillance that threatens
+         personal freedom and privacy, confidential business activities and
+         relationships, and state security.
+
+         https://www.torproject.org
package/tor/tor.hash new file +2 -0
new file mode 100644
index 0000000..fdcb069
@@ -0,0 +1,2 @@
+# Locally computed
+sha256 aee0faee9c3f1bb265ee8e94b4bb93967413f3c56e65f954db16b09451546769        tor-0.2.5.11.tar.gz
package/tor/tor.mk new file +0 -0
new file mode 100644
index 0000000..1d0b117

package/tor/tor.mk line 7

Quoted 7 lines
package/tor/tor.mk new file +7 -0
@@ -0,0 +1,36 @@
+################################################################################
+#
+# tor
+#
+################################################################################
+
+TOR_VERSION = 0.2.5.11

What about adding the latest version available (0.2.6.7)?

Quoted 32 lines
package/tor/tor.mk new file +29 -1
+TOR_SITE = https://dist.torproject.org
+TOR_LICENSE = BSD-3c
+TOR_LICENSE_FILES = LICENSE
+TOR_DEPENDENCIES = libevent openssl zlib
+TOR_AUTORECONF = YES
+
+TOR_CONF_OPTS = \
+       --disable-gcc-hardening \
+       --with-libevent-dir=$(STAGING_DIR)/usr \
+       --with-openssl-dir=$(STAGING_DIR)/usr \
+       --with-zlib-dir=$(STAGING_DIR)/usr
+
+ifeq ($(BR2_STATIC_LIBS),y)
+TOR_CONF_OPTS += \
+       --enable-static-libevent \
+       --enable-static-openssl \
+       --enable-static-tor \
+       --enable-static-zlib
+endif
+
+# libseccomp support depends on largefile, see src/common/sandbox.c, line 16
+ifeq ($(BR2_PACKAGE_LIBSECCOMP)$(BR2_LARGEFILE),yy)
+TOR_CONF_OPTS += --enable-seccomp
+TOR_DEPENDENCIES += libseccomp
+else
+TOR_CONF_OPTS += --disable-seccomp
+endif
+
+$(eval $(autotools-package))
--

1.7.10.4

Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

BR

Signature · 1 line
Fabio Porcedda
#3 lore raw

PATCH 2/2 package/tor: new package

Fabio Porcedda <[email protected]> wrote
in news:CAHkwnC_aKhRJezdfbxiMVq6ZsTSGrk-jmns7b7M5Yht3s9HpVA at mail.gmail.com:

Quoted 3 lines
Quoted 1 line

+TOR_VERSION = 0.2.5.11

What about adding the latest version available (0.2.6.7)?

Hi,

https://www.torproject.org/download/download.html.en

"The current stable version of Tor is 0.2.5.12." (will update my patch)

"The current unstable/alpha version of Tor is 0.2.6.7."

Afaik it is the policy of the buildroot project not to ship alpha versions of software.

Regards, Bernd

#4 lore raw

PATCH 1/2 package/libseccomp: bump version to 2.2.0

In reply to Bernd Kuhls

Dear Bernd Kuhls,

package/libseccomp/0001-remove-static.patch

Quoted 1 line · Bernd Kuhls
package/libseccomp/0001-remove-static.patch +0 -0

Do you think you could try to submit this upstream? If not, maybe we should just make the package depends on !BR2_STATIC_LIBS.

package/libseccomp/libseccomp.hash line 2

Quoted 9 lines
package/libseccomp/libseccomp.hash +2 -2
index f87633e..6bca5c2 100644
@@ -1,2 +1,2 @@
-# Locally computed:
-sha256  8812c11e407c383f5ad6afb84a88e5a0224477bcfe8ff03f0c548e5abaac841c  libseccomp-2.1.1.tar.gz
+# From https://github.com/seccomp/libseccomp/releases/tag/v2.2.0
+sha1	5aa8a230f8529d6ee777098550245e43d2247395fdfd5a2176e28cf7236f1b10	libseccomp-2.2.0.tar.gz

Since you're switching to github, I've removed the hash file, because github does not guarantee to offer identical tarballs for a given release.

Committed with the hash file removed (for the static issue, I've kept your patch).

Thanks,

Thomas

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

PATCH 1/2 package/libseccomp: bump version to 2.2.0

In reply to Bernd Kuhls

Dear Bernd Kuhls,

Quoted 5 lines · Bernd Kuhls

- change upstream URL, project moved to github
- removed patches not needed anymore since project switched to autoconf
- add newly supported platforms to Config.in

This update fails to build with a number of toolchains:

http://autobuild.buildroot.org/results/092/092143df2b91d50850067274da531c713f2ccb72/build-end.log
http://autobuild.buildroot.org/results/bd1/bd105e821de583e582199aae31fab13ef17e67a0/build-end.log

Can you have a look?

Thanks,

Thomas

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