Cannot build bleadperl on OpenVMS

2004-10-02 Thread Abe Timmerman
Hi,
I am now working on porting Test::Smoke to OpenVMS, thanks to Bernd Ulmann.
I'm on this machine:
TIMMERMAN:FAFNER$ perl -Ilib -MTest::Smoke::SysInfo=tsuname -le print 
tsuname()
FAFNER openvms - V7.2 VAX_7000-720  VAX_7000-720

After a successful configure I start MMK and get:
MCR [--]miniperl.exe -I[--.lib] -I[--.lib] -e use ExtUtils::Mksymlists;
-e Mksymlists('NAME' = 'Encode', 'DL_FUNCS' = {  }, 'DL_VARS' = [], 
'FUNCLIST' = [])
MCR [--]miniperl.exe -e print [--.lib.auto.Encode]Encode.olb/Include=Encode\n
[--.lib.auto.Encode]Encode.olb/Library\n; ENCODE.OPT
MCR [--]miniperl.exe -e print qq{[--]PerlShr.exe/Share\n} ENCODE.OPT
Copy/NoConfirm ENCODE.OPT [--.LIB.AUTO.ENCODE]ENCODE.OPT
MCR [--]miniperl.exe -I[--.lib] [.bin]enc2xs -Q -O -o DEF_T.C -f def_t.fnm
Writing compiled form
512 bytes in string tables
32 bytes (5.88%) saved spotting duplicates
Reading iso-8859-1 (iso-8859-1)
Reading ascii (ascii)
Reading ascii-ctrl (ascii-ctrl)
Reading null (null)
CC/DECC /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj /Define=(VERSION=
2.02,XS_VERSION=2.02)/Include=([--],[.Encode])/NoList  ENCODE.c
%CLI-F-OPENIN, error opening
 DISK$USER_2:[TIMMERMAN.KLAD.PERL-CURRENT.EXT.ENCODE]ENCODE.C; as input
-RMS-E-FNF, file not found

%MMK-F-ERRUPD, error status %X102C occurred when updating target ENCODE.OBJ
%MMK-F-ERRUPD, error status %X1C14803C occurred when updating target DYNEXT
attached is config.sys
Good luck,
Abe
--
CAUTION ... We have a trigger happy Klingon at tactical.
   -- Top-10 bumperstickers on the U.S.S. Enterprise #5
#!/bin/sh
#
# This file was produced by Configure.COM on a VMS system.
#
# Package name  : perl5
# Source directory  : sys$login:[perl59x]
# Configuration time: Sat Oct 02 12:45:20 UTC+2:00 2004
# Configuration by  : timmerman
# Target system : VMS fafner V7.2 VAX 7000-720

CONFIG='true'
Makefile_SH='descrip_mms.template'
Mcc='CC/DECC'
PERL_REVISION='5'
PERL_VERSION='9'
PERL_SUBVERSION='2'
PERL_API_REVISION='5'
PERL_API_VERSION='9'
PERL_API_SUBVERSION='1'
_a='.olb'
_exe='.exe'
_o='.obj'
alignbytes='8'
aphostname='write sys$output f$edit(f$getsyi(\SCSNODE\),\TRIM,LOWERCASE\)'
ar=''
archlib='perl_root:[lib.VMS_VAX.5_9_2]'
archlibexp='perl_root:[lib.VMS_VAX.5_9_2]'
archname='VMS_VAX'
baserev='5.0'
bin='/perl_root/00'
binexp='perl_root:[00]'
builddir='perl_root:[00]'
byteorder='1234'
castflags='0'
cc='CC/DECC'
cccdlflags=''
ccdlflags=''
ccflags='/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj '
ccname='DEC'
ccversion='60490005'
cf_by='timmerman'
cf_email='[EMAIL PROTECTED]'
cf_time='Sat Oct 02 12:45:20 UTC+2:00 2004'
config_args='-des -Dusedevel -Dprefix=sys$login:[perl59x]'
config_sh='[-]config.sh'
cpp_stuff='42'
cpplast=' '
cppminus=' '
cpprun='CC/DECC/noobj/comments=as_is/preprocess=sys$output sys$input'
cppstdin='CC/DECC/noobj/comments=as_is/preprocess=sys$output sys$input'
d_Gconvert='my_gconvert(x,n,t,b)'
d_PRIEldbl='define'
d_PRIFldbl='define'
d_PRIGldbl='define'
d_PRIXU64='undef'
d_PRId64='undef'
d_PRIeldbl='define'
d_PRIfldbl='define'
d_PRIgldbl='define'
d_PRIo64='undef'
d_PRIu64='undef'
d_PRIx64='undef'
d_SCNfldbl='define'
d__fwalk='undef'
d_access='undef'
d_accessx='undef'
d_aintl='undef'
d_alarm='define'
d_archlib='define'
d_atolf='undef'
d_atoll='undef'
d_attribut='undef'
d_bcmp='define'
d_bcopy='define'
d_bincompat3='undef'
d_bsdgetpgrp='undef'
d_bsdsetpgrp='undef'
d_bzero='define'
d_casti32='define'
d_castneg='define'
d_charvspr='undef'
d_chown='define'
d_chroot='undef'
d_chsize='undef'
d_class='undef'
d_cmsghdr_s='undef'
d_const='define'
d_copysignl='define'
d_crypt='define'
d_csh='undef'
d_cuserid='define'
d_dbl_dig='define'
d_dbminitproto='undef'
d_difftime='define'
d_dirfd='undef'
d_dirnamlen='define'
d_dlerror='undef'
d_dlsymun='undef'
d_dosuid='undef'
d_drand48proto='define'
d_dup2='define'
d_eaccess='undef'
d_endgrent='define'
d_endhent='define'
d_endnent='define'
d_endpent='define'
d_endpwent='define'
d_endsent='define'
d_eofnblk='undef'
d_eunice='undef'
d_fchmod='undef'
d_fchdir='undef'
d_fchown='undef'
d_fcntl='define'
d_fcntl_can_lock='undef'
d_fd_set='define'
d_fgetpos='define'
d_finite='undef'
d_finitel='undef'
d_flexfnam='define'
d_flock='undef'
d_flockproto='undef'
d_fork='undef'
d_fp_class='undef'
d_fpathconf='define'
d_fpclass='undef'
d_fpclassify='undef'
d_fpclassl='undef'
d_fpos64_t='undef'
d_frexpl='undef'
d_fs_data_s='undef'
d_fseeko='undef'
d_fsetpos='define'
d_fstatfs='undef'
d_fstatvfs='undef'
d_fsync='undef'
d_ftello='undef'
d_getcwd='define'
d_getespwnam='undef'
d_getfsstat='undef'
d_getgrent='define'
d_getgrps='undef'
d_gethbyaddr='define'
d_gethbyname='define'
d_gethent='define'
d_gethname='define'
d_gethostprotos='define'
d_getitimer='define'
d_getlogin='define'
d_getmnt='undef'
d_getmntent='undef'
d_getnbyaddr='define'
d_getnbyname='define'
d_getnent='define'
d_getnetprotos='define'
d_getpagsz='undef'
d_getpbyname='define'
d_getpbynumber='define'
d_getpent='define'
d_getpgid='undef'

Re: Cannot build bleadperl on OpenVMS

2004-10-02 Thread Thomas Pfau
Make sure you have the latest version of MMK or use MMS.  I recently 
built 5.8.4 on VAX with an older MMK and ran into some strange 
problems.  It built fine after I installed the latest MMK.



Re: Cannot build bleadperl on OpenVMS

2004-10-02 Thread Craig A. Berry
In article [EMAIL PROTECTED],
 [EMAIL PROTECTED] (Abe Timmerman) wrote:

 I am now working on porting Test::Smoke to OpenVMS, thanks to Bernd Ulmann.

Thanks for working on this.  

 I'm on this machine:
 TIMMERMAN:FAFNER$ perl -Ilib -MTest::Smoke::SysInfo=tsuname -le print
 tsuname()
 FAFNER openvms - V7.2 VAX_7000-720  VAX_7000-720

It's been quite a while since I've seen any serious build problems on 
Alpha, but VAX doesn't get tested much so this is good to see.

 After a successful configure I start MMK and get:
 
 MCR [--]miniperl.exe -I[--.lib] -I[--.lib] -e use ExtUtils::Mksymlists;
 -e Mksymlists('NAME' = 'Encode', 'DL_FUNCS' = {  }, 'DL_VARS' = [],
 'FUNCLIST' = [])
 MCR [--]miniperl.exe -e print 
 [--.lib.auto.Encode]Encode.olb/Include=Encode\n
 [--.lib.auto.Encode]Encode.olb/Library\n; ENCODE.OPT
 MCR [--]miniperl.exe -e print qq{[--]PerlShr.exe/Share\n} ENCODE.OPT
 Copy/NoConfirm ENCODE.OPT [--.LIB.AUTO.ENCODE]ENCODE.OPT
 MCR [--]miniperl.exe -I[--.lib] [.bin]enc2xs -Q -O -o DEF_T.C -f 
 def_t.fnm
 Writing compiled form
 512 bytes in string tables
 32 bytes (5.88%) saved spotting duplicates
 Reading iso-8859-1 (iso-8859-1)
 Reading ascii (ascii)
 Reading ascii-ctrl (ascii-ctrl)
 Reading null (null)
 CC/DECC /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj 
 /Define=(VERSION=
 2.02,XS_VERSION=2.02)/Include=([--],[.Encode])/NoList  ENCODE.c
 %CLI-F-OPENIN, error opening
DISK$USER_2:[TIMMERMAN.KLAD.PERL-CURRENT.EXT.ENCODE]ENCODE.C; as input
 -RMS-E-FNF, file not found

I guess the first question is whether you do in fact have an ENCODE.c.  
I suspect you don't because in your log above, immediately after the 
line that copies encode.opt and before running enc2xs, you should have 
the line:

MCR [--]miniperl.exe -I[--.lib] -I[--.lib] [--.lib.ExtUtils]xsubpp  
-nolinenumbers -typemap [--.lib.ExtUtils]typemap ENCODE.xs 
ENCODE.C

As a temporary workaround, you could try setting default to the Encode 
directory and explicitly making ENCODE.c:

$ mmk ENCODE.c

and then proceeding with the build.  

But the real question is how the relevant dependency got missed in the 
main build.  Encode is a complicated extension and there have been some 
problems building it with older versions of MMK.  What version of MMK 
are you using (type mmk/ident to find out)?  If it doesn't say 3.9-6, 
go to http://www.madgoat.com and get the latest version.  If that 
doesn't help, then we'll have to back up and think about what else 
might be happening.


Cannot build bleadperl on OpenVMS

2004-10-02 Thread Abe Timmerman
[Sorry if this arrives twice]
Hi,
I am now working on porting Test::Smoke to OpenVMS, thanks to Bernd Ulmann.
I'm on this machine:
TIMMERMAN:FAFNER$ perl -Ilib -MTest::Smoke::SysInfo=tsuname -le print
tsuname()
FAFNER openvms - V7.2 VAX_7000-720  VAX_7000-720
After a successful configure I start MMK and get:
MCR [--]miniperl.exe -I[--.lib] -I[--.lib] -e use ExtUtils::Mksymlists;
-e Mksymlists('NAME' = 'Encode', 'DL_FUNCS' = {  }, 'DL_VARS' = [],
'FUNCLIST' = [])
MCR [--]miniperl.exe -e print [--.lib.auto.Encode]Encode.olb/Include=Encode\n
[--.lib.auto.Encode]Encode.olb/Library\n; ENCODE.OPT
MCR [--]miniperl.exe -e print qq{[--]PerlShr.exe/Share\n} ENCODE.OPT
Copy/NoConfirm ENCODE.OPT [--.LIB.AUTO.ENCODE]ENCODE.OPT
MCR [--]miniperl.exe -I[--.lib] [.bin]enc2xs -Q -O -o DEF_T.C -f def_t.fnm
Writing compiled form
512 bytes in string tables
32 bytes (5.88%) saved spotting duplicates
Reading iso-8859-1 (iso-8859-1)
Reading ascii (ascii)
Reading ascii-ctrl (ascii-ctrl)
Reading null (null)
CC/DECC /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj /Define=(VERSION=
2.02,XS_VERSION=2.02)/Include=([--],[.Encode])/NoList  ENCODE.c
%CLI-F-OPENIN, error opening
  DISK$USER_2:[TIMMERMAN.KLAD.PERL-CURRENT.EXT.ENCODE]ENCODE.C; as input
-RMS-E-FNF, file not found
%MMK-F-ERRUPD, error status %X102C occurred when updating target ENCODE.OBJ
%MMK-F-ERRUPD, error status %X1C14803C occurred when updating target DYNEXT
attached is config.sys
Good luck,
Abe
--
CAUTION ... We have a trigger happy Klingon at tactical.
-- Top-10 bumperstickers on the U.S.S. Enterprise #5

#!/bin/sh
#
# This file was produced by Configure.COM on a VMS system.
#
# Package name  : perl5
# Source directory  : sys$login:[perl59x]
# Configuration time: Sat Oct 02 12:45:20 UTC+2:00 2004
# Configuration by  : timmerman
# Target system : VMS fafner V7.2 VAX 7000-720

CONFIG='true'
Makefile_SH='descrip_mms.template'
Mcc='CC/DECC'
PERL_REVISION='5'
PERL_VERSION='9'
PERL_SUBVERSION='2'
PERL_API_REVISION='5'
PERL_API_VERSION='9'
PERL_API_SUBVERSION='1'
_a='.olb'
_exe='.exe'
_o='.obj'
alignbytes='8'
aphostname='write sys$output f$edit(f$getsyi(\SCSNODE\),\TRIM,LOWERCASE\)'
ar=''
archlib='perl_root:[lib.VMS_VAX.5_9_2]'
archlibexp='perl_root:[lib.VMS_VAX.5_9_2]'
archname='VMS_VAX'
baserev='5.0'
bin='/perl_root/00'
binexp='perl_root:[00]'
builddir='perl_root:[00]'
byteorder='1234'
castflags='0'
cc='CC/DECC'
cccdlflags=''
ccdlflags=''
ccflags='/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj '
ccname='DEC'
ccversion='60490005'
cf_by='timmerman'
cf_email='[EMAIL PROTECTED]'
cf_time='Sat Oct 02 12:45:20 UTC+2:00 2004'
config_args='-des -Dusedevel -Dprefix=sys$login:[perl59x]'
config_sh='[-]config.sh'
cpp_stuff='42'
cpplast=' '
cppminus=' '
cpprun='CC/DECC/noobj/comments=as_is/preprocess=sys$output sys$input'
cppstdin='CC/DECC/noobj/comments=as_is/preprocess=sys$output sys$input'
d_Gconvert='my_gconvert(x,n,t,b)'
d_PRIEldbl='define'
d_PRIFldbl='define'
d_PRIGldbl='define'
d_PRIXU64='undef'
d_PRId64='undef'
d_PRIeldbl='define'
d_PRIfldbl='define'
d_PRIgldbl='define'
d_PRIo64='undef'
d_PRIu64='undef'
d_PRIx64='undef'
d_SCNfldbl='define'
d__fwalk='undef'
d_access='undef'
d_accessx='undef'
d_aintl='undef'
d_alarm='define'
d_archlib='define'
d_atolf='undef'
d_atoll='undef'
d_attribut='undef'
d_bcmp='define'
d_bcopy='define'
d_bincompat3='undef'
d_bsdgetpgrp='undef'
d_bsdsetpgrp='undef'
d_bzero='define'
d_casti32='define'
d_castneg='define'
d_charvspr='undef'
d_chown='define'
d_chroot='undef'
d_chsize='undef'
d_class='undef'
d_cmsghdr_s='undef'
d_const='define'
d_copysignl='define'
d_crypt='define'
d_csh='undef'
d_cuserid='define'
d_dbl_dig='define'
d_dbminitproto='undef'
d_difftime='define'
d_dirfd='undef'
d_dirnamlen='define'
d_dlerror='undef'
d_dlsymun='undef'
d_dosuid='undef'
d_drand48proto='define'
d_dup2='define'
d_eaccess='undef'
d_endgrent='define'
d_endhent='define'
d_endnent='define'
d_endpent='define'
d_endpwent='define'
d_endsent='define'
d_eofnblk='undef'
d_eunice='undef'
d_fchmod='undef'
d_fchdir='undef'
d_fchown='undef'
d_fcntl='define'
d_fcntl_can_lock='undef'
d_fd_set='define'
d_fgetpos='define'
d_finite='undef'
d_finitel='undef'
d_flexfnam='define'
d_flock='undef'
d_flockproto='undef'
d_fork='undef'
d_fp_class='undef'
d_fpathconf='define'
d_fpclass='undef'
d_fpclassify='undef'
d_fpclassl='undef'
d_fpos64_t='undef'
d_frexpl='undef'
d_fs_data_s='undef'
d_fseeko='undef'
d_fsetpos='define'
d_fstatfs='undef'
d_fstatvfs='undef'
d_fsync='undef'
d_ftello='undef'
d_getcwd='define'
d_getespwnam='undef'
d_getfsstat='undef'
d_getgrent='define'
d_getgrps='undef'
d_gethbyaddr='define'
d_gethbyname='define'
d_gethent='define'
d_gethname='define'
d_gethostprotos='define'
d_getitimer='define'
d_getlogin='define'
d_getmnt='undef'
d_getmntent='undef'
d_getnbyaddr='define'
d_getnbyname='define'
d_getnent='define'
d_getnetprotos='define'
d_getpagsz='undef'
d_getpbyname='define'
d_getpbynumber='define'
d_getpent='define'

Re: Cannot build bleadperl on OpenVMS

2004-10-02 Thread Abe Timmerman
Op een grimmige herfstdag (Saturday 02 October 2004 19:44),schreef  Craig A. 
Berry:
 In article [EMAIL PROTECTED],

  [EMAIL PROTECTED] (Abe Timmerman) wrote:
  I am now working on porting Test::Smoke to OpenVMS, thanks to Bernd
  Ulmann.

 Thanks for working on this.

And many thanks to Bernd for allowing me on his VAX  Alpha for this!

  I'm on this machine:
  TIMMERMAN:FAFNER$ perl -Ilib -MTest::Smoke::SysInfo=tsuname -le
  print tsuname()
  FAFNER openvms - V7.2 VAX_7000-720  VAX_7000-720

 It's been quite a while since I've seen any serious build problems on
 Alpha, but VAX doesn't get tested much so this is good to see.

[snip mmk output]

 I guess the first question is whether you do in fact have an ENCODE.c.
 I suspect you don't because in your log above, immediately after the
 line that copies encode.opt and before running enc2xs, you should have
 the line:

 MCR [--]miniperl.exe -I[--.lib] -I[--.lib] [--.lib.ExtUtils]xsubpp
 -nolinenumbers -typemap [--.lib.ExtUtils]typemap ENCODE.xs 
 ENCODE.C

 As a temporary workaround, you could try setting default to the Encode
 directory and explicitly making ENCODE.c:

 $ mmk ENCODE.c

 and then proceeding with the build.

I should have thought of that, although it doesn't help the automation 
process ;)

 But the real question is how the relevant dependency got missed in the
 main build.  Encode is a complicated extension and there have been some
 problems building it with older versions of MMK.  What version of MMK
 are you using (type mmk/ident to find out)?  If it doesn't say 3.9-6,
 go to http://www.madgoat.com and get the latest version.

TIMMERMAN:FAFNER$ mmk/ident
%MMK-I-IDENT, this is the MadGoat Make Utility V3.4-10
-MMK-I-COPYRIGHT, Copyright ? 1992-1996, MadGoat Software.  All Rights 
Reserved.

So I'll ask Bernd if he can find the time to update that.

 If that
 doesn't help, then we'll have to back up and think about what else
 might be happening.

Good luck,

Abe
-- 
Ahh, duh.  (Thumping forehead against keybsalf9iw.)
   -- Jarkko Hietaniemi on p5p @ 2003-02-11


Re: Cannot build bleadperl on OpenVMS

2004-10-02 Thread Abe Timmerman
Op een grimmige herfstdag (Saturday 02 October 2004 21:46),schreef  Abe 
Timmerman:
 Op een grimmige herfstdag (Saturday 02 October 2004 19:44),schreef  Craig
 A. Berry:
[Snip]

Bernd was kind enough to install a newer mmk
TIMMERMAN:FAFNER$ mmk/ident
%MMK-I-IDENT, this is the MadGoat Make Utility V3.9-9

No change in the buildprocess with the newer mmk however :-(

  I guess the first question is whether you do in fact have an ENCODE.c.
  I suspect you don't because in your log above, immediately after the
  line that copies encode.opt and before running enc2xs, you should have
  the line:
 
  MCR [--]miniperl.exe -I[--.lib] -I[--.lib] [--.lib.ExtUtils]xsubpp
  -nolinenumbers -typemap [--.lib.ExtUtils]typemap ENCODE.xs 
  ENCODE.C
 
  As a temporary workaround, you could try setting default to the Encode
  directory and explicitly making ENCODE.c:
 
  $ mmk ENCODE.c
 
  and then proceeding with the build.

That got me past Encode.

But now it refuses to build Filer::Util::Call

Making Filter/Util/Call (dynamic)
Writing Descrip.MMS for Filter::Util::Call
%CREATE-I-EXISTS, [.LIB.AUTO.FILTER.UTIL.CALL] already exists
%CREATE-E-DIRNOTCRE, [.BLIB.BIN] directory file not created
-RMS-F-DIR, error in directory name
%MMK-F-ERRUPD, error status %X109112C2 occurred when updating target 
BLIBDIRS.EXISTS
%MMK-F-ERRUPD, error status %X1C14803C occurred when updating target DYNEXT


Good luck,

Abe
-- 
Well, dereferencing that (as CvGV() would do) leads nowhere.  Or, as
the Ten Commandments for C Programmers quoth, Thou shalt not follow
the NULL pointer, for chaos and madness await thee at its end.
   -- Jarkko Hietaniemi on p5p @ 2002-05-14


Re: Cannot build bleadperl on OpenVMS

2004-10-02 Thread Craig A. Berry
At 1:12 AM +0200 10/3/04, Abe Timmerman wrote:

Bernd was kind enough to install a newer mmk
TIMMERMAN:FAFNER$ mmk/ident
%MMK-I-IDENT, this is the MadGoat Make Utility V3.9-9

No change in the buildprocess with the newer mmk however :-(

After installing a new MMK, did you do a CMMK realclean in the
ext/Encode directory before restarting the build?


But now it refuses to build Filer::Util::Call

Making Filter/Util/Call (dynamic)
Writing Descrip.MMS for Filter::Util::Call
%CREATE-I-EXISTS, [.LIB.AUTO.FILTER.UTIL.CALL] already exists
%CREATE-E-DIRNOTCRE, [.BLIB.BIN] directory file not created
-RMS-F-DIR, error in directory name
%MMK-F-ERRUPD, error status %X109112C2 occurred when updating target
BLIBDIRS.EXISTS
%MMK-F-ERRUPD, error status %X1C14803C occurred when updating target DYNEXT

Constructing the full path from this and your earlier post, the base
directory for Filter::Util::Call's installed files  will be:

 DISK$USER_2:[TIMMERMAN.KLAD.PERL-CURRENT.LIB.AUTO.FILTER.UTIL.CALL]

That's 8 levels, which is the maximum allowed on OpenVMS VAX 7.2.
When you go to create blib/lib under that, you get the not very
specific error in directory name.  OpenVMS Alpha 7.2 and later
lifted the 8-level restriction (it's possible OpenVMS VAX 7.3 did as
well, but I'm not sure about that).

The typical way around this is to create a rooted logical name like
so (trailing dot significant):

$ define/translation=concealed PERLSMOKE_SRC DISK$USER_2:[TIMMERMAN.KLAD.PERL-CURRENT.]
$ set default PERLSMOKE_SRC:[00]

and then do MMK again.

I'm assuming there will be some sort of DCL command procedure in
Test::Smoke analogous to the shell/batch/whatever scripts for other
platforms.  If that is true, then that procedure should automate the
rooted logical definition by setting the default directory to the top
level of the Perl source tree and then invoking the following DCL
magic:

$ perlsmoke_src = F$PARSE(SYS$DISK:[-]NO_CONCEAL)-.][00-][-].;+.]
$ DEFINE//TRANSLATION=CONCEALED PERLSMOKE_SRC 'perlsmoke_src'
$ set default PERLSMOKE_SRC:[00]

That will make it appear to the Perl build as though it is at the
root of the volume, thus avoiding directory depth problems.


-- 

Craig A. Berry
mailto:[EMAIL PROTECTED]

... getting out of a sonnet is much more
 difficult than getting in.
 Brad Leithauser