To compile Ice Cream Sandwich on Ubuntu I'm going to first give you steps to set up your computer to get this thing rolling.
This will NOT make a fully functional ROM, but will give you a place to start. Also I CANNOT fix every error you run into.
Note: The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 80GB (or more) for a full set of builds.
Thanks dastin1015 - For base instruction for compile
1) You need the following:
- JDK 6 if you wish to build Ice Cream Sandwich
You can download it from oracle.com. Or:
Code:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
for a Ubintu 11.10
sudo add-apt-repository "deb http://archive.canonical.com/ orcelot partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
- Python 2.4 -- 2.7
You can download from python.org. Or:
Code:
sudo apt-get install python
- Git 1.7 or newer
You can find it at git-scm.com. Or:
Code:
sudo apt-get install git-core
2) Install required packages:
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils
On newer versions of Ubuntu such as 11.10 you may need to do the following:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
3) Configure your USB:
Code:
gksudo gedit /etc/udev/rules.d/51-android.rules
Inside of this blank text file insert:
Code:
#Acer
SUBSYSTEM==usb, SYSFS{idVendor}==0502, MODE=0666
#ASUS
SUBSYSTEM==usb, SYSFS{idVendor}==0b05, MODE=0666
#Dell
SUBSYSTEM==usb, SYSFS{idVendor}==413c, MODE=0666
#Foxconn
SUBSYSTEM==usb, SYSFS{idVendor}==0489, MODE=0666
#Garmin-Asus
SUBSYSTEM==usb, SYSFS{idVendor}==091E, MODE=0666
#Google
SUBSYSTEM==usb, SYSFS{idVendor}==18d1, MODE=0666
#HTC
SUBSYSTEM==usb, SYSFS{idVendor}==0bb4, MODE=0666
#Huawei
SUBSYSTEM==usb, SYSFS{idVendor}==12d1, MODE=0666
#K-Touch
SUBSYSTEM==usb, SYSFS{idVendor}==24e3, MODE=0666
#KT Tech
SUBSYSTEM==usb, SYSFS{idVendor}==2116, MODE=0666
#Kyocera
SUBSYSTEM==usb, SYSFS{idVendor}==0482, MODE=0666
#Lenevo
SUBSYSTEM==usb, SYSFS{idVendor}==17EF, MODE=0666
#LG
SUBSYSTEM==usb, SYSFS{idVendor}==1004, MODE=0666
#Motorola
SUBSYSTEM==usb, SYSFS{idVendor}==22b8, MODE=0666
#NEC
SUBSYSTEM==usb, SYSFS{idVendor}==0409, MODE=0666
#Nook
SUBSYSTEM==usb, SYSFS{idVendor}==2080, MODE=0666
#Nvidia
SUBSYSTEM==usb, SYSFS{idVendor}==0955, MODE=0666
#OTGV
SUBSYSTEM==usb, SYSFS{idVendor}==2257, MODE=0666
#Pantech
SUBSYSTEM==usb, SYSFS{idVendor}==10A9, MODE=0666
#Philips
SUBSYSTEM==usb, SYSFS{idVendor}==0471, MODE=0666
#PMC-Sierra
SUBSYSTEM==usb, SYSFS{idVendor}==04da, MODE=0666
#Qualcomm
SUBSYSTEM==usb, SYSFS{idVendor}==05c6, MODE=0666
#SK Telesys
SUBSYSTEM==usb, SYSFS{idVendor}==1f53, MODE=0666
#Samsung
SUBSYSTEM==usb, SYSFS{idVendor}==04e8, MODE=0666
#Sharp
SUBSYSTEM==usb, SYSFS{idVendor}==04dd, MODE=0666
#Sony Ericsson
SUBSYSTEM==usb, SYSFS{idVendor}==0fce, MODE=0666
#Toshiba
SUBSYSTEM==usb, SYSFS{idVendor}==0930, MODE=0666
#ZTE
SUBSYSTEM==usb, SYSFS{idVendor}==19D2, MODE=0666
4) Save the file and close it and then issue this command:
Code:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
5) Install the repo:
Code:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
6) Reboot PC:
7) Initialize the repo:
Code:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
- For AOSP
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1
- For CM9
repo init -u git://github.com/CyanogenMod/android.git -b ics
- For AOKP
repo init -u git://github.com/AOKP/platform_manifest.git -b master
- For IceColdSandwitch
repo init -u git://github.com/IceColdSandwich/android.git -b ics
8) When prompted, enter your real name and email address.
9) Gather the files:
Code:
repo sync
10) Compiling:
Code:
source build/envsetup.sh
Or:
. build/envsetup.sh
11) Issue:
Code:
lunch
12) Pick your poison.
13) Now issue:
Code:
make -j4
Build for Sony Ericsson device
1) Download sources for ARMv6
Code:
cd ~/WORKING_DIRECTORY/
repo init -u git://github.com/MSM7x27-Xperia/android.git -b ics
repo sync -j4 or low if you have bad internet
2) Compile:
Code:
source build/envsetup.sh
Or:
. build/envsetup.sh
4) Get your list of devices:
Code:
lunch
5) Pick your poison.
6) Now compile:
Code:
make -j4
- Or for a flashable zip:
Code:
make -j4 otapackage
NOTE
If you are running into issues such as:
Code:
Which would you like? [full-eng] 5
build/core/product_config.mk:209: *** No matches for product "full_shooter". Stop.
Device shooter not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Repository for shooter not found in the CyanogenMod Github repository list. If this is in error, you may need to manually add it to your local_manifest.xml.
build/core/product_config.mk:209: *** No matches for product "full_shooter". Stop.
** Don't have a product spec for: 'full_shooter'
** Do you have the right repo manifest?
What you need to do is to edit your blob to match the PRODUCT_NAME to the file name. For example with mine I have full_shooter.mk therefore in this file I need to have PRODUCT_NAME to match it. Whatever error it is looking for you just need to change the PRODUCT_NAME line to match what the error shows.
Supplement, if something is missing
Nice tutorial thanks.
Sent from my GT-N7000
Great for sharing this howto with us
MiKa
In future versions of udev, "SYSFS" will be deprecated and has to be replaced by "ATTR". So it depends on what version of udev is installed in your distribution.
Cheers,
ff0000.it
is this tutorial compatible with another Smartphones?
ocovarr112 said:
is this tutorial compatible with another Smartphones?
Click to expand...
Click to collapse
Yes, you just need propietary files, but is almost the same process
PD: Paul, im setting up my dev enviroment, soon ill help you a bit on framework, and maybe I learn C and help you on libs
PD2: Ubuntu 11.10 original unity interface sux.. i like Gnome
EDIT: 15 mins and after i thought it was ok, then
device/semc/msm7x27-common/libgralloc/mapper.cpp: In function 'int gralloc_perform(const gralloc_module_t*, int, ...)':
Freaking classic on android -.-, Ill try again 2morrow
Good Luck!
D4rKn3sSyS said:
Yes, you just need propietary files, but is almost the same process
PD: Paul, im setting up my dev enviroment, soon ill help you a bit on framework, and maybe I learn C and help you on libs
PD2: Ubuntu 11.10 original unity interface sux.. i like Gnome
EDIT: 15 mins and after i thought it was ok, then
device/semc/msm7x27-common/libgralloc/mapper.cpp: In function 'int gralloc_perform(const gralloc_module_t*, int, ...)':
Freaking classic on android -.-, Ill try again 2morrow
Click to expand...
Click to collapse
Great to see u man!! hope both of u get fully working ics soon All the best!
D4rKn3sSyS said:
Yes, you just need propietary files, but is almost the same process
PD: Paul, im setting up my dev enviroment, soon ill help you a bit on framework, and maybe I learn C and help you on libs
PD2: Ubuntu 11.10 original unity interface sux.. i like Gnome
EDIT: 15 mins and after i thought it was ok, then
device/semc/msm7x27-common/libgralloc/mapper.cpp: In function 'int gralloc_perform(const gralloc_module_t*, int, ...)':
Freaking classic on android -.-, Ill try again 2morrow
Click to expand...
Click to collapse
gralloc from 2.3 rom. remove he and contune.
D4rKn3sSyS
With new sources i have here error
Code:
target thumb C++: liboverlay <= hardware/qcom/display/liboverlay/overlayLib.cpp
target thumb C++: liboverlay <= hardware/qcom/display/liboverlay/overlayLibUI.cpp
hardware/qcom/display/liboverlay/overlayLib.cpp:122:1: warning: "LOG_TAG" redefined
In file included from hardware/qcom/display/liboverlay/overlayLib.h:21,
from hardware/qcom/display/liboverlay/overlayLib.cpp:18:
system/core/include/cutils/log.h:68:1: warning: this is the location of the previous definition
hardware/qcom/display/liboverlay/overlayLibUI.cpp:20:1: warning: "LOG_TAG" redefined
In file included from hardware/qcom/display/liboverlay/overlayLib.h:21,
from hardware/qcom/display/liboverlay/overlayLibUI.h:23,
from hardware/qcom/display/liboverlay/overlayLibUI.cpp:18:
system/core/include/cutils/log.h:68:1: warning: this is the location of the previous definition
host Java: android-mock-generatorlib (out/host/common/obj/JAVA_LIBRARIES/android-mock-generatorlib_intermediates/classes)
hardware/qcom/display/liboverlay/overlayLib.cpp: In function 'int overlay::get_mdp_format(int)':
hardware/qcom/display/liboverlay/overlayLib.cpp:57: error: 'MDP_Y_CRCB_H2V2_TILE' was not declared in this scope
hardware/qcom/display/liboverlay/overlayLib.cpp: In function 'int overlay::get_rot_output_format(int)':
hardware/qcom/display/liboverlay/overlayLib.cpp:90: error: 'MDP_Y_CRCB_H2V2_TILE' was not declared in this scope
hardware/qcom/display/liboverlay/overlayLibUI.h: In constructor 'overlay::OverlayUI::OverlayUI()':
hardware/qcom/display/liboverlay/overlayLibUI.h:101: warning: 'overlay::OverlayUI::mFBNum' will be initialized after
hardware/qcom/display/liboverlay/overlayLibUI.h:99: warning: 'int overlay::OverlayUI::mZorder'
hardware/qcom/display/liboverlay/overlayLibUI.cpp:226: warning: when initialized here
host C++: colladadom <= external/collada/src/dae/dae.cpp
host C++: colladadom <= external/collada/src/dae/daeArray.cpp
hardware/qcom/display/liboverlay/overlayLibUI.cpp: In member function 'overlay::status_t overlay::OverlayUI::closeOVSession()':
hardware/qcom/display/liboverlay/overlayLibUI.cpp:409: warning: suggest parentheses around assignment used as truth value
hardware/qcom/display/liboverlay/overlayLib.cpp: In member function 'bool overlay::OverlayControlChannel::setOverlayInformation(const overlay_buffer_info&, int, int, int, bool, int)':
hardware/qcom/display/liboverlay/overlayLib.cpp:958: error: 'MDP_Y_CRCB_H2V2_TILE' was not declared in this scope
hardware/qcom/display/liboverlay/overlayLib.cpp: In member function 'bool overlay::OverlayControlChannel::startOVRotatorSessions(const overlay_buffer_info&, int, int)':
hardware/qcom/display/liboverlay/overlayLib.cpp:1013: error: 'MDP_Y_CRCB_H2V2_TILE' was not declared in this scope
hardware/qcom/display/liboverlay/overlayLib.cpp: In member function 'bool overlay::OverlayControlChannel::setPosition(int, int, uint32_t, uint32_t)':
hardware/qcom/display/liboverlay/overlayLib.cpp:1165: warning: comparison between signed and unsigned integer expressions
hardware/qcom/display/liboverlay/overlayLib.cpp:1166: warning: comparison between signed and unsigned integer expressions
hardware/qcom/display/liboverlay/overlayLib.cpp:1172: warning: comparison between signed and unsigned integer expressions
hardware/qcom/display/liboverlay/overlayLib.cpp:1172: warning: comparison between signed and unsigned integer expressions
hardware/qcom/display/liboverlay/overlayLib.cpp: In member function 'bool overlay::OverlayControlChannel::setTransform(int, bool)':
hardware/qcom/display/liboverlay/overlayLib.cpp:1244: warning: comparison between signed and unsigned integer expressions
hardware/qcom/display/liboverlay/overlayLib.cpp: In member function 'bool overlay::OverlayDataChannel::mapRotatorMemory(int, bool, int)':
hardware/qcom/display/liboverlay/overlayLib.cpp:1512: error: 'struct msmfb_data' has no member named 'flags'
make: *** [out/target/product/mimmi/obj/SHARED_LIBRARIES/liboverlay_intermediates/overlayLib.o] Ошибка 1
make: *** Ожидание завершения заданий...
host C++: colladadom <= external/collada/src/dae/daeAtomicType.cpp
Note: external/android-mock/src/com/google/android/testing/mocking/AndroidMock.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[email protected]:~/android/system$
You need to set:
TARGET_SPECIFIC_HEADER_PATH := device/semc/<device>/include
and populate this with include files you need, e.g:
include/linux/msm_mdp.h
added instruction for build with new mimmi source
hi
i got this error:
build/core/product_config.mk:205: *** No matches for product "full_p970". Stop.
** Don't have a product spec for: 'full_p970'
** Do you have the right repo manifest
any ideas?
donjamal said:
hi
i got this error:
build/core/product_config.mk:205: *** No matches for product "full_p970". Stop.
** Don't have a product spec for: 'full_p970'
** Do you have the right repo manifest
any ideas?
Click to expand...
Click to collapse
give me link to your repo i look here
paul-xxx said:
give me link to your repo i look here
Click to expand...
Click to collapse
https://github.com/koush/proprietary_vendor_lge/tree/ics/p970
https://github.com/CyanogenMod/android_device_lge_p970
its 2.3 we dont have any ics rom..so im trying it from zero
donjamal said:
https://github.com/koush/proprietary_vendor_lge/tree/ics/p970
https://github.com/CyanogenMod/android_device_lge_p970
its 2.3 we dont have any ics rom..so im trying it from zero
Click to expand...
Click to collapse
from proprietary remove camera libs
and in android_device_lge_p970
make cm.mk
and add here
Code:
## Specify phone tech before including full_phone
$(call inherit-product, vendor/cm/config/gsm.mk)
# Release name
PRODUCT_RELEASE_NAME := P970
# Inherit some common CM stuff.
$(call inherit-product, vendor/cm/config/common_full_phone.mk)
# Inherit device configuration
$(call inherit-product, device/semc/mimmi/device_p970.mk)
# Setup device configuration
PRODUCT_DEVICE := p970
PRODUCT_NAME := cm_p970
PRODUCT_BRAND := lge
PRODUCT_MODEL := Optimus Black
PRODUCT_MANUFACTURER := LG
# Release name and versioning
PRODUCT_VERSION_DEVICE_SPECIFIC :=
TARGET_NO_LIVEWALLPAPERS := false
#Set build fingerprint / ID / Product Name ect.
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=p970 BUILD_ID=ITL41F BUILD_DISPLAY_ID=ITL41F BUILD_FINGERPRINT="google/yakju/maguro:4.0.1/ITL41F/228551:user/release-keys" PRIVATE_BUILD_DESC="yakju-user 4.0.1 ITL41F 228551 release-keys"
then rename p970.mk to device_p970.mk
and try
paul-xxx said:
from proprietary remove camera libs
and in android_device_lge_p970
make cm.mk
and add here
Code:
## Specify phone tech before including full_phone
$(call inherit-product, vendor/cm/config/gsm.mk)
# Release name
PRODUCT_RELEASE_NAME := P970
# Inherit some common CM stuff.
$(call inherit-product, vendor/cm/config/common_full_phone.mk)
# Inherit device configuration
$(call inherit-product, device/semc/mimmi/device_p970.mk)
# Setup device configuration
PRODUCT_DEVICE := p970
PRODUCT_NAME := cm_p970
PRODUCT_BRAND := lge
PRODUCT_MODEL := Optimus Black
PRODUCT_MANUFACTURER := LG
# Release name and versioning
PRODUCT_VERSION_DEVICE_SPECIFIC :=
TARGET_NO_LIVEWALLPAPERS := false
#Set build fingerprint / ID / Product Name ect.
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=p970 BUILD_ID=ITL41F BUILD_DISPLAY_ID=ITL41F BUILD_FINGERPRINT="google/yakju/maguro:4.0.1/ITL41F/228551:user/release-keys" PRIVATE_BUILD_DESC="yakju-user 4.0.1 ITL41F 228551 release-keys"
then rename p970.mk to device_p970.mk
and try
Click to expand...
Click to collapse
got this
build/core/product_config.mk:193: *** _nic.PRODUCTS.[[device/lge/p970/p970.mk]]: "device/lge/p970/p970.mk" does not exist. Stop.
** Don't have a product spec for: 'p970'
** Do you have the right repo manifest?
---------- Post added at 10:39 AM ---------- Previous post was at 10:19 AM ----------
donjamal said:
got this
build/core/product_config.mk:193: *** _nic.PRODUCTS.[[device/lge/p970/p970.mk]]: "device/lge/p970/p970.mk" does not exist. Stop.
** Don't have a product spec for: 'p970'
** Do you have the right repo manifest?
Click to expand...
Click to collapse
somehow after about million copy paste it worked
but with make -j1 otapackage run this
============================================
find: "omapmmlib/java": Nincs ilyen fájl vagy könyvtár
find: "omapmmlib/java": Nincs ilyen fájl vagy könyvtár
build/core/base_rules.mk:78: *** Module name: dspexec
build/core/base_rules.mk:79: *** Makefile location: hardware/ti/omap3/dspbridge/dspexec
build/core/base_rules.mk:80: *
build/core/base_rules.mk:81: * Each module must use a LOCAL_MODULE_TAGS in its
build/core/base_rules.mk:82: * Android.mk. Possible tags declared by a module:
build/core/base_rules.mk:83: *
build/core/base_rules.mk:84: * optional, debug, eng, tests, samples
build/core/base_rules.mk:85: *
build/core/base_rules.mk:86: * If the module is expected to be in all builds
build/core/base_rules.mk:87: * of a product, then it should use the
build/core/base_rules.mk:88: * "optional" tag:
build/core/base_rules.mk:89: *
build/core/base_rules.mk:90: * Add "LOCAL_MODULE_TAGS := optional" in the
build/core/base_rules.mk:91: * Android.mk for the affected module, and add
build/core/base_rules.mk:92: * the LOCAL_MODULE value for that component
build/core/base_rules.mk:93: * into the PRODUCT_PACKAGES section of product
build/core/base_rules.mk:94: * makefile(s) where it's necessary, if
build/core/base_rules.mk:95: * appropriate.
build/core/base_rules.mk:96: *
build/core/base_rules.mk:97: * If the component should be in EVERY build of ALL
build/core/base_rules.mk:98: * products, then add its LOCAL_MODULE value to the
build/core/base_rules.mk:99: * PRODUCT_PACKAGES section of
build/core/base_rules.mk:100: * build/target/product/core.mk
build/core/base_rules.mk:101: *
build/core/base_rules.mk:102: *** user tag detected on new module - user tags are only supported on legacy modules. Stop.
but if u are boring u could build one for me
but with make -j1 otapackage run this
Click to expand...
Click to collapse
im no tried
stuck
hey paul im stuck by
Build for mimmi with new sources
1) Download patched webrtc for ARMv6
but my device is a lg optimus black P970 so which files do i need=
kaassaus said:
hey paul im stuck by
Build for mimmi with new sources
1) Download patched webrtc for ARMv6
but my device is a lg optimus black P970 so which files do i need=
Click to expand...
Click to collapse
patched webrtc no need
only compatiable repo with ICS sources
Related
Hi all !
My current project is to use my Raspberry Pi as a Build Machine to build all Android sources (AOSP). In fact, I'll not build AOSP but the CyanogenMod (wich is mainly a fork from AOSP).
I know this may sound crazy, dumb or useless (according to Google, a 64-bit environment is required, and a lot (>> 4GB) of RAM if you're in a hurry), especially to use an ARM processor to build while all the Makefiles has been written to be used on x86...
But what I'm thinking about is a really cheap, silent, but working build machine, to sync the repo and build nightlies everyday. The first build will take some days but then, only the changes will be build so I think that only some hours per day will be required.
If I success, I'll create a big tutorial to explain what changes was required.
First of all, I had to add the Linux-armv61 arch as Host OS/ARCH :
Code:
[email protected] ~/buildspace/android/system/build $ git diff
diff --git a/core/envsetup.mk b/core/envsetup.mk
index 862b7f0..34eb31a 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -77,6 +77,10 @@ ifneq (,$(findstring Power,$(UNAME)))
HOST_ARCH := ppc
endif
[COLOR="SeaGreen"]+ifneq (,$(findstring arm,$(UNAME)))
+ HOST_ARCH := armv61
+endif
+[/COLOR]
BUILD_ARCH := $(HOST_ARCH)
ifeq ($(HOST_ARCH),)
then, I did this (because the raspbian ld doesn't support --icf) :
AdamOutler said:
so I did a
Code:
[email protected] ~/adb $ grep -r 'icf=safe' ./*
./build/core/combo/TARGET_linux-arm.mk: -Wl,--icf=safe \
and I removed that icf parameter.
Click to expand...
Click to collapse
-->
Code:
[email protected] ~/buildspace/android/system/build $ git diff
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index b36111f..24e0d99 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -146,7 +146,6 @@ TARGET_GLOBAL_LDFLAGS += \
-Wl,-z,relro \
-Wl,-z,now \
-Wl,--warn-shared-textrel \
[COLOR="Red"]- -Wl,--icf=safe \[/COLOR]
$(arch_variant_ldflags)
# We only need thumb interworking in cases where thumb support
but now I am stuck with this error :
Code:
make -C kernel/samsung/smdk4210 O=/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" headers_install
make[1]: Entering directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 1: /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Syntax error: "(" unexpected
CHK include/linux/version.h
make[1]: Leaving directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/bin/bash: r: command not found
make: [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/lib/crtbegin_static.o] Error 127 (ignored)
[COLOR="SeaGreen"]target SharedLib[/COLOR]: libdl (/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so)
/usr/bin/ld: error: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so uses VFP register arguments, /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o does not
/usr/bin/ld: failed to merge target specific data of file /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o
/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.
collect2: ld returned 1 exit status
make: *** [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so] Error 1
I don't really know what I have to do and if it is because the HOST is an arm arch...
It have been a long time since I didn't put my hands in this kind of things and I need help to solve this problems... Thanks in advance !
cmoatoto said:
Hi all !
My current project is to use my Raspberry Pi as a Build Machine to build all Android sources (AOSP). In fact, I'll not build AOSP but the CyanogenMod (wich is mainly a fork from AOSP).
I know this may sound crazy, dumb or useless (according to Google, a 64-bit environment is required, and a lot (>> 4GB) of RAM if you're in a hurry), especially to use an ARM processor to build while all the Makefiles has been written to be used on x86...
But what I'm thinking about is a really cheap, silent, but working build machine, to sync the repo and build nightlies everyday. The first build will take some days but then, only the changes will be build so I think that only some hours per day will be required.
If I success, I'll create a big tutorial to explain what changes was required.
First of all, I had to add the Linux-armv61 arch as Host OS/ARCH :
Code:
[email protected] ~/buildspace/android/system/build $ git diff
diff --git a/core/envsetup.mk b/core/envsetup.mk
index 862b7f0..34eb31a 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -77,6 +77,10 @@ ifneq (,$(findstring Power,$(UNAME)))
HOST_ARCH := ppc
endif
[COLOR="SeaGreen"]+ifneq (,$(findstring arm,$(UNAME)))
+ HOST_ARCH := armv61
+endif
+[/COLOR]
BUILD_ARCH := $(HOST_ARCH)
ifeq ($(HOST_ARCH),)
then, I did this (because the raspbian ld doesn't support --icf) :
-->
Code:
[email protected] ~/buildspace/android/system/build $ git diff
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index b36111f..24e0d99 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -146,7 +146,6 @@ TARGET_GLOBAL_LDFLAGS += \
-Wl,-z,relro \
-Wl,-z,now \
-Wl,--warn-shared-textrel \
[COLOR="Red"]- -Wl,--icf=safe \[/COLOR]
$(arch_variant_ldflags)
# We only need thumb interworking in cases where thumb support
but now I am stuck with this error :
Code:
make -C kernel/samsung/smdk4210 O=/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" headers_install
make[1]: Entering directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 1: /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Syntax error: "(" unexpected
CHK include/linux/version.h
make[1]: Leaving directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/bin/bash: r: command not found
make: [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/lib/crtbegin_static.o] Error 127 (ignored)
[COLOR="SeaGreen"]target SharedLib[/COLOR]: libdl (/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so)
/usr/bin/ld: error: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so uses VFP /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o does not
/usr/bin/ld: failed to merge target specific data of file /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o
/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.
collect2: ld returned 1 exit status
make: *** [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so] Error 1
I don't really know what I have to do and if it is because the HOST is an arm arch...
It have been a long time since I didn't put my hands in this kind of things and I need help to solve this problems... Thanks in advance !
Click to expand...
Click to collapse
Hi There,
First lets roll it back a bit....... I would ditch the kernel building to begin with.... and just see if you can build the OS.
I'd also probably sanity check the toolchains by doing "BUILD_TINY_ANDROID=true make -j<whatever> " This build the very basics of the system and will probably highlight any issues
Looking at it however .... Are you building this on the PI? becuase your kernel build looks like it is still using the x86 tool-chain
Code:
ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt[B]/linux-x86/[/B]toolchain/arm-eabi-4.4.3/bin/arm-eabi-"
One more thing the HOST_ARCH can be just set to arm and not armv61 , I was going to submit the change to AOSP , JBQ has at least said it's a viable . I just haven't be chewing on PI too much! If you end up with a working patch set then feel free to add the AOSP change yourself, they only want the host file and probably the envsetup.mk
Good Luck
trevd said:
Hi There,
First lets roll it back a bit....... I would ditch the kernel building to begin with.... and just see if you can build the OS.
I'd also probably sanity check the toolchains by doing "BUILD_TINY_ANDROID=true make -j<whatever> " This build the very basics of the system and will probably highlight any issues
Looking at it however .... Are you building this on the PI? becuase your kernel build looks like it is still using the x86 tool-chain
Code:
ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt[B]/linux-x86/[/B]toolchain/arm-eabi-4.4.3/bin/arm-eabi-"
One more thing the HOST_ARCH can be just set to arm and not armv61 , I was going to submit the change to AOSP , JBQ has at least said it's a viable. I just haven't be chewing on PI too much! If you end up with a working patch set then feel free to add the AOSP change yourself, they only want the host file and probably the envsetup.mk
Good Luck
Click to expand...
Click to collapse
I launched a
Code:
BUILD_TINY_ANDROID=true make -j1
and I'll tell you what comes out.
Are you building this on the PI? becuase your kernel build looks like it is still using the x86 tool-chain
Code:
ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt[B]/linux-x86/[/B]toolchain/arm-eabi-4.4.3/bin/arm-eabi-"
Click to expand...
Click to collapse
I know that but I had difficulty to fix it.
First of all, I forgot to tell I added this host file :
Code:
[email protected] ~/buildspace/android/system/build $ cat core/combo/HOST_linux-armv61.mk
# Configuration for builds hosted on linux-armv6l.
# $(1): The file to check
define get-file-size
stat --format "%s" "$(1)" | tr -d '\n'
endef
HOST_SDK_TOOLCHAIN_PREFIX :=
ifneq (,$(strip $(wildcard $(HOST_SDK_TOOLCHAIN_PREFIX)/gcc)))
HOST_CC := $(HOST_SDK_TOOLCHAIN_PREFIX)/gcc
HOST_CXX := $(HOST_SDK_TOOLCHAIN_PREFIX)/g++
HOST_AR := $(HOST_SDK_TOOLCHAIN_PREFIX)/ar
endif # $(HOST_SDK_TOOLCHAIN_PREFIX)/gcc exists
HOST_GLOBAL_CFLAGS += -fPIC
HOST_GLOBAL_CFLAGS += -include $(call select-android-config-h,linux-armv61)
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
HOST_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
Then, here is the result of "lunch" command (I build for n7000) :
Code:
[email protected] ~/buildspace/android/system $ lunch cm_n7000-userdebug
Looking for dependencies
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.1
TARGET_PRODUCT=cm_n7000
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=armv61
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.2.27+-armv6l-with-debian-7.0
HOST_BUILD_TYPE=release
BUILD_ID=JOP40D
OUT_DIR=/media/totoext4part/cyanogenmod/system/out
============================================
About the "linux-x86" problem, I searched a lot and I think I have some change to do in tools/releasetools/common.py but I'll wait to understand well toolchains before doing useless bad things.
Here is the "BUILD_TINY_ANDROID=true make -j1" command result.
Code:
make -C kernel/samsung/smdk4210 O=/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" headers_install
make[1]: Entering directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 1: /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Syntax error: "(" unexpected
CHK include/linux/version.h
make[1]: Leaving directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
host C: mkbootfs <= system/core/cpio/mkbootfs.c
cc1: fatal error: build/core/combo/include/arch/linux-armv61/AndroidConfig.h: No such file or directory
compilation terminated.
make: *** [/media/totoext4part/cyanogenmod/system/out/host/linux-armv61/obj/EXECUTABLES/mkbootfs_intermediates/mkbootfs.o] Error 1
Ok I have to create some more host files...
Ok, I changed HOST_ARCH from armv61 to arm in build/core/envsetup.mk,
build/core/combo/HOST_linux-armv61.mk became build/core/combo/HOST_linux-arm.mk and in this file, I changed
Code:
HOST_GLOBAL_CFLAGS += -include $(call select-android-config-h,linux-armv61)
to
HOST_GLOBAL_CFLAGS += -include $(call select-android-config-h,linux-arm)
Here is what I got now (with "BUILD_TINY_ANDROID=true make -j1")
Code:
[COLOR="SeaGreen"][email protected][/COLOR] [COLOR="RoyalBlue"]~/buildspace/android/system $[/COLOR] BUILD_TINY_ANDROID=true make -j1
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.1
TARGET_PRODUCT=cm_n7000
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=arm
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.2.27+-armv6l-with-debian-7.0
HOST_BUILD_TYPE=release
BUILD_ID=JOP40D
OUT_DIR=/media/totoext4part/cyanogenmod/system/out
============================================
build/core/Makefile:44: warning: overriding commands for target `/media/totoext4part/cyanogenmod/system/out/target/product/n7000/system/etc/mkshrc'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/media/totoext4part/cyanogenmod/system/out/target/product/n7000/system/etc/mkshrc'
PRODUCT_COPY_FILES system/bluetooth/data/main.le.conf:system/etc/bluetooth/main.conf ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/AVRCP.kl:system/usr/keylayout/AVRCP.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Generic.kl:system/usr/keylayout/Generic.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/qwerty.kl:system/usr/keylayout/qwerty.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_05ac_Product_0239.kl:system/usr/keylayout/Vendor_05ac_Product_0239.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_22b8_Product_093d.kl:system/usr/keylayout/Vendor_22b8_Product_093d.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_045e_Product_028e.kl:system/usr/keylayout/Vendor_045e_Product_028e.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c216.kl:system/usr/keylayout/Vendor_046d_Product_c216.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c294.kl:system/usr/keylayout/Vendor_046d_Product_c294.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c299.kl:system/usr/keylayout/Vendor_046d_Product_c299.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c532.kl:system/usr/keylayout/Vendor_046d_Product_c532.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_054c_Product_0268.kl:system/usr/keylayout/Vendor_054c_Product_0268.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/Generic.kcm:system/usr/keychars/Generic.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/qwerty.kcm:system/usr/keychars/qwerty.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/qwerty2.kcm:system/usr/keychars/qwerty2.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/Virtual.kcm:system/usr/keychars/Virtual.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/idc/qwerty.idc:system/usr/idc/qwerty.idc ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/idc/qwerty2.idc:system/usr/idc/qwerty2.idc ignored.
PRODUCT_COPY_FILES vendor/samsung/n7000/proprietary/system/etc/gps.xml:system/etc/gps.xml ignored.
build/core/tasks/kernel.mk:161: warning: overriding commands for target `TARGET_KERNEL_BINARIES'
device/samsung/galaxys2-common/shbootimg.mk:26: warning: ignoring old commands for target `TARGET_KERNEL_BINARIES'
[COLOR="Olive"]host C[/COLOR]: acp <= build/tools/acp/acp.c
[COLOR="MediumTurquoise"]Import includes file[/COLOR]: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/STATIC_LIBRARIES/libhost_intermediates/import_includes
[COLOR="Olive"]host C++[/COLOR]: libhost <= build/libs/host/pseudolocalize.cpp
[COLOR="olive"]host C[/COLOR]: libhost <= build/libs/host/CopyFile.c
[COLOR="olive"]host StaticLib[/COLOR]: libhost (/media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/STATIC_LIBRARIES/libhost_intermediates/libhost.a)
[COLOR="MediumTurquoise"]Export includes file[/COLOR]: build/tools/acp/Android.mk -- /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/acp_intermediates/export_includes
[COLOR="Olive"]host Executable[/COLOR]: acp (/media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/acp_intermediates/acp)
[COLOR="MediumTurquoise"]Install: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/bin/acp[/COLOR]
make -C kernel/samsung/smdk4210 O=/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" headers_install
make[1]: Entering directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 1: /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Syntax error: "(" unexpected
CHK include/linux/version.h
make[1]: Leaving directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
[COLOR="MediumTurquoise"]Import includes file[/COLOR]: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/mkbootfs_intermediates/import_includes
[COLOR="Olive"]host C[/COLOR]: mkbootfs <= system/core/cpio/mkbootfs.c
[COLOR="MediumTurquoise"]Export includes file[/COLOR]: system/core/cpio/Android.mk -- /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/mkbootfs_intermediates/export_includes
[COLOR="olive"]host Executable[/COLOR]: mkbootfs (/media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/mkbootfs_intermediates/mkbootfs)
[COLOR="MediumTurquoise"]Install: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/bin/mkbootfs[/COLOR]
/bin/bash: r: command not found
make: [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/lib/crtbegin_static.o] Error 127 (ignored)
[COLOR="MediumTurquoise"]Import includes file[/COLOR]: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/EXECUTABLES/init_intermediates/import_includes
[COLOR="rgb(46, 139, 87)"]target thumb C[/COLOR]: init <= system/core/init/builtins.c
system/core/init/builtins.c: In function ‘do_exec’:
system/core/init/builtins.c:283:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/init.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/devices.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/property_service.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/util.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/parser.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/logo.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/keychords.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/signal_handler.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/init_parser.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/ueventd.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/ueventd_parser.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/watchdogd.c
[COLOR="SeaGreen"]target SharedLib[/COLOR]: libdl (/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so)
/usr/bin/ld: error: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so uses VFP register arguments, /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o does not
/usr/bin/ld: failed to merge target specific data of file /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o
/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.
collect2: ld returned 1 exit status
make: *** [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so] Error 1
So I'm stuck with almost my initial problem, a kind of two different libdl. But which one do I have to change and where can I find them?
cmoatoto said:
Ok, I changed HOST_ARCH from armv61 to arm in build/core/envsetup.mk,
build/core/combo/HOST_linux-armv61.mk became build/core/combo/HOST_linux-arm.mk and in this file, I changed
Code:
HOST_GLOBAL_CFLAGS += -include $(call select-android-config-h,linux-armv61)
to
HOST_GLOBAL_CFLAGS += -include $(call select-android-config-h,linux-arm)
Here is what I got now (with "BUILD_TINY_ANDROID=true make -j1")
Code:
[COLOR="SeaGreen"][email protected][/COLOR] [COLOR="RoyalBlue"]~/buildspace/android/system $[/COLOR] BUILD_TINY_ANDROID=true make -j1
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.1
TARGET_PRODUCT=cm_n7000
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=arm
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.2.27+-armv6l-with-debian-7.0
HOST_BUILD_TYPE=release
BUILD_ID=JOP40D
OUT_DIR=/media/totoext4part/cyanogenmod/system/out
============================================
build/core/Makefile:44: warning: overriding commands for target `/media/totoext4part/cyanogenmod/system/out/target/product/n7000/system/etc/mkshrc'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/media/totoext4part/cyanogenmod/system/out/target/product/n7000/system/etc/mkshrc'
PRODUCT_COPY_FILES system/bluetooth/data/main.le.conf:system/etc/bluetooth/main.conf ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/AVRCP.kl:system/usr/keylayout/AVRCP.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Generic.kl:system/usr/keylayout/Generic.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/qwerty.kl:system/usr/keylayout/qwerty.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_05ac_Product_0239.kl:system/usr/keylayout/Vendor_05ac_Product_0239.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_22b8_Product_093d.kl:system/usr/keylayout/Vendor_22b8_Product_093d.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_045e_Product_028e.kl:system/usr/keylayout/Vendor_045e_Product_028e.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c216.kl:system/usr/keylayout/Vendor_046d_Product_c216.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c294.kl:system/usr/keylayout/Vendor_046d_Product_c294.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c299.kl:system/usr/keylayout/Vendor_046d_Product_c299.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_046d_Product_c532.kl:system/usr/keylayout/Vendor_046d_Product_c532.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keylayout/Vendor_054c_Product_0268.kl:system/usr/keylayout/Vendor_054c_Product_0268.kl ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/Generic.kcm:system/usr/keychars/Generic.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/qwerty.kcm:system/usr/keychars/qwerty.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/qwerty2.kcm:system/usr/keychars/qwerty2.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/keychars/Virtual.kcm:system/usr/keychars/Virtual.kcm ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/idc/qwerty.idc:system/usr/idc/qwerty.idc ignored.
PRODUCT_COPY_FILES device/samsung/n7000/usr/idc/qwerty2.idc:system/usr/idc/qwerty2.idc ignored.
PRODUCT_COPY_FILES vendor/samsung/n7000/proprietary/system/etc/gps.xml:system/etc/gps.xml ignored.
build/core/tasks/kernel.mk:161: warning: overriding commands for target `TARGET_KERNEL_BINARIES'
device/samsung/galaxys2-common/shbootimg.mk:26: warning: ignoring old commands for target `TARGET_KERNEL_BINARIES'
[COLOR="Olive"]host C[/COLOR]: acp <= build/tools/acp/acp.c
[COLOR="MediumTurquoise"]Import includes file[/COLOR]: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/STATIC_LIBRARIES/libhost_intermediates/import_includes
[COLOR="Olive"]host C++[/COLOR]: libhost <= build/libs/host/pseudolocalize.cpp
[COLOR="olive"]host C[/COLOR]: libhost <= build/libs/host/CopyFile.c
[COLOR="olive"]host StaticLib[/COLOR]: libhost (/media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/STATIC_LIBRARIES/libhost_intermediates/libhost.a)
[COLOR="MediumTurquoise"]Export includes file[/COLOR]: build/tools/acp/Android.mk -- /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/acp_intermediates/export_includes
[COLOR="Olive"]host Executable[/COLOR]: acp (/media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/acp_intermediates/acp)
[COLOR="MediumTurquoise"]Install: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/bin/acp[/COLOR]
make -C kernel/samsung/smdk4210 O=/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" headers_install
make[1]: Entering directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 1: /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Syntax error: "(" unexpected
CHK include/linux/version.h
make[1]: Leaving directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
[COLOR="MediumTurquoise"]Import includes file[/COLOR]: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/mkbootfs_intermediates/import_includes
[COLOR="Olive"]host C[/COLOR]: mkbootfs <= system/core/cpio/mkbootfs.c
[COLOR="MediumTurquoise"]Export includes file[/COLOR]: system/core/cpio/Android.mk -- /media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/mkbootfs_intermediates/export_includes
[COLOR="olive"]host Executable[/COLOR]: mkbootfs (/media/totoext4part/cyanogenmod/system/out/host/linux-arm/obj/EXECUTABLES/mkbootfs_intermediates/mkbootfs)
[COLOR="MediumTurquoise"]Install: /media/totoext4part/cyanogenmod/system/out/host/linux-arm/bin/mkbootfs[/COLOR]
/bin/bash: r: command not found
make: [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/lib/crtbegin_static.o] Error 127 (ignored)
[COLOR="MediumTurquoise"]Import includes file[/COLOR]: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/EXECUTABLES/init_intermediates/import_includes
[COLOR="rgb(46, 139, 87)"]target thumb C[/COLOR]: init <= system/core/init/builtins.c
system/core/init/builtins.c: In function ‘do_exec’:
system/core/init/builtins.c:283:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/init.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/devices.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/property_service.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/util.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/parser.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/logo.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/keychords.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/signal_handler.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/init_parser.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/ueventd.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/ueventd_parser.c
[COLOR="SeaGreen"]target thumb C[/COLOR]: init <= system/core/init/watchdogd.c
[COLOR="SeaGreen"]target SharedLib[/COLOR]: libdl (/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so)
/usr/bin/ld: error: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so uses VFP register arguments, /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o does not
/usr/bin/ld: failed to merge target specific data of file /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o
/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.
collect2: ld returned 1 exit status
make: *** [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so] Error 1
So I'm stuck with almost my initial problem, a kind of two different libdl. But which one do I have to change and where can I find them?
Click to expand...
Click to collapse
libdl is in the bionic directory, Did you clear your out ( rm -rf out ) directory before rebuilding?
You all of these are intermediate files ( i.e halfway done) what I suspect has happen is the obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o object file has been recompiled by the x86 toolchain and it's trying the link that in with some arm stuff.... That's all speculation however and I could be full of s**t! ,
EDIT: To find stuff type godir <word>
this indexes the source first time round the "cd's" to the chosen one ( might take a while to index on the pi )
also "hmm" is the help command which lists the majority of commands available to you.
trevd said:
libdl is in the bionic directory, Did you clear your out ( rm -rf out ) directory before rebuilding?
You all of these are intermediate files ( i.e halfway done) what I suspect has happen is the obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o object file has been recompiled by the x86 toolchain and it's trying the link that in with some arm stuff.... That's all speculation however and I could be full of s**t! ,
EDIT: To find stuff type godir <word>
this indexes the source first time round the "cd's" to the chosen one ( might take a while to index on the pi )
also "hmm" is the help command which lists the majority of commands available to you.
Click to expand...
Click to collapse
Thanks for the tip !
I'll do "rm -rf out" but I'll cry a bit, because it took some days to build some stuff (framework.jar, javadoc etc...). But as I said in the first post, I'm not in a hurry. I'll follow your idea.
About the toolchain problem, I think so (a x86 libdl compared to an arm one, one something like that). Now I have to find out how to force the x86 libdl to be build with arm.
I'll tell you when the rm -rf and the make will end.
cmoatoto said:
Thanks for the tip !
I'll do "rm -rf out" but I'll cry a bit, because it took some days to build some stuff (framework.jar, javadoc etc...). But as I said in the first post, I'm not in a hurry. I'll follow your idea.
About the toolchain problem, I think so (a x86 libdl compared to an arm one, one something like that). Now I have to find out how to force the x86 libdl to be build with arm.
I'll tell you when the rm -rf and the make will end.
Click to expand...
Click to collapse
What you need is an native armv6l androideabi toolchain thats capable of outputting armv7 and armv7-neon that supports the androideabi but run... probably something your going to have to build yourself.... also the cm toolchain are a little old now and they are probably not you best reference.
I would highly recommend talking to Linaro, They know a trick or two about the android toolchain and maintain an android repo which builds against the latest gcc! Although they don't directly build the arm for arm android toolchain ( I don't think ) they will probably be able to offer some guidance if you ask them nicely!!
Like I said earlier... Good Luck!
Some useful links:
http://www.linaro.org/
https://wiki.linaro.org/Platform/Android/FollowTheToolchainCycle
https://wiki.linaro.org/Platform/Android/AndroidOnPanda
This is something that took me crazy :thumbsup: good work.. will try soon! Btw android cannot run on Raspberry Pi due to the crap gpu in it
cmoatoto said:
Thanks for the tip !
I'll do "rm -rf out" but I'll cry a bit, because it took some days to build some stuff (framework.jar, javadoc etc...). But as I said in the first post, I'm not in a hurry. I'll follow your idea.
About the toolchain problem, I think so (a x86 libdl compared to an arm one, one something like that). Now I have to find out how to force the x86 libdl to be build with arm.
I'll tell you when the rm -rf and the make will end.
Click to expand...
Click to collapse
Did you ever get this working all the way? It would be awesome to be able to build some ROMs for my phone using the rpi!
Sent from my SPH-D710 using xda app-developers app
Won't building CM10 on a raspberrypi take ages? I know it easily takes 2-3 hours on my laptop to build it from scratch.
Yes and no.
The gnomes that lurk on Raspberry Pi Forums have gotten a working Gingerbread on the Pi, but it's not hardware accelerated due to Broadcom playing fast and loose with the GPU specs. A test build of ICS with said specs had been made seen, but it's not in the wild due to it being volunteer based, and with super secret sauce to boot.
lol @ gnomes
svenvv said:
Won't building CM10 on a raspberrypi take ages? I know it easily takes 2-3 hours on my laptop to build it from scratch.
Click to expand...
Click to collapse
Yes and no, but not for the reason moocow1452 said : The goal is not to RUN Android (or CM) on Raspberry, but to BUILD it on a Raspberry.
So, to answer the question, yes, it takes ages (days actually as far as I could go). Especially the Java builds are a pain in the a** (I had to swipe up to 2Go on a usb disk and reduce via scripts (to catch and log all java, javac and javadoc calls) the java heap size).
But once this builds have been done, they will not be run again until someone change the code associated. So if you pull the source everyday then build the code (= nightly builds), it will not take that long (maybe a couple of hour when it should take some minutes on a real computer)
Pyro96 said:
Did you ever get this working all the way? It would be awesome to be able to build some ROMs for my phone using the rpi!
Click to expand...
Click to collapse
No I didn't. They're is a looot of work to prepare the native armv6l androideabi toolchain and I don't really have time now. I keep this project in my mind but I will need some help with that (I might get it in some days/week if I'm lucky)
Hey guys. Great thread (subscribed) so far, many thanks.
One thing I normally use is distcc, but the android build system doesn't want to play. It would be nice if we could use that extra power.
...
cmoatoto said:
Hi all !
My current project is to use my Raspberry Pi as a Build Machine to build all Android sources (AOSP). In fact, I'll not build AOSP but the CyanogenMod (wich is mainly a fork from AOSP).
I know this may sound crazy, dumb or useless (according to Google, a 64-bit environment is required, and a lot (>> 4GB) of RAM if you're in a hurry), especially to use an ARM processor to build while all the Makefiles has been written to be used on x86...
But what I'm thinking about is a really cheap, silent, but working build machine, to sync the repo and build nightlies everyday. The first build will take some days but then, only the changes will be build so I think that only some hours per day will be required.
If I success, I'll create a big tutorial to explain what changes was required.
First of all, I had to add the Linux-armv61 arch as Host OS/ARCH :
Code:
[email protected] ~/buildspace/android/system/build $ git diff
diff --git a/core/envsetup.mk b/core/envsetup.mk
index 862b7f0..34eb31a 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -77,6 +77,10 @@ ifneq (,$(findstring Power,$(UNAME)))
HOST_ARCH := ppc
endif
[COLOR="SeaGreen"]+ifneq (,$(findstring arm,$(UNAME)))
+ HOST_ARCH := armv61
+endif
+[/COLOR]
BUILD_ARCH := $(HOST_ARCH)
ifeq ($(HOST_ARCH),)
then, I did this (because the raspbian ld doesn't support --icf) :
-->
Code:
[email protected] ~/buildspace/android/system/build $ git diff
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index b36111f..24e0d99 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -146,7 +146,6 @@ TARGET_GLOBAL_LDFLAGS += \
-Wl,-z,relro \
-Wl,-z,now \
-Wl,--warn-shared-textrel \
[COLOR="Red"]- -Wl,--icf=safe \[/COLOR]
$(arch_variant_ldflags)
# We only need thumb interworking in cases where thumb support
but now I am stuck with this error :
Code:
make -C kernel/samsung/smdk4210 O=/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=" /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" headers_install
make[1]: Entering directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 1: /media/totoext4part/cyanogenmod/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: Syntax error: "(" unexpected
CHK include/linux/version.h
make[1]: Leaving directory `/media/totoext4part/cyanogenmod/system/kernel/samsung/smdk4210'
/bin/bash: r: command not found
make: [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/lib/crtbegin_static.o] Error 127 (ignored)
[COLOR="SeaGreen"]target SharedLib[/COLOR]: libdl (/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so)
/usr/bin/ld: error: /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so uses VFP register arguments, /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o does not
/usr/bin/ld: failed to merge target specific data of file /media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/libdl.o
/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.
collect2: ld returned 1 exit status
make: *** [/media/totoext4part/cyanogenmod/system/out/target/product/n7000/obj/SHARED_LIBRARIES/libdl_intermediates/LINKED/libdl.so] Error 1
I don't really know what I have to do and if it is because the HOST is an arm arch...
It have been a long time since I didn't put my hands in this kind of things and I need help to solve this problems... Thanks in advance !
Click to expand...
Click to collapse
This was interesting. I may try to build a CM10 on a raspberry pi.
Did you guys actually manage to get it running?
I don't really want to dual boot my sp4 so a raspberry pi would be ideal. The 3 even has wi-fi, so it's easy to stay away somewhere. Would be ideal to build weeklys or bi-weeklys. I already have a spare 1TB external hard drive with power supply laying around.
Was thinking of getting one anyways as a htpc. Ordering 2 means less shipping xD.
The last post before yours is 3 years old, this thread is dead...
What a shame. I wanted to put my pi to a better use.
chrisvrose said:
What a shame. I wanted to put my pi to a better use.
Click to expand...
Click to collapse
Take a look here instead, might be more up to date: https://groups.google.com/forum/#!forum/android-rpi
firstly id like to thank project rookie over in the skyrocket section as i used their guide for this and changed it up for quincyatt, you guys are doing a great job promoting building keep it up! hope i can continue that here!
Instructions for building unofficial CM-10.1 and CM-10,2 for quincyatt
Disclaimer:
The releases, instructions, and extras posted here are to be used at your own risk. We work hard to provide good, workable knowledge and builds, and test our work before posting it up front. Nevertheless, no one is 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!!
READ ME THREE TIMES :
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. It ain'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. Nobody here has an ego about this, and we all want to help. But, we all struggled to get to a successful point, and lazy, unmotivated people just irritate those who have had to learn from scratch too. THIS link should be your absolute most used link. Have a nice day
GETTING STARTED
THIS GUIDE IS FOR 64BIT LINUX OS
recommended: quadcore cpu, 8gb+ ram
Setting up your environment (only needs to be done once) :
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 neccesary files.
Here are the steps for setting up build environment from those 2 tutorials in correct order:
1)You need the following:
-JDK 6 if you wish to build Jellybean.
Code:
$ sudo apt-get install openjdk-6-jdk
-Python 2.4 -- 2.7, which you can download from python.org. Or:
Code:
$ sudo apt-get install python
-Git 1.7 or newer. You can find it at git-scm.com. Or:
Code:
$ sudo apt-get install git-core
-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.
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:
# Android tools
export PATH=${PATH}:~/android-sdk/tools
export PATH=${PATH}:~/android-sdk/platform-tools
export PATH=${PATH}:~/bin
Find your .profile file and add this at the bottom of the file:
Code:
PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"
You have now successfully installed the Android SDK.
To check for updates issue this into your terminal:
Code:
$ android
2) Install required packages. 64-bit (recommended)
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils
On older versions of Ubuntu such as 11.10 you may need to do the following:
Code:
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
Building on Ubuntu 12.04 is currently only experimentally supported and is not guaranteed to work on branches other than master. with that said, i build on 12.04 without issue
Code:
$ 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
3) Configure your USB.
Code:
$ gksudo gedit /etc/udev/rules.d/51-android.rules
Inside of this blank text file insert:
Code:
#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"
4) Save the file and close it and then issue this command:
Code:
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
5) Install the repo:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
This is what you need to begin building. From here, CM-10.1 can be built with a few additions and commands.
BUILDING UNOFFICIAL CM10.2 :
Create your work directory:
Code:
mkdir ~/"your directory name here" For example: mkdir ~/cm102
cd ~/cm102
Initialize the work directory:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
Create and edit local_manifest.xml in .repo: /.repo/local_manifests/local_manifest.xml (hidden folder press CTRL+H to unhide)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_samsung_msm8660-common" path="device/samsung/msm8660-common" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_device_samsung_quincyatt" path="device/samsung/quincyatt" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_device_samsung_quincy-common" path="device/samsung/quincy-common" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_kernel_samsung_msm8660-common" path="kernel/samsung/msm8660-common" remote="github" revision="cm-10.2" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.2" />
</manifest>
Code:
repo sync -j16 (this will take a few hours, use -j4 if you have slower internet)
To Build:
Code:
. build/envsetup.sh (notice the period and space)
vendor/cm/get-prebuilts
repo sync -j16 (again use -j4 for slower internet)
brunch quincyatt -j7 (lower for slower cpu's)
**After you build, your repo files will remain in place. This will cause your future builds to be based from that specific time of additions and merges. Wiping or 'cleaning' your files often will ensure that your builds are the most up-to-date. To be sure that you start with a fresh repo at the beginning of every build, you should 'make clean' often. For example:
Code:
$ cd ~/cm102
$ make clean (or 'make clobber' without quotes)
If you want to have your 'cleaning service' done as part of your process, this is a way to achieve it:
Code:
$ cd cm102
$ repo sync -j16
$ . build/envsetup.sh && make clobber && brunch quincyatt -j7 (lower if you have a slower cpu)
This will make the cleaning process automatic.
The Git can be found here:
GIT
The Gerrit can be found here:
GERRIT
again thanks goes out to project rookie and everyone that has helped them! visit their thread *linked at top* and shoot them a thanks!
i will fine-tune the look of the thread over time including adding different rom's to build but if you know what your doing this should be pretty straight forward but also informative enough to possibly start learning
Lastly, please be kind to other users, this is a thread for learning so if your not going to be helpful just continue being a reader of this thread rather than a poster also if you see someone asking a question you can answer please do so! this thread is here to learn from and hopefully help grow the dev section and future phone sections
Building CM-10.1
BUILDING UNOFFICIAL CM10.1 :
Create your work directory:
Code:
mkdir ~/"your directory name here" For example: mkdir ~/cm101
cd ~/cm101
Initialize the work directory:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
Create and edit local_manifest.xml in .repo: /.repo/local_manifests/local_manifest.xml (hidden folder press CTRL+H to unhide)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_samsung_msm8660-common" path="device/samsung/msm8660-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_quincyatt" path="device/samsung/quincyatt" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_quincy-common" path="device/samsung/quincy-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_kernel_samsung_msm8660-common" path="kernel/samsung/msm8660-common" remote="github" revision="cm-10.1" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
</manifest>
Code:
repo sync -j16 (this will take a few hours, use -j4 if you have slower internet)
To Build:
Code:
. build/envsetup.sh (notice the period and space)
vendor/cm/get-prebuilts
repo sync -j16 (again use -j4 for slower internet)
CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1 brunch cm_quincyatt-userdebug
**After you build, your repo files will remain in place. This will cause your future builds to be based from that specific time of additions and merges. Wiping or 'cleaning' your files often will ensure that your builds are the most up-to-date. To be sure that you start with a fresh repo at the beginning of every build, you should 'make clean' often. For example:
Code:
$ cd ~/cm101
$ make clean (or 'make clobber' without quotes)
If you want to have your 'cleaning service' done as part of your process, this is a way to achieve it:
Code:
$ cd cm101
$ repo sync -j16
$ . build/envsetup.sh && make clobber && CM_EXTRAVERSION=-mycustombuild CM_SNAPSHOT=1 brunch cm_quincyatt-userdebug
This will make the cleaning process automatic.
The Git can be found here:
GIT
The Gerrit can be found here:
GERRIT
This by no means makes you a developer, this is a good first step.
If you build, flash, works and you want to share post it in this thread with a no responsibility warning
This is a great resource for us, Thank you for continuing to support the note community:good:
Thank you for this. Very nice write up.
Sent from my phone using xda premium app
Not only thank you for this guide, and sharing your builds. But thanks for your time and contributing to this community! I truly appreciate it.
Thanks for the write up! Awesome resource for me to read about how certain things work.
Sweet!
Many thanks Jamie.
Sent from my SAMSUNG-SGH-I717 using xda premium
I think you need to export the env variables.. at least thats how i do it.. though it could be just habit
Code:
export CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1
and you need a linebreak before
Code:
brunch cm_quincyatt-userdebug
but you can also shorten it..
Code:
brunch quincyatt
thats a matter of preference though
Me thinks those that request a ROM to have certain features, Now have step 1 to creating the ROM of "Their" dreams...
RaiderWill said:
Me thinks those that request a ROM to have certain features, Now have step 1 to creating the ROM of "Their" dreams...
Click to expand...
Click to collapse
lol, step 1 in a 1 million step line
chris41g said:
I think you need to export the env variables.. at least thats how i do it.. though it could be just habit
Code:
export CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1
and you need a linebreak before
Code:
brunch cm_quincyatt-userdebug
but you can also shorten it..
Code:
brunch quincyatt
thats a matter of preference though
Click to expand...
Click to collapse
their are a few different variations none of them wrong, when i built cm10.1 i built with
Code:
time brunch quincyatt
id update op but it will just start to confuse people if i put 4 ways to build the same rom hahaha
note: https://github.com/TheMuppets/propr...2ea796dc3/quincyatt/proprietary/lib/libakm.so
this commit fix's orientation i believe, have atter *thanks chris for pointing that out*
Jaimie thanks for this guide, and a place to ask questions about building.
After messing around with various apks for a while, I decided to sink my teeth into working on a whole ROM, with the release of JB for the note.
I used the kitchen to do all the standard things and a few experiments.. and it only took 3 builds to get my note running pretty good with JB. Lol - I know - nowhere close to a dev yet.. but it's a start. So, I figure, on to source stuff and actually trying to build things that boot myself.
My xubuntu build is pretty solid and I've double checked dependies across more guides that I've read, than I can count. Lol
My question right now, and what I'm trying to understand, revolves around the repos. I just want to understand before I start downloading gigs worth of stuff that I may not need.
Browsing around on github, I see folders and files updated at various times even before JB was released for the note. So I'm assuming that a lot of files carried over from ICS, with no changes needed for JB to run on the note.
Does that also mean that the source has already been updated in these repos, with what Samsung released a few days back?
So, I set up all the repos you have in this guide - do I need to download the source zips to copy any files over, to build something stable? Or do I just count on the repos for everything?
I just want to make sure I understand how to work with repos correctly. I don't want to build a ROM that ends up with crappy sound or some bluetooth connection issue because I didn't know I was supposed to grab a lib file or something from the source zip or the stock rom, and throw it in the build. Lol
i am trying to build rootbox, how do i know what kernel to use?
and after i get done syncing i do ". build/envsetup.sh" and it says no such directory
Bradl79 said:
i am trying to build rootbox, how do i know what kernel to use?
and after i get done syncing i do ". build/envsetup.sh" and it says no such directory
Click to expand...
Click to collapse
i have not built rootbox myself but
if you dont know what kernel to use, always stick with the cm kernel, which is in the OP
dont stagger off from the norm yet
and if you havent yet i would start with building cm
i get error
make: *** [/home/bradley/rootbox/out/target/product/quincyatt/obj/STATIC_LIBRARIES/librpc_intermediates/clnt.o] Error 1
Bradl79 said:
i get error
make: *** [/home/bradley/rootbox/out/target/product/quincyatt/obj/STATIC_LIBRARIES/librpc_intermediates/clnt.o] Error 1
Click to expand...
Click to collapse
librpc is in hardware/msm7k which I'm guessing is part of the missing qcom stuff I talked about
<project path="hardware/msm7k" name="android_hardware_msm7k" remote="cm" revision="cm-10.1" />
its in their repo
i need more of the error your getting because thats not the actual error
Sent from my SAMSUNG-SGH-I747 using xda premium
BlownFuze said:
Jaimie thanks for this guide, and a place to ask questions about building.
After messing around with various apks for a while, I decided to sink my teeth into working on a whole ROM, with the release of JB for the note.
I used the kitchen to do all the standard things and a few experiments.. and it only took 3 builds to get my note running pretty good with JB. Lol - I know - nowhere close to a dev yet.. but it's a start. So, I figure, on to source stuff and actually trying to build things that boot myself.
My xubuntu build is pretty solid and I've double checked dependies across more guides that I've read, than I can count. Lol
My question right now, and what I'm trying to understand, revolves around the repos. I just want to understand before I start downloading gigs worth of stuff that I may not need.
Browsing around on github, I see folders and files updated at various times even before JB was released for the note. So I'm assuming that a lot of files carried over from ICS, with no changes needed for JB to run on the note.
Does that also mean that the source has already been updated in these repos, with what Samsung released a few days back?
So, I set up all the repos you have in this guide - do I need to download the source zips to copy any files over, to build something stable? Or do I just count on the repos for everything?
I just want to make sure I understand how to work with repos correctly. I don't want to build a ROM that ends up with crappy sound or some bluetooth connection issue because I didn't know I was supposed to grab a lib file or something from the source zip or the stock rom, and throw it in the build. Lol
Click to expand...
Click to collapse
such is the way of the life of building android, there is no certain guarantee that your build will be perfect, i cant count how many failed builds and bootloops ive gotten *4 failed builds today actually *LOL its part of the fun debugging it
but no nothing from our source has been merged into cyanogenmod or themuppets, the msm8660-common kernel we use is already based off 4.1.2 full sources from hercules which is our phone minus the pen and hdpi instead of xhdpi, what we are missing are some of the jb blobs, we are still using some ics ones LOL
Hi,
I currently try building this one myself:
http://forum.xda-developers.com/android/development/rom-cyanogenmod-12-0-samsung-express-gt-t2949359
it's CM 12.1 for the Samsung Galaxy Express GT-I8730
After hours of building it breaks with a missing library.
Code:
frameworks/testing/runner/src/main/java/android/support/test/internal/runner/ClassPathScanner.java:19: error: package android.support.annotation does not exist
import android.support.annotation.VisibleForTesting;
build/core/java.mk:346: recipe for target '~/src/cm-12.1-main/out/target/common/obj/JAVA_LIBRARIES/android-support-test-src_intermediates/classes-full-debug.jar' failed
make: *** [~/src/cm-12.1-main/out/target/common/obj/JAVA_LIBRARIES/android-support-test-src_intermediates/classes-full-debug.jar] Error 41
package android.support.annotation is missing. It's available here
Code:
./frameworks/support/annotations/src/android/support/annotation
./prebuilts/sdk/current/support/annotations/android-support-annotations.jar
But it's not included in build.
This is the code in question, in build/core/java.mk:346
Code:
# Compile the java files to a .jar file.
# This intentionally depends on java_sources, not all_java_sources.
# Deps for generated source files must be handled separately,
# via deps on the target that generates the sources.
$(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS)
$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(LOCAL_JAR_EXCLUDE_FILES)
$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := $(LOCAL_JAR_PACKAGES)
$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES := $(LOCAL_JAR_EXCLUDE_PACKAGES)
$(full_classes_compiled_jar): PRIVATE_RMTYPEDEFS := $(LOCAL_RMTYPEDEFS)
$(full_classes_compiled_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF)
$(full_classes_compiled_jar): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \
$(jar_manifest_file) $(layers_file) $(RenderScript_file_stamp) \
$(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES)
$(transform-java-to-classes.jar)
How do I find out the content of the variables? How do I modify it?
Since I am building from a branch, it probably is a temporary problem. I issued a repo sync, but it dit not help (yet).
any idea?
thanks
JPT
Hi, so i've tried to compile TWRP inside CM14 source and i've been struggling with linking error for a while
Code:
system/core/adb/adb_auth_client.cpp:94: error: undefined reference to 'android_pubkey_decode'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[ 80% 4855/6059] target C: libminzip ...ootable/recovery-twrp/minzip/SysUtil.c
ninja: build stopped: subcommand failed.
build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
#### make failed to build some targets (04:34 (mm:ss)) ####
It's basicly CM14 not changed at all. What i discovered is that in OUT folder inside static libraries there is no libcrypto-utils build. In fact there is a folder but just with export-includes.txt
Here is part of system/core/adb/Android.mk
Code:
include $(CLEAR_VARS)
LOCAL_CLANG := true
LOCAL_MODULE := libadbd
LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=0
LOCAL_SRC_FILES := \
$(LIBADB_SRC_FILES) \
adb_auth_client.cpp \
jdwp_service.cpp \
usb_linux_client.cpp \
LOCAL_SANITIZE := $(adb_target_sanitize)
# Even though we're building a static library (and thus there's no link step for
# this to take effect), this adds the includes to our path.
LOCAL_STATIC_LIBRARIES := libcrypto_utils_static libcrypto_static libbase
include $(BUILD_STATIC_LIBRARY)
And part of libcrypto_utils/Android.mk
Code:
include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto_utils_static
LOCAL_SRC_FILES := android_pubkey.c
LOCAL_CFLAGS := -Wall -Werror -Wextra -std=c99
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES := libcrypto_static
include $(BUILD_STATIC_LIBRARY)
Also header file is included in adb_auth_client.cpp
Code:
#include <crypto_utils/android_pubkey.h>
What am i doing wrong?
Have you fixed this? I have same problem and i do not know how to fix it ..
_______________SOLVED____________________
https://github.com/discipuloosho/an...mmit/22801f5f78b5b996b163d54cf5c886a2d6db81c7
Anyone got a fix for this?
HaoZeke said:
Anyone got a fix for this?
Click to expand...
Click to collapse
Have you searched/posted this question within the the following thread that's a guide to performing this?
[GUIDE][NOOB FRIENDLY]How to compile TWRP from source step by step by Hacker432
Good Luck!
~~~~~~~~~~~~~~~
I Am The Egg Man,
They Are The Egg Men.
I Am The Walrus!
Coo Coo Cachoo!
I DO NOT PROVIDE SUPPORT VIA PM UNLESS ASKED/REQUESTED BY MYSELF.
PLEASE KEEP IT IN THE THREADS WHERE EVERYONE CAN SHARE
I have been messing around and creating a custom ROM for a few different devices, and I like using LineageOS as my base, but just recently I ran into a problem where I can't get some of my make tasks to work correctly.
I have my own `vendor/alex/` repository and it has some makefiles in it. The general structure of my makefiles is
Code:
|- alex_pre.mk
|- alex_post.mk
|- alex_${device}.mk
Inside of alex_pre.mk I have some common PRODUCT_COPY_FILES that I use.
Inside of alex_post.mk I have a task that I would like to run after the LineageOS 'bacon' task is done
Code:
test-task: bacon
@echo "Hello, World!"
Inside of my device makefiles I have something like : ( using harpia as my example )
Code:
$(call inherit-product, vendor/alex/alex_pre.mk)
$(call inherit-product, device/motorola/harpia/lineage.mk)
PRODUCT_MODEL = Alex on Harpia
PRODUCT_NAME = alex_harpia
$(call inherit-product, vendor/alex/alex_post.mk)
Code:
build/core/ninja.mk:147: warning: overriding commands for target `test-task'
vendor/alex/alex_post.mk:152: warning: ignoring old commands for target `test-task'
make: *** No rule to make target `bacon', needed by `test-task'. Stop.
make: *** Waiting for unfinished jobs....
Running kati to generate build-alex_harpia.ninja...
vendor/alex/alex_post.mk was modified, regenerating...