Related
As an exercise to figure out how all of this works, I'm currently trying to build an AOSP Cupcake image with the stock HTC kernel. From what Lox posted earlier, a lot still didn't work.. and I think this is right in line with issues we're finding overall. It's my starting point, and so I'm posting here about how I'm accomplishing things. Follow along if you'd like and post any issues you come up with.. or if you make it to the next step!
1. Get a stable development environment with the right tools. Ensure you follow all of the information on the Android Source [1] page to make sure you have the right versions of GCC and Java.
2. Follow the instructions here: http://github.com/kiall/cupcake_platform_vendor_htc_hero
Thanks to Lox for his original work on the platform vendor repo, and to kiall for spending time this weekend to help pare the process down to be as easy as possible. The more people we have building stock AOSP builds, the more eyes we have working on the hardware issue. Keep it up guys!
Thanks for the guide was looking for something similar this afternoon
I set same goal for myself, to build a AOSP Cupcake ROM from the source. I have a question, though. What exactly is the purpose of loxK's cupcake_platform_vendor_htc_hero repo? I suspect it has something to do with the boot process since there are some init files..
And thanks for the guide!
Samek said:
I set same goal for myself, to build a AOSP Cupcake ROM from the source. I have a question, though. What exactly is the purpose of loxK's cupcake_platform_vendor_htc_hero repo? I suspect it has something to do with the boot process since there are some init files..
And thanks for the guide!
Click to expand...
Click to collapse
That is the product description that describes the device specific stuff needed to build for the Hero. Like what proprietary files needs to be saved, device specific init files, etc etc.
Would you guys mind deleting your posts above.. so I can have a bit more space to work?
Known Issues
Make fails with "No module defined for the given PRODUCT_POLICY (android.policy_phone)."
Make the following change to build/tools/findleaves.sh: https://review.source.android.com/#patch,sidebyside,9284,1,tools/findleaves.sh
On point 6, I assume you mean BoardConfig.mk and not BuildConfig.mk, right?
Yep, sorry =)
By the way, if you want WLAN, you can compile the driver from the AOSP tree, something like this:
Code:
[email protected]:~/android/src/cupcake/system/wlan/ti/sta_dk_4_0_4_32$ make KERNEL_DIR=~/android/kernel/kernel_hero
~/android/src/cupcake is my AOSP dir.
~/android/kernel/kernel_hero is where my Hero kernel source is.
This drops a wlan.ko in the current dir that you can get into your update package, make sure you get the correct wpa_supplicant startup for it (check from the normal hero rom).
Bluetooth stuff is also in system/bluetooth dir in AOSP tree. I've not messed so much with it, don't use BT myself, but it looks like it's all in there to make it function.
Headset is probably just some keycodes in an XML file, it seems to register like normal keystrokes. There are some h2w_headset (or something like that) files on the release roms, have a look at those.
And also, thanks for this nice clean guide jnwhiteh, my old AOSP build dir was a mess. So this was nice way for me to clean it up and at the same time check your guide
My suggestion is that we keep this thread for discussions regardning it, and maybe keep an actual up to date guide on the wiki, what do you think?
I've forked loxK's vendor stuff on github, and am adding as much of this as I can.. still a WIP
http://github.com/kiall/cupcake_platform_vendor_htc_hero
Hopefully I'll be able to put as much as possible of this in there so we can build with far less steps!
Thanks jnwhiteh
Also ... if anyone wants commit on the repo (esp jnwhiteh!) let me know...
like the progress i see
keep it up you guys, and thanx for the great how-to, will try it out as soon as i got some sparetime
I've got this process down to...
1. Get a stable development environment with the right tools.
2. Create a .repo/local_manifest.xml with the following contents:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github" fetch="git://github.com/" />
<project path="vendor/htc/hero" name="kiall/cupcake_platform_vendor_htc_hero" revision="refs/heads/master" remote="github" />
</manifest>
3. repo sync
4. cd build && git cherry-pick 1e0847c2fcbe1b95464f32a719d2b9e620d1e6ec && git cherry-pick 6ea3b8856d656752c0310ca237ed99e7451be83b && cd ../system/core/ && git cherry-pick 2a63bb7abf1b27a7a2e8fd5951d77f71a2f290d4 && cd ../..
5. cd vendor/htc/hero/ && ./extract-files.sh && cd ../..
6. Download a recovery image from here and save it as recovery.img (I'll likely remove this part..)
7. make -j4 otapackage
8. .. Apply the update.zip generated ... no changes necessary
I'll update the github repo with this in a bit
I've pushed my changes to http://github.com/kiall/cupcake_platform_vendor_htc_hero
There is an updated readme / instructions at that page!
Right now - this is 99.9% jnwhiteh's stuff, just slightly more "automated"..
Thanks jnwhiteh!
Great work guys. At least some other guys to work on Hero developpement.
May I suggest a central git repo ? I can add you as collaborators to my git if you wish so you could submit your own patches with your names.
Yep, that would work for me, we'll see what kiall wants to do =)
jnwhiteh said:
Yep, that would work for me, we'll see what kiall wants to do =)
Click to expand...
Click to collapse
works for me aswell - only thing is, I've got *loads* of changes in my fork.. its git after all... we can pull and push each others changes pretty easy!
So, the issues that we're having:
Headphone:
Everything appears to start fine and the hardware/software properly detects the plugging in and unplugging of headphones, but it doesn't actually change the sound output. It says, instead, that it's ignoring the switch:
Camera:
Force close on the camera application
Bluetooth:
SIGSEGV
Trackball
Does not work
Actually, the issue with the headphone isn't due to some missing parts in your builds : http://code.google.com/p/android/issues/detail?id=2534
That's using the HTC heaphone_adapter_, which we don't have on the Hero. We can certainly try to patch AOSP and check it.. but the G1 uses an external usb adapter, and that's whats been reported as broken. One person there says they have a Sprint HTC Hero, but again...
Thanks!
Oups, I had no idea that an adapter was needed on some HTC device, my bad...
Np =) It still might be related, but I doubt it.
5/6 <DEV> [WIP] {ROM} 'AOSEP' Community Development "Build your own cm7/cm9/?"
AOSEP V2.5
Android Open Source Education ProjectSee post #191 for updated scripts
By following these instructions and/or using this set of files, you
proceed at your own risk. Under no circumstances would you hold
dizgustipated or anyone, except yourself, responsible for any negative consequences.[/COLOR][/I][/B]
################
***********************
################
I came across a "new" way of thinking over on a different thread, and have decided to adopt it.
I will still be developing and releasing roms,
but
Basically, I want to get you more involved in developing.
Allow you the chance to learn, contribute, and take pride in your accomplishments.
Possibly further the development of android, and see a whole new world open up to you.
That's why and how I got into developing. In was very curious, and unhappy with current rooms and update frequency. Or just with features available.
see post 2 for more info on the philosophy
I'd like to share a little script I found, and modified (with permission, and is still a work in progress) to automate the sync/build/package cycle, and to push the XDA community to get involved on a deeper level.
This whole process is designed for the latest stable Ubuntu (10.04/11.10), though it might work with Debian as well (or even other distros, if you have all the prerequisites already installed).
Alternatively, on tbe last post, you will find a handy script that gives a good shot at automating the whole prerequisites ordeal.
Place it in your root directory, navigate to it in terminal and type
Code:
Code:
sudo ~/installer.sh
Any brave souls willing to try?
I know you're impatient to get started, this script also contains a little guide, so check it out. I haven't had much opportunity to test this script because it takes so much time to start from scratch, so please help me out!
As of now, I have made many full builds this way, as well as a few incremental updates. Feel free to modify the MIT-licensed script. There are two time-consuming steps (4 and 6), so I'd recommend planning accordingly. Also make sure you have plenty of space on your disk; my working directory currently contains about 23GB.
0. I prefer you to start from scratch, (we want a clean start) as follows:
1. Make a folder for all your Android-building needs.
In your home directory, make a folder called "android"
Code:
Code:
mkdir android
and drop the text file in there, (in the new "android" directory, named Makefile (with no extension).
(Alternatively, you can open the make file, and edit the repo init to your preferred sgt7 repo sourcecode. Also, if you change repo address, you will need to make Bacon, instead of make package.)
Then open your favorite terminal app and navigate to that folder.
Code:
Code:
cd android
2. If you don't have any of the tools installed yet, and you're on Ubuntu, do this:
Code:
Code:
sudo apt-get install build-essential
sudo make apt
3. Initialize your working directory:
Code:
Code:
make init
4. Fetch the source code:
Code:
Code:
make sync
nb: It might take a while to fetch ~5.7GB of code off the Internet, depending on your connection. It might also hang, in which case you gotta stop the process, and retry (make sync) until you have everything. When you retry, you might want to do `make sync J=4` to reduce the concurrency. If it then complains about corrupt repositories ("not a repository"), you must delete the corrupt repositories and retry. You'd know it's frozen if "Fetching projects" does not progress for a minute or so.
(after a sync, seeing:
if ! grep -q "<stddef.h>" /home/diz/android/system/external/mesa3d/src/glsl/linker.cpp; then \
sed -i '1i #include <stddef.h>' /home/diz/android/system/external/mesa3d/src/glsl/linker.cpp; \
fi
is normal, it is patching so you can build)
5. (This step is done for you in the sync)
Alternatively, if you are looking to get deeper into dev-ing, you can back up the files, boot into CM7 and do the following to start making your own device files.
Plug in your SGT7 via USB, boot into CM7/BOCA RC1, and make sure debugging is enabled... to get some vendor-specific files (proprietary bits from Samsung and prebuilt bits from CyanogenMod):
Code:*
Code:
make vendor
*This will overwrite my device files, if you do not wish to do so, move on to the next step.
6
Build that stuff:
Code:
Code:
make build
This takes a while, depending on your hardware... perhaps a few hours. It's best to do this step overnight.
*if you error out in the build on: android_reboot.c, download THIS and replace the file already in android/system/system/core/licutils(android_reboot.c)
7. Save a snapshot for later:
Code:
Code:
make snapshot
This is actually required for the next step. But don't worry: snapshots are incremental, so they don't use too much space; and it's safe to remove any snapshot except "current".
8a. Package it up:
Code:
Code:
make package CLEAN=1
Check the snapshots directory for your shiny new update.zip
8b.Or simply make Bacon.
Code:
make bacon
9. It's even easier to keep your source up-to-date:
Code:
Code:
make sync
make build
make snapshot
make package CLEAN=1
(unsigned)
or
Code:
make package CLEAN=1 SIGN=1
(signed)
Or
Code:
make bacon
This makes a GSM P-1000 flashable zip, you can easily exchange the zImage for a L or N kernel, in the zip, & then flash in recovery after clearing user data, dalvic cache and cache then flash ICS gapps
10.
Be joy full and post a screen shot or a build.
11.
Continue developing/contributing to the android community
... and don't forget to thank FatTire and inportb for allowing me to alter and post this script, which made this possible
5/6
Reserved for instructions on how to use different sourcecodes
And things of that nature.
What works if you start building here:
The beginnings of the stuff that makes it BOCA, which include:
auto beagleboard patch
auto cherry pick of cyanogen vold that allows the use of the 4th vold partition (this has been merged)
A bit more HW accel
better video playback in YouTube and your movie files.
better quadrant score
better linpack score
address space layout randomization, as part of the install
WIFI (but takes a long time for the first connection)
Bluetooth
GPS
Accelerometer
Gyroscope
Light
Magnetic field
Orientation
Battery stats
Sound and sound recording
root
a bit of HW acceloration
better video playback (encode/decode)
recent apps button
Auto rotation (for launcher rotation, enable it in CM launcher)
Gallery
Flash
DSP Manager!!!
USB pc trickle charge
Market
Voodoo Sound
sdcard mounts are: internal (sdcard) and emmc (external sd)
USB PC mounting
NOT WORKING SO FAR:
Phone?
Things may/may not be added at some point in the future. You should have no expectations that they will. Anyone who asks for an ETA for something or other gets collectively stoned by the crowd.
Hopefully this project will push some to help fix a few things, as all that is on the NOT WORKING list is NOT WORKING in all and any SGT7 CM9 ports
DO NOT POST BUGS!!!!
ONLY POST "FIXES, OR THINGS THAT HELP FURTHER DEVELOPMENT
THANKS:
JT1134
Fattire
inportb
Spacemoose1
Teknomancer
Github
AOSP
Google (both its search engine and os)
Especially all the sgt7 tab developers
& all android Developers
This list could go on forever!
Diz, you did it again. Cheers.
Sent from my GT-P1000 using xda premium
massive thread update
REMEMBER, this is still a WIP
We are so lucky to have you here diz. I will send my fourth donation to you at the end of this month! Thank you for educating us so we can learn how to contribute. I would not be surprised if this will be adopted by the whole XDA-community.
EDIT: Happy birthday!
EDIT 2: Is this related to the repo problem at the top of post #1? http://pastebin.com/Hb5rAUFr
Sent from my GT-P1000 using xda premium
stekarson said:
EDIT 2: Is this related to the repo problem at the top of post #1? http://pastebin.com/Hb5rAUFr
Sent from my GT-P1000 using xda premium
Click to expand...
Click to collapse
EDIT
open the makefile
look for these lines:
Code:
else
cd ${SYSTEM}; repo init -u git://github.com/CyanogenMod/android.git -b ics
endif
curl http://pastebin.com/raw.php?i=AGP6wn42 > ${SYSTEM}/.repo/local_manifest.xml
## removes old files and allows init to start from scratch
change it to:
Code:
cd ${SYSTEM}; repo init -u git://github.com/CyanogenMod/android.git -b ics
endif
## removes old files and allows init to start from scratch
then go to android folder, press Ctrl H (to see all the files) and delete everything except the make file.
Then:
in your terminal, in the android directory:
Code:
make init
make sync
Now get the needed files, from the location on the top of the OP.
Place them.
THEN:
Code:
make build
make snapshot
make package CLEAN=1
As soon as its second party verified, I'll update op
From http://review.cyanogenmod.com/p/CyanogenMod/android_system_vold
* branch refs/changes/77/11277/1 -> FETCH_HEAD
# Not currently on any branch.
nothing to commit (working directory clean)
make: *** [sync] Error 1
That just means it has been merged, there is no longer a need to cherry pick it.
Ill take the code out.
This does not ruin your sync.
simple proceed to make build
http://
www.teamovercome.net/common/xDA-Badge-ProudUser.png[/
IMG][/URL]
[B][url]www.teamovercome.net[/
url][/B]: [I][COLOR="Red"]Home of The Overcome ROM
Overcome Kernel ![/COLOR][/I][/LEFT]
op updated with new directions and a new makefile.
this way we can sync pure cm9 source, and add the vendor and device files of our choice.
And we also don't ever have to worry about "make sync" conflicting with any of the device specific files and causing a sync error.
Although, at this time, I do recommend the files listed in the instructions to get the results implied in post #3
update 1/9
uploaded new makefile:
removed cherry pick vold, it was merged, so no need to clutter the script and get empty repo errors.
First of all thanks for your great work. Im trying to use your guide but got stuck at the "make init" command. If I use this command I get the following error:
Code:
rm /home/lesley/android/sign.tgz /home/lesley/android/update-lite.tgz
if ! grep -q "0x2080" /home/lesley/android/.android/adb_usb.ini; then echo 0x2080 >> /home/lesley/android/.android/adb_usb.ini; fi
cd /home/lesley/android/system; repo init -u git://github.com/CyanogenMod/android.git -b ics
/bin/sh: repo: Permission denied
make: *** [init] Error 126
Nevermind deleted all the folders in the android folder except the make file. After that I did "make init" and it run great.
The make file chmods the bin folder,
Sometimes a reboot is needed for it to take effect.
But sometimes you will still get an issue with bin permissions or paths
Then try this in terminal in the same directory you use the make init command.
Code:
PATH="$HOME/bin:$PATH"
Then
Make build as usual
dizgustipated said:
The make file chmods the bin folder,
Sometimes a reboot is needed for it to take effect.
But sometimes you will still get an issue with bin permissions or paths
Try his in terminal in the same directory you use the make init command.
Code:
PATH="$HOME/bin:$PATH"
Click to expand...
Click to collapse
Thanks, I deleted the folders/files in the android directory except the make file. After that it worked great it's now syncing.
Thank you so much diz !
Making my own CM9 is so damn exciting !!
looking at the instructions , looks easy
Thanks again .
To do list on 15th Jan ( after exam )
Make my own CM9
Diz you are the best !!
Oh btw sorry for this useless post !
I'm stuck at step 5.. how can I download these files....
And what files should be in these folders
Sent from my LG-P999 using Tapatalk
---------- Post added at 05:44 PM ---------- Previous post was at 05:29 PM ----------
tried to follow from step 5 and got this....
http://pastebin.com/vRw7U0Zq
Edit: downloaded whole commit from your git. Included is android folder, device_Samsung_galaxytab folder and Samsung/galaxytab folder
Using cdesi cm9 folder as reference, copied contents in device_Samsung_galaxytab folder. Into Samsung/galaxytab folder then.put that into device folder under android/system then ran step 6b and now it seems to be building since.I have a out folder atm
Edit 2: got same error again. Can you be more specific in your instructions?
Just for p1000 tabs, right? Or for p1010 too?
samcortez said:
Just for p1000 tabs, right? Or for p1010 too?
Click to expand...
Click to collapse
There wont.be support for wifi only.tab......
Sent from my LG-P999 using Tapatalk
samcortez said:
Just for p1000 tabs, right? Or for p1010 too?
Click to expand...
Click to collapse
as the title states, GSM/CDMA?
your device is basically a different device, altogether.
Does your device have cm7 yet?
ayysir said:
tried to follow from step 5 and got this....
http://pastebin.com/vRw7U0Zq
Click to expand...
Click to collapse
yeah thats all part of the original repo error, that i will be fixing today.
But in the mean-time,
navigate to android/system/vendor/cm
open: vendorsetup.sh
add:
add_lunch_combo cm_galaxytab-userdebug
close and save
now make build again
dizgustipated said:
as the title states, GSM/CDMA?
your device is basically a different device, altogether.
Does your device have cm7 yet?
yeah thats all part of the original repo error, that i will be fixing today.
But in the mean-time,
navigate to android/system/vendor/cm
open: vendorsetup.sh
add:
add_lunch_combo cm_galaxytab-userdebug
close and save
now make build again
Click to expand...
Click to collapse
What about galaxytab folder
Sent from my LG-P999 using Tapatalk
The links at step 5 is 404.
[Guide] Compiling your own nightly kernels Quark/Blechd0se & Essential Git commands
Well Hello again another day, another do it yourself guide for the people like me with ORD
Search it up to see what am on about
Today there will be two guides they are very easy I promise - One on how to compile just the kernel image(zImage) and the other on how to use some common git commands.
Kernel Guide
1. Downloading the sources & packages needed :
Before we start we need to make sure you have the necessary packages required for you to compile the kernel.
If you already have an android build environment setup then we are good to go
If not then you can either use my guide and get an android build setup going just incase you want to compile your own nightly later on or you can just download the necessary packages required for compiling the kernel.
Packages needed - git-core, gnupg, flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev, build-essential, zip, curl, libncurses5-dev, zlib1g-dev, ia32-libs, lib32z1-dev, lib32ncurses5-dev, gcc-multilib, g++-multilib.
So for ubuntu based system it will be -
$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib
For arch linux -
$ sudo yaourt git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib
Most of the packages are found in the AUR repository so you need a frontend to AUR like yaourt.
Once you have the packages installed we are going to clone the kernel tree into our computer.
I feel it's best you make a new directory for which you will use to compile kernels.
Once you are in your directory of choice we can now download the kernel sources
For Quarx kernel - $ git clone https://github.com/Quarx2k/jordan-kernel
For Blechd0se kernel - $ git clone https://github.com/Blechd0se/jordan-kernel
One thing to note is after the git clone command you can name the folder in which the sources will be saved to.
For example git clone https://github.com/Blechd0se/jordan-kernel blechd0se. This will renamed the folder to Blechd0se which the kernel sources will be saved to instead of the default name of jordan-kernel.
2. Downloading the toolchain/s
If you have one of the rom sources (CM10, SB, CNA) synced up then you can just point the cross compile to that directory.
$ git clone https://github.com/Quarx2k/platform_prebuilt
Here you have a choice of two toolchains either the default google one (4.4.3) or the recently added linaro toolchain(4.5.4) by Quarx
3. Setting up configuration
Now cd into the kernel folder so for me -
$ cd ~/Kernel/Blech0se
Then run the follwing commands -
$ export ARCH=arm
$ export CROSS_COMPILE=~/<location of toolchain>
- For the linaro toolchain it will be export CROSS_COMPILE=~/Kernel/arm-eabi-4.5.4-linaro/bin/arm-eabi-
- For google's iw will be export CROSS_COMPILE=~/Kernel/arm-eabi-4.4.3/bin/arm-eabi-
make mapphone_defconfig
If you are compiling Blechd0se kernel then you can choose what process schedulers you want BFS or CFS the default is CFS.
To enable BFQ you need to do the following things
make menuconfig this will bring up a menu which you can use to customise the kernel if you know what you are doing this can also be used on Quarx's the difference is you don't have as much choice as in Blechd0se's.
Scroll down and select enable block layer then IO schedulers the scroll down to BFS and type "Y" a star will appear in the checkbox showing it will use BFS now.
Once that's done you can compile own kernel image using the make command
make -jx <maximum number of jobs>
Replace the x with the amount of jobs you want. I usually use -j8 but you can use higher but it can slow down you PC.
Read this post for more info on effectively using make -jx
You kernel will be finished into a couple of minutes to hours depending on the amount of jobs you used and how many cores you have in your processor.
Now we need to package the kernel into a zip to flash recovery.
I recommend you download one of Blechd0se's zips and modify it.
You need to delete the config folder if you don't want your overclock settings getting overwritten and also you can modify the updater script found in META-INF/com/google/android.
Then replace the zImage in the folder system/2ndboot/ with your new one.
You can find your zImage into the arch/arm/boot folder in your kernel source folder.
4. Updating and rebuilding -
To update your sources with the latest changes you can use the git pull origin command from the kernel source folder.
So for me it will be -
$ cd ~/Kernel/Blechd0se
$ git pull origin
Once it's being updated we need to first use
$ make clean
$ export ARCH=arm
$ export CROSS_COMPILE=~/<location of toolchain>
$ make mapphone_defconfig
$ make -j8
Credits & Thanks-
To XDA as always for being an awesome resource and playground
To Google for all they awesomeness
To Blechd0se for being an awesome kernel dev
To Quarx for his amazing work on the kernel so far
To thewadegeek for his guide which I have adapted this from Thank him here
Git Commands
The following git commands are the essential ones are feel that are needed to be able to use git effectively allowing you to help contribute back to the community...... With these commands you can help with things such as rom translation, bug fixes etc......
Commands -
1. git clone
This is used to clone a remote repository like here onto your local drive allowing you to edit/add files.
e.g
$ git clone https://github.com/Quarx2k/android_device_moto_jordan-common
This will clone the repository android_device_moto_jordan-common into a new folder called android_device_moto_jordan-common but if you want the folder to be called something else just add the name after the url like so....
$ git clone https://github.com/Quarx2k/android_device_moto_jordan-common Defy-common
Additionally, you can also specify downloading one branch by using the -b command you can also still has a custom name for the folder by putting the name at the end of the branch name. E.g
$ git clone https://github.com/Quarx2k/android_device_moto_jordan-common -b jb_2ndboot Defy-common
2. git
HAHA again
Last one for a party
I just finished syncing CM10 sources, I'll do this one too now
Thanks, you rock!
mark,thanks
Sent from my MB526 using xda premium
Thank you Kayant for this nice guide Hope to see some additional dev's soon
Maybe you can add how to push a commit
And if you only want to rebuild modified modules you can simply run the "mmm" command, safes time
Btw: BFQ and CFQ are I/O-Scheulders, CFS and BFS are process schedulers
When I used to have defy (good old days) this was something I want to share with everyone but I couldn't because I lost my defy when I have doing some progress in custom kernel. Then I lost track of this great community and stop to make things for defy. It's great to see this kind of tutorials for help other users as well. As always, very thanks kayant!!!
Enviado desde mi MT27i usando Tapatalk 2
Thought I might add. on that make -jx command, x should be your max threads + 1 -- eg, I have a quad core w\o hyper threading so I use 5.
use the "nproc" command to find out how many threads you have
the make jx is different than sync jx, where sync jx is how many files you'll concurrently download. I figure most of us know that, but I figured I'd make the distinction.
number of cores + 1 is recommended on a lot of faqs; your results may vary, but using j5 (my recommend setting) versus not setting it (j4 by default, i think -- needs fact checking) speeds up compile time by 20-30 minutes (Quarx CM 10). using too many threads will slow you down and using too little is inefficient and thus slower.
Thank you very much for your informative guides Kayant always learn something from it and really appreciate it:thumbup:
Sent from my MB526 using xda premium
skeevy420 said:
Thought I might add. on that make -jx command, x should be your max threads + 1 -- eg, I have a quad core w\o hyper threading so I use 5.
use the "nproc" command to find out how many threads you have
the make jx is different than sync jx, where sync jx is how many files you'll concurrently download. I figure most of us know that, but I figured I'd make the distinction.
number of cores + 1 is recommended on a lot of faqs; your results may vary, but using j5 (my recommend setting) versus not setting it (j4 by default, i think -- needs fact checking) speeds up compile time by 20-30 minutes (Quarx CM 10). using too many threads will slow you down and using too little is inefficient and thus slower.
Click to expand...
Click to collapse
Thanks for the infromative post as always
In this situation I feel it doesn't matter too much since it takes minutes to compile just the kernel even on my core 2 duo but I will add your hint your post to the OP. Thanks again ^_^
Kayant said:
Thanks for the infromative post as always
In this situation I feel it doesn't matter too much since it takes minutes to compile just the kernel even on my core 2 duo but I will add your hint your post to the OP. Thanks again ^_^
Click to expand...
Click to collapse
You're completely right about the kernel and time -- but for full rom builds and a Funtoo "emerge -uDNav world" it helps. I just saw that j8 and thought "My dual core Athlon 64 would hate me if I did that".
Great guide as always
That does it.
I'm studying Linux in earnest. Enough of this dabbling around the edges... :cyclops:
renoob said:
That does it.
I'm studying Linux in earnest. Enough of this dabbling around the edges... :cyclops:
Click to expand...
Click to collapse
That's the best thing I ever did. I hated XP, wish it was more like Win2k -- I'd gladly pay for Win8 if it had a 2kPro interface. Win2k was awesome, and the only Windows OS I'll give praise to.
I recommend starting out with Ubuntu or Mint (Mint based on Ubuntu, not Debian). There's better support for Ubuntu and distros based on Ubuntu. After about 4-6 months, once you start learning apt, the command line (bash), and some Linux basics; switch to Pure Debian or Mint Debian -- much better than Ubuntu, but not as user friendly (or AptoSid\Sidux -- they're based on Debian Unstable (Sid) -- which is actually pretty stable, ya just gotta be able to fix it if it breaks). I've found that the easiest way to learn it is to just do it. Reading up on it only goes so far without putting it to practice.
After a year or so, try out Gentoo\Funtoo and you'll learn a lot about Linux -- but those distros are not for the faint hearted and require time and dedication to get a GOOD working environment. Once you have it how you like it, it WILL be the fastest desktop you can use with the fastest compile time -- well, WILL should be shall or can. I'm about to turn my old compile PC into a generic x64 Funtoo box (one of my 64's is AMD, the other Intel). A generic build will allow me to use the same base system on both PC's and allow me to rebuild them to they're specific architecture after its all set up. It took me 3 tries to get a good Gentoo box running -- miss one step in that install guide and you can be up that creek.
11 years on Linux now, 9 years with only maybe 25 boots into Windows -- past 10-15 were to flash an sbf and to reboot back to Linux -- so glad I stumbled across the sbf_flash Linux tool. Last time I booted Windows was after installing Win7 and its drivers....seriously, all I've done is installed it and the drivers and haven't booted it up since. I've used Red Had, Fedora, Ubuntu, Arch, Mint, Debian, Suse, Mandrake, Gentoo, Funtoo, Sabiyon, Aptosid, Sidux -- after using all of them, I find that I prefer Debian\based systems (not Ubuntu\based systems -- I actually don't like Ubuntu, well, since 0910 -- it was a good distro up until then imho). And I like Funtoo for the source based distros -- I've messed around with other source based ones (Sorcerer, Arch) and like Futnoo over Gentoo and the rest in the end.
//You might already know enough Linux, I'm just posting what I think is the easiest way to start using and, therefore, leaning Linux.
///I'm also surprised that there isn't an XDA based Linux distro -- designed by XDA members to make it easier to get into Linux\rom hacking
rom compiling with all the tools we all need an apt-get away.
EDIT
I've been meaning to ask, Do any of you programmers have any good books to recommend? I'm finding myself of the border of power user and programmer and need to start learning some code skills to cross over. I'd like to learn something C, Python3, and Java; but there are a ton of books on them and I'd like a recommendation from someone HERE who knows a bit of programming and what they'd use to learn nowadays. I'm sure I'm not the only one with that question either. Something C and Java for Android, Python3 for Linux (maybe Android if that project has gained some ground). Thanks.
/Bolded that so it sticks out.
@skeevy
I use Arch Linux ATM and a love it but yh I have read about gentoo and how you can build it to your system.... Once I get a new PC in the near future hopefully very soon am going to try that and freebsd... Thanks for the advice
Let's Go ^_^
Kayant said:
@skeevy
I use Arch Linux ATM and a love it but yh I have read about gentoo and how you can build it to your system.... Once I get a new PC in the near future hopefully very soon am going to try that and freebsd... Thanks for the advice
Let's Go ^_^
Click to expand...
Click to collapse
Never tried BSD. Arch was OK, but I started on Debian, jumped around different ones for a few years, stuck with Ubuntu 7.10 for 6 months, hated their update, and been on Debian or Mint Debian ever since; testing or Sid usually -- I transcode my DVD's and stable has older codecs . Arch was a year ago for a month -- if I gave it more of a chance I'd probably like it as much as I do Debian. I've used almost all major distros, desktop environments, window managers, etc; but I always find myself back with Debian\XFCE -- it just works for me.
If you didn't know, Debian has a freeBSD based distro as well. That'll make it easy to try out BSD in an Debian style environment.
Hoped I could say the same. School is a real Linux killer.
Even for software that has a linux port, they only give us the installer/license for the Windows version. :/
PLC and robotics software tend to only run on Windows anyhow. As 3D drawing.
Always have the need to change my partition setup Linux-Windows after installing such an application on my laptop.
I am now using Ubuntu for 3 years. I like the look and don't want to spend time on my PC installation so it's good for me . I can imagine that it's different if you really want to get to know Linux or Unix.
What I hear most for learning to program (me not so much) is just try to do what you plan to do with it(an android application, ...) and searching how to get there. Don't know many that read books. Except for guidelines for memory management and security for example later on.
I've been programming for nearly 20 years. Only had a few classes in the basics. The rest has been trial by fire. Use Google a lot to figure out how to do stuff, but I can't really TALK about code as I don't know what to call some of the things I do. I highly recommend taking formal classes and reading books.
Sent from my SPH-L900 using xda premium
I compiled my own kernels on my phone and it's running
ps:My english is not so good:crying:
labsin said:
Hoped I could say the same. School is a real Linux killer.
Even for software that has a linux port, they only give us the installer/license for the Windows version. :/
PLC and robotics software tend to only run on Windows anyhow. As 3D drawing.
Always have the need to change my partition setup Linux-Windows after installing such an application on my laptop.
I am now using Ubuntu for 3 years. I like the look and don't want to spend time on my PC installation so it's good for me . I can imagine that it's different if you really want to get to know Linux or Unix.
What I hear most for learning to program (me not so much) is just try to do what you plan to do with it(an android application, ...) and searching how to get there. Don't know many that read books. Except for guidelines for memory management and security for example later on.
Click to expand...
Click to collapse
That's what I've been doing up until now, but Google only helps so much -- I can do a search on learning Java and come up with 1000's of faqs, guides, ect -- weather its worth reading or full of it is unknown too me since. A good book can be worth its weight in gold. With a bad internet faq, ya might as well change the faq's a to a u and bend over, cause that's what you're doing to yourself by learning from bad sources.
While I don't know what apps you're using, I know that some apps have a license isn't limited to the platform -- the Win License works on Linux\Mac\Unix as well. Or just use the Lin version and not feel guilty since you have the Win license .
Ubuntu was great until it started getting too bloated for my tastes -- and they're XFCE editions usually use much more resources than doing the same thing with Pure Debian installed from the command line up. On compile\dev boxes you want as little running as possible for obvious reasons. Not to mention the UI can greatly change from release to release with Ubuntu. Buntu was my 2nd Linux to run; Debian first -- Learned more on Ubuntu then went back to Debian. Pure Debian can be daunting if its your first distro.
Malcont3nt said:
I've been programming for nearly 20 years. Only had a few classes in the basics. The rest has been trial by fire. Use Google a lot to figure out how to do stuff, but I can't really TALK about code as I don't know what to call some of the things I do. I highly recommend taking formal classes and reading books.
Sent from my SPH-L900 using xda premium
Click to expand...
Click to collapse
Thanks. I'd be taking classes if I could. I don't qualify for any grants and I don't want to go for a loan because of the uncertainty of being able to pay it off.
Something I'm seriously thinking about doing is this -- free online classes from MIT. That has to be good information.
@All
I'm thinking of starting a generic x64 Funtoo box and get it to where XFCE is working, Nvidia graphics (all I buy is Nvidia Cards ), Android SDK is up and running, and all the required scripts, apps, udev rules, etc are already installed set up (repo, sbf_flash, apktool, etc). Then upload that as a zip so all you'd have to do is extract the zip to a blank partition, edit its fstab, update grub, set the build environment variables to your own, reboot, set users\passwords, and recompile the system.
I'm already going to do all of that except for the upload as a zip part -- I have 2 64 bit pc's -- one amd, one intel -- so I have to build it as a generic 64 in order to use the same system on both boxes. I was just wondering if anyone else would be interested in something like that once its all done.
---------- Post added at 09:22 AM ---------- Previous post was at 08:25 AM ----------
I normally don't post my PM's, but the last half on this one I sent out might be useful to some of you looking for the essential git commands
I have a couple of good sites I use for github reference. Here & here
Typing "man git" in the command line has helped me a lot as well. I've learned most of my Linux knowledge by typing "man name_of_program" and Googling what it said that I didn't fully understand -- especially with video encoding, ffmpeg and mplayer are some long reads, so is git. Git also has a "git help name_of_git_command" program that's helpful as well.
There's also a few threads on the Defy forums dedicated to helping out people trying to do exactly what you're wanting to do. The nightly builds link is a really good place to start with -- contains pretty much all you need to know to be able to compile roms. Kayant's an awesome dude and really helpful. His threads are great for users wanting to learn and\or contribute back.
[Guide] Compile your own nightly builds - AOKP, CM10, CM9, CNA, Slim Bean, P.A.C
[Guide] Compiling your own nightly kernels Quark/Blechd0se & Essential Git commands
I learned git from forums like the ones above, those reference sites and man pages\help program. Took about a week of trial and error before I got the hang of it. I still have a hard time remembering to start a branch before editing crap after the initial sync .
Honestly, the hardest thing to do, in regards to PA, is adding in FM. Almost everything else Defy\Bravo related just cherry picks right in with no\ very little and easy to fix conflicts. The FM commits are old and those files have changed a lot from when Quarx & Maniac did the patches -- especially between Quarx's and PA's current.
Cherry picking is pretty easy, navigate to the base directory -- like frameworks/base -- then its "git cherry-pick a_ton_of_hex" and it'll either pick right in or you have conflicts. If I get conflicts, I use the app "git-cola" ran from command line in the /frameworks/base directory; and its a gui app that'll list what files have conflicts (and a lot more) -- I then open up the conflicting file with tkdiff (or whatever diff you like) and fix the conflicts, "git commit -a" (saves changes), and push to github. If you don't get conflicts, just commit and push. Btw, the ton of hex is all the hex code next to the commit on github.com, review.cyanogen-mod.com.
Making changes on your own is done simply be navigaitng to the base directory -- frameworks/base for the android_frameworks_base repo, device/moto/mb520 for the Bravo repo -- and opening a terminal, starting or pointing to a branch (git checkout -b name_of_new_branch is a good command to run before you do anything -- checkout -b n_o_b creates a new branch and places you on it), then do what ever changes you need to do, then do "git commit -a", enter a description, and push. Once you have different brances going, you can use "git checkout name_of_branch" to switch between them. Read up on branching, cause theres a lot to it.
There's a lot of different ways to do git, and my way might not work for you.
Good luck and have fun reading -- you'll be doing a lot of it :silly:
This is DIY
If you are just looking for a well done and stable PA download, you are probably the wrong place. Then go and grab xzzz9097s build, it's good!
If you are impatient and know what to do, just leave and do the init/sync/build.
For anyone wanting to build her/his own PA without any "extras", go ahead and read on.
We already have a very easy full guide to compile CM10 for HOX. I was looking for the same for ParanoidAndroid, but did not find a 100% guide, meaning I had to do it myself.
To be fair, I only needed to do 1% as you will see after the usual disclaimer. I hope this little guide will be enough to make anyone complile their own PA for the HOX.
The usual disclaimer:
I am no developer!
I just happen to be able to read and understand instructions. I am persistent and know how to search for answers.
With luck and patience I ended up with a 184MB zip, that installs and runs just fine on my HOX.
I pass this guide as it is now, no guarantee no returns. I will probably not be able to help much here, time is very limited, so no commitments for support from me.
If it breaks you device, you broke it all by yourself
I am no developer!
gokussjx made the general guide, explaining how to port Paranoid Android 3.xx to different devices.
It works 99% for Endeavoru. The last 1% takes some effort to get right.
For me, not knowing what I am doing, it took a lot of trial and error, but eventually, - I made it and might as well pass it on here.
I'm in debt to all the people helping out in that thread. Huge thanks!
To get started, just follow a few simple steps:
You need a linux setup.
Install as your main system or run it in windows with VirtualBox.
Most guides are expecting Ubuntu. I use Mint Debian 64, which is just perfect for this job (and everything else ).
For VirtualBox you need at least a 50GB virtual-drive. Add 16GB if you will use ccache. I have build PA with a 52GB VBox in Win7.
It was just enough to compile, but had no room for ccache!
Compile time (VBox) on EliteBook 8540w (i7) was 120min. Not too bad, considering my old DeskTop need close to 4 hours on pure Linux.
Expect to download 8GB of source. Add 18GB for building to the "out" folder.
Enough statistics now, let's get started.
Follow gokussjx guide to setup linux for PA compiling.
Follow only these steps:
# Install OpenSSL, for Python
# Install Dependencies
# Configure USB
# JAVA JDK Installation
# Python Installation (just pick option 1)
# Android SDK
Click to expand...
Click to collapse
Exit gokussjx guide and continue here:
Download your favorite arm toolchain:
I found mine here.
Just extract the archive to any folder with user access, later you will point the build system to the /bin folder of the toolchain.
Install CCACHE:
Code:
$ sudo apt-get install ccache
Activate it in .bashrc:
Code:
# use ccache
export USE_CCACHE=1
You can change max-cache size, 16G should be enough for this build.
From terminal:
Code:
$ ccache -M 16G
Install Repo:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Download the build manifest:
Code:
$ mkdir -p padroid/system
$ cd padroid/system
$ repo init -u git://github.com/teemodk/manifest.git -b padroid
Get the source!
Code:
$ repo sync -j16
Find this section in "build/envsetup.sh" update with your favorite arm toolchain:
Code:
case $ARCH in
x86) toolchaindir=x86/i686-linux-android-$targetgccversion/bin
;;
arm) toolchaindir=[B]~/toolchain/linaro4.8/bin[/B]
;;
mips) toolchaindir=mips/mipsel-linux-android-$targetgccversion/bin
;;
Go!
Code:
$ ./rom-build.sh endeavoru
Thats all. If it went well, get your new ROM in "out/target/product/endeavoru"
Don't forget the gApps.
Credits go to
PA:molesarecoming, D4rKn3sSyS for the awesome hybrid magic. All PA contributors. gokussjx for the mother of all PA guides. All the helpful people here, that use their time to help.
CM(aosp):thöemy,gorbi16,tbalden,(pabx) and all the unknown soldiers contributing to CM
Everyone I forgot.
Differencies from the official guide.
The official PA manifest is put together in a way, so you can easily build and maintain multiple devices with only one manifest.
It works by adding and removing device specific code with local manifests under the "vendor/pa" folder.
However, I am only compiling for OneX, so I found it easier to add/remove stuff directly in the main manifest.
The downside to this is, that you have to manually maintain the manifest everytime you want to sync with PA. Place for improvement
All changes in STEP 2 of the official guide, is already done if using my guide with padroid manifest.
In vendor/pa these steps are done:
Code:
* Create [URL="https://github.com/teemodk/padroid_vendor_pa/blob/padroid/manifests/endeavoru.adds"]/manifest/<device>.adds[][/URL]
* Create [URL="https://github.com/teemodk/padroid_vendor_pa/blob/padroid/manifests/endeavoru.removes"]/manifest/<device>.removes[/URL]
* Create [URL="https://github.com/teemodk/padroid_vendor_pa/blob/padroid/prebuilt/pa_endeavoru.conf"]/prebuilt/pa_<device>.conf[/URL]
* Create [URL="https://github.com/teemodk/padroid_vendor_pa/blob/padroid/products/pa_endeavoru.mk"]/products/pa_<device>.mk[/URL]
* Add device makefile entry to [URL="https://github.com/teemodk/padroid_vendor_pa/blob/padroid/products/AndroidProducts.mk"]/products/AndroidProducts.mk[/URL]
* Create [URL="https://github.com/teemodk/padroid_vendor_pa/tree/padroid/vendorprops"]/vendorprops/<device>.proprietaries[/URL]
* Add device lunch menu entry to [URL="https://github.com/teemodk/padroid_vendor_pa/blob/padroid/vendorsetup.sh"]/vendorsetup.sh[/URL]
Furthermore, I temporarily moved the CM adds/removes from "vendor/pa/manifests" to .repo/manifest.xml.
I am sure there are better ways to handle git/repo/manifest etc., but this works well for me for now. Open for suggestions though.
Problem Solving
If (when) you run into problems, go to the official guide and find the answer. Most, if not all, errors is already answered there. If not, ask.
But first make a serious effort to find the error yourself. Read some good advice about finding the error.
As a rule of thumb: The build system tells you where to find the error! Something is missing, something is duplicated or somthing is just wrong. It's all in the log, running up your screen when compiling.
Build 25.Oct.2013
http://d-h.st/XRt
Nice, I'm always eager to learn this stuff .
Thanks!
ROM uploaded to post 3.
teemo said:
ROM uploaded to post 3.
Click to expand...
Click to collapse
Thank you so much Teemo, for providing the guide and the rom.
Just a Q: is this stock ParanoidAndroid rom (stock kernel?) ?
Thanks again for your work :good:
Mat08.cc said:
Thank you so much Teemo, for providing the guide and the rom.
Just a Q: is this stock ParanoidAndroid rom (stock kernel?) ?
Thanks again for your work :good:
Click to expand...
Click to collapse
The ROM is as close to stock as it get for OneX. It is really a mix of CyanogenMod and ParanoidAndroid. I follow the official build guide from PA-team.
The kernel is from same source as CM.
You can see everything in the manifest.
@teemo
your build is running fast and stable, congratulations! maybe you can keep updating this .. I appreciate it and I'm sure many other people would be of the same opinion
Sry,wrong threat....
Gesendet von meinem EndeavorU mit Tapatalk
Hi @teemo I was trying to build my own rom using a different source.
I'm pretty sure I've done things right except that when i start my build it ends up after few seconds saying: "Kernel source found, but no configuration was defined. Please add the TARGET_KERNEL_CONFIG variable to your BoardConfig.mk file"
I checked my BoardConfig.mk file and what I've got is TARGET_KERNEL_CONFIG := cyanogenmod_endeavoru_defconfig
I thought you may know how to help me with this!
Other infos: I'm tryn to build paranoidandroid 4.0 and i'm using cyanogenmod files for the endeavoru since i know aospa is cyanogenmod based right?
Hope you can help me :fingers-crossed:
Mat08.cc said:
Hi @teemo I was trying to build my own rom using a different source.
I'm pretty sure I've done things right except that when i start my build it ends up after few seconds saying: "Kernel source found, but no configuration was defined. Please add the TARGET_KERNEL_CONFIG variable to your BoardConfig.mk file"
I checked my BoardConfig.mk file and what I've got is TARGET_KERNEL_CONFIG := cyanogenmod_endeavoru_defconfig
I thought you may know how to help me with this!
Other infos: I'm tryn to build paranoidandroid 4.0 and i'm using cyanogenmod files for the endeavoru since i know aospa is cyanogenmod based right?
Hope you can help me :fingers-crossed:
Click to expand...
Click to collapse
Hi, I don't know what it takes to build ParanoidAndroid 4
But maybe you can ask in the Paranoid guide.
Or you can ask here for all other builds.
EDIT: Btw, to build PA4 or any other KitKat, you need the new sources for OneX (device+vendor+kernel). This guide will not work for KitKat.
teemo said:
Hi, I don't know what it takes to build ParanoidAndroid 4
But maybe you can ask in the Paranoid guide.
Or you can ask here for all other builds.
EDIT: Btw, to build PA4 or any other KitKat, you need the new sources for OneX (device+vendor+kernel). This guide will not work for KitKat.
Click to expand...
Click to collapse
I used the new sources but that was the result! I'll start from zero again to see if I missed something Thanks for the reply always really kind!
Mat08.cc said:
I used the new sources but that was the result! I'll start from zero again to see if I missed something Thanks for the reply always really kind!
Click to expand...
Click to collapse
the aospa dev build the aospa kitkat version...so a few days waiting and it will be there
One-X-master said:
the aospa dev build the aospa kitkat version...so a few days waiting and it will be there
Click to expand...
Click to collapse
Yeah I thought so! But I would love to learn! I have always looked to devs as to extraordinary people, understanding what makes them such would be great
Hey @teemo , sorry to bother you, but could you make an update build of PA? I don't have a stable connection, can't make a build of the new PA.. :/
Thanks man, take care
LuisDias said:
Hey @teemo , sorry to bother you, but could you make an update build of PA? I don't have a stable connection, can't make a build of the new PA.. :/
Thanks man, take care
Click to expand...
Click to collapse
All credits to @audahadi https://drive.google.com/folderview?id=0B-KjFDQ914F4dVdQLU9nT3VkMGc&usp=sharing
bosas200 said:
All credits to @audahadi https://drive.google.com/folderview?id=0B-KjFDQ914F4dVdQLU9nT3VkMGc&usp=sharing
Click to expand...
Click to collapse
Thanks brotha
teemo said:
Build 25.Oct.2013
http://d-h.st/XRt
Click to expand...
Click to collapse
Any chance helping me build AOSB with newer cm 11 base?
As no instructions anywhere on building AOSB from source. Source is
https://github.com/AOSB?page=1
Many thanks
OK. I thought this would be easy.
I've built for TI based platforms and know a bit about the process..
So I went to the site of sites https://wiki.cyanogenmod.org/w/Build_for_d855 though for the d855 and thought that I could glean enough to get things runing using the manifest stored in the current cm-12.1 that is in my d850..
Got a sweet build environment.. 16 core/32hypercore with 48GB ram and 1TB SDD RAID.
Got the code downloaded using
repo init -u https://github.com/CyanogenMod/android.git -b cm-12.0 << Maybe I should have used 12.1 but ignore for now
repo sync << Waited a long time and it loaded up a ton of stuff so that looks good..
Now I try to do something I've done on TI platforms
source build/envsetup.sh << but I get an error
The error is
bash: build/envsetup.sh: line 1: syntax error near unexpected tokin '{'
bash: build/envsetup.sh: line 1: function hmm() {
Ive looked and I cant figure out why this doesnt work...
ARGH!!!
Update
Well the only update I have now is that I got the manifest out of my d850 and placed it into the repo and did a repo sync and I saw that the repo updated the branches to 5.1.1 stuff..
Still cant get the source build/envsetup.sh to work... same error...
did you update all the repos to 5.1.1?
try ". build/envsetup.sh" (yeah it's a period before build ) instead of "source build/envsetup.sh"
i also need to know what OS are you using on your environment.. i advice UBUNTU 14.04 64bit to build android since is the most compatible try to use that maybe it can help..
http://forum.xda-developers.com/lg-g3/development/guide-how-to-build-cyanogenmod-12-t2953132 this is my old guide to build cyanogenmod (it's referred for cm12 since it's old but might still help)