[TUTORIAL] How to download and compile ICS from source

Search This thread

BPaul

Inactive Recognized Developer
May 9, 2011
2,355
8,117
31
Astana
empireb.ml
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.
 
Last edited:

ff0000.it

Senior Member
Jan 31, 2011
51
18
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
 

D4rKn3sSyS

Inactive Recognized Developer
Jan 12, 2011
3,800
16,278
Medellín
is this tutorial compatible with another Smartphones?

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 :p
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
 
Last edited:

siddardha21

Senior Member
Sep 4, 2011
212
94
Kakinada
Good Luck!

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 :p
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
Great to see u man!! hope both of u get fully working ics soon :D All the best! :D
 

BPaul

Inactive Recognized Developer
May 9, 2011
2,355
8,117
31
Astana
empireb.ml
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 :p
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

gralloc from 2.3 rom. remove he and contune.
 
  • Like
Reactions: pficrx and luki2411

BPaul

Inactive Recognized Developer
May 9, 2011
2,355
8,117
31
Astana
empireb.ml
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.
paul@kamikadzE:~/android/system$
 
  • Like
Reactions: pficrx and luki2411

BPaul

Inactive Recognized Developer
May 9, 2011
2,355
8,117
31
Astana
empireb.ml

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
 

donjamal

Senior Member
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


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 ----------

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?


somehow after about million copy paste it worked :D
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 :p
 
Last edited:

kaassaus

Senior Member
Mar 28, 2011
611
83
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=
 

Top Liked Posts

  • There are no posts matching your filters.
  • 48
    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.
    11
    Supplement, if something is missing
    5
    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
    3
    x10 mini pro if you want it.

    Paul I have a X10 mini pro going spare if you want it, I have personal messaged you already with no reply. Let me know mate, would be great to have you back developing on this device. :)
    3

    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