Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-09-20 Thread Bill Allombert
On Sun, Sep 18, 2011 at 11:59:24PM +0200, Stephen Kitt wrote:
 Hi again,
 
 On Sat, 17 Sep 2011 14:58:09 +0200, Stephen Kitt st...@sk2.org wrote:
  On Mon, 12 Sep 2011 21:54:44 +0200, Bill Allombert
  bill.allomb...@math.u-bordeaux1.fr wrote:
   But that raises the question of the proper way to find ar/dlltool for the
   compiler target platform.
  
  I'd suggest a two-pronged approach: first check to see whether a
  target-triplet-prefixed tool exists, and only if that fails ask gcc. In
  addition, if gcc's answer doesn't include the binary's path, it has to be
  ignored - if gcc doesn't find a given program in its search path it just
  outputs the program name as given on the command line!
 
 Scratch that, it turns out autoconf already knows how to do this when given
 an appropriate --host directive: AC_CHECK_TOOL([DLLTOOL], [dlltool], [:])
 does the trick. This is used for example by gnupg to find ar, and LibreOffice
 to find ar, dlltool, windres and others.

The software in point is not using autoconf and is not using target-triplet 
either.
All it knows about is the compiler. 

 On Sun, 18 Sep 2011 09:29:45 +0800, Bin Tian tian...@cernet.edu.cn wrote:
  Does creating symbol links in /usr/lib/gcc/$target/$version/ violates 
  Debian policy? cc1 is in that folder. Please consider it.

Alternatively, you can patch gcc so that it returns
i686-w64-mingw32-foo for all unknown foo. 

 Strictly speaking I believe it wouldn't violate policy, but I'd rather not
 add links from a gcc-internal directory to binaries provided by binutils...

I do not see which policy would be violated, not even the no-broken-link rule
since gcc-mingw-w64 depends on binutils-mingw-w64.

The binaries are provided by binutils-mingw-w64, but not under their plain name.
There should be a way to retrieve the correct prefix (which is no canonical,
old mingw32 used a different one). There might be one, but I fail to see it.

Ideally the compiler alone should be sufficient to build a shared library.
This work on linux. Unfortunately this is not the case on mingw: you need to
run ranlib on .a files and you need dlltool to build correct DLL.

 Could either one (or both) of you give the AC_CHECK_TOOL approach a shot? And
 send patches upstream of course if it works!

Not everybody is using autoconf/libtool.

Cheers,
PS: I managed to build readline with termcap.
-- 
Bill. ballo...@debian.org

Imagine a large red swirl here. 



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-09-18 Thread Stephen Kitt
Hi again,

On Sat, 17 Sep 2011 14:58:09 +0200, Stephen Kitt st...@sk2.org wrote:
 On Mon, 12 Sep 2011 21:54:44 +0200, Bill Allombert
 bill.allomb...@math.u-bordeaux1.fr wrote:
  But that raises the question of the proper way to find ar/dlltool for the
  compiler target platform.
 
 I'd suggest a two-pronged approach: first check to see whether a
 target-triplet-prefixed tool exists, and only if that fails ask gcc. In
 addition, if gcc's answer doesn't include the binary's path, it has to be
 ignored - if gcc doesn't find a given program in its search path it just
 outputs the program name as given on the command line!

Scratch that, it turns out autoconf already knows how to do this when given
an appropriate --host directive: AC_CHECK_TOOL([DLLTOOL], [dlltool], [:])
does the trick. This is used for example by gnupg to find ar, and LibreOffice
to find ar, dlltool, windres and others.

On Sun, 18 Sep 2011 09:29:45 +0800, Bin Tian tian...@cernet.edu.cn wrote:
 Does creating symbol links in /usr/lib/gcc/$target/$version/ violates 
 Debian policy? cc1 is in that folder. Please consider it.

Strictly speaking I believe it wouldn't violate policy, but I'd rather not
add links from a gcc-internal directory to binaries provided by binutils...

Could either one (or both) of you give the AC_CHECK_TOOL approach a shot? And
send patches upstream of course if it works!

Regards,

Stephen


signature.asc
Description: PGP signature


Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-09-17 Thread Stephen Kitt
Hi Bill,

On Mon, 12 Sep 2011 21:54:44 +0200, Bill Allombert
bill.allomb...@math.u-bordeaux1.fr wrote:
 On Thu, Aug 04, 2011 at 08:36:52AM +0200, Stephen Kitt wrote:
  On Wed, 29 Jun 2011 12:14:14 +0800, Bin Tian tian...@cernet.edu.cn
  wrote:
   A possible resolution is to create symbol links for these tools in 
   /usr/lib/gcc/$target/$version or /usr/$target/bin
   
   Or just specify the absolute path of these tools when configuring the 
   package.
  
  Do you have a particular use-case which requires using -print-prog-name to
  find these tools?
 
 Sorry to interfer, but I have. Some programs do
 DLLTOOL = `$CC -print-prog-name=dlltool 2/dev/null`
 to derive DLLTOOL from CC. This saves the trouble of
 setting DLLTOOL separately.
 
 This is useful when cross-compiling and it worked with the old mingw32:
 i586-mingw32msvc-gcc -print-prog-name=dlltool
 /usr/lib/gcc/i586-mingw32msvc/4.4.4/../../../../i586-mingw32msvc/bin/dlltool

That works because mingw32-binutils installs binaries
in /usr/i586-mingw32msvc/bin, which is part of i586-mingw32msvc-gcc's search
path for programs (as shown by the -print-search-dirs option).

I chose not to install binaries in /usr/$target/bin since it goes against
Debian policy. Eventually I hope to drop /usr/$target entirely, once the
multiarch policy is extended to cross-compiling packages...

  From what I've been able to determine, -print-prog-name is only supposed
  to help users determine which tools gcc is using, and concerns itself
  only with tools which gcc uses directly: as and ld from binutils, and the
  various language processors (cc1, cc1plus, f951, gnat1, lto1 etc.) along
  with collect2. For all these programs -print-prog-name gives the correct
  result. i686-w64-mingw32-ar which you mention isn't used by gcc.
 
 But that raises the question of the proper way to find ar/dlltool for the
 compiler target platform.

I'd suggest a two-pronged approach: first check to see whether a
target-triplet-prefixed tool exists, and only if that fails ask gcc. In
addition, if gcc's answer doesn't include the binary's path, it has to be
ignored - if gcc doesn't find a given program in its search path it just
outputs the program name as given on the command line!

 In any case, I like to thank you one thousand time for packaging mingw-w64
 so I can finally ignore mingw32 and its non-maintainer.

You're welcome!

 Now, if only I could get readline to build...

Good luck...

Regards,

Stephen


signature.asc
Description: PGP signature


Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-09-17 Thread Bin Tian



On 2011年09月17日 20:58, Stephen Kitt wrote:

Hi Bill,

On Mon, 12 Sep 2011 21:54:44 +0200, Bill Allombert
bill.allomb...@math.u-bordeaux1.fr  wrote:

On Thu, Aug 04, 2011 at 08:36:52AM +0200, Stephen Kitt wrote:

On Wed, 29 Jun 2011 12:14:14 +0800, Bin Tiantian...@cernet.edu.cn
wrote:

A possible resolution is to create symbol links for these tools in
/usr/lib/gcc/$target/$version or /usr/$target/bin

Or just specify the absolute path of these tools when configuring the
package.


Do you have a particular use-case which requires using -print-prog-name to
find these tools?


Sorry to interfer, but I have. Some programs do
DLLTOOL = `$CC -print-prog-name=dlltool 2/dev/null`
to derive DLLTOOL from CC. This saves the trouble of
setting DLLTOOL separately.

This is useful when cross-compiling and it worked with the old mingw32:
i586-mingw32msvc-gcc -print-prog-name=dlltool
/usr/lib/gcc/i586-mingw32msvc/4.4.4/../../../../i586-mingw32msvc/bin/dlltool


That works because mingw32-binutils installs binaries
in /usr/i586-mingw32msvc/bin, which is part of i586-mingw32msvc-gcc's search
path for programs (as shown by the -print-search-dirs option).

I chose not to install binaries in /usr/$target/bin since it goes against
Debian policy. Eventually I hope to drop /usr/$target entirely, once the
multiarch policy is extended to cross-compiling packages...

Does creating symbol links in /usr/lib/gcc/$target/$version/ violates 
Debian policy? cc1 is in that folder. Please consider it.


Best Regards

Bin Tian



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-09-12 Thread Bill Allombert
On Thu, Aug 04, 2011 at 08:36:52AM +0200, Stephen Kitt wrote:
 Hi,
 
 On Wed, 29 Jun 2011 12:14:14 +0800, Bin Tian tian...@cernet.edu.cn wrote:
  A possible resolution is to create symbol links for these tools in 
  /usr/lib/gcc/$target/$version or /usr/$target/bin
  
  Or just specify the absolute path of these tools when configuring the 
  package.
 
 Do you have a particular use-case which requires using -print-prog-name to
 find these tools?

Sorry to interfer, but I have. Some programs do
DLLTOOL = `$CC -print-prog-name=dlltool 2/dev/null`
to derive DLLTOOL from CC. This saves the trouble of
setting DLLTOOL separately.

This is useful when cross-compiling and it worked with the old mingw32:
i586-mingw32msvc-gcc -print-prog-name=dlltool
/usr/lib/gcc/i586-mingw32msvc/4.4.4/../../../../i586-mingw32msvc/bin/dlltool

 From what I've been able to determine, -print-prog-name is only supposed to
 help users determine which tools gcc is using, and concerns itself only with
 tools which gcc uses directly: as and ld from binutils, and the various
 language processors (cc1, cc1plus, f951, gnat1, lto1 etc.) along with
 collect2. For all these programs -print-prog-name gives the correct result.
 i686-w64-mingw32-ar which you mention isn't used by gcc.

But that raises the question of the proper way to find ar/dlltool for the 
compiler
target platform.

In any case, I like to thank you one thousand time for packaging mingw-w64 so I 
can finally ignore mingw32 and its non-maintainer.

Now, if only I could get readline to build...

Cheers,
-- 
Bill. ballo...@debian.org

Imagine a large red swirl here. 



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-08-04 Thread Stephen Kitt
Hi,

On Wed, 29 Jun 2011 12:14:14 +0800, Bin Tian tian...@cernet.edu.cn wrote:
 A possible resolution is to create symbol links for these tools in 
 /usr/lib/gcc/$target/$version or /usr/$target/bin
 
 Or just specify the absolute path of these tools when configuring the 
 package.

Do you have a particular use-case which requires using -print-prog-name to
find these tools?

From what I've been able to determine, -print-prog-name is only supposed to
help users determine which tools gcc is using, and concerns itself only with
tools which gcc uses directly: as and ld from binutils, and the various
language processors (cc1, cc1plus, f951, gnat1, lto1 etc.) along with
collect2. For all these programs -print-prog-name gives the correct result.
i686-w64-mingw32-ar which you mention isn't used by gcc.

I tried the second solution you suggest, but I couldn't get it to work. As
far as I can see only as and ld are handled explicitly, anything else is
derived from gcc's search paths (look for programs in
the output of i686-w64-mingw32-gcc -print-search-dirs); see find_a_file()
in gcc/gcc.c. I don't think the first solution is appropriate, since it would
involve adding links from a gcc-specific directory to binutils-provided
binaries; but it wouldn't violate policy (since gcc-mingw-w64 depends on
binutils-mingw-w64 anyway) so it would be possible if necessary.

Regards,

Stephen



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-06-28 Thread Bin Tian
Package: gcc-mingw-w64
Version: 4.6.0-11
Severity: normal

The output of `i686-w64-mingw32-gcc --print-prog-name=ar` is ar, it is
obviously incorrect.

In fact, it gives wrong result for all tools except as and ld.

x86_64-w64-mingw32-gcc have the same problem.

Regards,
Bin Tian

-- System Information:
Debian Release: 6.0.2
  APT prefers stable
  APT policy: (990, 'stable'), (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.39-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=zh_CN.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gcc-mingw-w64 depends on:
ii  binutils-mingw-w642.21.51.20110523-1 Cross-binutils for Win32 and Win64
ii  libc6 2.13-7 Embedded GNU C Library: Shared lib
ii  libcloog-ppl0 0.15.9-3   the Chunky Loop Generator (runtime
ii  libgmp10  2:5.0.1+dfsg-7 Multiprecision arithmetic library
ii  libmpc2   0.8.2-1+b1 multiple precision complex floatin
ii  libmpfr4  3.0.0-2multiple precision floating-point 
ii  libppl-c4 0.11.2-3   Parma Polyhedra Library (C interfa
ii  mingw-w64-dev 1.0+20110523-1 Development files for MinGW-w64
ii  zlib1g1:1.2.3.4.dfsg-3   compression library - runtime

Versions of packages gcc-mingw-w64 recommends:
ii  libstdc++6-4.6-dev4.6.0-14   GNU Standard C++ Library v3 (devel

Versions of packages gcc-mingw-w64 suggests:
pn  gcc-4.6-locales   none (no description available)

-- no debconf information



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#632003: i686-w64-mingw32-gcc --print-prog-name gives wrong result for some tools

2011-06-28 Thread Bin Tian
A possible resolution is to create symbol links for these tools in 
/usr/lib/gcc/$target/$version or /usr/$target/bin


Or just specify the absolute path of these tools when configuring the 
package.


Regards,
Bin Tian

On 2011年06月29日 11:55, Bin Tian wrote:

Package: gcc-mingw-w64
Version: 4.6.0-11
Severity: normal

The output of `i686-w64-mingw32-gcc --print-prog-name=ar` is ar, it is
obviously incorrect.

In fact, it gives wrong result for all tools except as and ld.

x86_64-w64-mingw32-gcc have the same problem.

Regards,
Bin Tian

-- System Information:
Debian Release: 6.0.2
   APT prefers stable
   APT policy: (990, 'stable'), (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.39-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=zh_CN.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gcc-mingw-w64 depends on:
ii  binutils-mingw-w642.21.51.20110523-1 Cross-binutils for Win32 and Win64
ii  libc6 2.13-7 Embedded GNU C Library: Shared lib
ii  libcloog-ppl0 0.15.9-3   the Chunky Loop Generator (runtime
ii  libgmp10  2:5.0.1+dfsg-7 Multiprecision arithmetic library
ii  libmpc2   0.8.2-1+b1 multiple precision complex floatin
ii  libmpfr4  3.0.0-2multiple precision floating-point
ii  libppl-c4 0.11.2-3   Parma Polyhedra Library (C interfa
ii  mingw-w64-dev 1.0+20110523-1 Development files for MinGW-w64
ii  zlib1g1:1.2.3.4.dfsg-3   compression library - runtime

Versions of packages gcc-mingw-w64 recommends:
ii  libstdc++6-4.6-dev4.6.0-14   GNU Standard C++ Library v3 (devel

Versions of packages gcc-mingw-w64 suggests:
pn  gcc-4.6-localesnone  (no description available)

-- no debconf information





--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org