Related
First of all, why would you want to do it when there are Nightlies to be dowloaded and flashed?
Let me quote Rec Dev fattire here:
fattire said:
Off the top of my head...
You never, ever have to wait for a nightly
You can add or remove as-yet uncommitted features with ease.
You learn how Android works under the hood
You learn how to use Linux
You'll learn how to use git
You may, even accidentally, pick up a little C, Java, C++, and learn about the build system.
You can personalize Android-- make your own tweaks, modules, graphics, add or remove projects etc. In other words, you have control over every aspect of your device's functionality. Your build is custom to you.
You can audit the code for potential security issues such as back doors or trojans (as opposed to just trusting a random person who posts a build). Since CM10 source is open, you can examine every commit, and there are many eyes looking at the code. (does not apply to proprietary blobs, but these are pulled from your device, so you have and are using them already)
You can contribute features/fixes back upstream
You can start ports to other as-yet-unsupported devices (start by copying folders from similar devices to devices/manufacturer/model)
You come to really understand that Android phones and tablets are full-fledged general-purpose computers just like laptops and desktops.
AAAAND....you get huge bragging rights
The extent to which you delve into the above is entirely up to you. The walkthrough is just an introduction to that world. Some people will build once and never do it again... but others will start to tinker and make changes to their own build and want to share them with others, and soon some will start making contributions back to official CM10 upstream... or port to new devices... and by fixing bugs and all this... everyone benefits.
Plus...
It's fun.
Click to expand...
Click to collapse
Hardware Requirements
You'll need a computer configuration that is not too shabby to pull this off; also you'll need a decent Interweb connection to download all that is needed.
Here are some hardware examples:
Utacka
Ahalford
Anti
Me
In other words, you need to have a box capable of doing some crunching. The better the PC, the faster the compile and vice-versa.
As for the Internet connection, you have to pull about 13 Gb of tiny files in the first CM10.1 sync, and additional 2-3 Gbs in your second sync.
Trying to do it on a 512Kb/s connection is an exercise in futility.
Setting up the Build Environment
First things first: you need to download and install 64-bit version of Ubuntu 12.04. A 32-bit one won't cut it.
Installed it? Good, let's move on.
Now do a system update; click that little switch icon in the top right hand corner and you'll get a menu. Launch Update Manager and install everything it finds.
Now that your Ubuntu is up to speed you need to download and install some more stuff. Launch the terminal (Ctrl + Alt + T).
Copy the below code and paste it (right-click and paste or Shift + Insert, Ctrl + V doesn't work) in the terminal, hit enter.
Code:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl pngcrush schedtool g++-multilib lib32z1-dev lib32ncurses5-dev libxml2-utils
If 'lib32ncurses5-dev' fails, delete it from the list, install everything else.
Now you need to add the following repos, again copy/paste each line into the terminal, hit enter. Repeat for each line of the code below.
Code:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"
Code:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse"
Code:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
Code:
sudo apt-get update
Now you are going to install Synaptic.
Code:
sudo apt-get install synaptic
Done? Good.
Click the 'Dash Home' button (top left hand corner of your desktop), find and launch Synaptic Package Manager. Search for 'Sun Java6 JDK' and install it will all the dependencies except sun-java6-demo and sun-java6-doc.
Now go to http://developer.android.com/sdk/index.html and download the linux version of the Android SDK. It provides the API libraries and developer tools necessary to build. When your download is done, open it with Archive Manager, extract it somewhere, and move the extracted folder to your Home folder. Rename it to 'SDK' for simplicity.
Now you need to download and install Android SDK Platform Tools. Use file manager to navigate to your SDK sub-folder Tools. Find 'android' and double-click to run it. You'll be asked what you want to download. Choose the 'Platform Tools' and the Android 4.1.2 SDK Level 16 and the Android 4.2 SDK level 17 Dev tools and hit install. Let it download; it might take some time, depending on your download speed.
Now the time is ripe for you to setup your Android repos. Copy/paste the following commands into the terminal, hit enter after each one.
Code:
mkdir -p ~/bin
Code:
mkdir -p ~/cm10.1
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Code:
export PATH=~/bin:$PATH
You have to reboot after this for changes to take effect.
Initial Repo, local_manifest
Once reboobed, open the terminal once again and do this:
Code:
cd cm10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
Your initial sync will take some time. After it is is done, go to your cm10.1/.repo folder (/.repo is hidden, so press Ctrl + H in your file manager for it to show up). Create a
subfolder called local_manifests in /.repo. Then create a blank document called roomservice.xml in /.repo/local_manifests. Copypasta™ the below code into roomservice.xml,
save it, close the document.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_n7000" path="device/samsung/n7000" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_galaxys2-common" path="device/samsung/galaxys2-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_kernel_samsung_smdk4210" path="kernel/samsung/smdk4210" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
</manifest>
Click to expand...
Click to collapse
NOTE: All in the above posts needs to be done only once, prior to compiling your first build.
For all your subsequent builds you'll have to do just the steps listed in the next posts.
Start the Build
It's time for you to do another repo sync to pull Samsung device-specific stuff.
Code:
repo sync
This sync is going to be considerably shorter than the first one. After it is done, it's time for you to start the build.
Code:
~/cm10.1/vendor/cm/get-prebuilts
. build/envsetup.sh
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G
brunch n7000
If everything goes right, you should see this at the end of the compile:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Your cm10.1 rom zip will be in cm10.1/out/target/product/n7000 folder.
This is how it looks when the build gets going:
Subsequent Builds
You'll want to do another build tomorrow once your first one has gone through fine.
There are two ways you can go about it.
#1: do a
Code:
cd cm10.1
repo sync
export USE_CCACHE=1
~/cm10.1/vendor/cm/get-prebuilts
. build/envsetup.sh
brunch n7000
The build system should notice which source files have changed and need rebuilding, and should only build the new stuff. This is what you might want to do when there were no major changes in the merged commits here: http://review.cyanogenmod.org/#/q/status:merged,n,z
However, what I always do and would always recommend
#2:
Code:
cd cm10.1
make clean
repo sync
~/cm10.1/vendor/cm/get-prebuilts
. build/envsetup.sh
brunch n7000
'make clean' command will delete your whole /out folder, and your new build will start from scratch. Instead of 'make clean' you can also use 'make clobber'; the difference between the commands is explained here.
There is a way to completely automate your compiling process à la CyanogenMod's Jenkins. You can learn how from AndroidSlave here: http://forum.xda-developers.com/showthread.php?p=46110939
Cherry Picking
***Cherry picking from CM Gerrit***
This is one of the perks of compiling CM10.1 yourself. Official nightlies have a lot of features, but there's also a lot of stuff waiting for a review on Gerrit.
You can follow the commits waiting to be reviewed and merged into the main repo here: http://review.cyanogenmod.org/#/q/status:reviewed,n,z
You can cherry-pick anything from the upcoming features and incorporate it into your Rom before the official CM10.1 does the same.
Let's say that you want to have this commit before it becomes merged: http://review.cyanogenmod.org/30878
The commit says:
Code:
Project CyanogenMod/android_packages_apps_LockClock
It's quite simple to do that. Fire up the Terminal (Ctrl + Alt + T) and navigate to your LockClock folder.
Code:
cd cm10.1/packages/apps/LockClock
In other words you must be in the same folder as stated in 'Project' for cherry-picking to work.
Now minimize the terminal (don't close it) and switch to the Gerrit page in your browser.
http://review.cyanogenmod.org/#/c/30878/
Click on cherry-pick button here.
Then click several times on the little clipboard icon at the end of the cherry-pick URL.
This automagically copies the cherry-pick URL into your clipboard. Now, go back to your terminal, paste the cherry-pick URL in it and hit enter.
That is all: the commit will get pulled and incorporated into your local repo. You are ready to compile a build which will contain the feature you have just cherry-picked.
***Cherry-picking from Github***
http://forum.xda-developers.com/showpost.php?p=42486858&postcount=449
How to compile CM10.1 for Nexus 4
If you have never built CM10.1 then you need to do everything from post #3 here, and this part
Code:
cd cm10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
from post #4.
After the initial repo sync is done, now comes the Nexus 4 specific bit. As stated before, go to your cm10.1/.repo folder and create a blank document called local_manifest.xml. Paste the below code into local_manifest.xml, save it, close the document.
If you already have local_manifest.xml with n7000 stuff in it, then just add all the lines beginning with <project name= from below to it, save and exit Gedit.
<?xml version="1.0" encoding="UTF-8"?>
<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>
Click to expand...
Click to collapse
Now do the second repo sync to pull Nexus 4 specific stuff.
Code:
repo sync
Do the following after the second sync has gone through.
Code:
~/cm10.1/vendor/cm/get-prebuilts
Now it's time to start the build.
Code:
. build/envsetup.sh
export USE_CCACHE=1
brunch mako
That's it. Wait for the build to get compiled and flash your CM10.1_UNOFFICIAL_mako.zip from cm10.1/out/target/product/mako folder.
How to compile CM10.1 for Note II LTE (t0lte)
If you have never built CM10.1 then you need to do everything from post #3 here, and this part
Code:
cd cm10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
from post #4.
After the initial repo sync is done, now comes the Note II LTE specific bit. As stated before, go to your cm10.1/.repo folder and create a blank document called local_manifest.xml. Paste the below code into local_manifest.xml, save it, close the document.
If you already have local_manifest.xml with n7000 stuff in it, then just add all the lines beginning with <project name= from below to it, save and exit Gedit.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_smdk4412-common" path="device/samsung/smdk4412-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_kernel_samsung_smdk4412" path="kernel/samsung/smdk4412" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_galaxys2-common" path="device/samsung/galaxys2-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_t0lte" path="device/samsung/t0lte" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
</manifest>
Click to expand...
Click to collapse
Note: you might already have some of the lines in your local_manifest.xml if you have compiled a build for n7000. If that's the case, skip adding the lines you already have.
Now do the second repo sync to pull Note II specific stuff.
Code:
repo sync
Do the following after the second sync has gone through.
Code:
~/cm10.1/vendor/cm/get-prebuilts
Now it's time to start the build.
Code:
. build/envsetup.sh
export USE_CCACHE=1
brunch t0lte
That's it. Wait for the build to get compiled and flash your CM10.1_UNOFFICIAL_mako.zip from cm10.1/out/target/product/t0lte folder.
Reserved
How to set up a build environment in Ubuntu 13.04:
http://forum.xda-developers.com/showthread.php?t=2224142
Discarding Failed or Unwanted Cherry Picks
If you want to get rid of something you have cherry-picked this is what needs to be done.
We'll stick to the cherry-picking example described in the previous post.
Start the Terminal and navigate to the folder containing your unwanted cherry-pick, in this case LockClock.
Code:
cd cm10.1/packages/apps/LockClock
From here you need to persuade Git to discard the cherry-picked thing. Do this:
Code:
git reset --hard
And that is that.
However, sometimes git has its quirks and doesn't want to do what it's been told. If that is the case, you'll get warnings when doing your next repo sync.
If that happens, repeat the two steps from above and delete the top folder where your cherry-pick was located. In this case, it is /packages.
Do the repo sync again and the folder will be redownloaded and stored on your machine in pristine state.
How to compile CM10.1 for Nexus 7
If you have never built CM10.1 then you need to do everything from post #3 here, and this part
Code:
cd cm10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
from post #4.
After the initial repo sync is done, now comes the Nexus 7 specific bit. Do this:
Code:
~/cm10.1/vendor/cm/get-prebuilts
. build/envsetup.sh
breakfast grouper
This will download the device specific configuration and kernel source for your device.
Now it's time to extract proprietary blobs from your tablet.
Go to your grouper CM10.1 folder.
Code:
cd cm10.1/device/asus/grouper
Connect your Nexus 7 to the computer using USB cable. Make sure that adb debugging is on in Developer's Options. Now paste this into the terminal:
Code:
./extract-files.sh
If you get adb errors, that means that adb is not in the path of execution. Close the terminal, start your file manager and when in your /home folder press Ctrl + H for hidden stuff to appear. Open .bashrc file with Gedit and add the following line at the end of the code:
Code:
export PATH=${PATH}:/<your path to sdk>/platform-tools
(My <path to sdk> looks like this: export PATH=${PATH}:/home/chasmodo/android-sdk/sdk/platform-tools)
Save the file, open a new terminal window, go to cd cm10.1/device/asus/grouper and repeat
Code:
./extract-files.sh
The adb command should now be available and your blobs pulled. After this has been done go back to cm10.1 folder and start the build.
Code:
cd ~/cm10.1 (or croot, same thing)
export USE_CCACHE=1
brunch grouper
After the compile goes through, your CM10.1_UNOFFICIAL_grouper.zip will be waiting for you in cm10.1/out/target/product/grouper folder.
How to compile CM10.1 for Note II (n7100)
If you have never built CM10.1 then you need to do everything from post #3 here, and this part
Code:
cd cm10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
from post #4.
After the initial repo sync is done, now comes the Note II specific bit. As stated before, go to your cm10.1/.repo folder and create a blank document called local_manifest.xml. Paste the below code into local_manifest.xml, save it, close the document.
If you already have local_manifest.xml with n7000 stuff in it, then just add all the lines beginning with <project name= from below to it, save and exit Gedit.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_smdk4412-common" path="device/samsung/smdk4412-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_kernel_samsung_smdk4412" path="kernel/samsung/smdk4412" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_galaxys2-common" path="device/samsung/galaxys2-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_n7100" path="device/samsung/n7100" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
</manifest>
Click to expand...
Click to collapse
Note: you might already have some of the lines in your local_manifest.xml if you have compiled a build for n7000. If that's the case, skip adding the lines you already have.
Now do the second repo sync to pull Note II specific stuff.
Code:
repo sync
Do the following after the second sync has gone through.
Code:
~/cm10.1/vendor/cm/get-prebuilts
Now it's time to start the build.
Code:
. build/envsetup.sh
export USE_CCACHE=1
brunch n7100
That's it. Wait for the build to get compiled and flash your CM10.1_UNOFFICIAL_mako.zip from cm10.1/out/target/product/n7100 folder.
thumbs up, really appreciate sharing your knowledge :good:
Re: [HOWTO] Build CM10.1 for N7000
I build on the first gen i7 @ 2.0ghz, 8gigs of ram, 120gig SSD, clean compile is about 30-35 min.
My next machine will be a i7 @ 3.4, 16gigs of ram and 250gig SSD
I suggest a minimum of an i3 with 8gigs of ram, otherwise you'll be compiling for hours.
Then reason I suggest that as a minimum is because if for instance you cherry pick something, that breaks the build, you'll need to revert that pick and re build. It could be a very time consuming process.
This is great~!
i'm going to have to try this out haha... ubuntu in a VM environment on an i7 + 256gb ssd
hope you're up for questions guys haha :silly:
happiboi said:
This is great~!
i'm going to have to try this out haha... ubuntu in a VM environment on an i7 + 256gb ssd
hope you're up for questions guys haha :silly:
Click to expand...
Click to collapse
Of course we are up for questions, that's why this thread is here.
chasmodo said:
Of course we are up for questions, that's why this thread is here.
Click to expand...
Click to collapse
Excellent Article.
Hmmmm now where did i keep my Computer
Odp: [HOWTO] Build CM10.1 for N7000
Thanks for tutorial Chas
Wysłane z mojego GT-N7000 za pomocą Tapatalk 2
great thing ... short, precise .... Keep it up Chas
Hi,
I'm trying to port AOSPA to the Xperia Z ... for my own usage, but I'd also share it to the community.
I've never done this before and after days of trying and editing files I'm getting a bit tired at the moment.
It would be great if someone could help me to get into it. All Porting Guides are different and most of them are using already precompiled files.
At the moment I get the error
Code:
Traceback (most recent call last):
File "../../base/android/jni_generator/jni_generator.py", line 1065, in <module>
sys.exit(main(sys.argv))
File "../../base/android/jni_generator/jni_generator.py", line 1061, in main
options.optimize_generation)
File "../../base/android/jni_generator/jni_generator.py", line 996, in GenerateJNIHeader
jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, namespace)
File "../../base/android/jni_generator/jni_generator.py", line 507, in CreateFromClass
stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
make: *** [/home/pa/git/aospa/out/target/product/c6603/obj/GYP/shared_intermediates/ui/gl/jni/Surface_jni.h] Fehler 1
make: *** Warte auf noch nicht beendete Prozesse...
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Is this helpful? I can provide some more information if needed.
Some of the steps I did so far:
repo init -u git://github.com/AOSPA/manifest.git -b kitkat
repo sync -j48
Followed this Guide to add Sony BLOBS and edited '.repo/local_manifests/sonyxperiadev.xml' to the following (Deleted some 'remove-project' lines because they have been not present)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="sony" fetch="git://github.com/sonyxperiadev/" />
<remove-project name="platform/hardware/invensense" />
<remove-project name="platform/hardware/akm" />
<project path="device/sony/lagan" name="device-sony-lagan" groups="device" remote="sony" revision="master" />
<project path="device/sony/c6603" name="device-sony-c6603" groups="device" remote="sony" revision="master" />
<project path="device/sony/sgp321" name="device-sony-sgp321" groups="device" remote="sony" revision="master" />
<project path="vendor/sony/dash" name="DASH.git" groups="device" revision="master" remote="sony" />
</manifest>
I also commented the following lines from 'device/sony/c6603/full_c6603.mk'
Code:
#TARGET_PREBUILT_KERNEL ?= kernel
#PRODUCT_COPY_FILES += $(LOCAL_PATH)/$(TARGET_PREBUILT_KERNEL):kernel
Compiling did not work with this lines. So i tried it without kernel. My idea would be to add other kernel sources like cm11 kernel. For my understanding this would mean, that I have to add 'device/sony/c6603/kernel' folder and insert the files from 'github.com/CyanogenMod/android_kernel_sony_apq8064/tree/cm-11.0'. After that I would edit the commented lines to
Code:
TARGET_KERNEL_SOURCE ?= kernel
PRODUCT_COPY_FILES += $(LOCAL_PATH)/$(TARGET_KERNEL_SOURCE):kernel
And uncomment them. Is this correct?
After that I copied 'vendor/pa/products/pa_mako.mk' to 'vendor/pa/products/pa_yuga.mk' and edited it to the following:
Code:
# Copyright (C) 2013 ParanoidAndroid Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Check for target product
ifeq (pa_yuga,$(TARGET_PRODUCT))
# Define PA bootanimation size
PARANOID_BOOTANIMATION_NAME := XHDPI
# OVERLAY_TARGET adds overlay asset source
OVERLAY_TARGET := pa_xhdpi
# Build paprefs from sources
PREFS_FROM_SOURCE ?= true
# Include ParanoidAndroid common configuration
include vendor/pa/main.mk
# Inherit AOSP device configuration
$(call inherit-product, device/sony/c6603/full_c6603.mk)
# Override AOSP build properties
PRODUCT_NAME := pa_yuga
PRODUCT_BRAND := Sony
PRODUCT_MODEL := C6603
PRODUCT_MANUFACTURER := Sony
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=yuga BUILD_FINGERPRINT="Sony/C6603_1270-6697/C6603:42.2/10.3.A.0.423/WP5_rg:user/release-keys" PRIVATE_BUILD_DESC="C6603-user 4.2.2 10.3.A.0.423 WP5_rg test-keys"
endif
Now I added
Code:
add_lunch_combo pa_yuga-userdebug
to 'vendor/pa/vendorsetup.sh'
using make -j8 gives me:
Code:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4
TARGET_PRODUCT=pa_yuga
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
[COLOR="Red"]TARGET_ARCH_VARIANT=armv7-a-neon[/COLOR]
TARGET_CPU_VARIANT=krait
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.11.0-13-generic-x86_64-with-Ubuntu-13.10-saucy
HOST_BUILD_TYPE=release
BUILD_ID=KRT16S
OUT_DIR=/home/pa/git/aospa/out
============================================
I think the red line should be a bit different?
[GUIDE-HOW TO] Project Rookie III - ROM Building steps, tricks and tips for M7SPR [4.4] [WIP]
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Welcome
This is a guide for all those who want to build for their Sprint HTC ONE but do not neccesasarily have the knowledge or experience.
This is an unofficial guide for the building of custom ROMs and other mods for the Sprint HTC ONE (M7SPR or M7WLS). This is a work in progress, with additions being made as often as possible. This thread has already grown with the help of the devs established in this forum. I began this project a year ago when I was using a Samsung GS II Skyrocket. I started another alike thread called PR II in the LGOG forum a while back as well. I have since moved on to a ONE, but both threads remain to this day. The point is this: everyone who uses this site has a desire for modding, customizing, and/or otherwise altering their device. Unfortunately, many have no idea how to go about doing these things for themselves. As such, there is a lot of dissatisfaction among developers about receiving constant demands, suggestions, and requests for updates. This thread is meant to give those who want to step up and build for themselves the means to do so. It is an ever-changing thread, with all assistance welcomed.
READ ME:
On one hand, it should go without saying that if you have no knowledge and/or experience with building, java, C++, and various other tools, you probably shouldn't begin here. At the same time, it is possible to learn to build, provided you can read, follow directions, and aren't too lazy to RESEARCH.
OH YEAH, and you better have patience. This isn't easy. It will be work. The quickest way to get flamed is to show yourself to be lazy. If you think that with a couple clicks, you can have your own flashy ROM, forget it. But, if you do want to learn, this is a good place to get started. I have no ego about this; I started the same way and just want to help everyone learn to build their own ROM. But, everyone will struggle to get to a successful point, and lazy, unmotivated people just irritate those who have had to learn from scratch too. Tutorials will be posted for any new thing learned and built as time and space allow. ALL ARE WELCOME AND ALL QUESTIONS ARE TOO. But, seriously, if it's a really ridiculous one, I/we reserve the right to screw with you about it.
ALWAYS REMEMBER:
Thread Disclaimer:
The instructions and extras posted here are to be used at your own risk. I am working hard to provide good, workable tutorials that will make successful building much easier. Nevertheless, I am not responsible if you lose your files, brick your device, or inadvertently cause a nuclear war. If you are seeking absolute perfection, RUN NOW WHILE YOU STILL CAN!!
Building instructions are in post #1 - Build fixes and tips are in post #2 - All relevant tutorials are in post #3 - Kernel building, CCACHE, and other steps and tips are in post #4
GETTING STARTED
Setting up your environment :
This is a combination of the steps offered in the threads 'Compile JB on Ubuntu' and TeamChopsticks CyanogenMod.
Special thanks to dastin1015 and TeamChopsticks.
Tip: Allocate at least 75 gigs of space for the building of ONE ROM. If you install ccache, you will want 90. A complete build directory can use as much as 100 gigs, so make sure you have plenty of room. One of the ways to fail out a build is too use all of your partition before acquiring all the necessary files.
Here are the steps from those 2 tutorials in correct order:
1) You need the following:
-JDK 6 if you wish to build Jellybean or KitKat.
Code:
[COLOR="Black"]$ sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
[/COLOR]
and:
-Python 2.4 -- 2.7, which you can download from python.org.
Code:
[COLOR="black"]$ sudo apt-get install python
[/COLOR]
and:
-Git 1.7 or newer. You can find it at git-scm.com.
Code:
[COLOR="black"]$ sudo apt-get install git-core[/COLOR]
-Android SDK:
Download the SDK here: http://developer.android.com/sdk/index.html
Extract the SDK and place it in your home directory.
I renamed my SDK to android-sdk to make it easier to navigate to – this tutorial assumes you've done that as well.
Go to your home folder, press Ctrl+H to show hidden files, and open up your .bashrc file.
Add these lines at the bottom of the file:
Code:
[COLOR="black"]# Android tools
export PATH=${PATH}:~/android-sdk/tools
export PATH=${PATH}:~/android-sdk/platform-tools
export PATH=${PATH}:~/bin[/COLOR]
Find your .profile file and add this at the bottom of the file:
Code:
[COLOR="black"]PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"
You have now successfully installed the Android SDK.[/COLOR]
To check for updates issue this into your terminal:
Code:
[COLOR="black"]$ android[/COLOR]
2) Install required packages. 64-bit (recommended)
Code:
[COLOR="black"]$ 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 lib32readline-gplv2-dev lib32z-dev
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown
libxml2-utils lzop schedtool[/COLOR]
On newer versions of Ubuntu such as 11.10 you may need to do the following:
Code:
[COLOR="black"]$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so[/COLOR]
Code:
[COLOR="black"]$ sudo apt-get install git-core gnupg flex bison gperf build-essential
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so[/COLOR]
3) Configure your USB.
Code:
[COLOR="black"]$ gksudo gedit /etc/udev/rules.d/51-android.rules[/COLOR]
Inside of this blank text file insert:
Code:
[COLOR="black"]#Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666"
#ASUS
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666"
#Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666"
#Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666"
#Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091E", MODE="0666"
#Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"
#HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"
#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"
#K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666"
#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"
#Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666"
#Lenevo
SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"
#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"
#NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666"
#Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"
#Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666"
#OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666"
#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"
#Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666"
#PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666"
#Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666"
#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"
#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"
#Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"
#Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666"
#ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"[/COLOR]
4) Save the file and close it and then issue this command:
Code:
[COLOR="black"]$ sudo chmod a+r /etc/udev/rules.d/51-android.rules[/COLOR]
5) Install the repo:
Code:
[COLOR="black"]$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo[/COLOR]
Create your work directory:
Code:
[COLOR="black"]mkdir ~/"your directory name here" For example: mkdir ~/cm11
cd ~/cm11[/COLOR]
Setup local manifest:
Code:
[COLOR="Black"]mkdir .repo/local_manifests
touch .repo/local_manifests/local_manifest.xml
nano .repo/local_manifests/local_manifest.xml[/COLOR]
A local manifest is your chance to remove/add packages to the repo before you sync.
This is what you need for your build environment. From here, the various types of ROM styles can be built with a few additions and commands.
Unofficial
To get started with Android/CyanogenMod, you'll need to get familiar with Git and Repo.
To initialize your local repository using the CyanogenMod trees, use a command like this:
Code:
[COLOR="black"]repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0[/COLOR]
Then to sync up:
Code:
[COLOR="black"]repo sync[/COLOR]
Please see the CyanogenMod Wiki for building instructions.
For more information on this Github Organization and how it is structured, please read the wiki article.
Create and edit roomservice.xml in .repo:
Code:
[COLOR="black"]gedit /.repo/local_manifests/roomservice.xml[/COLOR]
Add this to the roomservice.xml:
Code:
[COLOR="Black"]
<manifest>
<project name="CyanogenMod/android_device_htc_m7-common" path="device/htc/m7-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_m7spr" path="device/htc/m7spr" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_msm8960-common" path="device/htc/msm8960-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_htc_m7" path="kernel/htc/m7" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_htc" path="vendor/htc" remote="github" revision="cm-11.0" />
</manifest>[/COLOR]
then
Code:
[COLOR="Black"]repo sync[/COLOR]
Code:
[COLOR="black"]. build/envsetup.sh (notice the period and space)
vendor/cm/get-prebuilts
repo sync -j16[/COLOR]
then
Code:
[COLOR="Black"]CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1 brunch cm_m7spr-userdebug[/COLOR]
Unofficial
Special thanks to scott.hart.bti for his hard work -
From terminal
1. type
Code:
[COLOR="black"]cd[/COLOR]
.
This will bring you to your root folder.
2. type
Code:
[COLOR="black"]mkdir beanstalk[/COLOR]
.
This will create a folder named beanstalk.
3. type
Code:
[COLOR="black"]cd beanstalk[/COLOR]
.
This will take you to the beanstalk directory created from previous step
4. type
Code:
[COLOR="black"]repo init -u git://github.com/scotthartbti/android.git -b kk44[/COLOR]
.
This will setup the folders to be synced.
5. type
Code:
[COLOR="black"]repo sync[/COLOR]
.
This will sync the folders to your beanstalk directory. Note - This will take some time depending on internet connection. Be patient!
6. Within your .repo folder(control+H in your root build files), create a 'local manifests' folder. Within that folder, create a 'local_manifest.xml' doc.
7. Open that new, blank XML doc with Text Editor and paste in your local_manifest code:
Code:
[COLOR="Black"]
<manifest>
<project name="CyanogenMod/android_device_htc_m7-common" path="device/htc/m7-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_m7spr" path="device/htc/m7spr" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_msm8960-common" path="device/htc/msm8960-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_htc_m7" path="kernel/htc/m7" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_htc" path="vendor/htc" remote="github" revision="cm-11.0" />
</manifest>[/COLOR]
8. Save and exit
9. Outside of terminal, navigate to beanstalk/vendor/cm. Double click on the get-prebuilts file and select run in terminal. This will fetch necessary files needed to build and place them where they need to be.
10. Type
Code:
[COLOR="Black"]. build/envsetup.sh && brunch m7spr[/COLOR]
11. Previous step will start building beanstalk for your device. The process takes anywhere from 1 - 3 hours depending on your computer.
12. Once completed, it will say package complete and you will have a beanstalk named zip file in your out folder.
Unverified
Unofficial
Special thanks to MallardDuck for sharing this information
To get started with Android/PACman Rom, you'll need to get familiar with Git and Repo.
First Make your Pac directory and initilize the repo with the following commands:
Code:
[COLOR="Black"]mkdir pacrom && cd pacrom[/COLOR]
Code:
[COLOR="black"]repo init -u git://github.com/PAC-man/pacman.git -b pac-4.4[/COLOR]
Then to sync up:
Code:
[COLOR="black"]repo sync[/COLOR]
Wait, but once you're done waiting feel free to move on...
Once properly synced the next step is to sync device files and to compile; which with PAC is all one step.
Simply,
Code:
[COLOR="black"]./build-pac -j# m7spr[/COLOR]
Where # is the number of cores you have.
This command will thriger the pac build scrpt that will then download the needed device trees and begin compiling.
Unverified
Unofficial
Special thanks to spleef and ktempleman for laying this out
This set of instructions is unverified. If you build successfully or have build issues, please post here so we can confirm or fix what isn't working
First:
Code:
[COLOR="Black"]mkdir aokp[/COLOR]
then
Code:
[COLOR="black"]cd aokp[/COLOR]
then
Code:
[COLOR="black"]repo init -u https://github.com/AOKP/platform_manifest.git -b kk[/COLOR]
after it does its thing
Code:
[COLOR="black"]mkdir .repo/local_manifests
touch .repo/local_manifests/local_manifest.xml
nano .repo/local_manifests/local_manifest.xml[/COLOR]
then add these lines to the aokp local manifest:
Code:
[COLOR="black"]
<manifest>
<project name="CyanogenMod/android_device_htc_m7-common" path="device/htc/m7-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_m7spr" path="device/htc/m7spr" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_msm8960-common" path="device/htc/msm8960-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_htc_m7" path="kernel/htc/m7" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_htc" path="vendor/htc" remote="github" revision="cm-11.0" />
</manifest>
[/COLOR]
save and exit then
Code:
[COLOR="black"]repo sync[/COLOR]
after everything syncs
Code:
[COLOR="black"]nano vendor/aokp/vendorsetup.sh[/COLOR]
and add this to the bottom:
Code:
[COLOR="black"]add_lunch_combo aokp_m7spr-userdebug[/COLOR]
save and exit.. then
Code:
[COLOR="black"]. build/envsetup.sh[/COLOR]
Code:
[COLOR="black"]lunch[/COLOR]
Code:
[COLOR="black"]make otapackage[/COLOR]
For more on AOKP building, try here: http://aokp.co/learn/so-you-want-to-build-aokp-jb-ubuntu-1204
And Here: https://github.com/AOKP
Unofficial
Getting Started
To get started with the Carbon-Dev sources, you'll need to get familiar with Git and Repo.
Create the Directories
You will need to set up some directories in your build environment.
To create them run:
Code:
[COLOR="black"]mkdir -p ~/bin[/COLOR]
Code:
[COLOR="black"]mkdir -p ~/carbon[/COLOR]
Install the Repository
Enter the following to download make executable the "repo" binary:
Code:
[COLOR="black"]curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo[/COLOR]
Code:
[COLOR="black"]chmod a+x ~/bin/repo[/COLOR]
You may need to reboot for these changes to take effect. Now enter the following to initialize the repository:
Code:
[COLOR="black"]cd ~/carbon[/COLOR]
Repositories:
Before you continue --> run this in the terminal
Code:
[COLOR="black"]repo init -u https://github.com/CarbonDev/android.git -b kk && repo sync -f[/COLOR]
PLEASE NOTE THAT YOU MUST USE THE -f flag when repo syncing/initializing if you want to sync with our default -j4 setup as android.googlesource seems to like to reject your requests if you set your -jflag too high. if you wish to avoid this issue run it repo sync -j1 otherwise -f (force) is reccomended so it will resync the repos it gets error codes on. Thank you and have a nice day.
Building the System
Initialize the environment with the envsetup.sh script. Note that replacing "source" with a single dot saves a few characters, and the short form is more commonly used in documentation.
Code:
[COLOR="black"]. build/envsetup.sh[/COLOR]
Code:
[COLOR="black"]lunch[/COLOR]
Enter the number of the build you want to start and press enter
Build the Code:
Code:
[COLOR="black"]make carbon -j7 = Run Squisher/Run Opticharger[/COLOR]
Code:
[COLOR="Black"]make otapackage -j7 = No Squisher/No Opticharger[/COLOR]
Unofficial
Getting Started
From terminal
1. type
Code:
[COLOR="black"]cd[/COLOR]
.
This will bring you to your root folder.
2. type
Code:
[COLOR="black"]mkdir cfx[/COLOR]
.
This will create a folder named beanstalk.
3. type
Code:
[COLOR="black"]cd cfx[/COLOR]
.
This will take you to the cfx directory created from previous step.
4. Then: - From the CFX git, found here: https://github.com/codefireXperiment/android_manifest
To get started with codefireX(periment), you'll need to get familiar with Git and Repo.
Click to expand...
Click to collapse
Init core trees without any device/kernel/vendor :
Code:
[COLOR="Black"]$ repo init -u git://github.com/codefireXperiment/android_manifest.git -b kk-devel[/COLOR]
Init repo with all devices, kernels and vendors supported by codefireXperiment :
Code:
[COLOR="black"]$ repo init -u git://github.com/codefireXperiment/android_manifest.git -b kk-devel -g all,kernel,device,vendor[/COLOR]
Init repo only for a particular device :
Code:
[COLOR="black"]$ repo init -u git://github.com/codefireXperiment/android_manifest.git -b kk-devel -g all,-notdefault,<devicename>,<vendorname>[/COLOR]
for example, to init only trees needed to build mako :
Code:
[COLOR="black"]$ repo init -u git://github.com/codefireXperiment/android_manifest.git -b kk-devel -g all,-notdefault,mako,lge[/COLOR]
Init repo for multiple devices :
Code:
[COLOR="black"]$ repo init -u git://github.com/codefireXperiment/android_manifest.git -b kk-devel -g all,-notdefault,<devicename1>,<devicename2>,<devicename3>,<vendorname1>,<vendorname2>,<vendorname3>[/COLOR]
for example, to init trees needed to build mako and grouper :
Code:
[COLOR="black"]$ repo init -u git://github.com/codefireXperiment/android_manifest.git -b kk-devel -g all,-notdefault,mako,grouper,lge,asus[/COLOR]
Then to sync up:
Code:
[COLOR="black"]repo sync[/COLOR]
This will sync the folders to your cfx directory. Note - This will take some time depending on internet connection. Be patient!
5. Within your .repo folder(control+H in your root build files), create a 'local manifests' folder. Within that folder, create a 'local_manifest.xml' doc.
6. Open that new, blank XML doc with Text Editor and paste in your local_manifest code:
Code:
[COLOR="Black"]
<manifest>
<project name="CyanogenMod/android_device_htc_m7-common" path="device/htc/m7-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_m7spr" path="device/htc/m7spr" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_msm8960-common" path="device/htc/msm8960-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_htc_m7" path="kernel/htc/m7" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_htc" path="vendor/htc" remote="github" revision="cm-11.0" />
</manifest>[/COLOR]
7. Save and exit
8. Sync again....
Code:
[COLOR="black"]repo sync[/COLOR]
9. Issue build commands:
Code:
[COLOR="black"]. build/envsetup.sh[/COLOR]
Code:
[COLOR="black"]lunch full_m7spr-codefirex && mka bacon[/COLOR]
Unofficial
Special thanks to gimmeitorilltell for laying this out
Getting Started
From terminal
type
Code:
[COLOR="black"]cd[/COLOR]
.
This will bring you to your root folder.
type
Code:
[COLOR="black"]mkdir mokee[/COLOR]
.
This will create a folder named mokee.
type
Code:
[COLOR="black"]cd mokee[/COLOR]
.
This will take you to the mokee directory created from previous step.
Then, to sync up the sources:
Code:
[COLOR="Black"]repo init -u git://github.com/MoKee/android.git -b kk_mkt[/COLOR]
and:
Code:
[COLOR="black"]repo sync[/COLOR]
After source finishes, type
Code:
[COLOR="black"]vendor/mk/get-prebuilts[/COLOR]
- this is a quick download here.
Now it's time for your device tree; if the device is not supported yet by mokee then you'll need to do something like this to make your repo pull in your device trees.
Create an xml file, it can be named "anything.xml" so long as it is a ".xml".
Code:
[COLOR="black"]<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github" fetch="git://github.com" />
<project name="TheMuppets/proprietary_vendor_htc" path="vendor/htc" remote="github" revision="cm-11.0" />
</manifest>[/COLOR]
This .xml needs to placed in your .repo folder ina folder of its own called <local_manifests>.
NOTICE the remote name to fetch "github"? That's the special fetch we need for mokee - DON'T forget the rest of your device tree if mokee does not support it. Below is an example of what mokee does support & you'll see that we don't need the github url for our manifest to fetch these trees:
Code:
[COLOR="black"]<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="MoKee/android_device_htc_msm8960-common" path="device/htc/msm8960-common" remote="mokee" revision="kk_mkt" />
<project name="MoKee/android_device_htc_m7-common" path="device/htc/m7-common" remote="mokee" revision="kk_mkt" />
<project name="MoKee/android_vendor_htc_m7-common" path="vendor/htc/m7-common" remote="mokee" revision="kk_mkt" />
<project name="MoKee/android_vendor_htc_m7spr" path="vendor/htc/m7spr" remote="mokee" revision="kk_mkt" />
<project name="MoKee/android_kernel_htc_m7" path="kernel/htc/m7" remote="mokee" revision="kk_mkt" />
</manifest>[/COLOR]
After getting everything setup you want to set the output of your rom. Find the "mk" file in the root of your source. You WILL need to open your source folder with "root" perms to change the "mk" file. Go to line 67 & delete the "#" before this writing "OUT_DIR=/mokee/out/target/product/$DEVICE" .
Code:
[COLOR="black"]# if you set another OUT_DIR,set this before use.
#OUT_DIR=/mokee/out/target/product/$DEVICE
if [ "mk$OUT_DIR" == "mk" ][/COLOR]
You want to type in "repo sync" again to grab the device trees, once this finishes you're ready to start compiling.
Type
Code:
[COLOR="black"]. build/envsetup.sh && breakfast <device name> && ./mk <device name>[/COLOR]
without the quotations, of course you'll want to put your devices name in that you wish to build for.
This is a work in progress. Many more pieces of information will be added and this is meant to be an ever-changing thread. If you see something that is outdated or incorrect, please let me know ASAP, so I can make the correction. Also, make sure that any info offered can be and has been confirmed as functional.
Thanks to:
CyanogenMod
scott.hart.bti
Team Carbon
david279
MallardDuck
ktempleton
AdhvanIt
matthew0776
spleef
M4570D0N
car vs driver
gimmeitorilltell
XDA:DevDB Information
Project Rookie III, Tool/Utility for the HTC One
Contributors
BMP7777
Version Information
Status: Testing
Created 2014-05-30
Last Updated 2014-05-30
Requirements
1- Good knowledge of a linux distribution, I I recommend Ubuntu 14.04 LTS or or derived (Xubuntu, Lubuntu etc.);
2- A PC with at least 4 GB of ram (8 recommended) and CPU at least dual-core (quad-core recommended);
3- A partition with at least 100 GB free;
4- An Internet connection.
Now we are going to prepare the necessary tools for compile:
Install version 7 of java with the following commands:
Code:
sudo apt-get install openjdk-7-jdk
After type:
Code:
java -version
And make sure that your Java version is 7.
Now, install this packages necessary for build with this command:
Code:
sudo apt-get install git gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libreadline6-dev lib32readline-gplv2-dev libncurses5-dev bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev squashfs-tools pngcrush schedtool dpkg-dev
At terminated download type:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Code:
mkdir ~/bin
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Now we will modify the bash file
Code:
sudo nano ~/.bashrc
At the end of fil We will add:
Code:
export PATH=~/bin:$PATH
After, save with the key combination Ctrl+o and exit with Ctrl+x.
OK, Now we are almos ready!
We proceed typing:
Code:
mkdir ~/cm12
Code:
cd ~/cm12
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
Code:
repo sync
Be patient because you need to download about 20 GB of source.
If you have problems with authentication, you need to register on the site Git-Hub and enter your credentials typing:
Code:
git config --global user.email "xxxxxxxxxxxxxxxxx"
Code:
git config --global user.name "xxxxxxx"
At the end of source code download, we need to initialize building tool:
Code:
. build/envsetup.sh
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
After once again:
Code:
repo sync
OK, finally, we are ready for start building process:
Code:
. build/envsetup.sh
Code:
brunch mako
You will find your rom ready for flash in:
Code:
cm12/out/target/product/mako
Good building at all!!!
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
Thank you very much for this guide. I am working toward compiling my first ROM from source, so please forgive me noob questions. Can you please help explain how you got the text for the local_manifest.xml file? Why is the device source not "CyanogenMod/android_device_lge_mako," which is listed as the "source code" here?
Also, I didn't see your post until just now so I have been following the guide here. Does not the local_manifest.xml file need device, vendor, and kernal info?
Sorry if this very basic. I am still learning.
Mawth said:
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
Thank you very much for this guide. I am working toward compiling my first ROM from source, so please forgive me noob questions. Can you please help explain how you got the text for the local_manifest.xml file? Why is the device source not "CyanogenMod/android_device_lge_mako," which is listed as the "source code" here?
Also, I didn't see your post until just now so I have been following the guide here. Does not the local_manifest.xml file need device, vendor, and kernal info?
Sorry if this very basic. I am still learning.
Click to expand...
Click to collapse
You must create local_manifest.xml file with the command:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
In gedit (text editor file..download it in ubuntu software center) you will see an empty file..for this reason you must copy in it these strings:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
Thank you for your very fast reply.
And thank you for providing the text for the local_manifest.xml file. I understand that is what I need to do.
I've successfully built CM12 from source using your guide. Thank you again. Very helpful.
Now my question is about subsequent builds. Is it necessary to make clean before each new build?
The reason I ask is that I have re-sync'd the repo several days after my first build and despite the updated date listed in the ~out file (e.g., "cm-12-20150325-UNOFFICIAL-mako.zip") the CyanogenMod version listed on my phone after flashing the new .zip stays the same as the first build (e.g. "cm-12-20150321-UNOFFICIAL-mako.zip"). I'm not sure what I'm doing wrong. The only solution seems to be make clean, which dramatically increase the compiling time.
Mawth said:
I've successfully built CM12 from source using your guide. Thank you again. Very helpful.
Now my question is about subsequent builds. Is it necessary to make clean before each new build?
The reason I ask is that I have re-sync'd the repo several days after my first build and despite the updated date listed in the ~out file (e.g., "cm-12-20150325-UNOFFICIAL-mako.zip") the CyanogenMod version listed on my phone after flashing the new .zip stays the same as the first build (e.g. "cm-12-20150321-UNOFFICIAL-mako.zip"). I'm not sure what I'm doing wrong. The only solution seems to be make clean, which dramatically increase the compiling time.
Click to expand...
Click to collapse
because build system didn't generate a new build prop and use first time build prop you build. just delete build.prop on system folder before you want to build, system will generate new build.prop witch exact date you build
Mawth said:
I've successfully built CM12 from source using your guide. Thank you again. Very helpful.
Now my question is about subsequent builds. Is it necessary to make clean before each new build?
The reason I ask is that I have re-sync'd the repo several days after my first build and despite the updated date listed in the ~out file (e.g., "cm-12-20150325-UNOFFICIAL-mako.zip") the CyanogenMod version listed on my phone after flashing the new .zip stays the same as the first build (e.g. "cm-12-20150321-UNOFFICIAL-mako.zip"). I'm not sure what I'm doing wrong. The only solution seems to be make clean, which dramatically increase the compiling time.
Click to expand...
Click to collapse
I advice always make clean
what is mako?
autoradio78 said:
Requirements
1- Good knowledge of a linux distribution, I I recommend Ubuntu 14.04 LTS or or derived (Xubuntu, Lubuntu etc.);
2- A PC with at least 4 GB of ram (8 recommended) and CPU at least dual-core (quad-core recommended);
3- A partition with at least 100 GB free;
4- An Internet connection.
Now we are going to prepare the necessary tools for compile:
Install version 7 of java with the following commands:
Code:
sudo apt-get install openjdk-7-jdk
After type:
Code:
java -version
And make sure that your Java version is 7.
Now, install this packages necessary for build with this command:
Code:
sudo apt-get install git gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libreadline6-dev lib32readline-gplv2-dev libncurses5-dev bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev squashfs-tools pngcrush schedtool dpkg-dev
At terminated download type:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Code:
mkdir ~/bin
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Now we will modify the bash file
Code:
sudo nano ~/.bashrc
At the end of fil We will add:
Code:
export PATH=~/bin:$PATH
After, save with the key combination Ctrl+o and exit with Ctrl+x.
OK, Now we are almos ready!
We proceed typing:
Code:
mkdir ~/cm12
Code:
cd ~/cm12
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
Code:
repo sync
Be patient because you need to download about 20 GB of source.
If you have problems with authentication, you need to register on the site Git-Hub and enter your credentials typing:
Code:
git config --global user.email "xxxxxxxxxxxxxxxxx"
Code:
git config --global user.name "xxxxxxx"
At the end of source code download, we need to initialize building tool:
Code:
. build/envsetup.sh
Now:
Code:
gedit ~/cm12.repo/local_manifests/local_manifest.xml
And in the text file we just need to paste:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge.git" path="vendor/lge" remote="github" revision="cm-12.0"/>
</manifest>
After once again:
Code:
repo sync
OK, finally, we are ready for start building process:
Code:
. build/envsetup.sh
Code:
brunch mako
You will find your rom ready for flash in:
Code:
cm12/out/target/product/mako
Good building at all!!!
Click to expand...
Click to collapse
can you specify for which device is this source and rom for?
what is mako?
can i use this codes for building cm12 for any android device?
shivajiv said:
can you specify for which device is this source and rom for?
what is mako?
can i use this codes for building cm12 for any android device?
Click to expand...
Click to collapse
Mako is for nexus 4
can i use the above tutorial for building for any device
cqloveqc said:
Mako is for nexus 4
Click to expand...
Click to collapse
by changing vendor,device,kernel can i use this tutorial for building rom for any device?
shivajiv said:
by changing vendor,device,kernel can i use this tutorial for building rom for any device?
Click to expand...
Click to collapse
I don't know, I'm not a developper, but also an amateur, I try to learn how to build a Rom for Nexus 4, but I think it take time
Thanks fo sharing
Thanks fo sharing~
I want to build 12.1 CAF
this way is right?
Code:
Checking out files: 100% (13/13), done.king out files: 30% (4/13)
Checking out files: 100% (168/168), done.
Syncing work tree: 100% (556/556), done.
[email protected] ~/cm12.1 $ . build/envsetup.sh
including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
including device/generic/mini-emulator-mips/vendorsetup.sh
including device/generic/mini-emulator-x86_64/vendorsetup.sh
including device/generic/mini-emulator-arm64/vendorsetup.sh
including device/generic/mini-emulator-x86/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/bash_completion/git.bash
including vendor/cm/bash_completion/repo.bash
[email protected] ~/cm12.1 $ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng 54. cm_kltechnduo-userdebug
2. aosp_arm64-eng 55. cm_kltespr-userdebug
3. aosp_mips-eng 56. cm_l900-userdebug
4. aosp_mips64-eng 57. cm_m7-userdebug
5. aosp_x86-eng 58. cm_m7vzw-userdebug
6. aosp_x86_64-eng 59. cm_m8-userdebug
7. m_e_arm-userdebug 60. cm_mako-userdebug
8. mini_emulator_mips-userdebug 61. cm_manta-userdebug
9. mini_emulator_x86_64-userdebug 62. cm_maserati-userdebug
10. mini_emulator_arm64-userdebug 63. cm_mb886-userdebug
11. mini_emulator_x86-userdebug 64. cm_mondrianwifi-userdebug
12. cm_acclaim-userdebug 65. cm_n3-userdebug
13. cm_amami-userdebug 66. cm_n5100-userdebug
14. cm_bacon-userdebug 67. cm_n5110-userdebug
15. cm_castor-userdebug 68. cm_nicki-userdebug
16. cm_castor_windy-userdebug 69. cm_obake-userdebug
17. cm_condor-userdebug 70. cm_peregrine-userdebug
18. cm_d2att-userdebug 71. cm_picassowifi-userdebug
19. cm_d2spr-userdebug 72. cm_quark-userdebug
20. cm_d2tmo-userdebug 73. cm_scorpion-userdebug
21. cm_d2vzw-userdebug 74. cm_scorpion_windy-userdebug
22. cm_d850-userdebug 75. cm_serrano3gxx-userdebug
23. cm_d851-userdebug 76. cm_serranoltexx-userdebug
24. cm_d852-userdebug 77. cm_shamu-userdebug
25. cm_d855-userdebug 78. cm_sirius-userdebug
26. cm_deb-userdebug 79. cm_spyder-userdebug
27. cm_dlx-userdebug 80. cm_superior-userdebug
28. cm_e975-userdebug 81. cm_t0lte-userdebug
29. cm_e980-userdebug 82. cm_t6-userdebug
30. cm_evita-userdebug 83. cm_t6spr-userdebug
31. cm_falcon-userdebug 84. cm_t6vzw-userdebug
32. cm_find7-userdebug 85. cm_targa-userdebug
33. cm_find7s-userdebug 86. cm_tf300t-userdebug
34. cm_flo-userdebug 87. cm_thea-userdebug
35. cm_fugu-userdebug 88. cm_tilapia-userdebug
36. cm_ghost-userdebug 89. cm_titan-userdebug
37. cm_grouper-userdebug 90. cm_togari-userdebug
38. cm_hammerhead-userdebug 91. cm_togari_gpe-userdebug
39. cm_hammerheadcaf-userdebug 92. cm_trltetmo-userdebug
40. cm_hlte-userdebug 93. cm_trltexx-userdebug
41. cm_hltespr-userdebug 94. cm_umts_spyder-userdebug
42. cm_hltetmo-userdebug 95. cm_v410-userdebug
43. cm_i605-userdebug 96. cm_v500-userdebug
44. cm_i925-userdebug 97. cm_victara-userdebug
45. cm_honami-userdebug 98. cm_ville-userdebug
46. cm_jflteatt-userdebug 99. cm_vs985-userdebug
47. cm_jfltespr-userdebug 100. cm_xt897-userdebug
48. cm_jfltetmo-userdebug 101. cm_xt907-userdebug
49. cm_jfltevzw-userdebug 102. cm_xt925-userdebug
50. cm_jfltexx-userdebug 103. cm_xt926-userdebug
51. cm_klimtwifi-userdebug 104. cm_z3-userdebug
52. cm_klte-userdebug 105. cm_z3c-userdebug
53. cm_kltechn-userdebug
Which would you like? [aosp_arm-eng] 39
ls: невозможно получить доступ к device/*/hammerheadcaf/cm.mk: Нет такого файла или каталога
build/core/product_config.mk:234: *** Can not locate config makefile for product "cm_hammerheadcaf". Останов.
Device hammerheadcaf not found. Attempting to retrieve device repository from CyanogenMod Github ([url]http://github.com/CyanogenMod[/url]).
Found repository: android_device_lge_hammerheadcaf
Default revision: cm-12.1
Checking branch info
Adding dependency: CyanogenMod/android_device_lge_hammerheadcaf -> device/lge/hammerheadcaf
Using default branch for android_device_lge_hammerheadcaf
Syncing repository to retrieve project.
Fetching project CyanogenMod/android_device_lge_hammerheadcaf
Fetching projects: 100% (1/1), done.
Repository synced!
Looking for dependencies
Adding dependencies to manifest
Adding dependency: CyanogenMod/android_kernel_lge_hammerhead -> kernel/lge/hammerhead
Adding dependency: CyanogenMod/android_device_qcom_common -> device/qcom/common
Using default branch for android_device_qcom_common
Syncing dependencies
Fetching project CyanogenMod/android_device_qcom_common
Fetching project CyanogenMod/android_kernel_lge_hammerhead
Fetching projects: 100% (2/2), done.
Checking out files: 100% (41719/41719), done.
Looking for dependencies
Dependencies file not found, bailing out.
Looking for dependencies
Dependencies file not found, bailing out.
Done
build/core/product_config.mk:239: *** _nic.PRODUCTS.[[device/lge/hammerheadcaf/cm.mk]]: "vendor/lge/hammerheadcaf/hammerheadcaf-vendor.mk" does not exist. Останов.
** Don't have a product spec for: 'cm_hammerheadcaf'
** Do you have the right repo manifest?
then open
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_hammerheadcaf" path="device/lge/hammerheadcaf" remote="github" />
<project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-12.1-caf" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
</manifest>
and add this
https://github.com/TheMuppets/proprietary_vendor_lge/tree/cm-12.1
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_hammerheadcaf" path="device/lge/hammerheadcaf" remote="github" />
<project name="TheMuppets/proprietary_vendor_lge" remote="github" revision="cm-12.1" />
<project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-12.1-caf" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
</manifest>
and again repo sync -j5
right ? or need something else to fix for a good build? if need,please show me example ...
thx.
I think so right
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_hammerheadcaf" path="device/lge/hammerheadcaf" remote="github" />
<project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-12.1-caf" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="myfluxi/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-12.1" />
</manifest>
not build
Code:
target SharedLib: libRSDriver (/home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/LINKED/libRSDriver.so)
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdAllocation.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdBcc.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdCore.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdElement.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdFrameBuffer.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdFrameBufferObj.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdGL.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdMesh.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdMeshObj.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdPath.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdProgram.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdProgramRaster.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdProgramStore.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdRuntimeStubs.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdSampler.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdScriptGroup.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdShader.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdShaderCache.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdType.o: file is empty
prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: /home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/driver/rsdVertexArray.o: file is empty
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/home/garynych/cm12.1/out/target/product/hammerheadcaf/obj/SHARED_LIBRARIES/libRSDriver_intermediates/LINKED/libRSDriver.so] Ошибка 1
make: *** Ожидание завершения заданий...
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[email protected] ~/cm12.1 $
tell me what's wrong? how fix?
Delete the folder local_manifests in .repo and do the following:
$ . build/envsetup.sh
$ lunch -> and choose the number that matches with cm_hammerhead-userdebug
Wait for the roomservice.xml sync and when it's done open the file and add at the top: <project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-12.1" />
$ repo sync
and
$ brunch hammerhead
Your roomservice needs to look like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-12.1" />
<project name="CyanogenMod/android_device_lge_hammerhead" path="device/lge/hammerhead" remote="github" />
<project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
</manifest>
Next time just do:
$ . build/envsetup.sh
$ breakfast hammerhead
$ brunch hammerhead
PS: WHIT THIS STEPS YOU'LL BUILD NON CAF. FOR CAF CHECK IN LUNCH MENU FOR IT
Be happy!
Cristiano Matos
how to build cm12.1 i`m know
me need build exactly CAF variant,but after 2h build is error
garynych said:
Cristiano Matos
how to build cm12.1 i`m know
me need build exactly CAF variant,but after 2h build is error
Click to expand...
Click to collapse
Which linux distro do you use?
garynych said:
Cristiano Matos
how to build cm12.1 i`m know
me need build exactly CAF variant,but after 2h build is error
Click to expand...
Click to collapse
You're a smart person may i presume. The answer lies in my post. Regards
Snoop05 said:
Which linux distro do you use?
Click to expand...
Click to collapse
mint 17.1 rebecca (x64)
Cristiano Matos said:
You're a smart person may i presume. The answer lies in my post. Regards
Click to expand...
Click to collapse
sorry,maybe that's the problem with online translator google
am try
1
Delete the folder local_manifests in .repo and do the following:
$ . build/envsetup.sh
$ lunch -> and choose the number that matches with cm_hammerhead-userdebug
Click to expand...
Click to collapse
yes
2
Wait for the roomservice.xml sync and when it's done open the file and add at the top: <project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-12.1" />
$ repo sync
Click to expand...
Click to collapse
yes
3
Next time just do:
$ . build/envsetup.sh
$ breakfast hammerhead
$ brunch hammerhead
Click to expand...
Click to collapse
$ . build/envsetup.sh
$ breakfast hammerheadcaf
$ brunch hammerheadcaf
no build
or
$ . build/envsetup.sh
$ lunch cm_hammerheadcaf-user
$ make -j3 otapackage
or
$ . build/envsetup.sh
$ lunch cm_hammerheadcaf-user
$ mka -j3 otapackage
no build
or
$ . build/envsetup.sh
$ lunch cm_hammerheadcaf-userdebug
$ mka -j3 otapackage
no build
all time ,this error
Which python version you use?
when my aosp buildbox is ready, i will try to build a cm12.1 caf... my build time is only 20min so that helps
Snoop05 said:
Which python version you use?
Click to expand...
Click to collapse
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
now I did so
make clobber
ccache -C
and start build
already it's been 3 hours,I think must collect
Try it like this:
. build/envsetup.sh
lunch
39
breakfast hammerheadcaf
brunch hammerheadcaf
because i followed what Cristiano Matos sed and it works for me...
build.sh
Code:
#!/bin/bash
make clobber
repo sync -j16
source build/envsetup.sh
breakfast hammerheadcaf
mka bacon
cd $OUT
.repo/local_manifests/roomservice.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="CyanogenMod/android_device_lge_hammerhead" path="device/lge/hammerhead" remote="github" />
<project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-12.1-caf" />
<project name="CyanogenMod/android_device_lge_hammerheadcaf" path="device/lge/hammerheadcaf" remote="github" />
<project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-12.1"/>
</manifest>
This worked for me. If problem persist try to reinstall all dependencies (check cm build wiki), gcc, g++, python and openjdk
garynych said:
now I did so
make clobber
ccache -C
and start build
already it's been 3 hours,I think must collect
Click to expand...
Click to collapse
this help me
build completed successfully
to everyone who helped,thank you
I'm happy