New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make build reproducible #3893
Comments
|
Yes, this is almost certainly an issue with CFLAGS/CPPFLAGS/LDFLAGS not being correctly propagated to the 'sub-compilation' of ... but previous compilations in the log look like this: Note, in particular, the presence of -ffile-prefix-map in this second snippet. |
|
This fixes half of the problem (both bhlc and reprotest) : Now, I'm trying this: |
|
Confirmed, this patch fixes both |
|
I just filed #3895 to master branch and released Debian package cyrus-imapd-3.4.3-3 which includes above patch (pushed to Debian unstable) |
|
Do we know that the perl modules still work with these patches? Or only that the build is now reproducible? I have a very vague and maybe incorrect memory that XS modules need to be built with the same xxFLAGS that perl itself was, and that might be we why don't pass Cyrus's own CFLAGS etc down (except for where it's really needed for linking e.g. gcov, sasl, ssl). Does it make any difference in practice though? I have no idea. |
|
At least test passed... |
|
All Perl module are compiled with these flags in Debian, we never encored any problem with them |
|
We can also wait for Debian users tests, cyrus-imapd will enter in testing (and then I'll push it to backports). Then I'll rebase this MR. Do you agree? |
|
That sounds reasonable to me. I believe the Cyrus perl modules are a bit of a black hole when it comes to testing, so just because "tests pass" doesn't mean they're not broken, if the tests never try to use them. And I don't really have a useful way to test them directly myself. Since the patch is already in Debian unstable, let's see what reports shake out from that. And if it turns out it's fine there, then I'll consider it tested, and I'll be happy to merge it here so you don't need to keep maintaining the patch. Thanks! |
|
Hi @elliefm, nobody in Debian reported anything about this change. I think there is no risk to merge it |
|
Oh, I had forgotten about this particular change! Someone popped up on the info-cyrus mailing list a day or two ago complaining about a cyradm problem on Debian Testing (3.4.3-3+b1). It looks like a libpcre2/3 linkage problem, so I directed them to #3861. But maybe it's related to this as well. Here's the thread: |
|
I tried to join conversation (code never come). Even if libpcre2 is installed, cyrus-imapd is linked only with old libpcre3 |
|
Looking at this thread, this MR breaks Cyrus/Perl. Closing for now |
|
Sorry, closing #3895, not this issue |
Description: propagate CFLAGS Author: Yadd <yadd@debian.org> Forwarded: cyrusimap/cyrus-imapd#3893 Last-Update: 2022-02-03
Description: propagate CFLAGS Author: Yadd <yadd@debian.org> Forwarded: cyrusimap/cyrus-imapd#3893 Last-Update: 2022-02-03
|
Hi, as you can see here, there are some other values in |
|
I'm not really sure what I'm seeing there. There seems to be three kinds of differences:
The two build paths seem to be: Is it deliberate that they're structured differently? If the two paths were structured the same, I think most of the reported differences would go away. |
|
Hi,
But propagating XXFLAGS to Perl files breaks them (see related thread). I updated this issue for the record, it stays a minor issue. Cheers, |
Oh yes, it is absolutely deliberate that they are structured differently! And there are actually three differences in the paths that are useful when flushing out reproducibility issues. I list them here in some slight detail for future reference:
|
|
Oh, I see; and:
You already told me about this back in February, but I didn't understand the significance at the time, and then Yadd provided a patch so I didn't think further about it, until the patch turned out to not work... I think it seems clear from Yadd's experiments that my hunch about perl XS's need for particular xxFLAGS was correct, and so directly passing all of Cyrus's xxFLAGS down to the perl build just breaks things. But I wonder if That said, I don't know where So I guess this flag must be added by the Debian package build, not by Cyrus itself. That makes it tricky. If the Cyrus build was adding it, I could simply find what's doing it and do the same in the perl part. But if it's coming from outside, I can't just do-the-same-thing, because I don't know what's been done. |
|
I'm not the Debian maintainer so I might not be 100% correct, but my guess is that the flag is coming from here: https://sources.debian.org/src/cyrus-imapd/3.6.0~beta3-1/debian/rules/#L25 Look along line 25: the Maybe there is another variable like |
Hi,
cyrus-imapd is fully reproducible (at least Debian package from 3.4.3-2π ) except Perl/XS part which embeds some debug info (same for
managesieve.xs)This is probably linked to missing CFLAGS/CPPFLAGS/LDFLAGS propagation when building Perl/XS files (see Debian BHLC job)
My reprotest artifacts are here (temporary artifacts link). To see difference:
build1/usr/lib/x86_64-linux-gnu/perl5/5.32/auto/Cyrus/IMAP/IMAP.soandbuild2/usr/lib/x86_64-linux-gnu/perl5/5.32/auto/Cyrus/IMAP/IMAP.soThanks a lot for providing such amazing software !
The text was updated successfully, but these errors were encountered: