[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