Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Investigating Devel::Pragma's broken install on Cygwin, need help to fix it. ExtUtils::Depends possibly guilty??

by mascip (Pilgrim)
on Dec 30, 2012 at 04:22 UTC ( #1010887=perlquestion: print w/ replies, xml ) Need Help??
mascip has asked for the wisdom of the Perl Monks concerning the following question:

Hello, i'm trying to install Devel::Pragma, which is a dependency for the precious Method::Signatures. It doesn't work and i have investigated for several hours already, and think i have figured out precisely why it doesn't work, but don't know how to fix it. Can you help me?

I'm using Perl 5.14.2, and Cygwin 1.7.17 in Windows XP.

Here is what i get when i "make" :

rm -f blib/arch/auto/Devel/Pragma/Pragma.dll g++-4 --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl +,--enable-auto-image-base -L/usr/local/lib -fstack-protector Pragma.o + -o blib/arch/auto/Devel/Pragma/Pragma.dll \ /usr/lib/perl5/5.14/i686-cygwin-threads-64int/CORE/cygperl5_14.dll - +L/usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks +/OP/Check -lCheck -L/usr/lib/perl5/site_perl/5.14/i686-cygwin-threads +-64int/auto/B/Hooks/OP/Annotation \ Pragma.o: In function `devel_pragma_check_require': /cygdrive/c/Dropbox/.cpan/build/Devel-Pragma-0.54-3TGXm_/Pragma.xs:103 +: undefined reference to `_op_annotation_new' Pragma.o: In function `XS_Devel__Pragma_END': /cygdrive/c/Dropbox/.cpan/build/Devel-Pragma-0.54-3TGXm_/Pragma.xs:314 +: undefined reference to `_op_annotation_group_free' Pragma.o: In function `devel_pragma_require': /cygdrive/c/Dropbox/.cpan/build/Devel-Pragma-0.54-3TGXm_/Pragma.xs:135 +: undefined reference to `_op_annotation_get' Pragma.o: In function `boot_Devel__Pragma': /cygdrive/c/Dropbox/.cpan/build/Devel-Pragma-0.54-3TGXm_/Pragma.xs:308 +: undefined reference to `_op_annotation_group_new' collect2: ld returned 1 exit status Makefile:485: recipe for target `blib/arch/auto/Devel/Pragma/Pragma.dl +l' failed make: *** [blib/arch/auto/Devel/Pragma/Pragma.dll] Error 1
The hook_op_annotation.h file is not found by g++ : all the functions that are not found by Pragma.xs are in this file. hook_op_annotation.h is part of B:Hooks::OP::Annotation. And i have checked: it is the only file in this module, which defines the functions that Pragma.xs needs.

So, what do do from there? Here is my plan :
0. Trying to cheat
1. Either Devel::Pragma is not looking in the right place.
2. Or hook_op_annotation.h is not in the right place.

0. Trying to cheat

I have copied hook_op_annotation.h to a directory in my PATH ( C:/Cygwin/bin/ ), but it fails identically. I have put it in the lib/ folder of %HOME%/.cpan/build/Devel-Pragma-0.54-3TGXm_/, which didn't work either. But it teaches us something :
A. maybe "g++" doesn't look into the PATH (which would be very surprizing)
B. maybe that hook_op_annotation.h needs to be within the B:Hooks::OP::Annotation module in order for the functions to be found. I can't imagine how, but i don't know anything about XS after all.
C. any other possibility that i missed?

1. Devel::Pragma is not looking in the right place

The "make" log tells us that when Devel::Pragma's "make" runs g++, it looks (-L option) into these too directories:

/usr/local/lib /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/O +P/Annotation
Because i am running in Cygwin, /usr is equivalent to C:/Cygwin/usr. I tried to put a simple text file in this directory, and to read it through the path '/usr/local/bin/file.txt', and it worked, so it's not an issue with Cygwin's paths system.

I have tried to copy the hook_op_annotation.h file into /usr/local/lib/, but it didn't work. Which would confirm that it needs to be within the B:Hooks::OP::Annotation module to work (option B earlier).

Then, what about the other directory :

/usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/O +P/Annotation
It doesn't exist.
In fact, that is not true : it exists in
/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/OP/An +notation

which is strange, as the log of the B::Hooks::OP::Annotation installation says that it's installing in /usr/lib/perl5, and /lib/perl5 is never mentionned in this log (see after the tests, the line starting with "Installing"):

Building and testing B-Hooks-OP-Annotation-0.44 cp hook_op_annotation.h blib/arch/B/Hooks/OP/Annotation/Install/hook_o +p_annotation.h cp lib/B/Hooks/OP/Annotation.pm blib/lib/B/Hooks/OP/Annotation.pm cp Files.pm blib/arch/B/Hooks/OP/Annotation/Install/Files.pm /usr/bin/perl.exe /usr/lib/perl5/5.14/ExtUtils/xsubpp -typemap /usr/l +ib/perl5/5.14/ExtUtils/typemap Annotation.xs > Annotation.xsc && mv +Annotation.xsc Annotation.c gcc-4 -c -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g -fno-strict-al +iasing -pipe -fstack-protector -DUSEIMPORTLIB -O3 -Wall -W -DVERSI +ON=\"0.44\" -DXS_VERSION=\"0.44\" "-I/usr/lib/perl5/5.14/i686-cygwi +n-threads-64int/CORE" Annotation.c Running Mkbootstrap for B::Hooks::OP::Annotation () chmod 644 Annotation.bs rm -f blib/arch/auto/B/Hooks/OP/Annotation/Annotation.dll g++-4 --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl +,--enable-auto-image-base -L/usr/local/lib -fstack-protector Annotati +on.o -o blib/arch/auto/B/Hooks/OP/Annotation/Annotation.dll \ /usr/lib/perl5/5.14/i686-cygwin-threads-64int/CORE/cygperl5_14.dll + \ chmod 755 blib/arch/auto/B/Hooks/OP/Annotation/Annotation.dll cp Annotation.bs blib/arch/auto/B/Hooks/OP/Annotation/Annotation.bs chmod 644 blib/arch/auto/B/Hooks/OP/Annotation/Annotation.bs Manifying blib/man3/B.Hooks.OP.Annotation.3pm PERL_DL_NONLAZY=1 /usr/bin/perl.exe "-MExtUtils::Command::MM" "-e" "te +st_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/01use.t .. ok t/pod.t .... ok All tests successful. Files=2, Tests=3, 3 wallclock secs ( 0.20 usr 0.36 sys + 0.82 cusr + 1.11 csys = 2.49 CPU) Result: PASS Files found in blib/arch: installing files in blib/lib into architectu +re dependent library tree Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/aut +o/B/Hooks/OP/Annotation/Annotation.dll Appending installation info to /usr/lib/perl5/5.14/i686-cygwin-threads +-64int/perllocal.pod -> OK Successfully reinstalled B-Hooks-OP-Annotation-0.44 1 distribution installed

This seems to indicate that the problem occured during the installation of B::Hooks::OP::Annotation: it wasn't installed in the right place, and i don't know why. In the Makefile of B::Hooks::OP::Annotation, "/lib" is never present without "usr" before it, except in one place:

INST_LIB = blib/lib
which seems normal : i found it in many other Makefiles.

And, the problem must be Cygwin specific: it doesn't happen in Linux, otherwise Devel::Pragma wouldn't install in Linux either.

One hint.
In Cygwin, the perl script (perl.exe) is NOT in /usr/bin/ like in Linux : it is in /bin/ (equivalent to C:/Cygwin/bin/). And the perl modules are installed in /bin/lib/perl5.

So, could it be that Cygwin installs modules in a different place than Linux, and that this is the sole reason why Devel::Pragma doesn't find B::Hooks::OP::Annotation?

* PS : I tried to cheat one last time, copying the content of

/usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/
into
/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/
but it didn't work either.

* PPS : I found this node Devel::Declare for cygwin; "undefined reference to '_hook_op_check'", which indicates a (fixed) similar problem with Devel::Declare. I was able to install Devel::Declare in Cygwin, so it's not the same problem. And i checked: i have the latest version of ExtUtils::Depends. But the problem could be there too...

I have also tried to delete manually the /lib/perl5/site_perl/i686-cygwin-threads-64int/auto/B/Hook/ folder and reinstall the three modules that were in there. It didn't fix my problem.

Comment on Investigating Devel::Pragma's broken install on Cygwin, need help to fix it. ExtUtils::Depends possibly guilty??
Select or Download Code
Re: Investigating Devel::Pragma's broken install on Cygwin, need help to fix it. ExtUtils::Depends possibly guilty??
by Khen1950fx (Canon) on Dec 30, 2012 at 06:26 UTC
    I have a couple of questions for you. First, did you install Mouse with the --xs option? Second, do you have MouseX::Types? Mouse allows two types: either XS or PP. You may have to force the xs install:
    perl Makefile.PL --xs
    Similarly with PP:
    perl Makefile.PL --pp
    Please post your results, and we can go from there.

      Cheers for helping :-)

      I didn't use the --xs option to install Mouse 1.02 (it's not mentioned in the doc - shall i tell the author about it, or is it standard?).

      I just installed MouseX::Types which i didn't have (i used the --xs option).

      And tried to install Devel::Pragma again, which didn't work. Not with --pp either. I didn't copy-paste the output, but will later in this message, after reinstalling Mouse.

      Then, i tried to reinstall Mouse, with perl Makefile.PL --xs. Here is what it says; some test files are missing:

      $ perl Makefile.PL --xs Mouse configured with XS. Writing ppport.h Can't open perl script "tool/generate-mouse-tiny.pl": No such file or +directory Cannot generate Mouse::Tiny: No such file or directory at Makefile.PL +line 105, <DATA> line 1. Checking if your kit is complete... Warning: the following files are missing in your kit: t/001_mouse/400-define-role.t t/001_mouse/401-meta-role.t t/001_mouse/402-attribute-application.t t/001_mouse/403-method-modifiers.t t/001_mouse/404-role-overrides.t t/001_mouse/600-tiny-tiny.t t/001_mouse/601-tiny-mouse.t t/001_mouse/602-mouse-tiny.t t/001_mouse/603-mouse-pureperl.t t/001_mouse/801-coerce.t t/001_mouse/802-coerce_multi_class.t t/001_mouse/804-immutable-demolish.t t/001_mouse/805-class_type.t t/001_mouse/806-role_type.t t/001_mouse/807-multi-roles.t t/001_mouse/808-create_class.t t/001_mouse/809-overwrite-builtin-subtype.t t/001_mouse/810-isa-or.t t/001_mouse/811-util-linear-isa.t t/001_mouse/812-role-compatibility.t t/001_mouse/813-compatibility-get_method_list.t t/001_mouse/814-subtype-as.t t/010_basics/001_basic_class_setup.t t/010_basics/002_require_superclasses.t t/010_basics/003_super_and_override.t t/010_basics/004_inner_and_augment.t t/010_basics/005_override_augment_inner_super.t t/010_basics/006_override_and_foreign_classes.t t/010_basics/007_always_strict_warnings.t t/010_basics/008_wrapped_method_cxt_propagation.t t/010_basics/009_import_unimport.t t/010_basics/010_method_modifier_with_regexp.t t/010_basics/011_moose_respects_type_constraints.t t/010_basics/013_create.t t/010_basics/014_create_anon.t t/010_basics/015_buildargs.t t/010_basics/017_error_handling.t t/010_basics/018_methods.t t/010_basics/019-destruction.t t/010_basics/020-global-destruction-helper.pl t/010_basics/020-global-destruction.t t/020_attributes/001_attribute_reader_generation.t t/020_attributes/002_attribute_writer_generation.t t/020_attributes/003_attribute_accessor_generation.t t/020_attributes/004_attribute_triggers.t t/020_attributes/005_attribute_does.t t/020_attributes/006_attribute_required.t t/020_attributes/007_attribute_custom_metaclass.t t/020_attributes/008_attribute_type_unions.t t/020_attributes/009_attribute_inherited_slot_specs.t t/020_attributes/011_more_attr_delegation.t t/020_attributes/012_misc_attribute_tests.t t/020_attributes/013_attr_dereference_test.t t/020_attributes/014_misc_attribute_coerce_lazy.t t/020_attributes/015_attribute_traits.t t/020_attributes/016_attribute_traits_registered.t t/020_attributes/017_attribute_traits_n_meta.t t/020_attributes/018_no_init_arg.t t/020_attributes/020_trigger_and_coerce.t t/020_attributes/022_illegal_options_for_inheritance.t t/020_attributes/024_attribute_traits_parameterized.t t/020_attributes/025_chained_coercion.t t/020_attributes/026_attribute_without_any_methods.t t/020_attributes/027_accessor_override_method.t t/020_attributes/029_accessor_context.t t/020_attributes/030_non_alpha_attr_names.t t/020_attributes/031_delegation_and_modifiers.t t/020_attributes/032_delegation_arg_aliasing.t t/020_attributes/034_numeric_defaults.t t/020_attributes/035_default_undef.t t/020_attributes/036_clone_weak.t t/030_roles/001_meta_role.t t/030_roles/002_role.t t/030_roles/003_apply_role.t t/030_roles/004_role_composition_errors.t t/030_roles/005_role_conflict_detection.t t/030_roles/008_role_conflict_edge_cases.t t/030_roles/009_more_role_edge_cases.t t/030_roles/010_run_time_role_composition.t t/030_roles/013_method_aliasing_in_composition.t t/030_roles/014_more_alias_and_exclude.t t/030_roles/015_runtime_roles_and_attrs.t t/030_roles/016_runtime_roles_and_nonmoose.t t/030_roles/017_extending_role_attrs.t t/030_roles/018_runtime_roles_w_params.t t/030_roles/019_build.t t/030_roles/020_role_composite.t t/030_roles/031_roles_applied_in_create.t t/030_roles/033_role_exclusion_and_alias_bug.t t/030_roles/034_create_role.t t/030_roles/035_anonymous_roles.t t/030_roles/036_free_anonymous_roles.t t/030_roles/037_create_role_subclass.t t/030_roles/041_empty_method_modifiers_meta_bug.t t/030_roles/042_compose_overloading.t t/040_type_constraints/002_util_type_constraints_export.t t/040_type_constraints/003_util_std_type_constraints.t t/040_type_constraints/004_util_find_type_constraint.t t/040_type_constraints/005_util_type_coercion.t t/040_type_constraints/006_util_type_reloading.t t/040_type_constraints/007_util_more_type_coercion.t t/040_type_constraints/009_union_types_and_coercions.t t/040_type_constraints/010_misc_type_tests.t t/040_type_constraints/011_container_type_constraint.t t/040_type_constraints/015_enum.t t/040_type_constraints/016_subtyping_parameterized_types.t t/040_type_constraints/017_subtyping_union_types.t t/040_type_constraints/018_custom_parameterized_types.t t/040_type_constraints/022_custom_type_errors.t t/040_type_constraints/023_types_and_undef.t t/040_type_constraints/025_type_coersion_on_lazy_attributes.t t/040_type_constraints/027_parameterize_from.t t/040_type_constraints/029_define_type_twice_throws.t t/040_type_constraints/031_subtype_auto_vivify_parent.t t/040_type_constraints/032_throw_error.t t/040_type_constraints/034_duck_types.t t/050_metaclasses/001_custom_attr_meta_with_roles.t t/050_metaclasses/002_custom_attr_meta_as_role.t t/050_metaclasses/004_moose_for_meta.t t/050_metaclasses/011_init_meta.t t/050_metaclasses/013_metaclass_traits.t t/050_metaclasses/017_use_base_of_moose.t t/050_metaclasses/020_metaclass_parameterized_traits.t t/050_metaclasses/021_export_with_prototype.t t/050_metaclasses/041_mnmcim.t t/050_metaclasses/041_moose_nonmoose_chain_init_meta.t t/050_metaclasses/051_metarole_on_anon.t t/050_metaclasses/052_new_object_BUILD.t t/050_metaclasses/053_immutable_metaclass_compat_bug.t t/050_metaclasses/054_metaclass_compat_no_fixing_bug.t t/100_bugs/001_subtype_quote_bug.t t/100_bugs/002_subtype_conflict_bug.t t/100_bugs/003_Moose_Object_error.t t/100_bugs/003_Mouse_Object_error.t t/100_bugs/004_subclass_use_base_bug.t t/100_bugs/005_inline_reader_bug.t t/100_bugs/007_reader_precedence_bug.t t/100_bugs/009_augment_recursion_bug.t t/100_bugs/010_immutable_n_default_x2.t t/100_bugs/011_DEMOLISH_eats_exceptions.t t/100_bugs/012_DEMOLISH_eats_mini.t t/100_bugs/013_lazybuild_required_undef.t t/100_bugs/016_inheriting_from_roles.t t/100_bugs/017_type_constraint_messages.t t/100_bugs/019_moose_octal_defaults.t t/100_bugs/020_super_recursion.t t/100_bugs/022_role_caller.t t/100_bugs/025_universal_methods_wrappable.t t/100_bugs/026_create_anon_recursion.t t/100_bugs/027_constructor_object_overload.t t/100_bugs/029_instance_application_role_args.t t/100_bugs/030_coerce_without_coercion.t t/200_examples/001_example.t t/200_examples/003_example.t t/200_examples/004_example_w_DCS.t t/200_examples/005_example_w_TestDeep.t t/200_examples/0071_Child_Parent_attr_inherit_imm.t t/200_examples/007_Child_Parent_attr_inherit.t t/200_examples/008_record_set_iterator.t t/300_immutable/001_immutable_moose.t t/300_immutable/002_apply_roles_to_immutable.t t/300_immutable/003_immutable_meta_class.t t/300_immutable/004_inlined_constructors_n_types.t t/300_immutable/005_multiple_demolish_inline.t t/300_immutable/007_immutable_trigger_from_constructor.t t/300_immutable/008_immutable_constructor_error.t t/300_immutable/009_buildargs.t t/300_immutable/012_default_values.t t/300_immutable/013_immutable_roundtrip.t t/300_immutable/014_immutable_metaclass_with_traits.t t/300_immutable/016_inline_fallbacks.t t/300_immutable/101-immutable-default.t t/400_mouse_util/001_moose_util.t t/400_mouse_util/002_moose_util_does_role.t t/400_mouse_util/007_apply_roles.t t/500_test_moose/001_test_moose.t t/500_test_moose/002_test_moose_does_ok.t t/500_test_moose/003_test_moose_has_attribute_ok.t t/500_test_moose/004_test_moose_meta_ok.t t/500_test_moose/005_with_immutable.t t/800_with_external/001-pod-coverage-moose.t t/800_with_external/002-externals.t t/800_with_external/lib/Foo.pm t/810_with_moose/201-squirrel.t t/810_with_moose/202-squirrel-role.t t/810_with_moose/500_moose_extends_mouse.t t/810_with_moose/501_moose_coerce_mouse.t t/900_mouse_bugs/001_immutable_types.t t/900_mouse_bugs/002_does_role_should_search_parent.t t/900_mouse_bugs/003_RT50421.t t/900_mouse_bugs/004_RT54203.t t/900_mouse_bugs/005_large_int.t t/900_mouse_bugs/006_RT69939.t t/900_mouse_bugs/007_RT56523.t t/900_mouse_bugs/008_RT56837.t t/900_mouse_bugs/009_RT57144.t t/900_mouse_bugs/010_use_mouse_before_tb2.t t/900_mouse_bugs/011_RT61852.t t/900_mouse_bugs/012_RT61906.t t/900_mouse_bugs/013_RT73592_tied_.t t/900_mouse_bugs/014_autoload.t t/900_mouse_bugs/RT75093.t t/990_deprecated/001-export_to_level.t t/lib/Bar.pm t/lib/Bar7/Meta/Trait.pm t/lib/Bar7/Meta/Trait2.pm t/lib/BaseClass.pm t/lib/ClassType_Foo.pm t/lib/Foo.pm t/lib/MooseCompat.pm t/lib/Mouse/Meta/Attribute/Custom/Bar.pm t/lib/Mouse/Meta/Attribute/Custom/Foo.pm t/lib/Mouse/Meta/Attribute/Custom/Trait/Bar.pm t/lib/Mouse/Meta/Attribute/Custom/Trait/Foo.pm t/lib/MyExporter.pm t/lib/MyMetaclassRole.pm t/lib/MyMouseA.pm t/lib/MyMouseB.pm t/lib/MyMouseObject.pm t/lib/Role/Child.pm t/lib/Role/Interface.pm t/lib/Role/Parent.pm t/lib/SyntaxError.pm t/lib/Unsweetened.pm tool/create-moose-compatibility-tests.pl tool/generate-mouse-tiny.pl xs-src/Mouse.xs xs-src/MouseAccessor.xs xs-src/MouseAttribute.xs xs-src/MouseTypeConstraints.xs xs-src/MouseUtil.xs xt/001-pod.t xt/002-pod_spell.t xt/003-pod_coverage.t xt/004-fs_portability.t xt/005-dbsub.t xt/006-perlcritic.t Please inform the author. Writing Makefile for Mouse Writing MYMETA.yml and MYMETA.json
      I checked and these file are not there indeed. I tried to "make" anyway, which stopped on this line, at the beginning of "make test" i believe :
      make: *** No rule to make target `tool/generate-mouse-tiny.pl', needed + by `lib/Mouse/Tiny.pm'. Stop.
      It's really strange. When reinstalling Mouse (without the --xs option), it passed all these tests (i just did it again to check). But i cannot find them in /.cpan/build/Mouse*.

      So i downloaded the tar.gz archive and tried to install it with --xs, which seemed to work perfectly:

      $ perl Makefile.PL --xs Mouse configured with XS. Writing ppport.h Generate Mouse::Tiny ... done. Writing Makefile for Mouse Writing MYMETA.yml and MYMETA.json
      And then
      $ make cp lib/Mouse/Tiny.pod blib/lib/Mouse/Tiny.pod cp lib/Mouse/TypeRegistry.pm blib/lib/Mouse/TypeRegistry.pm cp lib/Mouse/Meta/Role/Composite.pm blib/lib/Mouse/Meta/Role/Composite +.pm cp lib/Mouse/Meta/Role/Method.pm blib/lib/Mouse/Meta/Role/Method.pm cp lib/Mouse/Meta/Method/Delegation.pm blib/lib/Mouse/Meta/Method/Dele +gation.pm cp lib/Mouse/XS.pod blib/lib/Mouse/XS.pod cp lib/Mouse/Meta/Method/Destructor.pm blib/lib/Mouse/Meta/Method/Dest +ructor.pm cp lib/Mouse.pm blib/lib/Mouse.pm cp lib/Mouse/Meta/Class.pm blib/lib/Mouse/Meta/Class.pm cp lib/Squirrel/Role.pm blib/lib/Squirrel/Role.pm cp lib/Mouse/Meta/Method.pm blib/lib/Mouse/Meta/Method.pm cp lib/Test/Mouse.pm blib/lib/Test/Mouse.pm cp lib/Mouse/Tiny.pm blib/lib/Mouse/Tiny.pm cp lib/Mouse/Meta/Attribute.pm blib/lib/Mouse/Meta/Attribute.pm cp lib/Mouse/Meta/TypeConstraint.pm blib/lib/Mouse/Meta/TypeConstraint +.pm cp lib/Mouse/Meta/Method/Accessor.pm blib/lib/Mouse/Meta/Method/Access +or.pm cp lib/Mouse/Meta/Role.pm blib/lib/Mouse/Meta/Role.pm cp lib/Mouse/Util/TypeConstraints.pm blib/lib/Mouse/Util/TypeConstrain +ts.pm cp lib/Mouse/Spec.pm blib/lib/Mouse/Spec.pm cp lib/Mouse/Role.pm blib/lib/Mouse/Role.pm cp lib/Squirrel.pm blib/lib/Squirrel.pm cp lib/Mouse/Util/MetaRole.pm blib/lib/Mouse/Util/MetaRole.pm cp lib/Mouse/Meta/Module.pm blib/lib/Mouse/Meta/Module.pm cp lib/Mouse/Util.pm blib/lib/Mouse/Util.pm cp lib/Mouse/Meta/Role/Application.pm blib/lib/Mouse/Meta/Role/Applica +tion.pm cp lib/Mouse/Meta/Method/Constructor.pm blib/lib/Mouse/Meta/Method/Con +structor.pm cp lib/Mouse/Exporter.pm blib/lib/Mouse/Exporter.pm cp lib/Mouse/PurePerl.pm blib/lib/Mouse/PurePerl.pm cp lib/ouse.pm blib/lib/ouse.pm cp lib/Mouse/Object.pm blib/lib/Mouse/Object.pm /usr/bin/perl.exe "-Iinc" /usr/lib/perl5/5.14/ExtUtils/xsubpp -typema +p /usr/lib/perl5/5.14/ExtUtils/typemap xs-src/Mouse.xs > xs-src/Mous +e.xsc && mv xs-src/Mouse.xsc xs-src/Mouse.c gcc-4 -c "-I." "-I." -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g -fn +o-strict-aliasing -pipe -fstack-protector -Wall -Wextra -Wdeclaration +-after-statement -Wc++-compat -DUSEIMPORTLIB -O3 -DVERSION=\"1.02\ +" -DXS_VERSION=\"1.02\" -o xs-src/Mouse.o "-I/usr/lib/perl5/5.14/i6 +86-cygwin-threads-64int/CORE" -DUSE_PPPORT xs-src/Mouse.c /usr/bin/perl.exe "-Iinc" /usr/lib/perl5/5.14/ExtUtils/xsubpp -typema +p /usr/lib/perl5/5.14/ExtUtils/typemap xs-src/MouseAccessor.xs > xs- +src/MouseAccessor.xsc && mv xs-src/MouseAccessor.xsc xs-src/MouseAcce +ssor.c gcc-4 -c "-I." "-I." -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g -fn +o-strict-aliasing -pipe -fstack-protector -Wall -Wextra -Wdeclaration +-after-statement -Wc++-compat -DUSEIMPORTLIB -O3 -DVERSION=\"1.02\ +" -DXS_VERSION=\"1.02\" -o xs-src/MouseAccessor.o "-I/usr/lib/perl5 +/5.14/i686-cygwin-threads-64int/CORE" -DUSE_PPPORT xs-src/MouseAcces +sor.c /usr/bin/perl.exe "-Iinc" /usr/lib/perl5/5.14/ExtUtils/xsubpp -typema +p /usr/lib/perl5/5.14/ExtUtils/typemap xs-src/MouseAttribute.xs > xs +-src/MouseAttribute.xsc && mv xs-src/MouseAttribute.xsc xs-src/MouseA +ttribute.c gcc-4 -c "-I." "-I." -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g -fn +o-strict-aliasing -pipe -fstack-protector -Wall -Wextra -Wdeclaration +-after-statement -Wc++-compat -DUSEIMPORTLIB -O3 -DVERSION=\"1.02\ +" -DXS_VERSION=\"1.02\" -o xs-src/MouseAttribute.o "-I/usr/lib/perl +5/5.14/i686-cygwin-threads-64int/CORE" -DUSE_PPPORT xs-src/MouseAttr +ibute.c /usr/bin/perl.exe "-Iinc" /usr/lib/perl5/5.14/ExtUtils/xsubpp -typema +p /usr/lib/perl5/5.14/ExtUtils/typemap xs-src/MouseTypeConstraints.x +s > xs-src/MouseTypeConstraints.xsc && mv xs-src/MouseTypeConstraints +.xsc xs-src/MouseTypeConstraints.c gcc-4 -c "-I." "-I." -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g -fn +o-strict-aliasing -pipe -fstack-protector -Wall -Wextra -Wdeclaration +-after-statement -Wc++-compat -DUSEIMPORTLIB -O3 -DVERSION=\"1.02\ +" -DXS_VERSION=\"1.02\" -o xs-src/MouseTypeConstraints.o "-I/usr/li +b/perl5/5.14/i686-cygwin-threads-64int/CORE" -DUSE_PPPORT xs-src/Mou +seTypeConstraints.c /usr/bin/perl.exe "-Iinc" /usr/lib/perl5/5.14/ExtUtils/xsubpp -typema +p /usr/lib/perl5/5.14/ExtUtils/typemap xs-src/MouseUtil.xs > xs-src/ +MouseUtil.xsc && mv xs-src/MouseUtil.xsc xs-src/MouseUtil.c gcc-4 -c "-I." "-I." -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g -fn +o-strict-aliasing -pipe -fstack-protector -Wall -Wextra -Wdeclaration +-after-statement -Wc++-compat -DUSEIMPORTLIB -O3 -DVERSION=\"1.02\ +" -DXS_VERSION=\"1.02\" -o xs-src/MouseUtil.o "-I/usr/lib/perl5/5.1 +4/i686-cygwin-threads-64int/CORE" -DUSE_PPPORT xs-src/MouseUtil.c Running Mkbootstrap for Mouse () chmod 644 Mouse.bs rm -f blib/arch/auto/Mouse/Mouse.dll g++-4 --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl +,--enable-auto-image-base -L/usr/local/lib -fstack-protector xs-src/M +ouse.o xs-src/MouseAccessor.o xs-src/MouseAttribute.o xs-src/Mouse +TypeConstraints.o xs-src/MouseUtil.o -o blib/arch/auto/Mouse/Mouse. +dll \ /usr/lib/perl5/5.14/i686-cygwin-threads-64int/CORE/cygperl5_14.dll + \ chmod 755 blib/arch/auto/Mouse/Mouse.dll cp Mouse.bs blib/arch/auto/Mouse/Mouse.bs chmod 644 blib/arch/auto/Mouse/Mouse.bs Manifying blib/man3/Mouse.TypeRegistry.3pm Manifying blib/man3/Mouse.Tiny.3pm Manifying blib/man3/Mouse.Meta.Role.Method.3pm Manifying blib/man3/Mouse.Meta.Role.Composite.3pm Manifying blib/man3/Mouse.Meta.Method.Delegation.3pm Manifying blib/man3/Mouse.Meta.Method.Destructor.3pm Manifying blib/man3/Mouse.XS.3pm Manifying blib/man3/Mouse.3pm Manifying blib/man3/Mouse.Meta.Class.3pm Manifying blib/man3/Squirrel.Role.3pm Manifying blib/man3/Test.Mouse.3pm Manifying blib/man3/Mouse.Meta.Method.3pm Manifying blib/man3/Mouse.Meta.Method.Accessor.3pm Manifying blib/man3/Mouse.Meta.TypeConstraint.3pm Manifying blib/man3/Mouse.Meta.Attribute.3pm Manifying blib/man3/Mouse.Meta.Role.3pm Manifying blib/man3/Mouse.Util.TypeConstraints.3pm Manifying blib/man3/Mouse.Util.MetaRole.3pm Manifying blib/man3/Squirrel.3pm Manifying blib/man3/Mouse.Role.3pm Manifying blib/man3/Mouse.Spec.3pm Manifying blib/man3/Mouse.Meta.Module.3pm Manifying blib/man3/Mouse.Meta.Role.Application.3pm Manifying blib/man3/Mouse.Util.3pm Manifying blib/man3/Mouse.Meta.Method.Constructor.3pm Manifying blib/man3/Mouse.PurePerl.3pm Manifying blib/man3/Mouse.Exporter.3pm Manifying blib/man3/Mouse.Object.3pm Manifying blib/man3/ouse.3pm $ make test [all good!] $ make install Files found in blib/arch: installing files in blib/lib into architectu +re dependent library tree Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/aut +o/Mouse/Mouse.dll Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Exporter.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Object.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/PurePerl.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Role.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Spec.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Tiny.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Tiny.pod Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/TypeRegistry.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Util.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/XS.pod Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Attribute.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Class.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Method.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Module.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Role.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/TypeConstraint.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Method/Accessor.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Method/Constructor.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Method/Delegation.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Method/Destructor.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Role/Application.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Role/Composite.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Meta/Role/Method.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Util/MetaRole.pm Installing /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/Mou +se/Util/TypeConstraints.pm Appending installation info to /usr/lib/perl5/5.14/i686-cygwin-threads +-64int/perllocal.pod

      Next, i reinstalled B::*::Check, and B::*::Annotation, and then did anotehr attempt with Devel::Pragma, which didn't work either (wether i used --pp, --xs, or no option at all). and "perl Makefile.PL" said

      Note (probably harmless): No library found for -lAnnotation
      which i should have mentioned in my first post but forgot. I'll tackle this now, reading the next post and doing what i can to try and solve the issue.

      Thanks for your help, i really appreciate it.

        I'm glad that I could be of help. As a last-ditch effort, try running this:
        #!/usr/bin/perl BEGIN { $| = 1; $^W = 1; $ENV{'TEST_POD'} = 0; $ENV{'TEST_POD_COVERAGE'} = 0; } use strict; use warnings; use CPAN; CPAN::Shell->install(qw( Exporter Carp Pod::Man File::Spec Data::Dumper Test::Harness Test::More Regexp::Common Data::Section::Simple Locale::US HTTP::Headers Params::Coerce URI Test::Output List::Util lib SUPER IO::Handle Test::LeakTrace threads threads::shared MRO::Compat File::Path File::Spec File::Slurp autodie Devel::PPPort ExtUtils::ParseXS XSLoader Any::Moose MouseX::Types ExtUtils::Installed Module::Build File::Temp Sub::Uplevel constant Test::Exception Test Text::Wrap Pod::Escapes Pod::Simple Test::Pod Tree::DAG_Node Test::Warn Sub::Installer Test::Perl::Critic Test::Pod::Coverage Sub::Install Params::Util Data::OptList base ExtUtils::CBuilder Sub::Exporter Sub::Exporter::Progressive Storable Const::Fast Module::Runtime Test::Fatal Try::Tiny Test::Requires Module::Implementation B::Hooks::EndOfScope ExtUtils::Depends B::Hooks::OP::Annotation IO::File parent B::Hooks::OP::Check Devel::Pragma Sub::Name Devel::Declare::MethodInstaller::Simple Data::Alias List::MoreUtils Task::Weaken Class::Inspector Hook::LexWrap Test::SubCalls Digest::base Digest::MD5 Clone Test::Tester Test::NoWarnings Test::Object IO::String File::Remove PPI Method::Signatures));
Re: Investigating Devel::Pragma's broken install on Cygwin, need help to fix it. ExtUtils::Depends possibly guilty??
by syphilis (Canon) on Dec 30, 2012 at 06:37 UTC
    The hook_op_annotation.h file is not found by g++

    I don't think it needs to find that file - the build just needs to link to /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/OP/Annotation/libAnnotation.a.
    I can see that the location of that file was spelt out with:
    -L/usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks +/OP/Annotation
    But the crucial -lAnnotation is missing. What happened to it ?
    Did the 'perl Makefile.PL' step warn of "no library found for -lAnnotation" ?
    If it did, then the build process won't even try to link to that file. Otherwise, it's probably a case of ExtUtils-Depends forgetting to put the -lAnnotation in.

    Try opening the generated Makefile, find the 2 separate lines beginning EXTRALIBS and LDLOADLIBS, add (by hand) the -lAnnotation at the end of each of those 2 lines, then run 'make' again.

    That ghastly hack will work with any luck .... assuming that /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/OP/Annotation/libAnotation.a (which should have been installed as part of B::Hooks::OP::Annotation) exists.
    Another snag might be that the order in which -lCheck and -lAnnotation are specified in those 2 lines is important.

    Sorry - too many dependencies for me to actually try this out for myself.

    Cheers,
    Rob

      Indeed! I should have mentioned this: -lAnnotation was not found.

      I must say, there is no *.a file nor libAnnotation* file, neither in the built distro, nor in the *.tar.gz archive. Is it created by the Makefile?

      There are no line beginning with EXTRALIBS or LDLOADLIBS. The only place i find them in is here:

      # --- MakeMaker dynamic_lib section: # This section creates the dynamically loadable $(INST_DYNAMIC) # from $(OBJECT) and possibly $(MYEXTLIB). ARMAYBE = : OTHERLDFLAGS = INST_DYNAMIC_DEP = INST_DYNAMIC_FIX = $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR +)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) + $(INST_DYNAMIC_DEP) $(RM_F) $@ $(LD) $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) + \ $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIS +T) \ $(INST_DYNAMIC_FIX) $(CHMOD) $(PERM_RWX) $@ # --- MakeMaker static section: ## $(INST_PM) has been moved to the all: target. ## It remains here for awhile to allow for old usage: "make static" static :: $(FIRST_MAKEFILE) $(INST_STATIC) $(NOECHO) $(NOOP) # --- MakeMaker static_lib section: $(INST_STATIC) : $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exi +sts $(RM_RF) $@ $(FULL_AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@ $(CHMOD) $(PERM_RWX) $@ $(NOECHO) $(ECHO) "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.l +d
      which i don't understand.

      And neither -lCheck nor -lAnnotation are mentioned in the Makefile.

      It feels like we're getting closer to the bug :-)

        When you installed B::Hooks::OP::Annotation, you would have built and installed (among other things) a file named:

        /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/OP/Annotation/Annotation.dll.

        Devel::Pragma assumes that /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int/auto/B/Hooks/OP/Annotation/libAnnotation.a would also have been built and installed ... but I *now* think that didn't happen.
        So, one option is to build an import lib named libAnnotation.a (in the same directory as Annotation.dll).
        You can do this by cd'ing to the directory that contains Annotation.dll and running:
        gendef Annotation.dll dlltool --kill-at --input-def Annotation.def --output-lib libAnnotatio +n.a
        (At least that's what I would run on MS Windows with MinGW, and I think it would be the same command for Cygwin.)
        You probably already have dlltool (my Cygwin does) and there's a gendef package available for Cygwin if you don't already have it.

        You then need to repeat the same procedure for B::Hooks::OP::Check - ie create a libCheck.a for the Check.dll that was built and installed when you installed B::Hooks::OP::Check.

        With any luck, Devel::Pragma will then build straight out of the box for you. Then there's the fun of working out what the bug is, and whose responsibility it is.
        Welcome to the wonderful world of ExtUtils::Depends.

        Cheers,
        Rob
Re: Investigating Devel::Pragma's broken install on Cygwin, need help to fix it. ExtUtils::Depends possibly guilty??
by Anonymous Monk on Dec 30, 2012 at 06:55 UTC
    You should uninstall all B::Hooks.* and dependencies, and reinstall, and try installing Devel::Pragma again

      I did this already: see the very end of my message. It didn't work.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1010887]
Approved by McDarren
Front-paged by Old_Gray_Bear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (9)
As of 2014-10-20 10:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (75 votes), past polls