ezterry / manifest-gingerbread-DS

Dream/Sapphire android manifest for Gingerbread
26 stars 8 forks source link

EzGingerbread

Welcome to the EzGingerbread Android Manifest.

EzGingerbread is an Android Gingerbread build for the Dream/Sapphire systems. While the idea is to keep the rom simple (ie, very little more than an official AOSP gingerbread build) there are various additional features to both (a) speed up the device and (b) make using the device more efficient

Much thanks is required to the following:

Binary Distributions

For a binary distribution of ezGingerbread please see the related thread on XDA-Developers

http://forum.xda-developers.com/showthread.php?t=882356

This is also your first stop for talking with other users of the rom for any required solutions, customizations, and installation guides.

Getting Started

Issues current to the project are on the Issues page https://github.com/ezterry/manifest-gingerbread-DS/issues

The additional development information is also available on XDA-Developers

Patches may be submitted via email or pull requests.

The rest of this guide will describe how to build ezGingerbread on your own system

Developers Building Guide

Requirements x86 linux based computer Instructions assume amd64 running one of

Other environments and 32bit machines can build ezGingerbread but may require minor modifications

Preparing your computer

PART ONE: Packages Required

The following is based of the CyanogenMod wiki entry: http://wiki.cyanogenmod.com/index.php?title=Compile_CyanogenMod_for_Dream_%26_Sapphire

 Install using the package manager of your choice:

 For 32-bit & 64-bit systems:

 git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev
 squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev
 sun-java6-jdk pngcrush lzma

 For 64-bit only systems:

 g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev
 gcc-4.3-multilib  g++-4.3-multilib

 NOTE: gcc-4.3-multilib g++-4.3-multilib is no longer available for Ubuntu
 11.04 64-bit, but should still build without issue. (with the current
 version of gcc/g++ installed)

 Note: On Ubuntu 10.10, and variants, you need to enable the partner
 repository to install sun-java6-jdk:

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

PART TWO: preparing repo

A) make a directory for you android work example 'mkdir ~/android'

B) download repo into the newly created directory:

 curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/android/repo

C) Make repo executable

 chmod 0644 ~/android/repo

D) [optional] make a symlink to repo on your path; or move the binary to your path example:

 sudo ln -s ~/android/repo /usr/local/bin/repo

Getting the Source Code

A) Change directory into the new android directory

 cd ~/android

B) create a directory for ezGingerbread:

 mkdir ezGingerbread

C) cd ezGingerbread

D) init the git repo

 repo init -u git://github.com/ezterry/manifest-gingerbread-DS.git -b gingerbread

(It will ask for email/Name answer real or fake)

E) sync the code

 repo sync

F) This will take a while, please do not interrupt it.. even if it seems paused but network traffic continues

G) Copy sample build spec [Optional but required for squashed builds]

 cp .repo/manifests/samples/buildspec.mk ./

You can edit this buildspec.mk to add extra options to your builds

Proprietary Files

Next we need to copy the Proprietary Files from an existing build into yourlocal tree

A) Download a known good version of ezGingerbread (most recent or the approved one below) and name it sapphire_update.zip in the root of the ~/android/ezGingerbread directory

 curl http://sandbox.devnull.name/android/gingerbread/GINGERBREAD-DS-Beta-20110716.zip > sapphire_update.zip

B) Now extract proprietary files with the unzip-files.sh script

 cd device/htc/sapphire/
 ./unzip-files.sh
 cd ~/android/ezGingerbread

Note: if you have been asked to re-build the proprietary files, either because the autogenerated make script was updated, or a change in the files: run 'rm -rf vendor;repo sync;' before re-running the above.

Building the ezgb-2636 Kernel

Note this is an addition to the process as a pre-built kernel (same ones I use) are included in the general build thus if its your first time building I recommend skipping ahead to building, however here are the steps for building the ezgb kernel for those interested in kernel development

A) fetch the kernel code: 'device/htc/dream-sapphire/kernel/kernel_build.py fetch'

B) build the kernel 'device/htc/dream-sapphire/kernel/kernel_build.py build'

(fetch will always remove the entire kernel build directory and re-clone from github.. if you just wish to sync, run 'device/htc/dream-sapphire/kernel/kernel_build.py sync' followed by 'device/htc/dream-sapphire/kernel/kernel_build.py clean' to remove the build work directories and bring the git repo up todate w/o re-downloading the entire kernel source tree)

If you wish to modify or change the kernel branch, before building you can cd to ezgb-kernel/src and locally modify the git repository

Building ezGingerbread

A) run '. build/envsetup.sh'

B) run 'lunch' and select full_sapphire-userdebug (shortcuts you will find are 'lunch full_sapphire-userdebug'; or 'lunch 4' {prior to 2.3.7 it was 'lunch 3'})

C) run 'make -j<Number of CPU cores in your computer +1> otapackage' for example if you have a quad code CPU: 'make -j5 otapackage' a dual core is 'make -j3 otapackage'

 FYI: The -jN indicates the number of parallel threads make will run, but
 using -j5 I assure all 4 cores are at 100% utilization .. important as it
 can take 3-4h to build on a single core.

D) after you realize the build is done (ie fan on computer stopped working overtime) the flash-able image will be: ls out/target/product/sapphire/full_sapphire-ota-eng..zip

so 'ls -l out/target/product/sapphire/full_sapphire-ota-eng*zip'

The resulting image will be the EBI0/EBI1/2708+ anykernel installer

Flash this image, followed by GAPPS and any other addon you desire and use as normal.

Updating and other Tips

Now that you have the first build, here are some tips on keeping your codebase up to date

Simple resync:

 repo sync
 make clobber
 make -j<Number of CPU cores in your computer +1> otapackage

Full refresh (using previous repo download):

 cd ~/android/ezGingerbread
 rm -rf `ls`
 #now pick up with repo sync above; previous files will be re-used

Specific builds:

repo init has an '-m' tag (see 'repo help init') that can be used to specify a checkpoint for a specific build (run 'ls .repo/manifests/checkpoints/' for a list of these)

Note some checkpoints are using out of date git sources and may need some manual verification to re-build