That’s a very old (experienced? ) post. Docker works fine for building /e/OS - it’s how I do all my /e/OS builds now. The problem is that that the officially documented way of using it (specifically, the ‘Extract proprietary blobs’ section ) does not work. Luckily that step is not needed for devices - including FP4 - officially supported by LineageOS
Then the blobs for officially supported devices are available in the TheMuppets github repos (for FP4 in this repo) and Docker will pick them up from there because the INCLUDE_PROPRIETARY flag is set to true by default in the DockerFile.
Good luck getting changes made / errors fixed in the /e/ documentation! Been there, done that, got the tee-shirt, but gave up eventually in frustration
Reasons to fail can be missing referenced git repositories in the manifest xml files - especially on community builds where git repos can vanish, or unavailable default branches in the repos of the manifest xml. This can be fixed by looking for alternative repos or determining a suitable branch and changing manifest xml.
That works and on the face of it makes more sense, as I think it’s repo init failing and BRANCH_NAME being passed as the -b argument; there is no v1.12.3-sbranch. Which then begs the questions:
Why does the e documentation say to use a tag name, where the environment variable is for a branch and the container README says to use a branch name also?
How do I now build a specific release? Presumably by specifying the v1-s branch I simply get a bleeding edge build based on the latest development commit.
there’s a little typo bug in the build script that matches for tags, will get right onto it. If it would have matched, the revision checkout would be prefixed with “refs/tags/<yourtag>” and the repo init would have worked. It just needs a ref.
For android building, I think of tags as a newspaper from yesterday. Why use it if the branch already moved on? prefer branch.
The script is a great simplifier for newcomers and I think it is an asset and a good intro - but as a regular user, I’m just not a fan.
List of tags to use for BRANCH_NAME is available at https://gitlab.e.foundation/e/os/releases/-/tags. Tip: We now use git tags in addition to a specific manifest for each release. It let us to know exactly what’s inside each build.
If you want to build a test version, you can use:
BRANCH_NAME set to v1-nougat, v1-oreo , v1-pie or v1-q to get the last test build
BRANCH_NAME set to v1-nougat, v1-oreo , v1-pie or v1-q & REPO=https://gitlab.e.foundation/e/os/android.git
Has this not been edited to conceal the correct use of refs/tags/ ?
I’m assuming that in using the v1-s branch I get the bleeding edge, complete with the latest development commits, whereas tags give me stable, tested releases, the same as would be pushed out via OTA update.
If I wanted to do my own build to try something out or just because, I’d more than likely to build on stable foundations and not a build which may periodically be broken.
tags on the release manifest repo do not hold as much meaning in /e/ as they’d do for an individual code project - the upstream manifest revisions for most of the aosp and lineage repos do not change with every minor revision (still dozens, but no turmoil) - so what you get is mainly updated package forks from the main git-lfs prebuilt repo with what you’d see in lineage weeklies anyway
Still feels non-deterministic; might run build one day and it succeeds, while another day it fails. At the very least I’m going to get different versions of dependencies and building external stuff on top of a moving target branch, rather than a point-in-time tag, just feels error prone and plain wrong.
Building v1-s for FP4 target has failed. Will start a new thread with some details.
pete, as written, there’s a bug in the lines you quote currently. Run that curl without grep -q and you’ll see. Maybe this works for you because you didn’t pull the image from the registry since that part of the code was merged. See the MR, it’s just a url param error
that said: putting dynamic elements into scripts is… on top of bash, you get no stacktraces, no failure attribution, just the next echo that happens to come up
I am looking at the master branch, and according to git blame those lines were added between 3yrs ago and 5 months ago. The curl ... line was added buy you.
The docker run command I quoted was run on 5th July this year on a ‘clean’ cloud server. My log file shows that the lastest image (on that date) was downloaded. I have been using tags to build /e/OS with docker for quite a long time now: it has always worked for me
nah, not in that form - git commits are just text when unsigned. I authored the commit that brought up the discussion, it wasn’t merged as authored, see MR for the real links.
I’m not sure what I’m discussing: as said I welcome the script, but anybody using either the lineage4microg or the /e/ fork version (that introduced more dynamic elements / regexes for subtle failure) will have difficulties when things break because bash is just not good at bubbling up errors
All I know is that the latest docker-lineage-cicd:community image works for me if I use tags, and-e "REPO=https://gitlab.e.foundation/e/os/releases.git" . I can see that using a branch name on https://gitlab.e.foundation/e/os/releases.git, or using a tag on https://gitlab.e.foundation/e/os/android.gitmight fail, possibly because of the typo in the curl command.
in its current defective form (we’re discussing one symbol really) the repo init + sync will not fail if the tag name also exists as branch reference, then the logic doesn’t matter because there is fallback.
But if both references exist, a tag will always take precedence. As originally intended, but it’s subtle, users might not be aware of it because of the variable name (BRANCH_NAME) - and that is why I don’t like it - but tried to fix 2 times anyway, because a all-in-one-build-command is a good entry level asset.
A sensible course forward would be to use separate arg flags and variable names to differentiate tags from branches.