[tor-commits] [tor-browser-build/master] Bug 31584: Clean up mingw-w64 project

boklm at torproject.org boklm at torproject.org
Mon Sep 23 17:25:16 UTC 2019


commit 67a38dec8014e4ba33dc062527e74df2aca1f3db
Author: Georg Koppen <gk at torproject.org>
Date:   Mon Sep 16 06:41:49 2019 +0000

    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.
---
 projects/mingw-w64/build              | 11 ++----
 projects/mingw-w64/config             |  5 ++-
 projects/mingw-w64/libtool-sort.patch | 67 -----------------------------------
 projects/tor/build                    |  3 ++
 4 files changed, 7 insertions(+), 79 deletions(-)

diff --git a/projects/mingw-w64/build b/projects/mingw-w64/build
index 4be660d..111205c 100644
--- a/projects/mingw-w64/build
+++ b/projects/mingw-w64/build
@@ -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
 # CFLAGS_FOR_TARGET.
-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
diff --git a/projects/mingw-w64/config b/projects/mingw-w64/config
index b088c8e..1ccbcdf 100644
--- a/projects/mingw-w64/config
+++ b/projects/mingw-w64/config
@@ -6,7 +6,7 @@ version: '[% c("abbrev") %]'
 var:
   container:
     use_container: 1
-  gcc_version: 6.4.0
+  gcc_version: 9.2.0
   deps:
     - automake
     - build-essential
@@ -30,7 +30,6 @@ targets:
 input_files:
   - 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
diff --git a/projects/mingw-w64/libtool-sort.patch b/projects/mingw-w64/libtool-sort.patch
deleted file mode 100644
index 7c7fa85..0000000
--- a/projects/mingw-w64/libtool-sort.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 494c17dc2bf45b8155fb9a14178ab48f01bc12a8 Mon Sep 17 00:00:00 2001
-From: law <law at 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 ()
- 	    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.9.3
-
diff --git a/projects/tor/build b/projects/tor/build
index 6b684a0..0705626 100644
--- a/projects/tor/build
+++ b/projects/tor/build
@@ -39,6 +39,9 @@ openssldir=/var/tmp/dist/openssl
   [% END %]
   tar -C /var/tmp/build -xf [% c('input_files_by_name/zlib') %]
   zlibdir=/var/tmp/build/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/





More information about the tor-commits mailing list