One final note. Unlike 'make dynclasses-test', 'make test' will spot
that libparrot.a has been deleted and rebuild it and parrot.exe.
You might want to finish up with:
11. make
12. Repeat step 4.
13. make test
All very hacky, I know.
Cheers,
Nick
Nick Glencross wrote:
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