Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upPackage all required components of the MinGW toolchain #11782
Comments
This comment has been minimized.
This comment has been minimized.
|
Accepted for 1.0, assigning P-backcompat-libs (in lieu of P-backcompat-tools) |
This comment has been minimized.
This comment has been minimized.
|
May depend on #11937. |
brson
referenced this issue
Apr 29, 2014
Closed
Installing Rust on Windows via the installer may lead to linking failures/conflicts #13784
This comment has been minimized.
This comment has been minimized.
|
My current opinion is that just bundling gcc is the path of least resistence here. gcc's dependencies are no greater than ld itself. The only sticking point is that gcc's license does include the GPL runtime exception, unlike the other components. I'm investigating the legal issues. |
This comment has been minimized.
This comment has been minimized.
|
I still think we would be better off bundling |
This comment has been minimized.
This comment has been minimized.
|
Building clang is a possibility for the future but it is a bigger and more controversial change. Using clang to drive ld still requires bundling the GNU linker, so doesn't save us any appreciable amount of work. I would rather still just use lld directly, skipping clang entirely. |
This comment has been minimized.
This comment has been minimized.
|
The comparison would be pre-built clang (used as a library) vs. pre-built gcc. It could be built as part of building Rust but it's no more necessary than building gcc AFAICT. |
This comment has been minimized.
This comment has been minimized.
|
Well, I guess it does need to match the LLVM version. |
This comment has been minimized.
This comment has been minimized.
|
Still waiting on legal advice re packaging gcc. |
This comment has been minimized.
This comment has been minimized.
|
Packaging gcc is fine, considered 'aggregation' in GPL terms, which is allowed in most circumstances, including this one. |
This comment has been minimized.
This comment has been minimized.
|
Also need to package 'ar'. |
This comment has been minimized.
This comment has been minimized.
|
LLVM has an |
brson
self-assigned this
Aug 1, 2014
This comment has been minimized.
This comment has been minimized.
|
Dropping these files into rust installation seems to be sufficient for self-hosting:
Note on |
This comment has been minimized.
This comment has been minimized.
|
Given that gcc binaries are target-specific, it probably isn't a great idea to drop them in the root though. I'm thinking something like |
bors
added a commit
that referenced
this issue
Sep 11, 2014
bors
closed this
in
#16957
Sep 12, 2014
brson
reopened this
Sep 12, 2014
This comment has been minimized.
This comment has been minimized.
|
I'd like to give this some thorough testing before calling it closed. |
This comment has been minimized.
This comment has been minimized.
|
The Win64 installer is not working. libwinpthread-1.dll is missing (which is strange since the bots are not supposed to be using the pthread mingw). Dependency walker also says that api-ms-win-core-kernel32-private-l1-1-1.dll and two other similarly-named required DLL's aren't available; I have no idea what those are. Win32 build tests fine! |
This comment has been minimized.
This comment has been minimized.
|
@brson, perhaps the nightly bot got installed with "posix" mingw? We can package libwinpthread-1.dll too, but I think the preferable solution would be not having this dependency at all. You can ignore "missing" api-ms-win-... dependencies,- they are not missing, just not on PATH, but Windows knows where to find them. |
This comment has been minimized.
This comment has been minimized.
|
@vadimcn I will investigate the bot configuration. |
This comment has been minimized.
This comment has been minimized.
|
I believe what's happening is that the distribution script is picking up the wrong libgcc_s_seh-1.dll and packaging it. msys2 comes with its own copy that does use emulated pthreads. I'm going to try switching which order the msys2/mingw-w64 paths are in in |
This comment has been minimized.
This comment has been minimized.
|
Does that msys2 instance have gcc package installed in it? Mine doesn't, and it doesn't contain the libgcc_s_seh-1 dll either. |
This comment has been minimized.
This comment has been minimized.
|
I manually removed all vestiges of msys2's mingw64 toolchain on my system to make sure I wasn't accidentally picking up any unwanted dependencies. |
This comment has been minimized.
This comment has been minimized.
|
@vadimcn msys2 does not appear to have gcc installed but I may have e.g. installed and uninstalled during the initial provisioning. |
This comment has been minimized.
This comment has been minimized.
|
The problem seems to be with the 'innoextract' tool we have installed on that bot via msys, which pulls in gcc-libs. I'll look into fixing that tomorrow. |
This comment has been minimized.
This comment has been minimized.
|
I've modified the win64 VM to not contain the pthread-based gcc-libs. Next nightly should work. |
This comment has been minimized.
This comment has been minimized.
|
New nightly still didn't work. Continuing to investigate. |
This comment has been minimized.
This comment has been minimized.
|
X86_64 nightlies work correctly now. |
brson
closed this
Sep 18, 2014
This comment has been minimized.
This comment has been minimized.
|
Reopening because of complications in #17442 that make this not solved. |
brson
reopened this
Sep 25, 2014
This comment has been minimized.
This comment has been minimized.
|
Per @alexcrichton I'm going to close this because the (statically compiled) cargo binaries should work without mingw; the problem cargo is encountering is just with building. |
brson commentedJan 24, 2014
Easier than #9367. We're already packaging a few of MinGW's binaries. There are probably just a few more pieces needed to have a completely self contained toolchain. This will require either using the linker directly on windows or packaging all of gcc with Rust.
Nominating.