mirror of
https://github.com/gnuton/asuswrt-merlin.ng.git
synced 2025-05-18 07:22:41 +02:00
426 lines
12 KiB
Bash
Executable file
426 lines
12 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
#######
|
|
### Asuswrt-Merlin.ng build script
|
|
### Expects you to have a copy of the sources at $SRC_LOC
|
|
### and model-specific copies as ~/amng.ac86, ~/amng.ac88, etc...
|
|
###
|
|
### Script will rsync between $SRC_LOC and the various ~/amng.XXX folders
|
|
######
|
|
|
|
### Start config
|
|
|
|
### Manual/hardcoded
|
|
# Append git revision
|
|
export BUILDREV=1
|
|
|
|
# Enable update server support (don't use if you build a fork!)
|
|
#export MERLINUPDATE=y
|
|
|
|
# rsync tree from central source tree before build.
|
|
# If set to "btrfs", then "cp --reflink" is used instead of rsync.
|
|
RSYNC_TREE=y
|
|
|
|
# Combined RT-AC68U image?
|
|
COMBINED=y
|
|
|
|
# Build ROG UI image for GT models in addition to regular image
|
|
BUILD_ROGUI=n
|
|
|
|
### Uncomment the models you wish to build.
|
|
|
|
BAC68=y
|
|
|
|
BAC88=y
|
|
BAC3100=y
|
|
BAC5300=y
|
|
BAC86=y
|
|
BGTAC2900=y
|
|
BAC68V4=y
|
|
|
|
BAX88=y
|
|
BGTAX11000=y
|
|
|
|
BAX56=y
|
|
BAX58=y
|
|
|
|
BAX86=y
|
|
BAX68=y
|
|
BGTAXE11000=y
|
|
|
|
BGTAX6000=y
|
|
BXT12=y
|
|
BGTAXE16000=y
|
|
BGTAX11000_PRO=y
|
|
BAX86_PRO=y
|
|
BAX88_PRO=y
|
|
|
|
BBE96=y
|
|
BGTBE98PRO=y
|
|
|
|
|
|
### Branches for each model
|
|
BRANCH_AC68=386_x
|
|
|
|
BRANCH_AC88=386_x
|
|
BRANCH_AC3100=386_x
|
|
BRANCH_AC5300=386_x
|
|
|
|
BRANCH_AC86=386_x
|
|
BRANCH_GTAC2900=386_x
|
|
|
|
BRANCH_AX88=3004.388
|
|
BRANCH_GTAX11000=3004.388
|
|
|
|
BRANCH_AX58=3004.388
|
|
BRANCH_AX56=3004.388
|
|
|
|
BRANCH_AX86=3004.388
|
|
BRANCH_AX68=3004.388
|
|
BRANCH_GTAXE11000=3004.388
|
|
BRANCH_AC68V4=386_x
|
|
|
|
BRANCH_GTAX6000=3004.388
|
|
BRANCH_XT12=3004.388
|
|
BRANCH_GTAXE16000=3004.388
|
|
BRANCH_GTAX11000_PRO=3004.388
|
|
BRANCH_AX86_PRO=3004.388
|
|
BRANCH_AX88_PRO=3004.388
|
|
|
|
BRANCH_BE96=3006.102
|
|
BRANCH_GTBE98_PRO=3006.102
|
|
|
|
### Paths
|
|
# Store built images there
|
|
STAGE_LOC="$HOME/images"
|
|
|
|
# Copy built images there
|
|
# Copy is done using scp, so it can be an ssh location
|
|
#FINAL_LOC=""
|
|
#FINAL_LOC=admin@router.asus.com:/mnt/sda1/Share
|
|
FINAL_LOC=/media/sf_Share
|
|
|
|
# Location of the original source code
|
|
SRC_LOC="$HOME/amng"
|
|
|
|
### End config
|
|
|
|
|
|
build_fw()
|
|
{
|
|
BRANCH="$4"
|
|
FWMODEL="$3"
|
|
SDKPATH="$2"
|
|
FWPATH="$1"
|
|
echo "*** $(date +%R) - Starting building $FWMODEL..."
|
|
cd "$HOME/$FWPATH/$SDKPATH" || exit 1
|
|
if make "$FWMODEL" > "output.txt" 2>&1; then
|
|
cd image || exit
|
|
if [ "$FWMODEL" = "rt-ac86u" ] || [ "$FWMODEL" = "gt-ac2900" ] || [ "$FWMODEL" = "rt-ax88u" ] || [ "$FWMODEL" = "gt-ax11000" ] ; then
|
|
rm *_cferom_ubi.w
|
|
FWNAME="$(find -- *_ubi.w | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~_ubi.w~~g').zip"
|
|
elif [ "$FWMODEL" = "rt-ax58u" ] || [ "$FWMODEL" = "rt-ac68u_v4" ]; then
|
|
rm *_cferom_puresqubi.w
|
|
FWNAME="$(find -- *_puresqubi.w | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~_puresqubi.w~~g').zip"
|
|
elif [ "$FWMODEL" = "rt-ax86u" ] || [ "$FWMODEL" = "rt-ax68u" ] ; then
|
|
rm *_cferom_pureubi.w # Broken cferom, do not use until fixed upstream
|
|
FWNAME="$(find -- *_pureubi.w | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~_pureubi.w~~g').zip"
|
|
elif [ "$FWMODEL" = "rt-ax56u" ] || [ "$FWMODEL" = "gt-axe11000" ] ; then
|
|
rm *_cferom_pureubi.w
|
|
FWNAME="$(find -- *_pureubi.w | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~_pureubi.w~~g').zip"
|
|
elif [ "$FWMODEL" = "gt-ax6000" ] || [ "$FWMODEL" = "xt12" ] || [ "$FWMODEL" = "gt-axe16000" ] || [ "$FWMODEL" = "gt-ax11000_pro" ] || [ "$FWMODEL" = "rt-ax86u_pro" ] || [ "$FWMODEL" = "rt-ax88u_pro" ] ; then
|
|
FWNAME="$(find -- *_nand_squashfs.pkgtb | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~_nand_squashfs.pkgtb~~g').zip"
|
|
elif [ "$FWMODEL" = "gt-be98_pro" ] || [ "$FWMODEL" = "gt-be98" ] || [ "$FWMODEL" = "rt-be96u" ] ; then
|
|
FWNAME="$(find -- *_nand_squashfs.pkgtb | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~_nand_squashfs.pkgtb~~g').zip"
|
|
else
|
|
FWNAME="$(find -- *.trx | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~.trx~~g').zip"
|
|
fi
|
|
cp "$FWNAME" "$STAGE_LOC/"
|
|
sha256sum "$FWNAME" > sha256sum.sha256
|
|
|
|
if [[ "$FWNAME" == *"3004_388"* ]]; then
|
|
CHANGELOG="Changelog-NG.txt"
|
|
elif [[ "$FWNAME" == *"3006_102"* ]]; then
|
|
CHANGELOG="Changelog-3006.txt"
|
|
else
|
|
CHANGELOG="Changelog-386.txt"
|
|
fi
|
|
cp $HOME/$FWPATH/$CHANGELOG $STAGE_LOC/
|
|
|
|
zip -qj "$STAGE_LOC/$ZIPNAME" "$FWNAME" "$STAGE_LOC/README-merlin.txt" "$STAGE_LOC/$CHANGELOG" "sha256sum.sha256" 2>/dev/null
|
|
echo "*** $(date +%R) - Done building $FWMODEL!"
|
|
|
|
if [ "$BUILD_ROGUI" = "y" ] && ([ "$FWMODEL" = "gt-axe16000" ] || [ "$FWMODEL" = "gt-ax6000" ] || [ "$FWMODEL" = "gt-ax11000_pro" ] || [ "$FWMODEL" = "gt-ac2900" ] || [ "$FWMODEL" = "gt-ax11000" ] || [ "$FWMODEL" = "gt-axe11000" ]) ; then
|
|
echo "--- $(date +%R) - Building ROG UI for $FWMODEL"
|
|
cd ..
|
|
sed -i 's/ROG_UI=n/ROG_UI=y/' target.mak
|
|
rm -rf image/*.pkgtb image/*.w .config
|
|
if make "$FWMODEL" > "output.txt" 2>&1; then
|
|
cd image
|
|
if [ "$FWMODEL" = "gt-ax6000" ] || [ "$FWMODEL" = "gt-axe16000" ] || [ "$FWMODEL" = "gt-ax11000_pro" ] ; then
|
|
FWNAME="$(find -- *rog*_nand_squashfs.pkgtb | head -n 1)"
|
|
elif [ "$FWMODEL" = "gt-ac2900" ] || [ "$FWMODEL" = "gt-ax11000" ] ; then
|
|
rm *_cferom_ubi.w
|
|
FWNAME="$(find -- *rog*_ubi.w | head -n 1)"
|
|
elif [ "$FWMODEL" = "gt-axe11000" ] ; then
|
|
rm *_cferom_pureubi.w
|
|
FWNAME="$(find -- *rog*_pureubi.w | head -n 1)"
|
|
else
|
|
echo "!!! $(date +%R) - $FWMODEL ROG build failed!"
|
|
return
|
|
fi
|
|
cp "$FWNAME" "$STAGE_LOC/"
|
|
sha256sum "$FWNAME" >> sha256sum.sha256
|
|
zip -qj "$STAGE_LOC/$ZIPNAME" "$FWNAME" "sha256sum.sha256" 2>/dev/null
|
|
echo "*** $(date +%R) - Done building ROG UI for $FWMODEL!"
|
|
else
|
|
echo "!!! $(date +%R) - $FWMODEL ROG build failed!"
|
|
return
|
|
fi
|
|
fi
|
|
else
|
|
echo "!!! $(date +%R) - $FWMODEL build failed!"
|
|
fi
|
|
}
|
|
|
|
clean_tree()
|
|
{
|
|
FWPATH="$1"
|
|
SDKPATH="$2"
|
|
FWMODEL="$3"
|
|
BRANCH="$4"
|
|
echo "*** $(date +%R) - Cleaning up $FWMODEL..."
|
|
if [ "$RSYNC_TREE" = "y" ]; then
|
|
echo "*** $(date +%R) - Updating $FWMODEL tree..."
|
|
rsync -a --del "$SRC_LOC/" "$HOME/$FWPATH"
|
|
elif [ "$RSYNC_TREE" = "btrfs" ]; then
|
|
echo "*** $(date +%R) - Copying $FWMODEL tree..."
|
|
rm -rf "$HOME/$FWPATH"
|
|
cp -ar --reflink=auto "$SRC_LOC" "$HOME/$FWPATH"
|
|
fi
|
|
|
|
cd "$HOME/$FWPATH" || exit 1
|
|
|
|
CURRENT=$(git branch | grep "\*" | cut -d ' ' -f2)
|
|
if [ "$CURRENT" != "$BRANCH" ] ; then
|
|
git checkout "$BRANCH"
|
|
fi
|
|
|
|
echo "*** $(date +%R) - $FWMODEL code ready."
|
|
}
|
|
|
|
# Initial cleanup
|
|
|
|
echo "--- $(date +%R) - Global cleanup..."
|
|
mkdir -p "$STAGE_LOC/backup"
|
|
mv "$STAGE_LOC"/* "$STAGE_LOC/backup/" 2>/dev/null
|
|
cp "$SRC_LOC/README-merlin.txt" "$STAGE_LOC/"
|
|
cp "$SRC_LOC"/Changelog*.txt "$STAGE_LOC/"
|
|
|
|
|
|
# Update all model trees
|
|
|
|
echo "--- $(date +%R) - Preparing trees"
|
|
if [ "$BAC68" = "y" ]; then
|
|
clean_tree amng.ac68 release/src-rt-6.x.4708 rt-ac68u $BRANCH_AC68
|
|
fi
|
|
if [ "$BAC3100" = "y" ]; then
|
|
clean_tree amng.ac3100 release/src-rt-7.14.114.x/src rt-ac3100 $BRANCH_AC3100
|
|
fi
|
|
if [ "$BAC88" = "y" ]; then
|
|
clean_tree amng.ac88 release/src-rt-7.14.114.x/src rt-ac88u $BRANCH_AC88
|
|
fi
|
|
if [ "$BAC5300" = "y" ]; then
|
|
clean_tree amng.ac5300 release/src-rt-7.14.114.x/src rt-ac5300 $BRANCH_AC5300
|
|
fi
|
|
if [ "$BAC86" = "y" ]; then
|
|
clean_tree amng.ac86 release/src-rt-5.02hnd rt-ac86u $BRANCH_AC86
|
|
fi
|
|
if [ "$BGTAC2900" = "y" ]; then
|
|
clean_tree amng.gt2900 release/src-rt-5.02hnd gt-ac2900 $BRANCH_GTAC2900
|
|
fi
|
|
if [ "$BAX88" = "y" ]; then
|
|
clean_tree amng.ax88 release/src-rt-5.02axhnd rt-ax88u $BRANCH_AX88
|
|
fi
|
|
if [ "$BGTAX11000" = "y" ]; then
|
|
clean_tree amng.gtax11000 release/src-rt-5.02axhnd gt-ax11000 $BRANCH_GTAX11000
|
|
fi
|
|
if [ "$BAX58" = "y" ]; then
|
|
clean_tree amng.ax58 release/src-rt-5.02axhnd.675x rt-ax58u $BRANCH_AX58
|
|
fi
|
|
if [ "$BAX56" = "y" ]; then
|
|
clean_tree amng.ax56 release/src-rt-5.02axhnd.675x rt-ax56u $BRANCH_AX56
|
|
fi
|
|
if [ "$BAX86" = "y" ]; then
|
|
clean_tree amng.ax86 release/src-rt-5.02L.07p2axhnd rt-ax86u $BRANCH_AX86
|
|
fi
|
|
if [ "$BAX68" = "y" ]; then
|
|
clean_tree amng.ax68 release/src-rt-5.02L.07p2axhnd rt-ax68u $BRANCH_AX68
|
|
fi
|
|
if [ "$BGTAXE11000" = "y" ]; then
|
|
clean_tree amng.gtaxe11000 release/src-rt-5.02L.07p2axhnd gt-axe11000 $BRANCH_GTAXE11000
|
|
fi
|
|
if [ "$BAC68V4" = "y" ]; then
|
|
clean_tree amng.ac68v4 release/src-rt-5.02L.07p2axhnd rt-ac68u_v4 $BRANCH_AC68V4
|
|
fi
|
|
if [ "$BGTAX6000" = "y" ]; then
|
|
clean_tree amng.gtax6000 release/src-rt-5.04axhnd.675x gt-ax6000 $BRANCH_GTAX6000
|
|
fi
|
|
if [ "$BXT12" = "y" ]; then
|
|
clean_tree amng.xt12 release/src-rt-5.04axhnd.675x xt12 $BRANCH_XT12
|
|
fi
|
|
if [ "$BGTAXE16000" = "y" ]; then
|
|
clean_tree amng.gtaxe16000 release/src-rt-5.04axhnd.675x gt-axe16000 $BRANCH_GTAXE16000
|
|
fi
|
|
if [ "$BGTAX11000_PRO" = "y" ]; then
|
|
clean_tree amng.gtax11000pro release/src-rt-5.04axhnd.675x gt-ax11000_pro $BRANCH_GTAX11000_PRO
|
|
fi
|
|
if [ "$BAX86_PRO" = "y" ]; then
|
|
clean_tree amng.ax86pro release/src-rt-5.04axhnd.675x rt-ax86u_pro $BRANCH_AX86_PRO
|
|
fi
|
|
if [ "$BAX88_PRO" = "y" ]; then
|
|
clean_tree amng.ax88pro release/src-rt-5.04axhnd.675x rt-ax88u_pro $BRANCH_AX88_PRO
|
|
fi
|
|
if [ "$BGTBE98PRO" = "y" ]; then
|
|
clean_tree amng.gtbe98pro amng.gtbe98pro/release/src-rt-5.04behnd.4916 gt-be98_pro $BRANCH_GTBE98_PRO
|
|
fi
|
|
if [ "$BBE96" = "y" ]; then
|
|
clean_tree amng.be96 amng.be96/release/src-rt-5.04behnd.4916 rt-be96u $BRANCH_BE96
|
|
fi
|
|
|
|
echo "--- $(date +%R) - All trees ready!"
|
|
|
|
# Launch parallel builds
|
|
|
|
echo "--- $(date +%R) - Launching all builds"
|
|
if [ "$BGTBE98PRO" = "y" ]; then
|
|
build_fw amng.gtbe98pro release/src-rt-5.04behnd.4916 gt-be98_pro &
|
|
fi
|
|
|
|
if [ "$BBE96" = "y" ]; then
|
|
build_fw amng.be96 release/src-rt-5.04behnd.4916 rt-be96u &
|
|
fi
|
|
|
|
if [ "$BGTAX6000" = "y" ]; then
|
|
build_fw amng.gtax6000 release/src-rt-5.04axhnd.675x gt-ax6000 &
|
|
fi
|
|
|
|
if [ "$BXT12" = "y" ]; then
|
|
build_fw amng.xt12 release/src-rt-5.04axhnd.675x xt12 &
|
|
fi
|
|
|
|
if [ "$BAX86_PRO" = "y" ]; then
|
|
build_fw amng.ax86pro release/src-rt-5.04axhnd.675x rt-ax86u_pro &
|
|
fi
|
|
|
|
if [ "$BAX88_PRO" = "y" ]; then
|
|
build_fw amng.ax88pro release/src-rt-5.04axhnd.675x rt-ax88u_pro &
|
|
fi
|
|
|
|
if [ "$BGTAX11000_PRO" = "y" ]; then
|
|
build_fw amng.gtax11000pro release/src-rt-5.04axhnd.675x gt-ax11000_pro &
|
|
fi
|
|
|
|
if [ "$BGTAXE16000" = "y" ]; then
|
|
build_fw amng.gtaxe16000 release/src-rt-5.04axhnd.675x gt-axe16000 &
|
|
fi
|
|
|
|
if [ "$BAC86" = "y" ]; then
|
|
build_fw amng.ac86 release/src-rt-5.02hnd rt-ac86u &
|
|
fi
|
|
|
|
if [ "$BGTAC2900" = "y" ]; then
|
|
build_fw amng.gt2900 release/src-rt-5.02hnd gt-ac2900 &
|
|
fi
|
|
|
|
if [ "$BAX88" = "y" ]; then
|
|
build_fw amng.ax88 release/src-rt-5.02axhnd rt-ax88u &
|
|
fi
|
|
|
|
if [ "$BGTAX11000" = "y" ]; then
|
|
build_fw amng.gtax11000 release/src-rt-5.02axhnd gt-ax11000 &
|
|
fi
|
|
|
|
if [ "$BGTAXE11000" = "y" ]; then
|
|
build_fw amng.gtaxe11000 release/src-rt-5.02L.07p2axhnd gt-axe11000 &
|
|
fi
|
|
|
|
if [ "$BAC68V4" = "y" ]; then
|
|
build_fw amng.ac68v4 release/src-rt-5.02L.07p2axhnd rt-ac68u_v4 &
|
|
fi
|
|
|
|
if [ "$BAX58" = "y" ]; then
|
|
build_fw amng.ax58 release/src-rt-5.02axhnd.675x rt-ax58u &
|
|
fi
|
|
|
|
if [ "$BAX56" = "y" ]; then
|
|
build_fw amng.ax56 release/src-rt-5.02axhnd.675x rt-ax56u &
|
|
fi
|
|
|
|
if [ "$BAX86" = "y" ]; then
|
|
build_fw amng.ax86 release/src-rt-5.02L.07p2axhnd rt-ax86u &
|
|
fi
|
|
|
|
if [ "$BAX68" = "y" ]; then
|
|
build_fw amng.ax68 release/src-rt-5.02L.07p2axhnd rt-ax68u &
|
|
fi
|
|
|
|
if [ "$BAC68" = "y" ]; then
|
|
build_fw amng.ac68 release/src-rt-6.x.4708 rt-ac68u &
|
|
fi
|
|
|
|
if [ "$BAC3100" = "y" ]; then
|
|
build_fw amng.ac3100 release/src-rt-7.14.114.x/src rt-ac3100 &
|
|
fi
|
|
|
|
if [ "$BAC88" = "y" ]; then
|
|
build_fw amng.ac88 release/src-rt-7.14.114.x/src rt-ac88u &
|
|
fi
|
|
|
|
if [ "$BAC5300" = "y" ]; then
|
|
build_fw amng.ac5300 release/src-rt-7.14.114.x/src rt-ac5300 &
|
|
fi
|
|
|
|
sleep 5\
|
|
|
|
echo "--- $(date +%R) - All builds launched, please wait..."
|
|
|
|
wait
|
|
|
|
# Build combined image?
|
|
if [ "$BAC68" = "y" ] && [ "$BAC68V4" = "y" ] && [ $"$COMBINED" = "y" ]
|
|
then
|
|
echo "--- $(date +%R) - Building combined RT-AC68U image..."
|
|
cd "$HOME/amng.ac68/release/src-rt-6.x.4708"
|
|
make rt-ac68u-combine_image BCM=y IMAGEDIR=$STAGE_LOC > "output.txt" 2>&1;
|
|
|
|
cd "$STAGE_LOC"
|
|
FWNAME="$(find -- RT-AC68U_*.trx | head -n 1)"
|
|
ZIPNAME="$(echo "$FWNAME" | sed 's~.trx~~g').zip"
|
|
sha256sum "$FWNAME" > sha256sum.sha256
|
|
zip -qj "$ZIPNAME" "$FWNAME" README-merlin.txt Changelog*.txt sha256sum.sha256 2>/dev/null
|
|
rm RT-AC68U_V4* sha256sum.sha256
|
|
fi
|
|
|
|
|
|
echo
|
|
cd "$STAGE_LOC" || exit 1
|
|
mv -n sha256sums-ng.txt sha256sums-ng-$(date +%Y%m%d).txt
|
|
sha256sum *.trx | unix2dos >> sha256sums-ng.txt
|
|
sha256sum *.w | unix2dos >> sha256sums-ng.txt
|
|
sha256sum *.pkgtb | unix2dos >> sha256sums-ng.txt
|
|
|
|
# Copy everything to the host
|
|
|
|
if [ -z "$FINAL_LOC" ]; then
|
|
scp -- *.zip *.trx *.txt *.w *.pkgtb "$FINAL_LOC/" 2>/dev/null
|
|
fi
|
|
|
|
echo "=== $(date +%R) - All done!"
|