[Gen8 General] wvl0:
Touché. I guess I'll just add what I learned then.

How to get your buildsystem up and running on Ubuntu Oneiric 64bit.

Before following this guide: http://wiki.cyanogenmod.com/index.php?title=Compile_CyanogenMod_for_Sholes

Do this first, just to avoid having to install individual packages later on:

add-apt-repository "deb http://archive.canonical.com/ maverick partner"

apt-get install bison build-essential curl flex g++-4.3-multilib gcc-4.3-multilib git-core g++-multilib gnupg gperf lib32ncurses5-dev lib32readline5-dev lib32z1-dev libc6-dev-i386 libesd0-dev libncurses5-dev libsdl1.2-dev libsdl-dev libwxgtk2.6-dev ncurses-dev pngcrush schedtool squashfs-tools sun-java6-jdk zip zlib1g-dev

I think I ran into compile issues with gcc-4.6, so I switched over to 4.4

rm /usr/bin/gcc
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
rm /usr/bin/g++
ln -s /usr/bin/g++-4.4 /usr/bin/g++

Then following this guide to get ADB running with your tablet:

http://xdaforums.com/archive/index.php/t-892847.html

Now you can follow the Sholes build guide.

You might run into compile issues. This bug report includes a fix:

http://code.google.com/p/cyanogenmod/issues/detail?id=2455

and in case you run into this one:

frameworks/base/core/java/android/widget/ListView.java:3631: warning 13: Method android.widget.ListView.getCheckItemIds: (at)Deprecated annotation and (at)deprecated doc tag do not match

Checking API: checkapi-last

(unknown): error 17: Field org.apache.http.protocol.HTTP.EXPECT_CONTINUE has changed value from "100-Continue" to "100-continue"​

Solve it by:

The error here is that someone needs to change the "100-continue" line on line 63 of file external/apache-http/src/org/apache/http/protocol/HTTP.java to "100-Continue"​

And there's this one too:

host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)
host SharedLib: libneo_cs (out/host/linux-x86/obj/lib/libneo_cs.so)
host C++: libutils <= frameworks/base/libs/utils/RefBase.cpp
frameworks/base/libs/utils/RefBase.cpp: In member function ‘void android::RefBase::weakref_type::trackMe(bool, bool)’:
frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1
make: *** Waiting for unfinished jobs....

Which can be fixed by edditing frameworks/base/libs/utils/Android.mk

Change the line:

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

To:

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive

This should give you a few files that possibly can be flashed to our tablets:

Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img

Happy Hacking.

[edit]

Here's the result, just in case anyone is brave enough to flash it.

http://www.megaupload.com/?d=7PCNF69Z

[/edit]

[edit 2]

I guess the next step would be editing the img files to order to add the necessary drivers.

You need YAFFS2 support to mount these files. YAFFS2 isn't included in this version of ubuntu however.

So get yaffs2:

git clone ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2

..and get a nice old kernel, considering the current version in git doesn't support 2.6.39 cleanly.

wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.13.tar.bz2

untar your kernel sources.

then follow the instructions included with YAFFS:

cd yaffs-dir
./patch-ker.sh c m linux-tree
complains that linux-tree/fs/yaffs2 already exists
rm -rf linuux-tree/fs/yaffs2
./patch-ker.sh c m linux-tree

Copy your /boot/config-XXX to the directory you unpacked your kernel tarball.

run a:

make oldconfig

Now add YAFFS to your config using

make menuconfig

(Filesystems->Miscellaneous filesystems->yaffs)

..compile and reboot ubuntu into your own kernel containing yaffs2 support

mount your img files with

mount -o loop -t yaffs2 filename mountpoint

[/edit 2]

[edit 3]

So apparently building cyanogenmod doesn't mean you're building a full rom, you have to do the kernel seperately (as far as I can tell ATM):

http://wiki.cyanogenmod.com/index.php?title=Building_Kernel_from_source

there was no /proc/config.gz, so i ripped the urkdroid kernel .config file instead

also getting an arm toolchain working seemed tedious, so I followed the advice in on the wiki and got one from:

http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3053

Had to tell the compile process where to find the arm compiler. Think I'm actually using one I downloaded from Ubuntu's repository instead of the one from the above link - oh well.

root@wvl-laptop:~/android/kernel/cm-kernel# make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -j`grep 'processor' /proc/cpuinfo | wc -l`

[/edit 3]