[Sony Ericsson XPERIA X10 Mini] BPaul:
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:

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:

sudo apt-get install python

- Git 1.7 or newer

You can find it at git-scm.com. Or:

sudo apt-get install git-core

2) Install required packages:

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:

sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

3) Configure your USB:

gksudo gedit /etc/udev/rules.d/51-android.rules

Inside of this blank text file insert:

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

sudo chmod a+r /etc/udev/rules.d/51-android.rules

5) Install the repo:

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:

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:

repo sync

10) Compiling:

source build/envsetup.sh
Or:
. build/envsetup.sh

11) Issue:

lunch

12) Pick your poison.

13) Now issue:

make -j4

Build for Sony Ericsson device

1) Download sources for ARMv6

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:

source build/envsetup.sh
Or:
. build/envsetup.sh

4) Get your list of devices:

lunch

5) Pick your poison.

6) Now compile:

make -j4

- Or for a flashable zip:

make -j4 otapackage

NOTE

If you are running into issues such as:

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.