openwrt-packages icon indicating copy to clipboard operation
openwrt-packages copied to clipboard

请教一下Makefile中PKG_MIRROR_HASH具体是如何计算出来的?也就是PKG_HASH

Open qwerttvv opened this issue 3 months ago • 3 comments

我想从git弄nightly,不从release这里弄

比如说 PKG_NAME:=smartdns PKG_VERSION:=1.2024.10 PKG_RELEASE:=1

PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://www.github.com/pymumu/smartdns.git PKG_SOURCE_VERSION:=40dc9eceb78ac558b235a128241b1a4d2819f15f PKG_MIRROR_HASH:= 如果其它已知,PKG_MIRROR_HASH未知,那这个值是如何计算的呢?

这里的PKG_MIRROR_HASH,我看文档是从 https://www.github.com/pymumu/smartdns.git 打包一个tar.xz后计算sha256,但是这个tar.xz请问下是如何打包的,我试了很久,最终的hash都对不上,没办法去openwrt/gh-action-sdk编译

或者说这个PKG_MIRROR_HASH是依靠什么脚本或者其它工具生成的?我想学习下这个值的生成过程

不要skip,openwrt/gh-action-sdk不能用skip,我想要这个值的生成过程

尝试过很多方法,例如下面的

$SHA_smartdns已经获取后,相关流程如下,哪里不对…或者说正确方法是啥

  git clone https://www.github.com/pymumu/smartdns.git smartdns-$(date +1.%Y.%m.%d-%H)
  cd smartdns-$(date +1.%Y.%m.%d-%H)
  git checkout $SHA_smartdns
  git submodule update --init --recursive
  echo "TAR_TIMESTAMP=$(git log -1 --format='@%ct')" >> $GITHUB_ENV
  rm -rf .git

然后

  tar --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name $$$${TAR_TIMESTAMP:+--mtime="$$$$TAR_TIMESTAMP"} -c smartdns-$(date +1.%Y.%m.%d-%H) | xz -zc -7e > ../smartdns-$(date +1.%Y.%m.%d-%H).tar.xz
  echo "PKG_MIRROR_HASH=$(sha256sum ../smartdns-$(date +1.%Y.%m.%d-%H).tar.xz | cut -d ' ' -f1)" >> $GITHUB_ENV

之后改Makefile准备去openwrt/gh-action-sdk@main运行

  sed -i "s/PKG_VERSION:=.*/PKG_VERSION:=$(date +1.%Y.%m.%d-%H)/" Makefile
  sed -i "s/PKG_SOURCE_VERSION:=.*/PKG_SOURCE_VERSION:=$SHA_smartdns/" Makefile
  sed -i "s/PKG_MIRROR_HASH:=.*/PKG_MIRROR_HASH:=$PKG_MIRROR_HASH/" Makefile

或者tar的步骤改为

tar --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name ${TAR_TIMESTAMP:+--mtime="$TAR_TIMESTAMP"} -c smartdns-$(date +1.%Y.%m.%d-%H) | xz -zc -7e > ../smartdns-$(date +1.%Y.%m.%d-%H).tar.xz

以上都不对……

tar的步骤我是在openwrt/gh-action-sdk运行的日志里和官网一个mk文件里看到,mk文件里是$$$${TAR_TIMESTAMP:+--mtime="$$$$TAR_TIMESTAMP"},日志里是${TAR_TIMESTAMP:+--mtime="$TAR_TIMESTAMP"},全不对,在openwrt/gh-action-sdk没办法运行

qwerttvv avatar Mar 13 '24 14:03 qwerttvv