Mail Archives: cygwin/2009/11/06/08:51:11
--------------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 -