Skip to content

Instantly share code, notes, and snippets.

@RisenID
Last active August 4, 2024 10:02
Show Gist options
  • Select an option

  • Save RisenID/f9547a04d837bfa93b3b57418ab1675e to your computer and use it in GitHub Desktop.

Select an option

Save RisenID/f9547a04d837bfa93b3b57418ab1675e to your computer and use it in GitHub Desktop.
m52xq build script
#!/bin/bash
#
# Ascendia Build Script - m52xq
# Coded by BlackMesa123 @2023
# Modified and adapted by RisenID @2024
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -e
# Change this according to what you need
DATE=`date +%Y%m%d`
ANDROID_CODENAME="U"
RELEASE_VERSION="Ascendia-KSU"
KSU_VER="v1.0.1"
# Clang 11 r383902b1 is suggested
TC_DIR=/home/risen/android/toolchains/clang/clang-r383902b1
# ! DON'T CHANGE THESE !
SRC_DIR=$(pwd)/sm7325
OUT_DIR=/home/risen/android/builds/ascendia/sm7325
MAIN_DIR=$(pwd)
JOBS=32
MAKE_PARAMS="-j$JOBS -C $SRC_DIR O=$SRC_DIR/out \
ARCH=arm64 CLANG_TRIPLE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 \
CROSS_COMPILE=$TC_DIR/bin/llvm-"
export PATH="$TC_DIR/bin:$PATH"
# ! DON'T CHANGE THESE !
cp $OUT_DIR/m52/update-binary $OUT_DIR/out/zip/META-INF/com/google/android/update-binary
sed -i -e "s/ksu_version/v1.0.1/g" $OUT_DIR/out/zip/META-INF/com/google/android/update-binary
DETECT_BRANCH()
{
cd $SRC_DIR/
if test "$(git rev-parse --abbrev-ref HEAD)" = oneui-ksu; then
echo "----------------------------------------------"
echo "OneUI Branch Detected..."
ASC_VARIANT="OneUI"
ASC_VAR="O"
elif test "$(git rev-parse --abbrev-ref HEAD)" = aosp-ksu; then
echo "----------------------------------------------"
echo "AOSP Branch Detected..."
ASC_VARIANT="AOSP"
ASC_VAR="A"
else
echo "----------------------------------------------"
echo "Check Branch..."
exit
fi
cd $MAIN_DIR/
}
## Now let's handle this ourselves
CLEAN_SOURCE()
{
echo "----------------------------------------------"
echo "Cleaning up sources..."
rm -rf $SRC_DIR/out
}
BUILD_KERNEL()
{
echo "----------------------------------------------"
[ -d "$SRC_DIR/out" ] && echo "Starting $VARIANT kernel build... (DIRTY)" || echo "Starting $VARIANT kernel build..."
echo " "
export LOCALVERSION="-$ANDROID_CODENAME-$RELEASE_VERSION-$KSU_VER-$ASC_VAR-$VARIANT"
mkdir -p $SRC_DIR/out
rm -rf $SRC_DIR/out/arch/arm64/boot/dts/samsung
make $MAKE_PARAMS CC="ccache clang" vendor/$DEFCONFIG
echo " "
# Make kernel
make $MAKE_PARAMS CC="ccache clang"
echo " "
}
REGEN_DEFCONFIG()
{
echo "----------------------------------------------"
[ -d "$SRC_DIR/out" ] && echo "Starting $VARIANT kernel build... (DIRTY)" || echo "Starting $VARIANT kernel build..."
echo " "
mkdir -p $SRC_DIR/out
rm -rf $SRC_DIR/out/arch/arm64/boot/dts/samsung
rm -f $SRC_DIR/out/.config
make $MAKE_PARAMS CC="ccache clang" vendor/$DEFCONFIG
echo " "
# Regen defconfig
cp $SRC_DIR/out/.config $SRC_DIR/arch/arm64/configs/vendor/$DEFCONFIG
echo " "
}
BUILD_MODULES()
{
echo "----------------------------------------------"
echo "Building kernel modules..."
echo " "
make $MAKE_PARAMS INSTALL_MOD_PATH=modules INSTALL_MOD_STRIP=1 modules_install
echo " "
mkdir -p $OUT_DIR/out/zip/vendor/lib/modules
find $SRC_DIR/out/modules -name '*.ko' -exec cp '{}' $OUT_DIR/out/zip/vendor/lib/modules ';'
cp $SRC_DIR/out/modules/lib/modules/5.4*/modules.{alias,dep,softdep} $OUT_DIR/out/zip/vendor/lib/modules
cp $SRC_DIR/out/modules/lib/modules/5.4*/modules.order $OUT_DIR/out/zip/vendor/lib/modules/modules.load
sed -i 's/\(kernel\/[^: ]*\/\)\([^: ]*\.ko\)/\/vendor\/lib\/modules\/\2/g' $OUT_DIR/out/zip/vendor/lib/modules/modules.dep
sed -i 's/.*\///g' $OUT_DIR/out/zip/vendor/lib/modules/modules.load
rm -rf $SRC_DIR/out/modules
}
PACK_BOOT_IMG()
{
echo "----------------------------------------------"
echo "Packing $VARIANT boot.img..."
rm -rf $OUT_DIR/tmp/
mkdir $OUT_DIR/tmp/
# Copy and unpack stock boot.img
cp $OUT_DIR/m52/$IMG_FOLDER/boot.img $OUT_DIR/tmp/boot.img
cd $OUT_DIR/tmp/
avbtool erase_footer --image boot.img
magiskboot_x86 unpack -h boot.img
# Replace stock kernel image
rm -f $OUT_DIR/tmp/kernel
cp $SRC_DIR/out/arch/arm64/boot/Image $OUT_DIR/tmp/kernel
# SELinux permissive
#cmdline=$(head -n 1 header)
#cmdline="$cmdline androidboot.selinux=permissive"
#sed '1 c\"$cmdline"' header > header_new
#rm -f header
#mv header_new header
# Repack and copy in out folder
magiskboot_x86 repack boot.img boot_new.img
mv $OUT_DIR/tmp/boot_new.img $OUT_DIR/out/zip/mesa/$IMG_FOLDER/boot.img
# Clean :3
rm -rf $OUT_DIR/tmp/
cd $MAIN_DIR/
}
PACK_BOOT_IMG_PATCH()
{
echo "----------------------------------------------"
echo "Packing $VARIANT boot.img.p..."
rm -rf $OUT_DIR/tmp/
mkdir $OUT_DIR/tmp/
# Copy and unpack stock boot.img
cp $OUT_DIR/m52/$IMG_FOLDER/boot.img $OUT_DIR/tmp/boot.img
cd $OUT_DIR/tmp/
avbtool erase_footer --image boot.img
magiskboot_x86 unpack -h boot.img
# Replace stock kernel image
rm -f $OUT_DIR/tmp/kernel
cp $SRC_DIR/out/arch/arm64/boot/Image $OUT_DIR/tmp/kernel
# SELinux permissive
#cmdline=$(head -n 1 header)
#cmdline="$cmdline androidboot.selinux=permissive"
#sed '1 c\"$cmdline"' header > header_new
#rm -f header
#mv header_new header
# Repack and copy in out folder
magiskboot_x86 repack boot.img boot_new.img
bsdiff $OUT_DIR/out/zip/mesa/eur/boot.img $OUT_DIR/tmp/boot_new.img $OUT_DIR/out/zip/mesa/$IMG_FOLDER/boot.img.p
# Clean :3
rm -rf $OUT_DIR/tmp/
cd $MAIN_DIR/
}
PACK_DTBO_IMG()
{
echo "----------------------------------------------"
echo "Packing $VARIANT dtbo.img..."
# Uncomment this to use firmware extracted dtbo
#cp $OUT_DIR/m52/$IMG_FOLDER/dtbo.img $OUT_DIR/out/zip/mesa/$IMG_FOLDER/dtbo.img
cp $SRC_DIR/out/arch/arm64/boot/dtbo.img $OUT_DIR/out/zip/mesa/$IMG_FOLDER/dtbo.img
}
PACK_VENDOR_BOOT_IMG()
{
echo "----------------------------------------------"
echo "Packing $VARIANT vendor_boot.img..."
rm -rf $OUT_DIR/tmp/
mkdir $OUT_DIR/tmp/
# Copy and unpack stock vendor_boot.img
cp $OUT_DIR/m52/$IMG_FOLDER/vendor_boot.img $OUT_DIR/tmp/vendor_boot.img
cd $OUT_DIR/tmp/
avbtool erase_footer --image vendor_boot.img
magiskboot_x86 unpack -h vendor_boot.img
# Replace KernelRPValue
sed '1 c\name='"$RP_REV"'' header > header_new
rm -f header
mv header_new header
# Replace stock DTB
rm -f $OUT_DIR/tmp/dtb
cp $SRC_DIR/out/arch/arm64/boot/dts/vendor/qcom/yupik.dtb $OUT_DIR/tmp/dtb
# SELinux permissive
#cmdline=$(head -n 2 header)
#cmdline="$cmdline androidboot.selinux=permissive"
#sed '2 c\"$cmdline"' header > header_new
#rm -f header
#mv header_new header
# Repack and copy in out folder
magiskboot_x86 repack vendor_boot.img vendor_boot_new.img
mv $OUT_DIR/tmp/vendor_boot_new.img $OUT_DIR/out/zip/mesa/$IMG_FOLDER/vendor_boot.img
# Clean :3
rm -rf $OUT_DIR/tmp/
cd $MAIN_DIR/
}
MAKE_INSTALLER()
{
cd $OUT_DIR/out/zip/
zip -r $OUT_DIR/Builds/${RELEASE_VERSION}_${KSU_VER}_${ASC_VARIANT}_m52xq.zip mesa META-INF vendor
}
# Do stuff
clear
rm -rf $OUT_DIR/out
rm -f $OUT_DIR/tmp/*.img
mkdir -p $OUT_DIR/out
cp -r $OUT_DIR/zip-template $OUT_DIR/out/zip
mkdir -p $OUT_DIR/out/zip/mesa/eur
mkdir -p $OUT_DIR/out/zip/mesa/swa
mkdir -p $OUT_DIR/out/zip/mesa/cis
mkdir -p $OUT_DIR/Builds/
# m52xqxx
IMG_FOLDER=eur
VARIANT=m52xqxx
DEFCONFIG=m52xq_eur_open_defconfig
RP_REV=SRPUF17B001
if [[ $1 = "-c" || $1 = "--clean" ]]; then
CLEAN_SOURCE
fi
DETECT_BRANCH
BUILD_KERNEL
BUILD_MODULES
PACK_BOOT_IMG
PACK_DTBO_IMG
PACK_VENDOR_BOOT_IMG
# m52xqins
IMG_FOLDER=swa
VARIANT=m52xqins
DEFCONFIG=m52xq_swa_ins_defconfig
RP_REV=SRPUF24A001
BUILD_KERNEL
PACK_BOOT_IMG_PATCH
PACK_DTBO_IMG
PACK_VENDOR_BOOT_IMG
# m52xqser
IMG_FOLDER=cis
VARIANT=m52xqser
DEFCONFIG=m52xq_cis_ser_defconfig
RP_REV=SRPUF24A001
BUILD_KERNEL
PACK_BOOT_IMG_PATCH
PACK_DTBO_IMG
PACK_VENDOR_BOOT_IMG
MAKE_INSTALLER
rm -rf $OUT_DIR/out/
echo "----------------------------------------------"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment