I wanted to make an /e/OS ROM with Lindroid, and I figured a good starting point before I try to do anything fancy like patch the OS and kernel (and apply a patchset designed for Lineage to /e/OS – god knows what that’ll break!) was teach myself how to compile /e/OS the normal way, with no changes. I started following the official build instructions and got as far as starting the build before getting this error:
$ sudo podman run -v $(pwd)/src:/srv/src -v $(pwd)/zips:/srv/zips -v $(pwd)/logs:/srv/logs -v $(pwd)/ccache:/srv/ccache -e BRANCH_NAME=v2.6.3-u -e DEVICE_LIST=shiba -e "REPO=registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community" registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community
Set cache size limit to 50.0 GB
>> [Mon Dec 30 22:53:37 UTC 2024] Branch: v2.6.3-u
>> [Mon Dec 30 22:53:37 UTC 2024] Devices: shiba,
>> [Mon Dec 30 22:53:37 UTC 2024] (Re)initializing branch repository
>> [Mon Dec 30 22:53:38 UTC 2024] Branch name v2.6.3-u is a tag on e/os/releases, prefix with refs/tags/ for 'repo init'
>> [Mon Dec 30 22:53:44 UTC 2024] Copying '/srv/local_manifests/*.xml' to '.repo/local_manifests/'
>> [Mon Dec 30 22:53:45 UTC 2024] Syncing branch repository
>> [Mon Dec 30 22:53:45 UTC 2024] Missing "vendor/lineage", aborting
I then tried prefixing the tag with refs/tags/ as the help suggested, but no luck there either:
$ sudo podman run -v $(pwd)/src:/srv/src -v $(pwd)/zips:/srv/zips -v $(pwd)/logs:/srv/logs -v $(pwd)/ccache:/srv/ccache -e BRANCH_NAME=refs/tags/v2.6.3-u -e DEVICE_LIST=shiba -e "REPO=registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community" registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community
Set cache size limit to 50.0 GB
>> [Mon Dec 30 22:53:24 UTC 2024] Building branch refs/tags/v2.6.3-u is not (yet) suppported
I find it quite surprising that the official /e/OS build system cannot build the latest version of /e/OS. After all, the OS currently running on my phone must have been built somehow. Is there some step I’m missing, or a different build tool I should use? I’m not anxious to downgrade to a lower version of Android just to be able to say I compiled it myself.
and put it in the /srv/e/src/<version>/vendor/<vendorname>/<my-device> folder.
I haven’t build with docker for a while since I prefer repo way but without vendor files you cannot build.
I just tried with repo to 2.6.3-u branch and it worked. So I assume something is wrong in your command line. This is how it looks in repo: repo init -u https://gitlab.e.foundation/e/os/releases.git -b refs/tags/v2.6.3-u
Okay, I cloned it, and I think I put it in the right place src/U/lineage/vendor/device/google/shiba, but it still will not build:
# podman run -v $(pwd)/src:/srv/src -v $(pwd)/zips:/srv/zips -v $(pwd)/logs:/srv/logs -v $(pwd)/ccache:/srv/ccache -e BRANCH_NAME=v2.6.3-u -e DEVICE_LIST=shiba -e "REPO=registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community" -e "INCLUDE_PROPRIETARY=true" -e CCACHE_SIZE=300G registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community
Set cache size limit to 300.0 GB
>> [Tue Dec 31 01:54:21 UTC 2024] Branch: v2.6.3-u
>> [Tue Dec 31 01:54:21 UTC 2024] Devices: shiba,
fatal: not a git repository (or any parent up to mount point /srv)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /srv)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
>> [Tue Dec 31 01:54:21 UTC 2024] (Re)initializing branch repository
>> [Tue Dec 31 01:54:22 UTC 2024] Branch name v2.6.3-u is a tag on e/os/releases, prefix with refs/tags/ for 'repo init'
>> [Tue Dec 31 01:54:27 UTC 2024] Copying '/srv/local_manifests/*.xml' to '.repo/local_manifests/'
>> [Tue Dec 31 01:54:28 UTC 2024] Syncing branch repository
grep: vendor/lineage/config/common.mk: No such file or directory
grep: vendor/lineage/config/common.mk: No such file or directory
grep: vendor/lineage/config/common.mk: No such file or directory
grep: vendor/lineage/config/common.mk: No such file or directory
>> [Tue Dec 31 01:54:28 UTC 2024] Setting "UNOFFICIAL" as release type
sed: can't read vendor/lineage/config/common.mk: No such file or directory
>> [Tue Dec 31 01:54:28 UTC 2024] Adding OTA URL overlay (for custom URL )
>> [Tue Dec 31 01:54:28 UTC 2024] Preparing build environment
/root/build.sh: line 238: build/envsetup.sh: No such file or directory
>> [Tue Dec 31 01:54:28 UTC 2024] Starting build for shiba, v2.6.3-u branch
>> [Tue Dec 31 01:54:28 UTC 2024] ANDROID_JACK_VM_ARGS=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G
>> [Tue Dec 31 01:54:28 UTC 2024] Switch to Python2
>> [Tue Dec 31 01:54:28 UTC 2024] Failed build for shiba
>> [Tue Dec 31 01:54:28 UTC 2024] Finishing build for shiba
>> [Tue Dec 31 01:54:28 UTC 2024] Cleaning source dir for device shiba
>> [Tue Dec 31 01:54:28 UTC 2024] Switch back to Python3
On the recommendation of another thread on this forum, I added INCLUDE_PROPRIETARY=true (which did not appear to do anything at all – it seems the /e/OS developers have opted to remove support for it!) and CCACHE_SIZE=300G (which it seems will help with the build but I can’t even figure out how to download the source code!!!)
It seems there are still some files I’m missing. I think the build docker might just be broken. I struck out to try to build it manually, but I’m having even less luck there.
I found this forum post that links to three other guides as prior work, plus a fourth one that the author created. I tried three of those four with no success (the fourth one didn’t seem applicable and was more than a little intimidating). The first prior-art guide has a link to a script the author created that now 404s, the second one is a massive copy-paste shell script that seems to only work inside an Ubuntu 16.04 docker (which the author does not say) and tries to clone a private GitHub repo (omnirom/android_packages_apps_OpenDelta) straight off the bat, the third one is about how to build /e/OS for devices that don’t support Lineage and my Pixel 8 definitely does, and the guide the author of that post (SteadfasterX) created seems to leave me on my own to find a kernel and device tree for my device before I can even clone the source code. I have no idea where to even begin to look for those.
I also don’t use docker, but this git error will happen for instance when any “changes” are not registered with git with the result, loosely speaking, repo sync will fail. Using an automated method you cannot easily fix a git error (out of docker) in my experience as the script already has instructions!
Edit
I think your first error
[Mon Dec 30 22:53:45 UTC 2024] Syncing branch repository
[Mon Dec 30 22:53:45 UTC 2024] Missing "vendor/lineage", aborting
does just look like simple fail of 'repo sync` (as said by @tcecyk ) – might be for any simple “networking reasons” – simplest first does your machine have 4 cores available ?
Notice also how vendor/lineage persists through your later posts.
I remember now that my early docker fails were due to incomplete repo sync, however … (in my case) docker continues … the later logs are then almost meaningless if you are building from unreported failed checkout !
Another edit where is roomservice.py I asked myself ?
From build/envsetup.sh
# if we can't find a product, try to grab it off the LineageOS GitHub
T=$(gettop)
cd $T > /dev/null
vendor/lineage/build/tools/roomservice.py $product