Guys,
As suggested, here are some manual steps which can get a few more tests
passing on cygwin. The 'problem' is that the dynclass DLLs when loaded
cannot access symbols in the parrot executable, so libparrot.dll needs
building and the dynclasses linking against it.
If there turns out to be a flag or symbol export mechanism, then that
solves things!
1. Build parrot with Greg's patch
2. Edit the top-level makefile, amending the build line for
blib/lib/libparrot$(SHARE_EXT) to add $(SRC_DIR)/parrot_config$(O)
3. make shared # Nice. You now have libparrot.dll
4. gcc -o parrot.exe -s imcc/main.o blib/lib/libparrot.dll -lcrypt
5. PATH=$PATH:`pwd`/blib/lib
6. rm dynclasses/*.o
7. rm blib/lib/libparrot.a # So that dynclasses link against the DLL
8. make dynclasses
9. chmod 755 runtime/parrot/dynext/*.dll # Fixed by #36119
10. make dynclasses-test
All being well, you should get
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/dynclass/gdbmhash.t 13 3328 13 13 100.00% 1-13
3 subtests skipped.
Failed 1/7 test scripts, 85.71% okay. 13/68 subtests failed, 80.88% okay.
make[1]: *** [test] Error 14
I'm not sure why the gdbmhash tests fail -- I haven't looked into it. It
says:
no extension: file 'libgdbm'
Updating the build process is not straightforward because libparrot.dll
has been built against parrot_config.o, and miniparrot has already been
built in step #1.
Anyhow, hopefully it has helped ...
Nick
Nick Glencross wrote:
The "permission denied" message stems from the DLLs not having execute
permissions, which is the same as the existing problem with HP-UX.
http://rt.perl.org/rt3/Ticket/Display.html?id=36119
I did actually manage to get most of the dynclasses to pass 'make test'
by partly hacking Makefiles and performing some steps manually on the
command line.
I can type up some notes on my recipe... There are some problems though
as libparrot.dll needs to be built instead of libparrot.a, and this
causes some problems with miniparrot and the *_config.o files.
Nick
Greg Bacon wrote:
# New Ticket Created by Greg Bacon # Please include the string:
[perl #36540]
# in the subject line of all future correspondence about this issue. #
<URL: https://rt.perl.org/rt3/Ticket/Display.html?id=36540 >
Using the attached patch, which contains Nick Glencross's change to
dynclasses_pl.in modified by a suggestion from Matt Diephouse and also
cargoculting H.Merijn Brand's voodoo to work around a problem that
caused Test::Harness to empty @INC, I can at least build and scratch
through make test.
The dynclasses tests were pretty unhappy, all seeming to stem from
"Couldn't load
'/tmp/parrot-0.2.2/runtime/parrot/dynext/python_group.dll':
Permission denied".
Summary below:
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/dynclass/foo.t 8 2048 9 8 88.89% 1-5 7-9
t/dynclass/gdbmhash.t 13 3328 13 13 100.00% 1-13
t/dynclass/pybuiltin.t 5 1280 6 5 83.33% 1-2 4-6
t/dynclass/pyclass.t 6 1536 6 6 100.00% 1-6
t/dynclass/pycomplex.t 4 1024 4 4 100.00% 1-4
t/dynclass/pyfunc.t 4 1024 4 4 100.00% 1-4
t/dynclass/pyint.t 25 6400 26 25 96.15% 1-25
t/op/trans.t 1 256 19 1 5.26% 13
2 tests and 80 subtests skipped.
Failed 8/162 test scripts, 95.06% okay. 66/2715 subtests failed,
97.57% okay.
make: *** [test] Error 14