Re: [DISCUSS] checking reproducible builds

2020-05-30 Thread Robert Scholte
makes sense to me.

Robert
On 30-5-2020 22:56:19, Hervé BOUTEMY  wrote:
any objection that I create a new maven-artifact-plugin Git repository
initialized with current maven-buildinfo-plugin Git history?

Regards,

Hervé

Le mercredi 27 mai 2020, 19:26:55 CEST Robert Scholte a écrit :
> maven-studies are just a sandbox, experimental code. Once it has a good
> shape, it can be promoted to a separate project. So no, we're not going to
> release the maven-buildinfo-plugin.
>
> Robert
> On 26-5-2020 23:17:29, Konrad Windszus wrote:
> As creating a new maven-artifact-plugin will probably take some time, maybe
> it would be possible to push a release build of
> https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin to
> Maven Central. Or is there already a rough schedule for coming up with the
> new maven-artifact-plugin?
>
> Thanks,
> Konrad
>
> On 2020/03/08 20:04:56, "Robert Scholte" wrote:
> > I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> > That implies that the save goal should be renamed.
> > A couple of goals of the maven-dependency-plugin are actually more
> > artifact-related are might be worth moving.
> >
> > Robert
> >
> > On 8-3-2020 13:44:07, Michael Osipov wrote:
> >
> > Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> > >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> > >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
> >  This is expected because I am on 1.8.0_242. I don't have Java 7
> >  installed anymore on the server.
> > >>>
> > >>> for the discussion I wanted us to have, just being able to test and
> > >>> see
> > >>> how we detect issues, this is perfect, isn't it?
> > >>
> > >> This is really nice. Here is the diffoscope output:
> > > you're discovering the wonders of diffoscope :)
> > >
> > >>> --- maven-site-plugin-3.9.0.jar
> > >>> +++ reference/maven-site-plugin-3.9.0.jar
> > >>> ├── zipinfo {}
> > >>> │ @@ -1,8 +1,8 @@
> > >
> > > [...]
> > >
> > >>> META-INF/MANIFEST.MF
> > >>> │ @@ -1,10 +1,10 @@
> > >>> │ Manifest-Version: 1.0
> > >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> > >>> │ Implementation-Title: Apache Maven Site Plugin
> > >>> │ Implementation-Version: 3.9.0
> > >>> │ +Build-Jdk-Spec: 1.7^M
> > >>> │ Specification-Vendor: The Apache Software Foundation
> > >>> │ -Specification-Title: Apache Maven Site Plugin^M
> > >>> │ -Build-Jdk-Spec: 1.8^M
> > >>> │ Created-By: Maven Jar Plugin 3.2.0
> > >>> │ +Specification-Title: Apache Maven Site Plugin^M
> > >>> │ Specification-Version: 3.9
> > >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> > >>
> > >> I wonder where the CRs code from...this could be the default
> > >> serialization format on every platform.
> > >
> > > FYI I don't have such CRs in output on my Linux box
> >
> > This cannot be. See
> > https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/s
> > hare/classes/java/util/jar/Manifest.java and search for \r\n. Old Sun code
> > uses *always* CRLF. Plase recheck on your side and run a hexdump on the
> > Manifest file.
> >
> > >>> how did you find the experience? any improvement proposal?
> > >>> and any idea on where to put this goal in the future?
> > >>
> > >> There is room for improvement when I quickly read the code. I will
> > >> write
> > >> separately on this.
> > >
> > > sure, code can be improved: don't hesitate
> > > but I was not asking yet for code improvement (I'm confident, it will
> > > happen) but *experience* improvement
> > >
> > >> I'd leave as a plugin for now.
> > >
> > > you mean a separate plugin? same "buildinfo" name as current? "save"
> > > goal
> > > name?
> >
> > OK, let's talk about experience:
> >
> > * buildinfo may be changed to broader name, e.g.,
> > maven-reproducibility-plugin. Explanain follows
> > * 'save' does too much. It should save only and not compare. Save should
> > either run at initialize or at build-resources phase, imho
> > * Add a 'compare' goal, not phase bound. It performs the actual
> > comparsion.
> >
> > Strictly speaking if the plugin is called buildinfo it should handle the
> > buildinfo files only.
> >
> > >> At least in 3.7.x.
> > >
> > > 3.7.x as Maven 3.7.x?
> > > does that mean that you think it should be one day integrated into Maven
> > > core? what's the rationale?
> >
> > Not really, but if this happens, not before 4.x. I don't have any
> > rationale or entry point for this yet.
> >
> > Michael
> >
> >
> > -
> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > For additional commands, e-mail: dev-h...@maven.apache.org
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org





-
To 

Re: [DISCUSS] checking reproducible builds

2020-05-30 Thread Hervé BOUTEMY
any objection that I create a new maven-artifact-plugin Git repository 
initialized with current maven-buildinfo-plugin Git history?

Regards,

Hervé

Le mercredi 27 mai 2020, 19:26:55 CEST Robert Scholte a écrit :
> maven-studies are just a sandbox, experimental code. Once it has a good
> shape, it can be promoted to a separate project. So no, we're not going to
> release the maven-buildinfo-plugin.
> 
> Robert
> On 26-5-2020 23:17:29, Konrad Windszus  wrote:
> As creating a new maven-artifact-plugin will probably take some time, maybe
> it would be possible to push a release build of
> https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin to
> Maven Central. Or is there already a rough schedule for coming up with the
> new maven-artifact-plugin?
> 
> Thanks,
> Konrad
> 
> On 2020/03/08 20:04:56, "Robert Scholte" wrote:
> > I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> > That implies that the save goal should be renamed.
> > A couple of goals of the maven-dependency-plugin are actually more
> > artifact-related are might be worth moving.
> > 
> > Robert
> > 
> > On 8-3-2020 13:44:07, Michael Osipov wrote:
> > 
> > Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> > >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> > >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
> >  This is expected because I am on 1.8.0_242. I don't have Java 7
> >  installed anymore on the server.
> > >>> 
> > >>> for the discussion I wanted us to have, just being able to test and
> > >>> see
> > >>> how we detect issues, this is perfect, isn't it?
> > >> 
> > >> This is really nice. Here is the diffoscope output:
> > > you're discovering the wonders of diffoscope :)
> > > 
> > >>> --- maven-site-plugin-3.9.0.jar
> > >>> +++ reference/maven-site-plugin-3.9.0.jar
> > >>> ├── zipinfo {}
> > >>> │ @@ -1,8 +1,8 @@
> > > 
> > > [...]
> > > 
> > >>> META-INF/MANIFEST.MF
> > >>> │ @@ -1,10 +1,10 @@
> > >>> │ Manifest-Version: 1.0
> > >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> > >>> │ Implementation-Title: Apache Maven Site Plugin
> > >>> │ Implementation-Version: 3.9.0
> > >>> │ +Build-Jdk-Spec: 1.7^M
> > >>> │ Specification-Vendor: The Apache Software Foundation
> > >>> │ -Specification-Title: Apache Maven Site Plugin^M
> > >>> │ -Build-Jdk-Spec: 1.8^M
> > >>> │ Created-By: Maven Jar Plugin 3.2.0
> > >>> │ +Specification-Title: Apache Maven Site Plugin^M
> > >>> │ Specification-Version: 3.9
> > >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> > >> 
> > >> I wonder where the CRs code from...this could be the default
> > >> serialization format on every platform.
> > > 
> > > FYI I don't have such CRs in output on my Linux box
> > 
> > This cannot be. See
> > https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/s
> > hare/classes/java/util/jar/Manifest.java and search for \r\n. Old Sun code
> > uses *always* CRLF. Plase recheck on your side and run a hexdump on the
> > Manifest file.
> > 
> > >>> how did you find the experience? any improvement proposal?
> > >>> and any idea on where to put this goal in the future?
> > >> 
> > >> There is room for improvement when I quickly read the code. I will
> > >> write
> > >> separately on this.
> > > 
> > > sure, code can be improved: don't hesitate
> > > but I was not asking yet for code improvement (I'm confident, it will
> > > happen) but *experience* improvement
> > > 
> > >> I'd leave as a plugin for now.
> > > 
> > > you mean a separate plugin? same "buildinfo" name as current? "save"
> > > goal
> > > name?
> > 
> > OK, let's talk about experience:
> > 
> > * buildinfo may be changed to broader name, e.g.,
> > maven-reproducibility-plugin. Explanain follows
> > * 'save' does too much. It should save only and not compare. Save should
> > either run at initialize or at build-resources phase, imho
> > * Add a 'compare' goal, not phase bound. It performs the actual
> > comparsion.
> > 
> > Strictly speaking if the plugin is called buildinfo it should handle the
> > buildinfo files only.
> > 
> > >> At least in 3.7.x.
> > > 
> > > 3.7.x as Maven 3.7.x?
> > > does that mean that you think it should be one day integrated into Maven
> > > core? what's the rationale?
> > 
> > Not really, but if this happens, not before 4.x. I don't have any
> > rationale or entry point for this yet.
> > 
> > Michael
> > 
> > 
> > -
> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > For additional commands, e-mail: dev-h...@maven.apache.org
> 
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org





-
To unsubscribe, e-mail: 

Re: [DISCUSS] checking reproducible builds

2020-05-27 Thread Robert Scholte
maven-studies are just a sandbox, experimental code. Once it has a good shape, 
it can be promoted to a separate project.
So no, we're not going to release the maven-buildinfo-plugin.

Robert
On 26-5-2020 23:17:29, Konrad Windszus  wrote:
As creating a new maven-artifact-plugin will probably take some time, maybe it 
would be possible to push a release build of 
https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin to Maven 
Central. Or is there already a rough schedule for coming up with the new 
maven-artifact-plugin?

Thanks,
Konrad

On 2020/03/08 20:04:56, "Robert Scholte" wrote:
> I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> That implies that the save goal should be renamed.
> A couple of goals of the maven-dependency-plugin are actually more 
> artifact-related are might be worth moving.
>
> Robert
>
> On 8-3-2020 13:44:07, Michael Osipov wrote:
> Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
>  This is expected because I am on 1.8.0_242. I don't have Java 7
>  installed anymore on the server.
> >>>
> >>> for the discussion I wanted us to have, just being able to test and see
> >>> how we detect issues, this is perfect, isn't it?
> >>
> >> This is really nice. Here is the diffoscope output:
> > you're discovering the wonders of diffoscope :)
> >
> >>> --- maven-site-plugin-3.9.0.jar
> >>> +++ reference/maven-site-plugin-3.9.0.jar
> >>> ├── zipinfo {}
> >>> │ @@ -1,8 +1,8 @@
> > [...]
> >>> META-INF/MANIFEST.MF
> >>> │ @@ -1,10 +1,10 @@
> >>> │ Manifest-Version: 1.0
> >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> >>> │ Implementation-Title: Apache Maven Site Plugin
> >>> │ Implementation-Version: 3.9.0
> >>> │ +Build-Jdk-Spec: 1.7^M
> >>> │ Specification-Vendor: The Apache Software Foundation
> >>> │ -Specification-Title: Apache Maven Site Plugin^M
> >>> │ -Build-Jdk-Spec: 1.8^M
> >>> │ Created-By: Maven Jar Plugin 3.2.0
> >>> │ +Specification-Title: Apache Maven Site Plugin^M
> >>> │ Specification-Version: 3.9
> >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> >>
> >> I wonder where the CRs code from...this could be the default
> >> serialization format on every platform.
> > FYI I don't have such CRs in output on my Linux box
>
> This cannot be. See
> https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/share/classes/java/util/jar/Manifest.java
> and search for \r\n. Old Sun code uses *always* CRLF. Plase recheck on
> your side and run a hexdump on the Manifest file.
>
> >>> how did you find the experience? any improvement proposal?
> >>> and any idea on where to put this goal in the future?
> >>
> >> There is room for improvement when I quickly read the code. I will write
> >> separately on this.
> > sure, code can be improved: don't hesitate
> > but I was not asking yet for code improvement (I'm confident, it will 
> > happen)
> > but *experience* improvement
> >
> >> I'd leave as a plugin for now.
> > you mean a separate plugin? same "buildinfo" name as current? "save" goal
> > name?
>
> OK, let's talk about experience:
>
> * buildinfo may be changed to broader name, e.g.,
> maven-reproducibility-plugin. Explanain follows
> * 'save' does too much. It should save only and not compare. Save should
> either run at initialize or at build-resources phase, imho
> * Add a 'compare' goal, not phase bound. It performs the actual comparsion.
>
> Strictly speaking if the plugin is called buildinfo it should handle the
> buildinfo files only.
>
> >> At least in 3.7.x.
> > 3.7.x as Maven 3.7.x?
> > does that mean that you think it should be one day integrated into Maven 
> > core?
> > what's the rationale?
>
> Not really, but if this happens, not before 4.x. I don't have any
> rationale or entry point for this yet.
>
> Michael
>
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-05-26 Thread Konrad Windszus
As creating a new maven-artifact-plugin will probably take some time, maybe it 
would be possible to push a release build of 
https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin to Maven 
Central. Or is there already a rough schedule for coming up with the new 
maven-artifact-plugin?

Thanks,
Konrad

On 2020/03/08 20:04:56, "Robert Scholte"  wrote: 
> I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> That implies that the save goal should be renamed.
> A couple of goals of the maven-dependency-plugin are actually more 
> artifact-related are might be worth moving.
> 
> Robert
> 
> On 8-3-2020 13:44:07, Michael Osipov  wrote:
> Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
>  This is expected because I am on 1.8.0_242. I don't have Java 7
>  installed anymore on the server.
> >>>
> >>> for the discussion I wanted us to have, just being able to test and see
> >>> how we detect issues, this is perfect, isn't it?
> >>
> >> This is really nice. Here is the diffoscope output:
> > you're discovering the wonders of diffoscope :)
> >
> >>> --- maven-site-plugin-3.9.0.jar
> >>> +++ reference/maven-site-plugin-3.9.0.jar
> >>> ├── zipinfo {}
> >>> │ @@ -1,8 +1,8 @@
> > [...]
> >>> META-INF/MANIFEST.MF
> >>> │ @@ -1,10 +1,10 @@
> >>> │ Manifest-Version: 1.0
> >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> >>> │ Implementation-Title: Apache Maven Site Plugin
> >>> │ Implementation-Version: 3.9.0
> >>> │ +Build-Jdk-Spec: 1.7^M
> >>> │ Specification-Vendor: The Apache Software Foundation
> >>> │ -Specification-Title: Apache Maven Site Plugin^M
> >>> │ -Build-Jdk-Spec: 1.8^M
> >>> │ Created-By: Maven Jar Plugin 3.2.0
> >>> │ +Specification-Title: Apache Maven Site Plugin^M
> >>> │ Specification-Version: 3.9
> >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> >>
> >> I wonder where the CRs code from...this could be the default
> >> serialization format on every platform.
> > FYI I don't have such CRs in output on my Linux box
> 
> This cannot be. See
> https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/share/classes/java/util/jar/Manifest.java
> and search for \r\n. Old Sun code uses *always* CRLF. Plase recheck on
> your side and run a hexdump on the Manifest file.
> 
> >>> how did you find the experience? any improvement proposal?
> >>> and any idea on where to put this goal in the future?
> >>
> >> There is room for improvement when I quickly read the code. I will write
> >> separately on this.
> > sure, code can be improved: don't hesitate
> > but I was not asking yet for code improvement (I'm confident, it will 
> > happen)
> > but *experience* improvement
> >
> >> I'd leave as a plugin for now.
> > you mean a separate plugin? same "buildinfo" name as current? "save" goal
> > name?
> 
> OK, let's talk about experience:
> 
> * buildinfo may be changed to broader name, e.g.,
> maven-reproducibility-plugin. Explanain follows
> * 'save' does too much. It should save only and not compare. Save should
> either run at initialize or at build-resources phase, imho
> * Add a 'compare' goal, not phase bound. It performs the actual comparsion.
> 
> Strictly speaking if the plugin is called buildinfo it should handle the
> buildinfo files only.
> 
> >> At least in 3.7.x.
> > 3.7.x as Maven 3.7.x?
> > does that mean that you think it should be one day integrated into Maven 
> > core?
> > what's the rationale?
> 
> Not really, but if this happens, not before 4.x. I don't have any
> rationale or entry point for this yet.
> 
> Michael
> 
> 
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
> 
> 

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-10 Thread Hervé BOUTEMY
yes, I saw that the main artifact is reproducible, but there are more subtle 
cases with attached artifacts (-sources.jar and -source-release.zip)

If you build with run-its profile, you'll see that the pom.xml injected into 
these artifacts has less differences: there is still the current directory in 
it :(
It seems it is caused by additional maven-invoker-plugin configuration done in 
run-its profile, that seems to replace original pom.xml with something 
generated from invoker: I did not investigate more yet, any help from maven-
invoker-plugin experts appreciated

FYI I tested current maven-dependency-plugin release and found that it does 
not suffer from this issue.

Regards,

Hervé

Le mardi 10 mars 2020, 13:11:42 CET Michael Osipov a écrit :
> Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:
> > Hi,
> > 
> > Yesterday, I made a key step forward for Reproducible Builds with Maven: I
> > wrote code to easily check that your local build produces the same
> > binaries as the reference binaries published either to staging or to
> > Central repository.
> > 
> > For a live example, see the last paragraph of Maven Site Plugin vote that
> > just started [1].
> > 
> > Process to check build output is based on a single plugin goal, currently
> > named buildinfo:save [2]: 1. it creates a buildinfo file during build
> > recording output fingerprints, that will eventually in the future be
> > published to Central repository 2. it downloads reference artifacts
> > and/or reference buildinfo and checks that the output of the local build
> > is the same as the reference.
> > 
> > Now I want to discuss: is it clear? can you test and report, please?
> > 
> > If the feedback is positive, the next question will be: in which plugin
> > should we put this goal to make a release and add it to our parent pom
> > during release, so we publish reference buildinfo along our reference
> > binaries to Central repository.
> > 
> > Thanks for your feedback
> > 
> > Regards,
> > 
> > Hervé
> > 
> > [1]
> > https://lists.apache.org/thread.html/rd3af15d383ddceeb950cd90569e3dcdd6e5
> > a0f5d3cd653ec534b0609%40%3Cdev.maven.apache.org%3E
> > 
> > [2] https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin
> 
> I have now installed latest OpenJDK 7 from AdoptOpenJDK source.
> 
> > [INFO] --- maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) @
> > maven-site-plugin --- [INFO] Saved info on build to
> > /usr/home/mosipov/Projekte/maven-site-plugin/target/maven-site-plugin-3.9
> > .0.buildinfo [INFO] Checking against reference build from
> > https://repository.apache.org/content/repositories/maven-1554/...
> > [WARNING] Reference buildinfo file not found: it will be generated from
> > downloaded reference artifacts [INFO] Minimal buildinfo generated from
> > downloaded artifacts:
> > /usr/home/mosipov/Projekte/maven-site-plugin/target/reference/maven-site-
> > plugin-3.9.0.buildinfo [WARNING] size mismatch
> > maven-site-plugin-3.9.0-source-release.zip: diffoscope
> > target/reference/maven-site-plugin-3.9.0-source-release.zip
> > target/maven-site-plugin-3.9.0-source-release.zip [WARNING] size mismatch
> > maven-site-plugin-3.9.0-sources.jar: diffoscope
> > target/reference/maven-site-plugin-3.9.0-sources.jar
> > target/maven-site-plugin-3.9.0-sources.jar [WARNING] Reproducible Build
> > output summary: 1 files ok, 2 different, 0 missing [WARNING] diff
> > target/reference/maven-site-plugin-3.9.0.buildinfo
> > target/maven-site-plugin-3.9.0.buildinfo
> on
> 
> > Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
> > Maven home: /usr/local/share/java/maven
> > Java version: 1.7.0_251, vendor: Oracle Corporation, runtime:
> > /usr/local/openjdk7/jre Default locale: de_DE, platform encoding: UTF-8
> > OS name: "freebsd", version: "11.3-release-p6", arch: "i386", family:
> > "unix"
> and
> 
> > $ git branch
> > * (HEAD losgelöst bei maven-site-plugin-3.9.0)
> > 
> >> diffoscope target/reference/maven-site-plugin-3.9.0-source-release.zip
> >> target/maven-site-plugin-3.9.0-source-release.zip> 
> > There is a diff in maven-site-plugin-3.9.0/dependency-reduced-pom.xml
> > 
> >> diffoscope target/reference/maven-site-plugin-3.9.0-sources.jar
> >> target/maven-site-plugin-3.9.0-sources.jar> 
> > So is here diff in the pom.xml which is actually
> > dependency-reduced-pom.xml.
> > 
> > ├── META-INF/maven/org.apache.maven.plugins/maven-site-plugin/pom.xml
> > │ ├── META-INF/maven/org.apache.maven.plugins/maven-site-plugin/pom.xml
> > │ │ @@ -243,100 +243,40 @@
> > │ │
> > │ │  
> > │ │run-its
> > │ │
> > │ │  
> > │ │
> > │ │  maven-invoker-plugin
> > │ │ -3.2.1
> > │ │ -
> > │ │ -  
> > │ │ -integration-test
> > │ │ -
> > │ │ -  install
> > │ │ -  integration-test
> > │ │ -  verify
> > │ │ -
> > │ │ -
> > │ │ -  

Re: [DISCUSS] checking reproducible builds

2020-03-10 Thread Michael Osipov

Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with Maven: I 
wrote code to easily check that your local build produces the same binaries as 
the reference binaries published either to staging or to Central repository.

For a live example, see the last paragraph of Maven Site Plugin vote that just 
started [1].

Process to check build output is based on a single plugin goal, currently named 
buildinfo:save [2]:
1. it creates a buildinfo file during build recording output fingerprints, that 
will eventually in the future be published to Central repository
2. it downloads reference artifacts and/or reference buildinfo and checks that 
the output of the local build is the same as the reference.

Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which plugin should 
we put this goal to make a release and add it to our parent pom during release, 
so we publish reference buildinfo along our reference binaries to Central 
repository.

Thanks for your feedback

Regards,

Hervé

[1] 
https://lists.apache.org/thread.html/rd3af15d383ddceeb950cd90569e3dcdd6e5a0f5d3cd653ec534b0609%40%3Cdev.maven.apache.org%3E

[2] https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin


I have now installed latest OpenJDK 7 from AdoptOpenJDK source.


[INFO] --- maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) @ 
maven-site-plugin ---
[INFO] Saved info on build to 
/usr/home/mosipov/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.buildinfo
[INFO] Checking against reference build from 
https://repository.apache.org/content/repositories/maven-1554/...
[WARNING] Reference buildinfo file not found: it will be generated from 
downloaded reference artifacts
[INFO] Minimal buildinfo generated from downloaded artifacts: 
/usr/home/mosipov/Projekte/maven-site-plugin/target/reference/maven-site-plugin-3.9.0.buildinfo
[WARNING] size mismatch maven-site-plugin-3.9.0-source-release.zip: diffoscope 
target/reference/maven-site-plugin-3.9.0-source-release.zip 
target/maven-site-plugin-3.9.0-source-release.zip
[WARNING] size mismatch maven-site-plugin-3.9.0-sources.jar: diffoscope 
target/reference/maven-site-plugin-3.9.0-sources.jar 
target/maven-site-plugin-3.9.0-sources.jar
[WARNING] Reproducible Build output summary: 1 files ok, 2 different, 0 missing
[WARNING] diff target/reference/maven-site-plugin-3.9.0.buildinfo 
target/maven-site-plugin-3.9.0.buildinfo


on

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/share/java/maven
Java version: 1.7.0_251, vendor: Oracle Corporation, runtime: 
/usr/local/openjdk7/jre
Default locale: de_DE, platform encoding: UTF-8
OS name: "freebsd", version: "11.3-release-p6", arch: "i386", family: "unix"


and


$ git branch
* (HEAD losgelöst bei maven-site-plugin-3.9.0)



diffoscope target/reference/maven-site-plugin-3.9.0-source-release.zip 
target/maven-site-plugin-3.9.0-source-release.zip


There is a diff in maven-site-plugin-3.9.0/dependency-reduced-pom.xml


diffoscope target/reference/maven-site-plugin-3.9.0-sources.jar 
target/maven-site-plugin-3.9.0-sources.jar


So is here diff in the pom.xml which is actually dependency-reduced-pom.xml.



├── META-INF/maven/org.apache.maven.plugins/maven-site-plugin/pom.xml
│ ├── META-INF/maven/org.apache.maven.plugins/maven-site-plugin/pom.xml
│ │ @@ -243,100 +243,40 @@
│ │
│ │  
│ │run-its
│ │
│ │  
│ │
│ │  maven-invoker-plugin
│ │ -3.2.1
│ │ -
│ │ -  
│ │ -integration-test
│ │ -
│ │ -  install
│ │ -  integration-test
│ │ -  verify
│ │ -
│ │ -
│ │ -  src/it/projects
│ │ -  src/it/mrm/settings.xml
│ │ -  
│ │ -
${mrm.repository.url}
│ │ -  
│ │ -  
│ │ -clean
│ │ -
org.apache.maven.plugins:maven-site-plugin:3.9.0:site
│ │ -  
│ │ -  
│ │ -1.7
│ │ -1.7
│ │ -
TLSv1,TLSv1.1,TLSv1.2
│ │ -  
│ │ -  true
│ │ -  
/home/herve/projets/maven/sources/plugins/core/maven-site-plugin/target/checkout/target/it
│ │ -  setup
│ │ -  verify
│ │ -  
/home/herve/projets/maven/sources/plugins/core/maven-site-plugin/target/checkout/target/local-repo
│ │ -  
│ │ -*/pom.xml
│ │ -  
│ │ -  false
│ │ -  
│ │ -
true
│ │ -  
│ │ -
│ │ -  
│ │ -
│ │  
│ │src/it/projects
│ │  

Re: [DISCUSS] checking reproducible builds

2020-03-10 Thread herve . boutemy
please "git pull": you're one commit behind HEAD
https://github.com/apache/maven-studies/commits/maven-buildinfo-plugin

- Mail original -
De: "Karl Heinz Marbaise" 
À: "Maven Developers List" , "Hervé BOUTEMY" 

Envoyé: Samedi 7 Mars 2020 12:12:08
Objet: Re: [DISCUSS] checking reproducible builds

Hi Hervé,

I've tried to check my release via the suggested recipe...


Downloaded the maven-studies repo and build the following commit:
90b426758363123af6fcc9aa7190b837c0551359 (mvn clean install)

Downloaded the source package

curl -O
https://repository.apache.org/content/repositories/maven-1555/org/apache/maven/plugins/maven-dependency-plugin/3.1.2/maven-dependency-plugin-3.1.2-source-release.zip

unzip maven-dependency-plugin-3.1.2-source-release.zip

cd maven-dependency-plugin-3.1.2 and tried to run the following:

mvn -Papache-release verify buildinfo:save -Dgpg.skip
-Dreference.repo=https://repository.apache.org/content/repositories/maven-1555/

and got the following:


[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-buildinfo-plugin:1.0-SNAPSHOT:save
(default-cli) on project maven-dependency-plugin: Error resolving
reference artifact
org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2: Could
not transfer artifact
org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2 from/to
reference
(https://repository.apache.org/content/repositories/maven-1555/): Cannot
access https://repository.apache.org/content/repositories/maven-1555/
with type  using the available connector factories:
BasicRepositoryConnectorFactory: Cannot access
https://repository.apache.org/content/repositories/maven-1555/ with type
  using the available layout factories: Maven2RepositoryLayoutFactory:
Unsupported repository layout -> [Help 1]
[ERROR]



Kind regards
Karl Heinz Marbaise

On 07.03.20 11:36, Hervé BOUTEMY wrote:
> Hi,
>
> Yesterday, I made a key step forward for Reproducible Builds with Maven: I 
> wrote code to easily check that your local build produces the same binaries 
> as the reference binaries published either to staging or to Central 
> repository.
>
> For a live example, see the last paragraph of Maven Site Plugin vote that 
> just started [1].
>
> Process to check build output is based on a single plugin goal, currently 
> named buildinfo:save [2]:
> 1. it creates a buildinfo file during build recording output fingerprints, 
> that will eventually in the future be published to Central repository
> 2. it downloads reference artifacts and/or reference buildinfo and checks 
> that the output of the local build is the same as the reference.
>
> Now I want to discuss: is it clear? can you test and report, please?
>
> If the feedback is positive, the next question will be: in which plugin 
> should we put this goal to make a release and add it to our parent pom during 
> release, so we publish reference buildinfo along our reference binaries to 
> Central repository.
>
> Thanks for your feedback
>
> Regards,
>
> Hervé
>
> [1] 
> https://lists.apache.org/thread.html/rd3af15d383ddceeb950cd90569e3dcdd6e5a0f5d3cd653ec534b0609%40%3Cdev.maven.apache.org%3E
>
> [2] https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin
>

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-09 Thread Robert Scholte
unpack and get (without transitive dependencies) are candidates to me. 
Having extra goals makes the plugin more interesting.

Robert
On 8-3-2020 23:25:11, Hervé BOUTEMY  wrote:
clearly, save goal is not a good choice: buildinfo would be better

I know buildinfo is not a usual term, but it's widely used in Reproducible
Builds [1] & [2], then it would be nice us Maven not to reinvent a wheel that
has already been invented

on separating checking, I really don't see how this improves experience

I love this idea of maven-artifact-plugin, but I don't see which goals od
maven-dependency-plugin could go in:
https://maven.apache.org/plugins/maven-dependency-plugin/

Regards,

Hervé

[1] https://reproducible-builds.org/docs/jvm/

[2] https://wiki.debian.org/ReproducibleBuilds/BuildinfoFiles

Le dimanche 8 mars 2020, 21:04:56 CET Robert Scholte a écrit :
> I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> That implies that the save goal should be renamed.
> A couple of goals of the maven-dependency-plugin are actually more
> artifact-related are might be worth moving.
>
> Robert
>
> On 8-3-2020 13:44:07, Michael Osipov wrote:
>
> Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
>  This is expected because I am on 1.8.0_242. I don't have Java 7
>  installed anymore on the server.
> >>>
> >>> for the discussion I wanted us to have, just being able to test and see
> >>> how we detect issues, this is perfect, isn't it?
> >>
> >> This is really nice. Here is the diffoscope output:
> > you're discovering the wonders of diffoscope :)
> >
> >>> --- maven-site-plugin-3.9.0.jar
> >>> +++ reference/maven-site-plugin-3.9.0.jar
> >>> ├── zipinfo {}
> >>> │ @@ -1,8 +1,8 @@
> >
> > [...]
> >
> >>> META-INF/MANIFEST.MF
> >>> │ @@ -1,10 +1,10 @@
> >>> │ Manifest-Version: 1.0
> >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> >>> │ Implementation-Title: Apache Maven Site Plugin
> >>> │ Implementation-Version: 3.9.0
> >>> │ +Build-Jdk-Spec: 1.7^M
> >>> │ Specification-Vendor: The Apache Software Foundation
> >>> │ -Specification-Title: Apache Maven Site Plugin^M
> >>> │ -Build-Jdk-Spec: 1.8^M
> >>> │ Created-By: Maven Jar Plugin 3.2.0
> >>> │ +Specification-Title: Apache Maven Site Plugin^M
> >>> │ Specification-Version: 3.9
> >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> >>
> >> I wonder where the CRs code from...this could be the default
> >> serialization format on every platform.
> >
> > FYI I don't have such CRs in output on my Linux box
>
> This cannot be. See
> https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/sha
> re/classes/java/util/jar/Manifest.java and search for \r\n. Old Sun code
> uses *always* CRLF. Plase recheck on your side and run a hexdump on the
> Manifest file.
>
> >>> how did you find the experience? any improvement proposal?
> >>> and any idea on where to put this goal in the future?
> >>
> >> There is room for improvement when I quickly read the code. I will write
> >> separately on this.
> >
> > sure, code can be improved: don't hesitate
> > but I was not asking yet for code improvement (I'm confident, it will
> > happen) but *experience* improvement
> >
> >> I'd leave as a plugin for now.
> >
> > you mean a separate plugin? same "buildinfo" name as current? "save" goal
> > name?
>
> OK, let's talk about experience:
>
> * buildinfo may be changed to broader name, e.g.,
> maven-reproducibility-plugin. Explanain follows
> * 'save' does too much. It should save only and not compare. Save should
> either run at initialize or at build-resources phase, imho
> * Add a 'compare' goal, not phase bound. It performs the actual comparsion.
>
> Strictly speaking if the plugin is called buildinfo it should handle the
> buildinfo files only.
>
> >> At least in 3.7.x.
> >
> > 3.7.x as Maven 3.7.x?
> > does that mean that you think it should be one day integrated into Maven
> > core? what's the rationale?
>
> Not really, but if this happens, not before 4.x. I don't have any
> rationale or entry point for this yet.
>
> Michael
>
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org





-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-09 Thread Romain Manni-Bucau
Hmm, thinking out loud but cant a reproducible build check just build the
project twice staging locally first artifacts and comparing second pass
outputs to the staged ones?

Le dim. 8 mars 2020 à 23:25, Hervé BOUTEMY  a écrit :

> clearly, save goal is not a good choice: buildinfo would be better
>
> I know buildinfo is not a usual term, but it's widely used in Reproducible
> Builds [1] & [2], then it would be nice us Maven not to reinvent a wheel
> that
> has already been invented
>
> on separating checking, I really don't see how this improves experience
>
> I love this idea of maven-artifact-plugin, but I don't see which goals od
> maven-dependency-plugin could go in:
> https://maven.apache.org/plugins/maven-dependency-plugin/
>
> Regards,
>
> Hervé
>
> [1] https://reproducible-builds.org/docs/jvm/
>
> [2] https://wiki.debian.org/ReproducibleBuilds/BuildinfoFiles
>
> Le dimanche 8 mars 2020, 21:04:56 CET Robert Scholte a écrit :
> > I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> > That implies that the save goal should be renamed.
> > A couple of goals of the maven-dependency-plugin are actually more
> > artifact-related are might be worth moving.
> >
> > Robert
> >
> > On 8-3-2020 13:44:07, Michael Osipov  wrote:
> >
> > Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> > >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> > >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
> >  This is expected because I am on 1.8.0_242. I don't have Java 7
> >  installed anymore on the server.
> > >>>
> > >>> for the discussion I wanted us to have, just being able to test and
> see
> > >>> how we detect issues, this is perfect, isn't it?
> > >>
> > >> This is really nice. Here is the diffoscope output:
> > > you're discovering the wonders of diffoscope :)
> > >
> > >>> --- maven-site-plugin-3.9.0.jar
> > >>> +++ reference/maven-site-plugin-3.9.0.jar
> > >>> ├── zipinfo {}
> > >>> │ @@ -1,8 +1,8 @@
> > >
> > > [...]
> > >
> > >>> META-INF/MANIFEST.MF
> > >>> │ @@ -1,10 +1,10 @@
> > >>> │ Manifest-Version: 1.0
> > >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> > >>> │ Implementation-Title: Apache Maven Site Plugin
> > >>> │ Implementation-Version: 3.9.0
> > >>> │ +Build-Jdk-Spec: 1.7^M
> > >>> │ Specification-Vendor: The Apache Software Foundation
> > >>> │ -Specification-Title: Apache Maven Site Plugin^M
> > >>> │ -Build-Jdk-Spec: 1.8^M
> > >>> │ Created-By: Maven Jar Plugin 3.2.0
> > >>> │ +Specification-Title: Apache Maven Site Plugin^M
> > >>> │ Specification-Version: 3.9
> > >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> > >>
> > >> I wonder where the CRs code from...this could be the default
> > >> serialization format on every platform.
> > >
> > > FYI I don't have such CRs in output on my Linux box
> >
> > This cannot be. See
> >
> https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/sha
> > re/classes/java/util/jar/Manifest.java and search for \r\n. Old Sun code
> > uses *always* CRLF. Plase recheck on your side and run a hexdump on the
> > Manifest file.
> >
> > >>> how did you find the experience? any improvement proposal?
> > >>> and any idea on where to put this goal in the future?
> > >>
> > >> There is room for improvement when I quickly read the code. I will
> write
> > >> separately on this.
> > >
> > > sure, code can be improved: don't hesitate
> > > but I was not asking yet for code improvement (I'm confident, it will
> > > happen) but *experience* improvement
> > >
> > >> I'd leave as a plugin for now.
> > >
> > > you mean a separate plugin? same "buildinfo" name as current? "save"
> goal
> > > name?
> >
> > OK, let's talk about experience:
> >
> > * buildinfo may be changed to broader name, e.g.,
> > maven-reproducibility-plugin. Explanain follows
> > * 'save' does too much. It should save only and not compare. Save should
> > either run at initialize or at build-resources phase, imho
> > * Add a 'compare' goal, not phase bound. It performs the actual
> comparsion.
> >
> > Strictly speaking if the plugin is called buildinfo it should handle the
> > buildinfo files only.
> >
> > >> At least in 3.7.x.
> > >
> > > 3.7.x as Maven 3.7.x?
> > > does that mean that you think it should be one day integrated into
> Maven
> > > core? what's the rationale?
> >
> > Not really, but if this happens, not before 4.x. I don't have any
> > rationale or entry point for this yet.
> >
> > Michael
> >
> >
> > -
> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > For additional commands, e-mail: dev-h...@maven.apache.org
>
>
>
>
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>


Re: [DISCUSS] checking reproducible builds

2020-03-08 Thread Hervé BOUTEMY
clearly, save goal is not a good choice: buildinfo would be better

I know buildinfo is not a usual term, but it's widely used in Reproducible 
Builds [1] & [2], then it would be nice us Maven not to reinvent a wheel that 
has already been invented

on separating checking, I really don't see how this improves experience

I love this idea of maven-artifact-plugin, but I don't see which goals od 
maven-dependency-plugin could go in:
https://maven.apache.org/plugins/maven-dependency-plugin/

Regards,

Hervé

[1] https://reproducible-builds.org/docs/jvm/

[2] https://wiki.debian.org/ReproducibleBuilds/BuildinfoFiles

Le dimanche 8 mars 2020, 21:04:56 CET Robert Scholte a écrit :
> I'm thinking of maven-artifact-plugin, having goals related to artifacts.
> That implies that the save goal should be renamed.
> A couple of goals of the maven-dependency-plugin are actually more
> artifact-related are might be worth moving.
> 
> Robert
> 
> On 8-3-2020 13:44:07, Michael Osipov  wrote:
> 
> Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
>  This is expected because I am on 1.8.0_242. I don't have Java 7
>  installed anymore on the server.
> >>> 
> >>> for the discussion I wanted us to have, just being able to test and see
> >>> how we detect issues, this is perfect, isn't it?
> >> 
> >> This is really nice. Here is the diffoscope output:
> > you're discovering the wonders of diffoscope :)
> > 
> >>> --- maven-site-plugin-3.9.0.jar
> >>> +++ reference/maven-site-plugin-3.9.0.jar
> >>> ├── zipinfo {}
> >>> │ @@ -1,8 +1,8 @@
> > 
> > [...]
> > 
> >>> META-INF/MANIFEST.MF
> >>> │ @@ -1,10 +1,10 @@
> >>> │ Manifest-Version: 1.0
> >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> >>> │ Implementation-Title: Apache Maven Site Plugin
> >>> │ Implementation-Version: 3.9.0
> >>> │ +Build-Jdk-Spec: 1.7^M
> >>> │ Specification-Vendor: The Apache Software Foundation
> >>> │ -Specification-Title: Apache Maven Site Plugin^M
> >>> │ -Build-Jdk-Spec: 1.8^M
> >>> │ Created-By: Maven Jar Plugin 3.2.0
> >>> │ +Specification-Title: Apache Maven Site Plugin^M
> >>> │ Specification-Version: 3.9
> >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> >> 
> >> I wonder where the CRs code from...this could be the default
> >> serialization format on every platform.
> > 
> > FYI I don't have such CRs in output on my Linux box
> 
> This cannot be. See
> https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/sha
> re/classes/java/util/jar/Manifest.java and search for \r\n. Old Sun code
> uses *always* CRLF. Plase recheck on your side and run a hexdump on the
> Manifest file.
> 
> >>> how did you find the experience? any improvement proposal?
> >>> and any idea on where to put this goal in the future?
> >> 
> >> There is room for improvement when I quickly read the code. I will write
> >> separately on this.
> > 
> > sure, code can be improved: don't hesitate
> > but I was not asking yet for code improvement (I'm confident, it will
> > happen) but *experience* improvement
> > 
> >> I'd leave as a plugin for now.
> > 
> > you mean a separate plugin? same "buildinfo" name as current? "save" goal
> > name?
> 
> OK, let's talk about experience:
> 
> * buildinfo may be changed to broader name, e.g.,
> maven-reproducibility-plugin. Explanain follows
> * 'save' does too much. It should save only and not compare. Save should
> either run at initialize or at build-resources phase, imho
> * Add a 'compare' goal, not phase bound. It performs the actual comparsion.
> 
> Strictly speaking if the plugin is called buildinfo it should handle the
> buildinfo files only.
> 
> >> At least in 3.7.x.
> > 
> > 3.7.x as Maven 3.7.x?
> > does that mean that you think it should be one day integrated into Maven
> > core? what's the rationale?
> 
> Not really, but if this happens, not before 4.x. I don't have any
> rationale or entry point for this yet.
> 
> Michael
> 
> 
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org





-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-08 Thread Robert Scholte
I'm thinking of maven-artifact-plugin, having goals related to artifacts.
That implies that the save goal should be renamed.
A couple of goals of the maven-dependency-plugin are actually more 
artifact-related are might be worth moving.

Robert

On 8-3-2020 13:44:07, Michael Osipov  wrote:
Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
>> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
>>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
 This is expected because I am on 1.8.0_242. I don't have Java 7
 installed anymore on the server.
>>>
>>> for the discussion I wanted us to have, just being able to test and see
>>> how we detect issues, this is perfect, isn't it?
>>
>> This is really nice. Here is the diffoscope output:
> you're discovering the wonders of diffoscope :)
>
>>> --- maven-site-plugin-3.9.0.jar
>>> +++ reference/maven-site-plugin-3.9.0.jar
>>> ├── zipinfo {}
>>> │ @@ -1,8 +1,8 @@
> [...]
>>> META-INF/MANIFEST.MF
>>> │ @@ -1,10 +1,10 @@
>>> │ Manifest-Version: 1.0
>>> │ +Implementation-Vendor: The Apache Software Foundation^M
>>> │ Implementation-Title: Apache Maven Site Plugin
>>> │ Implementation-Version: 3.9.0
>>> │ +Build-Jdk-Spec: 1.7^M
>>> │ Specification-Vendor: The Apache Software Foundation
>>> │ -Specification-Title: Apache Maven Site Plugin^M
>>> │ -Build-Jdk-Spec: 1.8^M
>>> │ Created-By: Maven Jar Plugin 3.2.0
>>> │ +Specification-Title: Apache Maven Site Plugin^M
>>> │ Specification-Version: 3.9
>>> │ -Implementation-Vendor: The Apache Software Foundation^M
>>
>> I wonder where the CRs code from...this could be the default
>> serialization format on every platform.
> FYI I don't have such CRs in output on my Linux box

This cannot be. See
https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/share/classes/java/util/jar/Manifest.java
and search for \r\n. Old Sun code uses *always* CRLF. Plase recheck on
your side and run a hexdump on the Manifest file.

>>> how did you find the experience? any improvement proposal?
>>> and any idea on where to put this goal in the future?
>>
>> There is room for improvement when I quickly read the code. I will write
>> separately on this.
> sure, code can be improved: don't hesitate
> but I was not asking yet for code improvement (I'm confident, it will happen)
> but *experience* improvement
>
>> I'd leave as a plugin for now.
> you mean a separate plugin? same "buildinfo" name as current? "save" goal
> name?

OK, let's talk about experience:

* buildinfo may be changed to broader name, e.g.,
maven-reproducibility-plugin. Explanain follows
* 'save' does too much. It should save only and not compare. Save should
either run at initialize or at build-resources phase, imho
* Add a 'compare' goal, not phase bound. It performs the actual comparsion.

Strictly speaking if the plugin is called buildinfo it should handle the
buildinfo files only.

>> At least in 3.7.x.
> 3.7.x as Maven 3.7.x?
> does that mean that you think it should be one day integrated into Maven core?
> what's the rationale?

Not really, but if this happens, not before 4.x. I don't have any
rationale or entry point for this yet.

Michael


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-08 Thread Enrico Olivelli
Il Dom 8 Mar 2020, 13:44 Michael Osipov  ha scritto:

> Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:
> > Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> >> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> >>> Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
>  This is expected because I am on 1.8.0_242. I don't have Java 7
>  installed anymore on the server.
> >>>
> >>> for the discussion I wanted us to have, just being able to test and see
> >>> how we detect issues, this is perfect, isn't it?
> >>
> >> This is really nice. Here is the diffoscope output:
> > you're discovering the wonders of diffoscope :)
> >
> >>> --- maven-site-plugin-3.9.0.jar
> >>> +++ reference/maven-site-plugin-3.9.0.jar
> >>> ├── zipinfo {}
> >>> │ @@ -1,8 +1,8 @@
> > [...]
> >>> META-INF/MANIFEST.MF
> >>> │ @@ -1,10 +1,10 @@
> >>> │  Manifest-Version: 1.0
> >>> │ +Implementation-Vendor: The Apache Software Foundation^M
> >>> │  Implementation-Title: Apache Maven Site Plugin
> >>> │  Implementation-Version: 3.9.0
> >>> │ +Build-Jdk-Spec: 1.7^M
> >>> │  Specification-Vendor: The Apache Software Foundation
> >>> │ -Specification-Title: Apache Maven Site Plugin^M
> >>> │ -Build-Jdk-Spec: 1.8^M
> >>> │  Created-By: Maven Jar Plugin 3.2.0
> >>> │ +Specification-Title: Apache Maven Site Plugin^M
> >>> │  Specification-Version: 3.9
> >>> │ -Implementation-Vendor: The Apache Software Foundation^M
> >>
> >> I wonder where the CRs code from...this could be the default
> >> serialization format on every platform.
> > FYI I don't have such CRs in output on my Linux box
>
> This cannot be. See
>
> https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/share/classes/java/util/jar/Manifest.java
> and search for \r\n. Old Sun code uses *always* CRLF. Plase recheck on
> your side and run a hexdump on the Manifest file.
>
> >>> how did you find the experience? any improvement proposal?
> >>> and any idea on where to put this goal in the future?
> >>
> >> There is room for improvement when I quickly read the code. I will write
> >> separately on this.
> > sure, code can be improved: don't hesitate
> > but I was not asking yet for code improvement (I'm confident, it will
> happen)
> > but *experience* improvement
> >
> >> I'd leave as a plugin for now.
> > you mean a separate plugin? same "buildinfo" name as current? "save" goal
> > name?
>
> OK, let's talk about experience:
>
> * buildinfo may be changed to broader name, e.g.,
> maven-reproducibility-plugin.


+1

> Explanain follows
> * 'save' does too much. It should save only and not compare. Save should
> either run at initialize or at build-resources phase, imho
> * Add a 'compare' goal, not phase bound. It performs the actual comparsion.
>

+1 for splitting this way

Enrico


> Strictly speaking if the plugin is called buildinfo it should handle the
> buildinfo files only.
>
> >> At least in 3.7.x.
> > 3.7.x as Maven 3.7.x?
> > does that mean that you think it should be one day integrated into Maven
> core?
> > what's the rationale?
>
> Not really, but if this happens, not before 4.x. I don't have any
> rationale or entry point for this yet.
>
> Michael
>
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>


Re: [DISCUSS] checking reproducible builds

2020-03-08 Thread Michael Osipov

Am 2020-03-08 um 12:48 schrieb Hervé BOUTEMY:

Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :

Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:

Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :

This is expected because I am on 1.8.0_242. I don't have Java 7
installed anymore on the server.


for the discussion I wanted us to have, just being able to test and see
how we detect issues, this is perfect, isn't it?


This is really nice. Here is the diffoscope output:

you're discovering the wonders of diffoscope :)


--- maven-site-plugin-3.9.0.jar
+++ reference/maven-site-plugin-3.9.0.jar
├── zipinfo {}
│ @@ -1,8 +1,8 @@

[...]

META-INF/MANIFEST.MF
│ @@ -1,10 +1,10 @@
│  Manifest-Version: 1.0
│ +Implementation-Vendor: The Apache Software Foundation^M
│  Implementation-Title: Apache Maven Site Plugin
│  Implementation-Version: 3.9.0
│ +Build-Jdk-Spec: 1.7^M
│  Specification-Vendor: The Apache Software Foundation
│ -Specification-Title: Apache Maven Site Plugin^M
│ -Build-Jdk-Spec: 1.8^M
│  Created-By: Maven Jar Plugin 3.2.0
│ +Specification-Title: Apache Maven Site Plugin^M
│  Specification-Version: 3.9
│ -Implementation-Vendor: The Apache Software Foundation^M


I wonder where the CRs code from...this could be the default
serialization format on every platform.

FYI I don't have such CRs in output on my Linux box


This cannot be. See 
https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/share/classes/java/util/jar/Manifest.java 
and search for \r\n. Old Sun code uses *always* CRLF. Plase recheck on 
your side and run a hexdump on the Manifest file.



how did you find the experience? any improvement proposal?
and any idea on where to put this goal in the future?


There is room for improvement when I quickly read the code. I will write
separately on this.

sure, code can be improved: don't hesitate
but I was not asking yet for code improvement (I'm confident, it will happen)
but *experience* improvement


I'd leave as a plugin for now.

you mean a separate plugin? same "buildinfo" name as current? "save" goal
name?


OK, let's talk about experience:

* buildinfo may be changed to broader name, e.g., 
maven-reproducibility-plugin. Explanain follows
* 'save' does too much. It should save only and not compare. Save should 
either run at initialize or at build-resources phase, imho

* Add a 'compare' goal, not phase bound. It performs the actual comparsion.

Strictly speaking if the plugin is called buildinfo it should handle the 
buildinfo files only.



At least in 3.7.x.

3.7.x as Maven 3.7.x?
does that mean that you think it should be one day integrated into Maven core?
what's the rationale?


Not really, but if this happens, not before 4.x. I don't have any 
rationale or entry point for this yet.


Michael


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-08 Thread Hervé BOUTEMY
Le dimanche 8 mars 2020, 00:31:07 CET Michael Osipov a écrit :
> Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:
> > Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
> >> This is expected because I am on 1.8.0_242. I don't have Java 7
> >> installed anymore on the server.
> > 
> > for the discussion I wanted us to have, just being able to test and see
> > how we detect issues, this is perfect, isn't it?
> 
> This is really nice. Here is the diffoscope output:
you're discovering the wonders of diffoscope :)

> > --- maven-site-plugin-3.9.0.jar
> > +++ reference/maven-site-plugin-3.9.0.jar
> > ├── zipinfo {}
> > │ @@ -1,8 +1,8 @@
[...]
> > META-INF/MANIFEST.MF
> > │ @@ -1,10 +1,10 @@
> > │  Manifest-Version: 1.0
> > │ +Implementation-Vendor: The Apache Software Foundation^M
> > │  Implementation-Title: Apache Maven Site Plugin
> > │  Implementation-Version: 3.9.0
> > │ +Build-Jdk-Spec: 1.7^M
> > │  Specification-Vendor: The Apache Software Foundation
> > │ -Specification-Title: Apache Maven Site Plugin^M
> > │ -Build-Jdk-Spec: 1.8^M
> > │  Created-By: Maven Jar Plugin 3.2.0
> > │ +Specification-Title: Apache Maven Site Plugin^M
> > │  Specification-Version: 3.9
> > │ -Implementation-Vendor: The Apache Software Foundation^M
> 
> I wonder where the CRs code from...this could be the default
> serialization format on every platform.
FYI I don't have such CRs in output on my Linux box

> 
> > how did you find the experience? any improvement proposal?
> > and any idea on where to put this goal in the future?
> 
> There is room for improvement when I quickly read the code. I will write
> separately on this.
sure, code can be improved: don't hesitate
but I was not asking yet for code improvement (I'm confident, it will happen) 
but *experience* improvement

> I'd leave as a plugin for now.
you mean a separate plugin? same "buildinfo" name as current? "save" goal 
name?

> At least in 3.7.x.
3.7.x as Maven 3.7.x?
does that mean that you think it should be one day integrated into Maven core?
what's the rationale?

Regards,

Hervé

> 
> M





-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Elliotte Rusty Harold
On Sat, Mar 7, 2020 at 11:39 AM Michael Osipov  wrote:
>

> As note, reproducibility after some time is not always possible if
> nessary compilers/tools aren't available anymore -- as you can see.
>

That's an important point. Some organizations archive their entire
build chain including compilers and other tools in the source
repository.

I haven't seen it done, but I imagine you could go further using
Docker images as the source of the reproducible build.


-- 
Elliotte Rusty Harold
elh...@ibiblio.org

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Diff on OpenJDK 11:

├── META-INF/MANIFEST.MF
│ @@ -1,10 +1,10 @@
│  Manifest-Version: 1.0
│ +Implementation-Vendor: The Apache Software Foundation^M
│ +Implementation-Title: Apache Maven Site Plugin^M
│ +Implementation-Version: 3.9.0^M
│ +Build-Jdk-Spec: 1.7^M
│ +Specification-Vendor: The Apache Software Foundation^M
│  Created-By: Maven Jar Plugin 3.2.0
│ -Build-Jdk-Spec: 11^M
│  Specification-Title: Apache Maven Site Plugin
│  Specification-Version: 3.9
│ -Specification-Vendor: The Apache Software Foundation^M
│ -Implementation-Title: Apache Maven Site Plugin^M
│ -Implementation-Version: 3.9.0^M
│ -Implementation-Vendor: The Apache Software Foundation^M


It seems like the hash implementation differs from version to version...


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Am 2020-03-07 um 19:04 schrieb Hervé BOUTEMY:

Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :

This is expected because I am on 1.8.0_242. I don't have Java 7
installed anymore on the server.

for the discussion I wanted us to have, just being able to test and see how we
detect issues, this is perfect, isn't it?


This is really nice. Here is the diffoscope output:


--- maven-site-plugin-3.9.0.jar
+++ reference/maven-site-plugin-3.9.0.jar
├── zipinfo {}
│ @@ -1,8 +1,8 @@
│ -Zip file size: 136174 bytes, number of entries: 84
│ +Zip file size: 136331 bytes, number of entries: 84
│  -rw 2.0 fat0 bX defN 20-Mar-06 20:49 META-INF/
│  -rw 2.0 fat  345 bl defN 20-Mar-06 20:49 META-INF/MANIFEST.MF
│  -rw 2.0 fat28157 bl defN 20-Mar-06 20:49 META-INF/DEPENDENCIES
│  -rw 2.0 fat11358 bl defN 20-Mar-06 20:49 META-INF/LICENSE
│  -rw 2.0 fat  181 bl defN 20-Mar-06 20:49 META-INF/NOTICE
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 META-INF/maven/
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 
META-INF/maven/org.apache.maven.plugins/
│ @@ -10,44 +10,44 @@
│  -rw 2.0 fat56112 bl defN 20-Mar-06 20:49 
META-INF/maven/org.apache.maven.plugins/maven-site-plugin/plugin-help.xml
│  -rw 2.0 fat   103450 bl defN 20-Mar-06 20:49 
META-INF/maven/plugin.xml
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 org/
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 org/apache/
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 org/apache/maven/
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/
│ --rw 2.0 fat 2983 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/AbstractSiteMojo.class
│ +-rw 2.0 fat 3033 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/AbstractSiteMojo.class
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/
│ --rw 2.0 fat 1472 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/AbstractDeployMojo$URIEncoder.class
│ --rw 2.0 fat23211 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/AbstractDeployMojo.class
│ +-rw 2.0 fat 1521 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/AbstractDeployMojo$URIEncoder.class
│ +-rw 2.0 fat23237 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/AbstractDeployMojo.class
│  -rw 2.0 fat 1935 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/AbstractStagingMojo.class
│ --rw 2.0 fat11174 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/HelpMojo.class
│ +-rw 2.0 fat11281 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/HelpMojo.class
│  -rw 2.0 fat 1251 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/SiteDeployMojo.class
│ --rw 2.0 fat 5630 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/SiteStageDeployMojo.class
│ --rw 2.0 fat 3931 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/SiteStageMojo.class
│ +-rw 2.0 fat 5622 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/SiteStageDeployMojo.class
│ +-rw 2.0 fat 3961 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/SiteStageMojo.class
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/wagon/
│ --rw 2.0 fat 4927 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/wagon/BugFixedRepository.class
│ --rw 2.0 fat 5604 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/wagon/PathUtils.class
│ +-rw 2.0 fat 4884 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/wagon/BugFixedRepository.class
│ +-rw 2.0 fat 5564 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/deploy/wagon/PathUtils.class
│  -rw 2.0 fat0 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/
│  -rw 2.0 fat 4039 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/AbstractSiteDescriptorMojo.class
│ --rw 2.0 fat 5734 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/EffectiveSiteMojo.class
│ --rw 2.0 fat 4621 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/SiteDescriptorArtifactMetadata.class
│ --rw 2.0 fat 4237 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/SiteDescriptorAttachMojo.class
│ +-rw 2.0 fat 5780 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/EffectiveSiteMojo.class
│ +-rw 2.0 fat 4666 bl defN 20-Mar-06 20:49 
org/apache/maven/plugins/site/descriptor/SiteDescriptorArtifactMetadata.class
│ +-rw 2.0 fat 4267 bl defN 20-Mar-06 20:49 

Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Hervé BOUTEMY
Le samedi 7 mars 2020, 17:39:20 CET Michael Osipov a écrit :
> This is expected because I am on 1.8.0_242. I don't have Java 7
> installed anymore on the server.
for the discussion I wanted us to have, just being able to test and see how we 
detect issues, this is perfect, isn't it?
how did you find the experience? any improvement proposal?
and any idea on where to put this goal in the future?

> 
> As note, reproducibility after some time is not always possible if
> nessary compilers/tools aren't available anymore -- as you can see.
when we absolutely want to rebuild, this is where containers can ease the job

Regards,

Hervé

> 
> Michael
> 
> 
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org





-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with Maven: I 
wrote code to easily check that your local build produces the same binaries as 
the reference binaries published either to staging or to Central repository.

For a live example, see the last paragraph of Maven Site Plugin vote that just 
started [1].

Process to check build output is based on a single plugin goal, currently named 
buildinfo:save [2]:
1. it creates a buildinfo file during build recording output fingerprints, that 
will eventually in the future be published to Central repository
2. it downloads reference artifacts and/or reference buildinfo and checks that 
the output of the local build is the same as the reference.

Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which plugin should 
we put this goal to make a release and add it to our parent pom during release, 
so we publish reference buildinfo along our reference binaries to Central 
repository.


Made some progress:


[INFO] --- maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) @ 
maven-site-plugin ---
[INFO] Saved info on build to 
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.buildinfo
[INFO] Checking against reference build from 
https://repository.apache.org/content/repositories/maven-1554/...
[WARNING] Reference buildinfo file not found: it will be generated from 
downloaded reference artifacts
[INFO] Minimal buildinfo generated from downloaded artifacts: 
/var/osipovmi/Projekte/maven-site-plugin/target/reference/maven-site-plugin-3.9.0.buildinfo
[WARNING] size mismatch maven-site-plugin-3.9.0.jar: diffoscope 
target/reference/maven-site-plugin-3.9.0.jar target/maven-site-plugin-3.9.0.jar
[WARNING] size mismatch maven-site-plugin-3.9.0-sources.jar: diffoscope 
target/reference/maven-site-plugin-3.9.0-sources.jar 
target/maven-site-plugin-3.9.0-sources.jar
[WARNING] size mismatch maven-site-plugin-3.9.0-source-release.zip: diffoscope 
target/reference/maven-site-plugin-3.9.0-source-release.zip 
target/maven-site-plugin-3.9.0-source-release.zip
[WARNING] Reproducible Build output summary: 0 files ok, 3 different, 0 missing
[WARNING] diff target/reference/maven-site-plugin-3.9.0.buildinfo 
target/maven-site-plugin-3.9.0.buildinfo


This is expected because I am on 1.8.0_242. I don't have Java 7 
installed anymore on the server.


As note, reproducibility after some time is not always possible if 
nessary compilers/tools aren't available anymore -- as you can see.


Michael


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Hervé BOUTEMY
thank you for testing

little bug fixed: stupid me, I should have tested this case before asking for 
feedback: I tested only with central repository, provided as "central" id...

please fetch the latest plugin update and retest :)

Le samedi 7 mars 2020, 13:12:08 CET Karl Heinz Marbaise a écrit :
> Hi Hervé,
> 
> I've tried to check my release via the suggested recipe...
> 
> 
> Downloaded the maven-studies repo and build the following commit:
> 90b426758363123af6fcc9aa7190b837c0551359 (mvn clean install)
> 
> Downloaded the source package
> 
> curl -O
> https://repository.apache.org/content/repositories/maven-1555/org/apache/mav
> en/plugins/maven-dependency-plugin/3.1.2/maven-dependency-plugin-3.1.2-sourc
> e-release.zip
> 
> unzip maven-dependency-plugin-3.1.2-source-release.zip
> 
> cd maven-dependency-plugin-3.1.2 and tried to run the following:
> 
> mvn -Papache-release verify buildinfo:save -Dgpg.skip
> -Dreference.repo=https://repository.apache.org/content/repositories/maven-15
> 55/
> 
> and got the following:
> 
> 
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-buildinfo-plugin:1.0-SNAPSHOT:save
> (default-cli) on project maven-dependency-plugin: Error resolving
> reference artifact
> org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2: Could
> not transfer artifact
> org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2 from/to
> reference
> (https://repository.apache.org/content/repositories/maven-1555/): Cannot
> access https://repository.apache.org/content/repositories/maven-1555/
> with type  using the available connector factories:
> BasicRepositoryConnectorFactory: Cannot access
> https://repository.apache.org/content/repositories/maven-1555/ with type
>   using the available layout factories: Maven2RepositoryLayoutFactory:
> Unsupported repository layout -> [Help 1]
> [ERROR]
> 
> 
> 
> Kind regards
> Karl Heinz Marbaise
> 
> On 07.03.20 11:36, Hervé BOUTEMY wrote:
> > Hi,
> > 
> > Yesterday, I made a key step forward for Reproducible Builds with Maven: I
> > wrote code to easily check that your local build produces the same
> > binaries as the reference binaries published either to staging or to
> > Central repository.
> > 
> > For a live example, see the last paragraph of Maven Site Plugin vote that
> > just started [1].
> > 
> > Process to check build output is based on a single plugin goal, currently
> > named buildinfo:save [2]: 1. it creates a buildinfo file during build
> > recording output fingerprints, that will eventually in the future be
> > published to Central repository 2. it downloads reference artifacts
> > and/or reference buildinfo and checks that the output of the local build
> > is the same as the reference.
> > 
> > Now I want to discuss: is it clear? can you test and report, please?
> > 
> > If the feedback is positive, the next question will be: in which plugin
> > should we put this goal to make a release and add it to our parent pom
> > during release, so we publish reference buildinfo along our reference
> > binaries to Central repository.
> > 
> > Thanks for your feedback
> > 
> > Regards,
> > 
> > Hervé
> > 
> > [1]
> > https://lists.apache.org/thread.html/rd3af15d383ddceeb950cd90569e3dcdd6e5
> > a0f5d3cd653ec534b0609%40%3Cdev.maven.apache.org%3E
> > 
> > [2] https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin
> 
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org





-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Karl Heinz Marbaise

Hi,

On 07.03.20 14:19, Michael Osipov wrote:

Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with
Maven: I wrote code to easily check that your local build produces the
same binaries as the reference binaries published either to staging or
to Central repository.

For a live example, see the last paragraph of Maven Site Plugin vote
that just started [1].

Process to check build output is based on a single plugin goal,
currently named buildinfo:save [2]:
1. it creates a buildinfo file during build recording output
fingerprints, that will eventually in the future be published to
Central repository
2. it downloads reference artifacts and/or reference buildinfo and
checks that the output of the local build is the same as the reference.

Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which
plugin should we put this goal to make a release and add it to our
parent pom during release, so we publish reference buildinfo along our
reference binaries to Central repository.


After even reverting the offending commit from Maven master, I still get:


[INFO] --- maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) @
maven-site-plugin ---
[INFO] Saved info on build to
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.buildinfo

[INFO] Checking against reference build from
https://repository.apache.org/content/repositories/maven-1554/...
[INFO]

[INFO] BUILD FAILURE
[INFO]

[INFO] Total time:  01:12 min
[INFO] Finished at: 2020-03-07T14:16:18+01:00
[INFO]

[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-buildinfo-plugin:1.0-SNAPSHOT:save
(default-cli) on project maven-site-plugin: Error resolving reference
artifact org.apache.maven.plugins:maven-site-plugin:buildinfo:3.9.0:
Could not transfer artifact
org.apache.maven.plugins:maven-site-plugin:buildinfo:3.9.0 from/to
reference
(https://repository.apache.org/content/repositories/maven-1554/):
Cannot access
https://repository.apache.org/content/repositories/maven-1554/ with
type  using the available connector factories:
BasicRepositoryConnectorFactory: Cannot access
https://repository.apache.org/content/repositories/maven-1554/ with
type  using the available layout factories:
Maven2RepositoryLayoutFactory: Unsupported repository layout -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with
the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions,
please read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException




That's exactly the same issue I have reported with Maven 3.6.3 ...

Kind regards
Karl Heinz Marbaise

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with Maven: I 
wrote code to easily check that your local build produces the same binaries as 
the reference binaries published either to staging or to Central repository.

For a live example, see the last paragraph of Maven Site Plugin vote that just 
started [1].

Process to check build output is based on a single plugin goal, currently named 
buildinfo:save [2]:
1. it creates a buildinfo file during build recording output fingerprints, that 
will eventually in the future be published to Central repository
2. it downloads reference artifacts and/or reference buildinfo and checks that 
the output of the local build is the same as the reference.

Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which plugin should 
we put this goal to make a release and add it to our parent pom during release, 
so we publish reference buildinfo along our reference binaries to Central 
repository.


After even reverting the offending commit from Maven master, I still get:


[INFO] --- maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) @ 
maven-site-plugin ---
[INFO] Saved info on build to 
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.buildinfo
[INFO] Checking against reference build from 
https://repository.apache.org/content/repositories/maven-1554/...
[INFO] 
[INFO] BUILD FAILURE
[INFO] 
[INFO] Total time:  01:12 min
[INFO] Finished at: 2020-03-07T14:16:18+01:00
[INFO] 
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) on 
project maven-site-plugin: Error resolving reference artifact 
org.apache.maven.plugins:maven-site-plugin:buildinfo:3.9.0: Could not transfer 
artifact org.apache.maven.plugins:maven-site-plugin:buildinfo:3.9.0 from/to 
reference (https://repository.apache.org/content/repositories/maven-1554/): Cannot 
access https://repository.apache.org/content/repositories/maven-1554/ with type  
using the available connector factories: BasicRepositoryConnectorFactory: Cannot 
access https://repository.apache.org/content/repositories/maven-1554/ with type  
using the available layout factories: Maven2RepositoryLayoutFactory: Unsupported 
repository layout -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please 
read the following articles:
[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException




-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Am 2020-03-07 um 13:45 schrieb Michael Osipov:

Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with 
Maven: I wrote code to easily check that your local build produces the 
same binaries as the reference binaries published either to staging or 
to Central repository.


For a live example, see the last paragraph of Maven Site Plugin vote 
that just started [1].


Process to check build output is based on a single plugin goal, 
currently named buildinfo:save [2]:
1. it creates a buildinfo file during build recording output 
fingerprints, that will eventually in the future be published to 
Central repository
2. it downloads reference artifacts and/or reference buildinfo and 
checks that the output of the local build is the same as the reference.


Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which 
plugin should we put this goal to make a release and add it to our 
parent pom during release, so we publish reference buildinfo along our 
reference binaries to Central repository.


Fails for me with:
osipovmi@deblndw011x:~/var/Projekte/maven-site-plugin 
((maven-site-plugin-3.9.0)

$ ~/apache-maven-3.7.0-SNAPSHOT/bin/mvn -v
Apache Maven 3.7.0-SNAPSHOT (f2e9afd788de919646717532d26eca38826e9924)
Maven home: /net/home/osipovmi/apache-maven-3.7.0-SNAPSHOT
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: 
/usr/local/openjdk8/jre

Default locale: de_DE, platform encoding: UTF-8
OS name: "freebsd", version: "12.1-stable", arch: "amd64", family: "unix"


The build completely stalls at
[INFO] Replacing 
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.jar 
with 
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0-shaded.jar 

[INFO] Dependency-reduced POM written at: 
/var/osipovmi/Projekte/maven-site-plugin/dependency-reduced-pom.xml


CPU time is consumed like hell, I killed the process after 10 min.

Looking at it with JConsole shows that main thread is heavy working on

org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:317) 

org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229) 

org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:340) 

org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:203) 

org.apache.maven.shared.dependency.graph.internal.Maven31DependencyGraphBuilder.resolveDependencies(Maven31DependencyGraphBuilder.java:124) 

org.apache.maven.shared.dependency.graph.internal.Maven31DependencyGraphBuilder.buildDependencyGraph(Maven31DependencyGraphBuilder.java:110) 

org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder.buildDependencyGraph(DefaultDependencyGraphBuilder.java:98) 

org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder.buildDependencyGraph(DefaultDependencyGraphBuilder.java:67 

org.apache.maven.plugins.shade.mojo.ShadeMojo.updateExcludesInDeps(ShadeMojo.java:1266) 

org.apache.maven.plugins.shade.mojo.ShadeMojo.rewriteDependencyReducedPomIfWeHaveReduction(ShadeMojo.java:1188) 

org.apache.maven.plugins.shade.mojo.ShadeMojo.createDependencyReducedPom(ShadeMojo.java:1098) 


org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:599)
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPlug 



This is a complete contrast to Maven 3.5.4 and not related to this new 
plugin. A mere "mvn clean verify" on MSITE stalls completely during 
shade. Need to test more.


OK, found it:


716cc1fe02661897232a7cc3e4c1bb3b3df3b832 is the first bad commit
commit 716cc1fe02661897232a7cc3e4c1bb3b3df3b832
Author: rfscholte 
Date:   Wed Jan 29 21:18:42 2020 +0100

[MNG-5669] same pom.xml is read multiple times

 .../java/org/apache/maven/building/FileSource.java |  31 
 .../org/apache/maven/building/StringSource.java|  33 +++-
 .../java/org/apache/maven/building/UrlSource.java  |  32 +++-
 .../apache/maven/project/ReactorModelCache.java|  78 +++-
 .../maven/model/building/ArtifactModelSource.java  |  59 ++
 .../maven/model/building/DefaultModelBuilder.java  | 206 -
 .../maven/model/building/FileModelSource.java  |   9 +-
 .../apache/maven/model/building/ModelCache.java|  29 +++
 .../apache/maven/model/building/ModelCacheTag.java |  26 +++
 .../model/superpom/DefaultSuperPomProvider.java|   2 +-
 .../internal/DefaultArtifactDescriptorReader.java  |   7 +-
 .../repository/internal/DefaultModelResolver.java  |   7 +-
 12 files changed, 451 insertions(+), 68 deletions(-)
 create mode 100644 maven-model-builder/src/main/java/org/apache/maven/model/b



@Robert, do you want to revert? This requires more testing obviously.

Michael



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with Maven: I 
wrote code to easily check that your local build produces the same binaries as 
the reference binaries published either to staging or to Central repository.

For a live example, see the last paragraph of Maven Site Plugin vote that just 
started [1].

Process to check build output is based on a single plugin goal, currently named 
buildinfo:save [2]:
1. it creates a buildinfo file during build recording output fingerprints, that 
will eventually in the future be published to Central repository
2. it downloads reference artifacts and/or reference buildinfo and checks that 
the output of the local build is the same as the reference.

Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which plugin should 
we put this goal to make a release and add it to our parent pom during release, 
so we publish reference buildinfo along our reference binaries to Central 
repository.


Fails for me with:

osipovmi@deblndw011x:~/var/Projekte/maven-site-plugin ((maven-site-plugin-3.9.0)
$ ~/apache-maven-3.7.0-SNAPSHOT/bin/mvn -v
Apache Maven 3.7.0-SNAPSHOT (f2e9afd788de919646717532d26eca38826e9924)
Maven home: /net/home/osipovmi/apache-maven-3.7.0-SNAPSHOT
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: 
/usr/local/openjdk8/jre
Default locale: de_DE, platform encoding: UTF-8
OS name: "freebsd", version: "12.1-stable", arch: "amd64", family: "unix"


The build completely stalls at

[INFO] Replacing 
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.jar 
with 
/var/osipovmi/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0-shaded.jar
[INFO] Dependency-reduced POM written at: 
/var/osipovmi/Projekte/maven-site-plugin/dependency-reduced-pom.xml


CPU time is consumed like hell, I killed the process after 10 min.

Looking at it with JConsole shows that main thread is heavy working on


org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:317)
org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229)
org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:340)
org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:203)
org.apache.maven.shared.dependency.graph.internal.Maven31DependencyGraphBuilder.resolveDependencies(Maven31DependencyGraphBuilder.java:124)
org.apache.maven.shared.dependency.graph.internal.Maven31DependencyGraphBuilder.buildDependencyGraph(Maven31DependencyGraphBuilder.java:110)
org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder.buildDependencyGraph(DefaultDependencyGraphBuilder.java:98)
org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder.buildDependencyGraph(DefaultDependencyGraphBuilder.java:67
org.apache.maven.plugins.shade.mojo.ShadeMojo.updateExcludesInDeps(ShadeMojo.java:1266)
org.apache.maven.plugins.shade.mojo.ShadeMojo.rewriteDependencyReducedPomIfWeHaveReduction(ShadeMojo.java:1188)
org.apache.maven.plugins.shade.mojo.ShadeMojo.createDependencyReducedPom(ShadeMojo.java:1098)
org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:599)
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPlug


This is a complete contrast to Maven 3.5.4 and not related to this new 
plugin. A mere "mvn clean verify" on MSITE stalls completely during 
shade. Need to test more.


Michael


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Michael Osipov

Am 2020-03-07 um 13:12 schrieb Karl Heinz Marbaise:

Hi Hervé,

I've tried to check my release via the suggested recipe...


Downloaded the maven-studies repo and build the following commit:
90b426758363123af6fcc9aa7190b837c0551359 (mvn clean install)

Downloaded the source package

curl -O
https://repository.apache.org/content/repositories/maven-1555/org/apache/maven/plugins/maven-dependency-plugin/3.1.2/maven-dependency-plugin-3.1.2-source-release.zip 



unzip maven-dependency-plugin-3.1.2-source-release.zip

cd maven-dependency-plugin-3.1.2 and tried to run the following:

mvn -Papache-release verify buildinfo:save -Dgpg.skip
-Dreference.repo=https://repository.apache.org/content/repositories/maven-1555/ 



and got the following:


[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-buildinfo-plugin:1.0-SNAPSHOT:save
(default-cli) on project maven-dependency-plugin: Error resolving
reference artifact
org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2: Could
not transfer artifact
org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2 from/to
reference
(https://repository.apache.org/content/repositories/maven-1555/): Cannot
access https://repository.apache.org/content/repositories/maven-1555/
with type  using the available connector factories:
BasicRepositoryConnectorFactory: Cannot access
https://repository.apache.org/content/repositories/maven-1555/ with type
  using the available layout factories: Maven2RepositoryLayoutFactory:
Unsupported repository layout -> [Help 1]
[ERROR]


Same here with Maven 3.5.4.


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [DISCUSS] checking reproducible builds

2020-03-07 Thread Karl Heinz Marbaise

Hi Hervé,

I've tried to check my release via the suggested recipe...


Downloaded the maven-studies repo and build the following commit:
90b426758363123af6fcc9aa7190b837c0551359 (mvn clean install)

Downloaded the source package

curl -O
https://repository.apache.org/content/repositories/maven-1555/org/apache/maven/plugins/maven-dependency-plugin/3.1.2/maven-dependency-plugin-3.1.2-source-release.zip

unzip maven-dependency-plugin-3.1.2-source-release.zip

cd maven-dependency-plugin-3.1.2 and tried to run the following:

mvn -Papache-release verify buildinfo:save -Dgpg.skip
-Dreference.repo=https://repository.apache.org/content/repositories/maven-1555/

and got the following:


[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-buildinfo-plugin:1.0-SNAPSHOT:save
(default-cli) on project maven-dependency-plugin: Error resolving
reference artifact
org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2: Could
not transfer artifact
org.apache.maven.plugins:maven-dependency-plugin:buildinfo:3.1.2 from/to
reference
(https://repository.apache.org/content/repositories/maven-1555/): Cannot
access https://repository.apache.org/content/repositories/maven-1555/
with type  using the available connector factories:
BasicRepositoryConnectorFactory: Cannot access
https://repository.apache.org/content/repositories/maven-1555/ with type
 using the available layout factories: Maven2RepositoryLayoutFactory:
Unsupported repository layout -> [Help 1]
[ERROR]



Kind regards
Karl Heinz Marbaise

On 07.03.20 11:36, Hervé BOUTEMY wrote:

Hi,

Yesterday, I made a key step forward for Reproducible Builds with Maven: I 
wrote code to easily check that your local build produces the same binaries as 
the reference binaries published either to staging or to Central repository.

For a live example, see the last paragraph of Maven Site Plugin vote that just 
started [1].

Process to check build output is based on a single plugin goal, currently named 
buildinfo:save [2]:
1. it creates a buildinfo file during build recording output fingerprints, that 
will eventually in the future be published to Central repository
2. it downloads reference artifacts and/or reference buildinfo and checks that 
the output of the local build is the same as the reference.

Now I want to discuss: is it clear? can you test and report, please?

If the feedback is positive, the next question will be: in which plugin should 
we put this goal to make a release and add it to our parent pom during release, 
so we publish reference buildinfo along our reference binaries to Central 
repository.

Thanks for your feedback

Regards,

Hervé

[1] 
https://lists.apache.org/thread.html/rd3af15d383ddceeb950cd90569e3dcdd6e5a0f5d3cd653ec534b0609%40%3Cdev.maven.apache.org%3E

[2] https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin



-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org