Commit Graph

320 Commits

Author SHA1 Message Date
Ethan Chen
123fcd3761 build: Remove unused script
* http_prebuilt.mk appears to be long gone.

Change-Id: I8ca584fc1e468bb47164984bb363f0cf29750e68
2019-06-25 23:13:21 +02:00
Ethan Chen
5512b647e0 build: Set mode for makefiles
* These shouldn't be executable.

Change-Id: Idcb4e46f0ac69116b4837cd31f9f2e506b41a3f2
2019-06-25 23:13:21 +02:00
Erfan Abdi
a4d6ce67e7 soong_config: Add flag for devices use metadata as FDE key
Change-Id: I5f70280e72613a8f850cb3263c45e95e80cb8b3c
Signed-off-by: Erfan Abdi <erfangplus@gmail.com>
2019-06-16 12:47:01 +02:00
Luca Weiss
5ee35ea356 repopick: cmp() is not available in Python 3, define it manually
Change-Id: I16a89aa555e62f105d888e87cb43afd26606076b
2019-06-08 00:01:05 +02:00
Rashed Abdel-Tawab
60fe93525a lineage: Rework DTBO image generation
Currently we handle the DTBO images from start to finish, including
AVB footers, and just drop them in $(PRODUCT_OUT)/dtbo.img when done.
While this works for the most part, we are limited in what we can do
with the DTBO images. For example non-A/B device recovery images must
have a copy of the DTBO image appended to recovery (see AOSP docs:
https://source.android.com/devices/bootloader/recovery-image ). This
means that we need to pass the pre-AVB dtbo image into
BOARD_PREBUILT_DTBOIMAGE in order to let the AOSP build system handle it.

This commit reworks the way the DTBO images are built, placing them at
$(PRODUCT_OUT)/dtbo-pre.img instead and setting BOARD_PREBUILT_DTBOIMAGE
to that path so the AOSP build system can pick the images up and sign
them and append to recovery (for applicable devices).

Change-Id: I8819d7cd92ba298de67dbc7f6b321917ba8524f1
2019-06-06 07:17:27 +02:00
Thor Lee
75975892b4 kernel: Fix modules path generated in modules.dep
This patch fixes the error generated path of modules in modules.dep.

Tested on Redmi Note 5(whyred).

Before:
/vendorlib/modules/test-iosched.ko:
/vendorlib/modules/mpq-adapter.ko:
/vendorlib/modules/ufs_test.ko: /vendorlib/modules/test-iosched.ko
/vendorlib/modules/rdbg.ko:
/vendorlib/modules/br_netfilter.ko:
/vendorlib/modules/gspca_main.ko:
/vendorlib/modules/mpq-dmx-hw-plugin.ko: /vendorlib/modules/mpq-adapter.ko

After:
/vendor/lib/modules/test-iosched.ko:
/vendor/lib/modules/mpq-adapter.ko:
/vendor/lib/modules/ufs_test.ko: /vendor/lib/modules/test-iosched.ko
/vendor/lib/modules/rdbg.ko:
/vendor/lib/modules/br_netfilter.ko:
/vendor/lib/modules/gspca_main.ko:
/vendor/lib/modules/mpq-dmx-hw-plugin.ko: /vendor/lib/modules/mpq-adapter.ko

Change-Id: I84d51f4c418fda0d99890db0fd5d976c42f54295
2019-05-02 10:00:49 +02:00
Ethan Chen
9985f596b3 kernel: Use build-image-kernel-modules instead of copying it
* Call the build system's build-image-kernel-modules function instead of
  redefining all of it inline ourselves.

Change-Id: Ifc4bd3c452393389a14174f4cc29a8f7ef064b93
2019-03-09 13:41:19 -08:00
Ethan Chen
a325446555 kernel: Use a macro for kernel build targets
Change-Id: Idb61ddbfd630401da09a0c3207aaab7e25bc4b14
2019-03-09 13:41:19 -08:00
Ethan Chen
0724f78af4 kernel: Detect kernel module usage better
* Check for any actual kernel modules, rather than just the presence of
  kernel modules being enabled as a kernel feature.

Change-Id: I6b7e82d5c59dd57621d9f9e2d1fd606997790d1c
2019-03-09 13:41:19 -08:00
Ethan Chen
a8750b4a6e kernel: Move kernel module dir cleanup/creation to module install target
* The directories used by the kernel module install rules are performed
  as part of the rules in the kernel build itself. This is likely a
  leftover from before kernel module install was separated.

Change-Id: Iee2f73a0f8e0f274b1c2931ba57277ff14d7f5cc
2019-03-09 13:41:19 -08:00
Ethan Chen
117a0fd3b2 kernel: Move full kernel build guard flag below all targets
* The Pixel DTBO generation step should also be guarded by the full
  kernel build flag.

Change-Id: I06d230b1b32ad9d974f90bfe6ae82008f4454d83
2019-03-09 13:41:19 -08:00
Vladimir Oltean
4818c230b3 extract_utils: introduce support for executing blob fixups
* Traditionally, the task of hex-editing blobs has been approached in 2 ways:
  (1) Do it out-of-band, commit the modified blob, and record its edited
      sha1sum in proprietary-files.txt (aka pin it).
  (2) Do it in-band, by adding code to the device-level extract-files.sh
      (usually this performs patchelf or sed). This code runs after the
      extract_utils functions were invoked.
* Problems of approach (1):
    - It relies on verbal (basically commit message) documentation of
      the hex-editing that was done. Makes it more difficult to reproduce.
    - Each time blobs are updated, pinning needs to be temporarily removed,
      hex-editing done again manually and new hash put back.
* Problems of approach (2):
    - It is incompatible with the concept of pinning, which is useful
      for kanging blobs from another device. A pinned blob would either:
        - Match the hash, get hex-edited, then it won't match the hash
          next time around.
        - Not match the hash (because of, say, hex-editing), then the
          extraction script would use an unwanted blob version instead of the
          pinned one (either that, or say "!! file not found in source").

* In summary, this patch adds system-wide support for approach (2) in order
  to address the aforementioned shortcomings.

* At device level, users of extract_utils who wish to perform blob
  fixups can override a blob_fixup() Bash function in their
  extract-files.sh immediately after running "source ${HELPER}". The
  blob_fixup() function will be called by the common extract() function
  after extracting every individual blob, giving the user the
  opportunity to hook custom code after this operation takes place.

* In proprietary-files.txt, the line corresponding to this blob which
  needs fixups can look in one of 2 ways:

(a) vendor/lib64/vendor.qti.gnss@1.0_vendor.so

    Do this if you are taking the blob from the stock ROM. The fixup
    script will always run after the blob is extracted.

(b) vendor/lib64/vendor.qti.gnss@1.0_vendor.so|249c76153f8de014bf2dd2ab623ee3d87741fbc8|f7e9ee8e3804887a2f3939128e860767e6f27258

    Do this if you are kanging the blob from somebody else. The pinning
    logic now applies for both the pre- and the post-fixup hashes. The
    fixup script will only run if the blob doesn't match the hex-edited blob,
    although the fixup script should really be idempotent.

Change-Id: Ifdd73c885d995c645f6210597537693d1a2f903f
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:44:53 +02:00
Vladimir Oltean
bff959a5ab extract_utils: template: introduce kang mode
Change-Id: Idc196359a7cb6fd8de53ebdc23700322486a2a7d
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
d5d0fea744 extract_utils: template: make --section argument non-positional
Change-Id: I3b991bd125c0f92900d625158cd826b4b9f53a3b
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
4931a0604a extract_utils: template: use quotation marks and variable curly braces consistently
* This makes sure that multi-word arguments are passed correctly from
  extract-files.sh towards the common extract_utils helper. An example
  would be extract-files --section "Hello World".
* IMPORTANT: device repositories that use a device/common split
  typically do something like this to invoke the common script from the
  device one:

  ${MY_DIR}/../common/extract-files.sh $@

  This is incorrect because the quotation marks are missing, and will
  lead to incorrect parameter parsing. The correct way is:

  ${MY_DIR}/../common/extract-files.sh "$@"

* The curly braces are only for cosmetic consistency.

Change-Id: Idf0885546379f47e675ec5e9dfb304706e512129
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
5238ba8fe5 extract_utils: make --section match words anywhere in the line
Change-Id: Ia3fe2160f0f4bc7da1b5bd31a21080af51b41fab
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
bec92ebaec extract_utils: introduce -k (kang mode) option
* The use case is easier updating of pinned blobs. When --kang is set,
  pinning is automatically ignored, and the script will print lines at
  its output that can be directly copied back into the
  proprietary-files.txt.
* Best served together with --section ${SECTION}, and proper grouping
  of the proprietary-files.txt.

Change-Id: I648fbcbd4580a4a002b00828bcfee18d1e265d7b
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
c503446ec3 extract_utils: cleanup variable names and arguments passed to extract() function
* This also makes the --section argument non-positional, since otherwise
  it is not possible to easily support more than one optional positional
  argument. This is in preparation of one more optional argument to come
  in a follow-up patch: --kang.

Change-Id: Ieb142e0854319defb9a278ab68cd4aeefd0fbdd5
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
78d690d12c extract_utils: be compatible with system-as-root layouts
* The use case is that if you have the following layout:
  $TOP --- system.img
       |
       +-- vendor.img
  you should be able (from $TOP) to:
    mkdir system; mount -o ro,loop system.img system
    mkdir vendor; mount -o ro,loop vendor.img vendor
  and then (from device tree)
    ./extract-files.sh $TOP

  But this doesn't work if system.img is SAR and contains another
  "system" dir inside. This patch makes sure it searches for a "system"
  dir in the provided path as well, if it couldn't find the blob
  anywhere else.

Change-Id: Ib49cd5b587b3a57478a66ff69cf840270c2b1403
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Vladimir Oltean
4fe79b11c1 extract_utils: drop the "/system/" prefix from prints of blob names
* This makes the printed output closer to the proprietary-files.txt syntax

Change-Id: I81b844bb6bb1d1a2f91a39151a892fbfc0bed20b
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-03-03 16:42:24 +02:00
Alessandro Astone
e5acfae08c soong_config: Add BOOTLOADER_MESSAGE_OFFSET
* libbootloader_message now uses Android.bp

Change-Id: I750a04be97dbe01564d45cd605744b15f209e408
2019-02-26 16:47:50 +01:00
Luca Stefani
48406e8afd Never allow neverallows
Change-Id: Ibf07e9e319d676666e3e7389720c24917e38a9ac
2019-02-16 21:14:14 +01:00
Vladimir Oltean
b2c382193d extract_utils: fix mismatch with non-lowercase pinned sha1sum
Change-Id: I86421ca69007ad1992aa67deedf7d2e32bbe4dba
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2019-01-17 11:26:34 +01:00
Michael Bestas
f3f7eb2d87 soong_config: Add flag for msm8974 1440p EGL workaround
Change-Id: Iad2df3dad223604f1e2c454432b9c9239db8d035
2019-01-06 15:45:08 +02:00
Michael Bestas
eb37bbb7cd soong_config: Add flag for crypto waiting on QSEE to start
* Every single new device supports this logic except
   a few ancient ones and nexus.

Change-Id: I9a5493667c6bb3636468a90df0da65cf5e8c3a8b
2019-01-04 23:59:37 +01:00
Michael Bestas
c61fabe667 soong_config: Add flag for legacy HW FDE
Change-Id: I4ced98000e7349135dfb62bba9579e1dbf6b959c
2019-01-04 23:59:37 +01:00
Michael Bestas
e4dc50fa6a lineage: qcom: Set proper CAF data-ipa-cfg-mgr pathmap
Change-Id: Ibaec558bfe945a204968e7f7a3df85dd91d49483
2019-01-03 23:54:09 +02:00
Ethan Chen
da0ae04cd3 lineage: qcom: Set data-ipa-cfg-mgr pathmap
Change-Id: Ifaf6d008425ef38fa8de2aa734cc4b05654995f2
2019-01-03 19:47:35 +01:00
AnilKumar Chimata
26b6abac8b soong_config: Add new flags for HW FDE
Add new flags for HW FDE to pass CFlags to source code.

CRs-Fixed: 2210986
Change-Id: I70d68f015ee8eb8d123ce863ce8e36d0310bc082
2018-12-26 16:25:32 +00:00
Vladimir Oltean
b8084ec8a5 extract_utils: avoid doing stuff on files that don't exist
* If an apk/jar doesn't exist, the script would still try to deodex it.
* If an xml doesn't exist, the script would still try to "fix" it.
* Take it easier, man, it's not your fault.

Change-Id: I3061fb48b403da5121e3c17dd9ecdb6cd148bf97
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
2018-12-24 01:32:53 +02:00
Ethan Chen
f0bb4c3c98 lineage: Add techpack/audio to include path also
Change-Id: Ib5af4c77f3342c01325e32222401d7584bac337a
2018-11-28 01:20:19 -08:00
Bruno Martins
6ea9815254 lineage: Consider techpack/audio when generating kernel headers
* New fancy kernels have techpack modules and we need to
   account for headers of those modules.

Change-Id: I4da9606d5933209287dd5e881f06ee1e39443f70
2018-11-13 22:40:44 +01:00
Luca Stefani
99a66bffdc extract_utils: Redirect vdexextractor log to /dev/null
Change-Id: I55028997c0396d57c024e6c42a53907f6d1510c8
2018-11-13 22:06:17 +01:00
Tim Schumacher
49d26ba39a repopick: Try to fast-forward first
Change-Id: I4890ce8075556eb3f57d89c283543f620f39fa02
2018-10-27 21:57:56 +02:00
Nathan Chancellor
4d0d438095 kernel.mk: Support kernels that use LTO
Google added support for LTO + CFI in the Pixel 3 kernel, which requires
not only Clang but a couple of additional binaries, namely llvm-ar and
llvm-dis for IR generation. Google expects these binaries to be in PATH
according to their definitions and the build.config.common file:

https://android.googlesource.com/kernel/msm/+/android-9.0.0_r0.31/Makefile#637
https://android.googlesource.com/kernel/msm/+/android-9.0.0_r0.31/build.config.common

However, kernel.mk does not add the LLVM bin directory to PATH so the
build fails because the binaries can't be found. We could add LLVM_AR
and LLVM_DIS to the make commands like CC and CROSS_COMPILE; however,
adding the bin directory to PATH is a more sustainable solution as
Google might require new binaries in the future.

Additionally, LTO needs access to the LLVMgold library so it needs to be
available in LD_LIBRARY_PATH.

Add a PATH_OVERRIDE variable that will set up PATH and LD_LIBRARY_PATH
with the bin and lib64 folders from the requested LLVM toolchain
respectively when building with Clang. This won't affect kernels that
don't use LTO like Wahoo.

Change-Id: Ib16fa0d3180de2f96accb2f7648b07a017f8f98b
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
2018-10-25 02:42:15 +02:00
Luca Stefani
f6096e989a Add CDEX support for boot JAR files
Change-Id: I0039256c883a58c5a5125fd9bff6e6ec3b98688d
2018-10-21 10:28:37 +02:00
Michael Bestas
b4c4aba96d kernel: Remove kernel{x}config
* They haven't been working since ninja build was introduced

Change-Id: Icb51412b7a70cdec7f077a6d3d56f7720188bcb0
2018-10-20 21:50:38 +02:00
Michael Bestas
2425d1ea38 kernel: Remove deprecated flag errors
* All devices should have migrated by now

Change-Id: Iecef58a1193b87ecb084eccda27a3b4e89f42219
2018-10-20 21:50:38 +02:00
Sam Mortimer
8e44326c2f vendor/lineage: Remove kernel.mk headers generation
*) This has been deprecated by the bp mobule
   generated_kernel_headers.

*) To build with kernel headers, do this:
   LOCAL_HEADER_LIBRARIES += generated_kernel_headers
   Or for soong targets:
   header_libs: [ "generated_kernel_headers" ],

Change-Id: Idad445709f0ee0ec11b41b40123b14976a0052ad
2018-10-20 21:50:38 +02:00
Rashed Abdel-Tawab
9fa7e80692 lineage: Dynamically generate kernel headers using lineage generator
Add a soong vendor plugin for kernel config variables so we can use
these in go.

Change-Id: Id31f2be8fcc5aba2d965dbe815edaaf1d28279c6
2018-10-20 21:50:38 +02:00
Sam Mortimer
80381b736a vendor/lineage: Add soong generator module type
*) Similar to genrule but can be used to generate content
   when the output directory and file structure are not
   known ahead of time.

*) An example use case is to build kernel headers.

Change-Id: I10deb7ba8825393b0b5fdbf2d96b12ad37257e12
2018-10-20 21:50:38 +02:00
Rashed Abdel-Tawab
a836d79629 lineage: Move some kernel definitions to BoardConfigKernel
Kernel source settings should always come at BoardConfig population
time so things that use the variable later don't end up pointing to
an empty or wrong variable.

The following is also squashed in:

Author: Christopher N. Hesse <raymanfx@gmail.com>
Date:   Fri Aug 10 00:23:54 2018 +0200
    tasks: kernel: Honor prebuilt kernel flag
    For devices that want to use a prebuilt kernel, TARGET_KERNEL_SOURCE
    would still be set to TARGET_AUTO_KDIR, meaning the build system would
    still try to build the kernel if TARGET_AUTO_KDIR was present.
    Setting TARGET_PREBUILT_KERNEL indicates this is not wanted, so don't
    attempt to do it.
    Change-Id: Ic79b3ac1b9c946fd258ada43dce2b08bb74ea0d9

Change-Id: If046b86ff0d18c76898e90295be873a8379f678a
2018-10-20 21:50:38 +02:00
Paul Keith
cd6a1689a0 Revert "soong_config: Add TARGET_NEEDS_PLATFORM_TEXT_RELOCATIONS"
* The per-process API level override will take care of this

This reverts commit cf7f7d48d0.

Change-Id: I3c0b5879ddf8e9dcc0b56a6e9a2855e515685389
2018-10-19 02:20:24 +02:00
Michael Bestas
c77bb3a5ba kernel: Correct CROSS_COMPILE_ARM32 toolchain
* Missed in the original commit that switched to
  androidkernel toochain

Change-Id: I9b6d2e7216b48d22bcb7eec62c4fd9c05a895d18
2018-10-10 18:30:54 +02:00
TheStrix
5aad07422e extract_utils: Fix output dex file name generated by vdexExtractor
- Reflect the changes required by:
   ff58255706
 - Also fix JARVDEX file path for deodexing jars

Change-Id: Ief355b0bd9e69a67b552d0bd2060f43adb39fb5f
2018-10-07 12:17:35 +02:00
codeworkx
1c29bf66dd extract_utils: add CDEX support via compact_dex_converter
Source: https://github.com/anestisb/vdexExtractor#compact-dex-converter

Change-Id: I63664cae02e51a05e5a62c0c5c0595eead6c6513
2018-10-05 18:25:46 +02:00
codeworkx
485f65f633 tools: update smali/baksmali to 2.2.5
Change-Id: I0d9b2f8acde17b20576d66d87ab9a8c51865e4dc
Source: https://bitbucket.org/JesusFreke/smali/downloads/
2018-09-24 16:22:10 +02:00
codeworkx
fcad7cfc40 tools: update vdexExtractor from 0.4.1 to 0.5.2 for P compat
Source: https://github.com/anestisb/vdexExtractor

Linux
Compiled on  : Arch Linux, 4.18.8-arch1-1-ARCH
Compiled with: Clang 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-pc-linux-gnu

Darwin
Compiled on  : MacOSX 10.13
Compiled with: Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.4.0

Change-Id: I4f1ac8a9aa01887edf54a4f59e4a99f34e870606
2018-09-24 16:22:09 +02:00
Paul Keith
1b5fa5e8c6 lineage: Use add_json_str_omitempty directive for TARGET_LD_SHIM_LIBS
* The code is ifdef'ed out, so let's match that expecation here

Change-Id: I59c8e276c3dd28c4f46222f66d626e48b2aa6551
2018-09-22 07:59:58 -06:00
Danny Baumann
fc6e3810e6 soong_config: Allow process-specific override of target SDK version
Change-Id: I775e852c17af12d2233e644e3db10c10bcb20d19
2018-09-20 19:24:38 -06:00