[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

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:

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.


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.


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