[Reproducible-builds] Bug#794795: debiandoc-sgml-doc: please make the build reproducible
Osamu Aoki
osamu at debian.org
Wed Aug 12 16:45:38 UTC 2015
Hi
On Fri, Aug 07, 2015 at 04:54:37PM +0200, Dhole wrote:
> On 08/07/2015 03:39 PM, Osamu Aoki wrote:
> > I noticed many people are fixing this issue in this way. That may fix
> > some itch for small group of highly technically minded people but does
> > disservice to many end-users.
> >
> > We should better as DD than the one proposed.
> >> - <version><date></version>
> >
> > That's very rough approach.
> >
> > Let's promote to use the last changelog entry date for this kind of
> > BUILD_DATE for reproducible build.
> >
> > I think something like the following to set it:
> >
> > # short date of this Debian package (debian/changelog)
> > BUILD_DATE ?= $(shell { date +'%Y-%m-%d' -d"`dpkg-parsechangelog -SDate`" || date +'(No changelog) %Y-%m-%d' ; })
> >
> > Patch should be more like
> >
> >> - <version><date></version>
> >> + <version>&builddate;</version>
> >
> > Then set the date via entity.
> >
> > Osamu
> >
>
> Hi Osamu,
>
> I understand your concern about keeping the date on the generated docs.
> As per your suggested solution: replacing the timestamp with the date
> from latests debian/changelog entry is something we are usually doing in
> the reproducible builds team to fix issues like this one.
>
> In this case, I didn't find a nice way to pass an external variable to
> the sgml files. That's why my first approach was to plainly remove the
> timestamp (It happens in many packages that the timestamp is not really
> needed). But I understand that in debiandoc-sgml-doc the date should be
> kept. I've searched through the documentation of debiandoc, but I didn't
> find how to pass external values. How do you define an entity
> (&builddate in your example) so that it can be filled externally?
It can be done by replacing <date> with &builddate; and add entity file
etc. That was what I was talking ...
After some thought, this approach is ugly.
So I updated the debiandoc-sgml package to 1.2.31-1. If it finds
DEBIANDOC_DATE defdined, <date> tag is replaced with this environment
variable.
We can simply add the following in the debian/rules.
DEBIANDOC_DATE ?= $(shell date +'%Y-%m-%d' -d"`dpkg-parsechangelog -SDate`")
export DEBIANDOC_DATE
> I can provide a patch like that once I learn how to pass external
> variables to the docs :)
If you look at debian-reference source, it has many autogenerated entity
to pass variables to the docs. But I do not think you need this
complication for <date> tag.
Osamu
More information about the Reproducible-builds
mailing list