mirror of
https://github.com/RROrg/rr.git
synced 2025-06-21 05:51:05 +08:00
133 lines
4.7 KiB
Bash
Executable File
133 lines
4.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
if [ ! -d .buildroot ]; then
|
|
echo "Downloading buildroot"
|
|
git clone --single-branch -b 2022.02 https://github.com/buildroot/buildroot.git .buildroot
|
|
fi
|
|
|
|
echo "Convert po2mo"
|
|
if [ -d files/board/arpl/overlayfs/opt/arpl/lang ]; then
|
|
for P in "`ls files/board/arpl/overlayfs/opt/arpl/lang/*.po`"
|
|
do
|
|
# Use msgfmt command to compile the .po file into a binary .mo file
|
|
msgfmt ${P} -o ${P/.po/.mo}
|
|
done
|
|
fi
|
|
|
|
# Get extractor
|
|
echo "Getting syno extractor"
|
|
TOOL_PATH="files/board/arpl/p3/extractor"
|
|
CACHE_DIR="/tmp/pat"
|
|
rm -rf "${TOOL_PATH}"
|
|
mkdir -p "${TOOL_PATH}"
|
|
rm -rf "${CACHE_DIR}"
|
|
mkdir -p "${CACHE_DIR}"
|
|
OLDPAT_URL="https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat"
|
|
OLDPAT_FILE="DSM_DS3622xs+_42218.pat"
|
|
STATUS=`curl -# -w "%{http_code}" -L "${OLDPAT_URL}" -o "${CACHE_DIR}/${OLDPAT_FILE}"`
|
|
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
|
|
echo "[E] DSM_DS3622xs%2B_42218.pat download error!"
|
|
rm -rf ${CACHE_DIR}
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "${CACHE_DIR}/ramdisk"
|
|
tar -C "${CACHE_DIR}/ramdisk/" -xf "${CACHE_DIR}/${OLDPAT_FILE}" rd.gz 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "[E] extractor rd.gz error!"
|
|
rm -rf ${CACHE_DIR}
|
|
exit 1
|
|
fi
|
|
(cd "${CACHE_DIR}/ramdisk"; xz -dc < rd.gz | cpio -idm) >/dev/null 2>&1 || true
|
|
|
|
# Copy only necessary files
|
|
for f in libcurl.so.4 libmbedcrypto.so.5 libmbedtls.so.13 libmbedx509.so.1 libmsgpackc.so.2 libsodium.so libsynocodesign-ng-virtual-junior-wins.so.7; do
|
|
cp "${CACHE_DIR}/ramdisk/usr/lib/${f}" "${TOOL_PATH}"
|
|
done
|
|
cp "${CACHE_DIR}/ramdisk/usr/syno/bin/scemd" "${TOOL_PATH}/syno_extract_system_patch"
|
|
rm -rf ${CACHE_DIR}
|
|
|
|
# Get latest LKMs
|
|
echo "Getting latest LKMs"
|
|
echo " Downloading LKMs from github"
|
|
TAG=`curl -s https://api.github.com/repos/wjz304/redpill-lkm/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
|
|
curl -L "https://github.com/wjz304/redpill-lkm/releases/download/${TAG}/rp-lkms.zip" -o /tmp/rp-lkms.zip
|
|
rm -rf files/board/arpl/p3/lkms/*
|
|
unzip /tmp/rp-lkms.zip -d files/board/arpl/p3/lkms
|
|
|
|
|
|
# Get latest addons and install its
|
|
echo "Getting latest Addons"
|
|
rm -Rf /tmp/addons
|
|
mkdir -p /tmp/addons
|
|
echo " Downloading Addons from github"
|
|
TAG=`curl -s https://api.github.com/repos/wjz304/arpl-addons/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
|
|
curl -L "https://github.com/wjz304/arpl-addons/releases/download/${TAG}/addons.zip" -o /tmp/addons.zip
|
|
rm -rf /tmp/addons
|
|
unzip /tmp/addons.zip -d /tmp/addons
|
|
DEST_PATH="files/board/arpl/p3/addons"
|
|
echo "Installing addons to ${DEST_PATH}"
|
|
for PKG in `ls /tmp/addons/*.addon`; do
|
|
ADDON=`basename ${PKG} | sed 's|.addon||'`
|
|
mkdir -p "${DEST_PATH}/${ADDON}"
|
|
echo "Extracting ${PKG} to ${DEST_PATH}/${ADDON}"
|
|
tar xaf "${PKG}" -C "${DEST_PATH}/${ADDON}"
|
|
done
|
|
|
|
# Get latest modules
|
|
echo "Getting latest modules"
|
|
echo " Downloading Modules from github"
|
|
MODULES_DIR="${PWD}/files/board/arpl/p3/modules"
|
|
|
|
TAG=`curl -s https://api.github.com/repos/wjz304/arpl-modules/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
|
|
curl -L "https://github.com/wjz304/arpl-modules/releases/download/${TAG}/modules.zip" -o "/tmp/modules.zip"
|
|
rm -rf "${MODULES_DIR}/"*
|
|
unzip /tmp/modules.zip -d "${MODULES_DIR}"
|
|
|
|
|
|
# Remove old files
|
|
rm -rf ".buildroot/output/target/opt/arpl"
|
|
rm -rf ".buildroot/board/arpl/overlayfs"
|
|
rm -rf ".buildroot/board/arpl/p1"
|
|
rm -rf ".buildroot/board/arpl/p3"
|
|
|
|
# Copy files
|
|
echo "Copying files"
|
|
VERSION=`cat VERSION`
|
|
sed 's/^ARPL_VERSION=.*/ARPL_VERSION="'${VERSION}'"/' -i files/board/arpl/overlayfs/opt/arpl/include/consts.sh
|
|
echo "${VERSION}" > files/board/arpl/p1/ARPL-VERSION
|
|
cp -Ru files/* .buildroot/
|
|
|
|
cd .buildroot
|
|
echo "Generating default config"
|
|
make BR2_EXTERNAL=../external -j`nproc` arpl_defconfig
|
|
echo "Version: ${VERSION}"
|
|
echo "Building... Drink a coffee and wait!"
|
|
make BR2_EXTERNAL=../external -j`nproc`
|
|
cd -
|
|
qemu-img convert -O vmdk arpl.img arpl-dyn.vmdk
|
|
qemu-img convert -O vmdk -o adapter_type=lsilogic arpl.img -o subformat=monolithicFlat arpl.vmdk
|
|
[ -x test.sh ] && ./test.sh
|
|
rm -f *.zip
|
|
zip -9 "arpl-i18n-${VERSION}.img.zip" arpl.img
|
|
zip -9 "arpl-i18n-${VERSION}.vmdk-dyn.zip" arpl-dyn.vmdk
|
|
zip -9 "arpl-i18n-${VERSION}.vmdk-flat.zip" arpl.vmdk arpl-flat.vmdk
|
|
sha256sum update-list.yml > sha256sum
|
|
zip -9j update.zip update-list.yml
|
|
while read F; do
|
|
if [ -d "${F}" ]; then
|
|
FTGZ="`basename "${F}"`.tgz"
|
|
tar czf "${FTGZ}" -C "${F}" .
|
|
sha256sum "${FTGZ}" >> sha256sum
|
|
zip -9j update.zip "${FTGZ}"
|
|
rm "${FTGZ}"
|
|
else
|
|
(cd `dirname ${F}` && sha256sum `basename ${F}`) >> sha256sum
|
|
zip -9j update.zip "${F}"
|
|
fi
|
|
done < <(yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml)
|
|
zip -9j update.zip sha256sum
|
|
rm -f sha256sum
|