summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-04-13filter out whitespace from PRODUCT_3RD_PARTY_PACKAGESHEADmastermainMike Frysinger
The default bdk config will append the variable and inject whitespace into it. This isn't a problem normally except that the check to see if any packages are configured doesn't filter out whitespace. Change-Id: I6fbbc16cc7c07f4e1b7e44c8e20738ad8d184084
2016-03-01fix handling of absolute build pathsMike Frysinger
When building under the BDK, some paths are absolute instead of relative, so we end up appending an absolute path to an absolute path which breaks. Add explicit checks to each possible absolute path before we try to make it into one by hand. BUG=b/27434200 TEST=`m -j32` w/libpng under bdk works TEST=`lunch && make` w/python works TEST=`make PRODUCT-brilloemulator_arm-eng` w/python works Change-Id: I89070760bc849ac652c2e4a71055d66da763792c
2016-02-10set up ANDROID vars emerge relies onMike Frysinger
The buildbots run `make` directly rather than loading the envsetup.sh file. This means none of the ANDROID vars we were using were exported. Have the mk file recreate & pass them down. BUG=b:26861037 TEST=`make PRODUCT-brilloemulator_arm-eng` w/python works Change-Id: Ibdd74880b3aafa7d27eab70219ec007986f6689f
2016-02-05use HOST_OUT_EXECUTABLES for host toolsMike Frysinger
This appears to be necessary on the builders. BUG=b:26861037 TEST=building arm w/python enabled still works locally Change-Id: Ie2ce704df781bd2cbf89dea2c15e58be61adc8d6
2016-02-05toolchain: include TARGET_GLOBAL_CFLAGS in wrappersMike Frysinger
Some flags we want to use everywhere and the build puts those into the TARGET_GLOBAL_CFLAGS variable. These are things like stack-protector and -D__BRILLO__ (which can in turn affect some bionic headers). BUG=b:26861037 TEST=building python for arm/x86 works now Change-Id: I46c617d2a27bc1dfbce9775e744e23a61871ef02
2016-02-02toolchain: use pie/runpath by defaultMike Frysinger
Bionic will reject non-PIC/PIE code now for all programs. We need to manually add the -fpie/-pie flags to the command line in our compiler wrapper so we get PIE programs by default. Ideally this would be in the compiler itself, but the Android toolchain doesn't do that, and upstream gcc support isn't available until gcc-6. Bionic also only accepts DT_RUNPATH tags and ignores DT_RPATH tags, so switch over to the newer tag format so ELFs can find their libs. BUG=b:26861037 TEST=`python2.7 -c 'print("HI")'` works Change-Id: I3d114119cd5c0920a152e9a7c136b1cf8c47a3d6
2016-02-01make 3rd-party tools available w/out explicit packagesMike Frysinger
We don't need to hide the tools if no packages are opted in. This way we can still get `emerge` when requested and then we can run it by hand. BUG=b:26861037 TEST=default build doesn't include any tools TEST=adding 3rd-party-packages to PRODUCT_PACKAGES includes tools only TEST=also adding PRODUCT_3RD_PARTY_PACKAGES includes those packages Change-Id: I59a9eea6a6b3e0f15b0ca076be36340c786021e5
2016-01-28package.provided: update eselect-python provideMike Frysinger
Gentoo is providing a newer version which python pulls in, so update the dep on our side to match any version. BUG=b:26861037 TEST=`emerge python:2.7` no longer pulls in eselect-python Change-Id: I1b09b783c15d9ee214f33b2d070703313cb13bbc
2016-01-28rework emerge integration to run a single instanceMike Frysinger
The original design was that people could only install the latest version of packages and that's it. Requests are now coming in to support older SLOTs (like getting python-2.7). The current system turns the atoms into make targets, but the full atom syntax includes bytes that are not valid targets (such as the colon in "dev-lang/python:2.7"). Rework the modules so that we only run one instance of emerge, and give it the full list of packages in one go. BUG=b:26861037 TEST=`lunch brilloemulator_x86_64-eng && make -j32` now includes python in the image Change-Id: Ia95e522572f4c944acbf449f93c702c6687f3fd1
2016-01-25work around kati bugMike Frysinger
The kati step does not seem to pass down variables used under pattern targets. BUG=b:26438312 TEST=building under ninja can find packages Change-Id: I4179e8a8cb609072ad5508fc996b40ea84ae25b4
2015-12-03handle external zlib headersbrillo-m9-releasebrillo-m9-devbrillo-m8-releasebrillo-m8-devMike Frysinger
Since the zlib headers aren't exported/installed, we need to symlink them in here for the compiler to find. BUG=23171578 Change-Id: I5a2ef5d1508966902c6a722593c412a055917973
2015-11-19toolchain: reject host pathsMike Frysinger
We don't want to include or link against host paths, so throw an error rather than letting things perhaps silently compile. Change-Id: I3908d2df6935ad81e883535311e10c363f55d302
2015-11-19disable use of python-3 for nowMike Frysinger
It doesn't build and we don't want it (yet?), so disable it for now and wait until someone requests it to figure things out. Change-Id: Ieefc44a187ced06fdaef37deabfe8da34b86986b
2015-11-18handle external expat headersMike Frysinger
Since the expat headers aren't exported/installed, we need to symlink them in here for the compiler to find. BUG=23171578 Change-Id: Ie74b16feb8d4c4b2663f6a0a6b474fadab469302
2015-11-17fix lib64 handling for 64bit targetsMike Frysinger
For 64bit targets, make sure we use /usr/lib64 instead of /usr/lib. The binding between "is 64bit" and "use lib64" is kind of broken, but Android doesn't really support multiple ABIs cleanly, so this is fine until it does. Change-Id: I3dcd7ee50bac08d4b72af793b37c6031c6890611
2015-11-05handle external/ libs that we also have ebuilds forMike Frysinger
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: Idb5a4711dd30f9c5011dda8d06a874849a3609cb
2015-11-04portage: stub out virtual/loggerMike Frysinger
Since Android includes its own logging system, we don't need (or want) an external system logger. Change-Id: Ib4bbc7feb9af2acbf13452001b1de1e1c877b716
2015-11-02toolchain: depend on system C/C++ libsMike Frysinger
We sometimes fail when building in parallel because we start emerging before the C/C++ core system libs are available. Change-Id: I0b52f9b29bfe7418b4dc8cdb34c27e5d7d69e27d
2015-11-02make.defaults: disable USE=shmMike Frysinger
Since Android is built w/System V features disabled, flip off this flag as well. Change-Id: Ic83c34d656bb9fccf3b56c9904495ec72652f24f
2015-10-20integration: disable use of clangMike Frysinger
We still use gcc for 3rd party packages, so disable the use of clang when building/linking against them. Change-Id: Ie2389d0c8eb1eb8080ad77ddca1938b1ebf9109d
2015-10-13portage: add more config filesMike Frysinger
This allows us to override profile settings further: - switch from ELIBC=glibc to ELIBC=bionic - disable glib[mime] to avoid fat mime/xml deps - disable USE=static-libs by default so we only use shared libs - omit the charset.alias file from all packages as random GNU packages all want to install it (which breaks due to collisions), and the content is pretty pointless (maps like 2 obscure aliases) Change-Id: I3bfa4ba2487257e59410f54da3c5596258462b8f
2015-10-09toolchain: add a C++ wrapperMike Frysinger
We need some extra flags when building C++, so create a new wrapper for it. BUG=24803386 TEST=emerge glog/gflags works Change-Id: I795e1bfd28c78150a2950b0c6b6e4d2b225406fd
2015-10-09rename 3RD_PARTY_COMPILER to 3RD_PARTY_CCMike Frysinger
Since we'll have a 3RD_PARTY_CXX setting, it doesn't make sense to have a 3RD_PARTY_COMPILER variable anymore. Rename it everywhere. We also drop it from the emerge deps as it's redundant -- it's already listed in the 3RD_PARTY_WRAPPERS variable. BUG=24803386 TEST=emerge glog/gflags works Change-Id: Iea28b0668c043701b249e9a649a7f20ed6d92348
2015-10-09portage: disable fortran/openmpMike Frysinger
We have no interest in these currently. Change-Id: I6b9f678a2e04d28bdc49c37c84340bc3109682b3
2015-10-09toolchain: clean up boiler plate codeMike Frysinger
We want to use $(hide)mkdir rather than @mkdir, and delete some left over debug echo code. Change-Id: Ia0256dd7669a7d4b4b8090ed732d3f3911573854
2015-10-09pkg-config: add a wrapper for itMike Frysinger
We need to tell pkg-config where to find its .pc files, so add a wrapper to dynamically locate the sysroot and various inputs. BUG=24775992 TEST=building pax-utils (which uses pkg-config) works now Change-Id: I6ad54e8521649422f43e72105c6b135043c99c0b
2015-10-08add NOTICE fileMike Frysinger
Change-Id: Ic63f4773bbb58ca0e956b92d5a1bca4179ed1729
2015-10-08toolchain: rename 3rd-party-compiler to 3rd-party-gccMike Frysinger
Some build systems are stupid and look for "gcc" in the compiler name. Rename the wrapper to "3rd-party-gcc" to avoid those bugs. Change-Id: Ied37ccdb94faadd5585c2e1f82659cf4a19e6a24
2015-10-07portage: make.conf: set mirrors to Google onesMike Frysinger
This way we don't have to worry about the sources we're using disappearing. Change-Id: I53024b02092f6812edac8a93d8921706c521c6a1
2015-10-07portage: make.conf: delete bunzip2 commandMike Frysinger
We don't actually need to set this (it's a copy & paste from CrOS), and it breaks things because portage will try to run `bzip2 -c foo.bz2` but that will try to compress, not decompress. Change-Id: I24fc43169102b0698778bf957b052e3b74ea8e74
2015-10-05portage: add more provided filesMike Frysinger
Stub out a bunch more packages that the Android base always provides. BUG=24611334 TEST=emerge various packages no longer pulls these in Change-Id: Iadaf63c9f027f095a187c0c742f81dd21a7db5c5
2015-10-05portage: add make.defaults file for setting up USEMike Frysinger
There's a bunch of settings we want to disable, so set up a make.defaults file to hold all of those in our custom profile. BUG=24611334 TEST=emerging packages no longer enables a lot of USE flags Change-Id: I0b4987e050ecf3aa20da545f7d70ed120c1b8ec4
2015-10-03add example for building against 3rd party packagesMike Frysinger
This is an example people can use for building against 3rd party libs. BUG=24611334 TEST=built packages and they worked in qemu Change-Id: I962cddf36d57450c8ed752b219b9e3ce2e2ededf
2015-10-03add main target logic to glue Gentoo packages inMike Frysinger
This is the main entry point for gluing Gentoo packages in. To use this, just update your device's mk files like so: PRODUCT_3RD_PARTY_PACKAGES := <list of Gentoo packages> PRODUCT_PACKAGES += 3rd-party-packages When you build, those packages will be built & installed automatically. Examples for building your own code against those will be a follow up commit. BUG=24611334 TEST=built packages and they worked in qemu Change-Id: Ic86d62415fdab1b94947dbfa7658264c2824d6e0
2015-10-03toolchain: add wrapper logicMike Frysinger
The way android builds things is via relative paths everywhere and with the working directory of the top level checkout. When we go to build external packages though, they often need to be in a different working directory which means all of the relative paths break. Add a compiler wrapper to merge the existing android env vars and the relative paths to create absolute paths we can leverage. Further, android will pass flags to the system paths during compile and link. If those aren't used, then the build/link will fail in weird ways. Unfortunately, some build systems might filter/sort flags, so add those to the wrapper too rather than try and track down/fix every build system. BUG=24611334 TEST=built packages and they worked in qemu Change-Id: I93432c7ed23941cd44d799e7a8bdb83d745d1952
2015-10-03portage: add wrappers/helpers for interacting with portageMike Frysinger
This creates emerge/ebuild/portageq wrappers people can execute directly (as well as the android build system will use), and the target-specific config files they rely on. The tools should work off of the android env vars to locate the current board/build directories rather than hardcoding any of them in the output. BUG=24611334 TEST=built packages and they worked in qemu Change-Id: I97171f3d8d88230880af9ba3045d691951e0b5fe
2015-09-30Initial empty repositoryBill Rassieur