普通文本  |  113行  |  3.11 KB

Updating RenderScript
=====================

Updating LLVM Libraries
-----------------------

Loop over llvm, clang, compiler-rt (in this order):

1. Do a squashed merge of *aosp/dev* to *aosp/master*.

        repo start update .
        git fetch aosp dev
        git merge --squash aosp/dev
        git commit -a
        repo upload .

2. Test everything before submitting the patch from the previous step.

3. Grab the squashed commit and replay it in *aosp/dev*.

        repo sync .
        git remote update
        git branch -D clean_master
        git checkout -b clean_master aosp/master
        git checkout working_dev

    Use `-s ours` to ensure that we skip the squashed set of changes.
    If/when we forget this, we have to do it later.

        git merge -s ours clean_master
        git push aosp refs/heads/working_dev:refs/heads/dev
        git branch -D clean_master

4. Clean up after our working branch.

        git checkout --detach
        git branch -D working_dev

This works better because we can keep full history in *aosp/dev*, while
maintaining easy reverts/commits through *aosp/master*.


Generating New Prebuilts
------------------------

1. Iteratively attempt to build the platform and fix any API differences in
   frameworks/compile/slang, and/or frameworks/compile/libbcc. This may entail
   updating the various snapshots of Bitcode Readers/Writers.
2. Update RenderScript prebuilts.

        cd $ANDROID_BUILD_TOP/frameworks/rs
        ./update_rs_prebuilts.sh

3. The prebuilts get copied to **prebuilts/sdk**, so we must upload the
relevant bits from there.

        cd $ANDROID_BUILD_TOP/prebuilts/sdk
        git commit -a
        repo upload .

4. Submit CLs.


Testing Checklist
-----------------

1. Go to **external/llvm** and run `./android_test.sh` (no known failures
as of 2015-10-08).
2. Ensure successful build for all architectures: 32- and 64- bit ARM, x86 and
Mips.
3. Run 32- and 64- bit RenderScript CTS at least for ARM and AArch64.
4. Test RenderScript apps: RsTest, ImageProcessing, and finally
RSTest\_Compatlib in compatibility mode.
5. Test old APKs with rebased tools: grab the above apps from a different tree
(i.e. without the rebase), push them to a device with the rebased tools, and
test.
This ensures that the rebased BitcodeReader can read the output of old
BitcodeWriters.
6. Test new APKs on an old device: test freshly built APKs for
RSTest\_V{11,14,16}, and ImageProcessing\_2 on an old device (say Manta) and
ensure they pass.
This ensures that the rebase did not break the 2.9 and 3.2 BitcodeWriters.


Checklist for CLs
-----------------

The following projects will almost always have CLs as a part of the rebase.
Depending on the changes in LLVM, there might be updates to other projects as
well.

* External projects

  * **external/clang**
  * **external/compiler-rt**
  * **external/llvm**
  * **frameworks/compile/mclinker**

* RenderScript projects

  * **frameworks/compile/libbcc**
  * **frameworks/compile/slang**
  * **frameworks/rs**

* Prebuilts
  * **prebuilts/sdk**

* CTS tests

  * **cts/tests/tests/renderscript**
  * **cts/tests/tests/renderscriptlegacy**
  * **cts/tests/tests/rscpp**