Updating RenderScript

For the latest version of this doc, please make sure to visit:
Android RenderScript Prebuilts Doc

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. Set RS_LLVM_PREBUILTS_VERSION in build/core/clang/config.mk to the latest
    prebuilts generated for this rebase, or to the latest platform version if no
    new prebuilts were generated.
  2. 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.
  3. Update RenderScript prebuilts.

    cd $ANDROID_BUILD_TOP/frameworks/rs
    ./update_rs_prebuilts.sh
    
  4. 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 .
    
  5. 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