This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin 1.7 perl build problems.


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@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/
difforig Tk-804.028

2008-02-17  Reini Urban <rurban@x-ray.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
 

--
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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]