NAME
README.cygwin - Parrot under Cygwin
SYNOPSIS
Parrot builds out of the box under Cygwin, when no other parrot is installed. See below at PROBLEMS.
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".
Packages
You'll need the following Cygwin packages to run and build Parrot by your own.
Runtime requirements:
libreadline6 ncurses libintl8 libgmp3 libgdbm4
Optional requirements:
libicu38 libpq5 openssl for opengl: w32api opengl or libglut3 xorg-x11-base xorg-x11-bin-dlls
Build requirements:
gcc make perl parrot readline libncurses-devel libgmp-devel libgdbm-devel pcre-devel
Optional build requirements:
libicu-devel openssl-devel for Cygwin/X opengl: freeglut libglut-devel xorg-x11-devel
Optional perl packages for testing:
L<Test::TAP::HTMLMatrix> if you want to run the smoke tests with C<make smoke>. L<Test::Base> for some APL language tests. perl L<Test::Perl::Critic> and L<Perl::Critic>
- Cygwin subversion and perl 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.
- icu Note that ICU is now optional, you can build Parrot without it, by not installing it or asking Parrot to ignore it (
- opengl You can use the w32api and opengl packages for native Windows opengl support, or the freeglut package for the X Server.Configure.pl will detect freeglut if freeglut is installed and DISPLAY is set, otherwise it checks for w32api and opengl with GLUT. In case that freeglut is installed, DISPLAY must be set before running Configure.pl. If not using freeglut, then DISPLAY must not be set.
- SDL SDL references cygSDL-1-2-0.dll, which is only in cygports http://news.gmane.org/gmane.os.cygwin.ports.announce
- aio libaio-devel "Linux-native asynchronous I/O access" is not available for cygwin, and as the name says it will never be :)
--without-icu
).
export DISPLAY=127.0.0.1:0.0
is the typical setting.
Determining if your platform supports OpenGL.............yes, freeglut 3.4. Determining if your platform supports OpenGL...................yes, GLUT 3. Determining if your platform supports OpenGL............................no.Required packages:
w32api openglor
freeglut libglut-devel xorg-x11-devel xorg-x11-base xorg-x11-bin-dlls
BUILD
perl Configure.pl make make test make install
PROBLEMS
- perl fatal error - unable to remap Glob.dll 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(
- Crash at miniparrot.exe config_lib.pasm Invoking Parrot to generate runtime/parrot/include/config.fpmc --cross your fingers
- Spurious stackdumps while building Building with an already installed library fails. See RT#39742Be sure that there's no other libparrot.dll.a or libparrot.a in the linker libpath./usr/lib/libparrot.dll.a, /usr/local/lib/libparrot.dll.a
- os hardlink test fail
0x860000
) != 0x14D0000
This is a known cygwin problem with dll's, esp. perl on non-XP 32bit platforms. You need to install the rebase
package and run rebaseall
from an ash
shell.
F<./miniparrot.exe config_lib.pasm > runtime/parrot/include/config.fpmc> crashesSee below.
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.
TODO
- loadlib DLL versioning Use cyg*-1.1.dll naming conventions instead of lib*.so.1.1 names for loadlib, the FFI.Thanks to the
- Features Threads, Events, and Signals are missing.
Windows DLL Hell
and 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.
AUTHORS
SEE ALSO
L<parrot>
HISTORY
Last updated: 23 January 2009