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.
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: