Discussion:
Builds not reproducible on armhf
(too old to reply)
Mechtilde Stehmann
2024-05-20 08:20:01 UTC
Permalink
Hello,

I want to clean up my Java packages.

There are several with FTBR. I found that the day of the *.poms s a date
from 1970.

for example they are the packages

vinnie
commons-email
ez-vcard
...
and so on

Can you give me/a hint to fix this behaviour.

Kind regards
--
Mechtilde Stehmann
## Debian Developer
## PGP encryption welcome
## F0E3 7F3D C87A 4998 2899 39E7 F287 7BBA 141A AD7F
Thorsten Glaser
2024-05-20 16:20:01 UTC
Permalink
There are several with FTBR. I found that the day of the *.poms s a date =
from
1970.
I=E2=80=99ve had a look at this. The files have various, *differing*,
timestamps within the month of January 1970, which in itself
is not proper.

It=E2=80=99s not a t64-related JDK bug: I tested=E2=80=A6

import java.io.*;

class T1 {
public static void main(String args[]) throws IOException {
File sf =3D new File("T1.java");
File df =3D new File("T1.out");
System.out.println(sf.lastModified());
InputStream is =3D new FileInputStream(sf);
OutputStream os =3D new FileOutputStream(df);
byte[] data =3D new byte[32768];
int nbytes =3D is.read(data);
os.write(data, 0, nbytes);
os.close();
is.close();
df.setLastModified(sf.lastModified());
}
}

=E2=80=A6 on armhf with OpenJDK 8, 17 and 21 (11 needs t64-transitioning).

Given the range of January 1970=E2=80=A6

$ TZ=3DUTC date -d '1970-01-31T23:59:59Z' +%s
2678399
$ TZ=3DUTC date -d @2678399000
Sun Nov 15 23:43:20 UTC 2054

=E2=80=A6 it is entirely possible that someone confused time_t and
Java millis, so the timestamps are off by a factor of 1000.

-rw-r--r--=C2=B7=C2=B7=C2=B70=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7=C2=B7(0)=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7(0)=C2=B7=C2=B7=C2=B7=C2=B7=C2=B71415=C2=B71970-01-06=C2=B708:0=
3:05.000000=C2=B7./usr/share/maven-repo/com/github/mangstadt/vinnie/2.0.2/v=
innie-2.0.2.pom
-rw-r--r--=C2=B7=C2=B7=C2=B70=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7=C2=B7(0)=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7(0)=C2=B7=C2=B7=C2=B7=C2=B7=C2=B71415=C2=B71970-01-03=C2=B713:2=
7:14.000000=C2=B7./usr/share/maven-repo/com/github/mangstadt/vinnie/2.0.2/v=
innie-2.0.2.pom

-rw-r--r--=C2=B7=C2=B7=C2=B70=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7=C2=B7(0)=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7(0)=C2=B7=C2=B7=C2=B7=C2=B7=C2=B71416=C2=B71970-01-09=C2=B701:3=
6:03.000000=C2=B7./usr/share/maven-repo/com/github/mangstadt/vinnie/debian/=
vinnie-debian.pom
-rw-r--r--=C2=B7=C2=B7=C2=B70=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7=C2=B7(0)=C2=B7root=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=C2=B7=
=C2=B7=C2=B7(0)=C2=B7=C2=B7=C2=B7=C2=B7=C2=B71416=C2=B71970-01-04=C2=B721:4=
0:23.000000=C2=B7./usr/share/maven-repo/com/github/mangstadt/vinnie/debian/=
vinnie-debian.pom

$ for t in 1970-01-06T08:03:05 1970-01-03T13:27:14 \
1970-01-09T01:36:03 1970-01-04T21:40:23; do \
=09TZ=3DUTC date -d @$(TZ=3DUTC date -d "${t}Z" +%s)000; \
done

Fri Aug 10 11:23:20 UTC 1984
Tue Jan 4 13:53:20 UTC 1977
Sat Feb 1 16:50:00 UTC 1992
Mon Sep 8 01:03:20 UTC 1980

Okaaay=E2=80=A6 So, maybe not so much. I *was* guessing something with
DEB_SOURCE_EPOCH vs. project.build.outputTimestamp, but that=E2=80=99s
apparently not it either.

So I fear someone=E2=80=99ll have to dig through all the various Maven-
related source packages=E2=80=A6

FWIW, the 517-day-old .deb currently in the repo has=E2=80=A6

-rw-r--r-- root/root 1415 2022-12-17 18:36 ./usr/share/maven-repo/com/=
github/mangstadt/vinnie/2.0.2/vinnie-2.0.2.pom

=E2=80=A6 which matches Sat, 17 Dec 2022 18:36:19 +0100 from d/changelog,
so something something reproducible-builds is still suspect.

Good luck with that,
//mirabilos
--=20
Infrastrukturexperte =E2=80=A2 Qvest Digital AG
Am Dickobskreuz 10, D-53121 Bonn =E2=80=A2 https://www.qvest-digital.com/
Telephon +49 228 54881-393 =E2=80=A2 Fax: +49 228 54881-235
HRB AG Bonn 18196 =E2=80=A2 USt-ID (VAT): DE274355441
Vorstand: Dr. Stefan Barth, Kai Ebenrett, Boris Esser, Alexander Steeg
Vorsitzender Aufsichtsrat: Peter N=C3=B6then
Vagrant Cascadian
2024-05-21 17:40:01 UTC
Permalink
Post by Mechtilde Stehmann
I want to clean up my Java packages.
There are several with FTBR. I found that the day of the *.poms s a date
from 1970.
for example they are the packages
vinnie
Looking at the history for vinnie:

https://tests.reproducible-builds.org/debian/history/armhf/vinnie.html

It is only very recently that this started happening (2024-05-04)
without source changes in vinnie itself, so I would suspect some change
in the toolchain used to produce the .pom files?

commons-email is similar, although starting 2024-04-04:

https://tests.reproducible-builds.org/debian/history/armhf/commons-email.html

ez-vcard is similar too, starting 2024-04-20:

https://tests.reproducible-builds.org/debian/rb-pkg/trixie/armhf/diffoscope-results/ez-vcard.html

Although some of those builds also have differences in some xz
contents... might just be related to the timestamp differences.


Wild hunch is one build is run on a 64-bit kernel (without a linux32
personality) and one build on a 32-bit kernel... that is one of the main
differences between these armhf test builds and builds on other
architectures, where this does not seem to happen...


live well,
vagrant
Mechtilde Stehmann
2024-08-24 19:00:02 UTC
Permalink
Hello,

in the meantime I did some more tests to find the reason for it.

I build it again with pbuilder specifying ARCH=armhf and get the right
date for the pom file (same date as the amd64 build)

Now I think I need access to an armhf box to test it natively.

What should I do to get temporary.

Kind regards

Mechtilde
Post by Vagrant Cascadian
Post by Mechtilde Stehmann
I want to clean up my Java packages.
There are several with FTBR. I found that the day of the *.poms s a date
from 1970.
for example they are the packages
vinnie
https://tests.reproducible-builds.org/debian/history/armhf/vinnie.html
It is only very recently that this started happening (2024-05-04)
without source changes in vinnie itself, so I would suspect some change
in the toolchain used to produce the .pom files?
https://tests.reproducible-builds.org/debian/history/armhf/commons-email.html
https://tests.reproducible-builds.org/debian/rb-pkg/trixie/armhf/diffoscope-results/ez-vcard.html
Although some of those builds also have differences in some xz
contents... might just be related to the timestamp differences.
Wild hunch is one build is run on a 64-bit kernel (without a linux32
personality) and one build on a 32-bit kernel... that is one of the main
differences between these armhf test builds and builds on other
architectures, where this does not seem to happen...
live well,
vagrant
--
Mechtilde Stehmann
## Debian Developer
## PGP encryption welcome
## F0E3 7F3D C87A 4998 2899 39E7 F287 7BBA 141
Mechtilde Stehmann
2024-08-25 11:30:01 UTC
Permalink
Hello Vagrant,

in the meantime I did a build at amdahl.debian.org and can't reproduce
the problem too.

i did it with this package
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/armhf/csvjdbc.html

Dates are 2022-06-08 as expected and not 1970-01-03 as described at
tests.rb.o.

There are many other packages with this problem in the java-team.

Do you have an idea, how I can help to fix it. Can I have a (temporaly)
access to reproduce the problem and then maybe to fix it.

Kind regards

Mechtilde
Post by Vagrant Cascadian
Post by Mechtilde Stehmann
I want to clean up my Java packages.
There are several with FTBR. I found that the day of the *.poms s a date
from 1970.
for example they are the packages
vinnie
https://tests.reproducible-builds.org/debian/history/armhf/vinnie.html
It is only very recently that this started happening (2024-05-04)
without source changes in vinnie itself, so I would suspect some change
in the toolchain used to produce the .pom files?
https://tests.reproducible-builds.org/debian/history/armhf/commons-email.html
https://tests.reproducible-builds.org/debian/rb-pkg/trixie/armhf/diffoscope-results/ez-vcard.html
Although some of those builds also have differences in some xz
contents... might just be related to the timestamp differences.
Wild hunch is one build is run on a 64-bit kernel (without a linux32
personality) and one build on a 32-bit kernel... that is one of the main
differences between these armhf test builds and builds on other
architectures, where this does not seem to happen...
live well,
vagrant
--
Mechtilde Stehmann
## Debian Developer
## PGP encryption welcome
## F0E3 7F3D C87A 4998 2899 39E7 F287 7BBA 141A AD7F
Chris Hofstaedtler
2024-08-25 22:30:01 UTC
Permalink
[..]
Post by Mechtilde Stehmann
Dates are 2022-06-08 as expected and not 1970-01-03 as described
at tests.rb.o.
[..]
Post by Mechtilde Stehmann
Post by Vagrant Cascadian
https://tests.reproducible-builds.org/debian/history/armhf/vinnie.html
I briefly looked at vinnie. Given it is arch:all, I kinda expect it
to produce the "same" deb regardless of the arch it is built on.
libvinnie-java_2.0.2-3_all.deb in the archive was built on
x86-grnet-03, so on amd64. It does -not- contain a 1970-x-y
timestamp.

I'll note that fakeroot was probably broken on armel, armhf since
the t64 migration until mid-August.
Is fakeroot involved in any way? If so, it might make sense to
discard any results from that period.

Chris
Mechtilde Stehmann
2024-08-26 04:50:01 UTC
Permalink
Hello Chris,
Post by Chris Hofstaedtler
[..]
Post by Mechtilde Stehmann
Dates are 2022-06-08 as expected and not 1970-01-03 as described
at tests.rb.o.
[..]
Post by Mechtilde Stehmann
Post by Vagrant Cascadian
https://tests.reproducible-builds.org/debian/history/armhf/vinnie.html
I briefly looked at vinnie. Given it is arch:all, I kinda expect it
to produce the "same" deb regardless of the arch it is built on.
libvinnie-java_2.0.2-3_all.deb in the archive was built on
x86-grnet-03, so on amd64. It does -not- contain a 1970-x-y
timestamp.
I'll note that fakeroot was probably broken on armel, armhf since
the t64 migration until mid-August.
Is fakeroot involved in any way? If so, it might make sense to
discard any results from that period.
Thanks for your explanations.
Are there plans to ran the tests again?
Post by Chris Hofstaedtler
Chris
--
Mechtilde Stehmann
## Debian Developer
## PGP encryption welcome
## F0E3 7F3D C87A 4998 2899 39E7 F287 7BBA 141A AD7F
Holger Levsen
2024-08-26 07:00:01 UTC
Permalink
Post by Mechtilde Stehmann
Post by Chris Hofstaedtler
I'll note that fakeroot was probably broken on armel, armhf since
the t64 migration until mid-August.
Is fakeroot involved in any way? If so, it might make sense to
discard any results from that period.
Thanks for your explanations.
Are there plans to ran the tests again?
normally that happens automatically, but the armhf builders have been very
sad for at least a week, but rather more like 4 weeks, and mid August ist
like a week ago.

https://tests.reproducible-builds.org/debian/index_performance.html shows
zero armhf builds in the last week and 245 per day in the last 4 weeks.
--
cheers,
Holger

⢀⣎⠟⠻⢶⣊⠀
⣟⠁⢠⠒⠀⣿⡁ holger@(debian|reproducible-builds|layer-acht).org
⢿⡄⠘⠷⠚⠋⠀ OpenPGP: B8BF54137B09D35CF026FE9D 091AB856069AAA1C
⠈⠳⣄

These heat waves aren’t tragedies, they’re crimes. The fossil fuel industry
knew decades ago that this is what their pollution was causing, so they
spent billions to lie to the public and block climate action.
Loading...