http://www.perlmonks.org?node_id=511166


in reply to Re: Can I please have *simple* modules?
in thread Can I please have *simple* modules?

Hi fluffy,

I ran into this problem last night. I didn't send the email because I've seen those test failures for CMM for a long time and since there are also a variety of open issues in the CMM RT queue, I just moved on. I don't mean this as any offense to you, but there are days when I just get tired of documenting and tracking every bug I find in large external modules. There's also the problem that CMM apparently assumes I'm using a hash internally. This breaks some of my code. So not only did I have difficult installing it, it really doesn't do what I need.

I did check and see I still have the info in my buffer. If you're curious:

Kinetic $ cpanp i Class::MethodMaker Installing Class::MethodMaker Creating custom builder _build/lib/CMM/AutoSplit.pm in _build/lib/CMM Checking whether your kit is complete... Looks good Creating new 'Build' script for 'Class-MethodMaker' version '2.07' /usr/local/bin/perl generate.PL lib/Class/MethodMaker/array.pm lib/Cla +ss/MethodMaker/hash.pm lib/Class/MethodMaker/scalar.pm ./cmmg.pl components/array.m > lib/Class/MethodMaker/array.pm ./cmmg.pl components/hash.m > lib/Class/MethodMaker/hash.pm ./cmmg.pl components/scalar.m > lib/Class/MethodMaker/scalar.pm MethodMaker.xs -> lib/Class/MethodMaker.xs lib/Class/MethodMaker.xs -> lib/Class/MethodMaker.c cc -I/usr/local/lib/perl5/5.8.7/darwin-2level/CORE -DXS_VERSION="2.07" + -DVERSION="2.07" -c -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-s +trict-aliasing -pipe -I/usr/local/include -Os -o lib/Class/MethodMake +r.o lib/Class/MethodMaker.c ExtUtils::Mkbootstrap::Mkbootstrap('lib/Class/MethodMaker') lib/Class/MethodMaker.bs -> blib/arch/auto/Class/MethodMaker/MethodMak +er.bs env MACOSX_DEPLOYMENT_TARGET=10.3 cc -bundle -undefined dynamic_lookup + -L/usr/local/lib -o blib/arch/auto/Class/MethodMaker/MethodMaker.bun +dle lib/Class/MethodMaker.o Warning: AutoSplit had to create top-level blib/lib/auto unexpectedly. AutoSplitting lib/Class/MethodMaker/array.pm (blib/lib/auto/Class/Meth +odMaker/array) AutoSplitting lib/Class/MethodMaker/hash.pm (blib/lib/auto/Class/Metho +dMaker/hash) AutoSplitting lib/Class/MethodMaker/scalar.pm (blib/lib/auto/Class/Met +hodMaker/scalar) AutoSplitting lib/Class/MethodMaker/Engine.pm (blib/lib/auto/Class/Met +hodMaker/Engine) t/0-signature..............ok + 1/1 skipped: Next time around, consider install Module::Signat +ure, # so you can verify the integrity of this distribution. t/array....................Argument "2.121_04" isn't numeric in subrou +tine entry at t/array.t line 12. t/array....................ok + t/basic....................Argument "2.121_04" isn't numeric in subrou +tine entry at t/basic.t line 11. t/basic....................ok + t/diffclass................ok + t/hash.....................Argument "2.121_04" isn't numeric in subrou +tine entry at t/hash.t line 12. t/hash.....................ok + t/new......................ok + t/redefine-warnings........ok + t/scalar...................ok + t/v1_abstract..............ok + t/v1_boolean...............Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_bo +olean.t line 6. BEGIN failed--compilation aborted at t/v1_boolean.t line 7. t/v1_boolean...............dubious + Test returned status 2 (wstat 512, 0x200) t/v1_code..................ok + t/v1_copy..................ok + t/v1_counter...............Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_co +unter.t line 7. BEGIN failed--compilation aborted at t/v1_counter.t line 8. t/v1_counter...............dubious + Test returned status 2 (wstat 512, 0x200) t/v1_get_concat............Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_ge +t_concat.t line 6. BEGIN failed--compilation aborted at t/v1_get_concat.t line 8. t/v1_get_concat............dubious + Test returned status 2 (wstat 512, 0x200) t/v1_get_set...............ok + t/v1_get_set_hi............ok + t/v1_hash..................ok + t/v1_key_attrib............Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_ke +y_attrib.t line 6. BEGIN failed--compilation aborted at t/v1_key_attrib.t line 7. t/v1_key_attrib............dubious + Test returned status 2 (wstat 512, 0x200) t/v1_key_with_create.......Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_ke +y_with_create.t line 6. BEGIN failed--compilation aborted at t/v1_key_with_create.t line 7. t/v1_key_with_create.......dubious + Test returned status 2 (wstat 512, 0x200) t/v1_list..................ok + t/v1_method................ok + t/v1_new...................ok + t/v1_new_hash_with_init....ok + t/v1_object................ok + t/v1_object_list...........ok + t/v1_object_tie_hash.......Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/arch /Users/curtispoe/.cpanplus/5.8.7/build/Class-Method +Maker-2.07/blib/lib /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_ob +ject_tie_hash.t line 30. BEGIN failed--compilation aborted at t/v1_object_tie_hash.t line 30. t/v1_object_tie_hash.......dubious + Test returned status 2 (wstat 512, 0x200) t/v1_object_tie_list.......Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/arch /Users/curtispoe/.cpanplus/5.8.7/build/Class-Method +Maker-2.07/blib/lib /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_ob +ject_tie_list.t line 30. BEGIN failed--compilation aborted at t/v1_object_tie_list.t line 30. t/v1_object_tie_list.......dubious + Test returned status 2 (wstat 512, 0x200) t/v1_set_once..............Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_se +t_once.t line 7. BEGIN failed--compilation aborted at t/v1_set_once.t line 18. t/v1_set_once..............dubious + Test returned status 2 (wstat 512, 0x200) t/v1_set_once_static.......Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_se +t_once_static.t line 6. BEGIN failed--compilation aborted at t/v1_set_once_static.t line 12. t/v1_set_once_static.......dubious + Test returned status 2 (wstat 512, 0x200) t/v1_singleton.............Can't locate Class/MethodMaker.pm in @INC ( +@INC contains: /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodMak +er-2.07/blib/lib /Users/curtispoe/.cpanplus/5.8.7/build/Class-MethodM +aker-2.07/blib/arch /sw/lib/perl5 /sw/lib/perl5/darwin /usr/local/lib +/perl5/site_perl/5.8.7//darwin-2level /usr/local/lib/perl5/site_perl/ +5.8.7/ /usr/local/lib/perl5/5.8.7/darwin-2level /usr/local/lib/perl5/ +5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level /usr/local/l +ib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at t/v1_si +ngleton.t line 6. BEGIN failed--compilation aborted at t/v1_singleton.t line 7. t/v1_singleton.............dubious + Test returned status 2 (wstat 512, 0x200) t/v1_static_get_set........ok + t/v1_static_hash...........ok + t/v1_static_list...........ok + t/v1_tie_hash..............ok + t/v1_tie_list..............ok + t/v1_tie_scalar............ok + Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------- +--------- t/v1_boolean.t 2 512 ?? ?? % ?? t/v1_counter.t 2 512 ?? ?? % ?? t/v1_get_concat.t 2 512 ?? ?? % ?? t/v1_key_attrib.t 2 512 ?? ?? % ?? t/v1_key_with_create.t 2 512 ?? ?? % ?? t/v1_object_tie_hash.t 2 512 ?? ?? % ?? t/v1_object_tie_list.t 2 512 ?? ?? % ?? t/v1_set_once.t 2 512 ?? ?? % ?? t/v1_set_once_static.t 2 512 ?? ?? % ?? t/v1_singleton.t 2 512 ?? ?? % ?? 1 subtest skipped. [ERROR] Could not run 'Build test': Failed 10/36 test scripts, 72.22% +okay. 0/1534 subtests failed, 100.00% okay. [ERROR] Unable to create a new distribution object for 'Class::MethodM +aker' -- cannot continue Error installing 'Class::MethodMaker' Problem installing one or more modules

This is Perl 5.8.7 on Mac OS X.

I switched to CPAN (instead of CPANPLUS) and CMM installed just from from a CPAN::Mini installation.

Cheers,
Ovid

New address of my CGI Course.

Replies are listed 'Best First'.
Re^3: Can I please have *simple* modules?
by fluffy (Scribe) on Nov 26, 2005 at 14:59 UTC
    Ovid,

    Thanks for the details. FWIW, I don't see the same thing in similar circumstances (I'm also on Mac OS, and Linux), but there were a couple of bugs in Build.PL I picked up from the RT queue, so I've fixed those and uploaded 2.08. I'd not used CPANPLUS before, being a roll-your-own kinda guy, but I tried it and it worked out of the box for me (with C::MM 2.07), so that's kinda weird. Do you have any non-default settings with yours?

    I've resolved all the issues on the RT queue, I hope.

    As to the generic thrust, I'll make the following points:

    -) As far as forcing one to use hashes "I wonder how many folks want accessor generation only to find out they must use a blessed hash with canned modules?", I will observe that I did consider trying to be object-impl. agnostic, but chose against, for that would make the module even more complex, and the slanging on PerlMonks would have come all the faster. As it is, hash-based objects are the majority by an order-of-magnitude, and non-hash-based are used most commonly in specialist situations (e.g., performance-intensive ops) where you'll be avoiding generic solutions anyway.

    -) The rest of the thread seems to me the general case of "I want the moon, and I'd like it on a stick". I'm referring to thread as a whole here, not specifically your posts. Of course we'd like modules to be simple to use, and (although it's often less said), we'd like 'em to solve complex issues. If they were simple issues, it wouldn't be worth the time surfing CPAN for them. So we end up with a trade-off: simplicity of use vs. complexity of problem solved. And wherever there's a trade-off, there's a team of people ready to criticize it. It is worthy of note that there's always a thread like this one, including the position (e.g., demerphq), of "accessor generators are wrong", and I regularly get requests for more feature additions. There's no pleasing everyone.

    -) I see no problem of you writing you own module if C::MM and others don't suit your needs, either because they are too complex, or you want to use arrays/scalars/filehandles/whatever to implement your objs. Code reuse is about not re-writing code that does do what you need, not code that doesn't. If you were to write a module that assumes hash-based classes, with argument type-checking & optional tied storage, then I would wonder if re-using C::MM wouldn't make more sense, but it's your time & code.

    -) C::MM does have many flaws, it is more complex than I would like, the documentation isn't as good as I would like, and I don't get to spend much time on it now that I have a daughter to look after. I'm happy to talk about those (subject to time). On the other hand, it's used in many places, I get positive feedback from many users, so I'm happy to have contributed what I can.

    In summary, if you go to the farm and find a horse, by all means help me to make it run faster, but please don't complain to me that it doesn't give milk. You want a cow for that.

    I appreciate that you weren't aiming to offend me, and I'm not offended; my comments are aimed at the thread as a whole. I do get a little tired of the complaints (at all free software) that it "doesn't do what I want". If as the complainants generated half as much code as commentary, there'd be a great deal less complaining to do. And that's definately not aimed at you Ovid - you clearly do produce the goods, so you've earned your right to a whinge.

      Ovid,

      I've re-read much of the thread again, (it takes me a while as I'm dyslexic), and I just thought I'd post to apologize to you particularly for over-reacting.

      Much of my reaction is aimed at comments elsewhere in the thread, I hope that's clear, but you clearly started by qualifying your statement with some kind words about C::MM, and I glazed on those.

      Anyway, C::MM 2.08 is up on CPAN, I hope that fixes any issues you had, and apologies for going off on one.

      Fluffy.