On Mon, Apr 21, 2008 at 7:49 PM, James Keenan via RT <[EMAIL PROTECTED]> wrote: > On Mon Apr 21 07:11:23 2008, [EMAIL PROTECTED] wrote: > > > > > > I prefer the die behavior, because with it, I don't forget to add tests > > with auto::crypto. > > > > So I'm not alone, after all ;-) > > > > Now, I think the name gen::digest is not good. > > I prefer gen::crypto because : > > 1) same as auto::crypto > > 2) libcrypto contains cypher algo (not only digest), so we could add > > some PMC wrapper (for example : DES, ...) > > > > > The patch attached renames gen::digest to gen::crypto and makes > associated changes. > > > I had one problem pulling the patch. For some reason, > config/gen/digest.pm was showing up in Subversion as a "binary" type. I > couldn't figure out how to fix that, so if we decide to change the > file's name and apply this patch, we may have to do a separate 'svn rm > config/gen/digest.pm' to get everything in place.
Fixed. The mime type was incorrectly set to "plain/text" instead of "text/plain". Since this is a subtle, easy to miss typo, I added another metadata distro test to catch it sooner next time. > But that should be no impediment to reviewing the patch. > > > > Thank you very much. > > kid51 > > Index: lib/Parrot/Configure/Step/List.pm > =================================================================== > --- lib/Parrot/Configure/Step/List.pm (.../trunk) (revision 27092) > +++ lib/Parrot/Configure/Step/List.pm (.../branches/gencrypto) > (revision 27100) > @@ -69,7 +69,7 @@ > auto::icu > gen::config_h > gen::core_pmcs > - gen::digest > + gen::crypto > gen::parrot_include > gen::opengl > gen::languages > Index: MANIFEST > =================================================================== > --- MANIFEST (.../trunk) (revision 27092) > +++ MANIFEST (.../branches/gencrypto) (revision 27100) > @@ -1,7 +1,7 @@ > # ex: set ro: > # $Id$ > # > -# generated by tools\dev\mk_manifest_and_skip.pl Mon Apr 21 20:09:14 2008 UT > +# generated by tools/dev/mk_manifest_and_skip.pl Mon Apr 21 23:13:41 2008 UT > # > # See tools/dev/install_files.pl for documentation on the > # format of this file. > @@ -299,8 +299,8 @@ > config/gen/config_pm/config_lib.in [] > config/gen/config_pm/myconfig.in [] > config/gen/core_pmcs.pm [] > -config/gen/digest.pm [] > -config/gen/digest/digest_pmc.in [] > +config/gen/crypto.pm [] > +config/gen/crypto/digest_pmc.in [] > config/gen/languages.pm [] > config/gen/makefiles.pm [] > config/gen/makefiles/CFLAGS.in [] > @@ -3526,6 +3526,7 @@ > t/steps/gen_config_h-01.t [] > t/steps/gen_config_pm-01.t [] > t/steps/gen_core_pmcs-01.t [] > +t/steps/gen_crypto-01.t [] > t/steps/gen_languages-01.t [] > t/steps/gen_makefiles-01.t [] > t/steps/gen_opengl-01.t [] > Index: MANIFEST.SKIP > =================================================================== > --- MANIFEST.SKIP (.../trunk) (revision 27092) > +++ MANIFEST.SKIP (.../branches/gencrypto) (revision 27100) > @@ -1,6 +1,6 @@ > # ex: set ro: > # $Id$ > -# generated by tools/dev/mk_manifest_and_skip.pl Sat Apr 19 12:18:20 2008 UT > +# generated by tools/dev/mk_manifest_and_skip.pl Mon Apr 21 23:13:41 2008 UT > # > # This file should contain a transcript of the svn:ignore properties > # of the directories in the Parrot subversion repository. (Needed for > @@ -1183,6 +1183,9 @@ > ^languages/scheme/t/syn/.*\.pir/ > ^languages/scheme/t/syn/.*\.scheme$ > ^languages/scheme/t/syn/.*\.scheme/ > +# generated from svn:ignore of 'languages/squaak/' > +^languages/squaak/Makefile$ > +^languages/squaak/Makefile/ > # generated from svn:ignore of 'languages/tcl/' > ^languages/tcl/.*\.pdb$ > ^languages/tcl/.*\.pdb/ > Index: t/steps/gen_crypto-01.t > =================================================================== > --- t/steps/gen_crypto-01.t (.../trunk) (revision 0) > +++ t/steps/gen_crypto-01.t (.../branches/gencrypto) (revision > 27100) > @@ -0,0 +1,50 @@ > +#! perl > +# Copyright (C) 2007-2008, The Perl Foundation. > +# $Id$ > +# gen_crypto-01.t > + > +use strict; > +use warnings; > +use Test::More tests => 2; > +use Carp; > +use lib qw( lib ); > +use_ok('config::gen::crypto'); > + > +=for hints_for_testing This is just a stub so that Configure.pl will run. > + > +=cut > + > +pass("Completed all tests in $0"); > + > +################### DOCUMENTATION ################### > + > +=head1 NAME > + > + gen_crypto-01.t - test config::gen::crypto > + > +=head1 SYNOPSIS > + > + % prove t/steps/gen_crypto-01.t > + > +=head1 DESCRIPTION > + > +The files in this directory test functionality used by F<Configure.pl>. > + > +The tests in this file test config::gen::crypto. > + > +=head1 AUTHOR > + > +James E Keenan > + > +=head1 SEE ALSO > + > +config::gen::crypto, F<Configure.pl>. > + > +=cut > + > +# Local Variables: > +# mode: cperl > +# cperl-indent-level: 4 > +# fill-column: 100 > +# End: > +# vim: expandtab shiftwidth=4: > > Property changes on: t/steps/gen_crypto-01.t > ___________________________________________________________________ > Name: svn:eol-style > + native > Name: svn:mime-type > + text/plain > Name: svn:keywords > + Author Date Id Revision > > Index: config/gen/digest.pm > =================================================================== > Cannot display: file marked as a binary type. > svn:mime-type = plain/text > Index: config/gen/crypto/digest_pmc.in > =================================================================== > --- config/gen/crypto/digest_pmc.in (.../trunk) (revision 0) > +++ config/gen/crypto/digest_pmc.in (.../branches/gencrypto) > (revision 27100) > @@ -0,0 +1,160 @@ > +/* > +Copyright (C) 2008, The Perl Foundation. > +$Id$ > + > +=head1 NAME > + > +src/dynpmc/@[EMAIL PROTECTED] - @md_name@ wrapper of libcrypto (libssl) > + > +=head1 DESCRIPTION > + > +See L<www.openssl.org> > + > +=head2 Methods > + > +=over 4 > + > +=cut > + > +*/ > + > +#include <openssl/@[EMAIL PROTECTED]> > + > +pmclass @md_name@ > + dynpmc > + need_ext > + group digest_group { > + > +/* > + > +=item C<void init()> > + > +=cut > + > +*/ > + void init() { > +#ifndef [EMAIL PROTECTED]@ > + @md_ctx@ *c = mem_allocate_zeroed_typed(@md_ctx@); > + PMC_data(SELF) = c; > + PObj_active_destroy_SET(SELF); > +#else > + real_exception(interp, NULL, ILL_INHERIT, "@md_name@ is disabled"); > +#endif > + } > + > +/* > + > +=item C<void destroy()> > + > +=cut > + > +*/ > + void destroy() { > +#ifndef [EMAIL PROTECTED]@ > + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); > + if (c) { > + mem_sys_free(c); > + PMC_data(SELF) = NULL; > + } > +#endif > + } > + > +/* > + > +=item C<PMC* clone()> > + > +=cut > + > +*/ > + PMC* clone() { > +#ifndef [EMAIL PROTECTED]@ > + PMC *retval = pmc_new_noinit(INTERP, SELF->vtable->base_type); > + @md_ctx@ *c = mem_allocate_zeroed_typed(@md_ctx@); > + > + memcpy(c, PMC_data(SELF), sizeof (@md_ctx@)); > + PMC_data(retval) = c; > + > + PObj_active_destroy_SET(retval); > + return retval; > +#else > + return NULL; > +#endif > + } > + > + > +/* > + > +=back > + > +=head2 Specific Methods > + > +=over 4 > + > +=item C<void Init()> > + > +=cut > + > +*/ > + METHOD void Init() { > +#ifndef [EMAIL PROTECTED]@ > + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); > + (void)@[EMAIL PROTECTED](c); > +#endif > + } > + > +/* > + > +=item C<void Update(STRING *buf)> > + > +=cut > + > +*/ > + METHOD void Update(STRING *buf) { > +#ifndef [EMAIL PROTECTED]@ > + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); > + (void)@[EMAIL PROTECTED](c, (unsigned char *)buf->strstart, > buf->bufused); > +#endif > + } > + > +/* > + > +=item C<STRING* Final()> > + > +=cut > + > +*/ > + METHOD STRING* Final() { > +#ifndef [EMAIL PROTECTED]@ > + unsigned char [EMAIL PROTECTED]@_LENGTH]; > + @md_ctx@ *c = PMC_data_typed(SELF, @md_ctx@ *); > + STRING *retval; > + > + (void)@[EMAIL PROTECTED](digest, c); > + retval = string_from_cstring(INTERP, (char *)digest, @[EMAIL > PROTECTED]); > + > + RETURN(STRING *retval); > +#else > + return NULL; > +#endif > + } > + > +} > + > +/* > + > +=back > + > +=head1 AUTHORS > + > +Francois Perrad > + > +=cut > + > +*/ > + > +/* > + * Local variables: > + * c-file-style: "parrot" > + * End: > + * vim: expandtab shiftwidth=4: > + */ > > Property changes on: config/gen/crypto/digest_pmc.in > ___________________________________________________________________ > Name: svn:mime-type > + text/plain > Name: svn:keywords > + Author Date Id Revision > Name: svn:eol-style > + native > > Index: config/gen/crypto.pm > =================================================================== > --- config/gen/crypto.pm (.../trunk) (revision 0) > +++ config/gen/crypto.pm (.../branches/gencrypto) (revision > 27100) > @@ -0,0 +1,81 @@ > +# Copyright (C) 2008, The Perl Foundation. > +# $Id: crypto.pm 27096 2008-04-21 23:11:53Z jkeenan $ > + > +=head1 NAME > + > +config/gen/crypto.pm - Digest PMC Files > + > +=head1 DESCRIPTION > + > +Generates Digest PMC files. > + > +=cut > + > +package gen::crypto; > + > +use strict; > +use warnings; > + > + > +use base qw(Parrot::Configure::Step); > + > +use Parrot::Configure::Utils ':gen'; > + > +sub _init { > + my $self = shift; > + my %data; > + $data{description} = q{Generating Digest PMC files}; > + $data{result} = q{}; > + return \%data; > +} > + > +my %digest = ( > + MD2 => {}, > + MD4 => {}, > + MD5 => {}, > + RIPEMD160 => { > + md_inc => 'ripemd', > + }, > + SHA => {}, > + SHA1 => { > + md_inc => 'sha', > + md_ctx => 'SHA_CTX', > + md_digest => 'SHA_DIGEST', > + }, > + SHA256 => {}, > + SHA512 => {}, > +); > + > +sub runstep { > + my ( $self, $conf ) = @_; > + > + my $verbose = $conf->options->get('verbose'); > + unless ( $conf->data->get('has_crypto') ) { > + $self->set_result('skipped'); > + return 1; > + } > + > + while (my ($md, $val) = each(%digest)) { > + my $file = lc $md; > + $conf->data->set( md_name => $md ); > + $conf->data->set( md_file => $file ); > + $conf->data->set( md_inc => $val->{md_inc} || $file ); > + $conf->data->set( md_ctx => $val->{md_ctx} || $md . '_CTX' ); > + $conf->data->set( md_digest => $val->{md_digest} || $md . '_DIGEST' > ); > + $conf->genfile( > + 'config/gen/crypto/digest_pmc.in' => "src/dynpmc/${file}.pmc", > + comment_type => '/*', > + ); > + } > + > + return 1; > +} > + > +1; > + > +# Local Variables: > +# mode: cperl > +# cperl-indent-level: 4 > +# fill-column: 100 > +# End: > +# vim: expandtab shiftwidth=4: > > -- Will "Coke" Coleda