Hi All,
I'm trying to build CM7 from source but I'm running into a brick wall. Strangely, I did this successfully several months ago on my original dev machine but now it doesn't work on my new machine (Ubuntu 10.04).
Here's my problem: after repo init/sync, there are no devices under device/samsung (other than aries-common, c1-common and charge). Last time, there were dozens of devices, including mine: galaxysmtd. And of course there is no extract-files.sh script.
I followed the instructions exactly as given
wiki.cyanogenmod.org/wiki/Samsung_Galaxy_S:_Compile_CyanogenMod_(Linux)
The repo init/sync seemed to work (took hours), but the devices were missing as described above. I checked the projects as listed in the .repo and they agree with the installed tree (i.e., no devices).
Has something changed? Did I miss something? How can I diagnose the problem? Am I cursed for sins in a former life? Arrrgh.
I'd be very thankful for any guidance.
1) Update to Ubuntu 12.04
or
2) Update your git with
Code:
sudo apt-get install git
or
3)
Code:
repo sync
again.
SOLVED
Hi,
Thanks for the suggestions but I don't think I need to re-install the operating system - that's so Microsoft. I actually did find the problem: there was an omitted step in the instructions. Namely, after the repo sync and before the extract-files, you have to do:
. /build/envsetup.sh
breakfast galaxysmtdI found this in a CM10 thread
http://forum.xda-developers.com/showthread.php?t=1813924
I suspect that since my last (successful) build, they omitted the collection of devices in the interest of efficiency, and only download a specific device on request per lines above. In any case, it's building successfully now. (I wish they had updated the Gingerbread instructions - it would have saved me days of hair-pulling).
This is a guide to build cyanogenmod 10.1 (Android 4.2.1) for Google Nexus 4. This guide is for linux. I will add a guide to build on mac soon, but the basic principle is the same.
Preparation
You need a fully working build environment. If you don't have one running already, you can follow the official android guide on how to set up build environment. Follow the easy steps in the guide.
Check this guide by sylentprofet about how to get the build environment set up.
Your build environment is now set? Good, let's start!
Get the sources
Start by creating a new working directory for CM10.1. You can create this anywhere on your workstation.
Code:
$ mkdir ~/cm10.1
$ cd ~/cm10.1
£ mkdir -p bin
Initialize Repo for Android CM10.1 (Android 4.2.1):
Code:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
and enter your credentials if needed.
Download the sources:
Code:
$ repo sync
Wait until it is finished. It will take a long time, depending on your internet connection.
Obtain the device build files and proprietary files:
To do this create a file named 'local_manifest.xml" in the .repo folder. This is a hidden folder, so you have to allow your visualisation of hidden files, alternatively run "open .repo" code from terminal. Or you can just run the code below to create the file directly into the folder.
Code:
$ gedit ~/cm10.1/.repo/local_manifest.xml
For Mac you can use:
Code:
$ touch ~/cm10.1/.repo/local_manifest.xml
Paste the following lines into the file:
Code:
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-10.1"/>
<project name="CyanogenMod/android_device_lge_mako" path="device/lge/mako" remote="github" revision="cm-10.1"/>
<project name="CyanogenMod/lge-kernel-mako" path="kernel/lge/mako" remote="github" revision="jellybean"/>
</manifest>
Save the file. And rerun the code:
Code:
$ repo sync
Download the necessary pre-builts:
Code:
$ ~/cm10.1/vendor/cm/get-prebuilts
That's all the sources ready now.
Edits for mac only
If you try building now you will get elf errors when the kernel is being compiled. There are different way for fix this, but I'm using this method.
Go to /kernel/lge/mako/scripts/mod/ folder, open the file 'mk_elfconfig.c' and replace
Code:
#include <elf.h>
with
Code:
#include "elf.h"
. Do the same in the file named 'modpost.h'. Next download the attached file named 'elf.h' and copy to the same folder. You are now ready to build.
Building CyanogenMod
Run the following command:
Code:
$ . build/envsetup.sh
and build by running:
Code:
$ brunch mako
Credits:
CyanogenMod team
Raum1807
Weow, your nice.
I was compiling CM10.1 for my mako and I have this following error
what about that ?
[[email protected] system]# . build/envsetup.sh && brunch mako
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/vendorsetup.sh
File "<string>", line 1
import os,sys; print os.path.realpath(sys.argv[1])
^
SyntaxError: invalid syntax
File "build/tools/roomservice.py", line 37
print "Device %s not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod)." % device
^
SyntaxError: invalid syntax
** Don't have a product spec for: 'cm_mako'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
[[email protected] system]#
Click to expand...
Click to collapse
Happened to me too. Re run ". build/envsetup.sh" and then "brunch mako". Worked for me the second time.
Edit: didn't read the post carefully, looks more like a build environment error
Sent from my Nexus 4 using xda app-developers app
Downgraded make, git and perl on my Arch Linux. Now works
I've just added this guide to the Nexus 4 Complete Index
Sent from my GT-I9100 using xda premium
Good to see another O2X convert here
Good guide, might start building my own stuff again for this phone.
Cannot seem to get past this:
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/mako/cm.mk]]: "frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk" does not exist. Stop.
** Don't have a product spec for: 'cm_mako'
** Do you have the right repo manifest?
Any ideas?
Is there a guide on how to do cherry picks? Im interested in developing
Sent from my Nexus 4 using xda premium
dosangst said:
Cannot seem to get past this:
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/mako/cm.mk]]: "frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk" does not exist. Stop.
** Don't have a product spec for: 'cm_mako'
** Do you have the right repo manifest?
Any ideas?
Click to expand...
Click to collapse
Check if you have the file "phone-xhdpi-2048-dalvik-heap.mk" in your repo.
jarjar124 said:
Is there a guide on how to do cherry picks? Im interested in developing
Sent from my Nexus 4 using xda premium
Click to expand...
Click to collapse
Go go the gerritt review site, click on 'cherry-pick' and the copy the code displayed underneath. On terminal direct to the required folder and then paste the code on terminal. So if the change is in 'frameworks_base', do 'cd ~/cm10.1/frameworks/base' and then paste the code.
This might help..
https://android.googlesource.com/pl...815362c/build/phone-xhdpi-2048-dalvik-heap.mk
dosangst said:
Cannot seem to get past this:
build/core/product_config.mk:189: *** _nic.PRODUCTS.[[device/*/mako/cm.mk]]: "frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk" does not exist. Stop.
** Don't have a product spec for: 'cm_mako'
** Do you have the right repo manifest?
Any ideas?
Click to expand...
Click to collapse
Imperticus said:
Check if you have the file "phone-xhdpi-2048-dalvik-heap.mk" in your repo.
Go go the gerritt review site, click on 'cherry-pick' and the copy the code displayed underneath. On terminal direct to the required folder and then paste the code on terminal. So if the change is in 'frameworks_base', do 'cd ~/cm10.1/frameworks/base' and then paste the code.
Click to expand...
Click to collapse
I finally got Cm10.1 to build correctly on my own after days and days of troubleshooting. I wish I would have seen this guide earlier! I am having one slight problem though. Every time I sync, it hangs at 99%(353/356). It always hangs up on the last 3 projects. Everything builds fine. I think it has something to do with prop files. I've tried pulling them from the phone and using "The Muppets" github in local_manifest.xml, but it makes no difference. It hangs every time. I've let it sit for hours and nothing. It was syncing all the way through just fine, but a couple days ago it stopped and hasn't synced properly since. If anyone has any ideas I'd greatly appreciate it! Thanks.
how do i move the file when it is done compiling? it says" The file "cm-10.1-20121222-UNOFFICIAL-mako.zip" cannot be handled because you do not have permissions to read it." Also when I do get it out to desktop with this command " sudo cp -r cm-10.1-20121222-UNOFFICIAL-mako.zip '/home/jarman/Desktop' " I dont have permission to read and write it. Any help?
jarjar124 said:
how do i move the file when it is done compiling? it says" The file "cm-10.1-20121222-UNOFFICIAL-mako.zip" cannot be handled because you do not have permissions to read it." Also when I do get it out to desktop with this command " sudo cp -r cm-10.1-20121222-UNOFFICIAL-mako.zip '/home/jarman/Desktop' " I dont have permission to read and write it. Any help?
Click to expand...
Click to collapse
sorry i'm more familiar with mac, not linux.Try 'sudo chmod -R 755 cm-10.1-20121222-UNOFFICIAL-mako.zip'
jarjar124 said:
how do i move the file when it is done compiling? it says" The file "cm-10.1-20121222-UNOFFICIAL-mako.zip" cannot be handled because you do not have permissions to read it." Also when I do get it out to desktop with this command " sudo cp -r cm-10.1-20121222-UNOFFICIAL-mako.zip '/home/jarman/Desktop' " I dont have permission to read and write it. Any help?
Click to expand...
Click to collapse
Why don't you set your build folder in the home directory?
Thanks for the guide was wondering how to make the switch as I was building CM10.
Anyone having luck building in Ubuntu 12.04, Just curious as I am on 10.4 (x64) as advised by Google but that update button is begging me to press it. Also will upgrading from 10.4 to 12.04 destroy my Android/CM build enviroments or will everything remain in tact??
Thanks for the help.
kjacksonmusic said:
Thanks for the guide was wondering how to make the switch as I was building CM10.
Anyone having luck building in Ubuntu 12.04, Just curious as I am on 10.4 (x64) as advised by Google but that update button is begging me to press it. Also will upgrading from 10.4 to 12.04 destroy my Android/CM build enviroments or will everything remain in tact??
Thanks for the help.
Click to expand...
Click to collapse
It should work on 12.04, as the cyanogenmod official guides are written for that version of ubuntu. I can't say whether the build environment will remain the same or not.
kjacksonmusic said:
Thanks for the guide was wondering how to make the switch as I was building CM10.
Anyone having luck building in Ubuntu 12.04, Just curious as I am on 10.4 (x64) as advised by Google but that update button is begging me to press it. Also will upgrading from 10.4 to 12.04 destroy my Android/CM build enviroments or will everything remain in tact??
Thanks for the help.
Click to expand...
Click to collapse
There are different packages to set up the build environment in 12.04 that are listed on googles site. They work. You can upgrade, but you would have to install the new packages. They also work on 12.10 fyi.
I was wondering if anyone has successfully set up the build environment in Mint 14? The packages for 12.04 won't install. If anyone can help, I would be grateful.
Sent from my Nexus 4 using Tapatalk 2
In case anyone is following my upgrade, I upgraded to 12.04 and my Android Working Directory still compiles and builds as well as cm10.1:good:.
Thanks for the help.
kjacksonmusic said:
In case anyone is following my upgrade, I upgraded to 12.04 and my Android Working Directory still compiles and builds as well as cm10.1:good:.
Thanks for the help.
Click to expand...
Click to collapse
Even builds just fine for me on 13.04 mate. Just using the 12.04 required packages.
@OP - could you do a guide on how to build AOSP rom and adding in features from CM?
Many thanks!
Start with the CyanogenMod build instructions for i9300
Wherever the guide says i9300, use i9305 instead!
When the guide tells you to install a CM 10.1 ROM on your rooted phone, before running extract-files.sh, you can use the build from codeworkx.
Follow the guide and stop before executing 'repo init'. Do instead:
$ repo init -u git://github.com/perchrh/android.git -b cm-10.1
This uses a device and vendor tree for the i9305 from teamdisgruntled, and a general samsung vendor tree from TheMuppets.
Follow the guide again, until the end.
Flash your phone with the resulting zip file cm-10.1*.zip
Reboot and you're done!
Thanks to xda-member vkggg for posting a similar guide for AOSP that got me started on my CM build.
Do you see the following when doing the 'breakfast' command?
Syncing dependencies
fatal: duplicate project CyanogenMod/android_device_samsung_smdk4412-common in /home/me/android/system/.repo/manifest.xml
android_device_samsung_smdk4412-common is part of the extra's added to the manifext.xml file and it is also included in the local_manifests/roomservice.xml file
mcampbellsmith said:
Do you see the following when doing the 'breakfast' command?
Syncing dependencies
fatal: duplicate project CyanogenMod/android_device_samsung_smdk4412-common in /home/me/android/system/.repo/manifest.xml
android_device_samsung_smdk4412-common is part of the extra's added to the manifext.xml file and it is also included in the local_manifests/roomservice.xml file
Click to expand...
Click to collapse
Thanks! That looks new. Probably -common wasn't included in the other file previously.
I've updated the dependency list to reflect this and the error should be gone now
Update: I've verified the fix. Note that if you had an error while doing repo init, another 'repo init' in the same directory may not work. In that case, remove the .repo directory or do the init in a new directory!
I just got everything working for the first time finally and I'm not sure how to get around this. Every compiling/building guide says to execute the following with appropriate URL and branch, but it gives me the (second) below.
Code:
repo init –u git://github.com/user/android.git –b cm-10.2
Code:
[email protected]:~/android/omni$ repo init -u git://github.com/mike64221/android.git -b android-4.4
/home/mike/bin/repo: line 1: syntax error near unexpected token `newline'
/home/mike/bin/repo: line 1: `<!DOCTYPE html>'
I just can't figure it out. Could anyone help?
Yes, I am (attempting) to build Omni.
Hopefully there'll be some possible solutions by morning so I can go ahead and let it work during school.
Your best shot is to post this at android q&a forum where thousand's more will have access to see and help
I want to learn and compile for myself, so I am following the instructions to do it on Sony's website. All good till step 4 Initialise AOSP tree, entering the repo command as sudo in step 1 comes back with a bash error syntax error near unexpected token 'newline'
Any help appreciated, I am using Debian 11
Regards Steve
srdempster said:
I want to learn and compile for myself, so I am following the instructions to do it on Sony's website. All good till step 4 Initialise AOSP tree, entering the repo command as sudo in step 1 comes back with a bash error syntax error near unexpected token 'newline'
Any help appreciated, I am using Debian 11
Regards Steve
Click to expand...
Click to collapse
Maybe here you will find some help https://opendevices.ix5.org/resources/