{Guide} [HOW TO]Building CM11 from source for i9082/L

k2wl

Senior Member
Apr 19, 2008
3,166
7,573
0
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.:eek::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.
 
Last edited:

iceyhotguy

Senior Member
Jan 27, 2012
732
753
0
Here starts the fun
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 :p

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:
 
  • Like
Reactions: k2wl and Parth2187

k2wl

Senior Member
Apr 19, 2008
3,166
7,573
0
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 :p

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:
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.
 

k2wl

Senior Member
Apr 19, 2008
3,166
7,573
0
this can be used to build other roms too right .... by just changing the github repo to the rom u wanna build
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.

One more question, how to apply patches?:D
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..

But, k2wl.
This method builds an Odin flashable file.
How to make flashable zips, which can be flashed through custom recoveries.????:confused: :confused:


Sent from my iPhone using Tapatalk
It builds flashable zips only ......with CWM or any other....:D
 

k2wl

Senior Member
Apr 19, 2008
3,166
7,573
0
@k2wl im getting this error http://pastebin.com/uLy1MGew


  1. [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
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....
 

Attachments

Last edited:

RVR

Recognized Contributor
Oct 29, 2012
1,741
2,880
143
Mumbai
rutvikrajagopal.in
@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
 
Last edited:

k2wl

Senior Member
Apr 19, 2008
3,166
7,573
0
@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
thats the spirit of learning...keep up...
 
  • Like
Reactions: RVR

k2wl

Senior Member
Apr 19, 2008
3,166
7,573
0
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.
 
  • Like
Reactions: RVR