Here are my notes regarding building CyanogenMod 10 for the Barnes & Noble Nook Color. This is not a HOWTO, and most of this has already found its way to these build instructions.
Setup {#setup}
This was done in Mountain Lion using the stock Xcode and a few minimal tweaks.
As per the original AOSP instructions, I used a case-sensitive image:
hdiutil create -type SPARSE -fs ‘Case-sensitive Journaled HFS+’ -size 40g ~/android-jb-nook.dmg
hdiutil attach ~/android-jb-nook.dmg -mountpoint /Volumes/android
I then installed repo:
sudo mkdir -p /usr/local/bin
cd !$
sudo curl -O https://dl-ssl.google.com/dl/googlesource/git-repo/repo
sudo chmod +x repo
And got on with building:
cd /Volumes/android
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
# very long wait
tee system/.repo/local_manifest.xml
# paste http://pastebin.com/vuXbMz6D (used to be http://pastebin.com/vZFKdc8m) and hit Ctrl+D
# (there is now no need to run the extract_files script)
repo sync -j4
./setup_makefiles.sh
cd /Volumes/android/vendor/cm
./get-prebuilts
. build/envsetup.sh
export USE_CCACHE=1
export BUILD_MAC_SDK_EXPERIMENTAL=1
croot
brunch encore
# wait
And then transfer it to the Nook by using adb over Wi-Fi thusly:
adb connect 192.168.1.119
adb push out/target/product/encore/cm-10-20121014-UNOFFICIAL-encore.zip /sdcard
Other stuff of interest {#other-stuff-of-interest}
Deprecated way of obtaining proprietary binaries: {#deprecated-way-of-obtaining-proprietary-binaries}
cd system/device/bn/encore
# enable ADB debugging via network
adb connect _nookip_
./extract_files.sh
References: {#references}
Patches {#patches}
Besides grabbing this header file and saving it as
/usr/local/include/elf.h, you’ll probably want to install optipng
from Homebrew and set up an md5sum equivalent like so:
sudo tee /usr/local/bin/md5sum
#!/bin/bash
md5 -r $*
^D
chmod +x !$
Another thing you should do (but which depends on your particular
setup) is brew install gnu-sed and alias sed=gsed in your .bashrc.
Either that or go through the makefiles and replace every single
invocation of sed -i foo with sed -i '' foo, since sed is used
extensively in one-liners to update files like build.prop and whatnot,
and it will break your build.