Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Yitzchak Scott-Thoennes
On Sun, Mar 20, 2005 at 01:47:38PM -0800, Michael G Schwern wrote:
 On Sun, Mar 20, 2005 at 12:08:54PM -0800, Yitzchak Scott-Thoennes wrote:
   There is no equivalent in MakeMaker.  
  
  And you can't hand-alter the META.yml?
 
 Yes but then I would have to turn off the META.yml auto-generation for good.
 Also ExtUtils::CBuilder is an optional build requirement.  Its not worth the
 trouble.
 
 I don't think the CPAN shells read the MakeMaker META.yml anyway.
 
 
  Easiest thing to do would be to have have_compiler itself return a string
  describing the problem.
 
 $ perl -wle 'sub foo { return strings are true }  print Strings are true 
 if foo()'
 Strings are true
 
 The classic problem of return value vs error value.  How to convey both.

I was thinking along the lines of:


if (have_compiler($errmsg)) {
plan tests = 1;
} else {
plan skip_all = $errmsg;   
}



sub have_compiler {
   my $errmsg = ;

   ...

   $_[0] = $errmsg if @_;
   return $have_compiler;
}

where errmsg would be one of:
   Unable to load ExtUtils::CBuilder
   ExtUtils::CBuilder-new failed(this would be pretty unusual)
or Unable to find a compiler


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Yitzchak Scott-Thoennes
On Sun, Mar 20, 2005 at 12:30:01AM -0800, Michael G Schwern wrote:
 On Sat, Mar 19, 2005 at 10:51:39PM -0800, Yitzchak Scott-Thoennes wrote:
  I was a little surprised to see t/xs reporting No compiler found to
  test XS builds, till I saw that it is checking for Extutils::CBuilder.
  Could that be added to build_recommends (or whatever the appropriate
  tag is) in META.yml?  
 
 There is no equivalent in MakeMaker.  

And you can't hand-alter the META.yml?
 
 Also ExtUtils::CBuilder is not yet reliable on all platforms.  Its getting 
 better but I don't trust that it will install everywhere.
 
  And perhaps the skip message could mention the module?  Perhaps 
  have_compiler could return different things for being unable to *look* for 
  a compiler vs. unable to *find* one?
 
 I looked into doing this but it would have required duplicating the
 if we can't look for a compiler skip with this message, else if there is no
 compiler skip with this message logic in the tests which needed a compiler
 and I didn't think it was worth it.  If you can come up with something which
 avoids that I'll take it.

Easiest thing to do would be to have have_compiler itself return a string
describing the problem.
 
 But I'm not going to hold up 6.26 for it.

Good. Please don't.


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Yitzchak Scott-Thoennes
On Sun, Mar 20, 2005 at 01:48:35PM -0800, Michael G Schwern wrote:
 On Sun, Mar 20, 2005 at 12:06:51PM -0800, Yitzchak Scott-Thoennes wrote:
  It's really a gray area.  cygwin aims at providing a linux-like
  environment, and when one cygwin program starts another, the args are
  passed in an actual array; it's just when a non-cygwin program starts
  a cygwin program that the latter needs to perform what's usually the
  shell's job of breaking up the command line into parameters.
  
  For various and sundry reasons, in doing so, it only treats \ as an
  escape character inside of , so something like -DXS_VERSION=\1.04\
  has the first \ as literal, and the second used to escape the second 
  (leaving the opening  unmatched, but there's no way to reject
  mismatched quotes as a shell would be able to do.)
  
  The only possible change I can see would be to not treat the first 
  as opening a quoted section, since there's no matching , but the code
  that does all this is extremely hairy, and I'm really reluctant to try
  messsing with it.
  
  Are you open to trying out the patch *after* 6.26 is out?
 
 I'm doubtful.  I like to avoid touching the XS code as much as possible.
 I'd rather wait and see how Cygwin deals with it.

I'll see what ideas I can come up with; it doesn't sound like anyone
else will be persuing this.


Re: MM 6.25_12 on VMS status (was Re: [ANNOUNCE] ExtUtils::MakeMaker 6.25_10)

2005-03-21 Thread Nicholas Clark
On Sun, Mar 20, 2005 at 04:08:38PM -0600, Craig A. Berry wrote:
 At 11:20 AM -0800 3/17/05, Michael G Schwern wrote:
 
 How does it fare actually installing modules?
 
 Using 6.25_12 (Revision: 2339) on OpenVMS Alpha v7.3-1, Perl 5.8.4, I
 had no trouble building, testings, and installing DBI 1.48.
 Compress::Zlib 1.34 worked fine also, though it did give me the
 following warning:

Does it build SDBM_File?

That was always the biggest problem in core.

I guess the easiest answer is if someone integrates it into core PDQ
I'm afraid that I doubt I'll have time tonight, as I'm trying to clear up
some work stuff before the morning.

Nicholas Clark


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Nicholas Clark
On Fri, Mar 18, 2005 at 04:20:21PM -0800, Michael G Schwern wrote:
 Nothing critical has been been reported (that hasn't been fixed) in 6.25_11
 so 6.25_12 has just been released.  Unless I hear otherwise by Tuesday this
 will become ExtUtils::MakeMaker 6.26.

I put the snapshot inside blead on FreeBSD. The curious ../../.. paths that
building inside the core necessitates seems to confuse FreeBSD make. I get
a lot of warnings at various points about:

Makefile, line 383: warning: duplicate script for target ../../lib/.exists 
ignored

(including during one of the MM tests)

However, the big problem comes during make distclean. I get those .. warnings,
and not all files are deleted. Specifically I see:

extra: lib/B lib/B.pm lib/B/Asmdata.pm lib/B/Assembler.pm lib/B/Bblock.pm 
lib/B/Bytecode.pm lib/B/C.pm lib/B/CC.pm lib/B/Concise.pm lib/B/Debug.pm 
lib/B/Deparse.pm lib/B/Disassembler.pm lib/B/Lint.pm lib/B/Showlex.pm 
lib/B/Stackobj.pm lib/B/Stash.pm lib/B/Terse.pm lib/B/Xref.pm lib/B/assemble 
lib/B/cc_harness lib/B/disassemble lib/B/makeliblinks lib/ByteLoader.pm 
lib/DB_File.pm lib/Data lib/Data/Dumper.pm lib/Devel/DProf.pm 
lib/Devel/PPPort.pm lib/Devel/Peek.pm lib/Digest/MD5.pm lib/DynaLoader.pm 
lib/Encode.pm lib/Errno.pm lib/ExtTest.pm lib/Fcntl.pm lib/File/Glob.pm 
lib/Filter/Util lib/Filter/Util/Call.pm lib/I18N/Langinfo.pm lib/IO lib/IO.pm 
lib/IO/Dir.pm lib/IO/File.pm lib/IO/Handle.pm lib/IO/Pipe.pm lib/IO/Poll.pm 
lib/IO/Seekable.pm lib/IO/Select.pm lib/IO/Socket lib/IO/Socket.pm 
lib/IO/Socket/INET.pm lib/IO/Socket/UNIX.pm lib/IPC/Msg.pm lib/IPC/Semaphore.pm 
lib/IPC/SysV.pm lib/List lib/List/Util.pm lib/MIME lib/MIME/Base64.pm 
lib/MIME/QuotedPrint.pm lib/NDBM_File.pm lib/O.pm lib/Opcode.pm lib/POSIX.pm 
lib/POSIX.pod lib/PerlIO/encoding.pm lib/PerlIO/scalar.pm lib/PerlIO/via.pm 
lib/SDBM_File.pm lib/Safe.pm lib/Scalar lib/Scalar/Util.pm lib/Socket.pm 
lib/Storable.pm lib/Sys lib/Sys/Hostname.pm lib/Sys/Syslog.pm lib/Time/HiRes.pm 
lib/Unicode/Normalize.pm lib/XS lib/XS/APItest.pm lib/XS/Typemap.pm 
lib/XSLoader.pm lib/attrs.pm lib/encoding.pm lib/ops.pm lib/threads 
lib/threads.pm lib/threads/shared.pm t/md45083.db

I think that the final t/md45083.db is an error elsewhere. But the rest seem
to be all the .pm files installed into lib/ by extensions in ext/

I don't see this problem on Linux. No warnings, and make distclean is perfect.

Nicholas Clark


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Ken Williams
On Mar 20, 2005, at 2:08 PM, Yitzchak Scott-Thoennes wrote:
On Sun, Mar 20, 2005 at 12:30:01AM -0800, Michael G Schwern wrote:
On Sat, Mar 19, 2005 at 10:51:39PM -0800, Yitzchak Scott-Thoennes 
wrote:
I was a little surprised to see t/xs reporting No compiler found to
test XS builds, till I saw that it is checking for 
Extutils::CBuilder.
Could that be added to build_recommends (or whatever the appropriate
tag is) in META.yml?
There is no equivalent in MakeMaker.
And you can't hand-alter the META.yml?
Putting it in the META.yml doesn't really do anything - that's a 
client-readable file full of meta-information that can be helpful to 
clients (e.g. CPAN.pm, or search.cpan.org, or a person browsing through 
an untarred module).  It's not actually used during the build process, 
it's just generated during the 'dist' action.

 -Ken


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Ken Williams
On Mar 20, 2005, at 4:09 PM, Yitzchak Scott-Thoennes wrote:
I was thinking along the lines of:
if (have_compiler($errmsg)) {
plan tests = 1;
} else {
plan skip_all = $errmsg;
}

sub have_compiler {
   my $errmsg = ;
   ...
   $_[0] = $errmsg if @_;
   return $have_compiler;
}
It would probably be better to set $@ or another global.  Using 
inout-style arguments is a little unexpected these days unless the arg 
is a reference to a data structure.

 -Ken


Re: MM 6.25_12 on VMS status (was Re: [ANNOUNCE] ExtUtils::MakeMaker 6.25_10)

2005-03-21 Thread Nicholas Clark
On Sun, Mar 20, 2005 at 10:21:44PM +, Nicholas Clark wrote:
 On Sun, Mar 20, 2005 at 04:08:38PM -0600, Craig A. Berry wrote:
  At 11:20 AM -0800 3/17/05, Michael G Schwern wrote:
  
  How does it fare actually installing modules?
  
  Using 6.25_12 (Revision: 2339) on OpenVMS Alpha v7.3-1, Perl 5.8.4, I
  had no trouble building, testings, and installing DBI 1.48.
  Compress::Zlib 1.34 worked fine also, though it did give me the
  following warning:
 
 Does it build SDBM_File?
 
 That was always the biggest problem in core.
 
 I guess the easiest answer is if someone integrates it into core PDQ
 I'm afraid that I doubt I'll have time tonight, as I'm trying to clear up
 some work stuff before the morning.

maint + the makemaker snapshot failed on B:

$(INST_BIN)$(DFSEP).exists :
%MMS-W-GFBMULTACTS, Actions for [---.LIB.AUTO.B.C].EXISTS are redefined in file
USER1:[NWC10.PERL.EXT.B.C]DESCRIP.MMS;1, line 363.
MCR [---]miniperl.exe -I[---.lib] -I[---.lib] -e use ExtUtils::Mksymlists;
-e Mksymlists('NAME' = 'B::C', 'DL_FUNCS' = {  }, 'DL_VARS' = [], 'F
UNCLIST' = [])
MCR [---]miniperl.exe -e print [---.lib.auto.B.C]C.olb/Include=C\n[---.lib.au
to.B.C]C.olb/Library\n; C.OPT
MCR [---]miniperl.exe -e print qq{[---]PerlShr.exe/Share\n} C.OPT
MCR USER1:[NWC10.PERL]miniperl.exe -I[---.lib] -I[---.lib] -MExtUtils::Comm
and -e cp C.OPT [---.LIB.AUTO.B.C]C.OPT
MCR [---]miniperl.exe -I[---.lib] -I[---.lib] [---.lib.ExtUtils]xsubpp  -typ
emap [---.lib.ExtUtils]typemap C.xs C.C
CC/DECC /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj /NOANSI_ALIAS/floa
t=ieee/ieee=denorm/Define=(VERSION=1.04,XS_VERSION=1.04)/Include=([-
--])/NoList  C.c
If F$Search([---.LIB.AUTO.B.C]C.OLB).eqs. Then Library/Object/Create [---.LI
B.AUTO.B.C]C.OLB
Library/Object/Replace [---.LIB.AUTO.B.C]C.OLB C.OBJ
If F$TrnLNm(PerlShr).eqs. Then Define/NoLog/User PerlShr Sys$Share:PerlShr.e
xe
Link /NoTrace/NoMap /Shareable=[---.LIB.AUTO.B.C]PL_B__C.EXE C.opt/Option,[---]p
erlshr_attr.opt/Option
Running Mkbootstrap for B::C ()
MCR USER1:[NWC10.PERL]miniperl.exe -I[---.lib] -I[---.lib] -MExtUtils::Comm
and -e chmod 644 C.BS
MCR USER1:[NWC10.PERL]miniperl.exe -I[---.lib] -I[---.lib] -MExtUtils::Comm
and -e cp C.bs [---.LIB.AUTO.B.C]C.BS
MCR USER1:[NWC10.PERL]miniperl.exe -I[---.lib] -I[---.lib] -MExtUtils::Comm
and -e chmod 644 [---.LIB.AUTO.B.C]C.BS
%MMS-F-ABORT, For target SUBDIRS, CLI returned abort status: %X10EE81F8.
%MMS-F-ABORT, For target DYNEXT, CLI returned abort status: %X10EE8034.

makefile attached.
I've not tried maint without the MM snapshot - I'm just about to do this.


Nicholas Clark
# This Makefile is for the B extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.25_12 (Revision: 4213) from the contents of
# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
#
#   ANY CHANGES MADE HERE WILL BE LOST!
#
#   MakeMaker ARGV: (q[INST_LIB=[--.lib]], q[INST_ARCHLIB=[--.lib]], 
q[PERL_CORE=1])
#
#   MakeMaker Parameters:

# MAN3PODS = {  }
# NAME = q[B]
# PL_FILES = { defsubs_h.PL=q[defsubs.h] }
# VERSION_FROM = q[B.pm]
# clean = { FILES=q[perl.exe *.obj B.c defsubs.h *~] }

# --- MakeMaker post_initialize section:


# --- MakeMaker const_config section:

# These definitions are from config.sh (via ../../lib/Config.pm)

# They may have been overridden via Makefile.PL or on the command line
AR = 
CC = CC/DECC
CCCDLFLAGS = 
CCDLFLAGS = 
DLEXT = exe
DLSRC = dl_vms.c
LD = Link
LDDLFLAGS = /Share
LDFLAGS = /NoTrace/NoMap
LIBC = \(DECCRTL\)
LIB_EXT = .olb
OBJ_EXT = .obj
OSNAME = VMS
OSVERS = V8.2
RANLIB = 
SITELIBEXP = perl_root:[lib.site_perl]
SITEARCHEXP = perl_root:[lib.site_perl.VMS_AXP]
SO = exe
EXE_EXT = .exe
FULL_AR = 
VENDORARCHEXP = 
VENDORLIBEXP = 


# --- MakeMaker constants section:
AR_STATIC_ARGS = cr
DIRFILESEP = 
DFSEP = $(DIRFILESEP)
NAME = B
NAME_SYM = B
VERSION = 1.07
VERSION_MACRO = VERSION
VERSION_SYM = 1_07
DEFINE_VERSION = $(VERSION_MACRO)=$(VERSION)
XS_VERSION = 1.07
XS_VERSION_MACRO = XS_VERSION
XS_DEFINE_VERSION = $(XS_VERSION_MACRO)=$(XS_VERSION)
INST_ARCHLIB = [--.lib]
INST_SCRIPT = [.blib.script]
INST_BIN = [.blib.bin]
INST_LIB = [--.lib]
INST_MAN1DIR = [.blib.man1]
INST_MAN3DIR = [.blib.man3]
MAN1EXT = rno
MAN3EXT = rno
INSTALLDIRS = site
DESTDIR = 
PREFIX = $(SITEPREFIX)
PERLPREFIX = perl_root:
SITEPREFIX = perl_root:
VENDORPREFIX = 
INSTALLPRIVLIB = perl_root:[lib]
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
INSTALLSITELIB = perl_root:[lib.site_perl]
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB = 
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB = perl_root:[lib.VMS_AXP.5_8_6]
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
INSTALLSITEARCH = perl_root:[lib.site_perl.VMS_AXP]
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH = 
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
INSTALLBIN = perl_root:[00]
DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
INSTALLSITEBIN = 

Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Yitzchak Scott-Thoennes
On Mon, Mar 21, 2005 at 09:57:26AM -0600, Ken Williams wrote:
 
 On Mar 20, 2005, at 4:09 PM, Yitzchak Scott-Thoennes wrote:
 I was thinking along the lines of:
 
 
 if (have_compiler($errmsg)) {
 plan tests = 1;
 } else {
 plan skip_all = $errmsg;
 }
 
 
 
 sub have_compiler {
my $errmsg = ;
 
...
 
$_[0] = $errmsg if @_;
return $have_compiler;
 }
 
 It would probably be better to set $@ or another global.  Using 
 inout-style arguments is a little unexpected these days unless the arg 
 is a reference to a data structure.

I find the output via args a lot cleaner.  Even so, I would agree with
you except that the only user of this module
(lib/MakeMaker/Test/Utils.pm) is the makemaker test suite.  I'm going
to try to work on a patch that does this.

An alternative would be to have have_compiler return ($have_compiler,
$errmsg) if wantarray.  That makes the code in the caller more clunky
though (IMO).  Another alternative would be to rename the thing
no_compiler, returning undef or an explanation.  But I'm not going to
pursue these alternatives unless someone likes them better.


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Ken Williams
On Mar 21, 2005, at 12:02 PM, Yitzchak Scott-Thoennes wrote:
I'm a client too.  I don't use CPAN or CPANPLUS usually to build 
things,
I manually check for dependencies.

I dislike it when a module that has dependencies (even just for tests)
doesn't mention them in Makefile, META.yml, or a README or INSTALL.
Ah, I see.  Yeah, for people like you (and for general correctness of 
the META.yml) it would be nice to add it to the build_requires entry.  
Or really, since it's not *required*, it should be added to a 
build_recommends entry.

 -Ken


Re: Last call for MM issues prior to 6.26

2005-03-21 Thread Ken Williams
On Mar 21, 2005, at 11:58 AM, Yitzchak Scott-Thoennes wrote:
An alternative would be to have have_compiler return ($have_compiler,
$errmsg) if wantarray.  That makes the code in the caller more clunky
though (IMO).  Another alternative would be to rename the thing
no_compiler, returning undef or an explanation.  But I'm not going to
pursue these alternatives unless someone likes them better.
Or throw an exception, maybe.
 -Ken