public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] ltmain.sh: Sort input file list
@ 2018-06-09 19:20 Bernhard M. Wiedemann
  2018-06-11 17:06 ` Joseph Myers
  0 siblings, 1 reply; 14+ messages in thread
From: Bernhard M. Wiedemann @ 2018-06-09 19:20 UTC (permalink / raw)
  To: gcc-patches; +Cc: Bernhard M. Wiedemann

so that gcc builds in a reproducible way
in spite of indeterministic filesystem readdir order

See https://reproducible-builds.org/ for why this is good.

While working on the reproducible builds effort, I found that
when building the gcc8 package for openSUSE, there were differences
between each build in resulting binaries like gccgo, cc1obj and cpp
because the order of objects in libstdc++.a varied based on
the order of entries returned by the filesystem.

Two remaining issues are with timestamps in the ada build
and with profiledbootstrap that only is reproducible if all inputs
in the profiling run remain constant (which is not the case)

Testcases:
  none included because patch is trivial and it would need to compare builds on 2 filesystems.

ChangeLog:
  ltmain.sh: sort list of object files to make build reproducible

Bootstrapping and testing:
  tested successfully with gcc8 on x86_64
---
 ltmain.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ltmain.sh b/ltmain.sh
index 9503ec85d..96311a12c 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2932,7 +2932,7 @@ func_extract_archives ()
         func_extract_an_archive "$my_xdir" "$my_xabs"
 	;;
       esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | LC_ALL=C sort | $NL2SP`
     done
 
     func_extract_archives_result="$my_oldobjs"
-- 
2.13.7

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] ltmain.sh: Sort input file list
  2018-06-09 19:20 [PATCH] ltmain.sh: Sort input file list Bernhard M. Wiedemann
@ 2018-06-11 17:06 ` Joseph Myers
  2018-06-11 18:45   ` Bernhard M. Wiedemann
  2018-06-11 18:47   ` Jeff Law
  0 siblings, 2 replies; 14+ messages in thread
From: Joseph Myers @ 2018-06-11 17:06 UTC (permalink / raw)
  To: Bernhard M. Wiedemann; +Cc: gcc-patches

If we're not doing a general update from upstream libtool, I think we 
should use the upstream ltmain.sh fix (libtool commit 
74c8993c178a1386ea5e2363a01d919738402f30, it looks like), or follow it as 
close as possible, rather than having our own variant.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] ltmain.sh: Sort input file list
  2018-06-11 17:06 ` Joseph Myers
@ 2018-06-11 18:45   ` Bernhard M. Wiedemann
  2018-06-11 18:47   ` Jeff Law
  1 sibling, 0 replies; 14+ messages in thread
From: Bernhard M. Wiedemann @ 2018-06-11 18:45 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches

On 2018-06-11 17:06, Joseph Myers wrote:
> If we're not doing a general update from upstream libtool, I think we 
> should use the upstream ltmain.sh fix (libtool commit 
> 74c8993c178a1386ea5e2363a01d919738402f30, it looks like), or follow it as 
> close as possible, rather than having our own variant.

right. Either variant should be fine.

Cherry-picking it, is the safe variant.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] ltmain.sh: Sort input file list
  2018-06-11 17:06 ` Joseph Myers
  2018-06-11 18:45   ` Bernhard M. Wiedemann
@ 2018-06-11 18:47   ` Jeff Law
  2018-06-12  1:50     ` Eric Gallager
                       ` (2 more replies)
  1 sibling, 3 replies; 14+ messages in thread
From: Jeff Law @ 2018-06-11 18:47 UTC (permalink / raw)
  To: Joseph Myers, Bernhard M. Wiedemann; +Cc: gcc-patches

On 06/11/2018 11:06 AM, Joseph Myers wrote:
> If we're not doing a general update from upstream libtool, I think we 
> should use the upstream ltmain.sh fix (libtool commit 
> 74c8993c178a1386ea5e2363a01d919738402f30, it looks like), or follow it as 
> close as possible, rather than having our own variant.
> 
Agreed.  My preference would be to get the various libtool, autoconf and
friends updated from the appropriate upstream projects.

jeff

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] ltmain.sh: Sort input file list
  2018-06-11 18:47   ` Jeff Law
@ 2018-06-12  1:50     ` Eric Gallager
  2018-06-19  7:32     ` [PATCH] libtool: Sort output of 'find' to enable deterministic builds Bernhard M. Wiedemann
  2018-06-25 11:39     ` Bernhard M. Wiedemann
  2 siblings, 0 replies; 14+ messages in thread
From: Eric Gallager @ 2018-06-12  1:50 UTC (permalink / raw)
  To: Jeff Law; +Cc: Joseph Myers, Bernhard M. Wiedemann, gcc-patches

On 6/11/18, Jeff Law <law@redhat.com> wrote:
> On 06/11/2018 11:06 AM, Joseph Myers wrote:
>> If we're not doing a general update from upstream libtool, I think we
>> should use the upstream ltmain.sh fix (libtool commit
>> 74c8993c178a1386ea5e2363a01d919738402f30, it looks like), or follow it as
>>
>> close as possible, rather than having our own variant.
>>
> Agreed.  My preference would be to get the various libtool, autoconf and
> friends updated from the appropriate upstream projects.
>
> jeff
>

Thread from the last time this came up is here:
https://gcc.gnu.org/ml/gcc/2017-10/msg00060.html

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-11 18:47   ` Jeff Law
  2018-06-12  1:50     ` Eric Gallager
@ 2018-06-19  7:32     ` Bernhard M. Wiedemann
  2018-06-25 11:39     ` Bernhard M. Wiedemann
  2 siblings, 0 replies; 14+ messages in thread
From: Bernhard M. Wiedemann @ 2018-06-19  7:32 UTC (permalink / raw)
  To: gcc-patches; +Cc: Bernhard M. Wiedemann

so that gcc builds in a reproducible way
in spite of indeterministic filesystem readdir order

See https://reproducible-builds.org/ for why this is good.

While working on the reproducible builds effort, I found that
when building the gcc8 package for openSUSE, there were differences
between each build in resulting binaries like gccgo, cc1obj and cpp
because the order of objects in libstdc++.a varied based on
the order of entries returned by the filesystem.

Two remaining issues are with timestamps in the ada build
and with profiledbootstrap that only is reproducible if all inputs
in the profiling run remain constant

Testcases:
  none included because patch is trivial and it would need to compare builds on 2 filesystems.

Bootstrapping and testing:
  tested successfully with gcc8 on x86_64

[gcc]
2018-06-19  Bernhard M. Wiedemann  <bwiedemann@suse.de>

        libtool: Sort output of 'find' to enable deterministic builds.

---
pulled in libtool commit 74c8993c178a1386ea5e2363a01d919738402f30
because a full update appears to be too troublesome after 8+ years
but we still really want that fix.

See also https://gcc.gnu.org/ml/gcc/2017-10/msg00060.html
---
 libtool.m4 | 8 ++++----
 ltmain.sh  | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libtool.m4 b/libtool.m4
index 24d13f344..940faaa16 100644
--- a/libtool.m4
+++ b/libtool.m4
@@ -6005,20 +6005,20 @@ if test "$_lt_caught_CXX_error" != yes; then
 	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
 		$RANLIB $oldlib'
 	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
 	      ;;
 	    *) # Version 6 and above use weak symbols
 	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
diff --git a/ltmain.sh b/ltmain.sh
index 9503ec85d..79f9ba89a 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2917,7 +2917,7 @@ func_extract_archives ()
 	    darwin_file=
 	    darwin_files=
 	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
 	      $LIPO -create -output "$darwin_file" $darwin_files
 	    done # $darwin_filelist
 	    $RM -rf unfat-$$
@@ -2932,7 +2932,7 @@ func_extract_archives ()
         func_extract_an_archive "$my_xdir" "$my_xabs"
 	;;
       esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
     func_extract_archives_result="$my_oldobjs"
-- 
2.13.7

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-11 18:47   ` Jeff Law
  2018-06-12  1:50     ` Eric Gallager
  2018-06-19  7:32     ` [PATCH] libtool: Sort output of 'find' to enable deterministic builds Bernhard M. Wiedemann
@ 2018-06-25 11:39     ` Bernhard M. Wiedemann
  2018-06-29  8:16       ` Richard Biener
  2 siblings, 1 reply; 14+ messages in thread
From: Bernhard M. Wiedemann @ 2018-06-25 11:39 UTC (permalink / raw)
  To: gcc-patches; +Cc: Joseph Myers, Bernhard M. Wiedemann

so that gcc builds in a reproducible way
in spite of indeterministic filesystem readdir order

See https://reproducible-builds.org/ for why this is good.

While working on the reproducible builds effort, I found that
when building the gcc8 package for openSUSE, there were differences
between each build in resulting binaries like gccgo, cc1obj and cpp
because the order of objects in libstdc++.a varied based on
the order of entries returned by the filesystem.

Two remaining issues are with timestamps in the ada build
and with profiledbootstrap that only is reproducible if all inputs
in the profiling run remain constant (and make -j breaks it too)

Testcases:
  none included because patch is trivial and it would need to compare builds on 2 filesystems.

Bootstrapping and testing:
  tested successfully with gcc8 on x86_64

[gcc]
2018-06-19  Bernhard M. Wiedemann  <bwiedemann@suse.de>

        libtool: Sort output of 'find' to enable deterministic builds.

---
pulled in libtool commit 74c8993c178a1386ea5e2363a01d919738402f30
because a full update appears to be too troublesome after 8+ years
of divergence, but we still really want that fix.

See also https://gcc.gnu.org/ml/gcc/2017-10/msg00060.html
---
 libtool.m4 | 8 ++++----
 ltmain.sh  | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libtool.m4 b/libtool.m4
index 24d13f344..940faaa16 100644
--- a/libtool.m4
+++ b/libtool.m4
@@ -6005,20 +6005,20 @@ if test "$_lt_caught_CXX_error" != yes; then
 	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
 		$RANLIB $oldlib'
 	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
 		rm -rf $tpldir~
 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
 	      ;;
 	    *) # Version 6 and above use weak symbols
 	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
diff --git a/ltmain.sh b/ltmain.sh
index 9503ec85d..79f9ba89a 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2917,7 +2917,7 @@ func_extract_archives ()
 	    darwin_file=
 	    darwin_files=
 	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
 	      $LIPO -create -output "$darwin_file" $darwin_files
 	    done # $darwin_filelist
 	    $RM -rf unfat-$$
@@ -2932,7 +2932,7 @@ func_extract_archives ()
         func_extract_an_archive "$my_xdir" "$my_xabs"
 	;;
       esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
     func_extract_archives_result="$my_oldobjs"
-- 
2.13.7

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-25 11:39     ` Bernhard M. Wiedemann
@ 2018-06-29  8:16       ` Richard Biener
  2018-06-29 15:11         ` Jeff Law
  0 siblings, 1 reply; 14+ messages in thread
From: Richard Biener @ 2018-06-29  8:16 UTC (permalink / raw)
  To: bwiedemann, Ian Lance Taylor; +Cc: GCC Patches, Joseph S. Myers

On Mon, Jun 25, 2018 at 1:39 PM Bernhard M. Wiedemann
<bwiedemann@suse.de> wrote:
>
> so that gcc builds in a reproducible way
> in spite of indeterministic filesystem readdir order
>
> See https://reproducible-builds.org/ for why this is good.
>
> While working on the reproducible builds effort, I found that
> when building the gcc8 package for openSUSE, there were differences
> between each build in resulting binaries like gccgo, cc1obj and cpp
> because the order of objects in libstdc++.a varied based on
> the order of entries returned by the filesystem.
>
> Two remaining issues are with timestamps in the ada build
> and with profiledbootstrap that only is reproducible if all inputs
> in the profiling run remain constant (and make -j breaks it too)
>
> Testcases:
>   none included because patch is trivial and it would need to compare builds on 2 filesystems.
>
> Bootstrapping and testing:
>   tested successfully with gcc8 on x86_64

Looks ok to me.

Btw, running find to search for libtool.m4/ltmain.sh I find extra copies in

./libgo/config/ltmain.sh
./libgo/config/libtool.m4

which are nearly identical besides appearantly patched in GO support?

Can we consolidate those and/or do we need to patch those as well?

Thanks,
Richard.

> [gcc]
> 2018-06-19  Bernhard M. Wiedemann  <bwiedemann@suse.de>
>
>         libtool: Sort output of 'find' to enable deterministic builds.
>
> ---
> pulled in libtool commit 74c8993c178a1386ea5e2363a01d919738402f30
> because a full update appears to be too troublesome after 8+ years
> of divergence, but we still really want that fix.
>
> See also https://gcc.gnu.org/ml/gcc/2017-10/msg00060.html
> ---
>  libtool.m4 | 8 ++++----
>  ltmain.sh  | 4 ++--
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/libtool.m4 b/libtool.m4
> index 24d13f344..940faaa16 100644
> --- a/libtool.m4
> +++ b/libtool.m4
> @@ -6005,20 +6005,20 @@ if test "$_lt_caught_CXX_error" != yes; then
>               _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
>                 rm -rf $tpldir~
>                 $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
> -               compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
> +               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
>               _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
>                 rm -rf $tpldir~
>                 $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
> -               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
> +               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
>                 $RANLIB $oldlib'
>               _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
>                 rm -rf $tpldir~
>                 $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
> -               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
> +               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
>               _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
>                 rm -rf $tpldir~
>                 $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
> -               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
> +               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
>               ;;
>             *) # Version 6 and above use weak symbols
>               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
> diff --git a/ltmain.sh b/ltmain.sh
> index 9503ec85d..79f9ba89a 100644
> --- a/ltmain.sh
> +++ b/ltmain.sh
> @@ -2917,7 +2917,7 @@ func_extract_archives ()
>             darwin_file=
>             darwin_files=
>             for darwin_file in $darwin_filelist; do
> -             darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
> +             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
>               $LIPO -create -output "$darwin_file" $darwin_files
>             done # $darwin_filelist
>             $RM -rf unfat-$$
> @@ -2932,7 +2932,7 @@ func_extract_archives ()
>          func_extract_an_archive "$my_xdir" "$my_xabs"
>         ;;
>        esac
> -      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
> +      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
>      done
>
>      func_extract_archives_result="$my_oldobjs"
> --
> 2.13.7
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-29  8:16       ` Richard Biener
@ 2018-06-29 15:11         ` Jeff Law
  2018-06-29 15:54           ` Jakub Jelinek
  2018-07-05 14:53           ` Bernhard M. Wiedemann
  0 siblings, 2 replies; 14+ messages in thread
From: Jeff Law @ 2018-06-29 15:11 UTC (permalink / raw)
  To: Richard Biener, bwiedemann, Ian Lance Taylor; +Cc: GCC Patches, Joseph S. Myers

On 06/29/2018 02:13 AM, Richard Biener wrote:
> On Mon, Jun 25, 2018 at 1:39 PM Bernhard M. Wiedemann
> <bwiedemann@suse.de> wrote:
>>
>> so that gcc builds in a reproducible way
>> in spite of indeterministic filesystem readdir order
>>
>> See https://reproducible-builds.org/ for why this is good.
>>
>> While working on the reproducible builds effort, I found that
>> when building the gcc8 package for openSUSE, there were differences
>> between each build in resulting binaries like gccgo, cc1obj and cpp
>> because the order of objects in libstdc++.a varied based on
>> the order of entries returned by the filesystem.
>>
>> Two remaining issues are with timestamps in the ada build
>> and with profiledbootstrap that only is reproducible if all inputs
>> in the profiling run remain constant (and make -j breaks it too)
>>
>> Testcases:
>>   none included because patch is trivial and it would need to compare builds on 2 filesystems.
>>
>> Bootstrapping and testing:
>>   tested successfully with gcc8 on x86_64
> 
> Looks ok to me.
> 
> Btw, running find to search for libtool.m4/ltmain.sh I find extra copies in
> 
> ./libgo/config/ltmain.sh
> ./libgo/config/libtool.m4
> 
> which are nearly identical besides appearantly patched in GO support?
> 
> Can we consolidate those and/or do we need to patch those as well?
Ideally consolidate.  The README indicates that directory is supposed
"temporarily until Go support is added to autoconf and libtool".

So, assuming autoconf/libtool have updated appropriately upstream, then
we "just" need to get ourselves up-to-date and I think that directory of
stuff can go away.

In the immediate term, applying the patch to both instances seems wise.

Bernhard, do you have commit privs?

jeff

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-29 15:11         ` Jeff Law
@ 2018-06-29 15:54           ` Jakub Jelinek
  2018-06-29 16:40             ` Ian Lance Taylor
  2018-07-05 14:53           ` Bernhard M. Wiedemann
  1 sibling, 1 reply; 14+ messages in thread
From: Jakub Jelinek @ 2018-06-29 15:54 UTC (permalink / raw)
  To: Jeff Law
  Cc: Richard Biener, bwiedemann, Ian Lance Taylor, GCC Patches,
	Joseph S. Myers

On Fri, Jun 29, 2018 at 09:09:38AM -0600, Jeff Law wrote:
> > Btw, running find to search for libtool.m4/ltmain.sh I find extra copies in
> > 
> > ./libgo/config/ltmain.sh
> > ./libgo/config/libtool.m4
> > 
> > which are nearly identical besides appearantly patched in GO support?
> > 
> > Can we consolidate those and/or do we need to patch those as well?
> Ideally consolidate.  The README indicates that directory is supposed
> "temporarily until Go support is added to autoconf and libtool".

Can it be done when these files are not owned by GCC, but copied from
upstream?

	Jakub

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-29 15:54           ` Jakub Jelinek
@ 2018-06-29 16:40             ` Ian Lance Taylor
  2018-06-29 17:34               ` Eric Gallager
  0 siblings, 1 reply; 14+ messages in thread
From: Ian Lance Taylor @ 2018-06-29 16:40 UTC (permalink / raw)
  To: Jakub Jelinek
  Cc: Jeff Law, Richard Biener, bwiedemann, GCC Patches, Joseph S. Myers

On Fri, Jun 29, 2018 at 8:43 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Jun 29, 2018 at 09:09:38AM -0600, Jeff Law wrote:
>> > Btw, running find to search for libtool.m4/ltmain.sh I find extra copies in
>> >
>> > ./libgo/config/ltmain.sh
>> > ./libgo/config/libtool.m4
>> >
>> > which are nearly identical besides appearantly patched in GO support?
>> >
>> > Can we consolidate those and/or do we need to patch those as well?
>> Ideally consolidate.  The README indicates that directory is supposed
>> "temporarily until Go support is added to autoconf and libtool".
>
> Can it be done when these files are not owned by GCC, but copied from
> upstream?

I sent the libtool patches upstream years ago, but I'm not sure what
happened to them.

Ian

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-29 16:40             ` Ian Lance Taylor
@ 2018-06-29 17:34               ` Eric Gallager
  0 siblings, 0 replies; 14+ messages in thread
From: Eric Gallager @ 2018-06-29 17:34 UTC (permalink / raw)
  To: Ian Lance Taylor
  Cc: Jakub Jelinek, Jeff Law, Richard Biener, bwiedemann, GCC Patches,
	Joseph S. Myers

On 6/29/18, Ian Lance Taylor <iant@golang.org> wrote:
> On Fri, Jun 29, 2018 at 8:43 AM, Jakub Jelinek <jakub@redhat.com> wrote:
>> On Fri, Jun 29, 2018 at 09:09:38AM -0600, Jeff Law wrote:
>>> > Btw, running find to search for libtool.m4/ltmain.sh I find extra
>>> > copies in
>>> >
>>> > ./libgo/config/ltmain.sh
>>> > ./libgo/config/libtool.m4
>>> >
>>> > which are nearly identical besides appearantly patched in GO support?
>>> >
>>> > Can we consolidate those and/or do we need to patch those as well?
>>> Ideally consolidate.  The README indicates that directory is supposed
>>> "temporarily until Go support is added to autoconf and libtool".
>>
>> Can it be done when these files are not owned by GCC, but copied from
>> upstream?
>
> I sent the libtool patches upstream years ago, but I'm not sure what
> happened to them.
>
> Ian
>

Try pinging them; when there are libtool maintainers, they sometimes miss stuff.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-06-29 15:11         ` Jeff Law
  2018-06-29 15:54           ` Jakub Jelinek
@ 2018-07-05 14:53           ` Bernhard M. Wiedemann
  2018-07-05 19:14             ` Jeff Law
  1 sibling, 1 reply; 14+ messages in thread
From: Bernhard M. Wiedemann @ 2018-07-05 14:53 UTC (permalink / raw)
  To: Jeff Law, Richard Biener, Ian Lance Taylor; +Cc: GCC Patches, Joseph S. Myers

On 2018-06-29 17:09, Jeff Law wrote:
> In the immediate term, applying the patch to both instances seems wise.
> 
> Bernhard, do you have commit privs?

no, and I dont really want privs, since I expect to be doing only a few
patches for gcc.
Can you (or someone else) please commit the patch?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libtool: Sort output of 'find' to enable deterministic builds.
  2018-07-05 14:53           ` Bernhard M. Wiedemann
@ 2018-07-05 19:14             ` Jeff Law
  0 siblings, 0 replies; 14+ messages in thread
From: Jeff Law @ 2018-07-05 19:14 UTC (permalink / raw)
  To: Bernhard M. Wiedemann, Richard Biener, Ian Lance Taylor
  Cc: GCC Patches, Joseph S. Myers

On 07/05/2018 08:53 AM, Bernhard M. Wiedemann wrote:
> On 2018-06-29 17:09, Jeff Law wrote:
>> In the immediate term, applying the patch to both instances seems wise.
>>
>> Bernhard, do you have commit privs?
> 
> no, and I dont really want privs, since I expect to be doing only a few
> patches for gcc.
> Can you (or someone else) please commit the patch?
Installed on the trunk.

I did not update the libgo copies since we're a downstream consumer.

jeff

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2018-07-05 19:14 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-09 19:20 [PATCH] ltmain.sh: Sort input file list Bernhard M. Wiedemann
2018-06-11 17:06 ` Joseph Myers
2018-06-11 18:45   ` Bernhard M. Wiedemann
2018-06-11 18:47   ` Jeff Law
2018-06-12  1:50     ` Eric Gallager
2018-06-19  7:32     ` [PATCH] libtool: Sort output of 'find' to enable deterministic builds Bernhard M. Wiedemann
2018-06-25 11:39     ` Bernhard M. Wiedemann
2018-06-29  8:16       ` Richard Biener
2018-06-29 15:11         ` Jeff Law
2018-06-29 15:54           ` Jakub Jelinek
2018-06-29 16:40             ` Ian Lance Taylor
2018-06-29 17:34               ` Eric Gallager
2018-07-05 14:53           ` Bernhard M. Wiedemann
2018-07-05 19:14             ` Jeff Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).