[PATCH 1/3] debianize: make changelog date reproducible

6 views
Skip to first unread message

Henning Schild

unread,
Sep 6, 2021, 4:34:08 AM9/6/21
to isar-...@googlegroups.com, Cedric Hombourger, Henning Schild, Venkat...@toshiba-tsip.com
Deriving the date from the filesystem and git also does not always
produce the same result.

In case there is a changelog file and our version does not yet exist
in it, make the new entry 42s later. If there was no changelog use
"1970-01-01 00:00:00 UTC".

Reported-by: <Venkat...@toshiba-tsip.com>
Signed-off-by: Henning Schild <henning...@siemens.com>
---
meta/classes/debianize.bbclass | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/meta/classes/debianize.bbclass b/meta/classes/debianize.bbclass
index 44867780f7b9..e6a300700a5f 100644
--- a/meta/classes/debianize.bbclass
+++ b/meta/classes/debianize.bbclass
@@ -14,20 +14,19 @@ MAINTAINER ??= "Unknown maintainer <unk...@example.com>"

deb_add_changelog() {
changelog_v="${CHANGELOG_V}"
+ timestamp=0
if [ -f ${S}/debian/changelog ]; then
if [ ! -f ${WORKDIR}/changelog.orig ]; then
cp ${S}/debian/changelog ${WORKDIR}/changelog.orig
fi
orig_version=$(dpkg-parsechangelog -l ${WORKDIR}/changelog.orig -S Version)
changelog_v=$(echo "${changelog_v}" | sed 's/<orig-version>/'${orig_version}'/')
+ orig_date=$(dpkg-parsechangelog -l ${WORKDIR}/changelog.orig -S Date)
+ orig_seconds=$(date --date="${orig_date}" +'%s')
+ timestamp=$(echo "${orig_seconds}+42" | bc)
fi

- timestamp=$(find ${S}/ -type f -not -path "${S}/debian/*" -printf "%T@\n"|sort -n -r|head -n 1)
- if [ -n "${timestamp}" ]; then
- date=$(LANG=C date -R -d @${timestamp})
- else
- date=$(LANG=C date -R)
- fi
+ date=$(LANG=C date -R -d @${timestamp})
cat <<EOF > ${S}/debian/changelog
${PN} (${changelog_v}) UNRELEASED; urgency=low

--
2.32.0

Henning Schild

unread,
Sep 6, 2021, 4:34:08 AM9/6/21
to isar-...@googlegroups.com, Cedric Hombourger, Henning Schild
Make sure to include the upstream changelog and prepend our entry.
Before that change i.e. hello would end up with a changelog containing
only our entry. After that we will get the full upstream changelog and
our prepended entry.

Signed-off-by: Henning Schild <henning...@siemens.com>
---
meta/classes/debianize.bbclass | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/meta/classes/debianize.bbclass b/meta/classes/debianize.bbclass
index e6a300700a5f..386c34149b5b 100644
--- a/meta/classes/debianize.bbclass
+++ b/meta/classes/debianize.bbclass
@@ -34,6 +34,12 @@ ${PN} (${changelog_v}) UNRELEASED; urgency=low

-- ${MAINTAINER} ${date}
EOF
+ if [ -f ${WORKDIR}/changelog.orig ]; then
+ # prepend our entry to the original changelog
+ echo >> ${S}/debian/changelog
+ cat ${WORKDIR}/changelog.orig >> ${S}/debian/changelog
+ fi
+
if [ -f ${WORKDIR}/changelog ]; then
latest_version=$(dpkg-parsechangelog -l ${WORKDIR}/changelog -S Version)
if [ "${latest_version}" = "${changelog_v}" ]; then
--
2.32.0

Henning Schild

unread,
Sep 6, 2021, 4:34:08 AM9/6/21
to isar-...@googlegroups.com, Cedric Hombourger, Henning Schild, Venkat...@toshiba-tsip.com
So called "native" packages will put the debian changelog into the
package as "changelog" and not "changelog.Debian".
dh_installchangelogs(1)

We have the file from ubuntu and with this change we start doing things
differently. For isar "raw" packages will be "native" so we probably
want that no matter what ubuntu might think. I still started a
discussion on the topic.
https://github.com/tianon/docker-brew-ubuntu-core/issues/216

This was found when working on reproducible builds, for some reason the
changelogs of the raw packages did not differ, because they are not in
the rootfs.

Reported-by: <Venkat...@toshiba-tsip.com>
Signed-off-by: Henning Schild <henning...@siemens.com>
---
meta/recipes-support/isar-exclude-docs/files/isar-exclude-docs | 2 +-
meta/recipes-support/isar-exclude-docs/files/postinst | 2 +-
.../{isar-exclude-docs_0.1.bb => isar-exclude-docs_0.2.bb} | 0
3 files changed, 2 insertions(+), 2 deletions(-)
rename meta/recipes-support/isar-exclude-docs/{isar-exclude-docs_0.1.bb => isar-exclude-docs_0.2.bb} (100%)

diff --git a/meta/recipes-support/isar-exclude-docs/files/isar-exclude-docs b/meta/recipes-support/isar-exclude-docs/files/isar-exclude-docs
index 5bec6260fddd..a77a47d1fe01 100644
--- a/meta/recipes-support/isar-exclude-docs/files/isar-exclude-docs
+++ b/meta/recipes-support/isar-exclude-docs/files/isar-exclude-docs
@@ -8,4 +8,4 @@ path-exclude=/usr/share/doc/*
path-include=/usr/share/doc/*/copyright

# ... and Debian changelogs
-path-include=/usr/share/doc/*/changelog.Debian.*
+path-include=/usr/share/doc/*/changelog.*
diff --git a/meta/recipes-support/isar-exclude-docs/files/postinst b/meta/recipes-support/isar-exclude-docs/files/postinst
index f6c0d1b2df52..d34c04ea47f0 100644
--- a/meta/recipes-support/isar-exclude-docs/files/postinst
+++ b/meta/recipes-support/isar-exclude-docs/files/postinst
@@ -4,4 +4,4 @@
# what we delete needs to be in sync with the dpkg configuration we ship

rm -rf /usr/share/man/*
-find /usr/share/doc/ -type f ! -name "copyright" ! -name "changelog.Debian.*" -exec rm -rf {} \;
+find /usr/share/doc/ -type f ! -name "copyright" ! -name "changelog.*" -exec rm -rf {} \;
diff --git a/meta/recipes-support/isar-exclude-docs/isar-exclude-docs_0.1.bb b/meta/recipes-support/isar-exclude-docs/isar-exclude-docs_0.2.bb
similarity index 100%
rename from meta/recipes-support/isar-exclude-docs/isar-exclude-docs_0.1.bb
rename to meta/recipes-support/isar-exclude-docs/isar-exclude-docs_0.2.bb
--
2.32.0

Anton Mikanovich

unread,
Sep 7, 2021, 8:56:06 AM9/7/21
to Henning Schild, isar-...@googlegroups.com, Cedric Hombourger, Venkat...@toshiba-tsip.com
I suggest using expr instead of bc to avoid adding new Isar dependencies.

--
Anton Mikanovich
Promwad Ltd.
External service provider of ilbers GmbH
Maria-Merian-Str. 8
85521 Ottobrunn, Germany
+49 (89) 122 67 24-0
Commercial register Munich, HRB 214197
General Manager: Baurzhan Ismagulov

Henning Schild

unread,
Sep 21, 2021, 3:24:25 AM9/21/21
to isar-...@googlegroups.com, Cedric Hombourger, Venkat...@toshiba-tsip.com
I reported the issue with the changelog upstream and it has been fixed
there.

https://bugs.launchpad.net/bugs/1943114

So now this patch is in line with what ubuntu does to shrink their
cloud/container images.

Henning

Am Mon, 6 Sep 2021 10:34:03 +0200
schrieb Henning Schild <henning...@siemens.com>:
Reply all
Reply to author
Forward
0 new messages