Trying to build /e/OS

Hello forum,

I’m trying to build /e/OS on my old Samsung Galaxy J3 2016 (j3xlte) after finding that there is no current custom ROM or Linux distribution (an experimental version of PostmarketOS excluded) for this smartphone. I am still quite a beginner and do not know much about Android. I already fail at the point https://doc.e.foundation/support-topics/extracting-proprietary-blobs. Probably it’s a stupid question, but where can I find the /e/OS installable zip for my device when it’s not supported? On my device (with stock Android 5) I can find a “system” directory with

adb shell

but that’s probably not meant… Could someone explain this to me?

Thanks in advance!

Regain your privacy! Adopt /e/ the unGoogled mobile OS and online servicesphone

the extract-files.sh only cares about paths - if you provide it either adb root (via twrp) to the running rom, or a base directory that you unpacked the original stock rom zip into (or any old lineage zip), it will copy over what it has listed in its script. The script itself is usually with the device vendor. The latest xda threads on the device point to github repos that has them.

I recently made a build for j3xnlte that is very similar to the j3xlte - just a different kernel. The repos are listed in the linked roomservice.xml - [UNOFFICIAL BUILD] Samsung Galaxy J3 (2016) (j3xnlte) - e-0.21-n

if you’re not keen on building yourself (as a learning exercise) I could make a j3xlte build for the old e-0.21-nougat (I tried to go with updated apps in the /e/ 1.6 branches, but too much errors, easier to rather remove them).

(the pmOS build uses the old 3.10 kernel too, there are no active mainlining efforts for the SoC)

1 Like

Thanks for your help! I used the system folder of an old LineageOS build and the github repository GitHub - djeman/android_device_samsung_j3xlte for extract-files.sh. The script works up to the point:

# Try CM target first
        adb pull /system/$DEST $2/$DEST
        # if file does not exist try OEM target
        if [ "$?" != "0" ]; then
            adb pull /system/$FILE $2/$DEST
        fi

Then the following error message appears:
adb: error: remote object '/system/bin/IPSecService' does not exist
It seems to me that the script is trying two possibilities, neither of which works in this case.

that’s an honest error message then -

I think I used a system.img from the stockroms to extract (possibly needed sdat2img.py before mounting) - https://galaxyfirmware.com/model/SM-J320F/ (check if proper model name for your device). “set -x” in script header to see if working as intended

I think the error message has nothing to do with the extracted system folder since the error message comes from adb. When I do the same procedure with LineageOS 14.1 installed on the device, this problem does not occur, but another file does not exist.

I think I got rid of adb at those lines and replaced them with “cp” from the mounted system.img instead - the stockrom has the paths

Thank you! It worked for me in a similar way. Do you know if it is also possible to build a more recent version than Android 7 for this device?

there was work done to get it to lineage-15.1 / oreo, the Android binder changes are there, but djeman commented at xda that a working gpu driver was the reason the port didn’t continue

Building now ends with the following error message:

[Fri Dec 30 20:50:26 UTC 2022] Missing “vendor/cm”, aborting

is this the docker build method? I remember the build script can exit at that point for misleading reasons - but if it’s proper, the repo (and branch) you init from should cover the presence of vendor/cm after a repo sync. Is the directory present?

Yes, I use Docker as described in the wiki (sudo docker run -v “/srv/e/src:/srv/src” -v “/srv/e/zips:/srv/zips” -v “/srv/e/logs:/srv/logs” -v “/srv/e/ccache:/srv/ccache” -e “BRANCH_NAME=v0. 21-nougat” -e “DEVICE_LIST=j3xlte” -e “REPO=https://gitlab.e.foundation/e/os/releases.git” registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community). It’s actually the same repo you linked to, so it should actually be present… Or do you mean is it present locally on my end?

use “v1-nougat” for BRANCH_NAME

Edit: to explain myself here: because the script has some dynamic http curl part that has no error handling for when tag lookup fails because of api query result limits-> https://gitlab.e.foundation/e/os/docker-lineage-cicd/-/merge_requests/56

that curl is super hacky

Without a match, the tags-detection breaks, repo init fails, no checkout occurs, user will fail at the latest at the directory check for ‘vendor/lineage’, a misleading error.

I now remember having ranted on the build script at 'Missing "vendor/lineage", aborting' - docker build error explained

1 Like