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/oneplus-one/general/lollipop-install-guide-oneplus-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.
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
how big is the cm 12 download?
This is a really nice tutorial. Thanks OP.
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
rudi_j7 said:
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
Click to expand...
Click to collapse
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.
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.
Click to expand...
Click to collapse
As for the platform tools, those are all installable through Ubuntu's apt repositories.
Code:
[email protected]:~$ 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
linezero said:
how big is the cm 12 download?
Click to expand...
Click to collapse
20GB, probably larger once compiled.
pandasa123 said:
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
Click to expand...
Click to collapse
I completely forgot to add the java install into the guide.
Nburnes said:
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
Click to expand...
Click to collapse
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.
This is great, now there's no excuse for anyone!
?good job
Sent from my NX507J using XDA Premium 4 mobile app
Nburnes said:
Code:
. build/envsetup.sh
breakfast bacon
brunch bacon
Click to expand...
Click to collapse
According to the URL you posted (http://wiki.cyanogenmod.org/w/Envsetup_help) breakfast isn't even needed as brunch does breakfast and mka in one go.
GRMrGecko said:
According to the URL you posted (http://wiki.cyanogenmod.org/w/Envsetup_help) breakfast isn't even needed as brunch does breakfast and mka in one go.
Click to expand...
Click to collapse
Exactly why I said only . build/envsetup.sh && brunch bacon
Sent from my A0001 using XDA Premium 4 mobile app
rudi_j7 said:
Exactly why I said only . build/envsetup.sh && brunch bacon
Click to expand...
Click to collapse
Thanks, I wasn't sure if that was true as Nburnes said to use both brunch and breakfast and from what I saw in the discussions posts, he knew what he was doing.
I have this problem. How to solve it?
E: Unable to locate package android
E: Unable to locate package android-copyright
E: Unable to locate package android-src-vendor
E: Unable to locate package android-emulator
scafroglia57 said:
I have this problem. How to solve it?
E: Unable to locate package android
E: Unable to locate package android-copyright
E: Unable to locate package android-src-vendor
E: Unable to locate package android-emulator
Click to expand...
Click to collapse
What version of Ubuntu do you have? lsb_release -a
I think you may be fine with those packages not being available, as long as you get adb/fastboot.
GRMrGecko said:
What version of Ubuntu do you have? lsb_release -a
I think you may be fine with those packages not being available, as long as you get adb/fastboot.
Click to expand...
Click to collapse
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
scafroglia57 said:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
Click to expand...
Click to collapse
That is the same as mine. Try running sudo apt-get update and see if that changes what packages are available.
GRMrGecko said:
That is the same as mine. Try running sudo apt-get update and see if that changes what packages are available.
Click to expand...
Click to collapse
Nothing
scafroglia57 said:
Nothing
Click to expand...
Click to collapse
Just try continuing without those packages.
Related
Here are the steps to build your own kernel from source. This guide is showing you how to build your first the stock kernel on your own..... It is kick start for making things on your own way....
This guide applies to i9082/i9082L and general devices also.:laugh:
This guide assumes you have basic knowledge of linux and linux system configuration.
Prerequisites
Quote:
HTML:
1. Ubuntu 13.10 / BBQLINUX (I personally use this)
2. patience...lots and lots of patience.
Here starts the fun:-
1. Installing ubuntu 13.10.
Quote:
This can be done in 3 ways and I am not gonna cover it all.
- along with windows ,i.e dual boot
- in virtualbox within windows
- as a windows application installation with "wubi" installer
For starting user i think second option, i.e installing in virtualbox is best.
here's starting tutorials
http://www.youtube.com/watch?v=tDDRFiwHujg
NOTE - you should have atleast 100 Gb partion for virtualbox.
2. Setting up building environment.
PHP:
THIS ALL BELOW STEPS ARE NOT NEEDED IF YOU HAVE INSTALLED BBQLINUX, BUILDING ENVIRONMENT IS SET IN BBQLINUX BY DEFAULT. IT WORKS OUT-OF-THE-BOX.
Initializing a fresh Android Build Environment in Ubuntu 13.10 sucks, right? The instructions at the AOSP page are outdated and inaccurate. Near as I can tell, they try to have you install 2 JDKs, the first one not even being the correct link for Saucy Salamander, and the second being OpenJDK. Which might work. But I dunno about all that, I’d rather have Oracle’s official stamp when it comes to building for Android.
Currently most of the guides are up to 12.04 LTS, which is fine and dandy, but being on the cutting edge is nice too.
This guide applies to all variations of Ubuntu 13.10 Saucy Salamander 64 bit. Do not use the 32 Bit version. Also, PAY CLOSE ATTENTION when to use “sudo” and when to not. It can make things funky if you do something as root that you shouldn’t.
Much thanks goes out to Google, ProTekk, Canonical, and everyone else that I read a random paragraph here and snippet there.
First, let’s set up the correct JDK.
Many of you probably have some kind of wrong Java installed unless you’re starting with a fresh Ubuntu base, and even then maybe.
Let’s get rid of that. Copy and paste this into a Terminal window:
Code:
PHP:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Follow the instructions to remove OpenJDK.
If you must keep it, it’s possible. But I’m not going to tell you how to do it here. I don’t want any chance of confusion or mistake.
Now copy and paste the following into the Terminal:
Code:
PHP:
sudo add-apt-repository ppa:webupd8team/java
This will add the correct PPA to your system for updated builds of Java 6 JDK that are compatible with 13.10.
No more unrecognized Java version errors! And it will update automatically with the rest of your system.
Next, we actually need to install the package. More copy-paste:
Code:
PHP:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Follow the on-screen instructions. You have to Accept the Licensing Agreement to complete the install. Hopefully no human centipede clauses.
Let’s make sure the correct version of Java is activated, run the following Terminal command:
Code:
PHP:
java -version
You should see something like the following:
Code:
PHP:
java version “1.6.0_45″ Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Ok, back to a fresh Terminal prompt. Time for installing the guts to build stuff in Ubuntu:
Code:
PHP:
sudo apt-get install git-core gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python
When that is done installing, run the following command in your Terminal window:
Code:
PHP:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
That’s it on the package side of things.
You guessed it, time for more Terminal. This really is the easiest way, seriously. And it’s totally worth it when you’re basking in the glory of a bunch of people on XDA.
The binary for a program called “repo” will let you talk to git servers and download all that precious source code. That second part after the && allows it to be executable:
Code:
PHP:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
Use your favorite text editor to open ~/.bashrc
I like nano:
Code:
PHP:
sudo nano ~/.bashrc
At the very bottom, add the following line:
Code:
PHP:
export PATH=~/bin:$PATH
Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash:
Code:
PHP:
source ~/.bashrc
That should be everything. Now you’re ready to build Android the right way. Luck!
3. Downloading source
Open terminal
To initialize your local repository using the CyanogenMod trees, use a command like this:
HTML:
mkdir cm11
cd cm11
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
Create local_manifest.xml in .repo folder.
PHP:
cd .repo
nano local_manifest.xml
Paste following into the terminal
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/samsung/i9082" name="pawitp/android_device_samsung_i9082" remote="github" revision="cm-11.0" />
<project path="vendor/samsung/i9082" name="k2wl/android_vendor_samsung_i9082" remote="github" revision="master" />
<project path="kernel/samsung/i9082" name="pawitp/android_kernel_samsung_i9082" remote="github" revision="cm-11.0" />
</manifest>
Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash.
Then to sync up:
HTML:
repo sync -j#
# is number of jobs you want to give for your downloading source. I use 2.
Download gonna be huge. Approx 12-15 GB.
So its gonna take while depending upon your internet connection.
You may get errors while downloading, like
HTML:
Sync exited due to fetch errors
Just restart download by
HTML:
repo sync
4. Starting Building process
PHP:
. build/envsetup.sh && time brunch i9082 -j#
Again # is meant for No. of CPU cores you have.
Building gonna take time, depending upon your computer configuration.
Any errors, post here.
I will try my best to solve problems .
Start building your own CM11...
Any suggestion welcome.
reserved for future use.
one more
Just last in case
THANKS K2wl for this amazing guide.
k2wl said:
Here starts the fun
Click to expand...
Click to collapse
Wow that's a really good guide.
You make building from a ROM/Kernel from source much simpler than it should be.
I just replaced my 12.04 LTS with 13.10 last night, was wondering if I shouldn't have, but if it's working good for your development, think I'll keep it for a while. And yes, building a fresh android build environment sucks
I'm new to android development, but so far the linux, java and php code seems mostly regular. Gonna start with kernel first, then maybe try my hand on building a ROM. Thank you for the guide! :good:
iceyhotguy said:
Wow that's a really good guide.
You make building from a ROM/Kernel from source much simpler than it should be.
I just replaced my 12.04 LTS with 13.10 last night, was wondering if I shouldn't have, but if it's working good for your development, think I'll keep it for a while. And yes, building a fresh android build environment sucks
I'm new to android development, but so far the linux, java and php code seems mostly regular. Gonna start with kernel first, then maybe try my hand on building a ROM. Thank you for the guide! :good:
Click to expand...
Click to collapse
Good. Thats the spirit.
keep 13.10. its good.
i switched to BBQLINUX just few days, until earlier i was using 13.10.
kernel develpment is not much hussle.
just be sure...dont add features which make kernel unstable.
i statred with kernel development only...:good::laugh:
and then come to ROM development.
best luck..
if any queries regarding kernel or ROM development, just ask me...i am here to help.
this can be used to build other roms too right .... by just changing the github repo to the rom u wanna build
One more question, how to apply patches?
But, k2wl.
This method builds an Odin flashable file.
How to make flashable zips, which can be flashed through custom recoveries.????
Sent from my iPhone using Tapatalk
rutvikrvr said:
this can be used to build other roms too right .... by just changing the github repo to the rom u wanna build
Click to expand...
Click to collapse
yes its gonna be useful to build other AOSP based roms. like PA,AOKP,OMNI,AICP etc... just need few modifications according to respective roms.
black87 said:
One more question, how to apply patches?
Click to expand...
Click to collapse
copy the patch file to respective directory and apply patch with following command.
HTML:
patch -p1 < patch.diff
eg. if you want to apply bluetooth patch and ur patch name is fixbluetooth.diff
then
HTML:
cd hardware/broadcom/libbt/
git checkout .
patch -p1 < fixbluetooth.diff
if any problems plz tell me..
Ateekujjawal said:
But, k2wl.
This method builds an Odin flashable file.
How to make flashable zips, which can be flashed through custom recoveries.????
Sent from my iPhone using Tapatalk
Click to expand...
Click to collapse
It builds flashable zips only ......with CWM or any other....
@k2wl im getting this error http://pastebin.com/uLy1MGew
rutvikrvr said:
@k2wl im getting this error http://pastebin.com/uLy1MGew
Click to expand...
Click to collapse
check slimrom's github source. instructions are given there.
also @k2wl said that you have to make some other modifications.
Did you try the breakfast command???
rutvikrvr said:
@k2wl im getting this error http://pastebin.com/uLy1MGew
[email protected]:~/slimrom$ . build/envsetup.sh && time brunch i9082 -j4
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including vendor/slim/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/slim/vendorsetup.sh
ls: cannot access device/*/i9082/slim.mk: No such file or directory
build/core/product_config.mk:231: *** Can not locate config makefile for product "slim_i9082". Stop.
Device i9082 not found. Attempting to retrieve device repository from SlimRoms Github (http://github.com/SlimRoms).
Repository for i9082 not found in the SlimRoms Github repository list. If this is in error, you may need to manually add it to .repo/local_manifests/slim_manifest.xml
ls: cannot access device/*/i9082/slim.mk: No such file or directory
build/core/product_config.mk:231: *** Can not locate config makefile for product "slim_i9082". Stop.
** Don't have a product spec for: 'slim_i9082'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
real 0m22.876s
user 0m0.219s
sys 0m0.087s
Click to expand...
Click to collapse
your device folder points to device named cm_i9082, not slim_i9082. thats why.
jst open cm.mk file in device/samsung/i9082 cm.mk and edit its content to slim.
means
if it says in the line cm_i9082 change it to slim_i9082.
save it.
rename the file to slim.mk
and change one more file which will point to slim.mk
i.e androidproducts.mk
change the
HTML:
PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/device_i9082.mk
to
HTML:
PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/slim.mk
after that one more file to be created.
slim.dependencies.
just rename cm.dependencies to slim.dependencies.
and then try that command again.
i am attaching files for you.
jst replace them. or edit as you like.
---------------------------------------------------------------------------------------------------------------------
good to know some one started something.
you downloaded source. thats great....keep up... i will help you as much as i can....
rutvikrvr said:
@k2wl im getting this error http://pastebin.com/uLy1MGew
Click to expand...
Click to collapse
Or simply use i9082 device tree for SlimROMs from my Github. I have made all the necessary changes.
xenon92 said:
Or simply use i9082 device tree for SlimROMs from my Github. I have made all the necessary changes.
Click to expand...
Click to collapse
yep....that will do....
but i think untill and unless he do it himself, he wont understand....
@xenon92 as k2wl is saying.. Il try on my own first otherwise I'll use ur device tree if I'm not able to do it at all... Thanx fr the reply.
Sent from my GT-I9082 using XDA Premium 4 mobile app
EDIT: ITS STARTED BUILDING ..THANX FR THE SUPPORT
rutvikrvr said:
@xenon92 as k2wl is saying.. Il try on my own first otherwise I'll use ur device tree if I'm not able to do it at all... Thanx fr the reply.
Sent from my GT-I9082 using XDA Premium 4 mobile app
EDIT: ITS STARTED BUILDING ..THANX FR THE SUPPORT
Click to expand...
Click to collapse
thats the spirit of learning...keep up...
one more error http://pastebin.com/wcuPHsi0 ..pl help
device/samsung/i9082/overlay/frameworks/base/core/res/res/values/config.xml
just edit this file and delete line number 34,199,205. and save it.
just restart building again.
How to build your own CyanogenMod 11 ROM from sources for the Moto E
As you all know inorder to compile any rom based on source codes we need a linux environment. We can also use Virtual Machine on Windows but i find it slower when compared to a linux dual boot or linux os totally! So for budding developers i shall write this guide on how to setup Ubuntu 14.04 LTS Trusty Tahr 64 bit version to compile android roms. Please note that 32 bit is not supported to compile roms. So, lets get started!
Requirements:
PC with
4gb RAM(minimum)
i3 or above processor(i7 recommended)
Ubuntu OS (installed)
Moto E
Good internet connection
Knowledge of logcat and debugging
Click to expand...
Click to collapse
I wont be doing through on how to dual boot or install Ubuntu there are many videos on youtube so search them up and get Ubuntu installed! Now open a fresh terminal and do the following:
1) Copy and paste it into a terminal window:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
This will remove OpenJDK if you have it pre-installed.
2) Copy and paste the following into the terminal:
Code:
sudo add-apt-repository ppa:webupd8team/java
This will add the correct PPA to your system for updated builds of Java 6 JDK that are compatible with Ubuntu 14.04.
3) Now you need to install the package. Copy and paste the following into the terminal:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Wait.
Follow the on-screen instructions. You must accept the Licensing Agreement to complete the install.
Press Enter to acknowledge the "OK", then tab over to "Yes" and press Enter again to accept the license. The installation will continue automatically.
4) Make sure the correct version of Java is activated. Run the terminal command:
Code:
java -version
You should see or something similar:
Code:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Close and open a new terminal.
5) Install the main build tools with this command:
Code:
sudo apt-get install git gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libreadline6-dev lib32readline-gplv2-dev libncurses5-dev bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev squashfs-tools pngcrush schedtool dpkg-dev
6) When they are installed, run the next line in your terminal window:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
That's it packages are done! Now for the sources!
7) Install "repo" using this command:
Code:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
8) Now open .bashrc using Nano:
Code:
sudo nano ~/.bashrc
9) At the end of the page paste this code to a new line:
Code:
export PATH=~/bin:$PATH
10) Save it using Ctrl+O and then Enter. Then Ctrl+X to exit.
11) Restart bash using this command:
Code:
source ~/.bashrc
11) In the terminal, navigate to where you would like to download the Android source code. I will be placing it in "/home/user/" modify according to ur wish.
Code:
mkdir ~/cm11
cd ~/cm11
Now configure Git using:
Code:
git config --global user.email "[email protected]"
Replace "[email protected]" with your mail id of github
and also
Code:
git config --global user.name "name"
Replace "name" with your name
12) Now initialize the repo using:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
The above command is for CM 11 you also do it for other flavours of custom roms too! I will add how to initialise repos for other flavours in second post soon!
13) Now start downloading the sources!!
Code:
repo sync
It takes around 11gb so here is where your internet connection plays a major role!! Sit back and do your other works till then!
And your ready to compile your rom when the sources are fully downloaded!!
14) Initialize the build environment:
Code:
$ .build/envsetup.sh
15) Add repositories for the MOTO E by creating two files in the local_manifests directory. To see this directory, you have to press Ctrl+H in your file manager. If the directory isn't there, create using
Code:
$ mkdir ~/cm11/.repo/local_manifests
16) Use this code to create the file condor.xml
Code:
$ gedit ~/cm11/.repo/local_manifests/condor.xml
17) Paste the following lines using an editor to the name.xml:
Code:
<manifest>
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_device_motorola_qcom-common" path="device/motorola/qcom-common" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_device_motorola_name" path="device/motorola/name" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_kernel_motorola_msm8210" path="kernel/motorola/msm8210" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_device_motorola_msm8210-common" path="device/motorola/msm8210-common" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_hardware_qcom_display-caf-new" path="hardware/qcom/display-caf-new" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_hardware_qcom_media-caf-new" path="hardware/qcom/media-caf-new" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_hardware_qcom_fm" path="hardware/qcom/fm" remote="github" revision="cm-11.0"/>
</manifest>
Save the file and exit.
18) Use this code to create the file vendor.xml using the command:
Code:
$ gedit ~/cm11/.repo/local_manifests/vendor.xml
19) Paste the following lines using an editor to vendow.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="vendor/motorola" name="TheMuppets/proprietary_vendor_motorola" remote="github" revision="cm-11.0"/>
</manifest>
Save the file and exit.
20) Now copy paste the command in terminal:
Code:
$ repo sync
To get the files needed.
21) Download the necessary prebuilts from cyanogenmod by copy pasting in terminal:
Code:
$ cd ~/cm11
$ vendor/cm/get-prebuilts
21) Now building the rom:
Code:
$ brunch condor
For any help or issues you can post your issues/doubts at this thread and people there will help you!
Congrats!!!You are now set to become a Developer soon!!
First building process will take from 3 hours to12 hours based on your computer specifications. Later builds will take lesser time!After the ROM has been successfully compiled you will find your new ROM in ~/cm11/out/target/product/name. It will be as cm-11-DATE-UNOFFICIAL-condor-zip. You can flash it via CWM/TWRP. Use adb and fastboot to logcat and debug your issues!
Credits:
@sylentprofet - setting up environment on Ubuntu 14.04
@Red Devil - repos, manifest and other info
@x10forevers - how to source build tutorial
Click to expand...
Click to collapse
Build other flavours of android
Initialise repo for other android flavours of android:
Replace step #12 by these:
a) AOSP-4.4.2:
Code:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r1
b) CM-11:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
c) MoKee:
Code:
repo init -u https://github.com/MoKee/android.git -b kk_mkt
d) Omni:
Code:
repo init -u https://github.com/omnirom/android.git -b android-4.4
e) PAC:
Code:
repo init -u git://github.com/PAC-man/pacman.git -b pac-4.4
f) Carbon:
Code:
repo init -u https://github.com/CarbonDev/android.git -b kk
debug info
faq for common errors and solutions to help build process easier!
coming soon!
Click to expand...
Click to collapse
Thanks for the guide...:laugh:
So..... Nice guide that points to a device with no published sources yet...
It's not on cyanogenmod yet
The common folders won't be called 8210
This is a general waste of time. It's pointless having guides on every single device section for building.
Sent from my Nexus 7 using Tapatalk
cybojenix said:
So..... Nice guide that points to a device with no published sources yet...
It's not on cyanogenmod yet
The common folders won't be called 8210
This is a general waste of time. It's pointless having guides on every single device section for building.
Sent from my Nexus 7 using Tapatalk
Click to expand...
Click to collapse
perhaps could aspire users to develop and enable noobs to give a try!
cybojenix said:
So..... Nice guide that points to a device with no published sources yet...
It's not on cyanogenmod yet
The common folders won't be called 8210
This is a general waste of time. It's pointless having guides on every single device section for building.
Sent from my Nexus 7 using Tapatalk
Click to expand...
Click to collapse
Haha was thinking the same , cm without sources , looks like copy paste !
karthiknayak94 said:
Haha was thinking the same , cm without sources , looks like copy paste !
Click to expand...
Click to collapse
well not exactly, the part of setting up environment on Ubuntu 14.04 was referred from various guides and made noob free. Building part is my work. You can check around xda if you feel it is copy paste. Am building for Moto G and believe both processes are same so made a thread for people here to help develop easily.
sources
so the sources are out now, perhaps update the guide
yeshwanthvshenoy said:
Initialise repo for other android flavours of android:
Replace step #12 by these:
a) AOSP-4.4.2:
Code:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r1
b) CM-11:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
c) MoKee:
Code:
repo init -u https://github.com/MoKee/android.git -b kk_mkt
d) Omni:
Code:
repo init -u https://github.com/omnirom/android.git -b android-4.4
e) PAC:
Code:
repo init -u git://github.com/PAC-man/pacman.git -b pac-4.4
f) Carbon:
Code:
repo init -u https://github.com/CarbonDev/android.git -b kk
Click to expand...
Click to collapse
I think, if we are building PAC ROM, u will have to replace this command for step #14
Code:
$ ./build-pac.sh
kdomn37 said:
so the sources are out now, perhaps update the guide
Click to expand...
Click to collapse
TheStrix said:
i shall update the guide soon! exams till june 20! after that will get u guys!
I think, if we are building PAC ROM, u will have to replace this command for step #14
Code:
$ ./build-pac.sh
Click to expand...
Click to collapse
i ll check bro thanks havnt built pac till now!
What would be the expected build time in an i7 laptop with 8 GB ram ?
Sent from my XT1022 using XDA Free mobile app
raj.amalw said:
What would be the expected build time in an i7 laptop with 8 GB ram ?
Sent from my XT1022 using XDA Free mobile app
Click to expand...
Click to collapse
first build takes more time roughly around 1-2 hours after that all builds take 20 mins or so!
Motorola kernel msm 8210 repository removed
Hi,
I have been trying to clone the CM repository. The local manifest contains
device/motorola/msm8210-common and
device/motorola/msm8210 for which the repositories which has been either moved or removed. I found the the motorola kernel for the device at github.com/MotorolaMobilityLLC/kernel-msm but i'm not sure what changes in the local manifest has to be made. can anybody halp me out with it?
where's kernel source for device ?
Motorola kernel msm 8210 repository removed
andrman1 said:
where's kernel source for device ?
Click to expand...
Click to collapse
I've used the kernel forked from motorola by github.com/cybojenix/kernel_motorola_condor
Thread closed
This guide is an adaptation/update of the following guides:
http://forum.xda-developers.com/sho...mctr=(not provided)&__utmv=-&__utmk=231246620
http://forum.xda-developers.com/nexus-4/general/guide-cm11-how-to-build-cyanogenmod-11-t2515305
Disclaimer
My linux skills are not very good but following a few of guides I could compile a very stable and functional ROM. Everything written here is tested by me several times and works, but I am not responsible for any damage.
Requirements:
Linux - Ubuntu 14.04 - 64bit (AFAIK, a 64 bit host is needed to compile KK)
An SGH-T959 with cm11 compile with this guide or cm-10.1-2014xxxx-NIGHTLY-vibrantmtd already installed - Get the latest nightly here: http://get.cm/?device=vibrantmtd
About 14GB of storage for the repository plus about 15GB for building
1 - Install Ubuntu Packages
Terminal
Code:
sudo apt-get install bison build-essential curl flex \
g++-multilib gcc-multilib git-core gnupg gperf \
lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev \
libesd0-dev libncurses5-dev libsdl1.2-dev \
libwxgtk2.8-dev libxml2 libxml2-utils lzop \
pngcrush schedtool \
squashfs-tools xsltproc zip zlib1g-dev
2 - Install JAVA
2.1 Download Java JDK for Linux 64-bit from: http://ghaffarian.net/downloads/Java/JDK/jdk-6u45-linux-x64.bin
2.2 Move jdk-6u45-linux-x64.bin to your home directory
2.3 Remove any other java packages from system:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
2.4 Install Java JDK:
Code:
sudo mkdir -p /opt/java/64/
sudo cp jdk-6u45-linux-x64.bin /opt/java/64
sudo su -
cd /opt/java/64
chmod +x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin
exit
2.5 Add JDK PATH to .bashrc:
Code:
gedit ~/.bashrc
Add these lines to .bashrc:
Code:
# Java PATHs
export JAVA_HOME=/opt/java/64/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
3 - Install Android SDK
3.1 Setup directories:
Code:
cd ~
mkdir android
cd android
mkdir sdk
3.2 Download Android SDK from http://developer.android.com/sdk/index.html
3.3 Extract SDK contents to ~/android/sdk
3.4 Add Android SDK Path:
Code:
gedit ~/.bashrc
Add these lines to .bashrc:
Code:
#Android PATH
export PATH=$PATH:~/android/sdk
export PATH=$PATH:~/android/sdk/platform-tools
export PATH=$PATH:~/android/sdk/tools
4 - Install Repository
4.1 Download Repo:
Code:
mkdir -p ~/bin
mkdir -p ~/android/system
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
4.2 Add Repo Path:
Code:
gedit ~/.bashrc
Add these lines to .bashrc:
Code:
export PATH=$PATH:~/bin
4.3 Close and open new terminal.
4.4 Initialize Repository:
Code:
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b stable/cm-11.0
5 - Download the specific code for Vibrant SGH-T959
Code:
mkdir ~/android/system/.repo/local_manifests && touch ~/android/system/.repo/local_manifests/vibrantmtd.xml && gedit ~/android/system/.repo/local_manifests/vibrantmtd.xml
Copy the following path and save the file:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/samsung/vibrantmtd" name="CyanogenMod/android_device_samsung_vibrantmtd" remote="github" revision="cm-10.2" />
<project path="device/samsung/aries-common" name="CyanogenMod/android_device_samsung_aries-common" remote="github" revision="cm-11.0" />
<project path="packages/apps/SamsungServiceMode" name="CyanogenMod/android_packages_apps_SamsungServiceMode" remote="github" revision="cm-11.0" />
<project path="kernel/samsung/aries" name="CyanogenMod/android_kernel_samsung_aries" remote="github" revision="cm-11.0" />
<project path="hardware/samsung" name="CyanogenMod/android_hardware_samsung" remote="github" revision="cm-11.0" />
</manifest>
Note: For specific code for vibrant, aries and samsung does not use the stable branch to have the latest fixes available
6 - Sync. the Repository
Code:
cd ~/android/system/
repo sync
NOTE: When finished, run the repo sync command again to be sure there are no errors.
7 - Edit a one file from vibrant.
When you finished the download the Repository you need edit a vibrant file or it will not compile.
Code:
gedit ~/android/system/device/samsung/vibrantmtd/recovery/recovery_keys.c
Delete all code and replace it and save the file.
Replace with this code:
Code:
#include <linux/input.h>
#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"
int device_handle_key(int key_code, int visible) {
if (visible) {
switch (key_code) {
case KEY_VOLUMEDOWN:
case 217: // SEARCH
return HIGHLIGHT_DOWN;
case KEY_VOLUMEUP:
case 139: // MENU
return HIGHLIGHT_UP;
case KEY_POWER:
case 158: // HOME
return SELECT_ITEM;
case 102: // BACK
return GO_BACK;
default:
return NO_ACTION;
}
}
return NO_ACTION;
}
8 - Extract files from phone:
NOTE: You need to have cm10.1 (or cm11 compile with this guide) installed on the phone and the phone has to be in usb debugging.
Connect phone to pc and in terminal type:
Code:
adb root
cd ~/android/system/device/samsung/vibrantmtd/
./extract-files.sh
9 - Download Extra Files
Code:
~/android/system/vendor/cm/get-prebuilts
10 - Building Android
Code:
cd ~/android/system
. build/envsetup.sh && brunch vibrantmtd
11 - Install on Phone
11.1 Copy your .zip file from ~/android/system/out/target/product/vibrantmtd/cm-11-XXXXXXXXX-UNOFFICIAL-vibrantmtd.zip to the root of the SD card.
11.2 Optional: Download Google Apps for KitKat from http://goo.im/gapps and place it on the root of the SD card.
11.3 Flash both of these .zip files from recovery.
Note: I put this guide in general because I do not have the necessary permission to put in the development area. If any Administrator can put in the dev. area would be helpful.
Huge thanks. This will come in handy. :good:
@stinga11 - One question. I've read compiling with Linaro yields better results for performance. Are there any special steps in order to compile CM for Vibrant with that?
nirogu325 said:
@stinga11 - One question. I've read compiling with Linaro yields better results for performance. Are there any special steps in order to compile CM for Vibrant with that?
Click to expand...
Click to collapse
Yes with Linaro you have a better performance, but I read that is a bit unstable. Honestly, I do not know how to compile this rom with Linaro if you know how to do and want to contribute, I will gladly I edit the main post and add the steps on how to do.
stinga11 said:
Yes with Linaro you have a better performance, but I read that is a bit unstable. Honestly, I do not know how to compile this rom with Linaro if you know how to do and want to contribute, I will gladly I edit the main post and add the steps on how to do.
Click to expand...
Click to collapse
So far I think @sada23 is the only one left in our community with that knowledge. It would help tremendously in case @sada23 wants to lend someone the torch eventually.
I'd like to take on that challenge of compiling CM11 with Linaro. As a matter of fact, I was looking for a way to compile CM for the vibrant so I could test compiling with Linaro 4.9.2 and maybe add some optimizations, so thank you for this!
Does anyone know any downsides to using the cm-10.2 vibrant device branch? And I'd like to get a consensus for this, I already have an S4 ROM based on the CM stable branch, compiled with SaberMod and a couple of cherry-picks to add on to CM11. How many people would want this?
Synergy510 said:
Does anyone know any downsides to using the cm-10.2 vibrant device branch?
Click to expand...
Click to collapse
The official CM11 releases for galaxy s, galaxy s B, and captivate(They share most of the code with the vibrant.) do not have received any changes from 10.2 branch. In other words, for these device also used the 10.2 branch.:angel:
stinga11 said:
The official CM11 releases for galaxy s, galaxy s B, and captivate(They share most of the code with the vibrant.) do not have received any changes from 10.2 branch. In other words, for these device also used the 10.2 branch.:angel:
Click to expand...
Click to collapse
Cool, thanks for the info. I'm downloading the source right now and I'll try to have a build up as soon as I can. It'll be compiled with some combination of Linaro toolchains. Does anyone know if sada's cm11 is built with this guide (just wanna know because I'm too lazy to install cm-10.1)
Synergy510 said:
Cool, thanks for the info. I'm downloading the source right now and I'll try to have a build up as soon as I can. It'll be compiled with some combination of Linaro toolchains. Does anyone know if sada's cm11 is built with this guide (just wanna know because I'm too lazy to install cm-10.1)
Click to expand...
Click to collapse
No, I do not think sada23 has used this guide to create his ROM, since it was created long before I made this guide. If you can compile with Linaro maybe you want to share the guide on how to do/
stinga11 said:
No, I do not think sada23 has used this guide to create his ROM, since it was created long before I made this guide. If you can compile with Linaro maybe you want to share the guide on how to do/
Click to expand...
Click to collapse
I'll see if I can. I know a fairly simple, a little on the hack-ish side, way to declare which toolchain you want to use.
How come the vibrant has to be running cm-10.1? Which part of the build process dictates that we have to do that? Because we are using the 10.2 branch? If nothing has change with the other Galaxy S variants in their device githubs, then I don't think it should matter which CM the vibrant currently runs since there is no dependency on cm10.1 in extract-files.sh
Synergy510 said:
I'll see if I can. I know a fairly simple, a little on the hack-ish side, way to declare which toolchain you want to use.
How come the vibrant has to be running cm-10.1? Which part of the build process dictates that we have to do that? Because we are using the 10.2 branch? If nothing has change with the other Galaxy S variants in their device githubs, then I don't think it should matter which CM the vibrant currently runs since there is no dependency on cm10.1 in extract-files.sh
Click to expand...
Click to collapse
For the vibrant never was released an official CM-10.2. The coder created the branch but any reason never was released. Is necessary that you have installed an official CM for extract the vibrant drivers. I use CM-10.1 because is the last official release for the vibrant.
stinga11 said:
For the vibrant never was released an official CM-10.2. The coder created the branch but any reason never was released. Is necessary that you have installed an official CM for extract the vibrant drivers. I use CM-10.1 because is the last official release for the vibrant.
Click to expand...
Click to collapse
Gotcha, that makes sense. I've downloaded the source and I'll make some changes to certain things. Maybe after I get a build going I'll make another post on how to build with another toolchain
How to use another toolchain
Okay, I'm going to explain how to compile with different toolchains, namely SaberMod or Linaro. This may not be *the exact way*, but this is what works for me
1) First locate the toolchain you want to use and find it's github. Here are two examples:
Linaro provided by JustArchi: https://github.com/archidroid/toolchain
SaberMod provided by kykdev (optimized for arm cortex architecture): https://github.com/kykdev?tab=repositories
Two notes about toolchains:arm-eabi == kernel toolchain
arm-linux-androideabi == ROM toolchain
2) Once you've located it, add it to your roomservice.xml (or in the case of this thread vibrantmtd.xml)
When you add something to your roomservice/vibrant.xml, repo sync will gather these files from github for you and place there where you specify
A generic example of adding the toolchain:
from: https://github.com/SOME_USER/THEIR_REPO
Code:
<project name="SOME_USER/THEIR_REPO" path="prebuilts/gcc/linux-x86/arm/arm-eabi-SOME_SPECIAL_NAME" remote="github" revision= "BRANCH" />
By SOME_SPECIAL_NAME, I mean name it what it is. Linaro-4.9.2 or SaberMod-4.8.4 etc etc
By BRANCH, the user's THEIR_REPO might contain both the arm-eabi and arm-linux-androideabi
Example 1:
Looking at kykdev's github, each repo is it's own toolchain, so there is no BRANCH you have to declare. So do this:
Code:
<project name="kykdev/sabermod-arm-cortex_a15-eabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-eabi-SM-Combo" remote="github" revision="master" />
<project name="kykdev/sabermod-arm-cortex_a15-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-SM-Combo" remote="github" revision="master" />
Notice how I grab what I needed, see the "project name" and see where they go:
path="prebuilts/gcc/linux-x86/arm/arm-eabi-SM-Combo"
path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-SM-Combo"The underlined part must stay as it is, but the bold part is the SOME_SPECIAL_NAME. This is going to come handy later when you tell the ROM which toolchain to use. This is why I use "4.8" in both the ROM and kernel toolchains although the kernel toolchain is labeled as 4.9. Since there are no branches here, you declare BRANCH as "master" or whatever the default branch name is on the github repo
Example 2:
Lookin at JustArchi's repo, everything is listed under his "Toolchain" repo.
Code:
<project name="ArchiDroid/Toolchain" path="prebuilts/gcc/linux-x86/arm/arm-eabi-Linaro-4.9.2" remote="github" revision="linaro-4.9-arm-eabi" />
<project name="ArchiDroid/Toolchain" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-Linaro-4.9.2" remote="github" revision="linaro-4.9-arm-linux-androideabi" />
Nothing the "project name" is the same, so this means we need to specify a BRANCH to get the proper toolchain
revision="linaro-4.9-arm-eabi"
revision="linaro-4.9-arm-linux-androideabi"
Notice! The "path" stays the same with same SOME_SPECIAL_NAME
path="prebuilts/gcc/linux-x86/arm/arm-eabi-Linaro-4.9.2"
path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-Linaro-4.9.2"
Now when you repo sync, your toolchains will be in your build environment
3) How to tell the build which toolchain to use
Locate the file: ~/android/system/core/combo/TARGET_linux-arm.mk
In this find the line that says:
Code:
TARGET_GCC_VERSION :=
After the " := " You're going to remove what was already there, probably "4.7" and change it to your SOME_SPECIAL_NAME, so:
Code:
TARGET_GCC_VERSION := SOME_SPECIAL_NAME
example:
TARGET_GCC_VERSION := Linaro-4.9.2
4) If you already made a build with the default toolchain
You should not build immediately after following these steps because you have pre-compiled packages in your build directory and you MUST clean it out whenever you switch toolchains so everything is compiled with the same toolchain. So you must use these commands after changing the toolchain and before making the build:
Code:
cd ~/android/system/
rm -rf ~/.ccache
make clean
make clobber
That's it! You can now brunch vibrantmtd and watch it compile!
Notes
You can mix and match toolchains, but your mileage may vary
Not every toolchain is guaranteed to work. You MAY run into some errors
Try to keep your ROM and kernel toolchains to the same type of toolchain (Linaro, SaberMod, Google)
I think I touched on everything I do with this post, if I missed something or if it doesn't work for you, let me know!
Synergy510 said:
Okay, I'm going to explain how to compile with different toolchains, namely SaberMod or Linaro.
Click to expand...
Click to collapse
Amazing man, thanks a lot for this guide when I have time I will try.
nirogu325 said:
@stinga11 - One question. I've read compiling with Linaro yields better results for performance. Are there any special steps in order to compile CM for Vibrant with that?
Click to expand...
Click to collapse
Now finally there is a guide on how to compile with the Linaro toolchain by Synergy510
http://forum.xda-developers.com/showpost.php?p=55416425&postcount=13
Amazing info, thanks!
hey i followed your guide and zip is ready but when i flashed it through cwm i got this error while flashing
Code:
set_metadata_recursive
here is my device tree https://github.com/Grace5921/device_samsung_kyleve
Well I've been getting a lot of questions on how users can take development into their own hands and start compiling your very own builds of your favorite ROM's. Because of this I have decided to write up a guide that will explain all the steps you need to take to compile a ROM.
NOTE: if your problem is that you cant get your build booting but you already know how to compile ROM's then skip to step 5
Step 1: Install A linux distribution
you will need to be on a linux distribution such as Ubuntu to compile android from source. You can do it on OSX as well but I don't have instructions for that because I haven't done it. So if you aren't on a linux distribution that will be the first thing you need to do. there's thousands of guides online on how to do that so go do that
Step 2: set up the build environment
you will need a lot of packages installed to successfully compile without any errors which ill list here
if you're using ubuntu or another debian based distro then type this in your terminal
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 openjdk-7-jdk 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 yasm
you probably dont need all of those installed but its better to have one extra package then one missing package.
now that you have all the packages needed. its time to set up repo so you are able to sync the sources. type this into your terminal
Code:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Step 3: getting the ROM sources
time to play the waiting game! For this part of the guide I will explain how to fetch cyanogenmod's sources.
in your home folder, make a folder called cyanogenmod. Now open the folder and open a terminal inside of it.
inside the terminal type
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
now you might get an error that says something like "Error, tell me who you are!" so you are going to want to type
Code:
git config --global user.email [email protected]
then
Code:
git config --global user.name YourGithubName
you can use fake credentials but i recommend making a git and using your real information.
now run the command once more
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
now it will properly set up the repository. After that type in
Code:
repo sync
and wait for all the sources to download. It will probably take a few hours so I suggest you go do something else and come back later.
If you get any errors while syncing type
Code:
repo sync -j1 -f
Step 4: set up Zenfone specific sources
now that you have cyanogenmods sources downloaded you will need to add zenfones sources.
you can find the zenfone sources here:
https://github.com/CM-zenfone2
for now go into the .repo folder inside your cyanogenmod folder. you may have to enable "show hidden folders" in your file managers settings to see it. inside of this folder create another one called local_manifests . inside this folder create a file called local_manifest.xml .
now open that xml file with a text editor and paste this into it
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<!-- REMOVE AOSP PROJECTS -->
<remove-project name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" />
<remove-project name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" />
<remove-project name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" />
<remove-project name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" />
<remove-project name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" />
<remove-project name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" />
<remove-project name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" />
<remove-project name="platform/hardware/intel/img/libdrm" path="hardware/intel/img/libdrm" />
<remove-project name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" />
<!-- ADD CM-ZENFONE2 PROJECTS -->
<project name="CM-zenfone2/android_hardware_intel_common_libmix" path="hardware/intel/common/libmix" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_common_libstagefrighthw" path="hardware/intel/common/libstagefrighthw" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_common_libva" path="hardware/intel/common/libva" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_common_omx-components" path="hardware/intel/common/omx-components" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_common_utils" path="hardware/intel/common/utils" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_common_wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_img_hwcomposer" path="hardware/intel/img/hwcomposer" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_img_libdrm" path="hardware/intel/img/libdrm" remote="github" />
<project name="CM-zenfone2/android_hardware_intel_img_psb_video" path="hardware/intel/img/psb_video" remote="github" />
<!-- CM-ZENFONE2 DEVICE PROJECTS -->
<project name="CM-zenfone2/android_device_asus_Z00A" path="device/asus/Z00A" remote="github" />
<project name="CM-zenfone2/android_device_asus_Z008" path="device/asus/Z008" remote="github" />
<project name="CM-zenfone2/android_device_asus_mofd-common" path="device/asus/mofd-common" remote="github" />
<project name="CM-zenfone2/android_kernel_asus_moorefield" path="kernel/asus/moorefield" remote="github" />
<project name="CM-zenfone2/proprietary_vendor_asus" path="vendor/asus" remote="github" />
</manifest>
now save and close that xml file. go back to your terminal in the cyanogenmod folder and run
Code:
repo sync -j1 --force-sync
this will now pull in the zenfone files you need.
Zenfone sources are now synced into the official CM github so these steps aren't needed. the only extra thing to do now is:
in your vendor folder
Code:
git clone https://github.com/TheMuppets/proprietary_vendor_asus.git -b cm-12.1
then rename the folder to "asus"
Step 5: adding device specific commits
this is probably the step that most people don't do and therefore get builds that won't boot. You need to add 4 A bunch of very important commits to get your ROM properly booting.
commit 1
go inside of your external/tinyalsa folder and open a terminal then type in:
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_external_tinyalsa refs/changes/43/103343/1 && git cherry-pick FETCH_HEAD
now close the terminal and go to the folder hardware/intel/img/hwcomposer and open a terminal. type this in:
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_hardware_intel_img_hwcomposer refs/changes/82/117182/1 && git cherry-pick FETCH_HEAD
and
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_hardware_intel_img_hwcomposer refs/changes/83/117183/1 && git cherry-pick FETCH_HEAD
open up hardware/intel/img/libdrm and paste this in the terminal:
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_hardware_intel_img_libdrm refs/changes/01/117201/1 && git cherry-pick FETCH_HEAD
put this in hardware/intel/common/libmix
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_hardware_intel_common_libmix refs/changes/91/117191/1 && git cherry-pick FETCH_HEAD
now go into the folder hardware/ril. Open the terminal and type:
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_hardware_ril refs/changes/25/102725/2 && git cherry-pick FETCH_HEAD
now open the frameworks/native folder and type in the terminal:
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_frameworks_native refs/changes/36/108636/2 && git cherry-pick FETCH_HEAD
these are the 4 commits that those commands are adding for anybody interested:
https://github.com/TeamEOS/system_core/commit/870fff040f14f4a659807d74419300ef0f223a30
https://github.com/TeamEOS/system_core/commit/7fb271f606394692cbf303f3e7d4889e4ff04369
https://github.com/TeamEOS/hardware_ril/commit/bb9b4e567e5bba35ae380ee0a56833ba385af654
https://github.com/TeamEOS/external_tinyalsa/commit/3bba475d5ad4db3f813ff121ff3d195043307f46
NOTE:New commits for the quick charging UI have been added that you need to add. check post 3 for them
now we have set everything we need properly to build the rom!
Step 6: Start the build
finally, time to start building! open a terminal in the cyanogenmod folder and type
Code:
. build/envsetup.sh
now type
Code:
brunch Z00A
for Z00A or
Code:
brunch Z008
for Z008.
this will also take a while depending on your computers specs (around 4 hours).
When its done you will find the zip in the folder out/target/product/Z00A (or Z008).
you can now put this zip on your device and flash away
to update sources and make a new build you can do repo sync and step 5 and 6 again
I hope this guide can help motivate people interested in building to give it a go as well as help grow the community even more then it already is! feel free to post any questions you have here and I will help to the best of my ability.
reserved
I will expand on this more but to build a rom other then cyanogenmod, (for example EOS) you would go into the device/asus/Z00A folder and change the cm.mk file to eos.mk as well as everything inside that file that refers to cyanogenmod to eos. most ROM's you do something similar to that but instead of changing to eos you change it to the rom you are building. Refer to other device sources of the ROM you want to build as a guide to what to do
For quick charging UI
paste this command into your frameworks/native folder
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_frameworks_native refs/changes/64/109364/3 && git cherry-pick FETCH_HEAD
then paste this into your frameworks/base folder
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_frameworks_base refs/changes/66/109366/7 && git cherry-pick FETCH_HEAD
and lastly paste this into system/core
Code:
git fetch http://review.cyanogenmod.org/CyanogenMod/android_system_core refs/changes/65/109365/6 && git cherry-pick FETCH_HEAD
Thanks bro, I started this but I'm very noob xD
Hebelm16 said:
Thanks bro, I started this but I'm very noob xD
Enviado desde mi ASUS_Z00AD mediante Tapatalk
Click to expand...
Click to collapse
Nice! No worries we all start somewhere
Great bro thanks
Good Job Bro Thanks
Niropa said:
Nice! No worries we all start somewhere
Click to expand...
Click to collapse
I swear I was looking for this type of teacher from a very very long time..
And when you said it will take a long time, how much is the data to be downloaded? Actually the speed differs here so I will estimate myself how much time it will take
S#@DY said:
I swear I was looking for this type of teacher from a very very long time..
And when you said it will take a long time, how much is the data to be downloaded? Actually the speed differs here so I will estimate myself how much time it will take
Click to expand...
Click to collapse
Generally its changing but i downloaded 40gb for blisspop know i downloading euphoria os repo we will see the size
S#@DY said:
I swear I was looking for this type of teacher from a very very long time..
And when you said it will take a long time, how much is the data to be downloaded? Actually the speed differs here so I will estimate myself how much time it will take
Click to expand...
Click to collapse
It will be around 50gb so compare that to your internet speed
Niropa said:
It will be around 50gb so compare that to your internet speed
Click to expand...
Click to collapse
That would take 2 days
If I have any free time next month am going to try to learn all this rom compiling etc and build a temasek based rom.
GGL-Daz said:
If I have any free time next month am going to try to learn all this rom compiling etc and build a temasek based rom.
Click to expand...
Click to collapse
Great to hear! Temasek is actually very easy, you would follow this guide exactly but instead of syncing cyanogenmods sources you would sync temaseks which you can find on his github
Sorry @Niropa how add source? (step 4)
Hebelm16 said:
Sorry @Niropa how add source? (step 4)
Click to expand...
Click to collapse
what are you having trouble with?
also there might be an issue with the steps I showed to cherry-pick the commits so im going to update it right now
Code:
. build/envsetup.sh
lunch <rom name>_<device model>-userdebug
make bacon -j8
This works as well and eats your cpu little less compared to brunch. You could add in the OP @Niropa
Vatsal said:
Code:
. build/envsetup.sh
lunch <rom name>_<device model>-userdebug
make bacon -j8
This works as well and eats your cpu little less compared to brunch. You could add in the OP @Niropa
Click to expand...
Click to collapse
right because brunch uses mka instead of make. mka uses all cores/threads available so your build will finish faster
hi noob here..
i have following steps in the first post.
however, i got error like below:
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp: In function 'int mapBatteryStatusString(const char*)':
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp:26:12: error: 'HEALTHD_MAP_CONTINUE_SEARCH' was not declared in this scope
return HEALTHD_MAP_CONTINUE_SEARCH;
^
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp: In function 'int mapChargeRateString(const char*)':
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp:32:16: error: 'BATTERY_CHARGE_RATE_FAST_CHARGING' is not a member of 'android'
return android::BATTERY_CHARGE_RATE_FAST_CHARGING;
^
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp:34:16: error: 'BATTERY_CHARGE_RATE_UNKNOWN' is not a member of 'android'
return android::BATTERY_CHARGE_RATE_UNKNOWN;
^
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp: In function 'void healthd_board_init(healthd_config*)':
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp:39:13: error: 'struct healthd_config' has no member named 'batteryChargeRatePath'
config->batteryChargeRatePath = "/sys/class/power_supply/battery/status";
^
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp:40:13: error: 'struct healthd_config' has no member named 'mapBatteryStatusString'
config->mapBatteryStatusString = mapBatteryStatusString;
^
device/asus/mofd-common/libhealthd/healthd_board_mofd_v1.cpp:41:13: error: 'struct healthd_config' has no member named 'mapChargeRateString'
config->mapChargeRateString = mapChargeRateString;
^
make: *** [/home/myusuf1810/cyanogenmod/out/target/product/Z00A/obj/STATIC_LIBRARIES/libhealthd.mofd_v1_intermediates/healthd_board_mofd_v1.o] Error 1
make: *** Waiting for unfinished jobs....
#### make failed to build some targets (03:29 (mm:ss)) ####
Click to expand...
Click to collapse
i retried the whole steps on new folder, get the same result.
is it the code or my mistake for missing some steps?
ucupsz said:
hi noob here..
i have following steps in the first post.
however, i got error like below:
i retried the whole steps on new folder, get the same result.
is it the code or my mistake for missing some steps?
Click to expand...
Click to collapse
hey! no worries you did nothing wrong. because of the new quick charging UI the cm zenfone team added theres a few new things you have to cherry-pick.
paste this command into your frameworks/native folder
Code:
git fetch http://review.teameos.org/frameworks_native refs/changes/14/914/1 && git cherry-pick FETCH_HEAD
then paste this into your frameworks/base folder
Code:
git fetch http://review.teameos.org/frameworks_base refs/changes/16/916/1 && git cherry-pick FETCH_HEAD
and lastly paste this into system/core
Code:
git fetch http://review.teameos.org/system_core refs/changes/15/915/1 && git cherry-pick FETCH_HEAD
wow!! thanks so much Niropa! it works!
took 3 hrs on my rig )
so, i try to go to review.teameos.org and searching for libhealthd which is shown in error message. and get to the changes you shown. (914-916).
however, i'm a bit lost on how to get the link "refs/changes/14/914/1" "refs/changes/15/915/1" and "refs/changes/16/916/1" to be inputted to the command line.
from the searching, what i found was numbering 914, 915 and 916.
so if i had similar error (some update on the code), can you show me how i can get to "refs/changes......"
LineageOS is in an official state, so that's for the ones with no patience, like me. I want my nightlies!! So DIY!!
This is not about flashing. Only how to build a ROM in an Ubuntu (meanwhile Debian 8) environment! So I have nothing to do with what you do with the finished Zip-file.
I am not responsible for your phone or your computer! Everything you read here resulting in taking action is at your own risk!
All credits go to all devs and supporters here on XDA, CyanogenMod / LineageOS for all their work they provide for free on github. We just take thankful the benefit!! Mainly LuK1337 provided the best hints and informations!
## These sites will help you:
http://wiki.lineageos.org/titan_build.html
http://web.archive.org/web/20160722172103/http://wiki.cyanogenmod.org/w/Envsetup_help
http://web.archive.org/web/20160421170720/http://wiki.cyanogenmod.org/w/Build_for_titan
http://gojira.tokyo/?building_cyanogenmod_14_from_source
http://source.android.com/source/initializing.html
## GIT and repos
https://forum.xda-developers.com/showthread.php?t=2329228
## SET UP THE ENVIRONMENT
## Install (in VMware Player or Virtualbox?) 64-bit-Ubuntu 16.04.1 LTS / 8GB RAM / 100GB HDD
## All following is done in a terminal
## These are the packets you need (if you use debian some will fail (e.g. JAVA) -take them out of the list manually):
Code:
sudo apt-get install android-tools-adb automake bc bison build-essential bzip2 ccache curl dpkg-dev flex git gnupg gperf libbz2-1.0 libesd0-dev libghc-bzlib-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop make maven openjdk-8-jdk pngcrush python-networkx schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev lib32readline6 lib32readline6-dev
## To install JAVA 8 in Debian:
Code:
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer
## Add all needed paths and the ccache command (following two lines) to the end of ~/.bashrc
## copy the whole box to your terminal and the lines will be added...
Code:
echo "export PATH=~/bin:~/android/lineageos/toolchain:~/android/lineageos/external/v8/build/toolchain:~/android/lineageos/prebuilts/sdk/tools:$PATH
export USE_CCACHE=1" >> ~/.bashrc
## Maybe here is a good point to restart the Ubuntu machine once...
## I'm not sure if necessary you need an account at https://github.com but it complains when not...
Code:
git config --global user.email "your-GIT-REG-email"
git config --global user.name "your-GIT-REG-username"
Code:
mkdir -p ~/bin
mkdir -p ~/android/lineageos/
mkdir -p ~/android/lineageos/.repo/local_manifests
## get the repo command
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
## The right git-repos to sync are in: ~/android/lineageos/.repo/local_manifests/roomservice.xml
## copy the whole box into the terminal and the roomservice.xml will be written:
Code:
echo "<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="ssh://[email protected]" name="bitbucket" />
<remote fetch="ssh://[email protected]" name="gitlab" />
<remote fetch="git://codeaurora.org/" name="caf" review="codeaurora.org" sync-c="true" />
<project name="LineageOS/android_device_motorola_titan" path="device/motorola/titan" remote="github" />
<project name="LineageOS/android_device_motorola_thea" path="device/motorola/thea" remote="github" />
<project name="LineageOS/android_device_motorola_msm8226-common" path="device/motorola/msm8226-common" remote="github" />
<project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="LineageOS/android_kernel_motorola_msm8226" path="kernel/motorola/msm8226" remote="github" />
<project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" />
<project name="TheMuppets/proprietary_vendor_motorola" path="vendor/motorola" remote="github" />
<project name="TheMuppets/proprietary_vendor_qcom_binaries" path="vendor/qcom/binaries" remote="github" />
<project name="TheMuppets/proprietary_vendor_asus" path="vendor/asus" remote="github" />
</manifest>" > ~/android/lineageos/.repo/local_manifests/roomservice.xml
## Get the github to the machine
Code:
repo init -u git://github.com/lineageos/android.git -b cm-14.1
## additional folders to put the repos and binaries for building
## O.K. lets start the first try
Code:
cd ~/android/lineageos/
source build/envsetup.sh
Code:
repo sync
## Wait VERY LONG (really hours) and IF STUCKS, press "ctrl+C" and once more "repo sync" again.
## Then Extract proprietary blobs from the phone
## the device must be connected via USB cable (adb has to be functional) and go to the TITAN directory:
Code:
cd ~/android/lineageos/device/motorola/titan
## and
Code:
./extract-files.sh
## and maybe (only once before the first time of building) configure the CCACHE, which makes compiling much faster:
Code:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
##WHEN ALL IS DONE
## we now can forget all steps before! ...Until we run in trouble - then look at the bottom or restart from scratch.
## In my experience now it shows, that the compiling processes recompiles and replaces "new synced packets" in the out-directory and leave the untouched untouched. So we can (nearly) always restart a broken build process... maybe the devs will VETO this. Some delete the whole out-directory every time - I think you can easily start over
## However, what we should do everytime before we start building is:
Code:
cd ~/android/lineageos/
source build/envsetup.sh
repo sync
## OKAY, lets build.... Nooooooo! Not yet!
## The most Important question now:
## "Do you want to have a ROOTED phone?" If yes, then you have to
Code:
export WITH_SU=true
## If you don't want root then just start with:
Code:
brunch titan
## Now you can wait again for hours and hopefully got finished
## ~/android/lineageos/out/target/product/titan/lineage-14.1-2017****-UNOFFICIAL-titan.zip
------------------------------------------------------------------------
------------------------------------------------------------------------
## TROUBLE with compilation stops / stucks with error:
## JACK-SERVER error:
## reinstall the Jack Server
Code:
cd ~/android/lineageos/prebuilts/sdk/tools
jack-admin kill-server
jack-admin uninstall-server
jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
## sometimes a permission problem:
Code:
chmod 700 ~/.jack-server
find ~/.jack-server -type f -print0 | xargs -0 chmod 600
chmod 664 ~/.jack-settings
##Also helpful if Java stops compiling is to limit the usage of RAM:
Code:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
##NINJA error:
## increase RAM of VM, or you cant put
Code:
export USE_NINJA=false
command to the .bashrc
## APPS/org.cyanogenmod.platform-res_intermediates error:
Code:
javac: file not found: ~android/lineageos/out/target/common/obj/APPS/org.cyanogenmod.platform-res_intermediates/src/cyanogenmod/platform/Manifest.java
Usage: javac <options> <source files>
use -help for a list of possible options
ninja: build stopped: subcommand failed.
build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory '~/android/lineageos'
#### make failed to build some targets (25:19 (mm:ss)) ####
When this happens, give a:
Code:
mka org.cyanogenmod.platform-res
This also works for most other Errors, which stop the process... Find the line with "****_intermediate" and give the "mka ****" WITHOUT the "_intermediate".
After compiling of the single package is finished - once more:
Code:
brunch titan
## New one: *** This repo is now deprecated. Move your blobs to your device's vendor repo..
Code:
find: "~/android/lineageos/out/target/common/obj/SHARED_LIBRARIES/libwifi-hal-mock_intermediates": Datei oder Verzeichnis nicht gefunden
build/core/package_internal.mk:143: Empty argument supplied to find-subdir-assets
./vendor/qcom/binaries/Android.mk:1: *** This repo is now deprecated. Move your blobs to your device's vendor repo..
The solution is given here by mirkosrc:
Code:
~/android/lineageos$ mv vendor/qcom/binaries/Android.mk vendor/qcom/binaries/Android.mk.bak
Now we have the proper solution given by kessaras in post #37 (thanks a lot!!):
the solution is not to rename the .mk or even remove that repo since we ignore it by renaming the .mk.
The proper solution is to edit the .mk and remove the 1st line that redirects to an error on purpose because its depricated (old).
This way, IF the .mk is needed during the build, it will get called.
If its not needed , then the compiler will just not use it.
At least thats my point of view here. We dont just remove things by renaming. We add them properly in case they r needed. If they are not needed then they wont be used.
Click to expand...
Click to collapse
## LAST OPTION:
When nothing works at all anymore you can delete the whole content of the out-folder:
Code:
rm -rf ~/android/lineageos/out/*
But then the first compiling last very long again...
## If the DISK runs full,
look into android/lineageos/out/target/product/titan/obj/PACKAGING/target_files_intermediates and delete the files...
## repo sync crashes with error:
Code:
repo sync -j1 -f --force-sync
------------------------------------------------------------------------
Thank you for this guide. I'll try to build CM14.1 here
Danilo-Sanchez said:
Thank you for this guide. I'll try to build CM14.1 here
Click to expand...
Click to collapse
Ah, great keep me informed, so I can make it better. Try myself from the scratch and have found some issues in the chronological order... is getting better. So look out for changes
mankokoma said:
Ah, great keep me informed, so I can make it better. Try myself from the scratch and have found some issues in the chronological order... is getting better. So look out for changes
Click to expand...
Click to collapse
Ok. As soon as I try I'll let you know
For the Ninja error:
export USE_NINJA=false
Has been asked for RAM usage. Battery life is as CM always have been - not the best, could be worse, so what?
mankokoma said:
Has been asked for RAM usage. Battery life is as CM always have been - not the best, could be worse, so what?
Click to expand...
Click to collapse
Thank you
It's almost the same RAM usage as CM13.
i will also try to build the rom from ur guide........really thanks.......so much for the guide
:laugh:Thank you for share!!!:good:
@mankokoma Can I extract proprietary files even if I'm not using CM14.1?
Danilo-Sanchez said:
@mankokoma Can I extract proprietary files even if I'm not using CM14.1?
Click to expand...
Click to collapse
Why not? As far as I can follow the scripts, the files will be extracted (in our case) to ~/android/lineageos/vendor/motorola/titan/proprietary/... (and maybe also to /android/lineageos/vendor/motorola/msm8226-common/proprietary...) I'm not sure if they are always the same for the different Android Versions, but I assume: Yes.
I put some more order in the guide and cleaned the chaos in case there is still interest in building LineageOS yourself. In fact preparing of the environment and the first setup and building of the ZIP lasts really (annoying) long but the following building processes are done within ONE and a HALF hours. So I enjoy immediately the last build when there has something good changed in the Repos: https://www.cmxlog.com/14.1/titan/
Have a lot of fun!
mankokoma said:
I put some more order in the guide and cleaned the chaos in case there is still interest in building LineageOS yourself. In fact preparing of the environment and the first setup and building of the ZIP lasts really (annoying) long but the following building processes are done within ONE and a HALF hours. So I enjoy immediately the last build when there has something good changed in the Repos: https://www.cmxlog.com/14.1/titan/
Have a lot of fun!
Click to expand...
Click to collapse
Did you managed to build Lineage OS 13.0?
I've tried to build Lineage OS 13.0 but unfortunately it didn't work.
Danilo-Sanchez said:
Did you managed to build Lineage OS 13.0?
I've tried to build Lineage OS 13.0 but unfortunately it didn't work.
Click to expand...
Click to collapse
No, I didn't. "Shoot from the hip": Downgrade Java to 1.7 first. Maybe it's easier to building up Ubuntu 14.x environment as I don't know about gcc or other libs-things for CM13
mankokoma said:
No, I didn't. "Shoot from the hip": Downgrade Java to 1.7 first. Maybe it's easier to building up Ubuntu 14.x environment as I don't know about gcc or other libs-things for CM13
Click to expand...
Click to collapse
Did you managed to include OMS support in Lineage 14.1?
Danilo-Sanchez said:
Did you managed to include OMS support in Lineage 14.1?
Click to expand...
Click to collapse
No, didn't have any efforts, though a dark notification panel would be nice.
I just take, what comes from the "normal" repositories.
@mankokoma any idea?
Makefile:795: *** multiple target patterns. Stop.
hashroot said:
@mankokoma any idea?
Makefile:795: *** multiple target patterns. Stop.
Click to expand...
Click to collapse
I'm sorry, have only very little time these days... can you provide some more lines before this error occurs?
Are you using Ubuntu or Debian?
I have read something about cleaning the "obj" folder could help
Hi, I am building klte version of CrdroidAndroid ( a LineageOS based ROM) on a ubuntu 16.04 LTS VM.
I am getting the following error. I am not sure what to do here. I have been cleaning the build folder and ccache and trying to build. I keep ending at this error. Any help to solve this issue is greatly appreciated.
----------------------------------
/usr/bin/x86_64-linux-gnu-ld: /home/sadanand/crdroid/android/system/out/host/linux-x86/obj/SHARED_LIBRARIES/libart_intermediates/base/allocator.o: relocation R_X86_64_PC32 against protected symbol `_ZN3art18g_malloc_allocatorE' can not be used when making a shared object
/usr/bin/x86_64-linux-gnu-ld: final link failed: Bad value
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
-----------------------------------------------------------
Thanks
Did you try just "mka libart" to compile only the package with the error?
Usually then it's finishing without errors and you can brunch again.