make tools/compile -j$(nproc) || make tools/compile -j72
make toolchain/compile -j$(nproc) || make toolchain/compile -j72
make target/compile -j$(nproc) || make target/compile -j72 IGNORE_ERRORS=1
make diffconfig
make package/compile -j$(nproc) IGNORE_ERRORS=1 || make package/compile -j72 IGNORE_ERRORS=1
make package/index
我把 make 拆解成:
CURRENT_HASH=$(git log --pretty=tformat:"%H" -n1 tools toolchain)
CACHE_HASH=$(cat env/toolchain.hash)
if [ -z "$CACHE_HASH" ] || [ "$CURRENT_HASH" != "$CACHE_HASH" ]; then
echo 'star compile tools'
time make tools/compile -j$(nproc) || make tools/compile -j1 V=s
# tools 编译的时候和 toolchain 貌似会一起编译
time make toolchain/compile -j$(nproc) || make toolchain/compile -j1 V=s
echo $CURRENT_HASH > env/toolchain.hash
fi
make buildinfo
make diffconfig buildversion feedsversion
time make target/compile -j$(nproc) IGNORE_ERRORS="m n" BUILD_LOG=1 || \
yes n | make target/compile -j1 V=s IGNORE_ERRORS=1
time timeout $timeoutSec make package/compile -j$(nproc) IGNORE_ERRORS=1 |& tee -a /tmp/build.log
# 如果 timeout 到时间,会有 Terminated 关键字输出在日志里
if ! grep -qw Terminated /tmp/build.log;then
time make package/install
timeoutSec=$(( 6*60*60 - ${reserved_time}*60 - $usedSec ))
time xxx make target/install || make target/install -j1 V=s
time make package/index
make json_overview_image_info
make checksum
fi
tools toolchain 编译主要是存了这俩目录的commit hash,这样下次就不再编译他俩了,然后时间主要是耗时在 make package/compile ,我用 timeout 限制它,然后最后会预留时间执行后续的上传缓存行为,上传之前我会清理掉以下几个目录:
rm -rf tmp dl bin
但是下次构建的时候,我理解应该是类似于二次编译的,但是实际结果是 make package/compile 还是要5-6小时才能编译完。
反馈bug/问题模板,提建议请删除
1.关于你要提交的问题
Q:是否搜索了issue (使用 "x" 选择)
2. 详细叙述
(1) 具体问题
我现在使用骚操作,把整个目录都在aciton里缓存了,然后每次编译是下载缓存后再构建的,缓存是因为我开的 app 比较多,action 的 6小时不够我使用。参照你的
我把 make 拆解成:
tools toolchain 编译主要是存了这俩目录的commit hash,这样下次就不再编译他俩了,然后时间主要是耗时在
make package/compile
,我用 timeout 限制它,然后最后会预留时间执行后续的上传缓存行为,上传之前我会清理掉以下几个目录:但是下次构建的时候,我理解应该是类似于二次编译的,但是实际结果是
make package/compile
还是要5-6小时才能编译完。例如我看 lua 的包,
build_dir/target-<arch>/lua-x.x.x/
有我没清理掉 build_dir、staging_dir目录,不知道为啥不是二次编译。
我在目录里
find -type f -size -2M -exec grep -l .built_check {} \;
没找到任何文件。不知道op是怎么判断一个包需要再次编译的