After a read the impatience of a lot of people claiming for updates and news builds without checking before that devs got's a life, I decide to start the thread that will explain step by step how to compile CM10 from asn sources for the GSM version of the HTC Wildfire S, that means no love for marvelc.
Excuse me the incoherences and the incomprehensible stuff of my bad english.
Before you start doing nothing you agree that you're going to experiment, and that I'm not the culprit if you lose all of your files on the computer, or if you broke it.
¿Your first build?
1 - You need to download and install an .iso image of an Linux distribution, in this case we're going to use Ubuntu 12.04, so I recommend it, you can donwload from here:
http://www.ubuntu.com/download/desktop
P.D: DON'T USE THE WINDOWS DOWNLOADER
If you don't know how to install the .iso file after downloading I recomment you this tutorial:
http://howtoubuntu.org/how-to-install-ubuntu-12-04-precise-pangolin/
You've already Ubuntu installed and you're ready, so let's start with fun!
2 - We need to install a few packages that are needed to compile, so you must to start Terminal, which is the command line program for Ubuntu, like CMD is on Windows, then type this:
Code:
sudo apt-get install git-core gnupg flex bison gperf libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool g++-multilib lib32z1-dev lib32ncurses5-dev libc6-dev ia32-libs x11proto-core-dev lib32z-dev mingw32 tofrodos python-markdown python python-lunch libxml2-utils xsltproc libx11-dev:i386
This will need about 10 min more or less.
3 - Now we need to dowload and install JDK 6 from Sun Java webpage, and then install it, I recommend to follow this tutorial:
http://www.printandweb.ca/2012/04/manually-install-oracle-jdk-6-for.html
Okay, we got all the libraries that we need to compile the sources, but... Where's the source?
This is the most annoying part of the procces, the code size is about 7 or 8 GB, so if you didn't got the NASA widthband, you might need to be patience, on my computer at 300 kbps it needs about 6 or 7 hours to download all.
Okey, let's stop speaking and start working.
4 - Type this on terminal, this'll download the repo script that you need to manage and get all the proyects that compose Jellybean:
Code:
mkdir ~/bin; curl [url]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/url] > ~/bin/repo; chmod a+x ~/bin/repo;sudo gedit .bashrc
It'll ask your Ubuntu password (if you got one) and then an text file'll be open, add in the bottom of it this line:
Code:
export PATH=${PATH}:~/bin
5 - Now, we need to create a working directory to place the source and our builds, I recommend to keep a good folder organization, so type this on terminal:
Code:
mkdir -p ~/building/cyanogenmod/jellybean; cd ~/building/cyanogenmod/jellybean
6 - Now we need to specify whith what version of android we're going to work, in this case jellybean so type this:
Code:
PATH=~/bin:$PATH; repo init -u git://github.com/CyanogenMod/android.git -b jellybean
7 - Now there's only one step before start the download of the code, type this:
Code:
gedit .repo/local_manifest.xml
Now an empty file'll appear, you must to copy and paste this inside it:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="cryptomilk"
fetch="git://git.cryptomilk.org/" />
<project name="projects/marvel/kernel_htc_msm7227.git" path="kernel/htc/msm7227" remote="cryptomilk" />
<project name="CyanogenMod/android_device_htc_common" path="device/htc/common" revision="refs/heads/gingerbread" />
<project name="projects/marvel/android_device_htc_msm7x27-recovery.git" path="device/htc/msm7x27-recovery" remote="cryptomilk" />
<project name="projects/marvel/android_device_htc_msm7x27-common.git" path="device/htc/msm7x27-common" remote="cryptomilk" />
<project name="projects/marvel/android_device_htc_marvel-common.git" path="device/htc/marvel-common" remote="cryptomilk" />
<project name="projects/marvel/android_device_htc_marvel.git" path="device/htc/marvel" remote="cryptomilk" />
<project name="projects/marvel/android_vendor_qcom_msm7x27.git" path="vendor/qcom/msm7x27" remote="cryptomilk" />
<project name="projects/marvel/android_vendor_htc_marvel.git" path="vendor/htc/marvel" remote="cryptomilk" />
</manifest>
8 - Now type this on terminal:
Code:
gedit .repo/manifest.xml
Another text file will appear, you should find this line:
Code:
<project path="hardware/qcom/display" name="CyanogenMod/android_hardware_qcom_display" />
And replace for this one:
Code:
<project path="hardware/qcom/display" name="LibertyICS/android_hardware_qcom_display" />
9 - Now type this on terminal:
Code:
repo sync
This'll download all the code, so go out and enjoy the day
¿Building again?
Now I'm sure that you got all the source and wants to build NOW
1 - So let's go, you only need to copy and paste this into a terminal emulator, after going into the folder where we locate the source, in this case it's ~/building/cyanogenmod/jellybean:
Code:
cd ~/building/cyanogenmod/jellybean;repo sync;./vendor/cm/get-prebuilts;cd bionic;git fetch http://review.cyanogenmod.com/CyanogenMod/android_bionic refs/changes/31/14631/1 && git cherry-pick FETCH_HEAD;cd ..;cd hardware/msm7k;git fetch http://review.cyanogenmod.com/CyanogenMod/android_hardware_msm7k refs/changes/58/15058/3 && git cherry-pick FETCH_HEAD;cd ..;cd ..;source build/envsetup.sh; lunch cm_marvel-eng;export USE_CCACHE=1
The lasts line will resync all the changes from upstream, get all prebuilts apps, patch camera and gps fixes on upstream and prepare the source to build for our phone.
2 - Now, we only need to type one line more, and the build might start then:
Code:
make -jx bacon
You should replace the x from -jx for number of cores in your CPU by two, for example if you got an 4 core machine (like me):fingers-crossed: you should put "make -j8 bacon".
3 - Now the build will start, it normally takes one hour and half, so be patience.
When it's finished you get something like this:
Code:
Package complete: /home/oliver/building/cyanogenmod/jellybean/out/target/product/marvel/update-cm-10.0.0-RC0-marvel-UNOFFICIAL-signed.zip
Happy compiling!:laugh:
This is mine!:silly:
This too!
how about windows like using putty? Just like dudeman1996
I respect your work.Thanks
OliverG96 said:
After a read the impatience of a lot of people claiming for updates and news builds without checking before that devs got's a life, I decide to start the thread that will explain step by step how to compile CM10 from asn sources for the GSM version of the HTC Wildfire S, that means no love for marvelc.
Excuse me the incoherences and the incomprehensible stuff of my bad english.
Before you start doing nothing you agree that you're going to experiment, and that I'm not the culprit if you lose all of your files on the computer, or if you broke it.
¿Your first build?
1 - You need to download and install an .iso image of an Linux distribution, in this case we're going to use Ubuntu 12.04, so I recommend it, you can donwload from here:
http://www.ubuntu.com/download/desktop
P.D: DON'T USE THE WINDOWS DOWNLOADER
If you don't know how to install the .iso file after downloading I recomment you this tutorial:
http://howtoubuntu.org/how-to-install-ubuntu-12-04-precise-pangolin/
You've already Ubuntu installed and you're ready, so let's start with fun!
2 - We need to install a few packages that are needed to compile, so you must to start Terminal, which is the command line program for Ubuntu, like CMD is on Windows, then type this:
Code:
sudo apt-get install git-core gnupg flex bison gperf libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool g++-multilib lib32z1-dev lib32ncurses5-dev libc6-dev ia32-libs x11proto-core-dev lib32z-dev mingw32 tofrodos python-markdown python python-lunch libxml2-utils xsltproc libx11-dev:i386
This will need about 10 min more or less.
3 - Now we need to dowload and install JDK 6 from Sun Java webpage:
http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html
Select jdk-6u34-linux-i586.bin if you got an x86 machine, or select jdk-6u34-linux-x64.bin if you got an x64 machine.
Then you must to move into the directory where's the bin file you've downloaded using the Terminal, an type this:
Code:
chmod +x jdk-6u34-linux-x64.bin
./jdk-6u34-linux-x64.bin
sudo chown root. -R jdk1.6.0_34/
sudo mv jdk1.6.0_34/ /usr/lib/jvm/
sudo update-alternatives --install "/usr/bin/java" "java" \
"/usr/lib/jvm/jdk1.6.0_34/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" \
"/usr/lib/jvm/jdk1.6.0_34/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" \
"/usr/lib/jvm/jdk1.6.0_34/bin/javaws" 1
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws
Okay, we got all the libraries that we need to compile the sources, but... Where's the source?
This is the most annoying part of the procces, the code size is about 7 or 8 GB, so if you didn't got the NASA widthband, you might need to be patience, on my computer at 300 kbps it needs about 6 or 7 hours to download all.
Okey, let's stop speaking and start working.
4 - Type this on terminal, this'll download the repo script that you need to manage and get all the proyects that compose Jellybean:
Code:
mkdir ~/bin; curl [url]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/url] > ~/bin/repo; chmod a+x ~/bin/repo;sudo gedit .bashrc
It'll ask your Ubuntu password (if you got one) and then an text file'll be open, add in the bottom of it this line:
Code:
export PATH=${PATH}:~/bin
5 - Now, we need to create a working directory to place the source and our builds, I recommend to keep a good folder organization, so type this on terminal:
Code:
mkdir -p ~/building/cyanogenmod/jellybean; cd ~/building/cyanogenmod/jellybean
6 - Now we need to specify whith what version of android we're going to work, in this case jellybean so type this:
Code:
PATH=~/bin:$PATH; repo init -u git://github.com/CyanogenMod/android.git -b jellybean
7 - Now there's only one step before start the download of the code, type this:
Code:
gedit .repo/local_manifest.xml
Now an empty file'll appear, you must to copy and paste this inside it:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="cryptomilk"
fetch="git://git.cryptomilk.org/" />
<project name="projects/marvel/kernel_htc_msm7227.git" path="kernel/htc/msm7227" remote="cryptomilk" />
<project name="CyanogenMod/android_device_htc_common" path="device/htc/common" revision="refs/heads/gingerbread" />
<project name="projects/marvel/android_device_htc_msm7x27-recovery.git" path="device/htc/msm7x27-recovery" remote="cryptomilk" />
<project name="projects/marvel/android_device_htc_msm7x27-common.git" path="device/htc/msm7x27-common" remote="cryptomilk" />
<project name="projects/marvel/android_device_htc_marvel-common.git" path="device/htc/marvel-common" remote="cryptomilk" />
<project name="projects/marvel/android_device_htc_marvel.git" path="device/htc/marvel" remote="cryptomilk" />
<project name="projects/marvel/android_vendor_qcom_msm7x27.git" path="vendor/qcom/msm7x27" remote="cryptomilk" />
<project name="projects/marvel/android_vendor_htc_marvel.git" path="vendor/htc/marvel" remote="cryptomilk" />
</manifest>
8 - Now type this on terminal:
Code:
gedit .repo/manifest.xml
Another text file will appear, you should find this line:
Code:
<project path="hardware/qcom/display" name="CyanogenMod/android_hardware_qcom_display" />
And replace for this one:
Code:
<project path="hardware/qcom/display" name="LibertyICS/android_hardware_qcom_display" />
9 - Now type this on terminal:
Code:
repo sync
This'll download all the code, so go out and enjoy the day
¿Building again?
Now I'm sure that you got all the source and wants to build NOW
1 - So let's go, you only need to copy and paste this into a terminal emulator, after going into the folder where we locate the source, in this case it's ~/building/cyanogenmod/jellybean:
Code:
cd ~/building/cyanogenmod/jellybean;repo sync;./vendor/cm/get-prebuilts;cd bionic;git fetch http://review.cyanogenmod.com/CyanogenMod/android_bionic refs/changes/31/14631/1 && git cherry-pick FETCH_HEAD;cd ..;cd hardware/msm7k;git fetch http://review.cyanogenmod.com/CyanogenMod/android_hardware_msm7k refs/changes/58/15058/3 && git cherry-pick FETCH_HEAD;cd ..;cd ..;source build/envsetup.sh; lunch cm_marvel-eng;export USE_CCACHE=1
The lasts line will resync all the changes from upstream, get all prebuilts apps, patch camera and gps fixes on upstream and prepare the source to build for our phone.
2 - Now, we only need to type one line more, and the build might start then:
Code:
make -jx bacon
You should replace the x from -jx for number of cores in your CPU by two, for example if you got an 4 core machine (like me):fingers-crossed: you should put "make -j8 bacon".
3 - Now the build will start, it normally takes one hour and half, so be patience.
When it's finished you get something like this:
Code:
Package complete: /home/oliver/building/cyanogenmod/jellybean/out/target/product/marvel/update-cm-10.0.0-RC0-marvel-UNOFFICIAL-signed.zip
Happy compiling!:laugh:
Click to expand...
Click to collapse
i have already ubuntu installed so its cool.but is this have same all CM10 bugs?or its 100% working rom?
davidang said:
how about windows like using putty? Just like dudeman1996
Click to expand...
Click to collapse
Have no idea of how to set up putty
Enviado desde mi Wildfire S A510e usando Tapatalk 2
crossfire77 said:
i have already ubuntu installed so its cool.but is this have same all CM10 bugs?or its 100% working rom?
Click to expand...
Click to collapse
Ot's like any other cm10 rom, the same issues.
Enviado desde mi Wildfire S A510e usando Tapatalk 2
OliverG96 said:
Ot's like any other cm10 rom, the same issues.
Enviado desde mi Wildfire S A510e usando Tapatalk 2
Click to expand...
Click to collapse
oh thats sad.what meaning of that much hassle? haha thnx.
OliverG96 said:
¿Building again?
Now I'm sure that you got all the source and wants to build NOW
1 - So let's go, you only need to copy and paste this into a terminal emulator, after going into the folder where we locate the source, in this case it's ~/building/cyanogenmod/jellybean:
Code:
cd ~/building/cyanogenmod/jellybean;repo sync;./vendor/cm/get-prebuilts;cd bionic;git fetch http://review.cyanogenmod.com/CyanogenMod/android_bionic refs/changes/31/14631/1 && git cherry-pick FETCH_HEAD;cd ..;cd hardware/msm7k;git fetch http://review.cyanogenmod.com/CyanogenMod/android_hardware_msm7k refs/changes/58/15058/3 && git cherry-pick FETCH_HEAD;cd ..;cd ..;source build/envsetup.sh; lunch cm_marvel-eng;export USE_CCACHE=1
The lasts line will resync all the changes from upstream, get all prebuilts apps, patch camera and gps fixes on upstream and prepare the source to build for our phone.
Click to expand...
Click to collapse
it's all done without single error, but when I put command above into terminal:
firt seems it's all ok,
"Fetching projects: 100% (321/321), done.
bionic/: discarding 1 commits
hardware/msm7k/: discarding 1 commits
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 142 100 142 0 0 223 0 --:--:-- --:--:-- --:--:-- 297
100 310k 100 310k 0 0 270k 0 0:00:01 0:00:01 --:--:-- 270k
Archive: ./vendor/cm/proprietary/Term.apk
inflating: ./vendor/cm/proprietary/lib/armeabi/libjackpal-androidterm4.so
From http://review.cyanogenmod.com/CyanogenMod/android_bionic
* branch refs/changes/31/14631/1 -> FETCH_HEAD
[detached HEAD 6cf80c4] bionic: Add NASTY_PTHREAD_CREATE_HACK
Author: Steve Kondik <[email protected]>
3 files changed, 15 insertions(+)
From http://review.cyanogenmod.com/CyanogenMod/android_hardware_msm7k
* branch refs/changes/58/15058/3 -> FETCH_HEAD
[detached HEAD 9198a41] librpc: Don't mask lower bytes on program version 0x00020002
Author: Ricardo Cerqueira <[email protected]>
1 file changed, 2 insertions(+), 2 deletions(-)
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/htc/marvel/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash"
and next line error:
build/core/config.mk:348: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
Device marvel not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Repository for marvel not found in the CyanogenMod Github repository list. If this is in error, you may need to manually add it to your local_manifest.xml.
build/core/config.mk:348: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
** Don't have a product spec for: 'cm_marvel'
** Do you have the right repo manifest?
Click to expand...
Click to collapse
I did everything as U wrote, what I need to do, I want to try this, please ?
thank U,
cheers !
j00k3r said:
it's all done without single error, but when I put command above into terminal:
firt seems it's all ok,
"Fetching projects: 100% (321/321), done.
bionic/: discarding 1 commits
hardware/msm7k/: discarding 1 commits
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 142 100 142 0 0 223 0 --:--:-- --:--:-- --:--:-- 297
100 310k 100 310k 0 0 270k 0 0:00:01 0:00:01 --:--:-- 270k
Archive: ./vendor/cm/proprietary/Term.apk
inflating: ./vendor/cm/proprietary/lib/armeabi/libjackpal-androidterm4.so
From http://review.cyanogenmod.com/CyanogenMod/android_bionic
* branch refs/changes/31/14631/1 -> FETCH_HEAD
[detached HEAD 6cf80c4] bionic: Add NASTY_PTHREAD_CREATE_HACK
Author: Steve Kondik <[email protected]>
3 files changed, 15 insertions(+)
From http://review.cyanogenmod.com/CyanogenMod/android_hardware_msm7k
* branch refs/changes/58/15058/3 -> FETCH_HEAD
[detached HEAD 9198a41] librpc: Don't mask lower bytes on program version 0x00020002
Author: Ricardo Cerqueira <[email protected]>
1 file changed, 2 insertions(+), 2 deletions(-)
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/htc/marvel/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash"
and next line error:
I did everything as U wrote, what I need to do, I want to try this, please ?
thank U,
cheers !
Click to expand...
Click to collapse
Try to type on terminal:
java -version
And give me the output.
Enviado desde mi Wildfire S A510e usando Tapatalk 2
OliverG96 said:
Try to type on terminal:
java -version
And give me the output.
Enviado desde mi Wildfire S A510e usando Tapatalk 2
Click to expand...
Click to collapse
********@********-System-Product-Name:~$ java -version
The program 'java' can be found in the following packages:
* default-jre
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
* gcj-4.5-jre-headless
* openjdk-7-jre-headless
Try: sudo apt-get install <selected package>
********@********-System-Product-Name:~$
hope it will help, thank U for Your effort.
cheers !
j00k3r said:
********@********-System-Product-Name:~$ java -version
The program 'java' can be found in the following packages:
* default-jre
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
* gcj-4.5-jre-headless
* openjdk-7-jre-headless
Try: sudo apt-get install <selected package>
********@********-System-Product-Name:~$
hope it will help, thank U for Your effort.
cheers !
Click to expand...
Click to collapse
Can you do 3 step of installing jdk again and give me every output that you got?
It's the problem that you haven't got java installed correctly.
Enviado desde mi Wildfire S A510e usando Tapatalk 2
OliverG96 said:
Can you do 3 step of installing jdk again and give me every output that you got?
It's the problem that you haven't got java installed correctly.
Enviado desde mi Wildfire S A510e usando Tapatalk 2
Click to expand...
Click to collapse
it's a huge list so i will not c/p cos it will look like wtf
i put it in .txt so U have it in attachment.
cheers !
j00k3r said:
it's a huge list so i will not c/p cos it will look like wtf
i put it in .txt so U have it in attachment.
cheers !
Click to expand...
Click to collapse
Have no idea of what are you doing vrong, but I've a found a tutorial which I follow a few months ago to install it, so I'll edit the 3 step and add the link for it instead of all the commands.
http://www.printandweb.ca/2012/04/manually-install-oracle-jdk-6-for.html
hey Oliver, what do U think is there any chance that problem is x64 version of ubuntu that i'm using ?
maybe U write commands for x86, i don't know, don't have any other idea...
i intsalled latest version followed tut what U give as U can see:
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Click to expand...
Click to collapse
cheers !
j00k3r said:
hey Oliver, what do U think is there any chance that problem is x64 version of ubuntu that i'm using ?
maybe U write commands for x86, i don't know, don't have any other idea...
i intsalled latest version followed tut what U give as U can see:
cheers !
Click to expand...
Click to collapse
Are you getting the same issues?
Enviado desde mi Wildfire S A510e usando Tapatalk 2
damn yes.
the main problem now is, hmm, I am very stubborn and will not stop until this **** works ! :laugh:
j00k3r said:
damn yes.
the main problem now is, hmm, I am very stubborn and will not stop until this **** works ! :laugh:
Click to expand...
Click to collapse
The issue you got is this again?
Code:
build/core/config.mk:348: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
Device marvel not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Repository for marvel not found in the CyanogenMod Github repository list. If this is in error, you may need to manually add it to your local_manifest.xml.
build/core/config.mk:348: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
** Don't have a product spec for: 'cm_marvel'
** Do you have the right repo manifest?
i try every single thing from the start, fresh, and again, yes, that's D error, to bad, no luck for me...
I've spent some time in the last couple of days trying to set up a Linux box to compile my own Cyanogenmod ROM and have run into some issues that are not mentioned in the official CM Wiki (http://wiki.cyanogenmod.org/w/Build_for_odin). You can start there, but to make things easier, I wanted to put everything in ONE single post so others don't have to go looking around different sources. Feel free to make any comments and suggestions.
This can easily be moved to a wiki if that's deemed more appropriate, but I just wanted to put it somewhere.
First, get yourself a 64 bit PC or VM (you can use Virtualbox) and install Ubuntu 12.04 LTS. You can install the latest version, but LTS builds have longer support and are more stable. If you're only using it for building ROMs, it's nice to be more consistent. Make sure you have at LEAST 35 GB, but the more the better. 100 GB are best if you have the space.
Once you have Ubuntu up and running, fire up a terminal, and get ready to type (or copy and paste). These steps are taken from Here
You need java, and you need the RIGHT java environment. We must get rid of any undesired ones that come with Ubuntu. These will be reinstalled if you do an update or install updates, so always make sure you are running the right version by default.
Remove unwanted JREs
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Now we add a repository that contains the proper Sun Java 1.6 JRE (this repository works as of 7/30/13, but it might disappear due to Oracle licensing claims)
Code:
sudo add-apt-repository ppa:webupd8team/java
Once the PPA is added, Ubuntu will know where to install the correct packages from. Next we copy and paste:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
The above command will update the repository database and then install the JRE. Follow the onscreen prompts to accept the license agreement, and when done, you should be able to confirm you have the right version by typing
Code:
java -version
And it should return something like this:
java version “1.6.0_37″
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Now we install the packages needed to build and compile properly. Copy and paste this whole line:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5-dev ia32-libs 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 lzop
This might take a while, since the package manager has to download and install all those packages.
When done, we set up 'repo' which is the script in charge of downloading all the source code and files you will need to build your ROM. Copy and paste this into your terminal:
Code:
mkdir ~/bin && curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo && chmod a+x ~/bin/repo
Use your favorite text editor to add the new folder created above into your path (so you can run repo from anywhere). I use vi, but nano is more friendly:
Code:
sudo nano ~/.bashrc
At the very bottom, add this
Code:
export PATH=~/bin:$PATH
Save the file, exit the text editor, and then run
Code:
source ~/.bashrc
In the terminal, create a folder where you would like to have your code stored. If you have more than one drive, pick the fastest one. Avoid USB external drives, SSD is best. The official CM guide suggests:
Code:
mkdir ~/android/system
Go into the newly created folder and initialize your repo
Code:
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
In the line above, you can pick 10.1 if you want to build Jelly Bean 4.2.2 or 10.2 for Jelly Bean 4.3.
Once the repo is initialized, it's time to have it pull EVERYTHING. This next command will take a while, depending on your internet connection:
Code:
repo sync
You can run the 'repo sync' command as often as you want. Doing this will get the latest version of any code on the CM repository, so make sure you do it often.
When you have all the data synced up and downloaded to your build box, you need to do some Odin (code name for the Xperia ZL) specific steps. These are taken from the CM Wiki
You need to get the pre-built apps, this should only need to be done once.
Code:
cd ~/android/system/vendor/cm
./get-prebuilts
Now we get the build environment ready:
Code:
source build/envsetup.sh
breakfast odin
You will notice that you will get some errors regarding missing files in the vendor/ directory. The CM guide tells you to pull the ZL blobs through USB, but thankfully, these files are hosted on the internet. To get them, once the 'breakfast' command is done, fire up your favorite text editor:
Code:
nano ~/home/system/.repo/local_manifests/roomservice.xml
Your XML file will look like this
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_sony_odin" path="device/sony/odin" remote="github" />
<project name="CyanogenMod/android_device_sony_common" path="device/sony/common" remote="github" />
<project name="CyanogenMod/android_device_sony_qcom-common" path="device/sony/qcom-common" remote="github" />
<project name="CyanogenMod/android_device_sony_fusion3-common" path="device/sony/fusion3-common" remote="github" />
<project name="CyanogenMod/android_kernel_sony_apq8064" path="kernel/sony/apq8064" remote="github" />
<project name="CyanogenMod/android_packages_apps_FMRadio" path="packages/apps/FmRadio" remote="github" />
<project name="CyanogenMod/android_hardware_sony_DASH" path="hardware/sony/DASH" remote="github" />
</manifest>
After the last project line, you will add the following (add it before the </manifest> line
Code:
<project name="TheMuppets/proprietary_vendor_sony" path="vendor/sony" remote="github" />
So it looks like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_sony_odin" path="device/sony/odin" remote="github" />
<project name="CyanogenMod/android_device_sony_common" path="device/sony/common" remote="github" />
<project name="CyanogenMod/android_device_sony_qcom-common" path="device/sony/qcom-common" remote="github" />
<project name="CyanogenMod/android_device_sony_fusion3-common" path="device/sony/fusion3-common" remote="github" />
<project name="CyanogenMod/android_kernel_sony_apq8064" path="kernel/sony/apq8064" remote="github" />
<project name="CyanogenMod/android_packages_apps_FMRadio" path="packages/apps/FmRadio" remote="github" />
<project name="CyanogenMod/android_hardware_sony_DASH" path="hardware/sony/DASH" remote="github" />
<project name="TheMuppets/proprietary_vendor_sony" path="vendor/sony" remote="github" />
</manifest>
Save the file, and run a repo sync again
Code:
repo sync
Now execute the breakfast command again. You don't need to execute the 'source build/envsetup.sh' command unless you open a new terminal window.
Code:
breakfast odin
Turn on caching
Code:
export USE_CCACHE=1
And you're ready to build!
Code:
brunch odin
When the build completes, cd into the $OUT folder
Code:
cd $OUT
And you will have a zip file ready to flash. It will be called something like this
Code:
cm-10.2-20130731-UNOFFICIAL-odin.zip
and you will have a
Code:
recovery.img
file that you can use to flash to your bootloader. If you already have a CM build or a working recovery, you can skip that part and just flash the zip.
If you get any build errors, check the CM wiki. A lot of errors are due to running out of disk space, hence why it's important to give your VM a lot of it.
That's it! You have built a ROM!
Awesome man!! Thanks for teaching us
thanks for the guide,
when I get to:
"Now we install the packages needed to build and compile properly. Copy and paste this whole line:"
I do so but am presented with:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'lib32z1-dev' instead of 'lib32z-dev'
bzip2 is already the newest version.
libbz2-1.0 is already the newest version.
libreadline6 is already the newest version.
readline-common is already the newest version.
zip is already the newest version.
zip set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ia32-libs : Depends: ia32-libs-multiarch
libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
Recommends: libgl1-mesa-dri:i386 (>= 7.2)
E: Unable to correct problems, you have held broken packages.
Can you help?
Thanks
redmongoose said:
thanks for the guide,
when I get to:
"Now we install the packages needed to build and compile properly. Copy and paste this whole line:"
I do so but am presented with:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'lib32z1-dev' instead of 'lib32z-dev'
bzip2 is already the newest version.
libbz2-1.0 is already the newest version.
libreadline6 is already the newest version.
readline-common is already the newest version.
zip is already the newest version.
zip set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ia32-libs : Depends: ia32-libs-multiarch
libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
Recommends: libgl1-mesa-dri:i386 (>= 7.2)
E: Unable to correct problems, you have held broken packages.
Can you help?
Thanks
Click to expand...
Click to collapse
It means some dependencies are missing. It tells you right there. Looks like you need to install libglapi-mesa:i386, so do
sudo apt-get install "package name"
to install any missing dependencies
Hi,
First of all thanks for that guide, it really helped. I guess there is one step missing:
After customizing the local manifest file, you need to do repo sync to pull the files, which are needed to brunch..
hutilicious said:
Hi,
First of all thanks for that guide, it really helped. I guess there is one step missing:
After customizing the local manifest file, you need to do repo sync to pull the files, which are needed to brunch..
Click to expand...
Click to collapse
You're welcome and thank you for the heads up. I updated the guide with this information.
How much RAM should I allocate to the VM?
I am trying to build CM-11 but I keep getting stopped on
Code:
make: *** No rule to make target `/home/gakio12/cm11/out/target/product/hlte/obj/lib/libtime_genoff.so', needed by `/home/gakio12/cm11/out/target/product/hlte/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/LINKED/libandroid_runtime.so'. Stop.
'
Everything was changed from hlte-common to hlte in device/samsung, but in vendor/samsung, it remains hlte-common. I'm not sure if this is the problem, but renaming the directory to 'hlte' did nothing.
This is in my hlte-common-vendor.mk file in vendor/samsung/hlte-common:
Code:
PRODUCT_PACKAGES += libtime_genoff
$(call inherit-product, vendor/samsung/hlte-common/hlte-common-vendor-blobs.mk)
Does anyone know how I can start to diagnose the problem? libtime_genoff.so is in vendor/samsung/hlte-common, but I have a feeling it is supposed to be elsewhere now that the devices are 'unified'.
gakio12 said:
I am trying to build CM-11 but I keep getting stopped on
Code:
make: *** No rule to make target `/home/gakio12/cm11/out/target/product/hlte/obj/lib/libtime_genoff.so', needed by `/home/gakio12/cm11/out/target/product/hlte/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/LINKED/libandroid_runtime.so'. Stop.
'
Everything was changed from hlte-common to hlte in device/samsung, but in vendor/samsung, it remains hlte-common. I'm not sure if this is the problem, but renaming the directory to 'hlte' did nothing.
This is in my hlte-common-vendor.mk file in vendor/samsung/hlte-common:
Code:
PRODUCT_PACKAGES += libtime_genoff
$(call inherit-product, vendor/samsung/hlte-common/hlte-common-vendor-blobs.mk)
Does anyone know how I can start to diagnose the problem? libtime_genoff.so is in vendor/samsung/hlte-common, but I have a feeling it is supposed to be elsewhere now that the devices are 'unified'.
Click to expand...
Click to collapse
I'm trying to figure out the same issue as you
I figured out the problem; make sure you have revision="wip" at the end of the kernel and TheMuppets lines of your local_manifest.xml.
gakio12 said:
I figured out the problem; make sure you have revision="wip" at the end of the kernel and TheMuppets lines of your local_manifest.xml.
Click to expand...
Click to collapse
Awesome that worked
gakio12 said:
I figured out the problem; make sure you have revision="wip" at the end of the kernel and TheMuppets lines of your local_manifest.xml.
Click to expand...
Click to collapse
Hi I'm a noob, Can you please give me a little bit more details how to fix this problem please. I'm still learning. Thanks
HI thanks for give me some hints. Just figure it out.
gakio12 said:
I am trying to build CM-11 but I keep getting stopped on
Code:
make: *** No rule to make target `/home/gakio12/cm11/out/target/product/hlte/obj/lib/libtime_genoff.so', needed by `/home/gakio12/cm11/out/target/product/hlte/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/LINKED/libandroid_runtime.so'. Stop.
'
Everything was changed from hlte-common to hlte in device/samsung, but in vendor/samsung, it remains hlte-common. I'm not sure if this is the problem, but renaming the directory to 'hlte' did nothing.
This is in my hlte-common-vendor.mk file in vendor/samsung/hlte-common:
Code:
PRODUCT_PACKAGES += libtime_genoff
$(call inherit-product, vendor/samsung/hlte-common/hlte-common-vendor-blobs.mk)
Does anyone know how I can start to diagnose the problem? libtime_genoff.so is in vendor/samsung/hlte-common, but I have a feeling it is supposed to be elsewhere now that the devices are 'unified'.
Click to expand...
Click to collapse
Hi, I meet the same issue as you, can you give me some advice on how to solve this problem?
I have this exact problem. I am building a jflte cm11 with no prior experience on linux or on compiling any big projects whatsoever. Can anyone explain for a starter what I need to do? I opened a local_manifest.xml and it said
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="koush/Superuser" path="external/koush/Superuser" remote="github" revision="master" />
<project name="koush/Widgets" path="external/koush/Widgets" remote="github" revision="master" />
</manifest>
I followed this tutorial to the word: http://wiki.cyanogenmod.org/w/Build_for_jflte
libtime_genoff.so.toc
PHP:
ninja: error: '/home/ost268/EmotionOS/out/target/product/kenzo/obj/lib/libtime_genoff.so.toc', needed by '/home/ost268/EmotionOS/out/target/product/kenzo/obj/SHARED_LIBRARIES/libandroid_servers_intermediates/LINKED/libandroid_servers.so', missing and no known rule to make it
make: *** [ninja_wrapper]Error 1
Add to vendor/xiaomi/kenzo/Android.mk
PHP:
include $(CLEAR_VARS)
LOCAL_MODULE := libtime_genoff
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_OWNER := xiaomi
LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
LOCAL_MODULE_PATH_32 := $(2ND_TARGET_OUT_VENDOR_SHARED_LIBRARIES)
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_TAGS := optional
LOCAL_MULTILIB := both
LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES_64 := proprietary/vendor/lib64/libtime_genoff.so
LOCAL_SRC_FILES_32 := proprietary/vendor/lib/libtime_genoff.so
include $(BUILD_PREBUILT)
hi, i'm requesting devs who build cm 13 for bullhead to kindly share their roomservice.xml. i'm trying to build cm from source and the system generated roomservice.xml is as follows:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_bullhead" path="device/lge/bullhead" remote="github" />
<project name="CyanogenMod/android_kernel_lge_bullhead" path="kernel/lge/bullhead" remote="github" />
</manifest>
i think this does not contain bolbs, which are also required for building from source. i tried building without them and i get the following error:
Code:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/home/gururoop/android/cm13/out/target/product/bullhead/obj/SHARED_LIBRARIES/libsurfaceflinger_intermediates/LINKED/libsurfaceflinger.so] Error 1
make: Leaving directory `/home/gururoop/android/cm13'
Can anyone help me with these errors?
gururoop said:
hi, i'm requesting devs who build cm 13 for bullhead to kindly share their roomservice.xml. i'm trying to build cm from source and the system generated roomservice.xml is as follows:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_bullhead" path="device/lge/bullhead" remote="github" />
<project name="CyanogenMod/android_kernel_lge_bullhead" path="kernel/lge/bullhead" remote="github" />
</manifest>
i think this does not contain bolbs, which are also required for building from source. i tried building without them and i get the following error:
Code:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/home/gururoop/android/cm13/out/target/product/bullhead/obj/SHARED_LIBRARIES/libsurfaceflinger_intermediates/LINKED/libsurfaceflinger.so] Error 1
make: Leaving directory `/home/gururoop/android/cm13'
Can anyone help me with these errors?
Click to expand...
Click to collapse
Vendor files? https://github.com/TheMuppets/proprietary_vendor_lge/tree/cm-13.0
I know the vendor stuff is different from everything else I've used/built for and I only had to "brunch bullhead" to build a different rom I tried.
Keithn said:
Vendor files? https://github.com/TheMuppets/proprietary_vendor_lge/tree/cm-13.0
I know the vendor stuff is different from everything else I've used/built for and I only had to "brunch bullhead" to build a different rom I tried.
Click to expand...
Click to collapse
did you extract blobs using extract-files.sh script? can you please share the roomservice.xml of the ROM that built successfully and booted?
gururoop said:
did you extract blobs using extract-files.sh script? can you please share the roomservice.xml of the ROM that built successfully and booted?
Click to expand...
Click to collapse
Nope I never had to do it that way and I usually just add the vendor files from the muppets git (linked above) instead.
What commands are you using to build?
Try just using ". build/envsetup.sh" then use "brunch bullhead". Downloaded everything I needed to build omni last I tried. My server/PC I use for building isn't connected or running right now so I can't directly pull the XML I used. I probably could later though.
Another thing is that you can add your own XML into the local manifests to sync files so you don't have to touch the room service.XML. Here is one I was using for an example https://github.com/Keith-N/local_manifests/blob/master/local_manifests.xml
Keithn said:
Nope I never had to do it that way and I usually just add the vendor files from the muppets git (linked above) instead.
What commands are you using to build?
Try just using ". build/envsetup.sh" then use "brunch bullhead". Downloaded everything I needed to build omni last I tried. My server/PC I use for building isn't connected or running right now so I can't directly pull the XML I used. I probably could later though.
Another thing is that you can add your own XML into the local manifests to sync files so you don't have to touch the room service.XML. Here is one I was using for an example https://github.com/Keith-N/local_manifests/blob/master/local_manifests.xml
Click to expand...
Click to collapse
I would really appreciate if you could share your roomservice.xml whenever possible. I did try to give commands as per your post and got the error mentioned in the OP. I'm trying to start with building CM and expand the base if I succeed.
I tried it out and it's missing the vendor files. You'll notice no vendor/lge in your cm13 directory. The way I talked about in the previous post will work. You need to get those vendor files. I could give you my roomservice.xml but it shouldn't look any different because I never touched it. I used an addition xml to add aditional files which is why my roomservice.xml was never changed. The easy way is to add this line into whatever xml you are planning on using to sync the files.
Code:
<project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-13.0" />
It grabs the files from https://github.com/TheMuppets/proprietary_vendor_lge and syncs them into vendor/lge
If you have troubles then let me know, but that is all I needed to do.