[Q] syncing work tree error - Omni Q&A

hi guys,
I don't know if it is the good thread to post such question but i don't find any other thread related.
So, I got some problem syncing the omni repo. Whilst it was working fine since saturday last repo sync.
I dunno know how the happens. I actually felt into this error
Code:
Syncing work tree: 62% (260/418) error: revision android-4.4_r1 in platform/hardware/qcom/bt not found
I try to find some answer with my best friend goolgle but failed to grab one.
I checked the tree, files are there.
As far as i know this comes from roomservice.xml located into .repo/local_manifests.
It is advice to <!--Please do not manually edit this file-->
I'm searching some way to solved this issues (repo command or git? )as i m starting to translate some projects, i would not lost my already work done.
hope someone could point me to the right direction
thanks everyone

fragargon said:
Code:
Syncing work tree: 62% (260/418) error: revision android-4.4_r1 in platform/hardware/qcom/bt not found
Click to expand...
Click to collapse
Well, looking at https://github.com/omnirom/android/blob/android-4.4/default.xml#L286 there is no android-4.4_r1. Not sure where it pulled that from. So try removing the _r1 so it just matches the android-4.4. Rather, you could try removing the line altogether since the default manifest already has that. What device are you trying to compile? If it's trying to pull that repo's branch (which doesn't exist) it needs to be fixed. But in the mean time, you should be able to remove the line and be good.

PonsAsinorem said:
Well, looking at https://github.com/omnirom/android/blob/android-4.4/default.xml#L286 there is no android-4.4_r1. Not sure where it pulled that from. So try removing the _r1 so it just matches the android-4.4. Rather, you could try removing the line altogether since the default manifest already has that. What device are you trying to compile? If it's trying to pull that repo's branch (which doesn't exist) it needs to be fixed. But in the mean time, you should be able to remove the line and be good.
Click to expand...
Click to collapse
Hi PonsAsinorem,
thanks for your answer
The targeted device is nexus4. I just don't understand how this happens since i have already succesfully compile the firmware.
Latest compile was on 15/01/2014 and used to sync twice a week. I spotted that i could start learn commit on github by translation so...
i will delete the compromiting line into the roomservice.xml
hope

fragargon said:
Hi PonsAsinorem,
thanks for your answer
The targeted device is nexus4. I just don't understand how this happens since i have already succesfully compile the firmware.
Latest compile was on 15/01/2014 and used to sync twice a week. I spotted that i could start learn commit on github by translation so...
i will delete the compromiting line into the roomservice.xml
hope
Click to expand...
Click to collapse
Ok, the mako's omni.dependencies was just changed (3 days ago). I'd also take a further look at your roomservice (or paste it in CODE tags here) to make sure you don't have any other offending lines.
https://github.com/omnirom/android_...3b880dc#diff-dfae556379c73dbe35de7e48b1ff5d81

okay, i have removed the offending line and repo sync successfully.
here is the original roomservice.xml (located into /.repo/local_manifests)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!--Please do not manually edit this file-->
<manifest>
<project name="android_device_lge_mako" path="device/lge/mako" remote="omnirom" revision="android-4.4" />
<project name="android_kernel_lge_mako" path="kernel/lge/mako" remote="omnirom" revision="android-4.4" />
<project name="platform/hardware/qcom/bt" path="hardware/qcom/bt" remote="aosp" revision="android-4.4_r1" />
</manifest>
I just manually removed the last line and syncing work tree succeed.
i checked project.list, i had twice
Code:
hardware/qcom/bt
but since a removed the offending line and repo sync successfully the second one has gone.
thanks a lot for your support, i didn't dare editing this file.
Btw i saw someone on G+ commenting the same error while repo syncing is the link
as far as google driven my quest i spotted that, for some unknown reason to me, leads to the blob
https://github.com/android/platform_manifest/blob/android-4.4_r1/default.xml
anyway, now this seems fixed

Yeah. Here's a summary of what happened:
Months ago, someone decided to move a bunch of hardware repos out of the default manifest and into omni.dependencies. This was first done for mako.
Problem was, removing a repo from the default manifest and moving it into device dependencies is easier said than done - in many cases, people had entire work branches deleted without warning. So the hardware repos were put back into the default manifest, but not removed from mako's omni.dependencies (the latter was an accidental omission - we forgot). Thing is, at that point, it didn't break anything - as long as omni.dependencies and the default manifest were pointing to the same location it was OK.
The problem was that hardware/qcom/bt got forked from AOSP into Omni so we could make changes - then mako's omni.dependencies started causing weird breakage.
This shouldn't happen to anyone else, but anyone who did have their roomservice.xml corrupted will need to remove that one line manually.

I am posting cause topic is already here. Since yesterday it is forth time in a row now while I am trying to sync repo.
Two weeks ago it went without a glitch, I builded for mako with success. I am actually running this build now. Anyway, while syncing repo I got something like this at the "unexpected" end :
Code:
Syncing work tree: 5% (21/416) error: in `sync`: [Errno 2] No such file or directory: u'/home/tytus/android/omni/device/generic/mini-emulator-mips/.git/HEAD'
error: manifest missing or unreadable -- please run init
I am building on Ubuntu 13.10, fresh install, bulding for mako as of now.

morganmf said:
I am posting cause topic is already here. Since yesterday it is forth time in a row now while I am trying to sync repo.
Two weeks ago it went without a glitch, I builded for mako with success. I am actually running this build now. Anyway, while syncing repo I got something like this at the "unexpected" end :
Code:
Syncing work tree: 5% (21/416) error: in `sync`: [Errno 2] No such file or directory: u'/home/tytus/android/omni/device/generic/mini-emulator-mips/.git/HEAD'
error: manifest missing or unreadable -- please run init
I am building on Ubuntu 13.10, fresh install, bulding for mako as of now.
Click to expand...
Click to collapse
Are you sure you didn't run out of disk space at some point?
You have some sort of weird corruption in your tree.

Well, I did run out of space on previous Ubuntu installation, than I grab bigger drive and setup Ubuntu from scratch and setup building environment as well. Anyway after few more tries it went good. Thanks, every help is really appreciated as I am a bit of a newbie.
Wysłane z mojego Nexus 4 przy użyciu Tapatalka

Related

[Q] completely newbie trying to build first rom from source, how to?

Hi, i was thinking about trying to build very first rom from source ever.i have followed this -> http://docs.omnirom.org/Setting_Up_A_Compile_Environment, and now syncing sources.(hopefully no errors now since its been syncing for like 2h now) how long syncing usually takes?(~1,5mb/s DL speed)
so whats the next move i should take after syncing to get ready for compiling?
what was i really wondering is how can i get correct drivers(vendor blobs?) for nexus 7 2013(FLO) when i try compile? also how long compiling usually takes on highend rig?
and then i have question about cherry picks, is it easy as opening terminal to corresponding folder of cherrypick and fetching it there?(http://forum.xda-developers.com/showpost.php?p=37053013&postcount=7)
thx for everyone whos willing to help me, i know questions above probably are really noobish, but its my first time and i dont really have any linux knowledge so just by getting sync going im pretty satisfied.
Do you have Java6 installed? If not, then
Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java6-installer
You also need to create a /omni(or whatever is your working directory called)/.repo/local_manifest floder, and in it an .xml file that can be named anything except roomservice.
That .xml should contain flo-specific omni and themuppets projects. Themuppets contains your asus blobs. It should look something like this:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="TheMuppets/proprietary_vendor_asus" path="vendor/asus" remote="github" revision="cm-10.2" />
</manifest>
Click to expand...
Click to collapse
This .xml file can contain many lines like themuppets one.
After that you have to do another repo sync so the projects listed in your .xml can be pulled to your local repo.
After that, you can start the build.
This is my first build, too. I seem to have goofed somewhere, as its not booting. I'll have to try again, as I think your XML file there might be what I need to do. I'm building for Manta.
chasmodo said:
Do you have Java6 installed? If not, then
Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java6-installer
You also need to create a /omni(or whatever is your working directory called)/.repo/local_manifest floder, and in it an .xml file that can be named anything except roomservice.
That .xml should contain flo-specific omni and themuppets projects. Themuppets contains your asus blobs. It should look something like this:
This .xml file can contain many lines like themuppets one.
After that you have to do another repo sync so the projects listed in your .xml can be pulled to your local repo.
After that, you can start the build.
Click to expand...
Click to collapse
got vendor blobs from themuppets now, which command should i use to start building? (. build/envsetup.sh; brunch flo?)
makkeonmies said:
got vendor blobs from themuppets now, which command should i use to build to start building? (. build/envsetup.sh; brunch flo?)
Click to expand...
Click to collapse
That's what worked for me this morning (except I didn't have my vendor blobs!)
well no luck this time, maybe i have forgot to do something?
make: *** No rule to make target `/home/joni/android/omni/out/target/product/flo/obj/KERNEL_OBJ/usr', needed by `/home/joni/android/omni/out/target/product/flo/obj/SHARED_LIBRARIES/libqservice_intermediates/QService.o'. Stop.
make: *** Waiting for unfinished jobs....
host SharedLib: libSR_Recognizer (/home/joni/android/omni/out/host/linux-x86/obj/lib/libSR_Recognizer.so)
Click to expand...
Click to collapse
compiling stop with lines above..
makkeonmies said:
well no luck this time, maybe i have forgot to do something?
compiling stop with lines above..
Click to expand...
Click to collapse
That was the same error I was getting, renaming local_manifest to roomservice got the build rolling.
CMNein said:
That was the same error I was getting, renaming local_manifest to roomservice got the build rolling.
Click to expand...
Click to collapse
seems to go further now, but stopped for error like this now ->
frameworks/base/core/res/res/values/public.xml:646: warning: No comment for public symbol android:style/Widget.ScrollView
frameworks/base/core/res/res/values/public.xml:633: warning: No comment for public symbol android:style/Widget.SeekBar
frameworks/base/core/res/res/values/public.xml:641: warning: No comment for public symbol android:style/Widget.Spinner
frameworks/base/core/res/res/values/public.xml:1529: warning: No comment for public symbol android:style/Widget.Spinner.DropDown
frameworks/base/core/res/res/values/public.xml:653: warning: No comment for public symbol android:style/Widget.TabWidget
frameworks/base/core/res/res/values/public.xml:635: warning: No comment for public symbol android:style/Widget.TextView
frameworks/base/core/res/res/values/public.xml:642: warning: No comment for public symbol android:style/Widget.TextView.PopupMenu
frameworks/base/core/res/res/values/public.xml:643: warning: No comment for public symbol android:style/Widget.TextView.SpinnerItem
frameworks/base/core/res/res/values/public.xml:652: warning: No comment for public symbol android:style/Widget.WebView
+ theres like 1000 more of these but would be too long copy paste.
okey, cleaned output dir to try from clean table and tried again and for some reason it now stops ->
needed by `/home/joni/android/omni/out/target/product/flo/obj/SHARED_LIBRARIES/libqservice_intermediates/QService.o'. Stop.
make: *** Waiting for unfinished jobs....
Import includes file: /home/joni/android/omni/out/target/product/flo/obj/SHARED_LIBRARIES/libdivxdrmdecrypt_intermediates/import_includes
makkeonmies said:
seems to go further now, but stopped for error like this now .
Click to expand...
Click to collapse
These are warnings, not errors. You'll be getting thousands of these in each build, that's nothing to worry about.
However, you have to search for the terminal line(s) saying 'error' when the build stops. Then you copy/paste those in http://pastebin.com/ and give us the link. We can't help you when you post just the warnings, there's nothing to be seen there.
chasmodo said:
These are warnings, not errors. You'll be getting thousands of these in each build, that's nothing to worry about.
However, you have to search for the terminal line(s) saying 'error' when the build stops. Then you copy/paste those in http://pastebin.com/ and give us the link. We can't help you when you post just the warnings, there's nothing to be seen there.
Click to expand...
Click to collapse
heres the lines before it stops -> http://pastebin.com/X4wkZvex
also just by trying compile again its giving me these in addition to earliers, why it didnt give these first time?
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
makkeonmies said:
heres the lines before it stops -> http://pastebin.com/X4wkZvex
Click to expand...
Click to collapse
Looks like the kernel error. Which device are you compiling for?
makkeonmies said:
also just by trying compile again its giving me these in addition to earliers, why it didnt give these first time?
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Click to expand...
Click to collapse
This is normal, no cause for alarm.
for nexus 7(2013, FLO)
okey, i had to reboot computer to get nvidia drivers installed, now its not even trying to compile again ->
** Don't have a product spec for: 'custom_flo'
** Do you have the right repo manifest?
and im using very same command which i did earlier.
makkeonmies said:
for nexus 7(2013, FLO)
Click to expand...
Click to collapse
You have https://github.com/omnirom/android_kernel_google_msm in your roomservice/manifest?
error i have after repo sync
Fetching projects: 100% (375/375), done.
Traceback (most recent call last):
File "/home/desalesouche/.repo/repo/main.py", line 418, in <module>
_Main(sys.argv[1:])
File "/home/desalesouche/.repo/repo/main.py", line 394, in _Main
result = repo._Run(argv) or 0
File "/home/desalesouche/.repo/repo/main.py", line 142, in _Run
result = cmd.Execute(copts, cargs)
File "/home/desalesouche/.repo/repo/subcmds/sync.py", line 657, in Execute
project.Sync_LocalHalf(syncbuf)
File "/home/desalesouche/.repo/repo/project.py", line 1106, in Sync_LocalHalf
lost = self._revlist(not_rev(revid), HEAD)
File "/home/desalesouche/.repo/repo/project.py", line 2074, in _revlist
return self.work_git.rev_list(*a, **kw)
File "/home/desalesouche/.repo/repo/project.py", line 2227, in rev_list
p.stderr))
error.GitError: android rev-list (u'^68adae319917cbb1873f3492b67b3f5f80bbc8f5', 'HEAD', '--'): fatal: bad object HEAD
some help/advice please?
CMNein said:
You have https://github.com/omnirom/android_kernel_google_msm in your roomservice/manifest?
Click to expand...
Click to collapse
no i dont think so i had this, how do i add it? im assuming not only the link works. is it something like "<project name="omnirom/android_kernel_google_msm" + something else? or am i completely lost with this.
also whole manifest file disappeared on reboot -.-
makkeonmies said:
no i dont think so i had this, how do i add it? im assuming not only the link works. is it something like "<project name="omnirom/android_kernel_google_msm" + something else? or am i completely lost with this.
also whole manifest file disappeared on reboot -.-
Click to expand...
Click to collapse
Code:
<project name="omnirom/android_kernel_google_msm" path="kernel/google/msm" remote="github" revision="android-msm-flo-3.4-jb-mr2" />
makkeonmies said:
no i dont think so i had this, how do i add it? im assuming not only the link works. is it something like "<project name="omnirom/android_kernel_google_msm" + something else? or am i completely lost with this.
also whole manifest file disappeared on reboot -.-
Click to expand...
Click to collapse
Within omni/.repo create a local_manifests folder.
Create a file called roomservice.xml and add the following:
Code:
<manifest>
<project name="TheMuppets/proprietary_vendor_asus" path="vendor/asus" remote="github" revision="cm-10.2"/>
<project name="omnirom/android_device_asus_flo" path="device/asus/flo" remote="github" revision="android-4.3"/>
<project name="omnirom/android_kernel_google_msm" path="kernel/google/msm" remote="github" revision="android-msm-flo-3.4-jb-mr2"/>
</manifest>
repo sync again.
You could put TheMuppets in a separate manifest called local_manifest.xml, but the above should get you rolling <fingers crossed>
CMNein said:
Code:
<manifest>
<project name="TheMuppets/proprietary_vendor_asus" path="vendor/asus" remote="github" revision="cm-10.2"/>
<project name="omnirom/android_device_asus_flo" path="device/asus/flo" remote="github" revision="android-4.3"/>
<project name="omnirom/android_kernel_google_msm" path="kernel/google/msm" remote="github" revision="android-4.3"/>
</manifest>
Click to expand...
Click to collapse
Your kernel revision is not correct.
chasmodo said:
Your kernel revision is not correct.
Click to expand...
Click to collapse
herp derp, had edited my mako manifest.
revision is: android-msm-flo-3.4-jb-mr2
CMNein said:
Within omni/.repo create a local_manifests folder.
Create a file called roomservice.xml and add the following:
Code:
<manifest>
<project name="TheMuppets/proprietary_vendor_asus" path="vendor/asus" remote="github" revision="cm-10.2"/>
<project name="omnirom/android_device_asus_flo" path="device/asus/flo" remote="github" revision="android-4.3"/>
<project name="omnirom/android_kernel_google_msm" path="kernel/google/msm" remote="github" revision="android-4.3"/>
</manifest>
repo sync again.
You could put TheMuppets in a separate manifest called local_manifest.xml, but the above should get you rolling <fingers crossed>
Click to expand...
Click to collapse
yeah i allready made the file again there, thx anyways guess it was about i was missing the "omnirom/android_kernel_google_msm" on first time i tried
btw did i understand this thing rigth, revision=branch when im adding things to manifest? remote="website" and i can forgot omnirom/android from path since im syncing from that location(on terminal) allready?

[SOLVED] Compiling for hammerhead. Edit : It boots !

Hello,
I've been trying to compile for hammerhead, but I'm getting a weird behavior
I've repo sync on branch pac-4.4, and all went well
Then I "build-pac.sh -c hammerhead"
It populates the local manifest with entries for device, proprietary and kernel (from CM and themuppets)
Then it repo sync for the above mentionned entries in the manifest
But when trying to sync the kernel branch, it is prompting me for a github login & password
I tried to left it blank, to input my github login/pwd, but none worked, and the repo does not sync
Did I missed something or is there something wrong in my setup ?
What name do you use when you did the repo init? Use that same name and password
Sent from my SAMSUNG-SGH-I747 using Tapatalk
I left the default one (from my ubuntu session)
But I'm not sure this is the problem here
When I try to breafast "mako" for example its works fine, and sync the mako's repos, without any login/pwd prompt
Looks like pac-man git has changed from "git://github.com/PAC-man/android.git" to "git://github.com/PAC-man/pacman.git"
I'll try to repo sync with the new one ...
New sync didn't help
Here is the log from the build-pac
From https://github.com/TheMuppets/proprietary_vendor_lge
* [new branch] cm-11.0 -> github/cm-11.0
Fetching projects: 66% (2/3)
Password for 'https://github.com':
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/Cyanogenmod/android_kernel_lge_hammerhead/'
Username for 'https://github.com': bud77
Password for 'https://[email protected]':
remote: Repository not found.
fatal: repository 'https://github.com/Cyanogenmod/android_kernel_lge_hammerhead/' not found
error: Cannot fetch Cyanogenmod/android_kernel_lge_hammerhead
error: Exited sync due to fetch errors
...
Lunching device
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[vendor/pac/products/pac_hammerhead.mk]]: "device/lge/hammerhead/cm.mk" does not exist. Stop.
Device hammerhead not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Found repository: android_device_lge_hammerhead
Default revision: cm-11.0
Checking branch info
CyanogenMod/android_device_lge_hammerhead already exists
Syncing repository to retrieve project.
Fetching project CyanogenMod/android_device_lge_hammerhead
Fetching projects: 100% (1/1), done.
Repository synced!
Looking for dependencies
Adding dependencies to manifest
CyanogenMod/android_kernel_lge_hammerhead already exists
Syncing dependencies
Fetching project Cyanogenmod/android_kernel_lge_hammerhead
Username for 'https://github.com':
Password for 'https://github.com':
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/Cyanogenmod/android_kernel_lge_hammerhead/'
error: Cannot fetch Cyanogenmod/android_kernel_lge_hammerhead
error: Exited sync due to fetch errors
Done
Click to expand...
Click to collapse
This time I setup my real github user & mail during the repo init, but even when I specify those when prompter, it doesn't work
I rewrote the line manually in the local manifest, and it's now syncing normally ...
bud77 said:
I rewrote the line manually in the local manifest, and it's now syncing normally ...
Click to expand...
Click to collapse
Could you please explain which file you edited and where it was located? I'm having the same problem and I can't figure it out.
I'm figuring something is wrong with android_device_lge_hammerhead but it looks like it exists on github, so I'm not sure what needs fixing.
moffa~ said:
Could you please explain which file you edited and where it was located? I'm having the same problem and I can't figure it out.
I'm figuring something is wrong with android_device_lge_hammerhead but it looks like it exists on github, so I'm not sure what needs fixing.
Click to expand...
Click to collapse
It's the rooomservice.xml. Ot is located in ~/your_repo_folder/.repo/local_manifest
To be very specific, I wrote the line as the 2nd entry of the roomservice, instead of the 3rd entry
Started compiling before going to bed, and this morning, build completed ..
IT BOOTS !!!!!!!!!!
Edit : There is some system UI FC upon first start, and some apps are not working
But most of it is working !
bud77 said:
Started compiling before going to bed, and this morning, build completed ..
IT BOOTS !!!!!!!!!!
Edit : There is some system UI FC upon first start, and some apps are not working
But most of it is working !
Click to expand...
Click to collapse
So my roomservice.xml looks like
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_hammerhead" path="device/lge/hammerhead" remote="github" revision="cm-11.0" />
<project name="Cyanogenmod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-11.0" />
</manifest>
What does yours look like?
moffa~ said:
So my roomservice.xml looks like
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_lge_hammerhead" path="device/lge/hammerhead" remote="github" revision="cm-11.0" />
<project name="Cyanogenmod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" revision="cm-11.0" />
</manifest>
What does yours look like?
Click to expand...
Click to collapse
It is exactly the same
I tried to repo sync yesterday before bed, and I was prompt for password again
I edited the file, again, but this time, it didn't worked
I truly think there is something wrong on the repo itself
Edit : I edited right now and copied the line from an old file, and it works
There most probably is an invisible caraacter or something like that
Paste that on 1st or 2nd line
<project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" revision="cm-11.0" />
Click to expand...
Click to collapse
Capitalize the m in CyanogenMod. It won't sync that repo without it
Sent from my SAMSUNG-SGH-I747 using Tapatalk
atrus5 said:
Capitalize the m in CyanogenMod. It won't sync that repo without it
Sent from my SAMSUNG-SGH-I747 using Tapatalk
Click to expand...
Click to collapse
Ohhhhhhh I didn't noticed it ! Thank you
But is it normal the manifest gets rewritten every compile/sync ?
bud77 said:
Ohhhhhhh I didn't noticed it ! Thank you
But is it normal the manifest gets rewritten every compile/sync ?
Click to expand...
Click to collapse
It will get written to when building not syncing. Syncing will just take whatever is in the two files and sync them. It takes what is in the dependency file. Vendor/pac/device.dependencies
Many thanks for the clarification
So, to sum it up for everyone :
Edit local manifest, put a capital M to "CyanogenMod" save & repo sync
Then re-edit the file after any build
bud77 said:
Many thanks for the clarification
So, to sum it up for everyone :
Edit local manifest, put a capital M to "CyanogenMod" save & repo sync
Then re-edit the file after any build
Click to expand...
Click to collapse
Fixed dependency file. Thanks for noticing it. Will get merged soon. So you won't have to edit the file anymore after the merge.
edit: merged
http://review.pac-rom.com/#/c/3799/
Well done :good:
bud77 said:
http://review.pac-rom.com/#/c/3799/
Well done :good:
Click to expand...
Click to collapse
Just remember to anyone building this, DO NOT POST THIS ANYWHERE. If you do the thread will be closed as soon as we find out. You can build for yourself for right now but this is not to be spread out to the masses. Just a warning.
atrus5 said:
Just remember to anyone building this, DO NOT POST THIS ANYWHERE. If you do the thread will be closed as soon as we find out. You can build for yourself for right now but this is not to be spread out to the masses. Just a warning.
Click to expand...
Click to collapse
Don't worry, I read the bold lines at the end of the build, and saw the guy apologizing on your github about posting a rom
bud77 said:
Don't worry, I read the bold lines at the end of the build, and saw the guy apologizing on your github about posting a rom
Click to expand...
Click to collapse
Glad you mentioned it
Makes it more difficult for those who "did not see that" to come up with excuses.
Enjoy your Alpha build

Guide - Introduction to Rom building/development

Hello everyone.
I’ve decided to build this tutorial in order to assist all developers and builders into the ROM and kernel development. I’ve felt motivating into writing this small post because I feel that the current information available is confusing and also do not provide the set of skills and information to help someone in the first steps.
This tutorial will be divided on:
The Machine Configuration
The tools of development
The Source
Hardware
Software
What to do to be able to Innovate
The Machine Configuration
In order to have a good machine configuration you should select your distro based on the packages which are provided to developers. In my opinion the best distros are Fedora and Ubuntu. It is important to learn a bit how Linux works in order to fully understand what we are editing as Android is nothing more than equivalent Linux system where you run java on a virtual machine. In other words, you’ll understand with time that many parts which are used on Linux Operating system it is also used on Android Operating System (example: bionic, kernel libs).
After you installed your Linux system you’ll need to prepare your machine for building. For that you’ll need to install the following packages:
Code:
sudo apt-get install git ccache automake lzop bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 g++-multilib python-networkx libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng maven
sudo apt-get install openjdk-7-jdk
Code:
sudo apt-get install android androidsdk-uiautomatorviewer android-copyright android-src-vendor android-emulator android-tools-adb android-headers android-tools-adbd androidsdk-ddms android-tools-fastboot androidsdk-hierarchyviewer android-tools-fsutils androidsdk-traceview
After you have the basic packages installed we are going to add the repo instructions to you git in your machine. Basically this will interpret the source information when you are syncing new code from google repos and we’ll add to the folder /bin/repo.
To do that we’ll run.
Code:
[B]mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo[/B]
And run the /.profile. Basically this command will reload information of the new settings for your profile, where it’ll read the folder ~/bin/repo information for all situations. In the future only makes sense to load again in case you have added a new repo instruction.
Code:
[B]. ~/.profile[/B]
Now we are going to sync the source code. I’ll use here as an example CyanogenMod as I believe to be the easiest for anyone which is starting. Lets imagine we are going to put all the source on a folder named cm, you’ll have to just run the following commands.
Code:
[B]mkdir ~/cm
cd ~/cm
repo init -u git://github.com/CyanogenMod/android.git -b cm-13.0[/B]
So in order to explain what we’ve done here by steps. The repo init –u basically is a command instructing to go to the GitHub on that specific location and extract what is available on the cm-13.0 branch regarding to manifests. So basically it’ll automatically push the file which has all CyanogenMod source to .repo/ folder with the name manifest.xml
After you have loaded this command you’ll run the repo sync , basically this command consists on downloading all the code into your building folder (in this case cm folder).
After the repo sync is complete you’ll have interest on having a local_manifests. Basically on this local_manifests.xml , where some developers prefer to name it as roomservice.xml it is where you’ll add the changes to the manifest.xml or even sources which you wish to add to your building folder. This is a solution to you never edit the manifest.xml.
Usually it is added on the local_manifests the folders related to your device tree. I’ll give in this example how to build for the OnePlus One (bacon).
A device tree consists on configurations where you set information related to your device. Example if is qualcom, usually is android_device_qcom_common (where is the general settings) together with android_device_oneplus_bacon (where are the specific settings). When I say settings, for you to understand is like compile with the folder hardware/qcom/display for the display. You should take some time to explore to understand what is in it.
So you’ll add your local_manifests.xml this way.
Code:
[B]
mkdir .repo/local_manifests
nano .repo/local_manifests/local_manifests.xm[/B]l
You now add:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_device_oppo_common" revision="cm-13.0" remote="github" path="device/oppo/common"/>
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" revision="cm-13.0" />
<project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" revision="cm-13.0" />
</manifest>
Now you need to run the repo sync command again.
This has to do separately the first time or it won’t sync all the files you need. In case the repo sync fails with an error saying you need to do –force-sync just run repo sync –force-sync (this happens only when you change common git sources with your manifest.
After the sync is done you are ready to build!
To start building you’ll need to run the .envsetup.sh , which will load all the source code into memory. After that breakfast bacon userdebug (in case it is for the OnePlus One device), then later make bacon (the word bacon it is to be used on all devices , here it is just a coincidence with OnePlus One)
Code:
[B]. build/envsetup.sh
breakfast bacon
make bacon[/B]
After it compiled your rom will be located at /cm/out/target/product/bacon/
Easy until here? I hope so.
Possible errors :
Q: Receive error: fatal: duplicate path xxx/xxx in ~/cm/.repo/manifest.xml
A: edit .repo/local_manifests/local_manifests.xml to remove the item which matches the item located in bold.
Q: How big is the repo?
A: 50GB just source code and around 10GB when built per device. Therefore you should aim to have about 60GB free on your system.
The tools of development
Git
Probably many of you question about what it is git, read about it on the github manuals etc and still cannot figure out how to work (I took two weeks to understand that it is really simple). So imagine that you have a diary, but instead of being separated by dates it is separated by titles, which we call commits. And what is a commit? Basically it is a portion of code. So when you make a change and want to record that change, you create a commit and in the end it’ll be a portion of code. This portion of code, known as commit, can be easily ported between different sources.
Here is an example:
https://github.com/jgcaaprom/androi...mmit/9f16b3cd79ad7bb8c821a518ca73725f19c38478
The commit number is: 9f16b3cd79ad7bb8c821a518ca73725f19c38478
This commit has recorded a change of IZAT_DEBUG_LEVEL = 2 .
Now how to bring other commits from different sources into our source.
The process comes in 3 phases:
First we’ll have to add the source where the commits that interests us are with git add source_name link
Second we’ll download that source by using git fetch source command
Thirdly we’ll cherry-pick (bring the portion of code recorded in the commit) into our source in order to make the changes automatically.
So lets see a real scenario. Imagin you are interested on cherry-picking this source:
https://github.com/CyanogenMod/android_device_oneplus_bacon
What you’ll have to do is.
Step one: git add cm https://github.com/CyanogenMod/android_device_oneplus_bacon.git
Step two: git fetch cm
Step three: (imagine this is the commit you want:
https://github.com/CyanogenMod/andr...mmit/58027fcbea4dd9fbb5aaeb8ae5f6e32bdf613573 )
The commit number is: 58027fcbea4dd9fbb5aaeb8ae5f6e32bdf613573
So you’ll git cherry-pick 58027fcbea4dd9fbb5aaeb8ae5f6e32bdf613573
And voila! You’ve done your cherry-pick . Now it is important to have in mind how the cherry-pick process works which I’ll explain on the next step.
Cherry-picking
Cherry-picking is a process of importing code from one source to another. So the process that git does basically is, compares your present files in the source with the files that was on the source you are cherry-picking and if everything is a match it’ll change the code automatically for you.
Now lets pick up the example above and imagine that the changes you are doing instead of being exactly the same as described here:
https://github.com/CyanogenMod/andr...mmit/58027fcbea4dd9fbb5aaeb8ae5f6e32bdf613573
Your source has a difference which doesn’t have this line:
32 private static String CONTROL_PATH = "/proc/touchpanel/keypad_enable";
You’ll notice that it’ll give a conflict. The reason for that is because the git when comparing understood that there was no match between the sources. When that happens means basically that there might be changes you should do in order for the code to be compatible, so you’ll have to review that code.
Now the review process is very simple. For you to see which files are in conflict you’ll have to run git status ( basically this command informs you of the situation of the commits which are being cherry-picked and the changes which you’ve done. )
You’ll notice that the files which need to be edited/review are in red. In case it appears files in green, means that there was a perfect match and doesn’t need a review.
Pretty useful right?
After you finish editing all the code you’ll do git add . and for this exercise do git status again just for you to see what happened . Everything is green. To finish the cherry-pick you’ll now do git commit and done!
How to record my own changes and create a commit with it.
Basically this process is exatly the same as the previous one, the only difference is that after you made the changes, you can make git status, then git add filename in case you want to commit only one file or git add . in case you wish to commit all the files and to record the commit you write git commit, or git commit –m “commit message”.
Congratulations! You’ve just recorded your commit!
Git push/pull
There will be moments where we just wish that we could be lazy and cherry-pick everything all at once. Well there are some scenarios where you can actually do that, but remember it is not perfect. Lets imagine we are using the source above, and CyanogenMod uploaded like 20 different commits, your source is not exactly like CM source but you wish to keep your changes and also have all changes from CM what to do?
1) You can cherry-pick one on one. And waste a lot of time…
2) You can make a new source based on cm and include your changes there
3) You can git pull
Git pull basically will update your source with CM source by merging all the commits. You do that with:
git pull cm cm-13.0 (in case your rom is Marshmallow)
The git pull should only be used when the sources are very similar and you are using as a base. Basically it’ll warn you that’ll merge the code and voila done! 20 commits added to the source.
Now when on the situation that the sources are slight different or very different it’ll create a conflict. Again the git will do comparisons between the entire sources, check which commits are missing, compare the files just like with cherry-picking. And when you do git status, it’ll appear on red all files where you need to review your code.
After you finish, same as before
Code:
[B]git add .
git commit[/B]
Done.
I hope you are understanding everything until here.
git reset HEAD~n
This command is rarely used but is super usefull. Basically you are saying to git that you with to remove n commits you've reated/cherry-picked. For you guys to understand how it works, basically imagin you have just written/cherry-picked 10 commits, and you do git reset HEAD~3 , he'll basically remove from records 3 commits. But... That doesn't mean he reverted the code! In case you wish reset the code you need to do git reset --hard.
Also it is very usefull to help rewrite the history. Lets think the example I given before. When you do a git reset HEAD~3 , basically on a history of A B C D E F G H I J commits, the git will remove only the recorded commits H I J. If you do after a git status, you'll understand that the code is still there, which means the changes you done on H I J will still be there. So you can create a new commit with H I J all together . Simple!
Another way to create a unique commit with H I J is by using git rebase -i HEAD~3 , where you basically are instructing the git that you wish to rebase the source with an interactive selection. You'll see that it'll appear a commit list where you can remove other commits from history. But since you wish to create a unique commit you'll wish to change the instruction from pick with the letter s (without capslock term for squash) . Example:
Code:
[B]pick d0c49f4 UsbDeviceManager: Remove charging from persisted function composition
s 2c755a6 SystemUI: fix NFC tile sometimes hiding
s e39d1d7 Revert "base: start nfc service prior to systemui"
pick 9164274 DocumentsUI : Hide advanced menu option when in forced mode
pick 5f8d3f8 Themes: Expose Power Dialogs
pick 9153396 SysUI: Don't let rogue themes ruin notifications
pick 226797c Revert "Only show keyguard panel if on lockscreen + no activity on top"
pick e843aaf Fix NPE in DocumentsUI when rotate UI before format as internal
pick 26079d3 SystemUI: detect rotation and resize mKeyguardBlur accordingly
pick 80b060d Automatic translation import
pick 4282864 Automatic translation import
pick d442df6 wifi: Enable WiFi IpReachabilityMonitor by default
pick 9cf937f SystemUI: Add margin in qs_tile_top between instruction text and add button[/B]
Cool right?
And I believe I've covered with some examples the git. As you can see, once you get used to git you'll be able to use it easily.
Toolchains
There has been a big debate from many developers on which toolchains to use. Many prefer sabermod, others prefer uber, others google toolchain, etc. It is in fact debatable. If you ask me which one to use, I would say google or uber (very similer to google) and the gcc used by stock on the source. The reason is simple, the code is optimized for a certain gcc version, if you start using a gcc version which is not prepared to be used on the code, it won't translate correctly your instruction.
The source
When you start building roms, you should at least know a little about how the source of android is organized, what language it is used, etc. On android it is used C, C++, Java, Assembly. Withing the following folders inside the source it is used:
Java
Frameworks
Packages
external (some packages)
C++
ART
bionic
hardware
C
kernel
hardware
Assembly
bionic
some of the kernel libs
This is important for you to navigate easily within it. Some of you ask yourselfs what is one thing or another. I'll represent that to the following image which is published on the google developers page.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Now I believe you wish to know which parts should be used in order to put a rom working for a certain device. Those parts are:
Hardware
Kernel
device tree
Vendor blobs
These parts are the "base" of your build to put a certain device in a working, since on these parts is where lies the instructions for the device to understand what to do.
The build folder is where you specify instructions of the building process. For example : Certain optimization, which GCC to use, where will the compiler find the apps to compile.
frameworks, system, packages and some of the folders within the external folder are the packages of what you will have inside the rom which is general and can be present on any rom.
external folder has present different things, compilers such as proguard, jemalloc. external software used by the rom such as sqlite.
prebuilts folder has present everything related to stuff which is already compiled, in this case clang, gcc toolchains.
I've done a very summarize version of the source in order for you to understand how that google built things, so I hope it is simple to understand these basics.
(to continue)
reserve1
reserve2
reserve3
Another great contribution bro. Thanks for your work and for your help. Starting read right now
Edit: Amazing guide
Just one request, please bold when you write a command. I think it becomes more eligible.
@jgcaap I think this is useful
For those already have JDK8 installed, they can use it by adding this code to $HOME/.bashrc
Code:
EXPERIMENTAL_USE_JAVA8=true
You just have to source ~/.bashrc before make bacon
There's nothing better than learning something from a professional who you know has done such a great work. Thanks a million!! @jgcaap
Very useful.. Thanks for sharing =D>
Sent from my A0001 using XDA-Developers mobile app
FSadino said:
@jgcaap I think this is useful
For those already have JDK8 installed, they can use it by adding this code to $HOME/.bashrc
Code:
EXPERIMENTAL_USE_JAVA8=true
You just have to source ~/.bashrc before make bacon
Click to expand...
Click to collapse
I'll speak about different custom GCC and also other compilers, but it'll be on another section. I'll continue writing this on wednesday (exam tomorow). I believe that my guide will help understand all the basics.
If I speak about that mode, I believe it'll give the idea that it is a feature of linux and it isn't. It is something you can change inside the source in many different ways.
jgcaap said:
I'll speak about different custom GCC and also other compilers, but it'll be on another section. I'll continue writing this on wednesday (exam tomorow). I believe that my guide will help understand all the basics.
If I speak about that mode, I believe it'll give the idea that it is a feature of linux and it isn't. It is something you can change inside the source in many different ways.
Click to expand...
Click to collapse
This might sound a little stupid but which JDK version is recommended? 7 or 8? Seems like 7 cause you have to enable "Experimental Use" for 8.
Great guide! Can you, if you have time, also post a guide only focusing on kernel building?
abhibnl said:
Great guide! Can you, if you have time, also post a guide only focusing on kernel building?
Click to expand...
Click to collapse
The guide is incomplete, will write more on wednesday. I'll cover everything in a very simple waywith praticle solutions.
thank you , that what was looking to develop on my tablet , I can use basic as this tutorial for other devices.
continue with tutorial , as many want to learn, but has no simple guide to base
you must wrote revision="cm-13.0" /> instead of revision=”cm-13.0” /> 'cause it give you an error that you can't be able to repo sync
fafa77140 said:
you must wrote revision="cm-13.0" /> instead of revision=”cm-13.0” /> 'cause it give you an error that you can't be able to repo sync
Click to expand...
Click to collapse
i literally stared at this for like 1h and didn't find any difference could you please elaborate more...
baconxda said:
i literally stared at this for like 1h and didn't find any difference could you please elaborate more...
Click to expand...
Click to collapse
The quotation marks surrounding cm-13.0 in first post are not the right ones. So you need to replace those quotation marks if you copied and pasted the code in your manifest. Just delete the quotation marks and type them again.
joshuous said:
The quotation marks surrounding cm-13.0 in first post are not the right ones. So you need to replace those quotation marks if you copied and pasted the code in your manifest. Just delete the quotation marks and type them again.
Click to expand...
Click to collapse
ohhhkayyy.........:good:
fafa77140 said:
you must wrote revision="cm-13.0" /> instead of revision=”cm-13.0” /> 'cause it give you an error that you can't be able to repo sync
Click to expand...
Click to collapse
good catch. I never thought the keyboard would be writting differently when not on the terminal. Thanks
jgcaap said:
good catch. I never thought the keyboard would be writting differently when not on the terminal. Thanks
Click to expand...
Click to collapse
No problems
fafa77140 said:
No problems
Click to expand...
Click to collapse
updated more stuff today.

[GUIDE][HOW-TO][T819]Build your own LineageOS 15.1 for T819

Hello and welcome to my first try to write an HOW-TO, don't kill me for my epic skillz in that ^^
After a nice chat with @LuK1337 that weekend I was able to build my own LineageOS ROM for our beloved Tablet. It works very nice and thus I think it should be fine to pass my information over to you, but first:
If your tablet eats your cat after that, you are on YOUR OWN! It is NOT my fault and even less the fault of @LuK1337!!
What works:
- Everything the T813 LineageOS can do + working Vibration + LTE
What does not work:
- Phone audio
So, let's start:
First you have this nice howto for the T813: https://wiki.lineageos.org/devices/gts210vewifi/build which you follow down to and including the "Download the source code" step with two lil modifications:
Install the build packages -> I had to "apt-get install python-minimal", too to make it work on Ubuntu 17.10.
Initialize the LineageOS source repository -> Well, we don't want LOS 14.1, so the command we use here is:
Code:
repo init -u https://github.com/LineageOS/android.git -b staging/lineage-15.1
After you finished the repo sync, which takes AGES on slower internet connections, you really should follow two optional steps below:
https://wiki.lineageos.org/devices/gts210vewifi/build#turn-on-caching-to-speed-up-build
https://wiki.lineageos.org/devices/gts210vewifi/build#configure-jack (Especially needed if you have not that much RAM. I did not wanna listen to @LuK1337 telling me that the build EATS RAM for breakfast, but it's true! You NEED more than 12 GB of RAM even with that setting!!)
Next one is the following lines:
Code:
mkdir -p ./.repo/local_manifests
wget https://www.dropbox.com/s/72cb5jix08y9jkv/envsetup.sh?dl=1 -O ./picks
wget https://www.dropbox.com/s/0fknl8w7zl6buz2/roomservice.xml?dl=1 -O ./.repo/local_manifests/roomservice.xml
chmod +x ./picks
repo sync
This loads the device specific stuff you will need now and prepares a step we need later.
Some useful and badly needed pickings from @LuK1337 are added when you next run this command:
Code:
./picks
Now once you are done:
Code:
. build/envsetup.sh
ALLOW_MISSING_DEPENDENCIES=true brunch gts210velte
In theory we now can go to bed and check for a result in $OUT after it finished build after about 6-10 hours. There waits a nice install ZIP for TWRP in there.
Flash on a T819 with FORMATTED and thus useable /data partition. This can and HAS TO be done in TWRP, too. If the file laments about a wrong bootloader, you should update your tablet to most recent official 7.0 firmware first!
Maybe this is a first start for ppl trying to tinker with T819 and add even more things to it, like Phone audio. At least is was a nice odyssey and the result I got was perfect. Have fun with your track down to the crazy self builders ^^
P.S. If you want GAPPS, load em here: https://sourceforge.net/projects/unofficial-opengapps-8-1/
Wanna update? SURE ^^ But be sure your picks are the most recent above.
Code:
repo forall -c 'git am --abort ; git cherry-pick --abort ; git merge --abort ; git clean -fdx ; git reset --hard' ; repo sync -j30 --force-sync -f
./picks
Code:
. build/envsetup.sh
rm -rf out ; ALLOW_MISSING_DEPENDENCIES=true brunch gts210velte
Hello, new version ^^
Updates will be added here:
15.01.18:
If you have funny build problems indicating compiler suite problems... Update the platform tools. Fixes some funny problems with newer LOS builds.
And always be sure you have the most recent picks and roomservice.xml
14.01.18:
Still wanna tinker with your own build? I updated the manual making it waay smaller thx to recent changes.
08.01.18:
https://forum.xda-developers.com/tab-s2/orig-development/rom-lineageos-15-1-t3732074
https://forum.xda-developers.com/tab-s2/orig-development/rom-lineageos-15-1-t3732070
Have fun, did go on LuK1337 and others nerves and this is the result. Don't expect a full featured ROM though. Calling is a bit silent when you don't hear ppl and they don't you ^^
25.12.17:
Updated the link to LuK1337's picks to a new one disabling stuff not working on new checkouts anymore. Source is LuK1337 again ^^
Completely removed the after build zip editing by modifying another file and keeping the line uncommented-out in BoardConfig.mk. This way the whole file correctly checks for the CORRECT bootloaders. This way the build.prop file in /system on the device is correct, too.
Added link to unofficial GAPPS for ppl who don't want to tinker inside GAPPS zip files.
Started some tinkering with RIL. Results up to now: ZIP file +30 MB aka LOS has all stuff built needed for telephony. Working? Naaah ^^
and where is the link to test the build
ronald_w. said:
and where is the link to test the build
Click to expand...
Click to collapse
There is none. This is a manual how to make it yourself. If I ever manage to get RIL working... MAYBE I will upload one or two builds.
emuandco said:
There is none. This is a manual how to make it yourself. If I ever manage to get RIL working... MAYBE I will upload one or two builds.
Click to expand...
Click to collapse
this is also my problem
ronald_w. said:
this is also my problem
Click to expand...
Click to collapse
So you made your own build already? Working fine (except RIL)?
emuandco said:
So you made your own build already? Working fine (except RIL)?
Click to expand...
Click to collapse
for now not working, build process without errors but the kernel will not boot the device (lineage 15.0 with other build tree) , new build is 8%
No need to build it at all. It is enough to just edit installer script. Change gts210wifi to gts20lte and delete assert for BL. It works perfect, I tried, I use it. And of courese to use newset twrp 3.2.
ivanox1972 said:
No need to build it at all. It is enough to just edit installer script. Change gts210wifi to gts20lte and delete assert for BL. It works perfect, I tried, I use it. And of courese to use newset twrp 3.2.
Click to expand...
Click to collapse
You know that we are talking about the NON Exynos devices, so you? so it is gts210VEwifi.
And even if it does, lucky you. I don't like the idea to use defconfigs for another device on my tablet.
EDIT: Current status regarding RIL... After hours with LuK1337 and his skills and code source juggling... Daemon runs, SIM detected, IMEI detected, network sorta... runs? This means SMS receiving runs and not much more for now. Still investigating.
Of courese, I forget ve to write, my lapsus. Otherwise it works perfect. They use same board.
But, if you make RIL there, it diffferent story. Every credit to you, if you need someone to test those builds I am here
ivanox1972 said:
Of courese, I forget ve to write, my lapsus. Otherwise it works perfect. They use same board.
But, if you make RIL there, it diffferent story. Every credit to you, if you need someone to test those builds I am here
Click to expand...
Click to collapse
Well, I would prefer someone knowing more of that stuff helping me to fix the remaining bugs. I even went down the pipe to try to disassemble the original libril.so but no big results from that... Right now you have all phone stuff included and thus for example can install WhatsApp again + GAPPS install the DialerFramework and Google Dialer. You get IMEI information, Baseband Information, SIM Phone Number Information and you can receive SMS, but no calling, no SMS sending and no data network works for now.
Current logcat: https://hastebin.com/iguvaxagas.xml
Thanks for hard work, I'll be very happy to have full oreo Los on tab s2!
Well I've been fiddling all day to get it to work, ubuntu 17.* have been removed from the main ubuntu site, and using the the cdimage.ubuntu locations gave me the install iso's but ended in not properly working install repos of the needed apps.
So went for 16.04 after several attempts, every installs fine, setted everything up according the tutorials in the OP and checking my old info for setting up ubuntu VM (or full pc's) what i did in the past, those where the same since my last succesfull setting up build machines.
but in the end I had to use a "repo sync -f --force-sync" instead of repo sync before ./picks, otherwise it ended up with a ton of errors in running ./picks.
After that that being running good, and finally comming to build I end up after 50 to 60 seconds in
Code:
[44/44] bootstrap /home/ragebuilder/android/lineage/out/soong/.minibootstrap/build.ninja.in
[4/4] /home/ragebuilder/android/lineage/out/soong/.bootstrap/bin/minibp /home/ragebuilder/android/lineage/out/soong/.bootstrap/build.ninja
[862/863] glob vendor/qcom/opensource/interfaces/display/config/1.0/Android.bp
[56/56] /home/ragebuilder/android/lineage/out/soong/.bootstrap/bin/soong_build /home/ragebuilder/android/lineage/out/soong/build.ninja
/home/ragebuilder/android/lineage/out/build-lineage_gts210vewifi.ninja is missing, regenerating...
[527/1117] including ./hardware/qcom/media-caf/msm8952/Android.mk ...
./hardware/qcom/media-caf/msm8952/Android.mk:4: warning: target list is : msm8952
[1117/1117] including ./vendor/samsung/zerofltexx/Android.mk ...
build/core/Makefile:34: warning: overriding commands for target `/home/ragebuilder/android/lineage/out/target/product/gts210vewifi/system/lib64/libgps.utils.so'
build/core/base_rules.mk:391: warning: ignoring old commands for target `/home/ragebuilder/android/lineage/out/target/product/gts210vewifi/system/lib64/libgps.utils.so'
build/core/Makefile:34: warning: overriding commands for target `/home/ragebuilder/android/lineage/out/target/product/gts210vewifi/system/lib64/libloc_core.so'
build/core/base_rules.mk:391: warning: ignoring old commands for target `/home/ragebuilder/android/lineage/out/target/product/gts210vewifi/system/lib64/libloc_core.so'
build/core/Makefile:34: warning: overriding commands for target `/home/ragebuilder/android/lineage/out/target/product/gts210vewifi/system/lib64/libloc_eng.so'
build/core/base_rules.mk:391: warning: ignoring old commands for target `/home/ragebuilder/android/lineage/out/target/product/gts210vewifi/system/lib64/libloc_eng.so'
[ 99% 1585/1586] glob vendor/qcom/opensource/interfaces/*/Android.bp
ninja: error: '/home/ragebuilder/android/lineage/out/target/common/obj/JAVA_LIBRARIES/org.cyanogenmod.platform.internal_intermediates/classes.jack', needed by '/home/ragebuilder/android/lineage/out/target/common/obj/APPS/AdvancedDisplay_intermediates/with-local/classes.dex', missing and no known rule to make it
18:57:35 ninja failed with: exit status 1
#### failed to build some targets (54 seconds) ####
Tried resetting up the build VM now 6 times to find anything I could've done wrong, but cant find any, just end up at the same manner with this error.
Also made sure that Jack is setup properly ( https://forum.xda-developers.com/android/software/aosp-cm-los-how-to-fix-jack-server-t3575179 ) and jack starts and stops, shouldn't that also solve the ninja problem? Soz my last home build was nearly 2 years ago and a lot could have been changed, but normally google is my friend to fix it, not this time..
Has anyone some advice what to look at?
I have removed in hardware/samsung/AdvancedDisplay/Android.mk the line org.cyanogenmod.platform.internal and the directory /hardware/samsung/AdvancedDisplay/src/com/cyanogenmod/. (LineageOS 15.0)
Build is complete,
[100% 84744/84744] build bacon
Package Complete: /home/ronald/android/system/out/target/product/gts210velte/lineage-15.0-20180106_214317-UNOFFICIAL-gts210velte.zip
make: Verzeichnis „/home/ronald/android/system“ wird verlassen
#### make completed successfully (03:05:39 (hh:mm:ss)) ####
Click to expand...
Click to collapse
but for me this rom doesn't work properly --> boot stuck with sim card not detected
ronald_w. said:
I have removed in hardware/samsung/AdvancedDisplay/Android.mk the line org.cyanogenmod.platform.internal and the directory /hardware/samsung/AdvancedDisplay/src/com/cyanogenmod/. (LineageOS 15.0)
Build is complete,
but for me this rom doesn't work properly --> boot stuck with sim card not detected
Click to expand...
Click to collapse
That got me just a step furter
14:07:50 Build configuration changed: "" -> "lineage_gts210vewifi-userdebug", forcing installclean
ninja: warning: bad deps log signature or version; starting over
Click to expand...
Click to collapse
now it is waiting time agian....
But thanx for the tip!!!
RagingHarry said:
That got me just a step furter
now it is waiting time agian....
But thanx for the tip!!!
Click to expand...
Click to collapse
I have no clue what you did wrong or why you tinker with LOS 15 with a manual for 15.1, but... check post #2 and load your ROM from there.
emuandco said:
I have no clue what you did wrong or why you tinker with LOS 15 with a manual for 15.1, but... check post #2 and load your ROM from there.
Click to expand...
Click to collapse
That 15.0 was the person I quoted but that step was a test to see if it would hold further, but also then it ended up in errors and a crash of the build.
I did everything with copy pasting from the guide in OP and the linked pages, why it went wrong for me I still don't understand, have been making homebuilds since my Galaxy S2 and always got it to work.
But now you made the new LOS threads I will stick to that for now, and maybe try later again.
Thnx for your efforts and now the Unofficial support start for the T819!
RagingHarry said:
That 15.0 was the person I quoted but that step was a test to see if it would hold further, but also then it ended up in errors and a crash of the build.
I did everything with copy pasting from the guide in OP and the linked pages, why it went wrong for me I still don't understand, have been making homebuilds since my Galaxy S2 and always got it to work.
But now you made the new LOS threads I will stick to that for now, and maybe try later again.
Thnx for your efforts and now the Unofficial support start for the T819!
Click to expand...
Click to collapse
Sure, but beware, we have now device repos for gts210velte and gts28velte ^^
So roomservicexml more should look like this now:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="gts210vewifi-dev/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="lineage-15.1" />
<project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" revision="staging/lineage-15.1" />
<project name="LineageOS/android_hardware_samsung" path="hardware/samsung" remote="github" revision="staging/lineage-15.1" />
<project name="LineageOS/android_hardware_sony_timekeep" path="hardware/sony/timekeep" remote="github" revision="lineage-15.0" />
<project name="gts210vewifi-dev/android_device_samsung_msm8976-common" path="device/samsung/msm8976-common" remote="github" revision="lineage-15.1" />
<project name="gts210vewifi-dev/android_device_samsung_gts210velte" path="device/samsung/gts210velte" remote="github" revision="lineage-15.1" />
<project name="gts210vewifi-dev/android_device_samsung_gts28velte" path="device/samsung/gts28velte" remote="github" revision="lineage-15.1" />
<project name="gts210vewifi-dev/android_kernel_samsung_msm8976" path="kernel/samsung/msm8976" remote="github" revision="lineage-15.1" />
<project name="LineageOS/android_packages_apps_Updater" path="packages/apps/Updater" remote="github" />
</manifest>
And brunch has to be started with that hw id, too:
Code:
ALLOW_MISSING_DEPENDENCIES=true brunch gts210velte
Code:
ALLOW_MISSING_DEPENDENCIES=true brunch gts28velte
Feel free to try it, if it works, tell me. Not much time these days.
Thnx!
Gonna give it a try in a few days when I have some free time.
Feel free to try it, if it works, tell me. Not much time these days.
Click to expand...
Click to collapse
[ 90% 83198/92320] Building with Jack: /home/ronald/android/syst...mmon/obj/JAVA_LIBRARIES/services.core_intermediates/classes.jack
FAILED: /home/ronald/android/system/out/target/common/obj/JAVA_LIBRARIES/services.core_intermediates/classes.jack
ERROR: /home/ronald/android/system/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java:260.8: The import org.lineageos.internal.util.ActionUtils cannot be resolved
ERROR: /home/ronald/android/system/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java:2017.17: ActionUtils cannot be resolved
[ 91% 84356/92348] Building with Jack: /home/ronald/android/syst...get/common/obj/APPS/Updater_intermediates/with-local/classes.dex
ninja: build stopped: subcommand failed.
19:24:06 ninja failed with: exit status 1
#### failed to build some targets (02:35:28 (hh:mm:ss)) ####

[HOW-TO] Building TWRP from source with goodies

I decided to put together a guide on how to build TWRP from source, having successfully built it myself and restored a few of the goodies that disappeared in the 3.3.1-0 release (e.g. install kernel). Also, marlin (Pixel XL) has had a few advancements over sailfish (Pixel), so this is a way to get back on par even if unofficially.
Whilst I'll go into a good level of detail, this will not be a hand-holding guide. You are expected to be able to use the Linux command line, and tools such as Git and repo.
Download sources
This guide is based upon building from the Minimal TWRP sources, which are based upon a subset of Omnirom. At the time of writing, the latest branch is twrp-9.0 (Pie). (If you are reading this some months after I have written this guide, check for later branches.) Follow this link for the repo, and the instructions:
https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni/tree/twrp-9.0
Firstly, create a folder to put this in, e.g. $HOME/twrp-minimal-omni, and change to that directory. Then execute the following for a shallow clone (to save space...):
Code:
repo init --depth=1 -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0
Before doing the repo sync, we will need a few extra repositories to be downloaded. Create a subfolder .repo/local_manifests and create an XML file (e.g. custom.xml) with the following content:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="android_device_google_marlin" path="device/google/marlin" remote="TeamWin" revision="android-9.0" />
<project path="hardware/qcom/bootctrl" name="platform/hardware/qcom/bootctrl" groups="pdk-qcom" remote="aosp" />
<project path="hardware/qcom/msm8998" name="platform/hardware/qcom/msm8998" groups="qcom_msm8998,pdk-qcom" remote="aosp" />
</manifest>
android_device_google_marlin - contains the configuration and build instructions for marlin and sailfish
hardware/qcom/bootctrl - this is part of AOSP, and is required for building TWRP
hardware/qcom/msm8998 - extra chipset stuff that is required for marlin/sailfish
You can do a repo sync now to download the sources.
Additionally, we will need some driver binaries that are available from Google. Get the Google (Qcom is not necessary) drivers for the latest Pie release here:
https://developers.google.com/android/drivers#sailfishpq3a.190801.002
Extract the files into the same folder as you created, and execute e.g as follows, and follow the prompts:
Code:
./extract-google_devices-sailfish.sh
The binaries will be extracted into a vendor/google-devices/ sub-folder. Do not rename the sub-folder - the configuration looks for exactly this path.
You now have all of the source files needed.
Do the build
We then more-or-less follow the instructions as per the original minimal manifest page:
Code:
export ALLOW_MISSING_DEPENDENCIES=true
. build/envsetup.sh
lunch omni_sailfish-eng
mka bootimage
The boot image will be created at out/target/product/sailfish/boot.img.
Use fastboot boot out/target/product/sailfish/boot.img to test it in fastboot mode on your device.
Hope this helps someone out there!
XDA:DevDB Information
Building TWRP for Sailfish, Tool/Utility for the Google Pixel
Contributors
NZedPred
Version Information
Status: Stable
Created 2020-01-03
Last Updated 2020-04-26
Downloads
Occasionally I will make available one of my builds. They will be in the folders below.
Please note the following:
You are always encouraged to use the official versions of TWRP instead of these
I am not liable for anything that goes wrong as a consequence of using them
As a general rule, I will not be fixing bugs or adding features to these builds (other than enabling features that already are in the code) - they are built straight from the TWRP sources
Google Pixel (Sailfish) Unofficial TWRP
Google Pixel (Marlin) XL Unofficial TWRP
GPL compliance
The downloads in this folder use pre-compiled Linux kernels. The source for these can be found here (thanks to @razorloves for pointing out the correct URL):
[URL="https://github.com/bigbiff/android_kernel_google_marlin/commits/lineage-16.0[/URL]
Refer to the tags/branches prefixed with "android-msm-marlin-".
Log
20200301 - Added version "3.3.1-4-experimental-multi-user-decrypt" for Sailfish and Marlin, ability to decrypt data for multiple users. Refer to the advanced menu.
20200223 - Added version string "3.3.1-3-unofficial-nzedpred" for Sailfish, very minor updates from TWRP
20200115 - Added a build of OrangeFox Recovery for Sailfish
20200105 - Added f2fs support (consider the f2fs option to be experimental, and it may not even work)
20200104 - Initial version for sailfish with feature parity with marlin
Building other recoveries - Orangefox
Orangefox
Quick guide for the impatient
Create a folder that will be your OrangeFox folder, and change into it. All commands below will be relative to this folder.
Code:
# Initialize the repo
repo init --depth=1 -u https://gitlab.com/OrangeFox/Manifest.git -b fox_9.0
# Create local manifests folder
mkdir .repo/local_manifests
# Create the local manifest for sailfish/marlin - use gedit, kate, leafpad, whatever your text editor is
gedit .repo/local_manifests/orangefox-marlin.xml
After the last command, the text editor window will open. Paste the following content into it.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="TeamWin" fetch="https://github.com/TeamWin" review="https://gerrit.twrp.me" />
<project name="external_magisk-prebuilt" path="external/magisk-prebuilt" remote="TeamWin" revision="master" />
<project name="android_device_google_marlin" path="device/google/marlin" remote="TeamWin" revision="android-9.0" />
<project path="hardware/qcom/bootctrl" name="platform/hardware/qcom/bootctrl" groups="pdk-qcom" remote="aosp" />
<project path="hardware/qcom/msm8998" name="platform/hardware/qcom/msm8998" groups="qcom_msm8998,pdk-qcom" remote="aosp" />
</manifest>
Then save and close the editor, and continue with the following commands.
Code:
# Sync the repos
repo sync -j8
Additionally, we will need some driver binaries that are available from Google. Get the Google (Qcom aren't necessary) drivers for the latest Pie release here:
https://developers.google.com/android/drivers#sailfishpq3a.190801.002
Extract the files into the same folder as you created, and execute as follows, and follow the prompts:
Code:
./extract-google_devices-sailfish.sh
The binaries will be extracted into a vendor/google-devices/ sub-folder. Do not rename the sub-folder - the configuration looks for exactly this path.
You now have all of the source files needed.
At the time of writing, there is a bug that prevents the FB2PNG module building (I think this is FrameBuffer2PNG - screenshots). Edit the file as below
Code:
# Edit sailfish config
gedit device/google/marlin/sailfish/BoardConfig.mk
# Edit marlin config
gedit device/google/marlin/marlin/BoardConfig.mk
Around line 204, change
Code:
TW_INCLUDE_FB2PNG := [U]true[/U]
to
Code:
TW_INCLUDE_FB2PNG := [U]false[/U]
Now continue to build as normal
Code:
. build/envsetup.sh
export ALLOW_MISSING_DEPENDENCIES=true
# For building sailfish use this line
lunch omni_sailfish-eng
# For building marlin use this line
lunch omni_marlin-eng
mka bootimage
NOTE: If you are building for sailfish, don't run the lunch omni_marlin-eng line. Also, you may get an error "Your device can't be found in device sources..". That's actually OK, it's just because there isn't a folder called device/google/sailfish. If the error bothers you, just create the folder and re-run the lunch command (and ignore the warning about device/google/sailfish/omni.dependencies file not found).
This will create a fastboot bootable image in the $OUT folder called boot.img. You can try booting it with your device in fastboot mode:
Code:
fastboot boot $OUT/boot.img
There are also a number of environment variables that OrangeFox has available. I haven't really tested whether or not they are necessary. Will update this post after I do some investigation.
Could you make twrp for marlin with support F2FS? I did but unsuccesed.
chuate92 said:
Could you make twrp for marlin with support F2FS? I did but unsuccesed.
Click to expand...
Click to collapse
You will need to add a flag to the device/google/marlin/marlin/BoardConfig.mk file:
Code:
TARGET_USERIMAGES_USE_F2FS := true
Additionally, the kernel needs to support f2fs. No idea if the one that comes with the repos supports it, but you could always grab one from a kernel that does and try that.
I'll try doing a build later on, but you will have to test at your own risk.
NZedPred said:
You will need to add a flag to the device/google/marlin/marlin/BoardConfig.mk file:
Code:
TARGET_USERIMAGES_USE_F2FS := true
Additionally, the kernel needs to support f2fs. No idea if the one that comes with the repos supports it, but you could always grab one from a kernel that does and try that.
I'll try doing a build later on, but you will have to test at your own risk.
Click to expand...
Click to collapse
I followed your guide but, I didn't know how to do "Create a subfolder .repo/local_manifests and create an XML file (e.g. custom.xml) with the following content:". So I downloaded manual. Then I do build recoveryimage, I still got error them same I posted here https://forum.xda-developers.com/showthread.php?p=81384609#post81384609.
I didn't know why.
chuate92 said:
I followed your guide but, I didn't know how to do "Create a subfolder .repo/local_manifests and create an XML file (e.g. custom.xml) with the following content:". So I downloaded manual. Then I do build recoveryimage, I still got error them same I posted here https://forum.xda-developers.com/showthread.php?p=81384609#post81384609.
I didn't know why.
Click to expand...
Click to collapse
For the above, using the command line, from the folder you originally created you do this:
Code:
mkdir .repo/local_manifests
gedit .repo/local_manifests/custom.xml
If you don't have gedit, use e.g. kate, or whatever other text editor you have.
Also, you don't build a recovery image - you build a boot image.
Code:
mka bootimage
Anyway, I've updated the second post with a folder for Google Pixel XL as well. I'll upload there later (once AFH sorts itself out - I can't upload anything into the new folder yet).
For now, try using the build here (at your own risk):
https://www.dropbox.com/s/gvkvhklmu2fh0tx/twrp-marlin-unofficial-20200105.img?dl=0
tried this unofficial twrp for sailfish. it boots just fine as temporary recovery, when trying to install into ramDisk it acts as the official image, too large to fit the ramDisk
wizardwiz said:
tried this unofficial twrp for sailfish. it boots just fine as temporary recovery, when trying to install into ramDisk it acts as the official image, too large to fit the ramDisk
Click to expand...
Click to collapse
Yes, TWRP is now getting quite big and a lot of features would have to be removed to get it to fit into the ramdisk. This is something I've been spending some time on, but it seems to be a difficult ask at this point. I'll post if I ever get there...
I'm having some trouble with your guide. I am trying to compile not TWRP but orangefox recovery. I have the files and I will link them below. If you could either walk me through building orangefox or building it yourself, that would be amazing. I have a sailfish.
Link: https://gitlab.com/OrangeFox/Recovery
Spookybear said:
I'm having some trouble with your guide. I am trying to compile not TWRP but orangefox recovery. I have the files and I will link them below. If you could either walk me through building orangefox or building it yourself, that would be amazing. I have a sailfish.
Link: https://gitlab.com/OrangeFox/Recovery
Click to expand...
Click to collapse
I've had a look at this, and I don't think it's as straight forward as merely dropping in in the TWRP sailfish device tree and building. It reports success when building, but it hasn't actually built anything...
I'd suggest you go to their Telegram chat for building OrangeFox: https://t.me/OrangeFoxBuilding
@Spookybear - I managed to do a build. If you want to test (at your own risk!) you can get it here:
https://www.androidfilehost.com/?fid=4349826312261701399
@Spookybear - I managed to do a build. If you want to test (at your own risk!) you can get it here:
https://www.androidfilehost.com/?fid=4349826312261701399
NZedPred said:
@Spookybear - I managed to do a build. If you want to test (at your own risk!) you can get it here:
https://www.androidfilehost.com/?fid=4349826312261701399
Click to expand...
Click to collapse
Can you send me the zip file of your build environment, I'm getting ninja error 1. Thank you.
NZedPred said:
@Spookybear - I managed to do a build. If you want to test (at your own risk!) you can get it here:
https://www.androidfilehost.com/?fid=4349826312261701399
Click to expand...
Click to collapse
tested it. Working just fine. to bad it is based on twrp 3.3.1 (naturally) and therefor still to large to fit the RamDisk.
wizardwiz said:
tested it. Working just fine. to bad it is based on twrp 3.3.1 (naturally) and therefor still to large to fit the RamDisk.
Click to expand...
Click to collapse
I meant that you could compress your /scripts folder and so I could try to build different versions for when it gets updated or when I need to fix a bug.
Thank you
Spookybear said:
I meant that you could compress your /scripts folder and so I could try to build different versions for when it gets updated or when I need to fix a bug.
Thank you
Click to expand...
Click to collapse
I'll add a guide into the third post of this thread for it. It's a bit much trying to compress some 40GB of files. Best you use the guide and try to work out where things went wrong. Will update once its up.
Quick and dirty guide to compiling OrangeFox now up
NZedPred said:
I'll add a guide into the third post of this thread for it. It's a bit much trying to compress some 40GB of files. Best you use the guide and try to work out where things went wrong. Will update once its up.
Quick and dirty guide to compiling OrangeFox now up
Click to expand...
Click to collapse
Thank you, I will work on this later.
NZedPred said:
I'll add a guide into the third post of this thread for it. It's a bit much trying to compress some 40GB of files. Best you use the guide and try to work out where things went wrong. Will update once its up.
Quick and dirty guide to compiling OrangeFox now up
Click to expand...
Click to collapse
Thank you, it worked.
Is it possible to merge this patch into your build? It should fix the issue when doing multi-user backup. Thanks.
https://gerrit.omnirom.org/c/android_bootable_recovery/+/33944

Categories

Resources