[Galaxy S Plus I9001 Android Development] broodplank1337:
Compiling broodROM Jellybean

Info: ​

Building broodROM Jellybean yourself is extremely easy. in fact I made this automated shell script which makes everything even easier then it initially is.

The skill required for building it is really low, anyone can attempt if interested. You need a native linux installation though, (Or you use DevDistro, my linux mint based VMWARE VM that has everything you need)

In broodROM Jellybean I have chosen for my personal preferences in adding the desired content to the rom, the modifications may spread from /device to /vendor and /build. So performing the regular tasks as on a CM environment may screw up the whole ROM. You can look through my commits if you want to find out where all the thing are placed.

Note:

Since the sources are being changed all the time you might have different outputs, like at the moment its already called Release 4 but its still lacking the changes. for stable builds just download one of the builds I posted

Guide​

Step 1: Preparing your environment

I suggest either to use a dual boot installation (if you have windows installed) or use a VM (for example DevDistro), compiling a ROM with Cygwin would be the biggest joke on earth. and the most desperate one.

Anyways since Xistance already made a tutorial on how to build CM10 I'm not going to explain that all. you just need to follow his tutorial until the "Install repo" step and then stop.

Step 2: Downloading broodROM Jellybean

In your native linux session, open a terminal window and enter the following commands:

Make dir and change the directory to that dir

mkdir ~/broodROM
cd ~/broodROM

Initialize the broodROM manifest

repo init -u git://github.com/broodplank/android -b jellybean

Download the source:

repo sync

(if you want to make sure you will get no github timeout errors you should not use the -j option, I found out that using -j8 for example even with a 60mbs connection will give github timeout errors. Those errors are very annoying since you will have to restart the progress again and again until it's finally completed (with loads of errors...)

Step 3: Initialize, Build, Pack, Sign:

Because of the nifty shell script I made this process is as easy as starting the file and coming back after a several hours and its ready to flash in cwm. (at my current pc it takes about 2 hours for the total process)

First have a look in the build.sh file. because there are some options you can adjust.

build.sh config part:

# ---------------------------------------------------------
#
# Main Configuration
#
MAKEPARAM="" # Example: MAKEPARAM="-k"
JOBS=5 # CPU Cores + 1 (also hyperthreading)
INCLUDERECOVERY=1 # Includes recovery.img in zip (0/1)
#
# Odin Configuration
# All files besides system.img, boot.img, reovery.img and cache.img
# should be placed in build/broodrom/odin to be included if 1 (below)
#
BUILDODIN=1 # If 1, an odin package will be created
# If 0, all options below will be ignored
ODINADDMODEM=0 # Add amss.mbn (modem) to odin package
ODINADDBOOT=0 # Add adsp.mbn, dbl.mbn, osbl.mbn (bootloader)
ODINADDPARAM=0 # Add EMMCBOOT.MBN and partition.bin
#
# ---------------------------------------------------------

Info on vars:

Make Parameters (MAKEPARAM)

The parameters that can be given to the make command, this could be "-k" or "LOCAL_MODULE_TAGS:=optional" for example, it's your choice what to add. generally you don't need any parameter for it to complete the compiling, it builds 100% with "make"

Number of simultaneous jobs (JOBS)

This is the number of max jobs that your pc should do while compiling the rom, the recommended number is the count of your cpu cores + 1, which would make -j5 for a quad core without I7 Hyperthreading (with its -j9). On cpu's such as octa cores you may even pump this up higher. I think -j9 for an octa core is kinda below its max (I would use -j12 probably)

Include broodRecovery to the CWM package (INCLUDERECOVERY)

This includes the built broodRecovery with a 2.6 kernel so it's also safe for emmc brickable chip. It just adds it to the cwm zip and uses a different updater-script to match the changes.

Build an Odin package after creating a CWM zip (BUILDODIN)

This builds an Odin image from the output files in the ariesve dir, this is system.img, boot.img, recovery.img and the created cache.img (100mb empty cache)

Adds a modem to your Odin package (ODINADDMODEM)

This adds amss.mbn to the odin package, the file needs to be placed inside build/broodrom/odin and the value needs to be set to 1 in order to include it.

Adds the bootloader to your Odin package (ODINADDBOOT)

This adds adsp.mbn, dbl.mbn and osbl.mbn to the odin package, the files needs to be placed inside build/broodrom/odin and the value needs to be set to 1 in order to include it.

Adds the param partitions to your Odin package (ODINADDPARAM)

This adds EMMCBOOT.MBN and partition.bin to the odin package, the files needs to be placed inside build/broodrom/odin and the value needs to be set to 1 in order to include it.

[/b]Starting the script[/b]

After editing it for your personal needs just open the shell and enter this oneliner:

./build.sh

When you leave it it will create a fully working CWM zip and/or Odin package!

That's it!. Please do not distribute your broodROM Jellybean build anywhere else then this topic.