[ITP] mingw-w64 Second try

Charles Wilson cygwin@cwilson.fastmail.fm
Tue Aug 31 19:32:00 GMT 2010


On 8/25/2010 12:19 AM, JonY wrote:
> since cygport and gcc has been updated, I can do the packaging without
> any local hacks.
>
> Here are the packages.

Overall comments: I see you reverted to bundling the DLLs with the 
compiler packages (e.g. no separate mingw64-x86_64-libfoo-* tarballs). 
While it isn't the way I would do it, that's your choice as maintainer 
(and Yaakov would agree with you, not me).

Many of the setup.hint's specify
requires: mingw64-x86_64-gcc

I *think* that should be
requires: mingw64-x86_64-gcc-core.

You don't actually HAVE a 'mingw64-x86_64-gcc' package, except for the 
source-only one.  And I'm sure you don't mean to require everybody to 
install the source code...

> mingw64-x86_64-pthreads
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-pthreads/mingw64-x86_64-pthreads-20100619-1.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-pthreads/mingw64-x86_64-pthreads-20100619-1-src.tar.bz2/download

OK, and rebuilds fine from source.

> mingw64-x86_64-headers
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-headers/mingw64-x86_64-headers-svn3433-1-src.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-headers/mingw64-x86_64-headers-svn3433-1.tar.bz2/download

Rebuilds fine from source (*), but the binary tarball above is not ok. 
It has the headers in the following directory:
   usr/x86_64-w64-mingw32/sys-root/mingw/x86_64-w64-mingw32/include/
instead of
   usr/x86_64-w64-mingw32/sys-root/mingw/include/

Now, if I *rebuild*, the binary tarball generated has the headers in the 
correct spot; I think you just uploaded an old version.

> mingw64-x86_64-runtime
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-runtime/mingw64-x86_64-runtime-20100809-1.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-runtime/mingw64-x86_64-runtime-20100809-1-src.tar.bz2/download

OK, and rebuilds fine from source (*).

> mingw64-x86_64-binutils
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-binutils/mingw64-x86_64-binutils-2.20.51-1-src.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-binutils/mingw64-x86_64-binutils-2.20.51-1.tar.bz2/download

OK, and rebuilds fine from source.

mingw64-x86_64-gcc-*
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-gcc/mingw64-x86_64-gcc-fortran/mingw64-x86_64-gcc-fortran-4.5.1-1.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-gcc/mingw64-x86_64-gcc-core/mingw64-x86_64-gcc-core-4.5.1-1.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-gcc/mingw64-x86_64-gcc-g%2B%2B/mingw64-x86_64-gcc-g%2B%2B-4.5.1-1.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-gcc/mingw64-x86_64-gcc-ada/mingw64-x86_64-gcc-ada-4.5.1-1.tar.bz2/download
> https://sourceforge.net/projects/mingw-w64/files/Cygwin%20Snapshots/dist/mingw64-x86_64-gcc/mingw64-x86_64-gcc-objc/mingw64-x86_64-gcc-objc-4.5.1-1.tar.bz2/download

OK, and (mostly) rebuilds fine from source. I had to comment out the Ada 
parts.  Even though I had gcc4-ada-4.3.4 installed, rebuilding your 
package with Ada enabled failed.  However, I've *never* tried to build 
Ada before, so it may be that I'm missing some pre-requisite.

Or does building gcc-4.5.x Ada require a newer native Ada compiler than 
4.3.4?


(*) I notice that both the -headers and -runtime cygport included this 
line as the final command in src_install:

mv ${D}${CROSS_PREFIX}/${CROSS_HOST}/* ${D}${CROSS_PREFIX}

I see the same thing when I tried to use my old mingw*-zlib cygport; I 
think the problem is in cygport(1), and your cygport(5) is just working 
around the issue.


To sum up, assuming the Ada thing has a reasonable explanation, and the 
setup.hints are fixed, I think this is GTG.


If you want to hold off and see what Yaakov does about the issue below, 
and maybe revise your cygport(5)'s based on a new release of cygport(1), 
that's up to you.



========== POSSIBLE CYGPORT(1) BUG =============
Yaakov?

the config.status for includedir has this:
	S["includedir"]="${prefix}/include"
but other dirs are explicit:
	S["bindir"]="/usr/x86_64-w64-mingw32/sys-root/mingw/bin"

Looking at the configure command (from config.status):

'/usr/src/mingw64/headers/mingw64-x86_64-headers-svn3433-1/src/mingw-w64-headers/configure' 
 
'--srcdir=/usr/src/mingw64/headers/mingw64-x86_64-headers-svn3433-1/src/mingw-w64-headers' 
'--prefix=/usr/x86_64-w64-mingw32/sys-root/mingw' 
'--exec-prefix=/usr/x86_64-w64-mingw32/sys-root/mingw' 
'--bindir=/usr/x86_64-w64-mingw32/sys-root/mingw/bin' 
'--sbindir=/usr/x86_64-w64-mingw32/sys-root/mingw/sbin' 
'--libexecdir=/usr/x86_64-w64-mingw32/sys-root/mingw/lib' 
'--datadir=/usr/x86_64-w64-mingw32/sys-root/mingw/share' 
'--localstatedir=/usr/x86_64-w64-mingw32/sys-root/mingw/var' 
'--sysconfdir=/usr/x86_64-w64-mingw32/sys-root/mingw/etc' 
'--datarootdir=/usr/x86_64-w64-mingw32/sys-root/mingw/share' 
'--docdir=/usr/x86_64-w64-mingw32/sys-root/mingw/share/doc/mingw64-x86_64-headers' 
'-C' '--build=i686-pc-cygwin' '--host=x86_64-w64-mingw32' 
'--target=x86_64-w64-mingw32' '--enable-sdk=all' 
'build_alias=i686-pc-cygwin' 'host_alias=x86_64-w64-mingw32' 
'target_alias=x86_64-w64-mingw32' $ac_configure_extra_args --no-create 
--no-recursion

I see that --includedir is missing.  I think that is an oversight in 
autotools.cygclass, and --includedir should be one of the elements 
specified in confargs:

confargs="--prefix=${prefix} --exec-prefix=${prefix} 
--bindir=${prefix}/bin \
--sbindir=${prefix}/sbin --libexecdir=${prefix}/lib \
--datadir=${prefix}/share --localstatedir=${prefix%/usr}/var \
--sysconfdir=${prefix%/usr}/etc"

I'm not real sure about the ${prefix%/...} manipulation, either, 
especially for cross. (The effect of this manipulation for a cross for 
$host=mingw is not apparent, since $prefix doesn't actually end in /usr 
in that case).  But...the current code seems to be incorrect, IMO.


As an aside, I happened to notice there is a bug in cyginstall() when 
USE_DESTDIR=0, inherit cross, and $host is mingw: localstatedir (/var) 
and sysconfdir (/etc) aren't handled correctly.  But that has little to 
do with JonY's mingw-w64 ITP.

--
Chuck



More information about the Cygwin-apps mailing list