Neither nor, my Ubuntu-Server is a older Dell Workstation I have at home!
But happy to read your HowTo!
Neither nor, my Ubuntu-Server is a older Dell Workstation I have at home!
But happy to read your HowTo!
On a server I find snaps to be pretty solid.
And I wanted to it as minimal as can be and also perhaps write a beginers howto…
brunch (that calls breakfast) has some logic to pull device manifests. It somehow can’t. Is it the revision handed to the script? I don’t know. I usually just build to the v1-r
(-q … -s) branches, not tags.
It helps to not use the script and just issue “breakfast lineage_jfvelte
” at the prompt and see what the build commands come up with.
Nice hint @tcecyk
Any idea what the fallback/outcome should be, if the tag is gone — a plain ‘v1-r’?
[Thu Nov 2 06:43:34 UTC 2023] (Re)initializing branch repository
… A new version of repo (2.39) is available.
… You should upgrade soon:
cp /srv/src/R/.repo/repo/repo /usr/local/bin/repo
repo: reusing existing repo client checkout in /srv/src/R
repo has been initialized in /srv/src/R
[Thu Nov 2 06:43:37 UTC 2023] Syncing branch repository
… A new version of repo (2.39) is available.
… You should upgrade soon:
cp /srv/src/R/.repo/repo/repo /usr/local/bin/repo
error: hooks is different in /srv/src/R/.repo/projects/external/libvpx.git vs /srv/src/R/.repo/project-objects/LineageOS/android_external_libvpx.git
Retrying clone after deleting /srv/src/R/.repo/projects/external/libvpx.git
error: hooks is different in /srv/src/R/.repo/projects/external/libxml2.git vs /srv/src/R/.repo/project-objects/LineageOS/android_external_libxml2.g
Retrying clone after deleting /srv/src/R/.repo/projects/external/libxml2.git
error: hooks is different in /srv/src/R/.repo/projects/external/webp.git vs /srv/src/R/.repo/project-objects/LineageOS/android_external_webp.git
Retrying clone after deleting /srv/src/R/.repo/projects/external/webp.git
Encountered 4 file(s) that should have been pointers, but weren’t:
AccountManager/davx5-ose-4.3.5.2-ose-release-unsigned.apk
Mail/k9mail-release-unsigned.apk
Tasks/opentasks-release-unsigned.apk
eDrive/eDrive-1.3.16-release-unsigned.apk
repo sync has finished successfully.
[Thu Nov 2 07:07:37 UTC 2023] Starting build for jfvelte, v1-r branch
07:07:43 Build sandboxing disabled due to nsjail error.
In file included from build/make/core/config.mk:291:
In file included from build/make/core/envsetup.mk:266:
.[1mbuild/make/core/product_config.mk:155: .[31merror: .[0m.[1mCan not locate config makefile for product “lineage_jfvelte”…[0m
07:07:43 dumpvars failed with: exit status 1
File “/usr/local/bin/repo”, line 1292
comment_line = re.compile(rb"^ *#")
^
SyntaxError: invalid syntax
Device jfvelte not found. Attempting to retrieve device repository from LineageOS Github (http://github.com/LineageOS).
Found repository: android_device_samsung_jfvelte
Default revision: lineage-18.1
Checking branch info
Checking if device/samsung/jfvelte is fetched from android_device_samsung_jfvelte
Adding dependency: LineageOS/android_device_samsung_jfvelte → device/samsung/jfvelte
Using default branch for android_device_samsung_jfvelte
Syncing repository to retrieve project.
Repository synced!
Looking for dependencies in device/samsung/jfvelte
device/samsung/jfvelte has no additional dependencies.
Done
07:07:44 Build sandboxing disabled due to nsjail error.
In file included from build/make/core/config.mk:291:
In file included from build/make/core/envsetup.mk:266:
.[1mbuild/make/core/product_config.mk:155: .[31merror: .[0m.[1mCan not locate config makefile for product “lineage_jfvelte”…[0m
07:07:44 dumpvars failed with: exit status 1
07:07:45 Build sandboxing disabled due to nsjail error.
In file included from build/make/core/config.mk:291:
In file included from build/make/core/envsetup.mk:266:
.[1mbuild/make/core/product_config.mk:155: .[31merror: .[0m.[1mCan not locate config makefile for product “lineage_jfvelte”…[0m
07:07:45 dumpvars failed with: exit status 1
** Don’t have a product spec for: ‘lineage_jfvelte’
** Do you have the right repo manifest?
No such item in brunch menu. Try ‘breakfast’
[Thu Nov 2 07:07:45 UTC 2023] Failed build for jfvelte
[Thu Nov 2 07:07:45 UTC 2023] Finishing build for jfvelte
[Thu Nov 2 07:07:45 UTC 2023] Cleaning source dir for device jfvelte
07:07:45 Entire build directory removed.
This went away and has not come back since I updated ubuntu and had a reboot
Sorry, I do not know how to do that.
New approach … you had a docker environment which worked … then it stopped working with seemingly random errors.
I would step back and use ncdu
on the environment. Can you be sure you have enough headroom to build ? My experience is that out of space headroom errors will not necessarily be reported as such.
I have Munin running:
Mem is good to:
I hope this will not look like a reactive ding dong … I am sure you are more aware than me the answer to
Why do
df
anddu
differ ?
However my suggestion was more of a long term learning suggestion to help you investigate where the “big items” in the build are located and the dynamic requirement of headroom which is hard to predict.
I’m an old dog, but one can still teach me new tricks
I do use ncdu or BashTOP …, but the one thing I’ve learned in 22y web/root admin is, monitoring over time tells you much more…and Munin has been my choise, also because you get Warnings
(yes, I have to keep work emails 10years):
When my T build failed I saw a disc warning, but also a lot of other metrics I can correlate.
Plus I can go back in time and compare different builds… well maybe have a look at their demo:
http://demo.munin-monitoring.org/munin-monitoring.org/demo.munin-monitoring.org/
instead of the repo init on lineage, you init on /e/s gitlab with one of the v1- branches. breakfast+brunch are lineage build commands, not AOSP upstream. It’s overlayed by sourcing
the envsetup.sh. It’s all there is to it. Much easier build error debugging. This said, I think your troubles are all with tainted repo sync states
Edit: @ronnz98 wrote up the non-docker way at Howto: Unofficial Builds using repo style for supported lineageOS devices that are not (yet) supported by /e/OS - link here for future visitors, complements the links given
Thanks @tcecyk I meant this in the way, that /e docs for the docker system is thin and I do not know how I would add/change this in how I do ‘docker run’
So, how would one put ’ just issue “breakfast lineage_jfvelte
” at the prompt’ or ‘repo sync’ in the above statment? I may be a bit duff, but I just don’t get it
overwrite the entrypoint of the docker image to a shell, finger-follow the script that used to be the entrypoint what it does, when it sources a envsetup.sh… but those steps official aosp + lineage docs do cover too.
Docker is good for the dependencies, but an apt-install oneliner prepares stock debian pretty well to skip docker as package distribution mechanism
docker run -v <allyourmounts> -it --entrypoint bash registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community
don’t want to hijack your thread on concrete repo-sync / breakfast problem though
I found some issues and tought they were the problem, but I deleted the post above because I have the same problems on a 2nd workstation.
On both I could build in Sep/Okt then got problems on one workstation, which are ongoing.
Today I just started the other workstation an I get the same problems
What has changed in Okt/Nov is docker image:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd community 70db1a246c88 2 months ago 1.92GB
registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd <none> 9acfd3dbeed7 2 months ago 1.92GB
registry.gitlab.e.foundation/e/os/docker-lineage-cicd community 29d835c75f03 4 months ago 1.92GB
registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd <none> 29d835c75f03 4 months ago 1.92GB
$ docker inspect 70db1a246c88 | grep Created
"Created": "2023-11-02T21:39:14.377717891Z",
$ docker inspect 9acfd3dbeed7 | grep Created
"Created": "2023-10-27T05:02:34.936152595Z",
$ docker inspect 29d835c75f03 | grep Created
"Created": "2023-08-31T04:37:40.101872176Z",
~/e/logs$ grep -r 'Failed build for' *
:>> [Tue Oct 31 16:49:45 UTC 2023] Failed build for jactivelte
:>> [Wed Nov 1 09:12:14 UTC 2023] Failed build for jfvelte
:>> [Thu Nov 2 07:07:45 UTC 2023] Failed build for jfvelte
:>> [Sat Jan 6 15:14:29 UTC 2024] Failed build for jfvelte
:>> [Sat Jan 6 18:03:53 UTC 2024] Failed build for jfvelte
:>> [Sat Jan 6 19:53:50 UTC 2024] Failed build for jfvelte
:>> [Wed Nov 1 23:43:28 UTC 2023] Failed build for jfvelte
:>> [Sat Jan 6 16:24:01 UTC 2024] Failed build for jfvelte
:>> [Tue Oct 31 20:31:12 UTC 2023] Failed build for jfvelte
:>> [Tue Oct 31 20:39:31 UTC 2023] Failed build for jfvelte
:>> [Tue Oct 31 20:43:58 UTC 2023] Failed build for jfvelte
:>> [Thu Nov 2 23:47:19 UTC 2023] Failed build for klte
:>> [Thu Nov 2 15:50:07 UTC 2023] Failed build for klte
:>> [Thu Nov 2 15:37:24 UTC 2023] Failed build for klte
:>> [Thu Nov 2 15:39:23 UTC 2023] Failed build for klte
:>> [Thu Nov 2 15:54:10 UTC 2023] Failed build for klte
:>> [Thu Nov 2 16:01:00 UTC 2023] Failed build for klte
:>> [Thu Nov 2 15:43:35 UTC 2023] Failed build for klte
:>> [Thu Nov 2 15:45:40 UTC 2023] Failed build for klte
:>> [Sat Jan 6 16:53:17 UTC 2024] Failed build for s5neolte
:>> [Sat Jan 6 17:25:05 UTC 2024] Failed build for s5neolte
:>> [Sat Jan 6 17:29:49 UTC 2024] Failed build for s5neolte
:>> [Thu Jan 4 09:23:42 UTC 2024] Failed build for s5neolte
:>> [Thu Jan 4 09:36:00 UTC 2024] Failed build for s5neolte
:>> [Thu Jan 4 09:47:01 UTC 2024] Failed build for s5neolte
:>> [Sat Jan 6 14:53:16 UTC 2024] Failed build for s5neolte
:>> [Thu Jan 4 09:39:48 UTC 2024] Failed build for s5neolte
It sees like I can not use, or I do not fully understand how/if one can use a previous version
docker run 29d835c75f03 …
results in only: Set cache size limit to 50.0 GB no further out put
@tcecyk any insight onyour side? It just seems so unlikley that my 2nd “clean workstation” has the same issues, starting at the exact same timeframe!?
And one of the things that changed was to move to Python 3 instead of Python 2
The error in your other thread was
File “/usr/local/bin/repo”, line 51
def print(self, *args, **kwargs):
^
> SyntaxError: invalid syntax
> Device s5neolte not found. Attempting to retrieve device repository from LineageOS
So it looks like the version of repo
you have is not compatible with Python 3, which ties in with the repo-20240106.log
message
… A new version of repo (2.40) is available.
… You should upgrade soon:
cp /srv/src/R/.repo/repo/repo /usr/local/bin/repo
Have you tried updating your version of repo - as the message suggests?
cp /srv/src/R/.repo/repo/repo /usr/local/bin/repo
To me, this would be much more the reason, thank you for pointing this aout!
I admit a saw this all along, but I simply kept on thinking docker would do this with:
Get our docker image
Tip: Please run this step before each build, to be sure to get the last docker image.
$ sudo docker pull registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community
I think I could use some hints on
Cheers
You don’t need to do either of those:
repo init
on the https://gitlab.e.foundation/e/os/android
repository. That repository contains manifests which identify the needed repositories from the /e/, lineageOS, and AOSP reposrepo sync
which will clone (if needed) those repos, and fetch the versions / branches specified in the manifestsSo it is doing, what I thought – then this is the confusing part:
Why is it suggesting this in the log?
Why is it not doing this?
Those are good questions, and I didn’t know the answers so I did some digging. What I think happens is this
curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo
. This downloads a version of the repo
Launcher script - not the main repo program , the Launcher - to/usr/local/bin/
. According to the repo docsThe main repo script serves as a standalone program and is often referred to as the “launcher script”. This makes it easy to copy around and install as you don’t have to install any other files from the git repo.
repo init
does the followingInstalls Repo in the current directory. This command creates a
.repo/
directory with Git repositories for the Repo source code and the standard Android manifest files.
It is possible (quite likely in my experience, given how often I have seen this warning) that the version of the launcher script differs from the VERSION
variable in the launcher itself. In this case
which explains the warning you see when Docker runs repo sync
.
I don’t know why repo
works like this, but it does, and there is nothing Docker can do about it: Docker calls repo sync
and checks the outcome of the call when the sync completes (successfully or unsuccessfully). The displayed message is only a warning and does not - in itself - cause the repo sync
to fail.
Having said all that, I don’t know that is what is causing your whole build to fail after the change from Python 2 to Python 3, but it is something that is easily fixed (cp /srv/src/R/.repo/repo/repo /usr/local/bin/repo
), so is worth a try.
I hope that helps, and thanks for the learning opportunity: I now know much more about what is going on ‘under the hood’ in repo
than I did before I started digging.