[dpdk-dev] Sort list of entries in examples.dox

Message ID 20171009132411.8992-1-bwiedemann@suse.de (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Bernhard M. Wiedemann Oct. 9, 2017, 1:24 p.m. UTC
  so that dpdk builds in a reproducible way
in spite of indeterministic filesystem readdir order

using LC_ALL=C for sorting to be independent of locales

Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
---
 mk/rte.sdkdoc.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Luca Boccassi Oct. 9, 2017, 1:51 p.m. UTC | #1
On Mon, 2017-10-09 at 15:24 +0200, Bernhard M. Wiedemann wrote:
> so that dpdk builds in a reproducible way
> in spite of indeterministic filesystem readdir order
> 
> using LC_ALL=C for sorting to be independent of locales
> 
> Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
> ---
>  mk/rte.sdkdoc.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
> index c0eaa3502..8f2f58e73 100644
> --- a/mk/rte.sdkdoc.mk
> +++ b/mk/rte.sdkdoc.mk
> @@ -93,7 +93,7 @@ $(API_EXAMPLES): api-html-clean
>  	$(Q)mkdir -p $(@D)
>  	@printf '/**\n' > $(API_EXAMPLES)
>  	@printf '@page examples DPDK Example Programs\n\n' >>
> $(API_EXAMPLES)
> -	@find examples -type f -name '*.c' -printf '@example %p\n'
> >> $(API_EXAMPLES)
> +	@find examples -type f -name '*.c' | LC_ALL=C sort | xargs
> -l echo "@example" >> $(API_EXAMPLES)
>  	@printf '*/\n' >> $(API_EXAMPLES)
>  
>  guides-pdf-clean: guides-pdf-img-clean

Hello Bernhard,

If you are interested in reproducible builds please have a look at this
patch series I submitted a while ago:

http://dpdk.org/dev/patchwork/patch/28386/

I have verified that those patches make the build reproducible on
Debian (x86/x86_64/arm64).

Feedback from SUSE is very welcome!
  
Bernhard M. Wiedemann Oct. 9, 2017, 2:36 p.m. UTC | #2
On 2017-10-09 15:51, Luca Boccassi wrote:
> If you are interested in reproducible builds please have a look at this
> patch series I submitted a while ago:
> 
> http://dpdk.org/dev/patchwork/patch/28386/
> 
> I have verified that those patches make the build reproducible on
> Debian (x86/x86_64/arm64).
> 
> Feedback from SUSE is very welcome!

I am very interested in that topic.

and would like to see http://dpdk.org/dev/patchwork/patch/28387/ merged
(instead of my patch).

If https://savannah.gnu.org/bugs/?52076 gets merged, it will avoid the
need for the others, except the above and
http://dpdk.org/dev/patchwork/patch/28391/
The latter I have not found necessary so far, but races are hard to
reproduce anyway.
  
Luca Boccassi Oct. 9, 2017, 4:12 p.m. UTC | #3
On Mon, 2017-10-09 at 16:36 +0200, Bernhard M. Wiedemann wrote:
> On 2017-10-09 15:51, Luca Boccassi wrote:
> > If you are interested in reproducible builds please have a look at
> > this
> > patch series I submitted a while ago:
> > 
> > http://dpdk.org/dev/patchwork/patch/28386/
> > 
> > I have verified that those patches make the build reproducible on
> > Debian (x86/x86_64/arm64).
> > 
> > Feedback from SUSE is very welcome!
> 
> I am very interested in that topic.
> 
> and would like to see http://dpdk.org/dev/patchwork/patch/28387/
> merged
> (instead of my patch).

In case you want to have a look, the DPDK page on the Debian
reproducible builds CI is the following:

https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/dpdk.html

A new build in experimental is failing but it looks like it's due to a
different version of GCC being used between different builds.

> If https://savannah.gnu.org/bugs/?52076 gets merged, it will avoid
> the
> need for the others, except the above and
> http://dpdk.org/dev/patchwork/patch/28391/
> The latter I have not found necessary so far, but races are hard to
> reproduce anyway.

That last one was tricky, I'd say it happens one out of ten builds.

Thanks for all your work, having the GNU Make wildcard sort out of the
box would be really great!
  

Patch

diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
index c0eaa3502..8f2f58e73 100644
--- a/mk/rte.sdkdoc.mk
+++ b/mk/rte.sdkdoc.mk
@@ -93,7 +93,7 @@  $(API_EXAMPLES): api-html-clean
 	$(Q)mkdir -p $(@D)
 	@printf '/**\n' > $(API_EXAMPLES)
 	@printf '@page examples DPDK Example Programs\n\n' >> $(API_EXAMPLES)
-	@find examples -type f -name '*.c' -printf '@example %p\n' >> $(API_EXAMPLES)
+	@find examples -type f -name '*.c' | LC_ALL=C sort | xargs -l echo "@example" >> $(API_EXAMPLES)
 	@printf '*/\n' >> $(API_EXAMPLES)
 
 guides-pdf-clean: guides-pdf-img-clean