Related
I have written this guide as most existing guides for Mac OS X use MacPorts and include steps that are now unnecessary. It is geared towards intermediate users and up, who know some Terminal basics.
I had used the same build environment previously on Snow Leopard and later on when I upgraded to Lion. Now that I have just clean installed Lion, I documented the steps I took to rebuild my build environment.
I did the following on Lion 10.7.2 and Xcode 4.2. As far as I can recall, it should work with Snow Leopard and Xcode 4 and above. Do let me know if it does not.
Setup Build Environment
Install Xcode
Install Java
Install Homebrew: (For more on Homebrew: http://mxcl.github.com/homebrew)
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
Click to expand...
Click to collapse
Install Android SDK:
$ brew install android-sdk
Click to expand...
Click to collapse
with ADB:
$ android
Click to expand...
Click to collapse
then install "Android SDK Platform-tools" and close the window.
Install Repo:
$ brew install repo
Click to expand...
Click to collapse
Install and symlink packages:
$ brew install findutils gnu-sed gnupg pngcrush
$ echo "PATH=/usr/local/bin:\$PATH" >> ~/.bash_profile
$ ln -s /usr/local/bin/gfind /usr/local/bin/find
$ ln -s /usr/local/bin/gsed /usr/local/bin/sed
Click to expand...
Click to collapse
Create a case-sensitive partition or disk image:
$ hdiutil create -type SPARSE -fs "Case-sensitive Journaled HFS+" -size 16g -volname "Android" -attach ~/Desktop/Android
Click to expand...
Click to collapse
Download CyanogenMod Source
$ mkdir /Volumes/Android/cm7
$ cd /Volumes/Android/cm7
$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
$ repo sync -j32
Click to expand...
Click to collapse
Copy Proprietary Files
This only needs to be done once.
Connect device to computer and then:
$ cd /Volumes/Android/cm7/device/samsung/crespo
$ ./extract-files.sh
Click to expand...
Click to collapse
Download ROM Manager
This only needs to be done when ROM Manager is updated.
$ /Volumes/Android/cm7/vendor/cyanogen/get-rommanager
Click to expand...
Click to collapse
Edit CyanogenMod Source
Build will fail unless the following edits are made.
Add lines in red to cm7/external/elfutils/config-compat-darwin.h:
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;
}
#endif
Click to expand...
Click to collapse
Comment out every line in cm7/external/qemu/Android.mk:
# the following test is made to detect that we were called
# through the 'm' or 'mm' build commands. if not, we use the
# standard QEMU Makefile
#
#ifeq ($(DEFAULT_GOAL),droid)
# LOCAL_PATH:= $(call my-dir)
# include $(LOCAL_PATH)/Makefile.android
#else
# include Makefile.qemu
#endif
Click to expand...
Click to collapse
Compile CyanogenMod Source
$ cd /Volumes/Android/cm7
$ . build/envsetup.sh
$ brunch crespo -j`sysctl -an hw.logicalcpu`
Click to expand...
Click to collapse
If the build was successful, there should be an update-cm-X.X.X-NS-KANG-signed.zip in the cm7/out/target/product/crespo folder.
Congrats! If you've made it up to here, you can breathe a sigh of relief and enjoy your own hot smoking bacon. And when you want fresher bacon:
Update CyanogenMod Source
$ cd /Volumes/Android/cm7
$ repo sync -32
Click to expand...
Click to collapse
then build as before.
Building Kernels
If you have done the above, there is nothing much more to add for building kernels.
Install packages:
$ brew install coreutils xz
Click to expand...
Click to collapse
Download kernel source:
$ cd /Volumes/Android
$ git clone git://github.com/CyanogenMod/samsung-kernel-crespo.git
Click to expand...
Click to collapse
Generate default config:
$ cd samsung-kernel-crespo
$ make ARCH=arm herring_defconfig
Click to expand...
Click to collapse
Compile kernel source:
$ ln -s /usr/local/bin/gstat /usr/local/bin/stat
$ ln -s /usr/local/bin/gexpr /usr/local/bin/expr
$ make -j`sysctl -an hw.logicalcpu` ARCH=arm CROSS_COMPILE=../cm/prebuilt/darwin-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- HOSTCFLAGS="-I../cm/external/elfutils/libelf"
$ rm /usr/local/bin/stat
$ rm /usr/local/bin/expr
Click to expand...
Click to collapse
Best to put the above in a Bash script. Temporarily symlink stat and expr, only for kernel compilation, as OS X versions might be expected elsewhere (like in CyanogenMod's scripts). Other guides for cross-compiling Linux kernels on Mac mention several ways to resolve missing elf.h definitions. Luckily for us, CM7 source already has an elf.h, so we can include it with HOSTCFLAGS="-I../cm/external/elfutils/libelf".
Wow...and guide for compile kernel??
Ihihih...
Inviato dal mio Nexus S
Mac?..........
Hahahhahaahahahahhahahahahahhaa
dario3040 said:
Mac?..........
Hahahhahaahahahahhahahahahahhaa
Click to expand...
Click to collapse
Unfortunately yeah, I need it for *gasp* iOS development
coloxim said:
Wow...and guide for compile kernel??
Ihihih...
Inviato dal mio Nexus S
Click to expand...
Click to collapse
Just added. It's about the same as on linux, much less mac quirks to work around.
ahbeng said:
Just added. It's about the same as on linux, much less mac quirks to work around.
Click to expand...
Click to collapse
Thank you so much...
Inviato dal mio Nexus S
I know a lot of people will be able to save precious time due to this. Including me Thanx a lot!
So how do you take the compiled kernel and make it the default kernel in the new Bacon, or will it be automatic on the next Bacon build?
Sent from my Nexus S using XDA App
viper2g1 said:
So how do you take the compiled kernel and make it the default kernel in the new Bacon, or will it be automatic on the next Bacon build?
Sent from my Nexus S using XDA App
Click to expand...
Click to collapse
It won't, that's just to compile. The kernel part of the guide is more to document Mac-specific workarounds for people who want to work with the source of the CM7 kernel or other kernels.
If you're just making Bacon, the latest CM7 kernel binary would already be included in the CM7 source. It is the same as what you'd get if you compiled unmodified CM7 kernel source and I think it is a good idea to have that to fall back on.
However, I guess it would be useful to document how to package the compiled kernel and modules in a flashable AnyKernel zip. Bit busy now, will add it later.
ahbeng said:
It won't, that's just to compile. The kernel part of the guide is more to document Mac-specific workarounds for people who want to work with the source of the CM7 kernel or other kernels.
If you're just making Bacon, the latest CM7 kernel binary would already be included in the CM7 source. It is the same as what you'd get if you compiled unmodified CM7 kernel source and I think it is a good idea to have that to fall back on.
However, I guess it would be useful to document how to package the compiled kernel and modules in a flashable AnyKernel zip. Bit busy now, will add it later.
Click to expand...
Click to collapse
Ok thanks, it would be awesome to know how to make Bacon with matr1x already set as the default kernel.
Sent from my Nexus S using XDA App
quality post.
viper2g1 said:
Ok thanks, it would be awesome to know how to make Bacon with matr1x already set as the default kernel.
Sent from my Nexus S using XDA App
Click to expand...
Click to collapse
I realized that if I started to include instructions for that, I should split it out along with other tips into a new post on how I bake in some simple customizations with a bash script, without a full-blown kitchen. (Because that is not platform-specific) When I have time! In the meantime, some quick pointers:
To change the default kernel for any ROM, you'll need to change the boot.img in the zip using unpackbootimg and mkbootimg, which would have been built along with CM7 in cm7/out/host/darwin-x86/bin (linux-x86 for linux). Copy them to somewhere in your path like /usr/local/bin. Copy the boot.img from the ROM zip and the zImage for the kernel you want to embed into another directory then run the following commands in that directory:
unpackbootimg -i boot.img
mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --cmdline "`cat boot.img-cmdline`" --base `cat boot.img-base` --pagesize `cat boot.img-pagesize` -o boot.img
Click to expand...
Click to collapse
then replace the original boot.img in the ROM zip with this new one. Hope that helps!
PS: And replace the modules in system/modules with the ones from the kernel you want to embed. (Caveat: I don't do any of this manually)
ahbeng said:
I realized that if I started to include instructions for that, I should split it out along with other tips into a new post on how I bake in some simple customizations with a bash script, without a full-blown kitchen. (Because that is not platform-specific) When I have time! In the meantime, some quick pointers:
To change the default kernel for any ROM, you'll need to change the boot.img in the zip using unpackbootimg and mkbootimg, which would have been built along with CM7 in cm7/out/host/darwin-x86/bin (linux-x86 for linux). Copy them to somewhere in your path like /usr/local/bin. Copy the boot.img from the ROM zip and the zImage for the kernel you want to embed into another directory then run the following commands in that directory:
then replace the original boot.img in the ROM zip with this new one. Hope that helps!
PS: And replace the modules in system/modules with the ones from the kernel you want to embed. (Caveat: I don't do any of this manually)
Click to expand...
Click to collapse
I'm gonna give this a shot after work. Its great info and I never found it searching. Thanks!
Sent from my Nexus S using XDA App
Couldn't one just us the process for initializing the environment like how you would for AOSP? Or will that still have issues?
BlueDrgBlade said:
Couldn't one just us the process for initializing the environment like how you would for AOSP? Or will that still have issues?
Click to expand...
Click to collapse
No need. What you see is just cosmetic fix
Sent from my Nexus S using Tapatalk 2
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
-e:1: syntax error, unexpected ']'
[This script has been moved.]
^[/QUOTE]
... What do I do :$
Click to expand...
Click to collapse
Does anyone know where I can find a CM9 version of this guide?
Sorry for bump...will this work for any gingerbread device?
Aquethys said:
Sorry for bump...will this work for any gingerbread device?
Click to expand...
Click to collapse
Yes
I get an error trying to mkdir /Volumes/Android/cm7
mkdir: /Volumes/Android: No such file or directory
Help?
Here's a short tutorial on how to build your own version of CM7.
Requirements:
- Linux distro such as Ubuntu.
- 30 GB of space.
- Fast internet.
Instructions:
1. Open terminal and install these packages through the commands:
Code:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool
If you are on a 64-bit system, install these also:
Code:
sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.4-multilib g++-4.4-multilib
2. Create directories.
Code:
mkdir -p ~/bin
mkdir -p ~/android/system
3. Fetch files from CM.
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
cd ~/android/system
~/bin/repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
~/bin/repo sync
This will take some hours.
4. Download this git: https://github.com/koush/proprietary_vendor_lge - then extract to /vendor/lge/ (so you have /vendor/lge/p970/...).
5. Build.
Code:
~/android/system/vendor/cyanogen/get-rommanager
. build/envsetup.sh && brunch p970
You'll have the .zip in ~/android/system/out/target/product/p970/.
6. Flash the kang!
That's it.
Only a remark:
- Trying to build my own ROM, I've found that the .zip were 15MB smaller than the same nightly because it doesn't include proprietary files into the ROM. Then arcee told me that before build it, you have to run ./setup-makefiles.sh inside the device's dir.
Huexxx said:
Only a remark:
- Trying to build my own ROM, I've found that the .zip were 15MB smaller than the same nightly because it doesn't include proprietary files into the ROM. Then arcee told me that before build it, you have to run ./setup-makefiles.sh inside the device's dir.
Click to expand...
Click to collapse
No need, check point 4.
thank you very much manuel, very kind of you to share your knowledge with those of us who want to continue your work!
When I tried, I ran ./extract-files.sh in order to get proprietary files from phone itself.
Getting it from the indicated git, you get also the needed .mk files, and then there's no need to run ./setup-makefiles.sh
Forget what I've said...
I hope this guide may inspire some members to give a hand cooking own rom, and we can see this development section filled with different roms. What an optimistic scenario it would be ! .
Thanks again all devs.
knzo said:
Here's a short tutorial on how to build your own version of CM7.
Code:
curl http://android.git.kernel.org/repo > ~/bin/repo
chmod a+x ~/bin/repo
cd ~/android/system
~/bin/repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
~/bin/repo sync
Click to expand...
Click to collapse
in case anyone else faces this, could not run repo init and was going crazy, finally realized repo was not taking the exec flag, opened it up and saw the url was moved, but the link it provided did not work either. remembered the original setup i did for the full android development on another machine and tried this instead -
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
worked like a charm! now, on to the rest...
i am happy to say that i have successfully built and am running my first homegrown KANG, thanks to this tutorial! give it a try, it isn't as hard as you might think (but it does take a VERY long time!)
Hi.
I am a completely n00b here and on the Android environment in general.
So, I was watching the Knzo's instructions and I noted this:
Code:
~/bin/repo init -u git://github.com/CyanogenMod/android.git -b [/bold]gingerbread[/bold]
So I changed it to:
Code:
~/bin/repo init -u git://github.com/CyanogenMod/android.git -b [/bold]isc[/bold]
And it worked!
But, trying to build here:
Code:
~/android/system/vendor/cyanogen/get-rommanager
. build/envsetup.sh && brunch p970
My system says:
Code:
bash: /home/said/android/system/vendor/cyanogen/get-rommanager: No such file or directory
Then I tough, "It's ok, I can get the rom-manager from the market. And skipped to:
Code:
. build/envsetup.sh && brunch p970
But then my system said:
Code:
[email protected]:~/android/system$ . build/envsetup.sh && brunch p970
including device/samsung/maguro/vendorsetup.sh
including device/samsung/tuna/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/vendorsetup.sh
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/p970/cm.mk]]: "device/*/p970/cm.mk" does not exist. Stop.
Device p970 not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Found repository: android_device_lge_p970
Duplicate device 'CyanogenMod/android_device_lge_p970' found in local_manifest.xml.
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/p970/cm.mk]]: "device/*/p970/cm.mk" does not exist. Stop.
** Don't have a product spec for: 'cm_p970'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
Then I tried:
Code:
. build/envsetup.sh && breakfast p970
And this is the output:
Code:
including device/samsung/maguro/vendorsetup.sh
including device/samsung/tuna/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/vendorsetup.sh
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/p970/cm.mk]]: "device/*/p970/cm.mk" does not exist. Stop.
Device p970 not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Found repository: android_device_lge_p970
Duplicate device 'CyanogenMod/android_device_lge_p970' found in local_manifest.xml.
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/p970/cm.mk]]: "device/*/p970/cm.mk" does not exist. Stop.
** Don't have a product spec for: 'cm_p970'
** Do you have the right repo manifest?
So I went to:
Code:
/android/system/build/envsetup.sh
But couldn't find anything resembling the repo manifest. So that's why I'm here... any help?
Thanks in advanced.
EDIT: Maybe I'm just naïve...
saidhabla said:
I am a completely n00b here and on the Android environment in general.
So I changed it to:
Code:
~/bin/repo init -u git://github.com/CyanogenMod/android.git -b [b]isc[/b]
And it worked!
Click to expand...
Click to collapse
What is isc? Do you mean ics stands for Ice Cream Sandwich?
ICS from CyanogenMod isn't even completed yet, then what are you trying to do?
If you really want to hacking the Android system, I suggest that you synchronize the original android source for ICS to build your own ROM:
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
PS: I don't know yet the size of ICS source would be.. It says ~6 GB, but I'm not getting into it yet...
.CMIIW.
The first part is easy, rom-manager is in vendor/cm folder instead. The second part is a bit more difficult - there are only device branches for a few models, you need to look at those makefiles and figure out how to recreate them for our device. I'm at the same point myself. Don't be discouraged by negatives, it certainly can be done (arcee is running it) but we should probably discuss it elsewhere and not hijack this thread. Good luck, and PM me of you get anywhere, I'll do the same.
Sent from my LG-P970 using XDA App
redy2006 said:
What is isc? Do you mean ics stands for Ice Cream Sandwich?
ICS from CyanogenMod isn't even completed yet, then what are you trying to do?
If you really want to hacking the Android system, I suggest that you synchronize the original android source for ICS to build your own ROM:
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
PS: I don't know yet the size of ICS source would be.. It says ~6 GB, but I'm not getting into it yet...
.CMIIW.
Click to expand...
Click to collapse
Thanks!
So, just in case some lost soul come here and watch your post, the command has to be like this:
Code:
~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
Thanks again...
---------- Post added at 12:19 PM ---------- Previous post was at 12:18 PM ----------
dharmabm said:
The first part is easy, rom-manager is in vendor/cm folder instead. The second part is a bit more difficult - there are only device branches for a few models, you need to look at those makefiles and figure out how to recreate them for our device. I'm at the same point myself. Don't be discouraged by negatives, it certainly can be done (arcee is running it) but we should probably discuss it elsewhere and not hijack this thread. Good luck, and PM me of you get anywhere, I'll do the same.
Sent from my LG-P970 using XDA App
Click to expand...
Click to collapse
Agree!
And if someone knows how to open a new thread, please let us know. Over for now.
saidhabla said:
And if someone knows how to open a new thread, please let us know. Over for now.
Click to expand...
Click to collapse
"How to open a new thread" ?
Just on the thread list of General/Android Development section, you will notice a yellow box on the top saying in capital : "NEW THREAD". Just click it..
saidhabla said:
Thanks!
So, just in case some lost soul come here and watch your post, the command has to be like this:
Code:
~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
Click to expand...
Click to collapse
If you've read the main Android documentation, before we can run just "repo" command, we should set the path:
Code:
$ PATH=~/bin:$PATH
If the path didn't set, then it should run the command:
Code:
$ ~/bin/repo
.CMIIW.
Why would I build my own CM7
Hi
Cyanogen has nightly builds fo CM7. Why would I build my own?
Does it make it possible to change the packages included? Is there a tutorial for it?
Is it possible to take out the LG launcher, widgets and that top bar thing that allows to control the connections, and include it in my build?
(please don't ask why would I want the LG launcher. I just like it...).
Thanks
Mário
offcourse said:
Hi
Cyanogen has nightly builds fo CM7. Why would I build my own?
Does it make it possible to change the packages included? Is there a tutorial for it?
Is it possible to take out the LG launcher, widgets and that top bar thing that allows to control the connections, and include it in my build?
(please don't ask why would I want the LG launcher. I just like it...).
Thanks
Mário
Click to expand...
Click to collapse
i'm sorry,but how long have you been in mars ? lol
the nightlies had stopped at v #20 because of the buildbot was down, and no more update till now
that's why all of us (i don't know if it's just me) are so desperated
offcourse said:
Hi
Cyanogen has nightly builds fo CM7. Why would I build my own?
Does it make it possible to change the packages included? Is there a tutorial for it?
Is it possible to take out the LG launcher, widgets and that top bar thing that allows to control the connections, and include it in my build?
(please don't ask why would I want the LG launcher. I just like it...).
Thanks
Mário
Click to expand...
Click to collapse
Well you can build your own ROM if you having the source code, for example this CM source. And yes, you can do everything you want (change the packages, framework, anything). AFAIK there's no tutorial how to do it, but you should have basically programming skill, especially with C++ and Java, since it's based from those programming language. If you don't have that, then you can just using any launcher out there
CMIIW
redy2006 said:
Well you can build your own ROM if you having the source code, for example this CM source. And yes, you can do everything you want (change the packages, framework, anything). AFAIK there's no tutorial how to do it, but you should have basically programming skill, especially with C++ and Java, since it's based from those programming language. If you don't have that, then you can just using any launcher out there
CMIIW
Click to expand...
Click to collapse
OK, thanks. Clearly not for me coz' we, Martians, don't have programming skills. Just wanted a gingerbread rom without all the crap, neither LG's, Vodafone or even Cyanogen.
Also, because LG's gingerbread update, when it comes, will probably not have the VPN and I can't get any vpn software to work currently, except in Cyanogen (which is buggy in some apps).
I am sorry but vendor lge have 404 error can you get another link ?
Hi.. Guys what is special here is that Will try to Compile the JB from Source 6.0+GB Plus Thats A Big File from there server BTW. I Need some help regarding to some Kernel We need. So Stock JB will work on your Arc. So Ill Start compiling This ROM This night + I Need little help regarding on Ramdisk So we can Start That amazing Stock JB... :good:
My Procedure :
Sync all JB Source 9 ( Tree ) 6.0+GB Will Take A Night 20Mbps Of Speed :silly:
Get A Info Building JB Kernel for Unit/Device
RAMDISK Configuration [ Usually This Is What I Need An Help ]
Make My Own Git
And Lastly The ROM Will be Alpha for our Xperia Arc
So Ill Be Adding More Info Tom / This Night / Next Week Based on my Timeline of Development per Device Maintaining 4+ Device :cyclops:
Current Work Im Doing :
Find Info and ready to Sync and Compiling my Own CWM Thanks To pyvparts
This Is A Real WIP !! Everybody Get in
[ Placeholder For More Info ]
Compiling My OwnRamdisk For JB Kernel Alpha..
Google also test compiling on Ubuntu 10.04 LTS, but I used 10.10, 32 bit. These instructions are for Ubuntu version 10.04-11.10
To install JDK6 (needed):
Code:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update sudo apt-get install sun-java6-jdk
FOR 64bit: You will need the required packages, so open up your terminal and enter:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \ libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \ libxml2-utils xsltproc
On Ubuntu 10.10:
Code:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
On Ubuntu 11.10:
Code:
sudo apt-get install libx11-dev:i386
FOR 32bit (what I used): You will need the required packages, so open up your terminal and enter:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \ libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \ libxml2-utils xsltproc
Now, onto downloading the source
First of all, you need to get the google repo tool, in a terminal:
Code:
mkdir ~/bin PATH=~/bin:$PATH curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo
Then reboot the PC
Now, we will actually initialize the repository:
Code:
mkdir -p ~/android/ics/ cd ~/android/ics/ repo init -u git://github.com/CyanogenMod/android.git -b ics
Then enter your name and email address
Then:
Code:
repo sync -j8 if you have bad internet, use a smaller number than 8, eg. 4 or 2
Now, wait for the repo to sync (all 6GB of it )
Then after that is done, you need to setup vendor and device trees for our device
In the terminal again:
Code:
cd ~/android/ics/vendor/ git clone https://github.com/koush/proprietary_vendor_semc.git -b ics semc
Then:
Code:
cd ~/android/ics/device/ mkdir semc cd semc git clone https://github.com/CyanogenMod/android_device_semc_msm7x30-common.git -b ics msm7x30-common git clone https://github.com/CyanogenMod/android_device_semc_anzu.git -b ics anzu git clone https://github.com/CyanogenMod/android_device_semc_mogami-common.git -b ics mogami-common
to sync changes since last sync:
Code:
cd ~/android/ics/ repo sync
get CM props:
Code:
cd ~/android/ics/vendor/cm/ ./get-prebuilts
then to build :
Setup environment:
Code:
cd ~/android/ics/ . build/envsetup.sh
then to get device list:
Code:
lunch
Now, select the number that is anzu-full (or something like that number 4 for me NOT THE ONE WITH "cm_" before it.)
if you get an error about the room service fine and substrings n stuff open the file
build / tools / roomservice.py
goto line 16 or 17
it will have this
device = product[product.index("_") + 1:]
change it to
device = product
save then lunch and you should be able to build (will break other device builds tho)
Now to finally build:
Code:
make -j4 recoveryimage
once you have done that then the recovery + ramdisk will be in
out/target/anzu/recovery/combinedroots/
MAYBE THIS AOSP Kernel Will Work On MooDeD Stock JB Alpha! Kinda Let See.
Click to expand...
Click to collapse
I'm pretty sure I saw code for compiling for job which I believe is slightly different than ics. If urz doesn't work I would suggest looking around xda for a job specific tutorial
Sent from my LT18i using xda app-developers app
zainthesnipe said:
I'm pretty sure I saw code for compiling for job which I believe is slightly different than ics. If urz doesn't work I would suggest looking around xda for a job specific tutorial
Sent from my LT18i using xda app-developers app
Click to expand...
Click to collapse
Thats A Good Opinion But ICS Kernel [ Cyanogenmod ICS Source ] maybe Good To Start A Pre-Alpha MooDeD JB From Source
can't wait
hope you release it soon
Tell me one thing... If the internet connection drops while i'm syncing the repo (the 6 gbs of source) do i have to download it all again or it gets resumed from the part it dropped..?
flsmidth said:
Tell me one thing... If the internet connection drops while i'm syncing the repo (the 6 gbs of source) do i have to download it all again or it gets resumed from the part it dropped..?
Click to expand...
Click to collapse
For Me I dont experienced that kind of error My Answer is Unkown I left it overnight to sync the Repo.
Sent from my GT-I9100G using xda app-developers app
ChaosFirZen said:
For Me I dont experienced that kind of error My Answer is Unkown I left it overnight to sync the Repo.
Sent from my GT-I9100G using xda app-developers app
Click to expand...
Click to collapse
Actually I tried syncing the repo once to make AOSP for Arc.. But due to power failure there a connection drop and i didn't bother to sync it again because i have slow internet connection..
flsmidth said:
Actually I tried syncing the repo once to make AOSP for Arc.. But due to power failure there a connection drop and i didn't bother to sync it again because i have slow internet connection..
Click to expand...
Click to collapse
We Have 20MBps Of Internet Speed
Sent from my GT-I9100G using xda app-developers app
Nice, I like to have a pure AOSP 4.1 rom for the Xperia Arc. Always wondered why there were no AOSP roms for the Arc
The problem is that there is not a lot of device in the git "only samsung and nexus", other devices aren't present. So when you sync, you can't build JB.
"https://github.com/koush/proprietary_vendor_semc.git" don't exist.
Replace ics with jb in the google repo and ics with jellybean in CM repo to sync the Jelly Bean tree.
Good luck.
ChaosFirZen said:
We Have 20MBps Of Internet Speed ;
Click to expand...
Click to collapse
In download or upload?
mekayzer said:
The problem is that there is not a lot of device in the git "only samsung and nexus", other devices aren't present. So when you sync, you can't build JB.
"https://github.com/koush/proprietary_vendor_semc.git" don't exist.
Replace ics with jb in the google repo and ics with jellybean in CM repo to sync the Jelly Bean tree.
Good luck.
Click to expand...
Click to collapse
Even better to sync fxp's vendor trees.. fxp have modified their's to work with jb..
i dont know about arc but here's the one for pro
https://github.com/CyanogenMod/android_device_semc_iyokan/tree/jellybean
* try replacing "iyokan" with anzu or ayame.. You may get the jb tree for Arc/S
rod555 said:
In download or upload?
Click to expand...
Click to collapse
Download
flsmidth said:
Even better to sync fxp's vendor trees.. fxp have modified their's to work with jb..
i dont know about arc but here's the one for pro
https://github.com/CyanogenMod/android_device_semc_iyokan/tree/jellybean
* try replacing "iyokan" with anzu or ayame.. You may get the jb tree for Arc/S
Click to expand...
Click to collapse
Pro Will work on It but the PROBLEM is the Kernel + RAMDISK { Ramdisk 10% Complete }
ChaosFirZen said:
Download
Pro Will work on It but the PROBLEM is the Kernel + RAMDISK { Ramdisk 10% Complete }
Click to expand...
Click to collapse
Ramdisk can't be ported i guess..
I tried 2days ago, but can't build for anzu.
Perhaps when fxp release CM10, we will build again from source.
Someone got the kernel build ?
the only thing that i can say is, THANK YOU ALL!!
very good news.
i have 100 MB internet conection, if that helps any one!!
flsmidth said:
Ramdisk can't be ported i guess..
Click to expand...
Click to collapse
\Thats Why Im Creating My Own Ramdisk ... For MooDeD JB Alpha
ChaosFirZen said:
\Thats Why Im Creating My Own Ramdisk ... For MooDeD JB Alpha
Click to expand...
Click to collapse
Try the ramdisk from the ARC JB AOKP.. the problem with their boot image is gallroc. You might make it work..
Let's use ICS Kernel for the meantime, we'll work on Jelly Bean kernel when we have a working build of it. But with ICS Kernel I doubt Project Butter will function very good, and maybe Voice Action won't work too.
But for a pre-alpha, ICS Kernel would be acceptable!
maybe this can help you
butits tutorial how to build cm10 rom
http://forum.xda-developers.com/showthread.php?t=1789190
I will teach you build ROM.
Lets get some ROCK!!!
Operating System
First step is having a fully functional linux distro. You can choose what you prefer, I'm using ubuntu and I write commands for it. You can use OSX too, as I know, but I've completely no idea how, I never had a Mac.
Well, talking about linux, you need a 64bit distribution, so if you have an old 32 bit processor youn cannot go ahead.
To check which version do you have, type in a shell
uname -a
If the results include "x86_64" you're ok.
Required Packages
You need to install some little packages, to be able to proceed, you can do this with your favorite package manager:
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-dev:i386 g++-multilib mingw32 openjdk-6-jdk pngcrush schedtool tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Some systems need some trick to install all this package, is your care to check this process completed correctly and fix eventually problems.
Install "repo"
Repo is the program that handles synchronization between our pc and the repository, in this case Cyanogen's one. To install do:
mkdir -p ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
So we have downloaded and added executables flag to it. Now we need a folder to store locally the sources, you can put it everywhere, but to be coherent with other guides, I do:
mkdir -p ~/CM10/
Repository initialization
Well, now it's time to initialize our source folder to correctly sync with repository:
cd CM10
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
Nota: Maybe the repo command is not recognized. In this case you can restart the shell or te machine.
Download
Now is download time! Write this command and get a fresh beer, you have to download several GB of data, please wait.
repo sync -j16
The "-j16" switch may be modified as you want, is the number of concurrent thread downloading from repo. 16 is my value, for a 100Mbit connection, maybe you can decrease a little to match your line speed. Someone uses 8 threads for an 8Mbit ADSL line.
Download precompiled files.
There are some others files needed, like the toolchain, including GCC, to compile code.
~/CM10/vendor/cm/get-prebuilts
Another small wait time and we're ready!
Add sources code for GT540
Copy sources from https://github.com/mmxtrem/device_lge_swift to ~/CM10/device/lge/swift
Or extract this archive http://depositfiles.com/files/1chflk58r to ~/CM10/device/lge/swift
Build
Great, we're ready to build!
The build process takes some hours, so be patient. My notebook, takes more than 10 hours!
cd CM10
source build/envsetup.sh && brunch swift
Install
When is ready, we can find the result here:
~/CM10/system/out/target/product/swift/cm-10-XXXXX-JellyBeanSwift-XXXX.zip
This is the package to be flashed in recovery mode.
There are Gapps included.
Update
If you want to update your build, you have to do only this:
cd CM10
repo sync
and build again!
P.S. Dont forget write Credit my name, when will be publish your ROM. Good Luck!
[Guide] How to use Github
http://forum.xda-developers.com/showthread.php?t=1877040
Wow I always wanted to try this out! Thanks for the surprise tutorial!
Wow wow wow.. forget my post in the other thread. This thing miro, this thing here is possible your best contribution to this community.. I'm getting my old gt540 back from my brother and trying these right tomorrow..
I actually thought about asking you for such a tutorial but scratched it as I didn't believe you would do it. But thank you again and again.. I was so wrong
I've just one question, we do the build, ok and we try it, ok, but if we find any bug, where we solve it?! and where we put the corrects librarys for our phone?!
Sorry i'm just very noob
Miroslav is best men on a whole world
Thank you so much for this tutorial
Btw is gt540 msm 7x27 ? if yes could someone try to build this kernel for our phone https://github.com/Californication/lge-kernel-msm7x27-ics-3.0.8
-bfar97- said:
I've just one question, we do the build, ok and we try it, ok, but if we find any bug, where we solve it?! and where we put the corrects librarys for our phone?!
Sorry i'm just very noob
Click to expand...
Click to collapse
+1
Sent from my LG-P990 using Tapatalk 2
smileydr0id said:
Miroslav is best men on a whole world
Thank you so much for this tutorial
Btw is gt540 msm 7x27 ? if yes could someone try to build this kernel for our phone https://github.com/Californication/lge-kernel-msm7x27-ics-3.0.8
Click to expand...
Click to collapse
Yes, gt540 is msm7x27
smileydr0id said:
Miroslav is best men on a whole world
Thank you so much for this tutorial
Btw is gt540 msm 7x27 ? if yes could someone try to build this kernel for our phone https://github.com/Californication/lge-kernel-msm7x27-ics-3.0.8
Click to expand...
Click to collapse
https://github.com/Californication its my repo!
lge-kernel-msm7x27-ics-3.0.8 - not working. I did try port it from LG L5. Kernel not starting, kernel not finish.
lge-kernel-msm7x27 - kernel from SDSL and AOSP, I ported it from https://github.com/CyanogenMod/lge-kernel-msm7x27 for LG 7227 devices (P500/510/C660/and other), but it dont have latest fixes.
Please dont write stupid massages like "smiles" or +1 or other, make it clean! Devs only, if you want build ROM real, if no go spaming into other thread!
XiproX said:
Yes, gt540 is msm7x27
Click to expand...
Click to collapse
https://github.com/Californication its my repo!
lge-kernel-msm7x27-ics-3.0.8 - not working. I did try port it from LG L5. Kernel not starting, kernel not finish.
lge-kernel-msm7x27 - kernel from SDSL and AOSP, I ported it from https://github.com/CyanogenMod/lge-kernel-msm7x27 for LG 7227 devices (P500/510/C660/and other), but it dont have latest fixes.
Click to expand...
Click to collapse
damn
-bfar97- said:
I've just one question, we do the build, ok and we try it, ok, but if we find any bug, where we solve it?! and where we put the corrects librarys for our phone?!
Sorry i'm just very noob
Click to expand...
Click to collapse
^ This, make a guide for this, or is just all "lets google it"?
thanks for that tut miroslav !!
i would be happy if you can make example of bug fixing/driver porting (something simple as example).
Oh, nice post Miro
But one thing, why don't you post how to make device files. It would be of more use as people will try to make their own sources and a good chance that they could make their own device in collaboration. :good:
i've ear i can do a build in a 32bits processor too! but you know xD do what was said up please!!
Could someone try to build this because I can't cause I have 32bit system in my PC.
We need JB for daily use!
Why are you using -mfloat-abi=softfp
why not -mfloat-abi=hard ?
aaa801 said:
Why are you using -mfloat-abi=softfp
why not -mfloat-abi=hard ?
Click to expand...
Click to collapse
forgot about this line, not using for ROM. it need only for android-ndk for kernel building.
Niquel97 said:
We need JB for daily use!
Click to expand...
Click to collapse
Just do it! (c. Nike)
P.S. Dreams-dreams-dreams.... :laugh:
miroslav_mm said:
forgot about this line, not using for ROM. it need only for android-ndk for kernel building.
Click to expand...
Click to collapse
So should work fine if set to hard yes?
i'm getting this error when compiling:
Install system fs image: out/target/product/swift/system.img
out/target/product/swift/system.img+ maxsize=262225920 blocksize=135168 total=277360512 reserve=2703360
error: out/target/product/swift/system.img+ too large (277360512 > [264929280 - 2703360])
al3000 said:
i'm getting this error when compiling:
Install system fs image: out/target/product/swift/system.img
out/target/product/swift/system.img+ maxsize=262225920 blocksize=135168 total=277360512 reserve=2703360
error: out/target/product/swift/system.img+ too large (277360512 > [264929280 - 2703360])
Click to expand...
Click to collapse
Yes, me too, the build comes so big that it fails the size checks on the default partition layout.
To avoid that change the contents in device/lge/swift/BoardConfig.mk, I've used these values:
Code:
# PARTITIONS
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00500000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00900000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0010B07600
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x007478A00
BOARD_FLASH_BLOCK_SIZE := 131072
I believe you can still zip up the right files in out/target/product/swift/ to have a signable update zip, the command "make otapackage" which I found somewhere didn't seem to work.
I have created this thread to ask whatever you want about unofficial builds for Samsung Galaxy S Advance and make dev threads cleaner.
Original DEV thread: http://forum.xda-developers.com/showthread.php?t=2108362
Just an overall review:
What's working:
It Boots
CWM Recovery
Bluetooth
USB ADB
RIL
Leds
Accelerometer
Gyro sensor
Proximity sensor
Light sensor
GPS
Camera (Pictures and panorama)
Audio
WiFi
USB Mass Storage
USB Tethering
Vibrator
USB MTP
OMX codecs, HW video acceleration and video recording
Bluetooth tethering
WiFi tethering
Microphone in third party apps
Magnetometer (compass)
LPM Charging (poweroff charging)
WiFi direct
NOT WORKING:
?
Known issues:
?
https://github.com/TeamCanjica/TeamCanjica/issues?milestone=&page=1&state=open
Sources: https://github.com/TeamCanjica
All credits to diego-ch, Oliver, Shaaan, Cocafe, Codeworkx, and everyone involved, go to his thread and thank him to encourage his work: http://forum.xda-developers.com/showthread.php?t=2108362
Are you trying to build?
Read this: http://wiki.cyanogenmod.org/w/Main_Page
Info about porting cm: http://wiki.cyanogenmod.org/w/Doc:_porting_intro
Compilling:
repo init -u https://github.com/TeamCanjica/android.git -b cm-10.2
repo sync
cd frameworks/av
git fetch http://review.cyanogenmod.org/CyanogenMod/android_frameworks_av refs/changes/32/52032/2
git cherry-pick FETCH_HEAD
cd ../native
git fetch http://review.cyanogenmod.org/CyanogenMod/android_frameworks_native refs/changes/33/52033/3
git cherry-pick FETCH_HEAD
cd ../../system/core
git fetch http://review.cyanogenmod.org/CyanogenMod/android_system_core refs/changes/34/52034/2
git cherry-pick FETCH_HEAD
cd ../..
. build/envsetup.sh
brunch janice
Click to expand...
Click to collapse
i added my java version here but i dont think it causes the issues
Code:
$ java -version
java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode)
im gonna try to init the repo again with cm-10.1
anyone trying to build,
Read This: http://wiki.cyanogenmod.org/w/Build_for_i9300
everything you need to build is in there...
@m4kl4
your java version is fine
diego-ch said:
anyone trying to build,
Read This: http://wiki.cyanogenmod.org/w/Build_for_i9300
everything you need to build is in there...
@m4kl4
your java version is fine
Click to expand...
Click to collapse
i think cm10.1 instead of jellybean could be the issue
to forget about dependencies:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
Click to expand...
Click to collapse
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-dev:i386 g++-multilib mingw32 oracle-java7-installer pngcrush schedtool tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Click to expand...
Click to collapse
yes, I use jdk7 as deprecated java commands were fixed in cm9 but you can use jdk6 to be sure that it will work.
To init and sync the repo:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync -j16
Click to expand...
Click to collapse
Where 16 is the number of jobs to do simultaneously, some people say that this number must be your cpu cores count +1 so if you have a quad core cpu you use -j5, well I really doubt this and I prefer to use at least j8, you can try it yourself.
frapeti said:
to forget about dependencies:
yes, I use jdk7 as deprecated java commands were fixed in cm9 but you can use jdk6 to be sure that it will work.
To init and sync the repo:
Where 16 is the number of jobs to do simultaneously, some people say that this number must be your cpu cores count +1 so if you have a quad core cpu you use -j5, well I really doubt this and I prefer to use at least j8, you can try it yourself.
Click to expand...
Click to collapse
java is working correct, i think i tested -j a few times now i think j16 is great also j32 makes no big difference, but thanks a lot
could someone try to build using external/dhcpd from cm7.2 branch? I will as soon as I get my pc maybe that fix the wifi issue
Re: [CM10.1][Q/A] CM10.1 for the Galaxy S Advance - Q/A - DISCUSSION THREAD
So need any help here anyone?
Sent from my GT-I9070 using xda premium
Shaaan said:
So need any help here anyone?
Sent from my GT-I9070 using xda premium
Click to expand...
Click to collapse
frapeti helped me a lot, its building atm after that there will be probs :silly:
do you know if brunch cm_janice-eng -j4 makes any differences in build-speed?
edit complete
Running releasetool...
MODVERSION: 10.1-20130201-UNOFFICIAL-janice
Package complete: /home/m4kl4/cm10.1/system/out/target/product/janice/cm-10.1-20130201-UNOFFICIAL-janice.zip
md5: fd70e7ea94727d572f9f410ce9eca471
real 80m14.967s
user 206m55.080s
sys 16m23.589s
Click to expand...
Click to collapse
i built it with -j4 next time i gonna try with -j1 to find out if there are differences
In repo '-j#' corresponds to the jobs being executed at a time. When brunch is used, the maximum possible of jobs is used.
if i add diegos repo to local_manifest get these folders updated automatically?
Re: [CM10.1][Q/A] CM10.1 for the Galaxy S Advance - Q/A - DISCUSSION THREAD
m4kl4 said:
if i add diegos repo to local_manifest get these folders updated automatically?
Click to expand...
Click to collapse
Yes. If you do a repo sync and if there are any changes to Diego's repo by any of the devs, the changes will get synced automatically!
Sent from my GT-I9070 using xda premium
@diego-ch
will this line:
Code:
write /sys/class/leds/button-backlight/brightness 255
@
Code:
/device/samsung/u8500-common/init.samsungjanice.rc
fix button leds? I can't try at the moment, just done the same thing by adding "echo 255 > /sys/class/leds/button-backlight/brightness" in "/system/etc/init.d/90userinit" and it works fine but it's like a workaround I guess XD
PS: I have synced your repo and build but kernel still doesn't boot the system, the recovery still works fine
if you dont do
Code:
$ make clobber
files of older builds are used? only unchanged or everything, should i make clobber everytime?
frapeti said:
@diego-ch
will this line:
Code:
write /sys/class/leds/button-backlight/brightness 255
@
Code:
/device/samsung/u8500-common/init.samsungjanice.rc
fix button leds? I can't try at the moment, just done the same thing by adding "echo 255 > /sys/class/leds/button-backlight/brightness" in "/system/etc/init.d/90userinit" and it works fine but it's like a workaround I guess XD
Click to expand...
Click to collapse
I'm not sure if we should add this to the init.rc, meanwhile we can use it...
frapeti said:
PS: I have synced your repo and build but kernel still doesn't boot the system, the recovery still works fine
Click to expand...
Click to collapse
cm team updated something on cm10.1 branch (or maybe I messed up something)
I'm looking into it...
Re: [CM10.1][Q/A] CM10.1 for the Galaxy S Advance - Q/A - DISCUSSION THREAD
m4kl4 said:
if you dont do
Code:
$ make clobber
files of older builds are used? only unchanged or everything, should i make clobber everytime?
Click to expand...
Click to collapse
Make clobber removes all files including the objective files. This is only needed if you edit the core files like boardconfig.mk
If you edit any other files like recovery.fstab, common.mk then the change is recognized by the system and the files are updated automatically!
So tl;dr, make clobber is to be used only if you edit core config files (mostly only boardconfig.mk)!
Sent from my GT-I9070 using xda premium
I have seen OliverG96 changing the device name on 10.1 repo from bcm4330 to bcm4334 but I think we have different chipsets, for instance our binary file is "/system/bin/bcm4330.hcd" while in sgs3 mini is "/system/bin/bcm4334.hcd"
EDIT: little BIG difference:
i9070: NovaThor U8500
i8190: NovaThor U8420
frapeti said:
I have seen OliverG96 changing the device name on 10.1 repo from bcm4330 to bcm4334 but I think we have different chipsets, for instance our binary file is "/system/bin/bcm4330.hcd" while in sgs3 mini is "/system/bin/bcm4334.hcd"
EDIT: little BIG difference:
i9070: NovaThor U8500
i8190: NovaThor U8420
Click to expand...
Click to collapse
I'm aware of that (see the kernel defconfig).
I pointed it out on that commit... see here
shaaan was the one who merged it.
hope not to be so annoying
@defconfig:
CONFIG_BCMDHD_FW_PATH="/system/etc/firmware/fw_bcmdhd.bin"
CONFIG_BCMDHD_NVRAM_PATH="/system/etc/wifi/bcmdhd.cal"
Click to expand...
Click to collapse
is ths right? XD