README.cygwin - Parrot under Cygwin
Parrot builds out of the box under Cygwin, when no other parrot is installed. See PROBLEMS below.
There are official cygwin parrot packages available via http://cygwin.com/setup.exe.
parrot libparrot0 libparrot-devel parrot-perl6 parrot-languages
Some tweaks are needed for different names for the ffi to some dll's. See "loadlib DLL versioning".
You'll need the following Cygwin packages to run and build Parrot by your own.
libreadline6 ncurses libintl8 libgmp3
gcc make perl parrot readline libncurses-devel libgmp-devel pcre-devel
Optional build requirements:
Optional perl packages for testing:
L<Test::TAP::HTMLMatrix> if you want to run the smoke tests with C<make smoke>. perl L<Test::Perl::Critic> and L<Perl::Critic>
If you use SVN to get a copy of Parrot, you should use the Cygwin SVN and not the TortoiseSVN client to avoid build errors. Similarly you will need Cygwin Perl rather than ActiveState or Strawberry Perl.
Note that ICU is now optional, you can build Parrot without it, by not installing it or asking Parrot to ignore it (
libaio-devel "Linux-native asynchronous I/O access" is not available for cygwin, and as the name says it will never be :)
perl Configure.pl make make test make install
Something like: perl.exe: *** fatal error - unable to remap C:\cygwin\lib\perl5\5.10\i686-cygwin\auto\File\Glob\Glob.dll to same address as parent(
This is a known cygwin problem with dll's, esp. perl on non-XP 32bit platforms. You need to install the
rebasepackage and run
For more information regarding this problem, see http://www.cygwin.com/ml/cygwin/2009-05/msg00413.html; http://www.heikkitoivonen.net/blog/2008/11/26/cygwin-upgrades-and-rebaseall/; and see http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure.
Invoking Parrot to generate runtime/parrot/include/config.fpmc --cross your fingers
F<./miniparrot.exe config_lib.pasm > runtime/parrot/include/config.fpmc> crashes
Be sure that there's no other libparrot.dll.a or libparrot.a in the linker libpath.
t/pmc/os.................................... # Failed test 'hard link was really created' # at t/pmc/os.t line 312.
This is a known Windows limitation with NTFS junctions on files.
If this exception results, ensure there is only one version of the
cygwin1.dllpresent on your system or, alternatively, ensure no other application interferes with Cygwin. For more information on this problem, see the Cygwin/X FAQ at http://x.cygwin.com/docs/faq/cygwin-x-faq.html#q-status-access-violation and see the main Cygwin FAQ at http://cygwin.com/faq-nochunks.html#faq.using.bloda
If the build aborts, it may be necessary to include already built DLLs in the rebase. For instructions on how to accomplish this, see the "PROBLEMS" section at http://cpansearch.perl.org/src/BFREE/OpenGL-0.57/README.cygwin
Use cyg*-1.1.dll naming conventions instead of lib*.so.1.1 names for loadlib, the FFI.
Thanks to the
Windows DLL Helland the impossibility of file hardlinks, windows dll names are versioned, so the loadlib function or the various pir's needs more logic.
Either add the version to each loadlib call, and stem the version from POSIX versions within get_path(), or add an optional version argument to loadlib for win32. Or just fix all the pir's, which will be easier when exceptions work again.
Threads, Events, and Signals are missing.
Last updated: 23 January 2009