delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/11/06/08:51:11

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 <rurban AT x-ray DOT at>
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>
X-IsSubscribed: yes
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

--------------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 <rurban AT x-ray DOT at>
	* 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 <sys/time.h>
+#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 <sys/select.h>
+#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 <sys/time.h>
-#else
 #   include <time.h>
+#else
+#   if HAVE_SYS_TIME_H
+#       include <sys/time.h>
+#   else
+#       include <time.h>
+#   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--

- Raw text -


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