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

Reply via email to