How to spread out source and build files for Google Pixel 3 XL

I’m new to building Android and would like to give it a try.

In terms of partitioning my ssd’s, I have about 80gb free space on my Ubuntu 20.04 boot NVMe and then about 450gb free space on the drive 2 SSD.

What do you recommend I do in terms of allocating source files and build files and how do I go about doing that when setting up the build environment?

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

I would install the tools on your boot drive, then use the big drive for your working directories.

Create a working directory on the big drive. If you are building with Docker or the picomatic builde.sh script, you use the -v parameters to use that as the root directory. If you are building the traditional way, then start in that directory (or a subdirectory) when you do the initial repo sync.

450GB should give you space to have at least two separate source trees (e.g. one Q, one Android 11, or one /e/ and one LineageOS or Linegageos4microG).

PS I have a Building /e/ ROMs - a Beginner's Guide wiki page that you may find useful

2 Likes

Thank you for your recommendations!

It’s all a bit confusing for a first timer, so I greatly appreciate your help. Your beginners tips is very informative.

I have a Google Pixel 3 XL, which currently is not on the official, nor custom, nor unofficial lists. But it looks like a possiblity exists since the Pixel 3XL is compatible with Project Treble.

Someone posted to try a GSI for the Pixel 3 XL:

and referred to this XDA link:
h t t p : / / forum.xda-developers.com/t/guide-how-to-install-a-gsi-rom-on-the-pixel-3-xl.3892685/

Continuing on with efoundation posts, here’s a Pixel 3a XL inquiry regarding GSI:
h t t p s : / / community.e.foundation/t/howto-install-eos-gsi-on-a-treble-device-new-gsi-added-june-14th/14898/12

And this:
h t t p : / / community.e.foundation/t/gsi-for-not-yet-supported-treble-phones-2020-06-14/6412

. . .

For the Google Pixel 3 XL, I’m not quite sure how next to proceed. It seems all roads point to using GSI source.

I’ve currently got the Scorpion custom recovery and ROM on the Google Pixel 3 XL.

If you have any further suggestions, I would appreciate it.

Also regarding what you wrote in your beginner’s tips about using the cloud and picomatic, that may be a route that I could also try along with my low-ram local computer.

I don’t think that I can use docker on my vps since I’m running the Virtualmin control panel and I don’t the two play nicely together (but could be totally wrong about that).

I will look into the picomatic route.

It looks like there is an official build of LineageOS 17.1 for this device, (See https://download.lineageos.org/crosshatch and https://wiki.lineageos.org/devices/crosshatch/) so it should be really straightforward to build an /e/ ROM. I think you just need to put the device name crosshatch into the build command, and set the INCLUDE_PROPRIETARY environment variable to true.

That will be much better than a GSI

LineageOS won’t have the anti-tracking privacy measures of /e/?

I’m not really sure what to do with the Lineage build and how to make it into a /e/ ROM.

And whether Lineage 17.1 needs an OpenJDK higher than OpenJDK1.8/jdk8?

. . .

I’m running Debian 10 on my vps and openjdk-8-jdk is not avail. So I can’t run picomatic builde.sh

I had to install OpenJDK:
wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u282-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz
tar xzf OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz
export PATH=$PWD/jdk8u282-b08/bin:$PATH

wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u282-b08/OpenJDK8U-jre_x64_linux_hotspot_8u282b08.tar.gz
tar xzf OpenJDK8U-jre_x64_linux_hotspot_8u282b08.tar.gz
export PATH=$PWD/jdk8u282-b08-jre/bin:$PATH
java -version

wget ‘h t t p s ://storage.googleapis.com/git-repo-downloads/repo’ -P /usr/local/sbin/
chmod +x /usr/local/sbin/repo

I think I was mistaken in thinking that you wanted me to build with Lineage17.1. I went ahead with Lineage 17.1 and I can’t get pass some build errors. Rather, I think because Lineage17.1 could work for the Pixel 3 XL, you wanted to suggest that it would be easy to build /e/ for the Pixel 3 XL.


[ 99% 634/635] finishing build rules …
FAILED:
hardware/qcom/sdm845/bt/libbt-vendor/Android.mk: error: “libbt-vendor (SHARED_LIBRARIES android-arm64) missing libbtnv (SHARED_LIBRARIES android-arm64)”
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
hardware/qcom/sdm845/bt/libbt-vendor/Android.mk: error: “libbt-vendor (SHARED_LIBRARIES android-arm) missing libbtnv (SHARED_LIBRARIES android-arm)”
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
hardware/qcom/sdm845/media/mm-video-v4l2/vidc/venc/Android.mk: error: “libOmxSwVencMpeg4 (SHARED_LIBRARIES android-arm64) missing libMpeg4SwEncoder (SHARED_LIBRARIES android-arm64)”
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
hardware/qcom/sdm845/media/mm-video-v4l2/vidc/venc/Android.mk: error: “libOmxSwVencMpeg4 (SHARED_LIBRARIES android-arm) missing libMpeg4SwEncoder (SHARED_LIBRARIES android-arm)”
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
build/make/core/main.mk:972: error: exiting from previous errors.
22:10:32 ckati failed with: exit status 1

failed to build some targets (21:03 (mm:ss))

root@peace:/home/lineage#

. . .

I thought it might be due to not having the vendor proprietary blobs so I went through the process of unzipping Lineage17.1 and using the extract-files.sh script. It unzipped boot/system/vendor.img out of payload.bin, but it didn’t populate the vendor/google folder (there wasn’t one). Same build failures, so no success there.

Anyways, I’m stuck at this point with Lineage 17.1

I guess for /e/, looking at picomatic’s script, I could put the /e/ source from
git clone https://gitlab.e.foundation/e/os/docker-lineage-cicd.git $TMP_DIR/buildscripts

or

git clone --depth=1 https://gitlab.e.foundation/e/os/android_packages_apps_OpenDelta.git OpenDelta

. . .

Any suggestions would be appreciated.

That is correct :slight_smile: I meant that you should try building /e/

[ 99% 634/635] finishing build rules …
FAILED:
hardware/qcom/sdm845/bt/libbt-vendor/Android.mk: error: “libbt-vendor (SHARED_LIBRARIES android-arm64) missing libbtnv (SHARED_LIBRARIES android-arm64)”
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
[/quote]
I imagine you will get the same error in your /e/ build. If so, then try setting this ALLOW_MISSING_DEPENDENCIES environment variable and see if it builds OK.

When I get problems with my /e/ builds, especially for official LOS devices, I try to build LineageOS for microG (since this is what /e/ is closely based on) using the Docker File and instructions from their CI/CD repo
https://github.com/lineageos4microg/docker-lineage-cicd