Re: Last call for MM issues prior to 6.26
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
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
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)
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
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
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
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)
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
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
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
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