How to build Nougat version of e/os?

Dear all

I would like to try e/os on my Samsung S5 mini SM-800H (kmini3g), an ancient device from 2015. Latest stock rom is Android 6. Repos for device, kernel and vendor can be found on Github for CM-14.1. So I thought I could build the respective e release for nougat.
But, having built several versions of e for Android 10/11 before, my building system (Ubuntu 20.4) seems not to be compatible with the old sources any more.
Any suggestions on how to do it the easy way? Should I use the Docker images (I never used that before)? Or do I have to reconstruct a historical setting fit to build nougat?
Is it possible at all (without a Phd in AOSP/Lineage/CM ROM building)?

Thanks for any advice!

Regain your privacy! Adopt /e/ the unGoogled mobile OS and online servicesphone

1 Like

Ok, I take from Week 12, 2022 : Development and Testing Updates

Issues with device still on Oreo or Nougat

We are facing build issues with devices still stuck on Oreo and Nougat. The attempt is to check which can be upgraded. If not possible, we will have to stop supporting those specific devices.

So, the build system is broken for Android 7 and cannot be fixed? I assume that the Docker image then won’t work as well, right? Well, I hoped by choosing the right tag from e / os / releases · GitLab I would be able to init a repo consistent for building something like v.21.1-nougat… But apparently it is not so easy…

I don’t think that is the case: I have been able to make unofficial nougat builds for several Sony devices, with no problems, for /e/OS versions up to 0.21. I haven’t tried with 0.22 or 0.23 yet, but I don’t foresee any problems. I build using the script from here, amended with the following environment variables

export CCACHE_SIZE=300G
export BRANCH_NAME='v0.21-nougat'
export DEVICE_LIST='taoshan,nicki,ivy'
export LC_ALL=C

That script picks up the scripts that do the actual work from the /e/ Docker CI/CD repo

1 Like

my building system (Ubuntu 20.4) seems not to be compatible with the old sources any more

sorry for topic revive - did a nougat build recently and saw some devices old 3.x kernels need a small yacc/bison fix to continue to compile with gcc10+ - some kernels still received the fix, but then the branch was deprecated with Lineage and some device kernels are still without the correction.

If someone runs into

/usr/bin/ld: scripts/dtc/ multiple definition of `yylloc'

apply this change (for kernels <4.14 in _shipped suffixed file, in 4.14<5.6 in the real source files, not shipped… but as those are active branches they received that)

--- a/scripts/dtc/dtc-lexer.lex.c_shipped
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped
@@ -637,7 +637,7 @@ char *yytext;
 #include "srcpos.h"
 #include ""
-YYLTYPE yylloc;
+extern YYLTYPE yylloc;

You can build cm-14.1 / nougat easily with current distributions java/gcc versions - but you’ll need to have java+javac from openjdk-8 installed and set as default for Android 7. Ubuntu+Debian can have jdks in parallel and switched via update-alternatives. Later Androids from 8 come with prebuilt java anyway.