[HOWTO] build eOS in old fashioned way with breakfast -- now with interactive script

I prefer to build in the good old fashioned way, because I‘m more flexible and I can stop when ever I want with CTRL+C. Since all eOS sources are available in e.foundation git we can build complete without any docker or docker command.
It’s tested on Linux Mint19. Don’t know if the script will work on Windows.

I have created 2 scripts.
the first is for only one time run to check your environment/dependencies
– download here https://ecloud.global/s/kLttdHMsTAyC99H
– run sudo chmod a+x run_once.sh
– copy it into your build folder

the second one is an interactive script which is doing all needed steps for building
– download here
– run sudo chmod a+x 161.sh
– copy it into your build folder

Now copy your roomservice.xml (sample here) also into your build folder

open terminal in your build folder and
– run sudo ./run_once.sh
– run (without sudo) ./161.sh
answer all questions and hours later you will have your own build eOS.zip created :smiley:

If you will find any error, pls let me know, so I can update the script.

The following is all incl. in the 161.sh script from above. So no need anymore

We start with creating the needed directory:
mkdir -p ~/bin
mkdir -p ~/android/eOS

next step: installing repo command
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

next step: make it executable
chmod a+x ~/bin/repo

Next step: initialize the eOS source repository
cd ~/android/eOS
repo init -u https://gitlab.e.foundation/e/os/android.git -b v1-pie

next step: create a roomservice.xml with all needed sources for your device
example: https://ecloud.global/s/Hgi3XbDdxditGEj

next step: create a folder 'local_manifests in ~/android/eOS/.repo/

next step: put your roomservice.xml in folder ~/android/eOS/.repo/local_manifests/

next step: downloading all sources. This will need some hours, because it‘s downloading more than 100 gb
repo sync

OK, hours later we can start the build with:
source build/envsetup.sh
breakfast NameOfYourDevice

next step: activate ccache
export USE_CCACHE=1

next step: setup ccache size
export ccache -M 50G

Next step: start building:
brunch NameOfYourDevice

And hours later you will find in your folder ~/android/eOS/out/target/product/
your eOS.zip file (the name will change, that‘s why I‘m talking about eOS.zip)


This short manual is more aimed at experts and developers who already know the basics, but unfortunately not at beginners.

If you are perhaps in the next few months in the most liveable city in the world a basic course “Build /e/OS in old fashioned way with Breakfast”, the Coronavirus exit restrictions and the entry stop are lifted, I would promptly register as a participant for a paid seminar.

if you are going step by step you will get your own eOS-zip after several hours.
No need to be an expert or developer. … trust me :wink:


Agree with @harvey186@archje if you have a system with the correct configurations building a ROM is not exactly all that technical. We just copy paste the commands and the system does the rest. Docker is more simple if you like to try but then you do not have much control on what is happening.

Hej @harvey186 and @Manoj, you both speak with your years of experience around Android™ and build custom rom builds. Many things are as natural to you as brushing your teeth.

My “programming skills” are reduced to a few CSS(3), HMTL and PHP framework. Well, In the last months I learned to use the ADB and Fastboot commands. This was very easy.

But that’s it. The right introduction to the beginning “/e/ custom rom building” would be important. With the first feeling of success, things went steadily.

1 Like

@archje I think: first try it and when it won’t work, than grumble.
You are so firm with web search, so it would easy to find something like this: https://source.android.com/setup/build/initializing.

So, go ahead in build. Wie sagt man so schön: Nich schnacken, machen ! :slight_smile:
Sorry for german language :frowning:


@harvey186, my foreign exchange is:

  • think first, talk later, and act later.

  • Suck it and see.

But if I can’t judge where the right beginning is, trial and error remains only a wish. Yeah, in WWW there is a lot to read, but also a lot of unproductive things.

@archje remember how you ( we all ) used to search the web when we got stuck while coding. How we picked up tips from other developers on how to write a particular line of code or fix an issue. It is the same with ROM building. There will be errors. Believe me tons and tons of errors will show up on the screen. But at the same time there is also help …tons and tons of it is available on the net. It is impossible that some developer / ROM builder in some part of the globe has not run into the same issue you face. As you have been a developer you know how to find the exact line where the error seems to be indicated. Paste that in the browser and you will get a solution. Try it as @harvey186 says it is fun.


Thanks for the encouraging words. And yes, I’ve and I want to have more fun.

But the first sticking point starts with Linux. Linux and a die-hard Wind°ws(ianer). The switch to the terminal level is hard.

My experience is: At the university I met a number of lecturers, often luminaries in their field, but without in-depth pedagogical competence. The same is reflected in WWW HelpDeks and Internet contributions. Well, whatever. I’ll keep trying …

That’s all OK, but I don’t understand your critics to the HowTo. I don’t like cheating against something without trying.

Unfortunately, another misunderstanding. I didn’t criticize your HowTo but made a statement from my point of view. Criticism sounds different to me.

Thank you so much for the HowTo @harvey186! Looks great.

Hello harvey186,
can I use your procedure to install /e/ on a “Samsung S5 mini” starting from a Lineage rom (considering that this phone isn’t yet supported from /e/)?
I’ m not sure but I think to have read some time ago somewhere in the forum that this would be possible.
Thank you for your precious hints.

Sure, if you have found sources for your device which are lineage compatible, you can use this way.
Put it in the roomservice.xml and start.

You can also, for test the sources, clone them manually in the related folder after the sync is done.Than you don’t need the roomservice.xml

1 Like

Thank you!
In this moment I don’t know what the roomservice.xml is and where to find it :slight_smile:but I’ll do a research here and find the solution, I’ m sure.
Bis bald…

I have posted a rommservice.xml in first post https://ecloud.global/s/GczxjZxG9AA8deR

Hi harvey186,
I cannot download the 2 scripts you created. when I click on the links, I am directed on my /e/ email where no file is naturally found.

Sorry, could you try again.

It works now, thank you so much!
I’ve never tried to build and I don’t know if I will succeed but I want to try! :slight_smile:
My Ubuntu knowledge is poor but if you say that the procedure is step by step, I could have a chance…
But first: what should be my build folder? any folder in my choice?

Yes, something like eOS or what ever you want

And let me know if something won’t work. It’s interesting for me to know if it will work for ‘newbees’