From 86e7811d5ae96fa5fa741a9834eb7643c68ac2b3 Mon Sep 17 00:00:00 2001 From: Dich Date: Sun, 29 Jun 2025 19:35:38 +0800 Subject: [PATCH] add:py&sh --- build.sh | 27 +++++++++++++++++ check_packages.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 build.sh create mode 100644 check_packages.py diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..45eced7 --- /dev/null +++ b/build.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +starttime=$(date +'%Y-%m-%d %H:%M:%S') + +export ARCH=arm64 +export SUBARCH=arm64 +export KCONFIG_CONFIG=$PWD/myconfig + +# 生成默认 config +make O=out KCONFIG_CONFIG=$KCONFIG_CONFIG olddefconfig + +# 编译内核,禁用 frame-larger-than 的错误处理 +make -j$(nproc) O=out WERROR=0 \ + KCFLAGS="-Wno-error=frame-larger-than= -O3 -pipe" \ + KCPPFLAGS="-DCONFIG_CC_OPTIMIZE_FOR_PERFORMANCE" \ + HOSTCFLAGS="-O3 -pipe" \ + HOSTCXXFLAGS="-O3 -pipe" \ + NM=~/kernel/toolchains/clang-14/bin/llvm-nm \ + OBJCOPY=~/kernel/toolchains/clang-14/bin/llvm-objcopy \ + LD=~/kernel/toolchains/clang-14/bin/ld.lld \ + CROSS_COMPILE=~/kernel/toolchains/clang-14/bin/aarch64-linux-gnu- \ + CROSS_COMPILE_ARM32=~/kernel/toolchains/gcc-arm-4.9/bin/arm-linux-androideabi- \ + CC=~/kernel/toolchains/clang-14/bin/clang \ + AR=~/kernel/toolchains/clang-14/bin/llvm-ar \ + OBJDUMP=~/kernel/toolchains/clang-14/bin/llvm-objdump \ + STRIP=~/kernel/toolchains/clang-14/bin/llvm-strip \ + 2>&1 | tee error.log diff --git a/check_packages.py b/check_packages.py new file mode 100644 index 0000000..cebf8ea --- /dev/null +++ b/check_packages.py @@ -0,0 +1,77 @@ +import subprocess + +# 要检查和安装的软件包列表 +packages = [ + "bc", + "bison", + "build-essential", + "cpio", + "curl", + "flex", + "git", + "libncurses-dev", + "libssl-dev", + "libelf-dev", + "lzop", + "python3", + "unzip", + "xz-utils", + "zstd", + "rsync", + "ca-certificates", + "wget", + "pahole", + "dwarves", + "zip", +] + + +def is_installed(pkg_name): + """检查软件包是否已安装""" + try: + subprocess.run( + ["dpkg", "-s", pkg_name], + check=True, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + return True + except subprocess.CalledProcessError: + return False + + +def main(): + print("检查并安装缺失的软件包...") + missing_packages = [] + + for pkg in packages: + if is_installed(pkg): + print(f"✅ 已安装:{pkg}") + else: + print(f"❌ 未安装:{pkg}") + missing_packages.append(pkg) + + if missing_packages: + print("\n🔄 正在执行 apt-get update ...") + try: + subprocess.run(["sudo", "apt-get", "update"], check=True) + except subprocess.CalledProcessError: + print("❌ apt-get update 失败,请检查网络连接或源设置。") + return + + print("\n⬇️ 开始安装以下缺失的软件包:") + print(" ".join(missing_packages)) + try: + subprocess.run( + ["sudo", "apt-get", "install", "-y"] + missing_packages, check=True + ) + except subprocess.CalledProcessError: + print("❌ 安装部分软件包失败,请手动检查。") + else: + print("\n✅ 所有软件包已安装,无需操作。") + + print("✅ 所有软件包检查完毕。") + + +if __name__ == "__main__": + main()