Message ID | 9216a6e7-3ef4-4b65-8997-84f3210f4795@gmail.com |
---|---|
State | Not Applicable |
Headers | show |
Series | Issue after changing from xz to zstd | expand |
On Sat, 6 Apr 2024 at 21:47, Hartmut Birr <osexpert@gmail.com> wrote: > > Hi, > > I did change the Makefile for dnsmasq in the way that I give: > > PKG_SOURCE_URL:=git://thekelleys.org.uk/dnsmasq.git > PKG_SOURCE_PROTO:=git > PKG_SOURCE_DATE:=2024-03-27 > PKG_SOURCE_VERSION:=550c368adea12b312f83686c61f9015c122046c2 # Treat cache insertion failure of DNSKEY and DS records as another resource problem and fail validation with suitable logging. > PKG_MIRROR_HASH:=284a34bdb967ec8a9dff132df065ca64e9a1819d79bb8cecee1af001e22d626c > > Before changing to zstd, the generated source tar ball contains a file 'VERSION' with content '$Format:%d$'. This does match the dnsmasq git repository. After changing to zstd, VERSION contains ' (HEAD, origin/master, origin/HEAD, master)'. > > Any idea why VERSION is manipulated? > > I generate automatically a patch which modifies VERSION to see the commit hash via logread. Applying the patch doesn't work any more. > > dnsmasq/patches/999-dnsmasq-version.patch: > diff --git a/VERSION b/VERSION > index 998eb1f..9977908 100644 > --- a/VERSION > +++ b/VERSION > @@ -1 +1 @@ > -$Format:%d$ > + (master, v2.90deb2-8-g550c368, head) > Hi Hartmut, We are now using git-archive to make a tarball of git repositories in order to make them reproducible which fixes a long standing issue. git-archive respects .gitattributes so that along with: https://github.com/imp/dnsmasq/commit/2aaea18f432374fd062370f2d899e47849558b2f Is most likely the cause. Regards, Robert > Regards, > Hartmut > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Am 06.04.2024 um 21:50 schrieb Robert Marko: > On Sat, 6 Apr 2024 at 21:47, Hartmut Birr <osexpert@gmail.com> wrote: >> >> Hi, >> >> I did change the Makefile for dnsmasq in the way that I give: >> >> PKG_SOURCE_URL:=git://thekelleys.org.uk/dnsmasq.git >> PKG_SOURCE_PROTO:=git >> PKG_SOURCE_DATE:=2024-03-27 >> PKG_SOURCE_VERSION:=550c368adea12b312f83686c61f9015c122046c2 # Treat cache insertion failure of DNSKEY and DS records as another resource problem and fail validation with suitable logging. >> PKG_MIRROR_HASH:=284a34bdb967ec8a9dff132df065ca64e9a1819d79bb8cecee1af001e22d626c >> >> Before changing to zstd, the generated source tar ball contains a file 'VERSION' with content '$Format:%d$'. This does match the dnsmasq git repository. After changing to zstd, VERSION contains ' (HEAD, origin/master, origin/HEAD, master)'. >> >> Any idea why VERSION is manipulated? >> >> I generate automatically a patch which modifies VERSION to see the commit hash via logread. Applying the patch doesn't work any more. >> >> dnsmasq/patches/999-dnsmasq-version.patch: >> diff --git a/VERSION b/VERSION >> index 998eb1f..9977908 100644 >> --- a/VERSION >> +++ b/VERSION >> @@ -1 +1 @@ >> -$Format:%d$ >> + (master, v2.90deb2-8-g550c368, head) >> > > Hi Hartmut, > We are now using git-archive to make a tarball of git repositories in > order to make them reproducible which fixes a long standing issue. > git-archive respects .gitattributes so that along with: > https://github.com/imp/dnsmasq/commit/2aaea18f432374fd062370f2d899e47849558b2f > > Is most likely the cause. I did add another static patch to solve the issue for me temporary: --- a/VERSION 2024-03-27 17:00:06.000000000 +0100 +++ b/VERSION 2024-03-27 17:00:06.000000000 +0100 @@ -1 +1 @@ - (HEAD, origin/master, origin/HEAD, master) +$Format:%d$ I generate 999-dnsmasq-version.patch via the following extension in the Makefile: define Build/Prepare mkdir -p $(TOPDIR)/tmp/dl && \ cd $(TOPDIR)/tmp/dl && \ rm -rf $(PKG_SOURCE_SUBDIR) && \ git clone -4 $(PKG_SOURCE_URL) $(PKG_SOURCE_SUBDIR) --recursive && \ cd $(PKG_SOURCE_SUBDIR) && \ git checkout $(PKG_SOURCE_VERSION) && \ version=`git describe` && \ echo " (master, $$$$version, head)" > VERSION && \ git diff VERSION > 999-dnsmasq-version.patch $(CP) $(TOPDIR)/tmp/dl/$(PKG_SOURCE_SUBDIR)/999-dnsmasq-version.patch ./patches touch -c -r ./Makefile ./patches/999-dnsmasq-version.patch cd $(TOPDIR)/tmp/dl && \ rm -rf $(PKG_SOURCE_SUBDIR) $(call Build/Prepare/Default) endef Regards, Hartmut > > Regards, > Robert > >> Regards, >> Hartmut >> >> _______________________________________________ >> openwrt-devel mailing list >> openwrt-devel@lists.openwrt.org >> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
On Sat, 6 Apr 2024 at 22:35, e9hack <e9hack@gmail.com> wrote: > > Am 06.04.2024 um 21:50 schrieb Robert Marko: > > On Sat, 6 Apr 2024 at 21:47, Hartmut Birr <osexpert@gmail.com> wrote: > >> > >> Hi, > >> > >> I did change the Makefile for dnsmasq in the way that I give: > >> > >> PKG_SOURCE_URL:=git://thekelleys.org.uk/dnsmasq.git > >> PKG_SOURCE_PROTO:=git > >> PKG_SOURCE_DATE:=2024-03-27 > >> PKG_SOURCE_VERSION:=550c368adea12b312f83686c61f9015c122046c2 # Treat cache insertion failure of DNSKEY and DS records as another resource problem and fail validation with suitable logging. > >> PKG_MIRROR_HASH:=284a34bdb967ec8a9dff132df065ca64e9a1819d79bb8cecee1af001e22d626c > >> > >> Before changing to zstd, the generated source tar ball contains a file 'VERSION' with content '$Format:%d$'. This does match the dnsmasq git repository. After changing to zstd, VERSION contains ' (HEAD, origin/master, origin/HEAD, master)'. > >> > >> Any idea why VERSION is manipulated? > >> > >> I generate automatically a patch which modifies VERSION to see the commit hash via logread. Applying the patch doesn't work any more. > >> > >> dnsmasq/patches/999-dnsmasq-version.patch: > >> diff --git a/VERSION b/VERSION > >> index 998eb1f..9977908 100644 > >> --- a/VERSION > >> +++ b/VERSION > >> @@ -1 +1 @@ > >> -$Format:%d$ > >> + (master, v2.90deb2-8-g550c368, head) > >> > > > > Hi Hartmut, > > We are now using git-archive to make a tarball of git repositories in > > order to make them reproducible which fixes a long standing issue. > > git-archive respects .gitattributes so that along with: > > https://github.com/imp/dnsmasq/commit/2aaea18f432374fd062370f2d899e47849558b2f > > > > Is most likely the cause. > > I did add another static patch to solve the issue for me temporary: > > --- a/VERSION 2024-03-27 17:00:06.000000000 +0100 > +++ b/VERSION 2024-03-27 17:00:06.000000000 +0100 > @@ -1 +1 @@ > - (HEAD, origin/master, origin/HEAD, master) > +$Format:%d$ > > I generate 999-dnsmasq-version.patch via the following extension in the Makefile: > > define Build/Prepare > mkdir -p $(TOPDIR)/tmp/dl && \ > cd $(TOPDIR)/tmp/dl && \ > rm -rf $(PKG_SOURCE_SUBDIR) && \ > git clone -4 $(PKG_SOURCE_URL) $(PKG_SOURCE_SUBDIR) --recursive && \ > cd $(PKG_SOURCE_SUBDIR) && \ > git checkout $(PKG_SOURCE_VERSION) && \ > version=`git describe` && \ > echo " (master, $$$$version, head)" > VERSION && \ > git diff VERSION > 999-dnsmasq-version.patch > $(CP) $(TOPDIR)/tmp/dl/$(PKG_SOURCE_SUBDIR)/999-dnsmasq-version.patch ./patches > touch -c -r ./Makefile ./patches/999-dnsmasq-version.patch > cd $(TOPDIR)/tmp/dl && \ > rm -rf $(PKG_SOURCE_SUBDIR) > $(call Build/Prepare/Default) > endef Hi, can I ask what is the point though? That VERSION file contains a placeholder format specifier that is supposed to be filled with a version by git, it was most likely meant to be used with git-archive as .gitattributes specifies that VERSION should be updated. $Format:%d$ is just the format specifier placeholder to be replaced. Regards, Robert > > Regards, > Hartmut > > > > > Regards, > > Robert > > > >> Regards, > >> Hartmut > >> > >> _______________________________________________ > >> openwrt-devel mailing list > >> openwrt-devel@lists.openwrt.org > >> https://lists.openwrt.org/mailman/listinfo/openwrt-devel >
On Sat, 6 Apr 2024 at 23:32, Robert Marko <robimarko@gmail.com> wrote: > > On Sat, 6 Apr 2024 at 22:35, e9hack <e9hack@gmail.com> wrote: > > > > Am 06.04.2024 um 21:50 schrieb Robert Marko: > > > On Sat, 6 Apr 2024 at 21:47, Hartmut Birr <osexpert@gmail.com> wrote: > > >> > > >> Hi, > > >> > > >> I did change the Makefile for dnsmasq in the way that I give: > > >> > > >> PKG_SOURCE_URL:=git://thekelleys.org.uk/dnsmasq.git > > >> PKG_SOURCE_PROTO:=git > > >> PKG_SOURCE_DATE:=2024-03-27 > > >> PKG_SOURCE_VERSION:=550c368adea12b312f83686c61f9015c122046c2 # Treat cache insertion failure of DNSKEY and DS records as another resource problem and fail validation with suitable logging. > > >> PKG_MIRROR_HASH:=284a34bdb967ec8a9dff132df065ca64e9a1819d79bb8cecee1af001e22d626c > > >> > > >> Before changing to zstd, the generated source tar ball contains a file 'VERSION' with content '$Format:%d$'. This does match the dnsmasq git repository. After changing to zstd, VERSION contains ' (HEAD, origin/master, origin/HEAD, master)'. > > >> > > >> Any idea why VERSION is manipulated? > > >> > > >> I generate automatically a patch which modifies VERSION to see the commit hash via logread. Applying the patch doesn't work any more. > > >> > > >> dnsmasq/patches/999-dnsmasq-version.patch: > > >> diff --git a/VERSION b/VERSION > > >> index 998eb1f..9977908 100644 > > >> --- a/VERSION > > >> +++ b/VERSION > > >> @@ -1 +1 @@ > > >> -$Format:%d$ > > >> + (master, v2.90deb2-8-g550c368, head) > > >> > > > > > > Hi Hartmut, > > > We are now using git-archive to make a tarball of git repositories in > > > order to make them reproducible which fixes a long standing issue. > > > git-archive respects .gitattributes so that along with: > > > https://github.com/imp/dnsmasq/commit/2aaea18f432374fd062370f2d899e47849558b2f > > > > > > Is most likely the cause. > > > > I did add another static patch to solve the issue for me temporary: > > > > --- a/VERSION 2024-03-27 17:00:06.000000000 +0100 > > +++ b/VERSION 2024-03-27 17:00:06.000000000 +0100 > > @@ -1 +1 @@ > > - (HEAD, origin/master, origin/HEAD, master) > > +$Format:%d$ > > > > I generate 999-dnsmasq-version.patch via the following extension in the Makefile: > > > > define Build/Prepare > > mkdir -p $(TOPDIR)/tmp/dl && \ > > cd $(TOPDIR)/tmp/dl && \ > > rm -rf $(PKG_SOURCE_SUBDIR) && \ > > git clone -4 $(PKG_SOURCE_URL) $(PKG_SOURCE_SUBDIR) --recursive && \ > > cd $(PKG_SOURCE_SUBDIR) && \ > > git checkout $(PKG_SOURCE_VERSION) && \ > > version=`git describe` && \ > > echo " (master, $$$$version, head)" > VERSION && \ > > git diff VERSION > 999-dnsmasq-version.patch > > $(CP) $(TOPDIR)/tmp/dl/$(PKG_SOURCE_SUBDIR)/999-dnsmasq-version.patch ./patches > > touch -c -r ./Makefile ./patches/999-dnsmasq-version.patch > > cd $(TOPDIR)/tmp/dl && \ > > rm -rf $(PKG_SOURCE_SUBDIR) > > $(call Build/Prepare/Default) > > endef > > Hi, can I ask what is the point though? > That VERSION file contains a placeholder format specifier that is > supposed to be filled with a version > by git, it was most likely meant to be used with git-archive as > .gitattributes specifies that VERSION should > be updated. > > $Format:%d$ is just the format specifier placeholder to be replaced. Hm, I might have understood your previous statement wrong because when checking dnsmasq 2.90 tarball on OpenWrt sources VERSION is clearly properly populated so git-archive is most likely the culprit by not populating it with the commit, tag etc but by just the remote and branch names. Regards, Robert > > Regards, > Robert > > > > Regards, > > Hartmut > > > > > > > > Regards, > > > Robert > > > > > >> Regards, > > >> Hartmut > > >> > > >> _______________________________________________ > > >> openwrt-devel mailing list > > >> openwrt-devel@lists.openwrt.org > > >> https://lists.openwrt.org/mailman/listinfo/openwrt-devel > >
Il giorno sab 6 apr 2024 alle ore 21:46 Hartmut Birr <osexpert@gmail.com> ha scritto: > > Hi, > > I did change the Makefile for dnsmasq in the way that I give: > > PKG_SOURCE_URL:=git://thekelleys.org.uk/dnsmasq.git > PKG_SOURCE_PROTO:=git > PKG_SOURCE_DATE:=2024-03-27 > PKG_SOURCE_VERSION:=550c368adea12b312f83686c61f9015c122046c2 # Treat cache insertion failure of DNSKEY and DS records as another resource problem and fail validation with suitable logging. > PKG_MIRROR_HASH:=284a34bdb967ec8a9dff132df065ca64e9a1819d79bb8cecee1af001e22d626c > > Before changing to zstd, the generated source tar ball contains a file 'VERSION' with content '$Format:%d$'. This does match the dnsmasq git repository. After changing to zstd, VERSION contains ' (HEAD, origin/master, origin/HEAD, master)'. > > Any idea why VERSION is manipulated? > > I generate automatically a patch which modifies VERSION to see the commit hash via logread. Applying the patch doesn't work any more. > > dnsmasq/patches/999-dnsmasq-version.patch: > diff --git a/VERSION b/VERSION > index 998eb1f..9977908 100644 > --- a/VERSION > +++ b/VERSION > @@ -1 +1 @@ > -$Format:%d$ > + (master, v2.90deb2-8-g550c368, head) > Hi, thanks for pointing this out, although your situation is special and a downstream situation it was worth investigating it. We confirmed that the change is correct and this is expected and it was actually wrong previously. The format works and requires an associated tag to the commit. Passing an untagged hash results in what you are observing. This is git archive handling and nothing done wrong on our hand. Soo your solution was working due to us doing things in a special way (and ignoring .gitattributes) A more robust solution (and what I'm suggesting you to change), is to make use of the Prepare define and just remove the VERSION file and generate one of your own. It should permit you to make things more maintainable and even remove the downstream patch.
diff --git a/VERSION b/VERSION index 998eb1f..9977908 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -$Format:%d$ + (master, v2.90deb2-8-g550c368, head)