* [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).