Attempt of building an unofficial built of Lineage 18.1 for Moto G5 Plus (potter)

I’ve seen that the support of potter has been dropped at 16.0. I have one and I’d like to try to build an unofficial build of Lineage 18.1.

With my development background I’m not struggling with tools or scripts, however Android ROM is completely new to me. I need help and directions to figure out what would be the reasonable next step.

I did read a few things and try to build by myself with the Docker image:

  • I followed the doc How to build the /e/OS ROM [1]
  • I spent times to understand how to get the proprietary files. I was able to follow and LineageOS - Working with proprietary blobs [2]
  • I understood that I needed 1. an existing ROM or device and the right extract-files.sh script
  • I then focused on finding existing projects for the device and found a few ones: crDroid [3], ArrowOS [4], PixelExperience [5], PixelPlusUI [6], dotOS [7], and also an old port of
    LineageOS [8]
  • I found some repos with the vendor binaries: dotOS [9], the ones of Motorola-Common [10], or an old commit in TheMuppets/proprietary_vendor_motorola [11]
  • After having read the doc of the Docker Image docker-lineage-cicd [12] and how to build with a given manifest, I naively tried to use dotos repos to provide the necessary files and failed as it hasn’t the files that lineage needed (such as the lineage.dependencies or lineage_potter.mk)
  • I was then thinking to go back to the previous idea to extract the proprietary files from an existing files and update the extract-files.sh and understood that I was going in a rabbit hole as it required some Android binaries and sources such as setup_makefiles.sh or extract_utils.sh
  • I was then thinking of updating an existing port such as the dotOs ones or the lineage one for cedric, and started to understand that it’s far from straightforward (given my current knowledge of the platform)
  • I looked for other unofficial roms, I’ve found a few ones on XDA forum (especially this message [13]) or the telegram group potterofficial [14] such as lineageos-18.1-20220615-UNOFFICIAL-potter.zip [15] or lineageos-18.1-20220414-UNOFFICIAL-potter.zip [16] but couldn’t find the code source, so I’m quite reluctant to install them
  • Finally, I compared several repositories to figure out if I could use the diff between cedric and potter in a given distribution (for instance dotos) and follow a similar path to do it on lineageos. But … that confirmed my previous understanding … there are a lot.

So, what would you advice to do?

References:

  1. How to build the /e/OS ROM
  2. LineageOS - Working with proprietary blobs
  3. on GitHub: crdroidandroid/android_device_motorola_potter
  4. on GitHub: ArrowOS-Devices/android_kernel_motorola_potter
  5. on GitHub: PixelExperience-Devices/device_motorola_potter
  6. on GitHub: PixelPlusUI-Devices/device_motorola_potter
  7. on GitHub: dotOS-Devices/device_motorola_potter
  8. on GitHub: LineageOS/android_device_motorola_potter
  9. on GitHub: dotOS-Devices/proprietary_vendor_motorola_potter
  10. on GitHub: Motorola-Common/proprietary_vendor_motorola_potter
  11. commit on GitHub project TheMuppets/proprietary_vendor_motorola: TheMuppets/proprietary_vendor_motorola/pull/343/commits/1c763d2e83b94adc435ebb0fe4e17c0b2e4bdad6
  12. on /e/OS GitLab, gitlab.e.foundation/e/os/docker-lineage-cicd/
  13. message on XDA sharing some recente unofficial ROMS: forum.xda-developers.com/t/rom-unofficial-10-0-potter-lineageos-17-1.4088253/page-7
  14. Telegram group potterofficial: t.me/potterofficial
  15. lineageos-18.1-20220615-UNOFFICIAL-potter.zip on Google Drive: file/d/1KJQ6fXzbo4PL63b3t0zlMVytsQa80d5B/view
  16. lineageos-18.1-20220414-UNOFFICIAL-potter.zip on SourceForge: projects/motog5pluslineageos-unofficial/files/lineageos-18.1-20220414-UNOFFICIAL-potter.zip/download

(post deleted by author)

(post deleted by author)

(post deleted by author)

to get some encouragement I’d build a known-to-work roomservice.xml for the potter and go from there.

Either from older lineage releases or you can ask the potterofficial telegram group if they’d give you the manifest for the device to let you learn ROM building. If you credit them I see no issue. I think device+vendor+kernel repos of them are here, you can assemble the manifest yourself if you use the device repo to extract the propfiles.

2 Likes

Thanks @tcecyk

I have a few questions.

to get some encouragement I’d build a known-to-work roomservice.xml for the potter and go from there.

  • What is the manifest roomservice.xml? According to my understanding, whatever the name of the manifest, it will be taken and used. Am I wrong?
  • Also why is it called that way? I’ve seen that name here and there?
  • When trying to build with a given manifest and given repos, the build failed because it was looking for specific branch names. Do you know what is the convention? Is there some doc somewhere about that (I couldn’t find any so far). I guess it looks for branch name that would very likely correspond to Lineage.

you use the device repo to extract the propfiles

what do you mean? Which propfiles?

1 - “whatever the name of the manifest … will be … used” - yes, you’re right. Roomservice is a convention, I won’t dig for first hand source, but I think it goes with the whole eatery themed terms in the aosp build system: lunch, brunch, breakfast …
2 - …
3 - manifest(s) need to be proper: you can specify branches or even git refs per “project” xml node, or not name any and use the “remote” node or even “default” node to declare branches more encompassing - but if any subnode “project” doesn’t have the branch you’re naming in a node it inherits from you’ll get errors of course. I like this spec.
When building /e/ currently you have a mix of 1 tag and 2 branches - the one of aosp is a tag (“android-11.0.0_r46”), the lineage (lineage-18.1) and /e/ (v1-r) both are branch refs. If you build an unofficial device by a project that follows other downstream branch names you have those too.
4 - “propfiles” - proprietary files, sorry that’s of my own invention

It’s also the name of the manifest the the LOS and /e/OS build tools create if you try to build a device without creating a manifest for it and/or if you specify USE_PROPRIETARY= true. The tools will search the repositories they know about for the necessary repos - LineageOS/e for device trees and kernels, TheMuppets for proprietary blobs. The results are written to roomservice.xml in .repo/local_manifests before the call is made to repo sync .