Post Reply Subscribe to Thread

Guide on building Lollipop for the OnePlus One

21st November 2014, 05:05 AM   |  #1  
GRMrGecko's Avatar
OP Member
Flag Huntsville
Thanks Meter: 58
 
55 posts
Join Date:Joined: Dec 2012
More
Today I went about and built a copy of CM12 for my phone so that I can control when I get updates and I can get the most latest update. There was a few issues I ran into following other peoples guides in the Android L Dicussions, so I thought I'll do a quick write on exactly what I did so you can go about building it for yourself.

A good resource on building CyanogenMod is available at http://wiki.cyanogenmod.org/w/Build_for_bacon, they don't have a guide for CM12, but still has some useful information.

Make sure you use the same operating system as I am using which is Ubuntu. I tried using Debian earlier, but had issues which may have been resulted to me not having enought memory on disk or me interupting the download of source code.

Preparing System for Build

Install the following items via apt-get.
Code:
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
As per the instructions on the wiki for building CM, if you use a 32bit system, do not install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev.

Install the latest version of Java's development kit using the following.
Code:
sudo apt-get install openjdk-7-jdk
Install the Android Development Kit using the following.
Code:
sudo apt-get install android androidsdk-uiautomatorviewer android-copyright android-src-vendor android-emulator android-tools-adb android-headers android-tools-adbd androidsdk-ddms  android-tools-fastboot androidsdk-hierarchyviewer android-tools-fsutils androidsdk-traceview
Run the following in terminal.
Code:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
reboot your system or use the following in terminal to load the .profile file again.
Code:
. ~/.profile
Getting the source code.

Now we can get onto grabbing the source code of CM12.
Run the following in terminal.
Code:
mkdir ~/cm
cd ~/cm
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
mkdir .repo/local_manifests
nano .repo/local_manifests/local_manifests.xml
When nano appears, paste the following into it and then exit using ctrl-x and choose to save.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" />
<project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" />
<project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" />
<project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" />
<project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" />
<project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" />
</manifest>
Continue getting the code using the following.
Code:
repo sync
cd vendor/cm
./get-prebuilts
cd ../..
Building CM12
Run the following commands to build CyanogenMod.
Code:
. build/envsetup.sh
breakfast bacon
brunch bacon
After successful build, you should be able to go about copying the built CyanogenMod and installing it into your phone. The CyanogenMod build is located in ~/cm/out/target/product/bacon/ named something like cm-12-*-UNOFFICIAL-bacon.zip

You can install folllowing: http://forum.xda-developers.com/onep...s-one-t2940091

Re-building to update.
To re-build, you should just be able to run the following (Not yet tested myself, but makes logical sense).
Code:
make clobber
repo sync
cd vendor/cm
./get-prebuilts
cd ../..
. build/envsetup.sh
brunch bacon
Q&A
Q: Recieve error: fatal: duplicate path device/qcom/sepolicy in ~/cm/.repo/manifest.xml
A: edit .repo/local_manifests/local_manifests.xml to remove the item which matches the item located in bold.

Q: How big is the repo?
A: 20GB just source code and 40GB when built. Therefore you should aim to have about 60GB free on your system.
Last edited by GRMrGecko; 22nd November 2014 at 05:34 AM. Reason: Added Q&A for sizes
The Following 32 Users Say Thank You to GRMrGecko For This Useful Post: [ View ]
21st November 2014, 05:16 AM   |  #2  
pandasa123's Avatar
Senior Member
Flag South Grafton
Thanks Meter: 1,560
 
1,567 posts
Join Date:Joined: Jul 2013
Donate to Me
More
you don't necessarily need Ubuntu 14.04. You could do just fine on 12.04 or 13.10 or whatever.

Also, something that's good to know: if you have a build environment that you've been building kitkat in, the only thing you need to do is update your Java from 1.6 to 1.7
The Following User Says Thank You to pandasa123 For This Useful Post: [ View ]
21st November 2014, 05:37 AM   |  #3  
linezero's Avatar
Senior Member
Flag Male'
Thanks Meter: 99
 
608 posts
Join Date:Joined: Sep 2010
More
how big is the cm 12 download?
21st November 2014, 05:40 AM   |  #4  
Snottierwhale's Avatar
Senior Member
Flag Sacramento
Thanks Meter: 280
 
313 posts
Join Date:Joined: Jan 2014
Donate to Me
More
This is a really nice tutorial. Thanks OP.
21st November 2014, 05:43 AM   |  #5  
Quasar's Avatar
XDA: ASSIST
Recognized Contributor
Flag Mumbai
Thanks Meter: 1,232
 
1,656 posts
Join Date:Joined: Dec 2013
More
Nice guide!

Umm.... As far as I know, it isn't necessary to croot...
And it seems to compile fine with just . build/envsetup.sh && brunch bacon.
Just my two cents.

Sent from my A0001 using XDA Premium 4 mobile app
Last edited by Quasar; 21st November 2014 at 05:45 AM.
The Following User Says Thank You to Quasar For This Useful Post: [ View ]
21st November 2014, 06:38 AM   |  #6  
Nburnes's Avatar
Senior Member
Thanks Meter: 848
 
1,234 posts
Join Date:Joined: Sep 2010
More
Quote:
Originally Posted by rudi_j7

Nice guide!

Umm.... As far as I know, it isn't necessary to croot...
And it seems to compile fine with just . build/envsetup.sh && brunch bacon.
Just my two cents.

Sent from my A0001 using XDA Premium 4 mobile app

Exactly this.
Croot "change root (directory)" is unneeded when you're already in the root directoy.

Code:
. build/envsetup.sh
breakfast bacon
brunch bacon
is more than than enough. This will automatically allocate to cores as is needed and compiles the flashable zips. Silly to make the build with make -j*of cores* and then make otapackage when one command will do both for you.

On the grounds of repo sync, inputting it just like that "repo sync" runs on 4 threads with -c already which is more than fast enough for people.

Quote:

The CM manifests include a sensible default configuration for repo, which we strongly suggest you use (i.e. don't add any options to sync). For reference, our default values are -j 4 and -c. The -j 4 part means that there will be four simultaneous threads/connections. If you experience problems syncing, you can lower this to -j 3 or -j 2. -c will ask repo to pull in only the current branch, instead of the entire CM history.


As for the platform tools, those are all installable through Ubuntu's apt repositories.
Code:
niall@niall-desktop:~$ sudo apt-get install android
android                       androidsdk-uiautomatorviewer
android-copyright             android-src-vendor
android-emulator              android-tools-adb
android-headers               android-tools-adbd
androidsdk-ddms               android-tools-fastboot
androidsdk-hierarchyviewer    android-tools-fsutils
androidsdk-traceview
No offense to @GRMrGecko but people should read up on what they're inputting into their Terminals.

What Envsetup does: http://wiki.cyanogenmod.org/w/Envsetup_help
The Following User Says Thank You to Nburnes For This Useful Post: [ View ]
21st November 2014, 11:54 AM   |  #7  
GRMrGecko's Avatar
OP Member
Flag Huntsville
Thanks Meter: 58
 
55 posts
Join Date:Joined: Dec 2012
More
Quote:
Originally Posted by linezero

how big is the cm 12 download?

20GB, probably larger once compiled.
The Following 2 Users Say Thank You to GRMrGecko For This Useful Post: [ View ]
21st November 2014, 11:55 AM   |  #8  
GRMrGecko's Avatar
OP Member
Flag Huntsville
Thanks Meter: 58
 
55 posts
Join Date:Joined: Dec 2012
More
Quote:
Originally Posted by pandasa123

you don't necessarily need Ubuntu 14.04. You could do just fine on 12.04 or 13.10 or whatever.

Also, something that's good to know: if you have a build environment that you've been building kitkat in, the only thing you need to do is update your Java from 1.6 to 1.7

I completely forgot to add the java install into the guide.
The Following User Says Thank You to GRMrGecko For This Useful Post: [ View ]
21st November 2014, 12:11 PM   |  #9  
GRMrGecko's Avatar
OP Member
Flag Huntsville
Thanks Meter: 58
 
55 posts
Join Date:Joined: Dec 2012
More
Quote:
Originally Posted by Nburnes

No offense to @GRMrGecko but people should read up on what they're inputting into their Terminals.

What Envsetup does: http://wiki.cyanogenmod.org/w/Envsetup_help

Thanks for the input. I had an understanding on what I was doing as far as envsetup.sh setting the environment for the commands for croot, breakfast, ect and that breakfast builds the make configuration somewhat like how configure on many other software. But I never took the time to go about and research as I wanted to make a working build and had issues using Debian. I thought that I will share what I did and just make a general resource for people to come to and get help with building as I only saw build instructions here and there in the Lollipop discussions.

I have incorporated your feedback into the instructions and I am testing the re-build now with your commands to verify that they work the way they are.

Thank you.
Last edited by GRMrGecko; 21st November 2014 at 12:23 PM.
The Following User Says Thank You to GRMrGecko For This Useful Post: [ View ]
21st November 2014, 12:13 PM   |  #10  
fjsferreira's Avatar
Senior Member
Flag Ponta Delgada
Thanks Meter: 1,515
 
2,330 posts
Join Date:Joined: Nov 2009
More
This is great, now there's no excuse for anyone!

Post Reply Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes