Unverified Commit 67a38dec authored by Georg Koppen's avatar Georg Koppen
Browse files

Bug 31584: Clean up mingw-w64 project

We bump the GCC version to a supported one (9.2.0). The obvious choice
would have been 8.3.0 as we use for our Linux bundles. But, alas, that
one is crashing when cross-compiling Rust for 64bit Windows.
parent a7a90d35
......@@ -22,17 +22,10 @@ cd /var/tmp/build
mkdir gcc
cd gcc
tar xJf $rootdir/gcc-[% c("var/gcc_version") %].tar.xz
# https://gcc.gnu.org/ml/gcc-patches/2018-06/msg01115.html
# From gcc commit 494c17dc2bf45b8155fb9a14178ab48f01bc12a8
# libtool: Sort output of 'find' to enable deterministic builds.
patch -p1 -d gcc-[% c("var/gcc_version") %] < $rootdir/libtool-sort.patch
# We don't want to link against msvcrt.dll due to bug 9084 and want to use
# pthreads, too, as this is needed for ESR60, at least due to bug 1406542.
[% c("arch") %]-w64-mingw32-g++ -dumpspecs > $distdir/msvcr100.spec
sed 's/msvcrt/msvcr100 -lpthread/' -i $distdir/msvcr100.spec
# LDFLAGS_FOR_TARGET does not work for some reason. Thus, we take
export CFLAGS_FOR_TARGET="-specs=$distdir/msvcr100.spec -Wl,--nxcompat -Wl,--dynamicbase -Wl,--no-insert-timestamp"
export CFLAGS_FOR_TARGET="-Wl,--nxcompat -Wl,--dynamicbase -Wl,--no-insert-timestamp"
# Rust requires enabling pthreads
gcc-[% c("var/gcc_version") %]/configure --prefix=$distdir --target=[% c("arch") %]-w64-mingw32 --with-gnu-ld --with-gnu-as --disable-multilib --enable-threads=posix --enable-languages=c,c++
make -j[% c("buildconf/num_procs") %] all-gcc
make install-gcc
......@@ -6,7 +6,7 @@ version: '[% c("abbrev") %]'
use_container: 1
gcc_version: 6.4.0
gcc_version: 9.2.0
- automake
- build-essential
......@@ -30,7 +30,6 @@ targets:
- project: container-image
- URL: 'https://ftp.gnu.org/gnu/gcc/gcc-[% c("var/gcc_version") %]/gcc-[% c("var/gcc_version") %].tar.xz'
sha256sum: 850bf21eafdfe5cd5f6827148184c08c4a0852a37ccf36ce69855334d2c914d4
sha256sum: ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206
- name: binutils
project: binutils
- filename: libtool-sort.patch
From 494c17dc2bf45b8155fb9a14178ab48f01bc12a8 Mon Sep 17 00:00:00 2001
From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 5 Jul 2018 19:13:45 +0000
Subject: [PATCH 1/1] * libtool.m4: Sort output of 'find' to enable
deterministic builds. * ltmain.sh: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262451 138bc75d-0d04-0410-961f-82ee72b054a4
ChangeLog | 5 +++++
libtool.m4 | 8 ++++----
ltmain.sh | 4 ++--
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/libtool.m4 b/libtool.m4
index 24d13f3..940faaa 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 9503ec8..79f9ba8 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2917,7 +2917,7 @@ func_extract_archives ()
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"
- 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`
......@@ -39,6 +39,9 @@ openssldir=/var/tmp/dist/openssl
[% END %]
tar -C /var/tmp/build -xf [% c('input_files_by_name/zlib') %]
# XXX: It's a bit unfortunate but we need the pthread dll here as libevent
# gets compiled with pthread support once it is enabled in GCC, which we need
# to do as otherwise the Rust compilaton breaks.
mingwlibs=/var/tmp/dist/mingw-w64/[% c("arch") %]-w64-mingw32/bin/
cp $zlibdir/lib/*.dll $openssldir/bin/*.dll $libeventdir/bin/*.dll \
$gcclibs/*.dll $mingwlibs/libwinpthread-1.dll $distdir/Tor/
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment