Im sick of seeing guides around that tell you all about how to build a rom but never ever go into detail about the hardest part in my opinion which is obtaining device specific code, its ridiculous!? So im here to help.
Just a prior note, im no dev, ive never built from source before (hopefully this will change in few days ) and the real devs are people like Luk & Luca who built a lovely repos for us with lots of good documentation. So please go and give Luca & Luk a thanks on any one of there posts!
Also i would like to personally thank Luca for helping me when i asked for info regarding building.
Lets get started shall we!
1 - Pre-requisites
4+ GB RAM (I have 4GB)
Preferably a Quad-Core CPU (I have an i5)
At least 90GB of HDD/SSD space for the repo & ccache (SSD recommended for faster compile times, i have a 750GB HDD)
GPU - (not needed but may aswell throw it in here) GTX-740M & Intel HD 4000 (Optimus technology - not working on Linux though)
And lastly a Github account, please go make one (its free!)
2 - Installing Linux
We need a Linux based 64 bit OS, i use Lubuntu with my own tweaks
Download and install it, either dual-boot or use it as your primary OS like the bad-ass you are! (If you want help on doing this there at least +100000 guides in google and youtube alone)
3 - Grabbing build dependencies
Code:
sudo apt-get install git && cd ~/ && git clone https://github.com/DiamondBond/Scripts/ .init-scripts && cd ~/.init-scripts && ./dev_init.sh
Copy & Pasta that code above into your terminal and accept/press ok/press yes to any prompts that appear
That should get your system fit with all the necessary things to build and work with androids source, its about 900mb of a download! So sit back and relax...
4 - Preparing to download the massive source-code
I recommend downloading a small movie before doing this so you can relax while it all syncs! (just be sure to keep your eye on that sync window to make sure its still scrolling...)
Lets make a folder to hold all our stuff:
Code:
mkdir -p ~/android/titan/roms/cm && cd ~/android/titan/roms/cm
Now your inside the cm folder, you have to be in the cm directory every-time you want to start building!
Now initiate the cm repo: (one-time thing)
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
Now it might give a small error at the end stating for some email and user id stuff.
So now is the time to add your github infos (run this in terminal):
Code:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
EG:
Code:
git config --global user.email "[email protected]"
git config --global user.name "Diamond Bond"
We havnt yet downloaded the CM source, but we will in the next part...
(source code is roughly 35GB for CM12.1 , pure AOSP is slightly smaller)
5 - Downloading & waiting
Note: Straight after syncing official CM12.1 repo this is its size: (31GB)
{
"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"
}
It is time!, run one of the two commands below (depending on your networking speed) to initiate the long wait of syncing!)
Code:
repo sync
Finished? sweet, lets have a rave party!
6 - Building!
Now once youve downloaded all the source code you should be able to run your first build after init!
Thanks to some nice build scripts by Luca and Luk, running builds is super duper easy!
To initialize the last thing, run:
Code:
. build/envsetup.sh
then to build run
Code:
brunch titan
to build, ive read around and on my system it should only take 1.5 to 3 hours tops, and my system is mediocre + its a laptop so take in account that it may thermally throttle, if you have a desktop it should only take around 1-2 hours with relatively decent specs!
7 - Party Time!
If you want help please leave a comment in this thread and i/others will try to help.
Also if you do get a successful build done please share it with us, we would love to be a part of your victory party!
Thanks to this guide: http://forum.xda-developers.com/chef-central/android/guide-android-rom-development-t2814763
&
Luca & Luk again!
@Pizza_Dox
Replace
Code:
mkdir ~/titan/ && cd ~/titan/ && mkdir cm12 && cd ~/titan/cm12/
With
Code:
mkdir -p ~/titan/cm12 && cd ~/titan/cm12/
Also users don't need github account to just build the rom.
I would try this, but I don't have a cat. Thanks for sharing tho
Exactly what I was looking .
Thank you for sharing.
LuK1337 said:
@Pizza_Dox
Replace
Code:
mkdir ~/titan/ && cd ~/titan/ && mkdir cm12 && cd ~/titan/cm12/
With
Code:
mkdir -p ~/titan/cm12 && cd ~/titan/cm12/
Also users don't need github account to just build the rom.
Click to expand...
Click to collapse
Thanks updated.
hippy dave said:
I would try this, but I don't have a cat. Thanks for sharing tho
Click to expand...
Click to collapse
Haha welcome
CaptainCaptcha said:
Exactly what I was looking .
Thank you for sharing.
Click to expand...
Click to collapse
Enjoy!
LuK1337 said:
@Pizza_Dox
Replace
Code:
mkdir ~/titan/ && cd ~/titan/ && mkdir cm12 && cd ~/titan/cm12/
With
Code:
mkdir -p ~/titan/cm12 && cd ~/titan/cm12/
Also users don't need github account to just build the rom.
Click to expand...
Click to collapse
Oh right i know you dont need a github account but its better to have one
Updating this soon
Sent from my Motorola Titan
I dont know why but every time i repo sync it gets stuck here for quiet a long time and after sometimes ends up in error like below.. Is it that its downloading below package file again
koradiavatsal said:
I dont know why but every time i repo sync it gets stuck here for quiet a long time and after sometimes ends up in error like below.. Is it that its downloading below package file again
Click to expand...
Click to collapse
Sent from MicroTitan
There are some tricks to before compiling.
This is just the introduction to compile Cyanogenmod
Good job @Pizza_Dox :good:
klander said:
There are some tricks to before compiling.
This is just the introduction to compile Cyanogenmod
Good job @Pizza_Dox :good:
Click to expand...
Click to collapse
And they are? Please let us know
Sent from MicroTitan
Code:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
CM_VERSION=
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.16.0-4-amd64-x86_64-with-debian-8.0
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=/data/deepak/titan/cm11/out
============================================
Checking build tools versions...
************************************************************
You are attempting to build with an unsupported JDK.
You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
Continue at your own peril!
************************************************************
************************************************************
You are attempting to build with an unsupported version
of java.
Your version is: java version "1.7.0_75".
The correct version is: Java SE 1.6 or 1.7.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
************************************************************
find: `bootable/recovery/res-720': No such file or directory
No private recovery resources for TARGET_DEVICE generic
Entire build directory removed.
Set cache size limit to 50.0 Gbytes
/tmp/hudson8243709547868758627.sh: line 13: ./resync.sh: No such file or directory
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/goldfish/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/bash_completion/git.bash
including vendor/cm/bash_completion/repo.bash
including vendor/cm/vendorsetup.sh
ls: cannot access device/*/titan/cm.mk: No such file or directory
build/core/product_config.mk:234: *** Can not locate config makefile for product "cm_titan". Stop.
Device titan not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Found repository: android_device_motorola_titan
Default revision: cm-11.0
Checking branch info
Default revision cm-11.0 not found in android_device_motorola_titan. Bailing.
Branches found:
cm-12.0
Use the ROOMSERVICE_BRANCHES environment variable to specify a list of fallback branches.
ls: cannot access device/*/titan/cm.mk: No such file or directory
build/core/product_config.mk:234: *** Can not locate config makefile for product "cm_titan". Stop.
** Don't have a product spec for: 'cm_titan'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
real 0m17.121s
user 0m0.256s
sys 0m0.024s
Build step 'Execute shell' marked build as failure
Sending e-mails to: [email protected]
[BFA] Scanning build for known causes...
[BFA] Done. 0s
Finished: FAILURE
Can someone help please? or just list me with cm11 commands of repo initialisation and device trees?
klander said:
There are some tricks to before compiling.
This is just the introduction to compile Cyanogenmod
Good job @Pizza_Dox :good:
Click to expand...
Click to collapse
Oh okay, well thank you, ill try and add whatever more into this so more people can compile,
Quick steps for compiling cm11
I hope you dont mind adding to OP
repo init -u git://github.com/CyanogenMod/android -b cm-11.0
curl --create-dirs -L -o .repo/local_manifests/titan.xml -O -L https://raw.githubusercontent.com/motog2014devteam/roomservice/cm-11.0/manifest.xml
repo sync
Thanks @LuK1337
Sent from MicroTitan
koradiavatsal said:
Quick steps for compiling cm11
I hope you dont mind adding to OP
repo init -u git://github.com/CyanogenMod/android -b cm-11.0
curl --create-dirs -L -o .repo/local_manifests/titan.xml -O -L https://raw.githubusercontent.com/motog2014devteam/roomservice/cm-11.0/manifest.xml
repo sync
Thanks @LuK1337
Sent from MicroTitan
Click to expand...
Click to collapse
done
Great, I'll try this guide, thank you very much I was always curious about ROM development. In case, where can I ask questions about it ?
Regarding this guide : is necessary to create a bin folder in home directory ? Usually I put large binaries in /opt/. Is there any permission problem ?
davcri91 said:
Great, I'll try this guide, thank you very much I was always curious about ROM development. In case, where can I ask questions about it ?
Regarding this guide : is necessary to create a bin folder in home directory ? Usually I put large binaries in /opt/. Is there any permission problem ?
Click to expand...
Click to collapse
Thanks
Um I think its best to keep the binary as is since other things might link to it and etc... Questions can be asked here I or others will try to help! Glad this helps.
Is there a way to use these steps to similarly build a kernel? As Moto G2 lollipop kernel sources are out (http://www.androidpolice.com/2015/02/23/motorola-finally-posts-kernel-source-lollipop-2014-moto-x), I want to try building a stock kernel.
@LuK1337 Is this guide still work since titan switched to new kernel?
I get this errors while building
<code>
find: `dummy': No such file or directory
build/core/tasks/kernel.mk:130: **********************************************************
build/core/tasks/kernel.mk:131: * Kernel source found, but no configuration was defined *
build/core/tasks/kernel.mk:132: * Please add the TARGET_KERNEL_CONFIG variable to your *
build/core/tasks/kernel.mk:133: * BoardConfig.mk file *
build/core/tasks/kernel.mk:134: **********************************************************
make: *** No rule to make target 'bacon'. Stop.
</code>
koradiavatsal said:
@LuK1337 Is this guide still work since titan switched to new kernel?
I get this errors while building
<code>
find: `dummy': No such file or directory
build/core/tasks/kernel.mk:130: **********************************************************
build/core/tasks/kernel.mk:131: * Kernel source found, but no configuration was defined *
build/core/tasks/kernel.mk:132: * Please add the TARGET_KERNEL_CONFIG variable to your *
build/core/tasks/kernel.mk:133: * BoardConfig.mk file *
build/core/tasks/kernel.mk:134: **********************************************************
make: *** No rule to make target 'bacon'. Stop.
</code>
Click to expand...
Click to collapse
So
rm -rf out
rm -rf .repo/local_manifests
rm -rf build* resync.sh patches
And follow the guide
Or join irc hannel isntead of using thread xd
Related
Hello guys!! Here I am gonna explain you how to set up to compiling 4.3 Android Versions.
I am making that guide for show people who wanna compile any 4.3 Custom ROM from source like SlimBean, ParanoidAndroid, CarbonROM, Illusion... I am gonna make a post with the steps of how to compile any of them.
Also now I wanna say something to the the people which wanna try to compile any of that ROM, there are already some ROMs like CM 10.2 , BeanStalk and PAC 4.3 that are supported or compiled by some users. So I will say how to build any of them, but if that ROM is SlimBean, CM 10.2, Beanstalk 4.3 or PAC 4.3, do not release it just because they are already beeing mantained.
ROMS ALREADY MANTAINED:
SlimROM by Spacekiller (supported for Honor by desalesouche)
Cyanogenmod 10.2 by herna (supported for Honor by desalesouche)
BeanStalk 10.2 by herna (supported for Honor by desalesouche)
PAC-rom 4.3 by herna (supported for Honor by desalesouche) :
Setting up your environment for compile JB :
You need at least 70 GB of hard disk for compile one ROM and running 12.04+ 64 bits version.
-JDK 6: (recommended)
Code:
[COLOR="Black"]$ sudo apt-get install openjdk-6-jdk[/COLOR]
-Pyhton:
Code:
[COLOR="black"]$ sudo apt-get install python[/COLOR]
-Git:
Code:
[COLOR="black"]$ sudo apt-get install git-core[/COLOR]
Android SDK
Download the SDK here: http://developer.android.com/sdk/index.html
Extract the SDK and place it in your home directory.
I renamed my SDK to android-sdk to make it easier to navigate to – this tutorial assumes you've done that as well.
Go to your home folder, press Ctrl+H to show hidden files, and open up your .bashrc file.
Add these lines at the bottom of the file:
Code:
[COLOR="black"]# Android tools
export PATH=${PATH}:~/android-sdk/tools
export PATH=${PATH}:~/android-sdk/platform-tools
export PATH=${PATH}:~/bin[/COLOR]
Find your .profile file and add this at the bottom of the file:
Code:
[COLOR="black"]PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"[/COLOR]
You have now successfully installed the Android SDK.
Install required packages. 64-bit
Code:
[COLOR="black"]$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so[/COLOR]
Code:
[COLOR="black"]$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so[/COLOR]
Install the repo:
Code:
[COLOR="black"]$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo[/COLOR]
SET UP DEPENDENCIES
Code:
cd x(x is your default ROM folder)
mkdir .repo/local_manifests
curl -L -o .repo/local_manifests/local_manifest.xml -O -L [url]https://raw.github.com/Herna1994/local_manifest/cm10.2/local_manifest.xml[/url]
repo sync -j16
After make that you will have all dependencies on good place for compile the ROM you want.
How to compile SlimROM:
Firstly I suppost you made all steps on first post.
Syncing sources:
Code:
mkdir slim4.3 && cd slim4.3
repo init -u git://github.com/SlimRoms/platform_manifest.git -b jb4.3
mkdir .repo/local_manifests
curl -L -o .repo/local_manifests/local_manifest.xml -O -L https://raw.github.com/Herna1994/local_manifest/cm10.2/local_manifest.xml
repo sync -j16
Applying the patches:
1. Go to slim4.3/device/huawei/u8800pro/patch/external_wpa_supllicant_8 and copy the file from that photo:
{
"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"
}
2. Then go to slim4.3/external/wpa_supplicant_8 and then paste the file, it must be like that:
3. Then open a terminal and put that:
Code:
cd slim4.3/external/wpa_supplicant_8
patch -p1 -N -i 0001-wext-use-combo-scan-to-avoid-SIOCSIWSCAN-error.patch
4. Go to slim4.3/device/huawei/u8800pro/patch/framework_av and copy the file from that photo:
5. Go to slim4.3/frameworks/av and paste the file, it must be like that:
6. Then open a terminal and put that:
Code:
cd slim4.3/frameworks/av
patch -p1 -N -i 0001-Add-support-for-huawei-devices.patch
7. Go to slim4.3/device/huawei/u8800pro/patch/libhardware_legacy and copy the file from that photo:
8. Go to slim4.3/hardware/libhardware_legacy and paste the file, it must be like that:
9. Then open a terminal and put that:
Code:
cd slim4.3/hardware/libhardware_legacy
patch -p1 -N -i 0001-Fix-Get-Mac-Address-For-Huawei-Devices-with-bcm.patch
10. Go to slim4.3/device/huawei/u8800pro/patch/audio-caf and copy the file from that photo:
11. Go to slim4.3/hardware/qcom/audio-caf and paste he file, it must be like that:
12. Then open a terminal and put that:
Code:
cd slim4.3/hardware/qcom/audio-caf
patch -p1 -N -i 0001-audio-msm7x30-Updates-for-MR2.patch
13. Now close the terminal and open new one and put:
Code:
cd slim4.3
lunch cm_u8800pro-userdebug && make bacon
How to compile CarbonROM:
Syncing sources:
Code:
mkdir carbon4.3 && cd carbon4.3
repo init -u https://github.com/CarbonDev/android.git -b jb3
mkdir .repo/local_manifests
curl -L -o .repo/local_manifests/local_manifest.xml -O -L https://raw.github.com/Herna1994/local_manifest/cm10.2/local_manifest.xml
repo sync -f
reserved
reserved too
It doesn't make you a dev if you compile 1 ROM.
I'm not a dev
Sent from my SGH-T769 using Tapatalk 4
Somcom3X said:
It doesn't make you a dev if you compile 1 ROM.
I'm not a dev
Sent from my SGH-T769 using Tapatalk 4
Click to expand...
Click to collapse
Okey, updated #1 post, hopes you like now
sources have been deleted once again...
what does always sources are disappearing?
desalesouche said:
what does always sources are disappearing?
Click to expand...
Click to collapse
Cm sources are screwed up atm
Sent from my SGH-T769 using Tapatalk 4
They are upgrading to 4.3 main branch
Somcom3X said:
Cm sources are screwed up atm
Sent from my SGH-T769 using Tapatalk 4
They are upgrading to 4.3 main branch
Click to expand...
Click to collapse
sorry i was talking about u8800pro device tree source on github....but no matter i have them all now....on github and also on cloud mediafire etc..., so if one somebody need i could give links...
Guys I need a qHD graphic.c for my Mega5.8 anyone can hook me up with qHD graphic.c?
Anyway desalesouche I would like the 4.3 tree(mediafire and git)
Sent from my GT-I9152 using Tapatalk 4
Rittik said:
Guys I need a qHD graphic.c for my Mega5.8 anyone can hook me up with qHD graphic.c?
Anyway desalesouche I would like the 4.3 tree(mediafire and git)
Sent from my GT-I9152 using Tapatalk 4
Click to expand...
Click to collapse
Here you can find graphics, you just need to modify them to get them for qHD:
https://github.com/Herna1994/android_device_huawei_msm7x30-common/tree/cm10.2/recovery
Rittik said:
Guys I need a qHD graphic.c for my Mega5.8 anyone can hook me up with qHD graphic.c?
Anyway desalesouche I would like the 4.3 tree(mediafire and git)
Sent from my GT-I9152 using Tapatalk 4
Click to expand...
Click to collapse
it is better to ask herna, for that for the moment i think... tree seem to be not ok... as i read all problem related to wifi etc... he would surely send you all what you need...
desalesouche said:
it is better to ask herna, for that for the moment i think... tree seem to be not ok... as i read all problem related to wifi etc... he would surely send you all what you need...
Click to expand...
Click to collapse
Yeah read about it. Am working on tree for Crater(GT-i9152) tree currently. Thanks though.
Sent from my GT-I9152 using Tapatalk 4
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
1. Ubuntu 13.10
2. patience...lots and lots of patience.
Click to expand...
Click to collapse
Here starts the fun:-
1. Installing ubuntu 13.10.
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.
Click to expand...
Click to collapse
2. Getting the kernel source.
Download source from http://opensource.samsung.com/
Type i9082 in search box and download "GT-I9082_SEA_JB_Opensource_Update1.zip"
After download unzip the source into new folder in home directory.
Type in terminal from you kernel directory.
Code:
unzip GT-I9082_SEA_JB_Opensource_Update1.zip
Then extract tar.
Code:
mkdir kernel
tar xzf kernel.tar.gz -C kernel
Click to expand...
Click to collapse
3. Setting up building environment.
Copied from http://soupdawg.wordpress.com/
All credits goes to
mysteriously inconspicuous
Click to expand...
Click to collapse
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:
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:
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:
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:
java -version
You should see something like the following:
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.12-b01, mixed mode)
Ok, back to a fresh Terminal prompt. Time for installing the guts to build stuff in Ubuntu:
Code:
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:
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:
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:
sudo nano ~/.bashrc
At the very bottom, add the following line:
Code:
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:
source ~/.bashrc
That should be everything. Now you’re ready to build Android the right way. Luck!
4. Installing toolchain
Anyway, first order of the day is to get the official arm toolchain, which I'm going to install in /usr/local/share/ since I plan to keep using it for some time:
Code:
# cd /usr/local/share/
# git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
Cloning into 'arm-eabi-4.6'...
remote: Sending approximately 124.64 MiB ...
remote: Counting objects: 33, done
remote: Finding sources: 100% (33/33)
remote: Total 580 (delta 146), reused 580 (delta 146)
Receiving objects: 100% (580/580), 124.64 MiB | 715 KiB/s, done.
Resolving deltas: 100% (146/146), done.
Now, let's add that arm toolchain to our path:
Code:
# export PATH=$PATH:/usr/local/share/arm-eabi-4.6/bin
# arm-eabi-gcc --version
arm-eabi-gcc (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5. Compiling kernel
Now we need to set the variables that will tell the OS that we're cross compiling (again, something that you may want to do in your .profile using something like alias cross='export ARCH="arm";export SUBARCH="arm";export CROSS_COMPILE="arm-eabi-"'):
Code:
# export ARCH=arm
# export SUBARCH=arm
# export CROSS_COMPILE=arm-eabi-
Finally, we can initialize our default config and get going:
Prepare source for new compilation
Code:
make bcm28155_capri_ss_baffin_rev05_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
arch/arm/mach-capri/custom_boards/Kconfig:19:warning: defaults for choice values not supported
arch/arm/mach-capri/custom_boards/Kconfig:25:warning: defaults for choice values not supported
arch/arm/mach-capri/custom_boards/Kconfig:31:warning: defaults for choice values not supported
arch/arm/mach-capri/custom_boards/Kconfig:37:warning: defaults for choice values not supported
#
# configuration written to .config
#
Code:
# make -j*
(...)
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
* stands for number of cpus your computer has.like my has 4 so I will make it j4
* bcm28155_capri_ss_baffin_rev05_defconfig is stock config, for cm11 you will have diffrent config and for some cutom kernel something else.
6. Crafting an Android boot.img
The format of this Android boot images can be found in the bootimg.h of the mkbootimg tool from the android platform/system/core source. I guess we have to start somewhere, and we'll need to produce our own images, so let's start by fetching and recompiling mkbootimg then.
Code:
# git clone https://android.googlesource.com/platform/system/core bootimg-tools
Cloning into 'bootimg-tools'...
remote: Counting objects: 92, done
remote: Finding sources: 100% (92/92)
remote: Total 19302 (delta 11674), reused 19302 (delta 11674)
Receiving objects: 100% (19302/19302), 5.87 MiB | 655 KiB/s, done.
Resolving deltas: 100% (11674/11674), done.
# cd bootimg-tools/libmincrypt/
# gcc -c *.c -I../include
# ar rcs libmincrypt.a *.o
# cd ../mkbootimg
# gcc mkbootimg.c -o mkbootimg -I../include ../libmincrypt/libmincrypt.a
mkbootimg.c: In function 'main':
mkbootimg.c:245:9: warning: assignment discards 'const' qualifier from pointer target type [enabled by default]
# cp mkbootimg /usr/local/bin/
# cd ../cpio
# gcc mkbootfs.c -o mkbootfs -I../include
# cp mkbootfs /usr/local/bin/
New improved bootimg-tools can be found at.
Code:
# wget https://github.com/pbatard/bootimg-tools/archive/master.zip
lets compile from there
Code:
# cd /usr/src/android/bootimg-tools/mkbootimg/
# wget https://raw.github.com/pbatard/bootimg-tools/master/mkbootimg/unmkbootimg.c
# gcc -o unmkbootimg unmkbootimg.c
# cp unmkbootimg /usr/local/bin/
Now at last, you have the minimum of unmkbootimg, mkbootimg and mkbootfs installed in your path, and we can get going with our testing of the kernel.
I'll assume that you have a /usr/src/android/boot where you copied your boot.img, so let's get going....
Code:
# cd /usr/src/android/boot/
# ls
boot.img
# unmkbootimg -i boot.img
kernel written to 'kernel' (4738320 bytes)
ramdisk written to 'ramdisk.cpio.gz' (516287 bytes)
To rebuild this boot image, you can use the command:
mkbootimg --base 0 --pagesize 4096 --kernel_offset 0xa2008000 --ramdisk_offset 0xa3000000 --second_offset 0xa2f00000 --tags_offset 0xa2000100 --cmdline 'console=ttyS0,115200n8 [email protected] androidboot.console=ttyS0 vc-cma-mem=0/[email protected]' --kernel kernel --ramdisk ramdisk.cpio.gz -o boot.img
Code:
# ls
boot.img kernel ramdisk.cpio.gz
As an aside that you don't need to run, but since it should be elementary that this is the basic functionality you want from a proper boot image unpack tool, we can confirm that the data provided by the unpack tool will produce a boot.img that is binary identical to the original one-
Code:
# mkbootimg --base 0 --pagesize 4096 --kernel_offset 0xa2008000 --ramdisk_offset 0xa3000000 --second_offset 0xa2f00000 --tags_offset 0xa2000100 --cmdline 'console=ttyS0,115200n8 [email protected] androidboot.console=ttyS0 vc-cma-mem=0/[email protected]' --kernel kernel --ramdisk ramdisk.cpio.gz -o myboot.img
Code:
# ls
boot.img kernel myboot.img ramdisk.cpio.gz
# cmp -l boot.img myboot.img
#
Moving on. Since we just want to test a kernel, we shouldn't really have to touch the cpio image (ramdisk), but then again, my goal here is to give you as many pointers as I can, so we might as well see how we craft our own ramdisk while we're at it. What we're going to do here, as an academical exercise, is add an it_works file at the root of the filesystem, which we'll look for after we booted, to confirm that can use our modified stuff all the way through.
Code:
# mkdir ramdisk
# cd ramdisk
# gunzip -c ../ramdisk.cpio.gz | cpio -iu
1841 blocks
# ls
charger init.superuser.rc
data init.trace.rc
default.prop init.usb.rc
dev lpm.rc
file_contexts proc
fstab.capri_ss_baffin property_contexts
fstab.goldfish res
init sbin
init.bcm281x5.usb.rc seapp_contexts
init.capri_ss_baffin.rc sepolicy
init.cm.rc sys
init.environ.rc system
init.goldfish.rc ueventd.capri_ss_baffin.rc
init.log.rc ueventd.goldfish.rc
init.rc ueventd.rc
init.recovery.capri_ss_baffin.rc
# touch it-works
# ls
charger init.superuser.rc
data init.trace.rc
default.prop init.usb.rc
dev it-works
file_contexts lpm.rc
fstab.capri_ss_baffin proc
fstab.goldfish property_contexts
init res
init.bcm281x5.usb.rc sbin
init.capri_ss_baffin.rc seapp_contexts
init.cm.rc sepolicy
init.environ.rc sys
init.goldfish.rc system
init.log.rc ueventd.capri_ss_baffin.rc
init.rc ueventd.goldfish.rc
init.recovery.capri_ss_baffin.rc ueventd.rc
# find . | cpio -o -H newc | gzip > ../myramdisk.cpio.gz
1850 blocks
# cd ..
# ls
boot.img kernel myramdisk.cpio.gz ramdisk/ ramdisk.cpio.gz
We're finally set for the last part, where we copy the kernel we compiled earlier, and invoke mkbootimg with the set of parameters we got from unmkbootimg, and use both our modified kernel and cpio image:
Code:
# cp ~/kernel/arch/arm/boot/zImage .
# ls
boot.img kernel myramdisk.cpio.gz ramdisk/ ramdisk.cpio.gz zImage*
# mkbootimg --base 0 --pagesize 4096 --kernel_offset 0xa2008000 --ramdisk_offset 0xa3000000 --second_offset 0xa2f00000 --tags_offset 0xa2000100 --cmdline 'console=ttyS0,115200n8 [email protected] androidboot.console=ttyS0 vc-cma-mem=0/[email protected]' --kernel zImage --ramdisk myramdisk.cpio.gz -o myboot.img
# ls
boot.img kernel myboot.img myramdisk.cpio.gz ramdisk/ ramdisk.cpio.gz zImage*
7. testing new boot.img
Finally, a custom boot.img we can test. Let's press on by copying this myboot.img file into the directory we have adb and fastboot installed and run the following ser of commands which, unlike what many other guides seem to advise (what the heck, guys?), is NOT going to flash the kernel/boot.img but simply run it from memory. This means that, in case there's any mishap, you can simply power the "grand" off and you'll be good as new:
Code:
# ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# ./adb reboot bootloader
# ./fastboot boot myboot.img
downloading 'boot.img'...
OKAY [ 0.223s]
booting...
OKAY [ 0.023s]
finished. total time: 0.246s
All in all, this looks fairly good. And a quick look to the root filesystem (through adb shell or through ssh) will also confirm that our it_works file is there, so we can also add whatever we want on the initial filesystem. Neat!
From there on, you can go ahead and tweak your kernel and initial filesystem exactly as you see fit. And after you have tested that everything works as it should, you can go ahead and flash the boot partition with your shiny custom boot.img, using:
ODIN or cwm flashable zip
This is last part...
8. making flashable files
Tar your boot.img file so it can be flashed with Odin.
tar cvf mynewkernel.tar boot.img
md5sum -t mynewkernel.tar >> mynewkernel.tar
mv mynewkernel.tar mynewkernel.tar.md5
Click to expand...
Click to collapse
Note:- myboot.img is renamed to boot.img
9.Flashing kernel through ODIN
Flash mynewkernel.tar.md5 with odin under PDA. Please follow the flashing guides found in other posts.
Hope i help few of you...
Please HIT thanks if you find this helpful.:laugh:
Thankyou k2wl for this tutorial and pls also tell how to get pawitp source code for rom and kernel from his repositries : https://github.com/pawitp/android_device_samsung_i9082
https://github.com/pawitp/android_kernel_samsung_i9082
Repo tool is not working because there is no android manifest file in his repository
Pls help me
mr.phantom said:
Thankyou k2wl for this tutorial and pls also tell how to get pawitp source code for rom and kernel from his repositries : https://github.com/pawitp/android_device_samsung_i9082
https://github.com/pawitp/android_kernel_samsung_i9082
Repo tool is not working because there is no android manifest file in his repository
Pls help me
Click to expand...
Click to collapse
run the following in terminal
$git clone https://github.com/pawitp/android_device_samsung_i9082.git
and
$ git clone https://github.com/pawitp/android_kernel_samsung_i9082.git
k2wl said:
run the following in terminal
$git clone https://github.com/pawitp/android_device_samsung_i9082.git
and
$ git clone https://github.com/pawitp/android_kernel_samsung_i9082.git
Click to expand...
Click to collapse
well i already have done that cloning for cm11 but it had only downloaded files around 200KB and i dont think so that cm11 source code would be that much small
hi
mr.phantom said:
well i already have done that cloning for cm11 but it had only downloaded files around 200KB and i dont think so that cm11 source code would be that much small
Click to expand...
Click to collapse
That's not cm11 source. For that u need another tutorial.
Meanwhile try wiki.CyanogenMod.org
It has instructions for Building for new device
Code:
unmkbootimg.c:25:21: fatal error: bootimg.h: No such file or directory
#include "bootimg.h"
^
compilation terminated.
Getting this while compiling unmkbootimg
i actually am surprises that there are many unofficial CMs in high ends with HALO IN IT.. though our developers try to make rom as close to real one as possible...what if the users want halo integration (as developers only know it :/)
help..
akiratoriyama said:
Code:
unmkbootimg.c:25:21: fatal error: bootimg.h: No such file or directory
#include "bootimg.h"
^
compilation terminated.
Getting this while compiling unmkbootimg
Click to expand...
Click to collapse
try compiling as a root.
k2wl said:
try compiling as a root.
Click to expand...
Click to collapse
How to convert zImage to boot.img
Or do I have to directly copy it ?
Sent from my GT-I9082 using Tapatalk
raghavsharmaxda said:
i actually am surprises that there are many unofficial CMs in high ends with HALO IN IT.. though our developers try to make rom as close to real one as possible...what if the users want halo integration (as developers only know it :/)
help..
Click to expand...
Click to collapse
k2wl said:
try compiling as a root.
Click to expand...
Click to collapse
akiratoriyama said:
How to convert zImage to boot.img
Or do I have to directly copy it ?
Sent from my GT-I9082 using Tapatalk
Click to expand...
Click to collapse
read the last section of post, it covers the conversion of zimage to boot.img...
seems you compiled successfully.
congrats.:victory:
But what about boot.img ?
We need a boot.img in /android/boot ?
Now at last, you have the minimum of unmkbootimg, mkbootimg and mkbootfs installed in your path, and we can get going with our testing of the kernel.
I'll assume that you have a /usr/src/android/boot where you copied your boot.img, so let's get going....
Click to expand...
Click to collapse
Hi @k2wl.For the part "make -j8",if you don't mind putting a sign for others to only compile at the amount of their CPU have otherwise it will caused some error for others who are compiling
1 CPU= make -j1 with least error
Sent from my iPad using Tapatalk
Really nice guide especially about packing the initramfs with the zimage to make boot.img.
Sent from my GT-I9082 using Tapatalk
akiratoriyama said:
But what about boot.img ?
We need a boot.img in /android/boot ?
Click to expand...
Click to collapse
take one from my stock kernel zip....
Techix18 said:
Hi @k2wl.For the part "make -j8",if you don't mind putting a sign for others to only compile at the amount of their CPU have otherwise it will caused some error for others who are compiling
1 CPU= make -j1 with least error
Sent from my iPad using Tapatalk
Click to expand...
Click to collapse
thanks for suggestion.
skullface said:
Really nice guide especially about packing the initramfs with the zimage to make boot.img.
Sent from my GT-I9082 using Tapatalk
Click to expand...
Click to collapse
thanks....will modify more..
k2wl said:
That's not cm11 source. For that u need another tutorial.
Meanwhile try wiki.CyanogenMod.org
It has instructions for Building for new device
Click to expand...
Click to collapse
ok will check it out and will you make a guide for that also??
mr.phantom said:
ok will check it out and will you make a guide for that also??
Click to expand...
Click to collapse
if people wanted it, will make cm11 compilation from source tutorial for it.
Thanks to ya k2wl
{
"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"
}
Sent from my GT-I9082 using Tapatalk
happy developing.....glad i helped you...
keep trying for learning new features...
k2wl said:
if people wanted it, will make cm11 compilation from source tutorial for it.
Click to expand...
Click to collapse
Pls k2wl make a new tutorial which include cm11 compilation for grand from source and its kernel also
Hey @k2wl
Just wanted to say thank you for this comprehensive guide. Very detailed.
I never had any interest in tweaking a kernel. I am more of a java guy. But after reading your guide, I thought, why not?!
So I started working on it. Now I have a fully functional kernel compiled separately from the ROMs that I compile.
I even named it. Nebula Kernel.
Learning alot about kernels since I started working on it. As I am tweaking nebula for myself and i'll use this kernel as my daily driver so i'll add tweaks and governors according to me, the ones which I'll use. I like keeping things light and simple! I'll use your github for reference and help. If I face any problems, I'll ask you.
Thank you for the guide!
Make your 'own' KitKat-ROM today!
V1.1 - 20140219 Repos changed
V1.0 - 20140218 Initial release
Thank you note: Many thanks to dhacker29 for dedicating his time developing for this fine piece if hardware.
{
"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 am using Ubuntu 13.10 64-bit.
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 USER WITH NORMAL RIGHTS. DON'T INSTALL AS ROOT!
II. Installation of the required packages (Ubuntu 13.10 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 CM11.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
That's it.
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 ~/cm11
$ cd ~/cm11
Initialize Repo:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
and enter your credentials.
Download the sources:
Code:
$ repo sync
Wait until it's finished - takes some time to download the hefty 12 GB of source code!
Have a break, have a KitKat!
If the process stops responding, 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 files:
Add repositories for the MOTO G 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 already there, create it with
Code:
$ mkdir ~/cm11/.repo/local_manifests
Use this code to create the file falcon.xml
Code:
$ gedit ~/cm11/.repo/local_manifests/falcon.xml
Paste the following lines to the editor (20140219: repos changed to CyanogenMod)
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="[COLOR="DarkRed"]CyanogenMod[/COLOR]/android_device_motorola_falcon" path="device/motorola/falcon" remote="github" revision="cm-11.0"/>
<project name="[COLOR="DarkRed"]CyanogenMod[/COLOR]/android_kernel_motorola_msm8226" path="kernel/motorola/msm8226" remote="github" revision="cm-11.0"/>
<project name="[COLOR="DarkRed"]CyanogenMod[/COLOR]/android_device_motorola_msm8226-common" path="device/motorola/msm8226-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.
Use this code to create the file vendor.xml (in case you already have a vendor.xml file because you are buiilding for multiple devices, just add the project line to your vendor.xml file)
Code:
$ gedit ~/cm11/.repo/local_manifests/vendor.xml
Paste the following lines to the editor
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.
Run
Code:
$ repo sync
again to get the files needed.
Download the necessary prebuilts from cyanogenmod by running
Code:
$ cd ~/cm11
$ vendor/cm/get-prebuilts
And you're done syncing!
V. Building the ROM
Now build it:
Code:
$ brunch falcon
And the building process starts. Have patience now. Building takes around half an hour on fast systems and a lot more on older and slower machines.
When everything worked as it should you will find your new ROM-image in ~/cm11/out/target/product/falcon
It is called cm-11-DATE-UNOFFICIAL-falcon-zip. You can flash it via CWM/TWRP 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 ~/cm11
$ repo sync
$ . build/envsetup.sh
$ brunch falcon
Compiling again takes less time than compiling took the first time because it's only building new parts while reusing old parts that haven't changed.
Happy building!
Reserved
Reserved
Good
Thanks for taking the effort to write this down.
Docker template for building CyanogenMod
Have you seen this?
http://forum.xda-developers.com/showthread.php?t=2650345
Guide changed
New V1.1 - 20140219 Repos changed
First post has been changed accordingly.
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 ~/cm11
$ repo sync
$ . build/envsetup.sh
$ brunch falcon
Compiling again takes less time than compiling took the first time because it's only building new parts while reusing old parts that haven't changed.
Click to expand...
Click to collapse
Is it not necessary to also run this again?
Code:
cd vendor/cm
./get-prebuilts
cd ../..
PS: At the end of part IV youve got "get-prebuilts" instead of "./get-prebuilts".
if you could add option to build with Linaro-Toolchain
tazlooney89 said:
if you could add option to build with Linaro-Toolchain
Click to expand...
Click to collapse
+1
michalurban said:
Is it not necessary to also run this again?
Code:
cd vendor/cm
./get-prebuilts
cd ../..
Click to expand...
Click to collapse
It is the pre-built terminal program. You just need it the first time you build. Otherwise you would get an error message while compiling the ROM. It is unnecessary to get the program over and over again. Since it's pre-built, it gets its updates from the market/play store.
michalurban said:
PS: At the end of part IV youve got "get-prebuilts" instead of "./get-prebuilts".
Click to expand...
Click to collapse
Something got mixed up there. Changed my lines. But your solution works too, of course. Thanks for pointing me to it.
tazlooney89 said:
if you could add option to build with Linaro-Toolchain
Click to expand...
Click to collapse
Really depends on the time I will have on my hands and the interest the thread draws. Maybe I'll add some tweaks and tricks including a basic set of compiling against Linaro TC 4.8.x next week. We will see...
Is there an automatic way to have the build.prop file (the system/build.prop option ro.build.date) altered?
I have a script renaming the compiled rom - to make the filaname end with "-michalurban-$NOW" where $NOW is a variable containing date and time of creation. And I would like to remove the ro.build.date value and replace it with michalurban-$NOW so I would easily know if Im using Official NIGHTLY or my build ...
My Linux (Bash, whatever) skill is knee deep in manure Im afraid ... is this possible?
michalurban said:
Is there an automatic way to have the build.prop file (the system/build.prop option ro.build.date) altered?
I have a script renaming the compiled rom - to make the filaname end with "-michalurban-$NOW" where $NOW is a variable containing date and time of creation. And I would like to remove the ro.build.date value and replace it with michalurban-$NOW so I would easily know if Im using Official NIGHTLY or my build ...
My Linux (Bash, whatever) skill is knee deep in manure Im afraid ... is this possible?
Click to expand...
Click to collapse
I usually change the build.prop indirectly before the building process.
I delete a few files before rebuilding. E.g. the old build.prop with
Code:
rm -f out/target/product/falcon/system/build.prop
Whenever I am setting up a new build environment I edit the file common.mk in /vendor/cm/config
In line 317 or 323 you could try to change the value of CM_DISPLAY_VERSION or ro.cm.display.version to suit your needs.
Or you can do what I am doing - I usually add a time value to my ROMs (Rom-name and CyanogenMod-version under 'About phone'):
line 288 reads:
Code:
CM_VERSION := $(PRODUCT_VERSION_MAJOR)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
and I changed it to
Code:
CM_VERSION := $(PRODUCT_VERSION_MAJOR)-$(shell TZ=":Europe/Berlin" date +%Y%m%d\-%H%M%S)[email protected]$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
I also added [email protected] You can change practically everything here.
Then save the file and rebuild.
The CyanogenMod Version in 'about phone' should look like this when you flash the ROM:
Happy building!
Is it possible to do this on a NTFS-formatted drive? Im running low on space on my linux /home directory but Ive got plenty of space on my Win7 NTFS drive ... Im just afraid of file permission troubles ...
you can make an image file on the NTFS partition loopmount it, then format it to ext4.
Sent from my XT1032
Rhyn said:
you can make an image file on the NTFS partition loopmount it, then format it to ext4.
Sent from my XT1032
Click to expand...
Click to collapse
You mean to create a file on the NTFS partition, format it as EXT4, mount it somewhere and then use it for compilation via Ubuntu but "on" the NTFS drive? Wouldnt it mean a hard hit to the performance? I suppose it wont but as my PC is not high-end everything matters ...
BTW I found some guide on the Net and Ive modified it for my needs (probably lol). Is it ok?
Code:
# Create file to store EXT4 partition on NTFS partition (100GB)
dd if=/dev/urandom of=/media/D/linux.img bs=2048 count=50000000
# Create and format loop device (of the EXT4 file)
losetup /dev/loop0 /media/D/linux.img
mkfs.ext4 -b 1024 /dev/loop0
# Mount the new EXT4 file
mount -o loop /media/D/linux.img /home/michal/NTFSdrive
EDIT: Script tested and running fine (I got so excited I wrote this edit in czech not english the first time lol).
yeah I meant exactly that. This guide seems ok. The performance won't be as good as with a native partition, but won't be terribly bad either
Sent from my XT1032
Another weird question of mine:
I deleted all files, set the CCACHE to be 100GB using command "prebuilts/misc/linux-x86/ccache/ccache -M 100G" which was confirmed and started the whole process. But after successfully finishing compilation the directory is again "only" 50GB ... why? I expected it to be twice as large ...
michalurban said:
Another weird question of mine:
I deleted all files, set the CCACHE to be 100GB using command "prebuilts/misc/linux-x86/ccache/ccache -M 100G" which was confirmed and started the whole process. But after successfully finishing compilation the directory is again "only" 50GB ... why? I expected it to be twice as large ...
Click to expand...
Click to collapse
You have to inform the compiler that the cache will be used first, then config a directory and last, set the cache size to xx GB which creates the hidden dir. (to see it, use Ctrl+H)
Code:
$ export USE_CCACHE=1
$ export CCACHE_DIR=/your_path_here/.ccache
$ prebuilts/misc/linux-x86/ccache/ccache -M 100G
Btw: it's a good idea to use a 'make clean' first...
To see what's going on while caching, open another terminal, go to your cm11 root dir and execute
Code:
watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s
Now, Ive got a script building the ROM for me. It usually works fine for first sync and compilation as well as for any secondary syncs. But sometimes it returns a message that something isnt present in some file (it differs) and the compilation ends with "Error 1" which I found to be "Out of memory". Now, the guide at CM web says that I should
Code:
edit: system/build/tools/releasetools/common.py
change: java -Xmx2048m to java -Xmx1024m or java -Xmx512m
BTW the right file path is
Code:
build/tools/releasetools/common.py
But Im curious if this change could be done in an automated way by the script (and Im not really familiar with sed, awk and all this regular expressions) ... If not, I guess Ill put some READ command before the compilation itself, giving me time to change it - or just add "nano system/build/tools/releasetools/common.py". But still, automatic way would be better.
EDIT: Solution (with JAVAMEM being set in the beginning of the script):
Code:
sed -i 's/Xmx2048m/Xmx'$JAVAMEM'm/' build/tools/releasetools/common.py
ADD:
Weird, when I try to set the directory and size for CCACHE, nothing happens - it stays at /home/michal/.ccache and 100GB ...
About two days ago a new problem emerged. I followed the guide exactly but in the end, after "brunch falcon"
Code:
make: *** [/home/michal/Build/MotoG-CM11/out/target/product/falcon/obj/SHARED_LIBRARIES/hwcomposer.msm8226_intermediates/hwc_utils.o] Error 1
It happened before so I erased all content of the directory and did all the commands from scratch. But its the same ... even after changing Java memory something (Xmx2048m) to 1024, which was recommended in the CM guide.
This guide will help you you to compile your "own" Paranoid Android ROM!
V1.0 - 2014-06-09
{
"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"
}
Picture loaned from SuperHanss Paranoid Android thread.
CREDITS AND THANKS TO:
Raum1807 for his awesome cm11 guide, I used that as a template.
SuperHanss
gokussjx
Pirateghost
SferaDev
MasterAwesome
Paranoid Android TEAM
CM TEAM
Please pm me if i forgot someone or if have to take this down!
Overview
1: Preparation
2: Install the required packages to build
3. Install & setup Java
4. Initialize repo and sources
5. Building the ROM
6. Renew sources and build again
I recommend you to read the whole guide one time without doing anything. Then you can start over and mimic the steps.
1. Preparation
Things you need for building:
A computer
An internet connection
An open mind and common knowledge
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I am using Ubuntu 14.04 LTS 64-bit. I am running this in a Virtual-box over Windows and it is working fine for me. You can find simple guides on how to setup your Virtual-box on Google. I recommend using at least 100 GBs of hard drive space.
Use the built in 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!
2. Install the required packages to build (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
3. Install & setup java
You need a version 6 Java Development Kit for building Paranoid Android. 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. I use OpenJDK6 and it is working just fine!
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
That's it.
4. Repo and sources
Install repo:
Repo is a tool that makes it quite easy to download and maintain the sources of Paranoid Android.
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 ~/paranoid
$ cd ~/paranoid
Initialize Repo:
Code:
$ repo init -u git://github.com/AOSPA-legacy/manifest.git -b kitkat
Here you will probably get an error. You have to enter your credentials
Run these two commands to setup your crendentials.
Code:
$ git config --global user.name "Your Name"
$ git config --global user.email [email protected]
Setup sources:
Now you will download the source code.
Code:
$ repo sync
You can make some customizations to these commands, for example you can download more items parallel. Of course this will take more bandwidth so it’s up to you.
Code:
$ repo sync -h
Usage: repo sync [...]
Options:
-h, --help show this help message and exit
-f, --force-broken continue sync even if a project fails to sync
-l, --local-only only update working tree, don't fetch
-n, --network-only fetch only, don't update working tree
-d, --detach detach projects back to manifest revision
-q, --quiet be more quiet
-jJOBS, --jobs=JOBS number of projects to fetch simultaneously
-s, --smart-sync smart sync using manifest from a known good build
repo Version options:
--no-repo-verify do not verify repo source code
So for example if you want to fetch 10 jobs at the same time use this command.
Code:
$ repo sync -j10
Wait until it's finished - takes some time to download the hefty 12 GB of source code!
Take a break, have a KitKat!
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
5. Building the ROM
Turn on caching to speed up your build.
You can speed up subsequent builds by adding
Code:
export USE_CCACHE=1
to your ~/.bashrc file.
To access this file run the following
Code:
$ gedit ~/.bashrc
Then, specify the amount of disk space to dedicate to ccache by typing this from the top of your Android tree:
Code:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
where 50G corresponds to 50GB of cache. This only needs to be run once and the setting will be remembered. Anywhere in the range of 25GB to 100GB will result in very noticeably increased build speeds (for instance, a typical 1hr build time can be reduced to 20min). If you're only building for one device, 25GB-50GB is fine. If you plan to build for several devices that do not share the same kernel source, aim for 75GB-100GB. This space will be permanently occupied on your drive, so take this into consideration.
You have all the standard sources ready but some specific sources for your device are still missing. Luckily they will be downloaded when you start to build your rom. Again be sure to be in your top directory.
Now build it:
Code:
$ ./rom-build.sh honami
And the building process starts. First it creates a new manifest called roomservice.xml then it downloads the device specific kernels and such.
If it gives you an error, try to CTRL+C and run repo sync. Then re-do the previous step.
Now it’s time to practice your patience again, the first build will take a long time. A couple of hours depending on your machine setup.
When everything worked as it should you will find your new ROM-image in ~/paranoid/out/target/product/honami
It is called pa_honami-4.4-BETA x-DATE .zip You can flash it via CWM/TWRP as usual.
6. Renew sources and build again
Whenever you like to update your sources and build a new version you have to run these four simple commands:
Code:
$ cd ~/paranoid
$ repo sync
$ ./rom-build.sh honami
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.
Good luck and have fun while building!
CREDITS AND THANKS TO:
Raum1807 for his awesome cm11 guide, I used that as a template.
SuperHanss
gokussjx
Pirateghost
SferaDev
MasterAwesome
Paranoid Android TEAM
CM TEAM
Please pm me if i forgot someone or if have to take this down!
reserved
I'm trying to port the latest PA to nexus 10. I did the repo sync, it sync-ed for hours, now I'd like to fire ./rom-build.sh, the only problem is that there is no bom-build.sh to be found in my working dir.... How can that be?
Thank you!
How do I compile for x86_64? Really want to put it on a Surface Pro 6 (2018) and install the linux-surface kernel patches.
The Sony-Kitakami dev team is glad to announce a guide on how to build CM13 or any CM13 based ROM for the entire Z5- series
Note: If you plan to release a ROM using our sources then credits aren't required, however we would deffinately appriciate it very much!
Before we get started
What you need
Any of our supported devices
A PC that is capable of running linux
An Internet connection
And lots of lots of patience
Getting started
Setting up Linux
To be able to build a ROM fully from source a Linux based operating system is required. This is due to the fact that windows is unable to compile the android source code due to lacking tools/libaries. After all you're compiling Linux on Linux (Because android is Linux). We strongly recommend to have AT LEAST 50 GB of space for Ubuntu!!!
Please be aware that this guide is target audiences with Ubuntu specifically and so may not work on other distros. Because of this we prefer ubuntu for everyone that is coming from windows.
Because this guide isn't about how to install ubuntu, I'll let this guide explain all for you : http://www.linuxtechi.com/ubuntu-15-10-desktop-installation-guide/
Installing the required packages
We will start off by downloading openjdk 7 (Note: Open JDK 8 isn't supported by CM yet).
Please open the terminal and enter or copy paste the following :
Code:
sudo apt-get update && sudo apt-get install openjdk-7-jdk
After entering the password (Note: you won't be able to see any output when typing the password) hit enter and then type "y" and hit enter again.
Once this is completed we will download the required packages. Please copy paste the following into your terminal :
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 schedtool
You may have to enter your password again after hitting enter. Once that is done enter "y" again and hit enter again.
Additionally you can set up ccache by entering the following into the terminal :
Code:
echo 'export USE_CCACHE=1' >> ~/.bashrc
after this has been done, restart your PC.
Then we will set up git. Replace "Your name" with your name and "[email protected]" with your email :
Code:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Now we will need to set up the repo tool. Copy the following into the terminal:
Code:
mkdir ~/bin && PATH=~/bin:$PATH && echo 'PATH=~/bin:$PATH' >> ~/.bashrc && curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
Guides
CyanogenMod 13
Getting the CM13 source
Start out by making a directory called cm13 in your home dir by running the following command :
Code:
mkdir ~/cm13/
Now we will initialize the CM13 repository by entering the following in your terminal :
Code:
cd ~/cm13/ && repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0
We are now coming to the worst part and that is downloading the entire 20GB big CM13 source code. To sync the source code, run the following command :
Code:
repo sync
And now wait.... and wait..... and wait....... until it's done
Getting the Z5/Z5C/Z5P source
To clone the device specific source code we'll have to introduce you to some of the codenames as those are used for simplifying reasons when building from source
Code:
NAME CODENAME
Sony Xperia Z5 sumire
Sony Xperia Z5 Compact suzuran
Sony Xperia Z5 Premium satsuki
We will start off by cloning the appropriate manifests for your device. Please enter the following and make sure to replace yourdevicecodename with your device codename :
Code:
cd ~/cm13/ && git clone https://github.com/Sony-Kitakami/android_.repo_local_manifests.git -b cm-13.0-yourdevicecodename .repo/local_manifests
Now we will sync our device specific source like this :
Code:
repo sync --force-sync
This could again take some time depending on your connection as the kernel source is quite heavy.
Building the ROM
We will now get to the big part, which is compiling. Note this could take from 1 hour to more than 10 hours depending on how good your PC is. Replace yourdevicecodename with your targeted device codename.
Please copy the following to your terminal line by line
Code:
cd ~/cm13/
cd .repo/local_manifests/ && git pull && cd ../.. && repo sync --force-sync
. build/envsetup.sh
lunch
cm_yourdevicecodename-userdebug
mka clobber
mka bacon
After a long time of waiting you should be done and your CyanogenMod package should be located in home/cm13/out/target/product/yourdevicecodename/
Congratulations! You have now build your very own CM13 ROM from source!
CyanogenMod 13 based ROMs
If you are planning to build a CM13 based or similar ROM (Bliss Pop, RR, Slim etc.), we're expecting you to be a more advanced user. As much as we would like to give a strict guide, we simply can't cover all as there are always differences between each and every ROM.
You will have to start off by downloading the ROM source. Again this should be similar to CM but the git links are different.
Ex:
Code:
RR = repo init -u [url]https://github.com/ResurrectionRemix/platform_manifest.git[/url] -b marshmallow
Bliss = repo init -u [url]https://github.com/BlissRoms/platform_manifest.git[/url] -b mm6.0
and much more. Most of them can be found on the ROMs official git team under the platform_manifest repo.
Here is where things get hard. You will have to edit our manifests and adjust them to work with your target ROM. This is nearly impossible to explain as each ROM contains different repos that may overlap with the CM ones or it may lack repos that you're trying to remove. In other words, you will need to learn how to use the local manifests. A nice guide exists here https://wiki.cyanogenmod.org/w/Doc:_Using_manifests
Once this is done you will have to adjust your device tree to work with your specific ROM. Again this is always different. The best way to learn is to compare a CM tree with a tree from a different ROM
Ex:
Samsung Galaxy S5 mini tree for CyanogenMod : https://github.com/cm-3470/android_device_samsung_kminilte
Samsugn Galaxy S5 mini tree for BlissPop : https://github.com/cm-3470/android_device_samsung_kminilte/tree/bosp-6
The main differences are the cm.mk or device.mk files etc.
Here is a commit that show the transfer from CM to Bliss Pop which usually isn't very hard
https://github.com/cm-3470/android_...mmit/5e902e7dd228c6804b2735af9a96ea02969aa2cf
Once this is completed you can run your build and release it!
XDA:DevDB Information
How to build CM13 from source for the Z5, ROM for the Sony Xperia Z5
Contributors
CTXz, zacharias.maladroit, Moonbutt74
Source Code: https://github.com/Sony-Kitakami
ROM OS Version: 6.0.x Marshmallow
ROM Firmware Required: Stock Marshmalllow
Based On: CyanogenMod
Version Information
Status: Alpha
Created 2016-04-12
Last Updated 2016-04-15
Reserved
Reserved
Thanks for posting the guide
I followed the steps, but got stuck at the command: "cd ~/cm13/ && git clone [email protected]:Sony-Kitakami/android_.repo_local_manifests.git -b cm-13.0-sumire"
It returned this to me:
Cloning into 'android_.repo_local_manifests'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
EDIT: Never mind, I investigated, and found out that I had to generate an SSH key and link that to my GitHub account. If anyone needs help with this, I used this guide: https://help.github.com/articles/generating-an-ssh-key/
Uclydde said:
Thanks for posting the guide
I followed the steps, but got stuck at the command: "cd ~/cm13/ && git clone [email protected]:Sony-Kitakami/android_.repo_local_manifests.git -b cm-13.0-sumire"
It returned this to me:
Cloning into 'android_.repo_local_manifests'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
EDIT: Never mind, I investigated, and found out that I had to generate an SSH key and link that to my GitHub account. If anyone needs help with this, I used this guide: https://help.github.com/articles/generating-an-ssh-key/
Click to expand...
Click to collapse
Hey, sorry for that. I had git set to ssh like and forgot that they require a keygen. I've changed it to https://github.com/Sony-Kitakami/android_.repo_local_manifests.git -b cm-13.0-yourdevicecodename so it no longer needs a key
Actually, is you are building CM13 and using Ubuntu 14.04 or up, you just need to type:
Code:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip
Okay, I hit another bump. When I type: "cd .repo/local_manifests/ && git pull && cd ../.. && repo sync --force-sync"
It returns:
bash: cd: .repo/local_manifests/: No such file or directory
zhangyang_haha said:
Actually, is you are building CM13 and using Ubuntu 14.04 or up, you just need to type:
Code:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip
Click to expand...
Click to collapse
No, you'll be missing quite some packages
Sent from my E5823 using XDA-Developers mobile app
Uclydde said:
Okay, I hit another bump. When I type: "cd .repo/local_manifests/ && git pull && cd ../.. && repo sync --force-sync"
It returns:
bash: cd: .repo/local_manifests/: No such file or directory
Click to expand...
Click to collapse
Ok updated again. Please run this.
cd ~/cm13/ && git clone https://github.com/Sony-Kitakami/android_.repo_local_manifests.git -b cm-13.0-yourdevicecodename .repo/local_manifests
CTXz said:
Ok updated again. Please run this.
cd ~/cm13/ && git clone https://github.com/Sony-Kitakami/android_.repo_local_manifests.git -b cm-13.0-yourdevicecodename .repo/local_manifests
Click to expand...
Click to collapse
Yay, that worked! However, I got to the "cm_yourdevicecodename-userdebug" line, so I entered "cm_sumire-userdebug", but that returned: "cm_sumire-userdebug: command not found"
Uclydde said:
Yay, that worked! However, I got to the "cm_yourdevicecodename-userdebug" line, so I entered "cm_sumire-userdebug", but that returned: "cm_sumire-userdebug: command not found"
Click to expand...
Click to collapse
This needs a
Code:
repo --sync
in between
Uclydde said:
Yay, that worked! However, I got to the "cm_yourdevicecodename-userdebug" line, so I entered "cm_sumire-userdebug", but that returned: "cm_sumire-userdebug: command not found"
Click to expand...
Click to collapse
When you type lunch it will show a big list of devices and prompt for an input. Enter cm_sumire-userdebug. You can also however run
Code:
lunch cm_sumire-userdebug
Sent from my E5823 using XDA-Developers mobile app
Nice guide, buddy
Binaries have been updated to v5a,
v4 is included in this, can you update please? I did it manually and got it to boot
I'm not able to push them to github.
http://developer.sonymobile.com/downloads/tool/software-binaries-for-aosp-m-android-6-0/
celderic said:
Binaries have been updated to v5a,
v4 is included in this, can you update please? I did it manually and got it to boot
I'm not able to push them to github.
http://developer.sonymobile.com/downloads/tool/software-binaries-for-aosp-m-android-6-0/
Click to expand...
Click to collapse
Is the camera working for you ?
Did the focus improve ? or are still changes needed ?
zacharias.maladroit said:
Is the camera working for you ?
Did the focus improve ? or are still changes needed ?
Click to expand...
Click to collapse
It doesn't work for me with v4, or v5a
Using the guide posted here, nothing changed only updated to v5a manually.
I haven't bothered to look through the log yet, bur it says camera hardware inaccessible or something like that I forget the exact wording. With v4 and v5a, I even downloaded the source again to make sure it wasn't a problem on my end.
I'll try and have a proper look tomorrow
celderic said:
It doesn't work for me with v4, or v5a
Using the guide posted here, nothing changed only updated to v5a manually.
I haven't bothered to look through the log yet, bur it says camera hardware inaccessible or something like that I forget the exact wording. With v4 and v5a, I even downloaded the source again to make sure it wasn't a problem on my end.
I'll try and have a proper look tomorrow
Click to expand...
Click to collapse
Yeah, we kinda apologize for that. My linux environment has broken hard after upgrading to ubloatu, i mean Ubuntu 16.04... I'm busy updating to debian now, and will most likely stick with debian jessie as sid and stretch ended in an huge catastrophy. Thanks to @moonbutt74 for not warning me. (<- Only a joke, he actually predictied that sid will be a catastrophy but I didn't listen cuz that's me). I'll also most likely need to update the guide too as we no longer prefer/recommend ubuntu 16.04
Sent from my E5823 using XDA-Developers mobile app
celderic said:
It doesn't work for me with v4, or v5a
Using the guide posted here, nothing changed only updated to v5a manually.
I haven't bothered to look through the log yet, bur it says camera hardware inaccessible or something like that I forget the exact wording. With v4 and v5a, I even downloaded the source again to make sure it wasn't a problem on my end.
I'll try and have a proper look tomorrow
Click to expand...
Click to collapse
@celderic
did you do any modifications to the repos ?
If not did the kernel built with the ROM work for you ?
Thanks
edit:
v04 and v05a binary blobs are the same for us (Kitakami)
Changes in v05a was for kanuti, rhine, shinano and yukon
zacharias.maladroit said:
@celderic
did you do any modifications to the repos ?
If not did the kernel built with the ROM work for you ?
Thanks
edit:
v04 and v05a binary blobs are the same for us (Kitakami)
Changes in v05a was for kanuti, rhine, shinano and yukon
Click to expand...
Click to collapse
Sorry been on holiday not had time to reply on here, oh I didn't realise they where the same for our device.
I didn't modify the repos, and yes the stock cm kernel booted fine.
openjdk-7 isnt available under ubuntu 16.04. Is 8 or 9 supported yet or do I have to manually install v7?