Ich hab mich ans bauen des Quelltextes mit der Hilfe von Docker gewagt.
Nach offizieller Anleitung habe ich es geschaft bis zu einem Prozent zu kommen.
Dann bricht es ab.
Deshalb wollte ich mal fragen ob es bereits fertige Dockerfiles gibt die ich zum Vergleichen nutzen kann.
Aktuell habe ich keinen Zugriff auf meinen Rechner deswegen ersteinmal ohne Protokolle.
Ich habe nun geschafft, an das Skript zu gelangen.
Es ist bei weitem noch nicht fertig,
Vielleicht kann jemand auf typische Fehler aufmerksam machen.
Es ist erst mein dritter Versuch Android zu bauen.
Also abzuraten das einfach so zu nutzen.
Die Fehlermeldungen muss ich noch aus dem System ziehen.
docker.bash
#! /bin/env bash
set -eu
source variables.bash
mkdir -p "$build_dir"
cd "$build_dir"
cat <<'EOF' > "$build_dir/variables.bash"
#! /bin/env bash
# Do not uncomment. It is used for release only.
# set -eu
current_directory="$PWD"
data_directory="$current_directory/data"
binary_directory="$data_directory/binary"
fair_phone_os_directory="$data_directory/fair-phone-os"
qssi_directory="$fair_phone_os_directory/qssi"
target_directory="$fair_phone_os_directory/target"
download_directory="$data_directory/download"
extracted_directory="$data_directory/extracted"
compiled_directory="$data_directory/compiled"
repo_dir="/root/bin"
target_blob_url="https://storage.googleapis.com/fairphone-updates/fp6/d7467c7c-0355-40e0-bdd0-fdb92cdca113/FP6-target-QREL.15.105.0.20250623223003-blobs.tgz"
qssi_blob_url="https://storage.googleapis.com/fairphone-updates/fp6/d7467c7c-0355-40e0-bdd0-fdb92cdca113/FP6-QSSI-QREL.15.105.0.20250623223003-blobs.tgz"
qssi_blob_file="fp6-qssi-binaries.tgz"
qssi_blob_directory="$download_directory"
qssi_blob_path="$qssi_blob_directory/$qssi_blob_file"
qssi_extracted_directory="$extracted_directory/qssi"
qssi_proprietary_directory="$qssi_directory/device/fairphone/fp6-proprietary"
qssi_compiled_directory="$compiled_directory/qssi"
target_blob_file="fp6-target-binaries.tgz"
target_blob_directory="$download_directory"
target_blob_path="$target_blob_directory/$target_blob_file"
target_extracted_directory="$extracted_directory/target"
target_proprietary_directory="$target_directory/device/fairphone/fp6-proprietary"
target_compiled_directory="$compiled_directory/target"
repo="$repo_dir/repo"
EOF
cat <<EOF > "$build_dir/OS.Dockerfile"
FROM debian:13-slim
RUN apt update
RUN apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
RUN apt install -y python3 procps clang clangd
ADD install-repo.bash /root/
RUN bash /root/install-repo.bash
RUN /root/bin/repo version > /root/repo-version.txt
EOF
cat <<EOF > "$build_dir/Dockerfile"
FROM aosp_custom_debian
ADD variables.bash /root/
ADD download-source.bash /root/
ADD download-binaries.bash /root/
ADD extract-binaries.bash /root/
ADD compile.bash /root/
ADD compile-qssi.bash /root/
ADD compile-target.bash /root/
ADD build.bash /root/
WORKDIR /root/
CMD ["/bin/bash"]
EOF
cat <<'EOF' > "$build_dir/install-repo.bash"
export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
mkdir -p /root/bin
curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo
EOF
cat <<'EOF' > "$build_dir/build.bash"
#! /bin/env bash
export PATH="/root/bin:$PATH"
git config --global user.email "you@localhost"
git config --global user.name "Your Name"
cd /root/
/bin/bash /root/download-source.bash
/bin/bash /root/download-binaries.bash
/bin/bash /root/extract-binaries.bash
/bin/bash /root/compile.bash
EOF
cat <<'EOF' > "$build_dir/download-source.bash"
# SOURCE: URI: https://code.fairphone.com/projects/fairphone-gen-6/build-instructions.html
set -eu
source variables.bash
echo "Changing into fair phone OS directory."
mkdir -p "$fair_phone_os_directory" && cd "$fair_phone_os_directory"
if [[ ! -d $qssi_directory ]]
then
echo "Download qssi source."
mkdir -p "$qssi_directory" && cd "$qssi_directory"
# $repo init -u ssh://gerrit-public.fairphone.software:29418/manifest -b refs/heads/odm/public-build/15/fp6 -m qssi.xml
# or for http based access
$repo init -u https://gerrit-public.fairphone.software/manifest -b refs/heads/odm/public-build/15/fp6 -m qssi.xml
$repo sync --detach --current-branch --no-tags
else
echo "Reusing existing qssi source."
fi
echo "Change back into the initial directory."
cd "$current_directory"
if [[ ! -d $target_directory ]]
then
echo "Downloading the target source."
mkdir -p "$target_directory" && cd "$target_directory"
# $repo init -u ssh://gerrit-public.fairphone.software:29418/manifest -b refs/heads/odm/public-build/15/fp6 -m target.xml
# or for http based access
$repo init -u https://gerrit-public.fairphone.software/manifest -b refs/heads/odm/public-build/15/fp6 -m target.xml
$repo sync --detach --current-branch --no-tags
else
echo "Reusing existing target source."
fi
EOF
cat <<'EOF' > "$build_dir/download-binaries.bash"
# SOURCE: URI: https://code.fairphone.com/projects/fairphone-gen-6/binary-blobs-package.html#fairphone-gen-6-blobs
set -eu
source variables.bash
mkdir -p "$binary_directory"
cd "$binary_directory"
mkdir -p "$qssi_blob_directory"
curl \
--output "$qssi_blob_path" \
-C - \
"$qssi_blob_url"
mkdir -p "$target_blob_directory"
curl \
--output "$target_blob_path" \
-C - \
"$target_blob_url"
EOF
cat <<'EOF' > "$build_dir/extract-binaries.bash"
set -eu
source variables.bash
mkdir -p "$extracted_directory"
cd "$extracted_directory"
if [[ ! -d $qssi_extracted_directory ]]
then
mkdir -p "$qssi_extracted_directory"
cd "$qssi_extracted_directory"
echo Extracting QSSI blobs.
tar -xvzf "$qssi_blob_path"
else
echo "Already extracted QSSI blobs."
fi
if [[ ! -d $qssi_proprietary_directory ]]
then
echo "Running qssi script."
cd "$qssi_extracted_directory"
./FP6-QSSI-*-blobs.sh --target "$qssi_proprietary_directory"
else
echo "Already ran qssi script."
fi
if [[ ! -d $target_extracted_directory ]]
then
mkdir -p "$target_extracted_directory"
cd "$target_extracted_directory"
echo Extracting Target blobs.
tar -xvzf "$target_blob_path"
else
echo "Already extracted Target blobs."
fi
if [[ ! -d $target_proprietary_directory ]]
then
echo "Running target script."
cd "$target_extracted_directory"
./FP6-target-*-blobs.sh --target "$target_proprietary_directory"
else
echo "Already ran target script."
fi
EOF
cat <<'EOF' > "$build_dir/compile.bash"
source variables.bash
if [[ ! -L /usr/bin/python ]]
then
echo Linking python.
ln -s /usr/bin/python3 /usr/bin/python
else
echo Already linked python.
fi
set +eu
if [[ ! -d "$qssi_compiled_directory" ]]
then
echo "Compiling qssi."
bash /root/compile-qssi.bash &> qssi.log
mkdir -p "$qssi_compiled_directory"
else
echo "Already compiled qssi."
fi
if [[ ! -d "$target_compiled_directory" ]]
then
echo "Compiling target."
bash /root/compile-target.bash &> target.log
mkdir -p "$target_compiled_directory"
else
echo "Already compiled target."
fi
EOF
cat <<'EOF' > "$build_dir/compile-qssi.bash"
source variables.bash
cd "$qssi_directory"
source build/envsetup.sh
lunch qssi_64-userdebug
bash build.sh dist --qssi_only
EOF
cat <<'EOF' > "$build_dir/compile-target.bash"
source variables.bash
cd "$target_directory"
source build/envsetup.sh
lunch fps-userdebug
RECOMPILE_KERNEL=1 bash kernel_platform/build/android/prepare_vendor.sh fps consolidate
bash build.sh dist --target_only
EOF
sudo docker build \
-t "aosp_custom_debian" \
-f "OS.Dockerfile" \
.
sudo docker build \
--no-cache \
-t "$name:$version" \
.
mkdir -p "$build_dir/data"
sudo docker run \
--rm \
--tty \
--interactive \
--name "$name" \
-v "$build_dir/data":/root/data:Z \
"$name:$version"