Help with vendor and device files building e/OS/ for FP6

Hi,

This is my first experience with e/OS/. I have a brand new FP6 with /e/OS by Murena and facing issues building a custom e/OS/ for it.

I’ve found both FP6 and FP6-kernel repos, but not sure which repo files goes where, or if I need to compile something before putting the files in the /e/ tree.

What do I need to do so that the proper files in the two FP6 repos are copied respectively in /vendor/fairphone/FP6 and /device/fairphone/FP6 ?

Thanks in advance

as they are not yet shared on the muppet repo, you will have to extract the proprietary vendor blobs from the device or from an official /e/ build and add them into the /vendor/fairphone/FP6/ folder

.

for an officially supported device, just running breakfast FP4 must download the missing files

.

but you can also :

clone the repo using a terminal from the /device/fairphone/FP6/ folder and from the /kernel/fairphone/FP6/ folder

or

download the sources code .ZIP from the repo and extract its content into the /device/fairphone/FP6/ folder and into the /kernel/fairphone/FP6/ folder

or

compose a /.repo/local_manifests/FP6.xml to point to the device specific repos,

proposition (mix of steadfasterX and /e/ manifest )
<?xml version="1.0" encoding="UTF-8"?>
<manifest>

    <!-- KERNEL
    #####################################################-->
    <project path="kernel/fairphone/FP6" name="/e/devices/android_device_fairphone_FP6-kernel" remote="e" revision="a15" />

    <!-- DEVICE TREES
    #####################################################-->
    <project path="devices/fairphone/FP6" name="e/devices/android_device_fairphone_FP6" remote="e" revision="a15" />
    
    <!-- modifications regarding Lineage (to build /e/ from /e/ sources repo) 
    #####################################################-->

  <remove-project path="device/qcom/sepolicy_vndr/sm8650" name="LineageOS/android_device_qcom_sepolicy_vndr" groups="qcom,lanai-vendor" revision="lineage-22.2-caf-sm8650" />
  <remove-project path="frameworks/opt/telephony" name="LineageOS/android_frameworks_opt_telephony" groups="pdk" />
  <remove-project path="hardware/qcom-caf/sm8650/audio/agm" name="LineageOS/android_vendor_qcom_opensource_agm" groups="qcom,lanai-audio" revision="lineage-22.2-caf-sm8650" />
  <remove-project path="hardware/qcom-caf/sm8650/audio/pal" name="LineageOS/android_vendor_qcom_opensource_arpal-lx" groups="qcom,lanai-audio" revision="lineage-22.2-caf-sm8650" />
  <remove-project path="hardware/qcom-caf/sm8650/audio/primary-hal" name="LineageOS/android_hardware_qcom_audio-ar" groups="qcom,lanai-audio" revision="lineage-22.2-caf-sm8650" />
  <remove-project path="hardware/qcom-caf/sm8650/audio/graphservices" name="LineageOS/android_vendor_qcom_opensource_audioreach-graphservices" groups="qcom" revision="lineage-22.2-caf-sm8650" />

  <project path="device/qcom/sepolicy_vndr/sm8650" name="e/os/android_device_qcom_sepolicy_vndr" groups="qcom,lanai-vendor" revision="a15-caf-sm8650" remote="e" />
  <project path="frameworks/opt/telephony" name="e/os/android_frameworks_opt_telephony" groups="pdk" remote="e" revision="v1-a15-FP6" />
  <project path="hardware/qcom-caf/sm8650/audio/agm" name="e/os/android_vendor_qcom_opensource_agm" groups="qcom,lanai-audio" revision="a15-caf-sm8650" remote="e" />
  <project path="hardware/qcom-caf/sm8650/audio/pal" name="e/os/android_vendor_qcom_opensource_arpal-lx" groups="qcom,lanai-audio" revision="a15-caf-sm8650" remote="e" />
  <project path="hardware/qcom-caf/sm8650/audio/primary-hal" name="e/os/android_hardware_qcom_audio-ar" groups="qcom,lanai-audio" revision="a15-caf-sm8650" remote="e" />


    <!-- PROPRIETARY VENDOR (not yet available)
    #####################################################-->
#    <project path="vendor/fairphone" remote="github" depth="1" name="TheMuppets/proprietary_vendor_fairphone" />
    
    <!-- /e/ vendor repo (to make a custom build using steadfasterX method)
    #####################################################-->
    <project path="vendor/e" name="steadfasterX/android_vendor_e" remote="e" revision="main" />

</manifest>

and then run repo sync again.

.

my entry will be reading README.md · main · steadfasterX / android vendor e · GitLab
it is a fantastic and flexible way to make “CUSTOM” /e/ builds
(be carefull about the missing / in </manifest> at the end of his local manifest exemple)

07: Building an e ROM the Repo Sync way · Wiki · e / documentation / A Generic Guide on porting eOS · GitLab

How-To: Building an /e/OS ROM the Repo Sync way for an unsupported device using LineageOS sources

Ultimate how-to guide: Unofficial Builds using repo style for using lineage or other aosp sources that are not supported by /e/OS

also have a look at /e/ official manifest :
FP6.xml · a15 · e / os / local_manifests · GitLab

2 Likes

as piero wrote, I think you need to get familiar with extract-files.py in the device repo to prepare the vendor directory. When the lineage port will get official, those prop files will be pushed online eventually.

I’d first try to build the roomservice xml (in local_manifests) that murena themselves use and improve on any errors that show.

Here was another user looking at the FP6, but the thread was focused on doing a kernel rebuild.

2 Likes

if it helps :

1 Like

Since this is a prebuilt kernel you need to store FP6-kernel to /device/FP6-kernel

Extracting the vendor files are easy, just download latest FP6 ROM and follow:

However I had issues trying to build myself (I wanted to do a iode and crDroid fork) and then used

as source that has kernel source for SM7635 chipset of the FP6

and with these sources I could build for iode and crDroid

2 Likes

Thanks to all of you to help me in this journey.

Things are running by trail-and-errors with the Docker method (currently I’m pruning the PRODUCT_SOURCE_ROOT_DIRS for soong_namespace).

One thing I’d need though is the content of /vendor/fairphone/FP6/BoardConfigVendor.mk, as I’ve copied it from FP5 folder.. It’s probably wrong.

As @tcecyk pointed out, I need to familiarize myself with extract-files.py. Will it create that .mk file?

Best,

Yes, extract-files.py should create all the files. If something is missing then something went wrong

Wow! Thank a ton.

I’m not quite sure about mounting all other images, as some images does not seem to match anything in the system/ folder as depicted in attached screenshot.

Is it mandatory to have all .img files mounted?

1 Like

we will need to mount the system.img file, and the vendor.img and product.img files if they exist, to obtain the complete set of proprietary blobs:

@vdegrandpre extract-files.py was renovated the last few months, it should now be a one-stop script for both files and usb tethered device and do all the mounting required script internally.

What you can do is: use the script from ArianK16a lineage port, but with the proprietary-files.txt from the gitlab.e.foundation FP6 device repo and the /e/OS FP6 IMG zip.

Here’s an example run getting the prop files from ArianK16a ota image: script, resulting vendor. It expects extract-utils in ../../../tools/extract-utils - not obvious.