[Bioperl-l] Module issue with cygwin-perl vs. Activestate Perl

Mark A. Jensen maj at fortinbras.us
Sat Aug 1 04:35:04 UTC 2009


Sorry, I cut off the last script. The entire thing follows:

/usr/local/bin/conv-ASMake.sh :

#!/usr/bin/sed -f
#converting an ActiveState PERL Makefile to run under cygwin make:
s/^DIRFILESEP = ^\\/DIRFILESEP = \//
s/^NOOP = rem/NOOP = :/
# -or- NOOP = echo -n
# byebye volume
s/C:/\/cygdrive\/c/
# sed to convert directory \ to /
s/\([\)0-9a-zA-Z.]\)\\\([\(0-9a-zA-Z]\)/\1\/\2/g
# convert full perl
s/\/usr\/bin\/perl/\/cygdrive\/c\/Perl\/bin\/perl/

# a key conversion for DOC_INSTALL action
/^DESTINSTALLVENDORHTMLDIR/ a\
DECYGDESTINSTALLARCHLIB = $(subst /cygdrive/c,c:,$(DESTINSTALLARCHLIB))

# --- MakeMaker tools_other section:
# let cygwin do native linux commands
/^MAKE/ c\
MAKE = make
/^CHMOD/ c\
CHMOD = chmod
/^CP/ c\
CP = cp
/^MV/ c\
MV = mv
/^NOOP/ c\
NOOP = :
/^RM_F/ c\
RM_F = rm -f
/^RM_RF/ c\
RM_RF = rm -rf
/^TEST_F[^I]/ c\
TEST_F = test -f
/^TOUCH/ c\
TOUCH = touch
/^TEST_S/ c\
TEST_S = test -s
/^DEV_NULL/ c\
DEV_NULL = > /dev/null 2>&1
/^ECHO[^_]/ c\
ECHO = echo
/^ECHO_N/ c\
ECHO_N = echo -n
# override OS-specific File::Spec
/^MOD_INSTALL/ c\
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e "use 
File::Spec::Cygwin;@File::Spec::ISA=('File::Spec::Cygwin');" -e "map { 
s[/cygdrive/c][] } @ARGV;install({@ARGV}, '$(VERBINST)', 0, '$(UNINST)');" --
/^FIXIN/ c\
FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"

# remove cygwin volume prefix for doc installs
/Appending installation info to/ s/DESTIN/DECYGDESTIN/
/perllocal\.pod/ s/DESTIN/DECYGDESTIN/
/NOECHO) \$(MKPATH/ s/DESTIN/DECYGDESTIN/

#end conv-ASMake.sh

----- Original Message ----- 
From: "Jonathan Cline" <jncline at gmail.com>
To: <bioperl-l at lists.open-bio.org>
Cc: <jcline at ieee.org>
Sent: Friday, July 31, 2009 11:24 PM
Subject: [Bioperl-l] Module issue with cygwin-perl vs. Activestate Perl


>I recently mentioned working on Bio::Robotics for Tecan.  Vendors
> being MS-Win specific, the vendor software allows third-party software
> communication through a named pipe (the literal filename is
> "\\\\.\\pipe\\gemini" where the multiple front slashes are MS specific
> and this pseudo-pipe is opened with sysopen() ).  This is broken under
> cygwin-perl due to cygwin's method of handling paths -- the sysopen
> fails.  However it works under ActiveState Perl and communication
> through the named pipe (to the robot hardware) is OK.  The standard
> workaround is usually to use cygwin bash, and force the PATH to use
> ActiveState perl.  (Typical MS Windows incompatibility problem.)  The
> issue is:  Perl module libraries for CPAN work under cygwin-perl
> (only?).  Attempts to run "activestate-perl Makefile.PL" for CPAN
> module use, or "make test", result in a bad list of incompatibility
> problems.  Yet ActiveState Perl is required for communicating to the
> vendor application (unless there is some workaround to raw filesystem
> access in cygwin-perl that I haven't found in 2 days of working this).
>  The stand-alone scripts I have work fine to access the named pipe
> (using ActiveState Perl) since the standalone scripts have no module
> INC dependencies, no CPAN module test harness, etc etc.
>
> This isn't specifically a Bio:: issue, though if anyone has
> suggestions please email.  I could try msys and see if it handles the
> named-pipe-special-file better, if msys has an msys-perl distribution.
>
> -- 
> ## Jonathan Cline
> ## jcline at ieee.org
> ## Mobile: +1-805-617-0223
> ########################
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>
> 




More information about the Bioperl-l mailing list