mirror of
https://github.com/RROrg/rr.git
synced 2025-09-25 13:17:04 +08:00
删除 localbuild.sh 和 sourcebuild.sh 脚本,优化构建流程
This commit is contained in:
parent
03f2cea7f9
commit
0c77bada57
9
.github/workflows/issues.yml
vendored
9
.github/workflows/issues.yml
vendored
@ -148,6 +148,8 @@ jobs:
|
||||
run: |
|
||||
# 累了, 毁灭吧!
|
||||
|
||||
. scripts/func.sh "${{ secrets.RRORG }}"
|
||||
|
||||
REPO="${{ github.server_url }}/${{ github.repository }}"
|
||||
PRERELEASE="true"
|
||||
|
||||
@ -175,11 +177,11 @@ jobs:
|
||||
;;
|
||||
4GB)
|
||||
echo "4GB"
|
||||
sudo ./localbuild.sh resize rr/rr.img +2048M
|
||||
resizeImg rr/rr.img +2048M
|
||||
;;
|
||||
8GB)
|
||||
echo "8GB"
|
||||
sudo ./localbuild.sh resize rr/rr.img +6144M
|
||||
resizeImg rr/rr.img +6144M
|
||||
;;
|
||||
*)
|
||||
echo "unknown size"
|
||||
@ -249,14 +251,12 @@ jobs:
|
||||
case "${{ env.format }}" in
|
||||
ova)
|
||||
echo "OVA"
|
||||
. scripts/func.sh "${{ secrets.RRORG }}"
|
||||
convertova "rr/rr.img" "rr/rr.ova"
|
||||
(cd rr && sha256sum rr.ova >../sha256sum)
|
||||
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.ova.zip" -j rr/rr.ova sha256sum README.txt
|
||||
;;
|
||||
vmx)
|
||||
echo "VMX"
|
||||
. scripts/func.sh "${{ secrets.RRORG }}"
|
||||
convertvmx "rr/rr.img" "rr.vmx" # rr.vmx is a directory
|
||||
(cd rr.vmx && sha256sum * >../sha256sum)
|
||||
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vmx.zip" -r rr.vmx sha256sum README.txt
|
||||
@ -275,7 +275,6 @@ jobs:
|
||||
;;
|
||||
vhd)
|
||||
echo "VHD"
|
||||
. scripts/func.sh "${{ secrets.RRORG }}"
|
||||
qemu-img convert rr/rr.img -O vpc rr/rr.vhd
|
||||
createvmc "rr/rr.vhd" "rr/rr.vmc"
|
||||
(cd rr && sha256sum rr.vhd >../sha256sum)
|
||||
|
251
localbuild.sh
251
localbuild.sh
@ -1,251 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2022 Ing <https://github.com/wjz304>
|
||||
#
|
||||
# This is free software, licensed under the MIT License.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function help() {
|
||||
cat <<EOF
|
||||
Usage: $0 <command> [args]
|
||||
Commands:
|
||||
create [workspace] [rr.img] - Create the workspace
|
||||
init - Initialize the environment
|
||||
config [model] [version] - Config the DSM system
|
||||
build - Build the DSM system
|
||||
pack [rr.img] - Pack to rr.img
|
||||
help - Show this help
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
function create() {
|
||||
local WORKSPACE RRIMGPATH LOOPX INITRD_FILE INITRD_FORMAT
|
||||
WORKSPACE="$(realpath "${1:-workspace}")"
|
||||
RRIMGPATH="$(realpath "${2:-rr.img}")"
|
||||
|
||||
if [ ! -f "${RRIMGPATH}" ]; then
|
||||
echo "File not found: ${RRIMGPATH}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo apt update
|
||||
sudo apt install -y locales busybox dialog gettext sed gawk jq curl
|
||||
sudo apt install -y python-is-python3 python3-pip libelf-dev qemu-utils dosfstools cpio xz-utils lz4 lzma bzip2 gzip zstd
|
||||
# sudo snap install yq
|
||||
if ! type yq >/dev/null 2>&1 || ! yq --version 2>/dev/null | grep -q "v4."; then
|
||||
sudo curl -kL https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/bin/yq && sudo chmod a+x /usr/bin/yq
|
||||
fi
|
||||
|
||||
# Backup the original python3 executable.
|
||||
sudo mv -f "$(realpath "$(which python3)")/EXTERNALLY-MANAGED" "$(realpath "$(which python3)")/EXTERNALLY-MANAGED.bak" 2>/dev/null || true
|
||||
sudo pip3 install -U click requests requests-toolbelt qrcode[pil] beautifulsoup4
|
||||
|
||||
sudo locale-gen ar_SA.UTF-8 de_DE.UTF-8 en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 ru_RU.UTF-8 th_TH.UTF-8 tr_TR.UTF-8 uk_UA.UTF-8 vi_VN.UTF-8 zh_CN.UTF-8 zh_HK.UTF-8 zh_TW.UTF-8
|
||||
|
||||
LOOPX=$(sudo losetup -f)
|
||||
sudo losetup -P "${LOOPX}" "${RRIMGPATH}"
|
||||
|
||||
# Check partitions and ignore errors
|
||||
fsck.vfat -aw "${LOOPX}p1" >/dev/null 2>&1 || true
|
||||
fsck.ext2 -p "${LOOPX}p2" >/dev/null 2>&1 || true
|
||||
fsck.ext4 -p "${LOOPX}p3" >/dev/null 2>&1 || true
|
||||
|
||||
echo "Mounting image file"
|
||||
for i in {1..3}; do
|
||||
rm -rf "/tmp/mnt/p${i}"
|
||||
mkdir -p "/tmp/mnt/p${i}"
|
||||
sudo mount "${LOOPX}p${i}" "/tmp/mnt/p${i}" || {
|
||||
echo "Can't mount ${LOOPX}p${i}."
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
echo "Create WORKSPACE"
|
||||
rm -rf "${WORKSPACE}"
|
||||
mkdir -p "${WORKSPACE}/mnt" "${WORKSPACE}/tmp" "${WORKSPACE}/initrd"
|
||||
cp -rpf /tmp/mnt/p{1,2,3} "${WORKSPACE}/mnt/"
|
||||
|
||||
INITRD_FILE="${WORKSPACE}/mnt/p3/initrd-rr"
|
||||
INITRD_FORMAT=$(file -b --mime-type "${INITRD_FILE}")
|
||||
|
||||
case "${INITRD_FORMAT}" in
|
||||
*'x-cpio'*) (cd "${WORKSPACE}/initrd" && sudo cpio -idm <"${INITRD_FILE}") >/dev/null 2>&1 ;;
|
||||
*'x-xz'*) (cd "${WORKSPACE}/initrd" && xz -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
|
||||
*'x-lz4'*) (cd "${WORKSPACE}/initrd" && lz4 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
|
||||
*'x-lzma'*) (cd "${WORKSPACE}/initrd" && lzma -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
|
||||
*'x-bzip2'*) (cd "${WORKSPACE}/initrd" && bzip2 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
|
||||
*'gzip'*) (cd "${WORKSPACE}/initrd" && gzip -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
|
||||
*'zstd'*) (cd "${WORKSPACE}/initrd" && zstd -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
|
||||
*) ;;
|
||||
esac
|
||||
|
||||
sudo sync
|
||||
for i in {1..3}; do
|
||||
sudo umount "/tmp/mnt/p${i}"
|
||||
rm -rf "/tmp/mnt/p${i}"
|
||||
done
|
||||
sudo losetup --detach "${LOOPX}"
|
||||
|
||||
if [ ! -f "${WORKSPACE}/initrd/opt/rr/init.sh" ] || [ ! -f "${WORKSPACE}/initrd/opt/rr/menu.sh" ]; then
|
||||
echo "initrd decompression failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -f "$(dirname "${BASH_SOURCE[0]}")/rr.env"
|
||||
cat <<EOF >"$(dirname "${BASH_SOURCE[0]}")/rr.env"
|
||||
export LOADER_DISK="LOCALBUILD"
|
||||
export CHROOT_PATH="${WORKSPACE}"
|
||||
EOF
|
||||
echo "OK."
|
||||
}
|
||||
|
||||
function init() {
|
||||
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
|
||||
echo "Please run init first"
|
||||
exit 1
|
||||
fi
|
||||
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
|
||||
pushd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
|
||||
echo "init"
|
||||
./init.sh
|
||||
local RET=$?
|
||||
popd || exit 1
|
||||
[ ${RET} -ne 0 ] && echo "Failed." || echo "Success."
|
||||
exit ${RET}
|
||||
}
|
||||
|
||||
function config() {
|
||||
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
|
||||
echo "Please run init first"
|
||||
exit 1
|
||||
fi
|
||||
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
|
||||
local RET=1
|
||||
pushd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
|
||||
while true; do
|
||||
if [ -z "${1}" ]; then
|
||||
echo "menu"
|
||||
./menu.sh || break
|
||||
RET=0
|
||||
else
|
||||
echo "model"
|
||||
./menu.sh modelMenu "${1:-SA6400}" || break
|
||||
echo "version"
|
||||
./menu.sh productversMenu "${2:-7.2}" || break
|
||||
RET=0
|
||||
fi
|
||||
break
|
||||
done
|
||||
popd || exit 1
|
||||
[ ${RET} -ne 0 ] && echo "Failed." || echo "Success."
|
||||
exit ${RET}
|
||||
}
|
||||
|
||||
function build() {
|
||||
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
|
||||
echo "Please run init first"
|
||||
exit 1
|
||||
fi
|
||||
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
|
||||
local RET=1
|
||||
pushd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
|
||||
while true; do
|
||||
echo "build"
|
||||
./menu.sh make -1 || break
|
||||
echo "clean"
|
||||
./menu.sh cleanCache -1 || break
|
||||
RET=0
|
||||
break
|
||||
done
|
||||
popd || exit 1
|
||||
[ ${RET} -ne 0 ] && echo "Failed." || echo "Success."
|
||||
exit ${RET}
|
||||
}
|
||||
|
||||
function pack() {
|
||||
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
|
||||
echo "Please run init first"
|
||||
exit 1
|
||||
fi
|
||||
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
|
||||
|
||||
local RRIMGPATH LOOPX
|
||||
RRIMGPATH="$(realpath "${1:-rr.img}")"
|
||||
rm -f "${RRIMGPATH}"
|
||||
gzip -dc "${CHROOT_PATH}/initrd/opt/rr/grub.img.gz" >"${RRIMGPATH}"
|
||||
fdisk -l "${RRIMGPATH}"
|
||||
|
||||
LOOPX=$(sudo losetup -f)
|
||||
sudo losetup -P "${LOOPX}" "${RRIMGPATH}"
|
||||
|
||||
# Check partitions and ignore errors
|
||||
fsck.vfat -aw "${LOOPX}p1" >/dev/null 2>&1 || true
|
||||
fsck.ext2 -p "${LOOPX}p2" >/dev/null 2>&1 || true
|
||||
fsck.ext4 -p "${LOOPX}p3" >/dev/null 2>&1 || true
|
||||
|
||||
echo "Mounting image file"
|
||||
for i in {1..3}; do
|
||||
rm -rf "/tmp/mnt/p${i}"
|
||||
mkdir -p "/tmp/mnt/p${i}"
|
||||
sudo mount "${LOOPX}p${i}" "/tmp/mnt/p${i}" || {
|
||||
echo "Can't mount ${LOOPX}p${i}."
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
echo "Pack image file"
|
||||
for i in {1..3}; do
|
||||
[ ${i} -eq 1 ] && sudo cp -af "${CHROOT_PATH}/mnt/p${i}/"{.locale,.timezone} "/tmp/mnt/p${i}/" 2>/dev/null
|
||||
sudo cp -rf "${CHROOT_PATH}/mnt/p${i}/"* "/tmp/mnt/p${i}" || {
|
||||
echo "Can't cp ${LOOPX}p${i}."
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
sudo sync
|
||||
for i in {1..3}; do
|
||||
sudo umount "/tmp/mnt/p${i}"
|
||||
rm -rf "/tmp/mnt/p${i}"
|
||||
done
|
||||
sudo losetup --detach "${LOOPX}"
|
||||
echo "OK."
|
||||
exit 0
|
||||
}
|
||||
|
||||
function resize() {
|
||||
local INPUT_FILE="${1}"
|
||||
local CHANGE_SIZE="${2}"
|
||||
local OUTPUT_FILE="${3:-${INPUT_FILE}}"
|
||||
|
||||
[ -z "${INPUT_FILE}" ] || [ ! -f "${INPUT_FILE}" ] && exit 1
|
||||
[ -z "${CHANGE_SIZE}" ] && exit 1
|
||||
|
||||
INPUT_FILE="$(realpath "${INPUT_FILE}")"
|
||||
OUTPUT_FILE="$(realpath "${OUTPUT_FILE}")"
|
||||
|
||||
local SIZE=$(($(du -sm "${INPUT_FILE}" 2>/dev/null | awk '{print $1}')$(echo "${CHANGE_SIZE}" | sed 's/M//g; s/b//g')))
|
||||
[ "${SIZE:-0}" -lt 0 ] && exit 1
|
||||
|
||||
if [ ! "${INPUT_FILE}" = "${OUTPUT_FILE}" ]; then
|
||||
sudo cp -f "${INPUT_FILE}" "${OUTPUT_FILE}"
|
||||
fi
|
||||
|
||||
sudo truncate -s ${SIZE}M "${OUTPUT_FILE}"
|
||||
echo -e "d\n\nn\n\n\n\n\nn\nw" | sudo fdisk "${OUTPUT_FILE}" >/dev/null 2>&1
|
||||
local LOOPX LOOPXPY
|
||||
LOOPX=$(sudo losetup -f)
|
||||
sudo losetup -P "${LOOPX}" "${OUTPUT_FILE}"
|
||||
LOOPXPY="$(find "${LOOPX}p"* -maxdepth 0 2>/dev/null | sort -n | tail -1)"
|
||||
sudo e2fsck -fp "${LOOPXPY:-${LOOPX}p3}"
|
||||
sudo resize2fs "${LOOPXPY:-${LOOPX}p3}"
|
||||
sudo losetup -d "${LOOPX}"
|
||||
}
|
||||
|
||||
"$@"
|
117
sourcebuild.sh
117
sourcebuild.sh
@ -1,117 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2022 Ing <https://github.com/wjz304>
|
||||
#
|
||||
# This is free software, licensed under the MIT License.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# sudo apt update
|
||||
# sudo apt install -y locales busybox dialog gettext sed gawk jq curl
|
||||
# sudo apt install -y python-is-python3 python3-pip libelf-dev qemu-utils dosfstools cpio xz-utils lz4 lzma bzip2 gzip zstd
|
||||
# # sudo snap install yq
|
||||
# if ! type yq >/dev/null 2>&1 || ! yq --version 2>/dev/null | grep -q "v4."; then
|
||||
# sudo curl -kL https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/bin/yq && sudo chmod a+x /usr/bin/yq
|
||||
# fi
|
||||
#
|
||||
# # Backup the original python3 executable.
|
||||
# sudo mv -f "$(realpath $(which python3))/EXTERNALLY-MANAGED" "$(realpath $(which python3))/EXTERNALLY-MANAGED.bak" 2>/dev/null || true
|
||||
# sudo pip3 install -U click requests requests-toolbelt qrcode[pil] beautifulsoup4
|
||||
#
|
||||
# sudo locale-gen ar_SA.UTF-8 de_DE.UTF-8 en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 ru_RU.UTF-8 th_TH.UTF-8 tr_TR.UTF-8 uk_UA.UTF-8 vi_VN.UTF-8 zh_CN.UTF-8 zh_HK.UTF-8 zh_TW.UTF-8
|
||||
#
|
||||
# export TOKEN="${1}"
|
||||
#
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. scripts/func.sh "${TOKEN}"
|
||||
|
||||
echo "Get extractor"
|
||||
getCKs "files/mnt/p3/cks" "true"
|
||||
getLKMs "files/mnt/p3/lkms" "true"
|
||||
getAddons "files/mnt/p3/addons" "true"
|
||||
getModules "files/mnt/p3/modules" "true"
|
||||
getBuildroot "files/mnt/p3" "true"
|
||||
getExtractor "files/mnt/p3/extractor"
|
||||
|
||||
echo "Repack initrd"
|
||||
convertpo2mo "files/initrd/opt/rr/lang"
|
||||
repackInitrd "files/mnt/p3/initrd-rr" "files/initrd"
|
||||
|
||||
if [ -n "${1}" ]; then
|
||||
LOADER_DISK="LOCALBUILD"
|
||||
CHROOT_PATH="$(realpath files)"
|
||||
export LOADER_DISK="LOCALBUILD"
|
||||
export CHROOT_PATH="${CHROOT_PATH}"
|
||||
(
|
||||
cd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
|
||||
./init.sh
|
||||
./menu.sh modelMenu "${1}"
|
||||
./menu.sh productversMenu "${2:-7.2}"
|
||||
./menu.sh make -1
|
||||
./menu.sh cleanCache -1
|
||||
)
|
||||
fi
|
||||
|
||||
IMAGE_FILE="rr.img"
|
||||
gzip -dc "files/initrd/opt/rr/grub.img.gz" >"${IMAGE_FILE}"
|
||||
fdisk -l "${IMAGE_FILE}"
|
||||
|
||||
LOOPX=$(sudo losetup -f)
|
||||
sudo losetup -P "${LOOPX}" "${IMAGE_FILE}"
|
||||
|
||||
# Check partitions and ignore errors
|
||||
fsck.vfat -aw "${LOOPX}p1" >/dev/null 2>&1 || true
|
||||
fsck.ext2 -p "${LOOPX}p2" >/dev/null 2>&1 || true
|
||||
fsck.ext4 -p "${LOOPX}p3" >/dev/null 2>&1 || true
|
||||
|
||||
for i in {1..3}; do
|
||||
[ ! -d "files/mnt/p${i}" ] && continue
|
||||
|
||||
rm -rf "/tmp/mnt/p${i}"
|
||||
mkdir -p "/tmp/mnt/p${i}"
|
||||
|
||||
echo "Mounting ${LOOPX}p${i}"
|
||||
sudo mount "${LOOPX}p${i}" "/tmp/mnt/p${i}" || {
|
||||
echo "Can't mount ${LOOPX}p${i}."
|
||||
break
|
||||
}
|
||||
echo "Copying files to ${LOOPX}p${i}"
|
||||
[ ${i} -eq 1 ] && sudo cp -af "files/mnt/p${i}/"{.locale,.timezone} "/tmp/mnt/p${i}/" 2>/dev/null || true
|
||||
sudo cp -rf "files/mnt/p${i}/"* "/tmp/mnt/p${i}" || true
|
||||
|
||||
sudo sync
|
||||
|
||||
echo "Unmounting ${LOOPX}p${i}"
|
||||
sudo umount "/tmp/mnt/p${i}" || {
|
||||
echo "Can't umount ${LOOPX}p${i}."
|
||||
break
|
||||
}
|
||||
rm -rf "/tmp/mnt/p${i}"
|
||||
done
|
||||
|
||||
sudo losetup --detach "${LOOPX}"
|
||||
|
||||
resizeImg "${IMAGE_FILE}" "+2560M"
|
||||
|
||||
# convertova "${IMAGE_FILE}" "${IMAGE_FILE/.img/.ova}"
|
||||
|
||||
# update.zip
|
||||
sha256sum update-list.yml update-check.sh >sha256sum
|
||||
zip -9j "update.zip" update-list.yml update-check.sh
|
||||
while read -r F; do
|
||||
if [ -d "${F}" ]; then
|
||||
FTGZ="$(basename "${F}").tgz"
|
||||
tar -zcf "${FTGZ}" -C "${F}" .
|
||||
sha256sum "${FTGZ}" >>sha256sum
|
||||
zip -9j "update.zip" "${FTGZ}"
|
||||
rm -f "${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
|
Loading…
x
Reference in New Issue
Block a user