delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2016/06/06/03:48:16

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:to:from:subject:date:message-id:references
:mime-version:content-type:content-transfer-encoding; q=dns; s=
default; b=dY6m9d+RPEHcHQbT26p//4A/Ya2xlr9HZNVjts6/yEeZxi64/fZRy
/uXycq0yZP+v2gEWYrsuFc+/EgxMOCMhuMwry/cdVm2Fhr0iplWjed8gAxDCNnaV
bdG1R2LiuQqPlpj/cm0z90okSrAUPdCBccDhknRhOrvnsr42+sQZUA=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:to:from:subject:date:message-id:references
:mime-version:content-type:content-transfer-encoding; s=default;
bh=DRQ+m0hj9l81RsupxMKg/4RJzvE=; b=mM/i3TN/pjNorZ8AwdbfBjL0U+BH
Ik7E1IVBbNaoiecQAE1MGuyPzyDkNV6P4He/QrzFFZtgv4NjO6bxLSIzIB4rDSGV
crgRy+r0l9fKWF3QrI6xdRcjcpbRk/uISW+NKPhmUyu87gIKlKKZfIBirsa76kv0
+YJ3VPsBxUGlkYc=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=0.5 required=5.0 tests=AWL,BAYES_05,FSL_HELO_BARE_IP_2,RCVD_IN_DNSWL_LOW,RCVD_NUMERIC_HELO,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=no version=3.3.2 spammy=H*M:post, UD:eu.org, karasikeuorg, karasik.eu.org
X-HELO: plane.gmane.org
To: cygwin AT cygwin DOT com
From: Achim Gratz <Stromeko AT NexGo DOT DE>
Subject: Re: bug: configuration problem in perl with gcc libs
Date: Mon, 6 Jun 2016 07:47:20 +0000 (UTC)
Lines: 73
Message-ID: <loom.20160606T092422-52@post.gmane.org>
References: <20160603161419 DOT GA5300 AT karasik2>
Mime-Version: 1.0
User-Agent: Loom/3.14 (http://gmane.org/)
X-IsSubscribed: yes
Note-from-DJ: This may be spam

Dmitry Karasik <dmitry <at> karasik.eu.org> writes:
> Generally perl extensions don't have a way to specify library to link with
> directly, they do that through ExtUtils::MakeMaker, the standard tool for
that.
> Which in turn tries to resolve '-llibname' using its own
> compile-time-configured internal list of lib paths.

There are several parts in Perl that try nonsensical workarounds on Cygwin,
especially when the folks that implemented those workarounds apparently
haven't used Cygwin much.  Reimplementing library search is one such folly,
since it doesn't make the linker and loader follow those "make it more
UNIX-like" ideas no matter how hard you try...

> The problem is confirmed, when, if I edit perl configuration file
> /usr/lib/perl5/5.22/i686-cygwin-threads-64int/Config.pm, everything works:
> 
>      ldlibpthname => 'PATH',
> -    libpth => '/usr/lib',
> +    libpth => '/usr/lib /usr/lib/gcc/i686-pc-cygwin/5.3.0',
>      osname => 'cygwin',

This is the wrong thing to do.  We don't want to tie Perl to some specific
gcc version.
 
> I believe perl needs to be built with the properly set/found libpth in
advance.

No, ExtUtils::MakeMaker shouldn't be trying to re-implement the library
search algorithm if it doesn't understand how its supposed to be working
(note that I don't claim to fully understand it myself).  There are other
ways to check if linking to some library works.  If it wouldn't remove the
library from the link line everything would work out just fine AFAICS. 
Please report this as a bug against MakeMaker and perhaps drop a note on
p5p.  I'll try to find some time to look at what MakeMaker is doing and why,
so it can be fixed properly.  Could you please let me know what distribution
you were trying to build that triggers the problem?

> The diff below is the closest thing resembling a patch for the perl source
> package I could come with:
> 
> --- Configure.0	2016-06-03 17:45:43.102008000 +0200
> +++ Configure	2016-06-03 17:46:10.077558700 +0200
>  <at>  <at>  -4948,6 +4948,16  <at>  <at> 
>  		   *) libpth="$libpth $j";;
>  		   esac
>  	       fi
> +               # add gcc-specific libpath
> +               if echo "$i" | grep -q "/usr/lib/gcc/"; then
> +	           j="`$echo $i|$sed 's,/include$,,'`"
> +	           if $test -d $j; then
> +	               case " $libpth " in
> +	               *" $j "*) ;;
> +	               *) libpth="$libpth $j";;
> +	               esac
> +	           fi
> +               fi
>  	    done
>  	    libpth="`$echo $libpth|$sed 's/^ //'`"
>  	    for xxx in $libpth $loclibpth $plibpth $glibpth; do
> 
> The idea for the patch is taken from strawberry perl, which has the gcc
libpath
> included in configuration.  I couldn't find though exactly how they manage to
> include the path, during the configuration or when building, but it seems they
> somehow add it explicitly, using a custom tool for the MinGW perl build:

I doubt this is the correct thing to do for Strawberry Perl (but I have no
in-depth knowledge of MinGW), but as said above it's certainly the wrong
thing to do on Cygwin.


Regards,
Achim.


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019