blob: eeccd506f4adac9ee9d45c5bb66103005358f3ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
# Maintainer: Pqolk <tiangloo@outlook.com>
pkgname=azurlaneautoscript
pkgver=2026.03.28
pkgrel=1
pkgdesc="Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界"
arch=('x86_64')
url="https://github.com/LmeSzinc/AzurLaneAutoScript"
license=('GPL3')
depends=(
'android-tools'
'git'
)
makedepends=(
'expat' 'bzip2' 'gdbm' 'openssl' 'libffi' 'zlib' 'libnsl'
'sqlite' 'mpdecimal' 'xz' 'tk'
)
options=(!debug !strip)
source=(
"https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tar.xz"
)
sha512sums=(
'86ba1c953e7b4bce70445d1616cc0d428b50937f6a874811584df8bf23c3e2ba3e5d48dec00e629a47f4216f3ca50dc5389cd485fbc315f51000d8750403b5f0')
build() {
cd "${srcdir}"
# 1. 编译 Python 3.7(静态链接,快速)
tar -xf Python-3.7.17.tar.xz
cd Python-3.7.17
./configure --prefix="${srcdir}/python37" --without-ensurepip
make -j$(nproc)
make install
cd "${srcdir}"
git clone "https://github.com/LmeSzinc/AzurLaneAutoScript.git" "${pkgname}"
# 2. 创建虚拟环境(--copies 保证可移植,但标准库仍需 pyvenv.cfg 指向 home)
cd "${srcdir}/${pkgname}"
rm -rf "${srcdir}/venv"
"${srcdir}/python37/bin/python3.7" -m venv --copies "${srcdir}/venv"
source "${srcdir}/venv/bin/activate"
# 3. 安装 pip 和项目依赖
python -m ensurepip --upgrade
pip install --upgrade --no-cache-dir pip
sed -i '/^\s*av\s*==/d' deploy/docker/requirements.txt
pip install --no-cache-dir -r deploy/docker/requirements.txt
pip install --no-cache-dir mxnet-alas
# 验证
python -c "import rich" || { echo "ERROR: rich not installed"; exit 1; }
deactivate
# 清理字节码
find "${srcdir}/venv" -type d -name "__pycache__" -exec rm -rf {} +
find "${srcdir}/venv" -type f -name "*.pyc" -delete
}
package() {
cd "${srcdir}"
# 1. 安装整个 python37 基础解释器(提供标准库)
install -dm755 "${pkgdir}/opt/${pkgname}/python37"
cp -a python37/* "${pkgdir}/opt/${pkgname}/python37"
# 2. 安装应用代码
install -dm755 "${pkgdir}/opt/${pkgname}/app"
cp -a "${pkgname}/." "${pkgdir}/opt/${pkgname}/app"
# 3. 安装虚拟环境
cp -a venv "${pkgdir}/opt/${pkgname}/venv"
# 4. 修正虚拟环境的路标文件 pyvenv.cfg,让解释器找到标准库
sed -i "s|home = .*|home = /opt/${pkgname}/python37|" \
"${pkgdir}/opt/${pkgname}/venv/pyvenv.cfg"
# 5. 修正 activate 脚本中的 VIRTUAL_ENV
sed -i "s|VIRTUAL_ENV=.*|VIRTUAL_ENV=\"/opt/${pkgname}/venv\"|" \
"${pkgdir}/opt/${pkgname}/venv/bin/activate"
# 6. 确保权限
chmod -R u+rwX,go+rX,go-w "${pkgdir}/opt/${pkgname}"
# 7. 配置文件
cp "${pkgdir}/opt/${pkgname}/app/config/deploy.template-linux.yaml" \
"${pkgdir}/opt/${pkgname}/app/config/deploy.yaml"
install -dm755 "${pkgdir}/etc/${pkgname}"
ln -sf "/opt/${pkgname}/app/config/alas.json" "${pkgdir}/etc/${pkgname}/alas.json"
ln -sf "/opt/${pkgname}/app/config/deploy.yaml" "${pkgdir}/etc/${pkgname}/deploy.yaml"
# 8. 启动脚本
install -Dm755 /dev/stdin "${pkgdir}/usr/bin/${pkgname}" <<'EOF'
#!/bin/bash
source /opt/azurlaneautoscript/venv/bin/activate
exec python /opt/azurlaneautoscript/app/gui.py "$@"
EOF
# 9. 系统服务
install -Dm644 /dev/stdin "${pkgdir}/usr/lib/systemd/system/${pkgname}.service" <<'EOF'
[Unit]
Description=AzurLaneAutoScript Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/azurlaneautoscript
Restart=on-failure
# 限制写入权限
#ProtectSystem=strict
#ReadWritePaths=/opt/azurlaneautoscript /tmp /var/tmp /usr/bin/azurlaneautoscript
# 限制服务运行的文件系统访问
#ProtectHome=true
#NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF
}
|