summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2015-11-04 14:04:11 -0500
committerMike Frysinger <vapier@google.com>2015-11-05 14:00:54 -0500
commit52bb2364a63b852fa7b07a119d6ac07be5363d18 (patch)
tree24837f15678f7a4b6aa2fc586d5b862b5671e5b5
parent93e9f5db34983c65d9c06b0819fc5a85f59096dc (diff)
downloadintegration-brillo-m7-mr-dev.tar.gz
handle external/ libs that we also have ebuilds forbrillo-m7-releasebrillo-m7-mr-devbrillo-m7-dev
Since we have a bunch of libs already in external/, make sure we stub out all the ebuilds that duplicate things. This way we don't build from two different sources and clobber things in weird ways. In order for packages to find their headers though, we need to set up a system include tree for packages that aren't "installed". BUG=23171578 Change-Id: Ia7f123a6ae799a765eb984524d281b8ba2270696
-rw-r--r--Android.mk46
l---------external-packages/include/curl1
-rw-r--r--portage/package.provided.in57
-rw-r--r--toolchain/Android.mk5
4 files changed, 104 insertions, 5 deletions
diff --git a/Android.mk b/Android.mk
index b3f463f..7d49ce3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -21,9 +21,53 @@ TARGET_OUT_COMMON_GENTOO := $(TARGET_OUT_COMMON_INTERMEDIATES)/gentoo
3RD_PARTY_WRAPPERS :=
include $(call all-subdir-makefiles)
+# Some libraries are available in external/ already.
+# Note: Keep this in sync with gentoo/integration/portage/package.provided.in.
+# We do not list packages that do not provide libs/headers.
+3RD_PARTY_EXTERNAL_LIBS := \
+ libavahi-client libavahi-common libavahi-core \
+ libbz \
+ libcrypto libssl \
+ libcares \
+ libcurl \
+ libdbus \
+ libext2_blkid libext2_com_err libext2_e2p libext2fs libext2_quota libext2_uuid libtune2fs \
+ libdw libdwelf libdwfl libebl libelf \
+ libexpat \
+ libFLAC \
+ libgmock \
+ libgtest \
+ libicui18n libicuuc \
+ libiprouteutil libnetlink \
+ libip4tc libip6tc libxtables \
+ libjemalloc \
+ libjpeg \
+ libcap \
+ libcap-ng \
+ libdaemon \
+ libdivsufsort libdivsufsort64 \
+ libevent \
+ libmicrohttpd \
+ libnl \
+ libogg \
+ libopus \
+ libselinux \
+ libunwind \
+ libvpx libwebm \
+ libpcre libpcrecpp \
+ libsepol \
+ libspeex \
+ libtinyxml \
+ libtinyxml2 \
+ libwpa_client \
+ libz \
+ $(NULL)
+# Only depend on the packages that are actually requested.
+3RD_PARTY_EXTERNAL_DEPS += $(filter $(3RD_PARTY_EXTERNAL_LIBS),$(product_MODULES) $(PRODUCT_PACKAGES))
+
# Actually run the emerge command for the specific package.
%.emerge: TARGET_TO_ATOM = $(notdir $(patsubst %/,%,$(dir $(1))))/$(notdir $(1:.emerge=))
-%.emerge: | $(3RD_PARTY_WRAPPERS) $(3RD_PARTY_CONFIGS)
+%.emerge: | $(3RD_PARTY_WRAPPERS) $(3RD_PARTY_CONFIGS) $(3RD_PARTY_EXTERNAL_DEPS)
$(hide)mkdir -p $(dir $@) $(TARGET_OUT_GENTOO)/tmp
$(hide)emerge $(call TARGET_TO_ATOM,$@)
$(hide)3rd-party-merge \
diff --git a/external-packages/include/curl b/external-packages/include/curl
new file mode 120000
index 0000000..f26a48c
--- /dev/null
+++ b/external-packages/include/curl
@@ -0,0 +1 @@
+../../../../curl/include/curl \ No newline at end of file
diff --git a/portage/package.provided.in b/portage/package.provided.in
index fc73a07..9abe373 100644
--- a/portage/package.provided.in
+++ b/portage/package.provided.in
@@ -15,9 +15,6 @@ sys-apps/sed-4.2.2
# We have bionic available for the system C library.
virtual/libc-0
-# Android includes its own certificate store.
-app-misc/ca-certificates-20150826
-
# Android doesn't believe in including an editor ;). You can use adb pull to
# copy a file locally, edit it however you want, and then adb push it back to
# the device.
@@ -36,3 +33,57 @@ app-admin/python-updater-0.13
# We don't tweak runtime knobs on the device itself.
app-admin/eselect-1.4.5
app-eselect/eselect-python-20140125
+
+# Some packages are provided by external/ and such instead.
+# We use a large -r# so that various changes in ebuilds don't try to pull
+# in the version anyways (e.g. requiring >=r1 and we only have r0 below).
+# Note: Keep this in sync with gentoo/integration/Android.mk.
+sys-libs/timezone-data-2015g-r999 # bionic/libc/zoneinfo/
+net-dns/avahi-0.6.31-r999 # external/avahi/
+app-arch/bzip2-1.0.6-r999 # external/bzip2/
+dev-libs/openssl-1.0.2-r999 # external/boringssl/
+net-dns/c-ares-1.7.5-r999 # external/c-ares/
+net-misc/curl-7.43.0-r999 # external/curl/
+sys-apps/dbus-1.6.8-r999 # external/dbus/
+net-misc/dhcpcd-6.8.2-r999 # external/dhcpcd-6.8.2/
+net-dns/dnsmasq-2.51-r999 # external/dnsmasq/
+sys-fs/e2fsprogs-1.42.9-r999 # external/e2fsprogs/
+sys-libs/e2fsprogs-libs-1.42.9-r999 # external/e2fsprogs/
+dev-libs/elfutils-0.164-r999 # external/elfutils/
+dev-libs/expat-2.1.0-r999 # external/expat/
+media-libs/flac-1.3.1-r999 # external/flac/
+dev-cpp/gmock-1.7.0-r999 # external/gmock/
+dev-cpp/gtest-1.7.0-r999 # external/gtest/
+dev-libs/icu-56.1-r999 # external/icu/
+sys-apps/iproute2-4.0.0-r999 # external/iproute2/
+net-firewall/iptables-1.4.20-r999 # external/iptables/
+net-misc/iputils-20121221-r999 # external/iputils/
+net-wireless/iw-4.1-r999 # external/iw/
+dev-libs/jemalloc-4.0.1-r999 # external/jemalloc/
+media-libs/jpeg-6b-r999 # external/jpeg/
+sys-libs/libcap-2.24-r999 # external/libcap/
+sys-libs/libcap-ng-0.7-r999 # external/libcap-ng/
+dev-libs/libdaemon-0.14-r999 # external/libdaemon/
+dev-libs/libdivsufsort-2.0.1-r999 # external/libdivsufsort/
+dev-libs/libevent-2.0.22-r999 # external/libevent/
+net-libs/libmicrohttpd-0.9.42-r999 # external/libmicrohttpd/
+dev-libs/libnl-2.0-r999 # external/libnl/
+media-libs/libogg-1.2.0-r999 # external/libogg/
+media-libs/opus-1.1-r999 # external/libopus/
+sys-libs/libselinux-2.4-r999 # external/libselinux/
+sys-libs/libunwind-1.1-r999 # external/libunwind/
+media-libs/libvpx-1.3.0-r999 # external/libvpx/
+dev-libs/libpcre-8.37-r999 # external/pcre/
+sys-libs/libsemanage-2.4-r999 # external/selinux/libsemanage/
+sys-libs/libsepol-2.4-r999 # external/selinux/libsepol/
+media-libs/speex-1.2_rc1-r999 # external/speex/
+sys-fs/squashfs-tools-4.3-r999 # external/squashfs-tools/
+dev-util/strace-4.10-r999 # external/strace/
+dev-libs/tinyxml-2.4.0-r999 # external/tinyxml/
+dev-libs/tinyxml2-1.0.6-r999 # external/tinyxml2/
+net-misc/tlsdate-0.0.13-r999 # external/tlsdate/
+sys-apps/toybox-0.6.0-r999 # external/toybox/
+net-wireless/wpa_supplicant-2.5-r999 # external/wpa_supplicant_8/wpa_supplicant/
+net-wireless/hostapd-2.5-r999 # external/wpa_supplicant_8/hostapd/
+sys-libs/zlib-1.2.8-r999 # external/zlib/
+app-misc/ca-certificates-20150826-r999 # system/ca-certificates/
diff --git a/toolchain/Android.mk b/toolchain/Android.mk
index 62d5186..f8d7db2 100644
--- a/toolchain/Android.mk
+++ b/toolchain/Android.mk
@@ -1,5 +1,8 @@
LOCAL_PATH := $(call my-dir)
+EXTERNAL_PACKAGES := $(dir $(LOCAL_PATH))/external-packages
+EXTERNAL_PACKAGES_INCLUDE := $(EXTERNAL_PACKAGES)/include
+
include $(CLEAR_VARS)
LOCAL_MODULE := 3rd-party-gcc
@@ -13,7 +16,7 @@ $(compiler): $(LOCAL_PATH)/$(LOCAL_MODULE).in | $(3RD_PARTY_SYSTEM_DEPS)
$(hide)mkdir -p $(dir $@)
$(hide)sed \
-e 's:@CC@:$(notdir $(TARGET_CC)):' \
- -e 's:@CFLAGS@:$(foreach p,$(TARGET_C_INCLUDES),-isystem "$${ANDROID_BUILD_TOP}/$(p)"):' \
+ -e 's:@CFLAGS@:$(foreach p,$(TARGET_C_INCLUDES) $(EXTERNAL_PACKAGES_INCLUDE),-isystem "$${ANDROID_BUILD_TOP}/$(p)"):' \
-e 's:@LDFLAGS@:-B"$(patsubst $(PRODUCT_OUT)/%,$${ANDROID_PRODUCT_OUT}/%,$(TARGET_OUT_INTERMEDIATE_LIBRARIES))":' \
-e 's:@ROOT_SUBDIR@:$(3RD_PARTY_ROOT_SUBDIR):g' \
$< > $@.tmp \