• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[ROM] Unofficial Linaro CM 10.1 + Bionic Nightlies *Tutorial, Compile Yourself!!*

Search This thread

trailblazerz11

Senior Member
Apr 4, 2011
1,266
1,328
Portland, OR
github.com
After trying other ROM's, I would always come back to CM 10.1 for its infrastructure, stability and clean features, however I still wanted experimental bleeding edge optimizations like the Linaro toolchain.
These releases will only feature Linaro toolchain, bionic optimizations and other minor changes, generally keeping CM10.1 unaltered for the most part. I did next to no work, just compiled with patches by others. If you want to learn how, there's a tutorial on post #3

Instructions

NANDroid
Wipe/Factory Reset if coming from anything other than CM 10.1 (Seems to be okay to dirty from from non-linaro cm nightlies)
Wipe Cache
Flash .zip
Flash custom kernel
Flash gapps if needed
Reboot

Download

www.trailblazerz11.com

Goo.im Also Availible on GooManager

Nexus 7 Thread

Disclaimer: I am not responsible for anything that may happen.

Credits:
Cyanogenmod Donate
Linaro
Google
Eug39 for help with errors
Evan McClain for cm10.1 gerrit patches
codeworkx for patches
bricked for kernel patches
EvoXOhio for helping get this whole thing started

Github
https://github.com/trailblazerz
 
Last edited:

trailblazerz11

Senior Member
Apr 4, 2011
1,266
1,328
Portland, OR
github.com
Changelog (besides cm changes)

6/6- Updated to 2013.05 Linaro 4.7
5/24- libm: sqrt and sqrtf via ARM vsqrt instruction.
5/18- optimistic pow
5/13- mvectorize-with-neon-quad
4/24- Added keymaster blobs to fix Security FC
4/14- Updated to 2013.04 Linaro Thanks kszaq again
4/4- Arch specific strcmp from Google
4/3- Updated to 2013.03 Linaro Thanks kszaq
3/11- mcpu a15
2/26-Applied fix for wilhelm, reverted O2 to wilhelm
2/25-Reduce Wilhelm flags
2/21-Memspy for krait optimizations much fast than A-15 memspy
2/19-Revert to old memspy with krait optimizations corrected for testing
2/18-ARMv7 optimized memchar()
A-15 memspy
Change Krait flag value
2/13-Added bionic improvement to memspy from paranoid android
Added vfpv4 flag
2/11-Added bionic optimizations for A-9 from CM gerrit
Added some flags
2/8-All widgets now work in lockscreen
2/6-Added ARMv7 optimizations to bionic
2/5-Initial Release patched to compile with linaro
 
Last edited:

trailblazerz11

Senior Member
Apr 4, 2011
1,266
1,328
Portland, OR
github.com
Tutorial Revamped Feedback please
Tackle_berry was able to compile it and modified the tutorial http://forum.xda-developers.com/showpost.php?p=39567944&postcount=623
Currently has some bad objects in the cherry-picks because I keep rebasing to make sure commits won't have conflicts, will think of a better format, for now manually cherry-pick from my github sowwy

Set up CM build environment - CM wiki
Best to compile a build so you know everything is working before adding Linaro
note: My build enviroment is on Arch Linux on latest RC kernel.

Download and set up Linaro toolchain
http://www.linaro.org/downloads/ Components, Android, Linaro 4.7 ICS/JB
Extract and rename the folder to linaro-4.7 and place it in /prebuilts/gcc/linux-x86/arm

"Linarize" Automated now
Start a linaro branch if you are going further add to it otherwise you can skip the following and work off branch and just apply the script every time.
Code:
repo start linaro --all

Download the attached script and run it. It will cherry-pick all the linaro patches (with the exception of bionic which is pulled)

Done :)

Updating
repo sync to sync from CM then run the script again if you didnt make a linaro branch. If you did repo sync should automatically update your branches

I cannot control repo syncs causing conflicts or new commits from CM (or by you) cause build errors. I will try to fix and upload changes asap.

IMO the most enjoyable part of compiling your own build is banging your head on an error then eventually finding a fix and having everything work as its suppose to. It's about the journey :)
 

Attachments

  • cherrypick.sh.tar.bz2
    2.2 KB · Views: 256
Last edited:

android88

Senior Member
Jan 21, 2012
5,793
4,790
Re: [ROM] [KANG] Linaro CM 10.1 Nexus 4 & 7 *2/11*

Nice job OP! I I just built a ROM, let's see if I can stop testing for a bit :p.

Sent from my Nexus 4 using xda premium
 
Last edited:

xploder270

Senior Member
Dec 23, 2009
190
58
Linden, GER
This is exactly what I was talking about in your old thread - very clean and to the point.
Perfect! :highfive:

Thanks for adding the tutorial about compiling a linaro ROM aswell.
I'll look into it at the end of the week.:good:

Now let's see when CM10.1 merges the new 4.2.2 stuff from AOSP.
 

hoseth0711

Senior Member
Oct 15, 2009
770
118
Copenhagen
Sv: [ROM] [KANG] Linaro CM 10.1 Nexus 4 & 7 *2/11*

So guys... I just read that a linaro build should be a lot faster than stock but that article was about a Gnex so what is the situation when it comes to linaro and Nexus 4? Im asking because i rooted my phone 2 weeks ago just to realize that i found all the custom roms to be much more laggy than stock so i unrooted again a week ago. So to avoid the same scenario i want to ask you guys what you think. Thank you in advance

Sendt fra min Nexus 4 med Tapatalk2
 

EvoXOhio

Senior Member
Mar 23, 2011
1,454
270
So guys... I just read that a linaro build should be a lot faster than stock but that article was about a Gnex so what is the situation when it comes to linaro and Nexus 4? Im asking because i rooted my phone 2 weeks ago just to realize that i found all the custom roms to be much more laggy than stock so i unrooted again a week ago. So to avoid the same scenario i want to ask you guys what you think. Thank you in advance

Sendt fra min Nexus 4 med Tapatalk2

I've tried 5-6 different ROMs and they're all the same speed as stock or faster.
 
  • Like
Reactions: hoseth0711

air2k57

Senior Member
Oct 5, 2009
1,431
159
Re: [ROM] [KANG] Linaro CM 10.1 Nexus 4 & 7 *2/11*

So guys... I just read that a linaro build should be a lot faster than stock but that article was about a Gnex so what is the situation when it comes to linaro and Nexus 4? Im asking because i rooted my phone 2 weeks ago just to realize that i found all the custom roms to be much more laggy than stock so i unrooted again a week ago. So to avoid the same scenario i want to ask you guys what you think. Thank you in advance

Sendt fra min Nexus 4 med Tapatalk2

I used to think like you. I rooted just to find Roms either buggier, or slower, or both. I ended up having a stock rooted odexed ROM for no reason basically until I have used Motleys kernel... That thing made the phone faster while improving colors and making my battery life very good.

Then, bionic stock Roms popped out and they were way fast, better than stock for sure. This is about the only rom that beats them. Linaro and bionic coupled with Motleys that's built using linaro tool chain... Perfect combo to me.

Sent from my Nexus 4 using xda app-developers app
 

hoseth0711

Senior Member
Oct 15, 2009
770
118
Copenhagen
Sv: [ROM] [KANG] Linaro CM 10.1 Nexus 4 & 7 *2/11*

Thanks a lot for all the great answers. I think im gonna give it a try tomorrow

Sendt fra min Nexus 4 med Tapatalk2
 

0.0

Senior Member
Jan 12, 2010
6,829
3,275
2/13 Uploaded for Mako (Grouper compiling now)
Added bionic improvement to memspy from paranoid android
Added vfpv4 flag

Probably last build before 4.2.2 gets merged, hopefully merges cleanly with patches..

thanks for the build!

is 4.2.2 going to get merged soon? like within a day or two? :fingers-crossed:
 

trailblazerz11

Senior Member
Apr 4, 2011
1,266
1,328
Portland, OR
github.com
Re: [ROM] [KANG] Linaro CM 10.1 + Bionic [Nexus 4 & 7] *2/13*

thanks for the build!

is 4.2.2 going to get merged soon? like within a day or two? :fingers-crossed:

Totally guessing, seems most of the source already on aosp but it is odd JBQ hasn't announced in Google groups yet. Probably something to do with no nexus 4 rollout yet.

Sent from my Nexus 7 using Tapatalk HD
 

Try4Ce

Senior Member
Jul 29, 2010
1,841
460
NRW
CodefireX already has a 4.2.2 build up for N4, tho I guess there wont be much improvements since there are no specific Mako releases in code/kernel/radio yet.

But maybe worth a look?
 

0.0

Senior Member
Jan 12, 2010
6,829
3,275
CodefireX already has a 4.2.2 build up for N4, tho I guess there wont be much improvements since there are no specific Mako releases in code/kernel/radio yet.

But maybe worth a look?

the stuff that will make it to mako would probably be the bluetooth fixes and the time for a download to complete in the notif bar. idk what else was in 4.2.2
 

Top Liked Posts

  • There are no posts matching your filters.
  • 79
    After trying other ROM's, I would always come back to CM 10.1 for its infrastructure, stability and clean features, however I still wanted experimental bleeding edge optimizations like the Linaro toolchain.
    These releases will only feature Linaro toolchain, bionic optimizations and other minor changes, generally keeping CM10.1 unaltered for the most part. I did next to no work, just compiled with patches by others. If you want to learn how, there's a tutorial on post #3

    Instructions

    NANDroid
    Wipe/Factory Reset if coming from anything other than CM 10.1 (Seems to be okay to dirty from from non-linaro cm nightlies)
    Wipe Cache
    Flash .zip
    Flash custom kernel
    Flash gapps if needed
    Reboot

    Download

    www.trailblazerz11.com

    Goo.im Also Availible on GooManager

    Nexus 7 Thread

    Disclaimer: I am not responsible for anything that may happen.

    Credits:
    Cyanogenmod Donate
    Linaro
    Google
    Eug39 for help with errors
    Evan McClain for cm10.1 gerrit patches
    codeworkx for patches
    bricked for kernel patches
    EvoXOhio for helping get this whole thing started

    Github
    https://github.com/trailblazerz
    37
    Tutorial Revamped Feedback please
    Tackle_berry was able to compile it and modified the tutorial http://forum.xda-developers.com/showpost.php?p=39567944&postcount=623
    Currently has some bad objects in the cherry-picks because I keep rebasing to make sure commits won't have conflicts, will think of a better format, for now manually cherry-pick from my github sowwy

    Set up CM build environment - CM wiki
    Best to compile a build so you know everything is working before adding Linaro
    note: My build enviroment is on Arch Linux on latest RC kernel.

    Download and set up Linaro toolchain
    http://www.linaro.org/downloads/ Components, Android, Linaro 4.7 ICS/JB
    Extract and rename the folder to linaro-4.7 and place it in /prebuilts/gcc/linux-x86/arm

    "Linarize" Automated now
    Start a linaro branch if you are going further add to it otherwise you can skip the following and work off branch and just apply the script every time.
    Code:
    repo start linaro --all

    Download the attached script and run it. It will cherry-pick all the linaro patches (with the exception of bionic which is pulled)

    Done :)

    Updating
    repo sync to sync from CM then run the script again if you didnt make a linaro branch. If you did repo sync should automatically update your branches

    I cannot control repo syncs causing conflicts or new commits from CM (or by you) cause build errors. I will try to fix and upload changes asap.

    IMO the most enjoyable part of compiling your own build is banging your head on an error then eventually finding a fix and having everything work as its suppose to. It's about the journey :)
    28
    Changelog (besides cm changes)

    6/6- Updated to 2013.05 Linaro 4.7
    5/24- libm: sqrt and sqrtf via ARM vsqrt instruction.
    5/18- optimistic pow
    5/13- mvectorize-with-neon-quad
    4/24- Added keymaster blobs to fix Security FC
    4/14- Updated to 2013.04 Linaro Thanks kszaq again
    4/4- Arch specific strcmp from Google
    4/3- Updated to 2013.03 Linaro Thanks kszaq
    3/11- mcpu a15
    2/26-Applied fix for wilhelm, reverted O2 to wilhelm
    2/25-Reduce Wilhelm flags
    2/21-Memspy for krait optimizations much fast than A-15 memspy
    2/19-Revert to old memspy with krait optimizations corrected for testing
    2/18-ARMv7 optimized memchar()
    A-15 memspy
    Change Krait flag value
    2/13-Added bionic improvement to memspy from paranoid android
    Added vfpv4 flag
    2/11-Added bionic optimizations for A-9 from CM gerrit
    Added some flags
    2/8-All widgets now work in lockscreen
    2/6-Added ARMv7 optimizations to bionic
    2/5-Initial Release patched to compile with linaro
    20
    After thinking about it for awhile (sorry changed opinions several times), I won't not to merge Nav Bar size edit. The reviews on gerrit explain why it was not merged to CM.

    I have decided to reaffirm the goal of this ROM is a CM kang with added Linaro/bionic and other optimizations, no additional features. (I completely forgot about widgets on lockscreen, I may just get rid it later) Personally, I like CM and always end up on it after trying other ROM's. Clean and has the features I need.

    Thanks all for the suggestions everyone, appreciated. I would like to make everyone happy but in the end thats not possible but hopefully the majority are. I highly encourage compiling your own ROM with your personal taste if you have the time and interest. (Hopefully my terrible tutorial helps a bit if you want linaro, I am thinking about a way to rework my branches and make it easier though)
    20
    Here is my updated/improved compilation guide based on trailblazerz11's

    Thanks trailblazerz11 for his work and help on this guide.

    More experienced users please let me know if I am doing anything wrong and how to make it better.
    I am a .NET developer so I had to learn a lot in a week or so :) Still not able use git as I would like to....


    Set up CM build environment

    CM wiki
    I used the guide below to setup my environment collaboration with some parts of CM Wiki one ( I think latter one explained why you are doing what better )
    [GUIDE] How to Properly Configure Ubuntu 12.10 64bit - Build Jellybean (All Variants)

    My own build enviroment is running on Linux Mint 14 x64 Nadia. Setting up is same with Ubuntu 12.04 or 12.10 64 Bit
    After setting up your build env. init your repo and do a;

    Code:
    repo sync

    This is gonna take a long time, you know.

    After repo syncs w/o any error.
    Build you stock CM10.1 so you know everything is working before adding Linaro patches from github

    Code:
    source build/envsetup.sh
    
    export USE_CCACHE=1
    
    breakfast mako
    
    brunch mako

    Wait some more :good:

    After a successful initial build you are sure that your local repo compiles fine an ready for applying linaro branches.

    then;
    Start a new branch called Linaro
    Code:
    repo start linaro --all

    Git Clone roomservice.xml file in my local_manifest repo to ~/(where-your-cm-folder-is)/.repo/local_manifests -- You can overwrite the existing one...
    You can either git clone roomservice.xml to the ~/(where-your-cm-folder-is)/.repo/local_manifests folder or you can just replace the contents with this;

    enter
    Code:
    git clone https://github.com/TackleBerryCrash/local_manifests.git

    or replace contents of the roomservice.xml with the following;
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
      	<project name="CyanogenMod/android_device_lge_mako" path="device/lge/mako" remote="github" />
      	<project name="CyanogenMod/lge-kernel-mako" path="kernel/lge/mako" remote="github" revision="jellybean" />
    
    	<remove-project name="CyanogenMod/android_frameworks_base" />
    	<project name="TackleBerryCrash/android_frameworks_base" path="frameworks/base" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_build" />
    	<project name="TackleBerryCrash/android_build" path="build" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_busybox" />
    	<project name="TackleBerryCrash/android_external_busybox" path="external/busybox" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_chromium" />
    	<project name="TackleBerryCrash/android_external_chromium" path="external/chromium" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_dnsmasq" />
    	<project name="TackleBerryCrash/android_external_dnsmasq" path="external/dnsmasq" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_e2fsprogs" />
    	<project name="TackleBerryCrash/android_external_e2fsprogs" path="external/e2fsprogs" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_lsof" />
    	<project name="TackleBerryCrash/android_external_lsof" path="external/lsof" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_openssh" />
    	<project name="TackleBerryCrash/android_external_openssh" path="external/openssh" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_openssl" />
    	<project name="TackleBerryCrash/android_external_openssl" path="external/openssl" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_openvpn" />
    	<project name="TackleBerryCrash/android_external_openvpn" path="external/openvpn" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_ping" />
    	<project name="TackleBerryCrash/android_external_ping" path="external/ping" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_ping6" />
    	<project name="TackleBerryCrash/android_external_ping6" path="external/ping6" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_skia" />
    	<project name="TackleBerryCrash/android_external_skia" path="external/skia" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_stlport" />
    	<project name="TackleBerryCrash/android_external_stlport" path="external/stlport" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_v8" />
    	<project name="TackleBerryCrash/android_external_v8" path="external/v8" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_webkit" />
    	<project name="TackleBerryCrash/android_external_webkit" path="external/webkit" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_wpa_supplicant_8" />
    	<project name="TackleBerryCrash/android_external_wpa_supplicant_8" path="external/wpa_supplicant_8" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_frameworks_av" />
    	<project name="TackleBerryCrash/android_frameworks_av" path="frameworks/av" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_frameworks_ex" />
    	<project name="TackleBerryCrash/android_frameworks_ex" path="frameworks/ex" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_frameworks_native" />
    	<project name="TackleBerryCrash/android_frameworks_native" path="frameworks/native" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_frameworks_rs" />
    	<project name="TackleBerryCrash/android_frameworks_rs" path="frameworks/rs" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_frameworks_wilhelm" />
    	<project name="TackleBerryCrash/android_frameworks_wilhelm" path="frameworks/wilhelm" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_system_security" />
    	<project name="TackleBerryCrash/android_system_security" path="system/security" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_hardware_qcom_display-caf" />
    	<project name="TackleBerryCrash/android_hardware_qcom_display-caf" path="hardware/qcom/display-caf" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_libcore" />
    	<project name="TackleBerryCrash/android_libcore" path="libcore" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_bluetooth_bluedroid" />
    	<project name="TackleBerryCrash/android_external_bluetooth_bluedroid" path="external/bluetooth/bluedroid" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_oprofile" />
    	<project name="TackleBerryCrash/android_external_oprofile" path="external/oprofile" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_hardware_qcom_display" />
    	<project name="TackleBerryCrash/android_hardware_qcom_display" path="hardware/qcom/display" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_hardware_qcom_media" />
    	<project name="TackleBerryCrash/android_hardware_qcom_media" path="hardware/qcom/media" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_vendor_cm" />
    	<project name="TackleBerryCrash/android_vendor_cm" path="vendor/cm" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_frameworks_compile_libbcc" />
    	<project name="TackleBerryCrash/android_frameworks_compile_libbcc" path="frameworks/compile/libbcc" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_external_clang" />
    	<project name="TackleBerryCrash/android_external_clang" path="external/clang" revision="linaro" />
    
    	<remove-project name="CyanogenMod/android_bionic" />
    	<project name="TackleBerryCrash/android_bionic" path="bionic" revision="linaro" />
    
    	<remove-project name="CyanogenMod/lge-kernel-mako" />
    	<remove-project name="CyanogenMod/android_device_lge_mako" />
    	<project name="TackleBerryCrash/lge-kernel-mako" path="kernel/lge/mako" remote="github" revision="linaro" />
    	<project name="TackleBerryCrash/android_device_lge_mako" path="device/lge/mako" remote="github" revision="linaro" />
    </manifest>

    again do a repo sync this will pull the linaro patches to the linaro branch;

    Code:
    repo sync

    Download and set up latest Linaro toolchain

    http://www.linaro.org/downloads/ ---> Components, Android, Linaro 4.7 ICS/JB
    Download the latest toolchain and copy the tar.bz2 file to /prebuilts/gcc/linux-x86/arm
    Extract ( do not use GUI to extract, use the command below in terminal )
    You'll get a folder named "android-toolchain-eabi", rename the folder to linaro-4.7, again make sure you are doing this in /prebuilts/gcc/linux-x86/arm folder

    Code:
    tar -xvjf android-toolchain-eabi-linaro-4.7-2013.02-01-3-2013-02-19_23-39-29-linux-x86.tar.bz2

    Note: Name of the file changes with every new prebuilt so update the command above accordingly...

    Just making sure all the projects are on linaro branch

    Code:
    repo forall -c git checkout linaro

    CM Team just made some setting commits in frameworks_base repo yesterday morning. I had to pull these commits but since I pushed them to my frameworks_base you should be ok to build. Let me know if you hit an error 41 on settings jars. I can give you the code to pull from CM repo.

    Clean up the OUT folder to be on the safe side since you have built a test build of CM10.1 after setting up the repo, just takes long to build - won't hurt to do -make clobber or clean (at least)-
    have to do make clobber/clean depends on if changed any make files that can have system wide affects
    I do make clobber once every 2-3 builds or if I see a make file commit.
    make clobber - > Deletes all the OUT folder
    make clean -> Deletes only Build folder

    Code:
    make clobber

    or

    Code:
    make clean

    then;

    Code:
    source build/envsetup.sh
    
    export USE_CCACHE=1
    
    breakfast mako
    
    brunch mako

    Wait.....

    ---------- Post added at 01:19 AM ---------- Previous post was at 01:11 AM ----------

    trailblazerz working on using google's bionic though, I have been testing my build whole day today, so far so good.

    If trailblazerz want me to, I can supply the bi-nightly builds to keep the thread going until he is all setup with new bionic repo.