[Buildroot] [PATCH v2] android-tools: new host package
Antoine Tenart
antoine.tenart at free-electrons.com
Sun May 3 11:03:21 UTC 2015
Arnout,
On Sat, May 02, 2015 at 11:36:46AM +0200, Arnout Vandecappelle wrote:
> On 01/05/15 18:15, Antoine Tenart wrote:
> > From: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> >
> > This host package allows to build the fastboot and adb utilities,
> > which can be used to interact with target devices implementing one of
> > these protocols.
> >
> > The work behind this commit was funded by ECA Group
> > <http://www.ecagroup.com>. ECA Group is the copyright owner of the
> > contributed code.
> >
> > Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
>
> Since the patch passes through you, you _have_ to add your Sob to confirm that
> you are allowed to push this patch under Buildroot's license.
Sure,
Signed-off-by: Antoine Tenart <antoine.tenart at free-electrons.com>
>
> > ---
> >
> > Since v1:
> > - fixed typos
> > - added android-tools.hash
> >
> > package/Config.in.host | 1 +
> > .../android-tools/0001-android-config-header.patch | 404 +++++++++++++++++++++
> > package/android-tools/Config.in.host | 24 ++
> > package/android-tools/android-tools.hash | 3 +
> > package/android-tools/android-tools.mk | 52 +++
> > 5 files changed, 484 insertions(+)
> > create mode 100644 package/android-tools/0001-android-config-header.patch
> > create mode 100644 package/android-tools/Config.in.host
> > create mode 100644 package/android-tools/android-tools.hash
> > create mode 100644 package/android-tools/android-tools.mk
> >
> > diff --git a/package/Config.in.host b/package/Config.in.host
> > index 94981adb6425..6df627f1752f 100644
> > --- a/package/Config.in.host
> > +++ b/package/Config.in.host
> > @@ -1,5 +1,6 @@
> > menu "Host utilities"
> >
> > + source "package/android-tools/Config.in.host"
> > source "package/checkpolicy/Config.in.host"
> > source "package/cramfs/Config.in.host"
> > source "package/dfu-util/Config.in.host"
> > diff --git a/package/android-tools/0001-android-config-header.patch b/package/android-tools/0001-android-config-header.patch
> > new file mode 100644
> > index 000000000000..8717061a048c
> > --- /dev/null
> > +++ b/package/android-tools/0001-android-config-header.patch
> > @@ -0,0 +1,404 @@
> > +Add the AndroidConfig.h header and tweak the build system
> > +
> > +The Debian adaptation of android-tools normally relies on a separate
> > +package to provide linux-x86/AndroidConfig.h. Since we don't want to
> > +add this dependency in Buildroot just for one header file, let's
> > +simply integrate it as a patch, and tweak the build system
> > +accordingly.
>
> Wouldn't it be better then to use EXTRA_DOWNLOADS to get it from some
> repository, e.g.
>
> http://platform--build.android-source-browsing.googlecode.com/git-history/2988a09f90d53bda1d1b5785b25cc153ba73fb77/core/combo/include/arch/linux-x86/AndroidConfig.h
>
> [snip]
> > +--- a/debian/makefiles/adb.mk
> > ++++ b/debian/makefiles/adb.mk
> > +@@ -40,7 +40,7 @@
> > + CPPFLAGS+= -DADB_HOST=1
> > + CPPFLAGS+= -I$(SRCDIR)/core/adb
> > + CPPFLAGS+= -I$(SRCDIR)/core/include
> > +-CPPFLAGS+= -include /usr/include/android/arch/linux-x86/AndroidConfig.h
> > ++CPPFLAGS+= -include $(SRCDIR)/AndroidConfig.h
>
> This would have to stay of course.
> This would have to stay of course.
> [snip]
> > diff --git a/package/android-tools/Config.in.host b/package/android-tools/Config.in.host
> > new file mode 100644
> > index 000000000000..7702d1d26266
> > --- /dev/null
> > +++ b/package/android-tools/Config.in.host
> > @@ -0,0 +1,24 @@
> > +config BR2_PACKAGE_HOST_ANDROID_TOOLS
> > + bool "android-tools"
> > + help
> > + This package contains the fastboot and adb utilities, that
> > + can be used to interact with target devices using of these
> one
>
> > + protocols.
> > +
> > +if BR2_PACKAGE_HOST_ANDROID_TOOLS
> > +
> > +config BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT
> > + bool "fastboot"
>
> If neither is selected, then nothing will be built. So I'd add
>
> default y if !BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT
>
> so that at least by default _something_ will be built.
>
> I would even say, get rid of the config options and build both of them, but I
> guess you want to avoid a redundant build of host-openssl. Although I must say,
> if you anyway have to build host-libselinux and all its dependencies, openssl
> isn't going to make the difference.
>
>
> > + help
> > + This option will build and install the fastboot utility for
> > + the host, which can be used to reflash target devices
> > + implementing the fastboot protocol.
> > +
> > +config BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB
> > + bool "adb"
> > + help
> > + This option will build and install the adb utility for the
> > + host, which can be used to interact with target devices
> > + implementing the ADB protocol.
> > +
> > +endif
> > diff --git a/package/android-tools/android-tools.hash b/package/android-tools/android-tools.hash
> > new file mode 100644
> > index 000000000000..57bbc6f88070
> > --- /dev/null
> > +++ b/package/android-tools/android-tools.hash
> > @@ -0,0 +1,3 @@
> > +# From http://snapshot.debian.org/archive/debian/20141125T040054Z/pool/main/a/android-tools/
> > +sha512 aadf75d29e2aa223870c942fdd44bbeb9466542e17b81bb93069d4415dd6644b5266465d4e466b1d5ed2a84f86d89450a3aa077f4f81268ac1a3d1e4df74d9ad android-tools_4.2.2+git20130529.orig.tar.xz
> > +sha512 c879d0fed0d53030319813cfadc29d939dec7600210d11c8e398e61c69447971f82e1e5228aeba730a2d95899c1c5d5d2a3b06e9a19a91866b33b5bc068079c6 android-tools_4.2.2+git20130529-5.1.debian.tar.xz
> > diff --git a/package/android-tools/android-tools.mk b/package/android-tools/android-tools.mk
> > new file mode 100644
> > index 000000000000..436351853f5a
> > --- /dev/null
> > +++ b/package/android-tools/android-tools.mk
> > @@ -0,0 +1,52 @@
> > +################################################################################
> > +#
> > +# android-tools
> > +#
> > +################################################################################
> > +
> > +ANDROID_TOOLS_SITE = http://snapshot.debian.org/archive/debian/20141125T040054Z/pool/main/a/android-tools/
> > +ANDROID_TOOLS_VERSION = 4.2.2+git20130529
> > +ANDROID_TOOLS_SOURCE = android-tools_$(ANDROID_TOOLS_VERSION).orig.tar.xz
> > +HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-5.1.debian.tar.xz
> > +ANDROID_TOOLS_LICENSE = Apache-2.0
> > +ANDROID_TOOLS_LICENSE_FILES = debian/copyright
> > +
> > +# Extract the Debian tarball inside the sources
> > +define HOST_ANDROID_TOOLS_DEBIAN_EXTRACT
> > + $(call suitable-extractor,$(notdir $(HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS))) \
> > + $(DL_DIR)/$(notdir $(HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \
> > + $(TAR) -C $(@D) $(TAR_OPTIONS) -
> > +endef
> > +
> > +HOST_ANDROID_TOOLS_POST_EXTRACT_HOOKS += HOST_ANDROID_TOOLS_DEBIAN_EXTRACT
> > +
> > +# Apply the Debian patches before applying the Buildroot patches
> > +define HOST_ANDROID_TOOLS_DEBIAN_PATCH
> > + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*
> > +endef
> > +
> > +HOST_ANDROID_TOOLS_PRE_PATCH_HOOKS += HOST_ANDROID_TOOLS_DEBIAN_PATCH
> > +
> > +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT),y)
> > +HOST_ANDROID_TOOLS_TARGETS += fastboot
> > +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB),y)
> > +HOST_ANDROID_TOOLS_TARGETS += adb
> > +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux host-openssl
> > +endif
> > +
> > +define HOST_ANDROID_TOOLS_BUILD_CMDS
> > + $(foreach t,$(HOST_ANDROID_TOOLS_TARGETS),\
> > + mkdir -p $(@D)/build-$(t) && \
> > + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \
> > + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep))
> > +endef
>
> I think there should be a comment explaining why each tool has to be built in a
> separate directory.
>
>
> Regards,
> Arnout
>
> > +
> > +define HOST_ANDROID_TOOLS_INSTALL_CMDS
> > + $(foreach t,$(HOST_ANDROID_TOOLS_TARGETS),\
> > + $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(HOST_DIR)/usr/bin/$(t)$(sep))
> > +endef
> > +
> > +$(eval $(host-generic-package))
> >
>
>
> --
> Arnout Vandecappelle arnout at mind be
> Senior Embedded Software Architect +32-16-286500
> Essensium/Mind http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
--
Antoine Ténart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
More information about the buildroot
mailing list