Author SHA1 Message Date
Andy CrossGate Yan e47bf3099a Changes for April 2024 2024-04-21 23:53:30 +08:00
Andy CrossGate Yan 05330a22e9 Changes for March 2024
- Patch and build TrebleApp on the go, instead of maintaining a prebuilt
2024-03-17 22:30:06 +08:00
Andy CrossGate Yan 2ace4e4189 Changes for December 2023 2023-12-16 19:09:44 +08:00
Andy CrossGate Yan 1f63a1b361 Changes for October 2023 2023-10-18 08:07:23 +08:00
Andy CrossGate Yan 99612391a8 Changes for April 2023 2023-04-18 12:47:53 +00:00
Andy CrossGate Yan a2df947ba3 Changes for March 2023 2023-03-25 00:17:01 +00:00
Andy CrossGate Yan a2f21d4e6a Changes for January 2023
Basically reverts the "integrally securized" part
2023-01-15 13:39:35 +00:00
Andy CrossGate Yan 1809ec0bc1 Initial unified commit for Android 13, with TrebleDroid GSI target 2022-11-11 12:24:44 +00:00
5 changed files with 92 additions and 64 deletions
+1
View File
@@ -0,0 +1 @@
/local_manifests_device
+8 -12
View File
@@ -1,34 +1,30 @@
## Building PHH-based LineageOS GSIs ## ## Building TrebleDroid-based LineageOS GSIs ##
To get started with building LineageOS GSI, you'll need to get familiar with [Git and Repo](https://source.android.com/source/using-repo.html), and set up your environment by referring to [LineageOS Wiki](https://wiki.lineageos.org/devices/redfin/build) (mainly "Install the build packages") and [How to build a GSI](https://github.com/phhusson/treble_experimentations/wiki/How-to-build-a-GSI%3F). Set up your environment by referring to [LineageOS Wiki](https://wiki.lineageos.org/devices/TP1803/build) (mainly "Install the build packages" and "Install the repo command").
First, open a new Terminal window, which defaults to your home directory. Clone the modified treble_experimentations repo there:
git clone https://github.com/AndyCGYan/treble_experimentations
Create a new working directory for your LineageOS build and navigate to it: Create a new working directory for your LineageOS build and navigate to it:
mkdir lineage-18.x-build-gsi; cd lineage-18.x-build-gsi mkdir lineage-20-build-td; cd lineage-20-build-td
Initialize your LineageOS workspace: Initialize your LineageOS workspace:
repo init -u https://github.com/LineageOS/android.git -b lineage-18.1 repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs
Clone both this and the patches repos: Clone both this and the patches repos:
git clone https://github.com/AndyCGYan/lineage_build_unified lineage_build_unified -b lineage-18.1 git clone https://github.com/AndyCGYan/lineage_build_unified lineage_build_unified -b lineage-20-td
git clone https://github.com/AndyCGYan/lineage_patches_unified lineage_patches_unified -b lineage-18.1 git clone https://github.com/AndyCGYan/lineage_patches_unified lineage_patches_unified -b lineage-20-td
Finally, start the build script - for example, to build for all supported archs: Finally, start the build script - for example, to build for all supported archs:
bash lineage_build_unified/buildbot_unified.sh treble 32B 32BO A64B A64BG A64BO 64B 64BG bash lineage_build_unified/buildbot_unified.sh treble A64VN A64VS A64GN 64VN 64VS 64GN
Be sure to update the cloned repos from time to time! Be sure to update the cloned repos from time to time!
--- ---
Note: A-only and VNDKLite targets are generated from AB images instead of source-built - refer to [sas-creator](https://github.com/AndyCGYan/sas-creator). Note: VNDKLite targets are generated from built images instead of source-built - refer to [sas-creator](https://github.com/AndyCGYan/sas-creator).
--- ---
+2
View File
@@ -8,6 +8,8 @@ shopt -s nullglob
for project in $(cd $patches; echo *);do for project in $(cd $patches; echo *);do
p="$(tr _ / <<<$project |sed -e 's;platform/;;g')" p="$(tr _ / <<<$project |sed -e 's;platform/;;g')"
[ "$p" == build ] && p=build/make [ "$p" == build ] && p=build/make
[ "$p" == frameworks/proto/logging ] && p=frameworks/proto_logging
[ "$p" == treble/app ] && p=treble_app
[ "$p" == vendor/hardware/overlay ] && p=vendor/hardware_overlay [ "$p" == vendor/hardware/overlay ] && p=vendor/hardware_overlay
[ "$p" == vendor/partner/gms ] && p=vendor/partner_gms [ "$p" == vendor/partner/gms ] && p=vendor/partner_gms
pushd $p pushd $p
+70 -41
View File
@@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
echo "" echo ""
echo "LineageOS 18.x Unified Buildbot" echo "LineageOS 20 Unified Buildbot"
echo "ATTENTION: this script syncs repo on each run"
echo "Executing in 5 seconds - CTRL-C to exit" echo "Executing in 5 seconds - CTRL-C to exit"
echo "" echo ""
sleep 5 sleep 5
@@ -21,11 +20,19 @@ then
exit 1 exit 1
fi fi
NOSYNC=false
PERSONAL=false PERSONAL=false
if [ ${!#} == "personal" ] for var in "${@:2}"
then do
if [ ${var} == "nosync" ]
then
NOSYNC=true
fi
if [ ${var} == "personal" ]
then
PERSONAL=true PERSONAL=true
fi fi
done
# Abort early on error # Abort early on error
set -eE set -eE
@@ -38,23 +45,29 @@ echo\
)' ERR )' ERR
START=`date +%s` START=`date +%s`
BUILD_DATE="$(date +%Y%m%d)" BUILD_DATE="$(date -u +%Y%m%d)"
WITHOUT_CHECK_API=true
WITH_SU=true
echo "Preparing local manifests" prep_build() {
mkdir -p .repo/local_manifests echo "Preparing local manifests"
cp ./lineage_build_unified/local_manifests_${MODE}/*.xml .repo/local_manifests mkdir -p .repo/local_manifests
echo "" cp ./lineage_build_unified/local_manifests_${MODE}/*.xml .repo/local_manifests
echo ""
echo "Syncing repos" echo "Syncing repos"
repo sync -c --force-sync --no-clone-bundle --no-tags -j$(nproc --all) repo sync -c --force-sync --no-clone-bundle --no-tags -j$(nproc --all)
echo "" echo ""
echo "Setting up build environment" echo "Setting up build environment"
source build/envsetup.sh &> /dev/null source build/envsetup.sh &> /dev/null
mkdir -p ~/build-output mkdir -p ~/build-output
echo "" echo ""
repopick -t 13-burnin -r -f
repopick -t 13-taro-kalama -r -f
repopick 321337 -r -f # Deprioritize important developer notifications
repopick 321338 -r -f # Allow disabling important developer notifications
repopick 321339 -r -f # Allow disabling USB notifications
}
apply_patches() { apply_patches() {
echo "Applying patch group ${1}" echo "Applying patch group ${1}"
@@ -67,7 +80,7 @@ prep_device() {
prep_treble() { prep_treble() {
apply_patches patches_treble_prerequisite apply_patches patches_treble_prerequisite
apply_patches patches_treble_phh apply_patches patches_treble_td
} }
finalize_device() { finalize_device() {
@@ -75,52 +88,68 @@ finalize_device() {
} }
finalize_treble() { finalize_treble() {
rm -f device/*/sepolicy/common/private/genfs_contexts
cd device/phh/treble cd device/phh/treble
git clean -fdx git clean -fdx
bash generate.sh lineage bash generate.sh lineage
cd ../../.. cd ../../..
cd treble_app
bash build.sh release
cp TrebleApp.apk ../vendor/hardware_overlay/TrebleApp/app.apk
cd ..
cd vendor/hardware_overlay
git add TrebleApp/app.apk
git commit -m "[TEMP] Up TrebleApp to $BUILD_DATE"
cd ../..
} }
build_device() { build_device() {
brunch ${1} brunch ${1}
mv $OUT/lineage-*.zip ~/build-output/lineage-18.1-$BUILD_DATE-UNOFFICIAL-${1}$($PERSONAL && echo "-personal" || echo "").zip mv $OUT/lineage-*.zip ~/build-output/lineage-20.0-$BUILD_DATE-UNOFFICIAL-${1}$($PERSONAL && echo "-personal" || echo "").zip
} }
build_treble() { build_treble() {
case "${1}" in case "${1}" in
("32B") TARGET=arm_bvS;; ("A64VN") TARGET=a64_bvN;;
("32BO") TARGET=arm_boS;; ("A64VS") TARGET=a64_bvS;;
("A64B") TARGET=a64_bvS;; ("A64GN") TARGET=a64_bgN;;
("A64BG") TARGET=a64_bgS;; ("64VN") TARGET=arm64_bvN;;
("A64BO") TARGET=a64_boS;; ("64VS") TARGET=arm64_bvS;;
("64B") TARGET=arm64_bvS;; ("64GN") TARGET=arm64_bgN;;
("64BG") TARGET=arm64_bgS;;
("TTP") TARGET=ttp;;
(*) echo "Invalid target - exiting"; exit 1;; (*) echo "Invalid target - exiting"; exit 1;;
esac esac
lunch lineage_${TARGET}-userdebug lunch lineage_${TARGET}-userdebug
make installclean make installclean
make -j$(nproc --all) systemimage make -j$(lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l) systemimage
make vndk-test-sepolicy mv $OUT/system.img ~/build-output/lineage-20.0-$BUILD_DATE-UNOFFICIAL-${TARGET}$(${PERSONAL} && echo "-personal" || echo "").img
mv $OUT/system.img ~/build-output/lineage-18.1-$BUILD_DATE-UNOFFICIAL-${TARGET}$(${PERSONAL} && echo "-personal" || echo "").img #make vndk-test-sepolicy
} }
echo "Applying patches" if ${NOSYNC}
prep_${MODE}
apply_patches patches_platform
apply_patches patches_${MODE}
if ${PERSONAL}
then then
echo "ATTENTION: syncing/patching skipped!"
echo ""
echo "Setting up build environment"
source build/envsetup.sh &> /dev/null
echo ""
else
prep_build
echo "Applying patches"
prep_${MODE}
apply_patches patches_platform
apply_patches patches_${MODE}
if ${PERSONAL}
then
apply_patches patches_platform_personal apply_patches patches_platform_personal
apply_patches patches_${MODE}_personal apply_patches patches_${MODE}_personal
fi
finalize_${MODE}
echo ""
fi fi
finalize_${MODE}
echo ""
for var in "${@:2}" for var in "${@:2}"
do do
if [ ${var} == "personal" ] if [ ${var} == "nosync" ] || [ ${var} == "personal" ]
then then
continue continue
fi fi
+8 -8
View File
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<manifest> <manifest>
<remote name="gitlab" fetch="https://gitlab.com/" /> <project name="TrebleDroid/vendor_hardware_overlay" path="vendor/hardware_overlay" remote="github" revision="pie" />
<project name="TrebleDroid/device_phh_treble" path="device/phh/treble" remote="github" revision="android-13.0" />
<remove-project name="platform/packages/apps/Jelly" />
<project name="phhusson/vendor_hardware_overlay" path="vendor/hardware_overlay" remote="github" revision="pie" />
<project name="phhusson/device_phh_treble" path="device/phh/treble" remote="github" revision="android-11.0" />
<project name="phhusson/vendor_vndk-tests" path="vendor/vndk-tests" remote="github" revision="master" /> <project name="phhusson/vendor_vndk-tests" path="vendor/vndk-tests" remote="github" revision="master" />
<project name="phhusson/vendor_interfaces" path="vendor/interfaces" remote="github" revision="android-11.0" /> <project name="TrebleDroid/vendor_interfaces" path="vendor/interfaces" remote="github" revision="android-13.0" />
<project name="phhusson/vendor_lptools" path="vendor/lptools" remote="github" revision="master" />
<project name="phhusson/vendor_magisk" path="vendor/magisk" remote="github" revision="android-10.0" /> <project name="phhusson/vendor_magisk" path="vendor/magisk" remote="github" revision="android-10.0" />
<project name="00p513-dev/partner_gms" path="vendor/partner_gms" remote="gitlab" revision="11" /> <project name="TrebleDroid/treble_app" path="treble_app" remote="github" revision="master" />
<project name="AndyCGYan/android_packages_apps_QcRilAm" path="packages/apps/QcRilAm" remote="github" revision="master" />
<remote name="gitlab" fetch="https://gitlab.com/" />
<project name="MindTheGapps/vendor_gapps" path="vendor/gapps" remote="gitlab" revision="tau" />
</manifest> </manifest>