X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=BAYES_00 X-Spam-Check-By: sourceware.org Message-ID: <4AF429A0.4050505@x-ray.at> Date: Fri, 06 Nov 2009 14:50:24 +0100 From: Reini Urban User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.4) Gecko/20091017 SeaMonkey/2.0 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: Cygwin 1.7 perl build problems. References: <903472 DOT 76210 DOT qm AT web30803 DOT mail DOT mud DOT yahoo DOT com> In-Reply-To: <903472.76210.qm@web30803.mail.mud.yahoo.com> Content-Type: multipart/mixed; boundary="------------010407020707030107060006" X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com --------------010407020707030107060006 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Larry W. Virden schrieb: > Hello. I am using the Cygwin 1.7 (beta) environment. Within Cygwin, there is a version of perl 5.10.0. > > I fetch the Tk module source, extract it, cd into the Tk-804.028 directory and type the following: > > $ perl Makefile.PL > Cannot find '/usr/lib/perl5/5.10/i686-cygwin/CORE/perl.h' have you installed /usr/bin/perl? > Compilation failed in require at Makefile.PL line 37. > BEGIN failed--compilation aborted at Makefile.PL line 39. > > lwv27 AT PC89067 ~/.cpan/build/Tk-804.028-n8BLky > $ ls '/usr/lib/perl5/5.10/i686-cygwin/CORE/perl.h' > /usr/lib/perl5/5.10/i686-cygwin/CORE/perl.h > > Is this a problem that anyone recognizes and has identified a solution? > > I checked the Makefile.PL file, and it has normal Cygwin line endings. > > I have tried one other install - that of a newer version of the CPAN module, used to fetch source from the perl community module repository. > It too fails, but in a rather more peculiar manner: > $ /bin/perl Makefile.PL > Unable to find a perl 5 (by these names: /usr/bin/perl.exe perl.exe perl5.exe perl5.10.0.exe miniperl.exe, in these dirs: /home/lwv27/bin /usr/local/bin /usr/bin /bin /usr/X11R6/bin /cygdrive/c/Program Files/Perl/bin/ /cygdrive/c/NTSA/Bin /cygdrive/c/NTSA/4NT /cygdrive/c/Program Files/Activestate Tcl/8.4.10.1/bin/ /cygdrive/c/WINDOWS/system32 /cygdrive/c/WINDOWS /cygdrive/c/WINDOWS/System32/Wbem /cygdrive/c/i386 /cygdrive/c/Program Files/ATI Technologies/ATI.ACE/ /cygdrive/c/NTSA/Bin/ /cygdrive/c/Program Files/Rational/common /cygdrive/c/Program Files/Rational/ClearCase/bin /cygdrive/c/casnc/oracle/product/10.2.0/client_1/BIN/ /cygdrive/c/Program Files/Hummingbird/Connectivity/Accessories/ /cygdrive/c/Program Files/QuickTime/QTSystem/ /cygdrive/c/Program Files/Intel/DMIX /cygdrive/c/Products/apache-maven-2.2.1/bin /usr/local/bin /usr/bin) > Writing Makefile for CPAN > > $ /bin/perl --version > > This is perl, v5.10.0 built for cygwin-thread-multi-64int > (with 6 registered patches, see perl -V for more detail) > > Copyright 1987-2007, Larry Wall > > Perl may be copied only under the terms of either the Artistic License or the > GNU General Public License, which may be found in the Perl 5 source kit. > > Complete documentation for Perl, including FAQ lists, should be found on > this system using "man perl" or "perldoc perl". If you have access to the > Internet, point your browser at http://www.perl.org/, the Perl Home Page. > > > So in one case, perl says it cannot find itself, and in the other case, perl says it cannot find one of its headers that is present. I posted the attached patch for Tk-804.028 in February 2008 to this list to build Tk under cygwin. I believe the svn version at https://svn.perl.org/modules/Tk/trunk has this already. It builds fine, but there's still a known problem with the unix-eventhandler. I'll fix that when I have time. -- Reini Urban http://phpwiki.org/ http://murbreak.at/ --------------010407020707030107060006 Content-Type: text/x-patch; name="Tk-804.028.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="Tk-804.028.patch" difforig Tk-804.028 2008-02-17 Reini Urban * tkPort.h: cygwin does not define WIN32, only within pTk. So define it here. * pTk/mTk/tclUnix/tclUnix{Event,Notfy,Time}.c: They do not include tkUnixPort.h, so some declarations are missing under cygwin only. * Tk/MMutil.pm: -limm32 and -lcomctl32 are missing diff -ub Tk-804.028/Tk/MMutil.pm.orig --- Tk-804.028/Tk/MMutil.pm.orig 2007-05-05 18:37:55.000000000 +0000 +++ Tk-804.028/Tk/MMutil.pm 2008-02-17 19:52:16.843750000 +0000 @@ -550,7 +550,7 @@ { my $base = $Config{'libpth'}; $base =~ s#lib$#i386-mingw32/lib#; - my $extra = "-L$base -lcomdlg32 -lgdi32"; + my $extra = "-L$base -limm32 -lcomctl32 -lcomdlg32 -lgdi32"; my $libs = $att{'LIBS'}->[0]; $att{'LIBS'}->[0] = "$extra $libs"; } @@ -562,7 +562,7 @@ push(@opt,'LD' => 'gcc -shared'); if ($win_arch eq 'MSWin32') { - my $extra = "-L/lib/w32api -lcomdlg32 -lgdi32"; + my $extra = "-L/lib/w32api -limm32 -lcomctl32 -lcomdlg32 -lgdi32"; my $libs = $att{'LIBS'}->[0]; $att{'LIBS'}->[0] = "$extra $libs"; $att{'DEFINE'} .= ' -D__WIN32__ -D_WIN32 -DWINARCH_MSWIN32'; diff -ub Tk-804.028/pTk/mTk/tclUnix/tclUnixEvent.c.orig --- Tk-804.028/pTk/mTk/tclUnix/tclUnixEvent.c.orig 2007-05-05 18:39:41.000000000 +0000 +++ Tk-804.028/pTk/mTk/tclUnix/tclUnixEvent.c 2008-02-17 19:29:54.031250000 +0000 @@ -20,6 +20,11 @@ #include "Lang.h" #endif #ifdef TCL_EVENT_IMPLEMENT + +#ifdef __CYGWIN__ +# include +#endif + /* *---------------------------------------------------------------------- * diff -ub Tk-804.028/pTk/mTk/tclUnix/tclUnixNotfy.c.orig --- Tk-804.028/pTk/mTk/tclUnix/tclUnixNotfy.c.orig 2007-05-05 18:39:37.000000000 +0000 +++ Tk-804.028/pTk/mTk/tclUnix/tclUnixNotfy.c 2008-02-17 19:41:04.156250000 +0000 @@ -35,6 +35,34 @@ #endif extern Tcl_NotifierProcs tclOriginalNotifier; +#ifndef MASK_SIZE +/* under Cygwin we use tclUnix but tkWin. + So bring in some "tkUnixPort.h" definitions + */ +#ifdef HAVE_SYS_SELECT_H +# include +#endif + +/* + * The following macro defines the number of fd_masks in an fd_set: + */ + +#ifndef FD_SETSIZE +# ifdef OPEN_MAX +# define FD_SETSIZE OPEN_MAX +# else +# define FD_SETSIZE 256 +# endif +#endif +#if !defined(howmany) +# define howmany(x, y) (((x)+((y)-1))/(y)) +#endif +#ifndef NFDBITS +# define NFDBITS NBBY*sizeof(fd_mask) +#endif +#define MASK_SIZE howmany(FD_SETSIZE, NFDBITS) +#endif + /* * This structure is used to keep track of the notifier info for a * a registered file. diff -ub Tk-804.028/pTk/mTk/tclUnix/tclUnixTime.c.orig --- Tk-804.028/pTk/mTk/tclUnix/tclUnixTime.c.orig 2007-05-05 18:39:34.000000000 +0000 +++ Tk-804.028/pTk/mTk/tclUnix/tclUnixTime.c 2008-02-17 19:25:56.562500000 +0000 @@ -15,11 +15,15 @@ #include "Lang.h" #ifdef TCL_EVENT_IMPLEMENT - -#ifdef __EMX__ +#if TIME_WITH_SYS_TIME # include -#else # include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif #endif #if 0 diff -ub Tk-804.028/pTk/tkPort.h.orig --- Tk-804.028/pTk/tkPort.h.orig 2008-02-17 18:47:08.812500000 +0000 +++ Tk-804.028/pTk/tkPort.h 2008-02-17 18:49:27.281250000 +0000 @@ -24,6 +24,10 @@ #include "Lang.h" #endif +#if defined(__WIN32__) && !defined(WIN32) +#define WIN32 +#endif + #if defined(__WIN32__) || defined(_WIN32) # include "tkWinPort.h" # ifndef strcasecmp diff -ub Tk-804.028/tkGlue.h.orig --- Tk-804.028/tkGlue.h.orig 2007-05-05 18:37:45.000000000 +0000 +++ Tk-804.028/tkGlue.h 2008-02-17 18:48:07.968750000 +0000 @@ -66,14 +66,14 @@ extern SV * sv_maybe_utf8(SV *sv); extern SV * Lang_SystemEncoding(void); +#ifdef WIN32 +#include "pTk/tkWinInt.h" +#endif + #ifndef WIN32 #define HWND void * #endif EXTERN HWND SVtoHWND _ANSI_ARGS_((SV *win)); -#ifdef WIN32 -#include "pTk/tkWinInt.h" -#endif - #endif --------------010407020707030107060006 Content-Type: text/plain; charset=us-ascii -- 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 --------------010407020707030107060006--