Closed Bug 1259521 Opened 8 years ago Closed 8 years ago

upgrade to NDK r11b on builders to pull in a newer libc++

Categories

(Infrastructure & Operations Graveyard :: CIDuty, task)

task
Not set
normal

Tracking

(firefox48 fixed)

RESOLVED FIXED
Tracking Status
firefox48 --- fixed

People

(Reporter: froydnj, Assigned: froydnj)

References

Details

Attachments

(1 file)

Doing this will enable switching over to libc++ on Android, one step closer to having a C++11 standard library everywhere.
Depends on: 1259218
Same version of GCC in r10e and r11b, so theoretically we should not have any
regressions or anything silly like that.  Try is green:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=8a89c4ca9257

The script I used to generate the repacked NDK is below.  It is deliberately
minimalistic (i.e. not including all of $NDK/sources, which is enormous).


set -e

PLATFORM=android-9
ARCHITECTURES=(arm x86)
GCC_VERSION=4.9
TOOLCHAIN_TRIPLES=(arm-linux-androideabi x86)
NDK_VERSION=r11b


NDK_DIRECTORY=android-ndk-${NDK_VERSION}

if [ ! -d ${NDK_DIRECTORY} ]; then
    echo Cannot find ndk directory ${NDK_DIRECTORY}
    exit 1
fi


included_paths=(
    build/
    ndk-build
    ndk-depends
    ndk-gdb
    ndk-stack
    ndk-which
)

function push_included_path()
{
    included_paths[${#included_paths[@]}]="$1"
}

for f in ${TOOLCHAIN_TRIPLES[@]}; do
    gcc_toolchain_path=toolchains/${f}-${GCC_VERSION}/prebuilt/linux-x86_64/
    push_included_path "$gcc_toolchain_path"
done

for a in ${ARCHITECTURES[@]}; do
    android_platform_path=platforms/${PLATFORM}/arch-${a}/
    push_included_path "$android_platform_path"
done

cxx_stl_directories=(system llvm-libc++ llvm-libc++abi)
for d in ${cxx_stl_directories[@]}; do
    cxx_stl_path=sources/cxx-stl/${d}
    push_included_path "$cxx_stl_path"
done

push_included_path "sources/android/cpufeatures/"

for p in ${included_paths[@]}; do
    internal_ndk_path="${NDK_DIRECTORY}/${p}"
    if [ ! -e "${internal_ndk_path}" ]; then
	echo Cannot find ${internal_ndk_path}
	exit 1
    fi
done

tar jcf android-ndk-${NDK_VERSION}-packaged.tar.bz2 -C ${NDK_DIRECTORY} \
    --transform="s#^#android-ndk/#" \
    "${included_paths[@]}"
Attachment #8734711 - Flags: review?(nalexander)
Comment on attachment 8734711 [details] [diff] [review]
update to Android NDK r11b

I'm fine with this, but it's you, snorp, jchen, etc who will actually deal with fallout, so one of the others should be okay with this too :)

I would like to see the script completed (i.e., include the file download) and landed in `build`.  Python is better than shell, but shell is better than nothing.  I could live with a follow-up ticket if you really don't want to invest the time.
Attachment #8734711 - Flags: review?(nalexander) → review?(snorp)
Comment on attachment 8734711 [details] [diff] [review]
update to Android NDK r11b

Review of attachment 8734711 [details] [diff] [review]:
-----------------------------------------------------------------

Hooray!
Attachment #8734711 - Flags: review?(snorp) → review+
Blocks: 1260208
https://hg.mozilla.org/mozilla-central/rev/e7b4afa0a2ca
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
(In reply to Geoff Brown [:gbrown] from comment #7)
> It looks like this change decreased the size of Android's libxul.so by
> almost 100K - the single biggest decrease in libxul this quarter. Thank you!
> 
> https://treeherder.mozilla.org/perf.html#/
> graphs?timerange=7776000&series=[mozilla-inbound,
> 7517209843c92900e48c1a8f72252b633110a8f1,1]&zoom=1459078277502.994,
> 1459343554000,24810356.046945777,25135947.80117162&selected=[mozilla-inbound,
> 7517209843c92900e48c1a8f72252b633110a8f1,29235,24748588]

You're welcome!  I didn't know this was coming, but that's great news!

This graph is uninspiring, though; there have been a number of patches landing lately that were intended to reduce the size of libxul and they're hardly visible on that graph. :(  Bug 1255425, for instance, is a barely noticeable blip. :(
Component: Platform Support → Buildduty
Product: Release Engineering → Infrastructure & Operations
Product: Infrastructure & Operations → Infrastructure & Operations Graveyard
You need to log in before you can comment on or make changes to this bug.