Related
Building CM9 from Sources for O2X
This Guide is a Step by Step Guide to Build CM9 from official CM9 Sources.
It based on:
aMpeX`s [TUTORIAL] The Step-By-Step guide to build Cyanogenmod7 for the LG Optimus 2X
loganmc10`s [GUIDE] Building CM9 for G2X
I only change to P990, respectively CM9 and add the fix for working Baseband
You need:
- a installed Linux, (I use Ubuntu 11.10, 64 Bit)
- a fast PC or Notebook is recommended
- a fast internet-connections is recommended, (you have to download several GBs)
There are 10 Steps, (8 for building, and 2 optionals ):
1. Installing Build-Packages
2. Install and setup Android-SDK
3. Update path
4. Create directories
5. Install repository and download CM9 Sources
6. Fix for non working camera
6a. Fix the known issues
7. Compiling Unofficial CM9 Build
8. Fix unknown Baseband
9. Extended building
10. Optional changes
Some infos before start:
- read the whole Guide carefully, (possibly you have to read it a few times, untill you understand all steps)
- if you do it exactly as explained, there should be no problems, and the result is a working Unofficial CM9-Build
- don`t login to Linux as root
- if you get problems, feel free to PM me, if you can`t post in Dev-Forum
lets start,
1. Installing Build-Packages
install this for 32 bit and 64 bit:
Terminal:
type:
Code:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jdk pngcrush schedtool
NOTE:
this will install Open-JDK instead of Sun-JDK,
(Sun-JDK isn`t longer official available for Ubuntu)
this will result in an error message at the beginning of compiling,
just ignore it, compiling will working fine.
If you want to install Sun-JDK instead of Open-JDK,
the user tonyp has made a tutorial.
use this line instead of above one
Terminal:
type:
Code:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool
than go to this tutorial
for me the tutorial above doesn`t work (Ubuntu 11.10 64 Bit)
this is working for me:
open terminal:
Code:
sudo add-apt-repository ppa:ferramroberto/java
Code:
sudo apt-get update
Code:
sudo apt-get install sun-java6-jdk sun-java6-plugin
Code:
sudo update-alternatives --config java
(note: you have to press the tab button to be able to press ok, after the last command )
install this for 64 bit also:
Terminal:
type:
Code:
sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.4-multilib g++-4.4-multilib
2. Install and setup Android-SDK
Download newest Android-SDK from here (Linux (i386) )
Extract the Zip-Package to a directory of your choice
Terminal:
navigate to the tools-folder of Android-SDK and type:
Code:
./android
this will launch the AVD-Manager
check repository, select newest repository, and click install packages
3. Update path
go to your Home-Directory, and press CTRL + H to show hidden files,
open .bashrc
and add this:
Code:
export PATH="/home/<yourusername>/<path to the android SDK >/platform-tools/:${PATH}"
export PATH="/home/<yourusername>/bin/:${PATH}"
now you have to log out and in again for the changes take effect.
now check if changes are working,
Terminal:
type:
Code:
adb devices
you should see something like this:
[email protected]:~$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
Click to expand...
Click to collapse
4. Create directories
Terminal:
type:
Code:
mkdir -p ~/bin
Code:
mkdir -p ~/android/system
5. Install repository and download CM9 Sources
Install repository
Terminal:
type:
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Code:
cd ~/android/system/
Code:
repo init -u git://github.com/CyanogenMod/android.git -b ics
enter name, email adress, and choose if you want colors or not
Download CM9 Sources:
Terminal:
type:
Code:
cd ~/android/system/
Code:
repo sync
depending on your internet connection speed this can take several hours
press CTRL + H
go to :
/android/system/.repo/
create:
local_manifest.xml
paste into local_manifest.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/lge/p990" name="CyanogenMod/android_device_lge_p990" />
<project path="device/lge/star-common" name="CyanogenMod/android_device_lge_star-common" />
<project path="vendor/lge" name="Owain94/proprietary_vendor_lge.git" remote="github" />
</manifest>
Terminal:
type:
Code:
cd ~/android/system/
Code:
repo sync
6. Fix for non working camera
download this zip-package MediaFire SolidFiles.
(I don`t make this patch, and don`t know who had made it, if you made it PM me and I`ll give credit for your work)
Extract the Zip-Package to a directory of your choice.
Terminal:
type:
Code:
cd ~/android/system
Code:
patch -p1 <
NOTE: after "<" there has to be a "blank space" (press spacebar)
now drop the first ...diff file from extracted package into terminal, the path will be automatically added,
run the created command,
the same procedure for the other 4 files
6a. Fix the known issues
for broken building:
open:
device/lge/p990/BoardConfig.mk
delete line:
Code:
BOARD_TOUCH_RECOVERY := true
For mobile data fix:
place this file to android/system/system/core/init/ (overwrite excisting file),
7. Compiling Unofficial CM9 Build
Terminal:
type:
Code:
~/android/system/vendor/cm/get-prebuilts
Code:
cd ~/android/system/
Code:
. build/envsetup.sh
Code:
brunch p990
depending on your PC or Notebooks specs compiling will take from 30 minutes to several hours
you can find your Rom-Zip-Package at:
/android/system/out/target/product/p990/
Click to expand...
Click to collapse
8. Fix unknown Baseband
open your Rom-Zip-Package and extract /system/build.prop
(don`t close Archivmanager)
open build.prop:
delete line:
ro.modversion=9-...-UNOFFICIAL-p990
Click to expand...
Click to collapse
(thanks to owain94 for deleting line info)
find line:
ro.cm.version=9-...-UNOFFICIAL-p990
Click to expand...
Click to collapse
replace this line with:
ro.cm.version=9.0.0-RC1-p990-UNOFFICIAL
Click to expand...
Click to collapse
save build.prop
drop modded build.prop into Archivemanager (/system, overwrite existing file)
Now your Unofficial CM9 Build is ready to install
------------------------------------------------------------------------------------------------------------------------------------------------------------
9. Extended building:
I decided to make a optional 9. Step to have a better building experience
(all tipps by owain94, thanks)
This Step is a replacement for Step 7!
Terminal:
type:
Code:
cd ~/android/system && clear && cd vendor/cm && ./get-prebuilts && cd ../../ && clear && . build/envsetup.sh && brunch p990 2> warn.log
this command downloads the cm-prebuilds,
sets up the build environment,
start the building,
exports all warnings and errors to a text file
and cleans the Terminal.
open another Terminal
type:
Code:
cd ~/android/system && clear && tail -f warn.log
this command cleans the terminal,
shows the warnings and errors in this second Terminal,
and keep the focus on it,
first terminal only shows the building process,
so it`s much easier to catch problems while compiling.
If you have connected two screens to your PC or Notebook,
you can also place second Terminal on second screen.
you can find your Rom-Zip-Package also at:
/android/system/out/target/product/p990/
Click to expand...
Click to collapse
10. Optional changes:
Fix for working torch and torch power-widget:
"activate" torch and power-widget:
open:
/android/system/packages/apps/Torch/res/values/config.xml
add or change to:
Code:
<bool name="useCameraInterface">true</bool>
open:
/android/system/packages/apps/Settings/res/values
add or change to:
Code:
<bool name="has_led_flash">true</bool>
add Torch.apk to the package:
open:
/android/system/device/lge/star-common/star.mk
change:
Code:
## LGE stuffs
PRODUCT_PACKAGES += \
LGEServices \
bridgeutil \
libbridges \
libbridge \
libbridge_jni \
secureclockd \
libsecureclock \
screencap \
hwprops \
com.android.future.usb.accessory
to:
Code:
## LGE stuffs
PRODUCT_PACKAGES += \
LGEServices \
bridgeutil \
libbridges \
libbridge \
libbridge_jni \
secureclockd \
libsecureclock \
screencap \
hwprops \
com.android.future.usb.accessory \
Torch
Credits:
aMpeX, loganmc10, pastime1971, owain94, tonyp, temasek
The -j part isn't needed anymore the build script figure it out on their own
and for the vendor files you can ad this to the local manifest
<project name="koush/proprietary_vendor_lge.git" path="vendor/lge" remote="github" />
it is less work we don't want to do to much
also this is maybe a nice addition
Code:
clear && cd vendor/cm && ./get-prebuilts && cd ../../ && clear && . build/envsetup.sh && brunch p990 2> warn.log
i use this build line
clear - make my terminal nice and empty
cd vendor/cm && ./get-prebuilts && cd ../../ - get the cm prebuilts
clear - make the terminal clean again
. build/envsetup.sh - set up the build env
brunch p990 - lunch and bacon for the p990
2> warn.log - exports al the warnings and errors to a text file to keep the terminal clean
i have three screens attached to my pc
on one screen i run the above command (clear && cd vendor/cm && ./get-prebuilts && cd ../../ && clear && . build/envsetup.sh && brunch p990 2> warn.log)
on another screen i run this command (clear && tail -f warn.log) this will print (and keep track of) the warn.log file with all the errors and warnings
and on the other screen i do useless stuff hehe
anyway i really like to use 2 terminals it is just easier to catch problems
Nice tut mate!
Sent from my HTC One X using xda premium
reserved
great guide bro.
Edit:
If anyone wants to install the SUN JDK instead of Open JDK you can install it from the partner repository:
Code:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
Thanks, for your replies, I'll change my Guide at the evening.
Gesendet von meinem HTC One S mit Tapatalk 2
Great! Maybe I will stay building
Sent from LG 2X using Tapatalk 2 Elite
Thanks a lot !!
The Guide is updated, (big thanks to owain94).
I`ll add a new Step or Section (lets see, atm I don`t know) for extended Build-Line and possibly multiscreen using, I`ll test it while compiling for my One-S.
i am getting an error
make: *** No rule to make target `out/target/product/p990/obj/lib/libnvdispmgr_d.so', needed by `out/target/product/p990/obj/SHARED_LIBRARIES/libsurfaceflinger_intermediates/LINKED/libsurfaceflinger.so'. Stop.
plz help me..
thanks for the tutorial.
podanimesh said:
i am getting an error
make: *** No rule to make target `out/target/product/p990/obj/lib/libnvdispmgr_d.so', needed by `out/target/product/p990/obj/SHARED_LIBRARIES/libsurfaceflinger_intermediates/LINKED/libsurfaceflinger.so'. Stop.
plz help me..
Click to expand...
Click to collapse
did you sync the vendor files?
libnvdispmgr_d.so is a vendor file that cannot be build because we don't have the sources
you need to sync them from koush his github or extract the vendor files using the script in the device folder
good luck
owain94 said:
did you sync the vendor files?
libnvdispmgr_d.so is a vendor file that cannot be build because we don't have the sources
you need to sync them from koush his github or extract the vendor files using the script in the device folder
good luck
Click to expand...
Click to collapse
ok now compiled successfully..
ROM booted but no wi-fi and camera..
podanimesh said:
ok now compiled successfully..
ROM booted but no wi-fi and camera..
Click to expand...
Click to collapse
Wifi working fine for me, but I'll add a step for camera fix, thanks for reporting
Gesendet von meinem HTC VLE_U mit Tapatalk 2
If anyone wants to have SUN JDK instead of Open JDK it's still possible:
Code:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
I also put that in "my" post 3.
thanks for reporting, but as far as I know, sun has many security risks, isn`t it?
XXMrHyde said:
thanks for reporting, but as far as I know, sun has many security risks, isn`t it?
Click to expand...
Click to collapse
Hm I don't think so. As far as I know the reason why Open JDK is used in Ubuntu instead of Sun JDK is that Open JDK is fully open sourced while Sun JDK still uses some pre compiled closed source binaries. Some open source fanatics might call this a security risk as they can't check the source themselves, but apart from that their shouldn't be any risks.
Sent from my LG-P990 using xda app-developers app
this procedure did not make .zip file, but normal folder
tonyp said:
Hm I don't think so. As far as I know the reason why Open JDK is used in Ubuntu instead of Sun JDK is that Open JDK is fully open sourced while Sun JDK still uses some pre compiled closed source binaries. Some open source fanatics might call this a security risk as they can't check the source themselves, but apart from that their shouldn't be any risks.
Sent from my LG-P990 using xda app-developers app
Click to expand...
Click to collapse
Ok, nice to know, I`ll change the Guide, so users can decide, which JDK they want to install
tomsi91 said:
this procedure did not make .zip file, but normal folder
Click to expand...
Click to collapse
Then you make a mistake, if so, my Rom wouldn`t excist
Please upload camera fix tutorial....
Sorry, I was a little bit busy today, I`ll ad the camera fix to the guide now
added camera fix to the Guide
edit:
now it can be choosen if you want to install Sun- or Open-JDK
Requirements
1- Good knowledge of a linux distribution, I I recommend Ubuntu 14.04 LTS or or derived (Xubuntu, Lubuntu etc.);
2- A PC with at least 4 GB of ram (8 recommended) and CPU at least dual-core (quad-core recommended);
3- A partition with at least 100 GB free;
4- An Internet connection.
Now we are going to prepare the necessary tools for compile:
Install version 7 of java with the following commands:
Code:
sudo apt-get install openjdk-7-jdk
After type:
Code:
java -version
And make sure that your Java version is 7.
Now, install this packages necessary for build 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
At terminated download type:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Code:
mkdir ~/bin
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Now we will modify the bash file
Code:
sudo nano ~/.bashrc
At the end of fil We will add:
Code:
export PATH=~/bin:$PATH
After, save with the key combination Ctrl+o and exit with Ctrl+x.
OK, Now we are almos ready!
We proceed typing:
Code:
mkdir ~/cm12
Code:
cd ~/cm12
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
Code:
repo sync
Be patient because you need to download about 20 GB of source.
If you have problems with authentication, you need to register on the site Git-Hub and enter your credentials typing:
Code:
git config --global user.email "xxxxxxxxxxxxxxxxx"
Code:
git config --global user.name "xxxxxxx"
At the end of source code download, we need to initialize building tool:
Code:
. build/envsetup.sh
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
After once again:
Code:
repo sync
OK, finally, we are ready for start building process:
Code:
. build/envsetup.sh
Code:
brunch mako
You will find your rom ready for flash in:
Code:
cm12/out/target/product/mako
Good building at all!!!
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
Thank you very much for this guide. I am working toward compiling my first ROM from source, so please forgive me noob questions. Can you please help explain how you got the text for the local_manifest.xml file? Why is the device source not "CyanogenMod/android_device_lge_mako," which is listed as the "source code" here?
Also, I didn't see your post until just now so I have been following the guide here. Does not the local_manifest.xml file need device, vendor, and kernal info?
Sorry if this very basic. I am still learning.
Mawth said:
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
Thank you very much for this guide. I am working toward compiling my first ROM from source, so please forgive me noob questions. Can you please help explain how you got the text for the local_manifest.xml file? Why is the device source not "CyanogenMod/android_device_lge_mako," which is listed as the "source code" here?
Also, I didn't see your post until just now so I have been following the guide here. Does not the local_manifest.xml file need device, vendor, and kernal info?
Sorry if this very basic. I am still learning.
Click to expand...
Click to collapse
You must create local_manifest.xml file with the command:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
In gedit (text editor file..download it in ubuntu software center) you will see an empty file..for this reason you must copy in it these strings:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
Thank you for your very fast reply.
And thank you for providing the text for the local_manifest.xml file. I understand that is what I need to do.
I've successfully built CM12 from source using your guide. Thank you again. Very helpful.
Now my question is about subsequent builds. Is it necessary to make clean before each new build?
The reason I ask is that I have re-sync'd the repo several days after my first build and despite the updated date listed in the ~out file (e.g., "cm-12-20150325-UNOFFICIAL-mako.zip") the CyanogenMod version listed on my phone after flashing the new .zip stays the same as the first build (e.g. "cm-12-20150321-UNOFFICIAL-mako.zip"). I'm not sure what I'm doing wrong. The only solution seems to be make clean, which dramatically increase the compiling time.
Mawth said:
I've successfully built CM12 from source using your guide. Thank you again. Very helpful.
Now my question is about subsequent builds. Is it necessary to make clean before each new build?
The reason I ask is that I have re-sync'd the repo several days after my first build and despite the updated date listed in the ~out file (e.g., "cm-12-20150325-UNOFFICIAL-mako.zip") the CyanogenMod version listed on my phone after flashing the new .zip stays the same as the first build (e.g. "cm-12-20150321-UNOFFICIAL-mako.zip"). I'm not sure what I'm doing wrong. The only solution seems to be make clean, which dramatically increase the compiling time.
Click to expand...
Click to collapse
because build system didn't generate a new build prop and use first time build prop you build. just delete build.prop on system folder before you want to build, system will generate new build.prop witch exact date you build
Mawth said:
I've successfully built CM12 from source using your guide. Thank you again. Very helpful.
Now my question is about subsequent builds. Is it necessary to make clean before each new build?
The reason I ask is that I have re-sync'd the repo several days after my first build and despite the updated date listed in the ~out file (e.g., "cm-12-20150325-UNOFFICIAL-mako.zip") the CyanogenMod version listed on my phone after flashing the new .zip stays the same as the first build (e.g. "cm-12-20150321-UNOFFICIAL-mako.zip"). I'm not sure what I'm doing wrong. The only solution seems to be make clean, which dramatically increase the compiling time.
Click to expand...
Click to collapse
I advice always make clean
what is mako?
autoradio78 said:
Requirements
1- Good knowledge of a linux distribution, I I recommend Ubuntu 14.04 LTS or or derived (Xubuntu, Lubuntu etc.);
2- A PC with at least 4 GB of ram (8 recommended) and CPU at least dual-core (quad-core recommended);
3- A partition with at least 100 GB free;
4- An Internet connection.
Now we are going to prepare the necessary tools for compile:
Install version 7 of java with the following commands:
Code:
sudo apt-get install openjdk-7-jdk
After type:
Code:
java -version
And make sure that your Java version is 7.
Now, install this packages necessary for build 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
At terminated download type:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Code:
mkdir ~/bin
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Now we will modify the bash file
Code:
sudo nano ~/.bashrc
At the end of fil We will add:
Code:
export PATH=~/bin:$PATH
After, save with the key combination Ctrl+o and exit with Ctrl+x.
OK, Now we are almos ready!
We proceed typing:
Code:
mkdir ~/cm12
Code:
cd ~/cm12
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
Code:
repo sync
Be patient because you need to download about 20 GB of source.
If you have problems with authentication, you need to register on the site Git-Hub and enter your credentials typing:
Code:
git config --global user.email "xxxxxxxxxxxxxxxxx"
Code:
git config --global user.name "xxxxxxx"
At the end of source code download, we need to initialize building tool:
Code:
. build/envsetup.sh
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
After once again:
Code:
repo sync
OK, finally, we are ready for start building process:
Code:
. build/envsetup.sh
Code:
brunch mako
You will find your rom ready for flash in:
Code:
cm12/out/target/product/mako
Good building at all!!!
Click to expand...
Click to collapse
can you specify for which device is this source and rom for?
what is mako?
can i use this codes for building cm12 for any android device?
shivajiv said:
can you specify for which device is this source and rom for?
what is mako?
can i use this codes for building cm12 for any android device?
Click to expand...
Click to collapse
Mako is for nexus 4
can i use the above tutorial for building for any device
cqloveqc said:
Mako is for nexus 4
Click to expand...
Click to collapse
by changing vendor,device,kernel can i use this tutorial for building rom for any device?
shivajiv said:
by changing vendor,device,kernel can i use this tutorial for building rom for any device?
Click to expand...
Click to collapse
I don't know, I'm not a developper, but also an amateur, I try to learn how to build a Rom for Nexus 4, but I think it take time
Thanks fo sharing
Thanks fo sharing~
I've had some people PM me for guidance building CM12 from source from the Atrix HD. There are currently no device specific guides, so this will help those of you who want to get their hands dirty with development but don't have a place to start.
Please note that I am writing this from memory as I don't feel like wiping my build environment and setting it up again for the purpose of this tutorial. That said, this *should* be accurate, but if you hit any snags comment and we can try and sort them out.
CREDITS:
This is adapted from http://wiki.cyanogenmod.org/w/Build_for_mb886 and http://forum.xda-developers.com/nexus-4/general/guide-cm11-how-to-build-cyanogenmod-11-t2515305 (Big thank you to @Raum1807 for the excellent guide, I'm merely modifying it to work for the MB886).
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Overview
I. Preparation
II. Installation of the required packages
III. Installing Java
IV. The sources
V. Building the ROM
VI. Rebuilding with newest sources
I. Preparation
Things you need for building:
A computer
An internet connection
An open mind
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I used Ubuntu 14.04 LTS 64-bit from within a VirtualBox VM.
Use the terminal to make the steps. A terminal window can be opened by pressing Ctrl+Alt+T. Every single command for the terminal is marked with a $ sign. Just paste every command (without the $ sign) to your terminal window and there shouldn't be any problem.
IMPORTANT: INSTALL EVERYTHING AS A NORMAL USER. DON'T INSTALL AS ROOT!
II. Installation of the required packages (Ubuntu 14.04 LTS 64-bit)
Install packages:
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 \
openjdk-6-jdk openjdk-6-jre pngcrush schedtool \
squashfs-tools xsltproc zip zlib1g-dev
III. Installing Java
You need a version 6 Java Development Kit for building CM12.0. Usually, the SUN JDK 6 is recommended. But there is another way: you can use the OpenJDK 6. When you installed the required packages as described above, you will just need to configure your Java installation.
Check your Java version:
Code:
$ java -version
Verify the symlinks. Javac, Java, Javaws, Javadoc, Javah, Javap and Jar should all point to the right Java location and version:
Code:
$ ls -la /etc/alternatives/java* && ls -la /etc/alternatives/jar
If they are pointing to the wrong versions you have to change that to OpenJDK6.
Select the default Java version for your system:
Code:
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javaws
$ sudo update-alternatives --config javadoc
$ sudo update-alternatives --config javah
$ sudo update-alternatives --config javap
$ sudo update-alternatives --config jar
All done.
IV. The sources
Install repo:
Repo is a tool that makes it quite easy to download and maintain the sources of Cyanogenmod.
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ cd ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Create the working directory:
Code:
$ mkdir ~/cm12
$ cd ~/cm12
Initialize Repo:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
and enter your credentials.
Download the sources:
Code:
$ repo sync
Wait until it's finished - takes some time to download the many GB of source code!
If the process hangs use Ctrl+C to break out of it and resume the download with another
Code:
$ repo sync
If you are running into a lot of syncing errors the reason might be that the 'repo sync' command is establishing four threads automatically. This might be too much. So try to change the command to run with one thread only by using
Code:
$ repo sync -j1
Initialize the environment
Code:
$ . build/envsetup.sh
Obtain the proprietary files:
First get missing repositories for the Atrix HD by running
Code:
$ breakfast mb886
Then create a file with the name local_manifest.xml in the local_manifests directory. To see this directory, you have to press Ctrl-H in your file manager. Use this code
Code:
$ gedit ~/cm12/.repo/local_manifests/local_manifest.xml
Paste the following lines to the editor
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_motorola.git" path="vendor/motorola" remote="github" revision="cm-12.0"/>
</manifest>
Save the file.
Run
Code:
$ repo sync
again to get the files needed.
Download the necessary prebuilts from cyanogenmod by running
Code:
$ cd ~/cm12/vendor/cm
$ . get-prebuilts
$ croot
And you're done!
V. Building the ROM
Now build it:
Code:
$ brunch mb886
And the building process starts. Now have patience. Building takes around half an hour on fast systems and a lot more on older,slower machines and VMs.
When everything worked as it should you will find your new ROM-image in ~/cm12/out/target/product/mb886
It is called cm-12-DATE-UNOFFICIAL-mb886-zip. You can flash it via CWM/PhilZ/Cyanogen Recovery as usual.
VI. Rebuilding with newest sources
Whenever you like to update your sources and build a new version you have to run these four simple commands:
Code:
$ cd ~/cm12
$ repo sync
$ . build/envsetup.sh
$ brunch mb886
Compiling takes less time than it took for creating the ROM the first time because it's only building new parts while reusing old parts that haven't changed. Occasionally you might want to wipe your output directory and build completely anew. To do this:
Code:
$ cd ~/cm12
$ repo sync
$ make clean
$ . build/envsetup.sh
$ brunch mb886
Good luck!
Thank you. Great work!
Awesome work mate
How can we build aosp for atrix hd?
madhurvyas said:
How can we build aosp for atrix hd?
Click to expand...
Click to collapse
almost the same, just you have to download aosp source insted of cm's.. give the aosp link while initialising the repo.. google it, you will find it
I have the aosp source, but I dont think the "brakfast" and "lunch" command will work till I edit/add few files, I have added the local_manifest file, and given path to muppets repo.
Still few more things would be required. any links to read would be great help.
madhurvyas said:
I have the aosp source, but I dont think the "brakfast" and "lunch" command will work till I edit/add few files, I have added the local_manifest file, and given path to muppets repo.
Still few more things would be required. any links to read would be great help.
Click to expand...
Click to collapse
https://source.android.com/source/initializing.html
http://xda-university.com/as-a-developer/getting-started-building-android-from-source
These two links can be useful..
How to build the kernel, or get a prebuilt one.
I downloaded atrixhd kernel source from cm12.1 https://github.com/CyanogenMod/android_kernel_motorola_msm8960-common/tree/cm-12.1
madhurvyas said:
How to build the kernel, or get a prebuilt one.
I downloaded atrixhd kernel source from cm12.1 https://github.com/CyanogenMod/android_kernel_motorola_msm8960-common/tree/cm-12.1
Click to expand...
Click to collapse
http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building
try this..
Post is Influenced from @Anik_khan Kernel Post to make Procedure More Simple for Us All.
So Don't BE Shocked to see Things
Prerequisites:
Ubuntu 14.04 Trusty Tahr 64 Bit. (Can be on VirtualBox or Full Install Your Wish.)
RAM Minimum:2GB Recommended:4GB
Around 100GB Space for ROM’s. (Kernels can use upto 1GB.)
Unlimited (Fast) LAN Connection.
More RAM, or faster CPU, or SSD will speed up the process.
A Brain (Most Important of All :v)
At the starting of the post I have linked a script by @akhilnarang which if run will automatically install all these programs for lazy people.
If you not interested to do all procedure from below just use the script. Simply it will automatically configure the build environment.
NOTE-------- some of these packages may already be on your machine. Obviously, if you complete a step and you have one of these installed, the machine simply will not do anything. So...it will not hurt anything. Some of the packages are different from Ubuntu 12.04 and 13.04 (use these packages for Ubuntu 14.04 as many of the old ones have obsoleted - these are new replacements).
So if you set up your pc with Ubuntu we are good to go.
All code will be in code boxes like this:
Code:
$
means you have to run that command in the terminal (don't type the $).
All commands with sudo, gksudo, or gksu means it requires root permission.
It will ask for password.
Once you type, then in that terminal session it will not ask you for a few minutes again.
Any time you make changes to .bashrc or .profile file, make sure to run
Code:
$ source ~/.bashrc
$ source ~/.profile
Or exit and open new terminal else the changes will not take place
Setting Up Build Environment
Method 1:
So if you not interested in doing below all steps then simply use this script by my friend @akhilnarang
Open terminal and type:
Code:
$ sudo apt-get install git-core
then do
Code:
$ git clone https://github.com/akhilnarang/scripts.git
$ cd scripts
$ . build-environment-setup.sh
This script will install all required packages
Method 2:
1)Installing Java JDK
Open terminal (CTRL + ALT + T)
Then execute the following commands in terminal one by one:
Download & install java
Code:
$ sudo apt-get update && sudo apt-get install openjdk-7-jdk openjdk-7-jre
CHECK if java properly installed or not
Code:
$ java -version
If you get output like
Code:
Code:
java version "1.7.0_79" or anything higher(in my case)
on the first line then all is good
Now JDK is configured!
Note: Only for Ubuntu 14.04 or higher
2)Installing Required Packages
Open Terminal
Now execute this command:
Note: This will take some time, has to download about 500MB or so of packages
Code:
$ sudo apt-get update && sudo apt-get install git-core python gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-7-jdk pngcrush schedtool \
libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib liblz4-* android-tools-adb android-tools-fastboot ccache
3)Installing Android SDK
Download the SDK from here!
Accept Terms & download 64 bit.
Extract in your home directory & rename extracted folder "android-sdk".
Now, execute these commands in terminal:
Code:
$ cd ~/android-sdk/tools/
$ ./android sdk
At this point the SDK should come up and you will need to download at least all the tools and all the extras files (at least to 4.0, so select them and install them.When it finishes downloading & installing everything you have to run this command in ANOTHER TERMINAL:
Code:
$ sudo apt-get install gksudo
$ gksu gedit .bashrc
And you need to add at the end of it your SDK paths these three lines (copy and paste them):
Code:
export PATH=~/android-sdk/tools:$PATH
export PATH=~/android-sdk/platform-tools:$PATH
export PATH=~/bin:$PATH
Save and close the file, then close terminal, or
Code:
source ~/.bashrc
Find your .profile file and add this at the bottom of the file
Code:
PATH="$HOME/android-sdk/tools:$HOME/android-sdk/plartform-tools:$PATH"
SDK is configured.
4)Configuring USB Access
Now we need to set permissions so that our USB ports can detect our android devices
Type in the following commands, it will download a file with the permissions, give it permission to execute, and restart the service.
Code:
$ sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/snowdream/51-android/master/51-android.rules
$ sudo chmod 644 /etc/udev/rules.d/51-android.rules
$ sudo chown root. /etc/udev/rules.d/51-android.rules
$ sudo service udev restart
$ sudo killall adb
ADB & Fastboot are configured
5)Installing Repo Package
Open terminal and type:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
6)Configure Git
Open terminal and type:
Code:
$ git config --global user.email ""
$ git config --global user.name ""
Git is configured.
7)Configure ccache
Open terminal and type:
Code:
$ gksu gedit ~/.bashrc
Enter these lines
Code:
export USE_CCACHE=1
export CCACHE_DIR=~/.ccache
Save & close
Open terminal & execute:
Code:
$ source .bashrc
$ ccache -M 50G
I usually use 50 gigs. You can use more if you have more space, or build for many devices
Congrats
YOUR BUILD ENVIROMENT IS NOW SETUP .
Making Kernel
Good work !!! Waiting for completion
Sent from my Moto G using Tapatalk
Thread closed per OPs request
Development: Building CyanogenMod 13 for Zenfone 5/6
Prerequisites:
Ubuntu 16.04 (Installation Guide)
~80 GiB of Available Disk Space
Establishing a Build Environment
Open a Terminal Emulator (Ctrl+Alt+T)
Install the latest Ubuntu updates:
Code:
sudo apt-get update
sudo apt-get dist-upgrade
Add the OpenJDK 7 Repository:
Code:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
Install the Required packages by Android:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip maven yasm optipng openjdk-7-jdk
Install Repo:
Code:
sudo wget https://storage.googleapis.com/git-repo-downloads/repo -O/usr/bin/repo
sudo chmod +x /usr/bin/repo
Setup Git:
Code:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Recommended: Reboot.
Downloading the Source:
Create a Working Directory:
Code:
mkdir -p ~/CM13
cd ~/CM13
Initialize the Repository (choose a command below):
Stable (ZNH2K):
Code:
repo init -u git://github.com/zf5/android.git -b stable/cm-13.0-ZNH2K
Stable (ZNH5Y):
Code:
repo init -u git://github.com/zf5/android.git -b stable/cm-13.0-ZNH5Y
Nightly:
Code:
repo init -u git://github.com/zf5/android.git -b cm-13.0
Download the Code:
Code:
repo sync -c -j4
Optional: Setup ccache (ccache acts as a compiler cache that can be used to speed up rebuilds)
Code:
echo "export USE_CCACHE=1" >> ~/.bashrc
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G
Applying the Patches:
Download the Patches
Extract the Patches at your working directory
Apply the patch files by changing the directory to where they are and using the following command:
Code:
patch -p1 < filename.patch
Example: Applying the Patch for Vibration:
Code:
cd frameworks/base
patch -p1 < vibration.patch
(Do the same for every patch file in their respective directories)
Building the System:
Prepare the build environment:
Code:
. build/envsetup.sh
lunch cm_T00F-user
Build the System:
Code:
make -j4
That's it. Your system.img is located at WORKING_DIRECTORY/out/target/product/T00F/system.img
Also check out: Development: Building a Marshmallow Kernel for Zenfone 5/6
XDA:DevDB Information
Development: Building CyanogenMod 13 for Zenfone 5/6, Tool/Utility for the Asus Zenfone 5
Contributors
dgadelha
Version Information
Status: Stable
Created 2016-04-21
Last Updated 2016-09-13
For T00G:
Device Tree: https://github.com/T00G-Marshmallow-DEV/android_device_asus_T00G
Vendor Tree: https://github.com/T00G-Marshmallow-DEV/android_vendor_asus_T00G
Information: Sensors and some bugs fixed.
Gooood! Thanks very much
For cm12.1 also same method? Because I got some error on building cm12.1
AhZhi said:
For cm12.1 also same method? Because I got some error on building cm12.1
Click to expand...
Click to collapse
Yes. But I think you'll need to apply the Vibration patch manually, as it will probably fail.
And, well, no need to apply all the patches, only vibration.
That's it.
dgadelha said:
Yes. But I think you'll need to apply the Vibration patch manually, as it will probably fail.
And, well, no need to apply all the patches, only vibration.
That's it.
Click to expand...
Click to collapse
Thank you now i go to try it
Error
dgadelha said:
Development: Building CyanogenMod 13 for Zenfone 5/6
Prerequisites:
Ubuntu 15.10 (Installation Guide)
~80 GiB of Available Disk Space
Establishing a Build Environment
Open a Terminal Emulator (Ctrl+Alt+T)
Install the latest Ubuntu updates:
Code:
sudo apt-get update
sudo apt-get dist-upgrade
Install the Required packages by Android:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip maven yasm optipng openjdk-7-jdk
Install Repo:
Code:
sudo wget https://storage.googleapis.com/git-repo-downloads/repo -O/usr/bin/repo
sudo chmod +x /usr/bin/repo
Setup Git:
Code:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Recommended: Reboot.
Downloading the Source:
Create a Working Directory:
Code:
mkdir -p ~/CM13
cd ~/CM13
Initialize the Repository:
Stable:
Code:
repo init -u git://github.com/zf5/android.git -b stable/cm-13.0-ZNH2K
Nightly:
Code:
repo init -u git://github.com/zf5/android.git -b cm-13.0
Download the Code:
Code:
repo sync -c -j4
Optional: Setup ccache (ccache acts as a compiler cache that can be used to speed up rebuilds)
Code:
echo "export USE_CCACHE=1" >> ~/.bashrc
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G
Applying the Patches:
Download the Patches
Extract the Patches at your working directory
Apply the patch files by changing the directory to where they are and using the following command:
Code:
patch -p1 < filename.patch
Example: Applying the Patch for Vibration:
Code:
cd frameworks/base
patch -p1 < vibration.patch
(Do the same for every patch file in their respective directories)
Building the System:
Prepare the build environment:
Code:
. build/envsetup.sh
lunch cm_T00F-user
Build the System:
Code:
make -j4
That's it. Your system.img is located at WORKING_DIRECTORY/out/target/product/T00F/system.img
Also check out: Development: Building a Marshmallow Kernel for Zenfone 5/6
XDA:DevDB Information
Development: Building CyanogenMod 13 for Zenfone 5/6, Tool/Utility for the Asus Zenfone 5
Contributors
dgadelha, tank0412
Version Information
Status: Stable
Created 2016-04-21
Last Updated 2016-05-11
Click to expand...
Click to collapse
Fetching projects: 51% (222/435)
error: Exited sync due to fetch errors
Can you help me ?
HONGARC said:
Fetching projects: 51% (222/435)
error: Exited sync due to fetch errors
Can you help me ?
Click to expand...
Click to collapse
type again last comand
it will resume, try use google there are some comands what will help you
And how to creat .zip flash on twrp
adekcan said:
And how to creat .zip flash on twrp
Click to expand...
Click to collapse
you can use otapackage but you must this have in device tree or you can extrac system.img file after build
Hi @dgadelha..
I have successfully built the rom and kernel in my laptop using the steps you provided on first page..
After that I flashed it to my phone and it's been working so smooth and stable. It was a great experience for me getting the phone work using the firmware compiled by me ?. Many thanks for you..
Sent from my ASUS_T00F using XDA-Developers mobile app
sapiterbang said:
Hi @dgadelha..
I have successfully built the rom and kernel in my laptop using the steps you provided on first page..
After that I flashed it to my phone and it's been working so smooth and stable. It was a great experience for me getting the phone work using the firmware compiled by me ?. Many thanks for you..
Sent from my ASUS_T00F using XDA-Developers mobile app
Click to expand...
Click to collapse
Ohh that's good it means new dev come !! ??
sapiterbang said:
Hi @dgadelha..
I have successfully built the rom and kernel in my laptop using the steps you provided on first page..
After that I flashed it to my phone and it's been working so smooth and stable. It was a great experience for me getting the phone work using the firmware compiled by me . Many thanks for you..
Click to expand...
Click to collapse
Nice to hear that.
What is the procedure if I want to run this rom on stock kernel? (I am asking this because I have no camera found bug after unlocking bootloader.)
Beside that your guide is awesome.
[email protected][email protected]@ said:
What is the procedure if I want to run this rom on stock kernel? (I am asking this because I have no camera found bug after unlocking bootloader.)
Beside that your guide is awesome.
Click to expand...
Click to collapse
There is no procedure, you can't do that.
[email protected][email protected]@ said:
What is the procedure if I want to run this rom on stock kernel? (I am asking this because I have no camera found bug after unlocking bootloader.)
Beside that your guide is awesome.
Click to expand...
Click to collapse
You have to build a Lollipop 5.0 based ROM to run with stock kernel.
leonardohenrique10 said:
You have to build a Lollipop 5.0 based ROM to run with stock kernel.
Click to expand...
Click to collapse
I'm a bit disappointed,but anyway thanks a lot for information.
getting error in applying patches
I am getting erros while applying patch.....I reffered ur steps from guide by u that how to build cyanogenmod for zenfone 5....I have downloaded and synced sources and when i come to apply patch then i get error..
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/linker/linker.cpp b/linker/linker.cpp
|index bc40cf1..899eeca 100644
|--- a/linker/linker.cpp
|+++ b/linker/linker.cpp
--------------------------
File to patch: y
y: No such file or directory
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
please help me...
Desert fox2612 said:
I am getting erros while applying patch.....I reffered ur steps from guide by u that how to build cyanogenmod for zenfone 5....I have downloaded and synced sources and when i come to apply patch then i get error..
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/linker/linker.cpp b/linker/linker.cpp
|index bc40cf1..899eeca 100644
|--- a/linker/linker.cpp
|+++ b/linker/linker.cpp
--------------------------
File to patch: y
y: No such file or directory
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
please help me...
Click to expand...
Click to collapse
You need to copy the file bionic/linker.patch to the directory ~/CM13/bionic/
then you need to do
Code:
cd ~/CM13/bionic
patch -p1 < linker.patch
dgadelha said:
You need to copy the file bionic/linker.patch to the directory ~/CM13/bionic/
then you need to do
Code:
cd ~/CM13/bionic
patch -p1 < linker.patch
Click to expand...
Click to collapse
Thanks....that helped me.. Btw should I ignore warnings generated between building img file? & one prob is linker.patch is not worked....rest all patches worked....will it create problem?