diff --git a/README.md b/README.md index e161a8b..388521c 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,8 @@ - pkgurl 字符串, 软件主页/上游地址 - license 数组, 软件许可证 - sources 数组, 构建过程使用到的所有源码包和补丁 + - urls 数组, `sources` 各项对应的地址, 当前仅限使用 `wget` 获取 + - md5sums 数组, `sources` 各项对应的 md5 checksum - options 数组, 构建选项, 详见第4小节 - srcdir 字符串, 构建路径(在leaf主程序中定义) - pkgdir 字符串, 虚拟根目录(在leaf主程序中定义) diff --git a/leaf b/leaf index e546628..3049870 100755 --- a/leaf +++ b/leaf @@ -300,6 +300,35 @@ leaf_update_environment() { } leaf_prepare_package() { + local distdir url sourcefile index _md5sum + distdir="${DIST_DIR}/${pkgname}-${pkgver}" + mkdir -pv "${distdir}" + pushd "${distdir}" + for index in "${!sources[@]}"; do + sourcefile="${sources[$index]}" + url="${urls[$index]}" + + if [ -f "${sourcefile}" ]; then + echo "${sourcefile} exits, checking..." + _md5sum=$(md5sum ${sourcefile} | awk '{print $1}') + if [ "${_md5sum}" == "${md5sums[$index]}" ]; then + echo "md5sum match, skip ${sourcefile}." + else + echo "md5sum does not match, redownloading..." + rm -rf "${sourcefile}" + wget "${urls[$index]}" + fi + else + echo "Downloading ${sourcefile}..." + wget "${urls[$index]}" + fi + _md5sum=$(md5sum "${sourcefile}" | awk '{print $1}') + if [ "${_md5sum}" != "${md5sums[$index]}" ]; then + leaf_error "md5sums of ${sourcefile}(${_md5sum}) does not match with ${md5sums[$index]}!" + fi + done + popd + echo "Sources ready." src_prepare }