[HOWTO] Build /e/ without docker for non LineageOS supported devices

Let me begin saying, this is not an a-z explanation on how to build custom ROM, many things can go wrong! I’m just sharing how i build my first working /e/ ROM for a non Lineage OS supported device.

In this howto I’ll use example repo’s for device Moto G5S codename montana. You can check them out and find out where i forked them from
proprietary_vendor_motorola_montana
android_kernel_motorola_msm8937
android_device_motorola_montana

To build /e/ you need vendor, device and kernel files for your device. This how-to assumes you are lucky and can find those on the Internet/ GitHub. For my device, montana i found sources reading a XDA topic. So maybe for your device there are topics on the internet also.

##Let’s get started

Create an GitHub account if you don’t have this.
Find your device, vendor and kernel on GitHub. Click on fork. This will create a “copy” to your own GitHub account.

Create your build script as described here

I suggest you first try to build a supported device to check if everything is ok:
export BRANCH_NAME=‘v1-oreo’
export DEVICE_LIST=‘s2’

The build system we use “searches” for “lineage-15.1” branches on our forked repo when you build v1-oreo. So the forked repo’s should have a branch name “lineage-15.1”. If they have other names (sometimes they are called “oreo” or “8.1”) we need to rename them. I’m sure this can be done otherwise but i want don’t want to touch the build script because i want 100% /e/ builds.

To rename repo:
First clone your freshly forked GitHub repo’s: clone
copy the https:// line by clicking the copy button.

Then open a terminal on your computer and type: (the dot at the end means in the current directory)
type git clone https://your-forked-repo-name .
type git checkout -b lineage-15.1
type git push --all
Now the new branch is pushed on your GitHub repo. (Do this for all forked repo’s)

Now we must “tell” the build system we want our forked repo’s synced and included in the build.

Create a file in /srv/local_manifests called roomservice.xml. Add your forked repo’s in this file like this: (Take a close look at the vendor and device code name in the path variables. They must match your’s.)

Set the correct device code and branch in the build script:
export BRANCH_NAME=‘v1-oreo’
export DEVICE_LIST=‘montana’

When you get “duplicate path” errors, then remove the duplicate in /srv/src/OREO/.repo/local_manifests/proprietary.xml.
And edit the build script:
export INCLUDE_PROPRIETARY=false

Now everything is set, and you can run the build script. Hopefully it goes well. As said before a ton of things can go wrong.

12 Likes

Good work. Thank you very much for detailed information :+1:

1 Like

By the way, I have tested this work for my xiaomi Max2 — oxygen.
Everything works fine, but at 99 percent thd built fails. 99 percent, to steps where left over.
I’m working on a solution, bug anyway, the way Andre has described is working.

2 Likes

Great article @andrelam. We need more such gems from you :slight_smile:
@harvey186 as usual thanks for testing out the scripts

1 Like

Thank you @andrelam, your post makes it clearer to me what’s in the game of building /e/ (and LineageOS)
And i’ve finally seen that my note4 (snapdragon) is trltexx while note4 (exynos) is trletexx: these are very different names :crazy_face:

i’m gonna try building /e/ for trltexx in the next days and let you know how it goes

1 Like

nice article! I’ll read it again because I’m not use to it

1 Like

Thank you very much. Really nice and descriptive article despite that you write that is not an A - Z guideline is extremely useful. Now I’m building /e/ for Motorola Sanders (Motorola G5S Plus) lets hope it works. If everything goes well I’ll publish it just in case someone like me need it.

1 Like

Hi zerohasherbn,

did you manage to get a working build for the Moto G5S Plus?

I’m in no position to build it right now, but at the point of deciding what to firmware to flash my G5S Plus with.

Graphene doesn’t appear ready. Done Lineage already on previous Moto G2, and if can’t get /e/ build will go back to Lineage and deGoogle it: https://old.reddit.com/r/LineageOS/comments/cl5c90/degoogling_lineageos_instructions_august_2019/?st=jzit8h5p&sh=96bc42ff

hi @andrelam , your thread his very intersting and i managed to build /e/ for codename davinci device but my desktop OS is under linux solus and this OS repo lack some dependencies so i ask if you can build it from those device repositories ? It’s an unofficial lineageOS build . Thank a lot for reading and hope answering and fingercross can do it :wink:

1 Like

For uncompatible but Treble-enabled (Shipped with Oreo or more recent) devices, you can also check the topic about the GSI :

1 Like

@andrelam, is it possible in your opinion to do this for Raspberry pi 3B+ for an x86 ARM processor? I am eager to try. Also, I am wondering how long it took you to do the build? What were the specs of your virtual machine? I have one with 4 cores and 16GB ram, hoping that’s enough… Or is it in system memory? I could increase that to 50 gb if necessary anyway!

If you will find lineageOS sources for the Rpi or any other sources you can try.

But as far as I know, there are no x86 sources available

Thank you very much. I will try compiling sources today!

I would really appreciate if anyone could help with dropping links here… Thanks!!!

What kind of links do you mean ??

As in software I will need to compile to create /e/ for RPi 3B+.

I think everything is described in the builde.sh from first post

1 Like

Thank you. I’ll just use it :wink: I was trying to use docker but now it feels a little futile… RPi doesn’t have a codename that I know of

Hi,

I’ve just tried to build /e/ (BRANCH_NAME=v1-pie, DEVICE_LIST=a70q) for Samsung Galaxy A70 by strictly following this guide and after several hours I got this error on the linux terminal:

[sáb nov 16 04:08:32 CET 2019] Missing “vendor/lineage”, aborting

And in the log file I found:

error: Cannot checkout e/os/android_device_lineage_sepolicy: ManifestInvalidRevisionError: revision v1-pie in e/os/android_device_lineage_sepolicy not found
error: in sync -c --force-sync: revision v1-pie in e/os/android_device_lineage_sepolicy not found

Any idea on how to fix this error? Any help would be much appreciated.

I’ve used repos from https://forum.xda-developers.com/galaxy-a70/development/rom-lineageos-16-0-t3968893 (unofficial ROM LineageOS 16 for Galaxy A70)
For the first try I used all the repos and manifest you can find in the previous URL. For the second try I used only the propietary, kernel, device, android_pacakges_resource_devicesettings and a manifest similar to that included in this guide. For both builds I got the same abovementioned error.

An additonal thing that catched my attention in the build process was that in some moment the build script asked for the username and password for [https://gitlab.e.foundation’:]
is that strictly needed? Do we have to register in /e/gitlab to succesfully build? I jus pressed enter for both username/password, the process continued…

Thank you very much for your help

Best regards,

I can’t find this repo on gitlab.e.foundation … Maybe it’s on lineage repo’s and there is no v1-pie branch. Can you post screenshot of manifest file?

you have to clone it manually from https://github.com/LineageOS/android_device_lineage_sepolicy