summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/gen_ebuild.pl108
-rw-r--r--scripts/lib/dep/handler/stdout/terse.pm108
2 files changed, 176 insertions, 40 deletions
diff --git a/scripts/gen_ebuild.pl b/scripts/gen_ebuild.pl
index e8635b62a..fe143659b 100755
--- a/scripts/gen_ebuild.pl
+++ b/scripts/gen_ebuild.pl
@@ -42,8 +42,23 @@ gen_ebuild.pl
USAGE:
- show_deptree.pl DOY/Moose-2.0301-TRIAL
+ gen_ebuild.pl DOY/Moose-2.0301-TRIAL
+ exports:
+ WWW_MECH_DEBUG=1 for basic internal http tracing
+ WWW_MECH_DEBUG=2 for full response content output
+ WWW_MECH_NOCACHE=1 to disable caching
+
+ parameters:
+
+ --debug=1
+ Verbose tracing.
+
+ --debug=2
+ Even More verbose tracing.
+
+ --dumphandler
+ Print the full resolution map
EOF
}
my ($release) = shift(@ARGV);
@@ -70,10 +85,23 @@ for my $module ( keys %{ $dep_phases->{modules} } ) {
my @squeue =
sort { $a->[1]->[2] cmp $b->[1]->[2] or $a->[1]->[3] cmp $b->[1]->[3] or $a->[0] cmp $b->[0] } @queue;
-require dep::handler::stdout;
require dep::handler::bashcode;
-my $handler = dep::handler::stdout->new();
+my $handler;
+
+if ( defined $flags->{debug} and $flags->{debug} ne "1" or $flags->{debug} ne "2" ) {
+ $flags->{debug} = 1;
+}
+
+if ( $flags->{debug} == 1 ) {
+ require dep::handler::stdout::terse;
+ $handler = dep::handler::stdout::terse->new();
+}
+if ( $flags->{debug} == 2 ) {
+ require dep::handler::stdout;
+ $handler = dep::handler::stdout->new();
+}
+
my $handler2 = dep::handler::bashcode->new( ( $flags->{debug} ? ( debug => 1 ) : () ), debug_handler => $handler, );
for my $qi (@squeue) {
@@ -145,66 +173,73 @@ if ( $handler2->has_tdeps ) {
else {
$fh->say('IUSE=""');
}
-
-pp($handler2);
+if ( $flags->{dumphandler} ) {
+ pp($handler2);
+}
if ( $handler2->has_cdeps ) {
- $fh->say('perl_meta_configure() {');
+ my @lines;
for my $dep ( @{ $handler2->cdeps } ) {
- $fh->say( "\t# " . $dep->{dep} );
+ push @lines, '# ' . $dep->{dep};
if ( not defined $dep->{install} ) {
- $fh->say( "\t#echo unresolved");
+ push @lines, '#echo unresolved';
warn "cdep " . $dep->{dep} . " was not resolved to a dependency";
- } else {
- $fh->say( "\techo " . $dep->{install} );
+ }
+ else {
+ push @lines, 'echo ' . $dep->{install};
}
}
- $fh->say('}');
push @{$depends}, '$(perl_meta_configure)';
+ $fh->say( gen_func( 'perl_meta_configure', @lines ) );
+
}
if ( $handler2->has_bdeps ) {
- $fh->say('perl_meta_build() {');
- for my $dep ( @{ $handler2->bdeps } ) {
- $fh->say( "\t# " . $dep->{dep} );
+ my @lines;
+ for my $dep ( @{ $handler2->bdeps } ) {
+ push @lines, '# ' . $dep->{dep};
if ( not defined $dep->{install} ) {
- $fh->say( "\t#echo unresolved");
+ push @lines, '#echo unresolved';
warn "bdep " . $dep->{dep} . " was not resolved to a dependency";
- } else {
- $fh->say( "\techo " . $dep->{install} );
+ }
+ else {
+ push @lines, 'echo ' . $dep->{install};
}
}
- $fh->say('}');
+ $fh->say( gen_func( 'perl_meta_build', @lines ) );
push @{$depends}, '$(perl_meta_build)';
}
if ( $handler2->has_rdeps ) {
- $fh->say('perl_meta_runtime() {');
+ my @lines;
for my $dep ( @{ $handler2->rdeps } ) {
- $fh->say( "\t# " . $dep->{dep} );
+ push @lines, '# ' . $dep->{dep};
if ( not defined $dep->{install} ) {
- $fh->say( "\t#echo unresolved");
+ push @lines, '#echo unresolved';
warn "rdep: " . $dep->{dep} . " was not resolved to a dependency";
- } else {
- $fh->say( "\techo " . $dep->{install} );
+ }
+ else {
+ push @lines, 'echo ' . $dep->{install};
}
}
- $fh->say('}');
+ $fh->say( gen_func( 'perl_meta_runtime', @lines ) );
push @{$depends}, '$(perl_meta_runtime)';
push @{$rdepends}, '$(perl_meta_runtime)';
}
if ( $handler2->has_tdeps ) {
- $fh->say('perl_meta_test() {');
+ my @lines;
for my $dep ( @{ $handler2->tdeps } ) {
- $fh->say( "\t# " . $dep->{dep} );
+ push @lines, '# ' . $dep->{dep};
+
if ( not defined $dep->{install} ) {
- $fh->say( "\t#echo unresolved");
+ push @lines, '#echo unresolved';
warn "tdep: " . $dep->{dep} . " was not resolved to a dependency";
- } else {
- $fh->say( "\techo " . $dep->{install} );
+ }
+ else {
+ push @lines, 'echo ' . $dep->{install};
}
}
- $fh->say('}');
+ $fh->say( gen_func( 'perl_meta_test', @lines ) );
push @{$depends}, 'test? ( $(perl_meta_test) )';
}
@@ -215,14 +250,7 @@ $fh->say("SRC_TEST=\"do\"");
#say pp( \%modules,);# { pretty => 1 } );
exit 1;
-sub pkg_for_module {
- my ($module) = shift;
-
+sub gen_func {
+ my ( $name, @body ) = @_;
+ return join( q{\n}, $name . '() {', ( map { "\t" . $_ } @body ), '}' );
}
-
-sub gen_dep {
- state $template = qq{\t# %s%s\n\techo %s\n};
- my ( $module, $version ) = @_;
-
-}
-
diff --git a/scripts/lib/dep/handler/stdout/terse.pm b/scripts/lib/dep/handler/stdout/terse.pm
new file mode 100644
index 000000000..729de66e7
--- /dev/null
+++ b/scripts/lib/dep/handler/stdout/terse.pm
@@ -0,0 +1,108 @@
+use strict;
+use warnings;
+
+package dep::handler::stdout::terse;
+
+# FILENAME: terse.pm
+# CREATED: 31/10/11 13:30:29 by Kent Fredric (kentnl) <kentfredric@gmail.com>
+# ABSTRACT: Dispatch terse dependency information to STDOUT.
+
+use Moose;
+#extends 'dep::handler::stdout::terse';
+has 'indent' => ( is => 'rw' );
+has 'tail' => ( is => 'rw' );
+__PACKAGE__->meta->make_immutable;
+
+sub begin_dep {
+ my ( $self, $release, $module, $declaration ) = @_;
+ $self->indent(" \e[1;92m*");
+ $self->tail(" \e[1;92m-\n\n");
+ my $wantstring = $self->_want_string( $release, $module, $declaration );
+ return *STDOUT->printf( "\e[1;93m%s\e[0m\n", $wantstring );
+}
+
+sub evt_not_any {
+ my ( $self, $module, $declaration ) = @_;
+ return *STDOUT->printf( "%sWARNING: NO PROVIDER FOUND FOR \"%s\"%s\n", "\e[1;91m", $module, "\e[0m" );
+}
+
+sub evt_multi {
+ my ( $self, $module, $declaration ) = @_;
+ $self->indent(" \e[1;91m*");
+ $self->tail(" \e[1;91m-\n\n");
+
+ return *STDOUT->printf( "%sWARNING: MULTIPLE PROVIDERS FOUND FOR \"%s\"%s\n", "\e[1;91m", $module, "\e[0m" );
+}
+
+sub set_latest {
+ my ( $self, $dep, $pkg ) = @_;
+ return *STDOUT->printf( "%s\e[1;95m latest: %s => %s ( %s )\n", $self->indent, @{$dep}, $pkg );
+}
+
+sub _want_string {
+ my ( $self, $release, $module, $declaration ) = @_;
+ return $release . " -> " . $declaration->[2] . " " . $declaration->[3] . " " . $self->_depstring( $module, $declaration );
+}
+
+sub _depstring {
+ my ( $self, $module, $declaration ) = @_;
+
+ my $depstring = $module;
+
+ if ( $declaration->[1] ne '0.0.0' ) {
+ $depstring .= " " . $declaration->[0] . " ( " . $declaration->[1] . " ) ";
+ }
+ return $depstring;
+}
+
+sub _xwrap {
+ my $self = shift;
+ require Text::Wrap;
+ local $Text::Wrap::break = qr/,/;
+ local $Text::Wrap::overflow = 'huge';
+ local $Text::Wrap::columns = 128;
+ $Text::Wrap::overflow = 'huge';
+ my $pre = " ";
+ my $lines = Text::Wrap::wrap( $pre, $pre, @_ );
+ return $lines;
+}
+sub perl_dep {
+ my ( $self, $module, $declaration , $pkg ) = @_ ;
+ *STDOUT->printf("%s %s%s -> %s%s\n", $self->indent, "\e[1;94m", $module, "\e[0m\e[94m", $pkg );
+}
+sub provider_group {
+ my ( $self, $data ) = @_;
+
+ my $want_string = $self->_want_string( $data->{release}, $data->{module}, $data->{declaration} );
+ my $depstring = $self->_depstring( $data->{module}, $data->{declaration} );
+
+ my $prefix = $depstring . ' in ' . $data->{provider};
+
+ my $lines = $self->_xwrap( join q[, ], @{ $data->{versions} } );
+ my (@slines) = split /$/m, $lines;
+ $_ =~ s/[\r\n]*//m for @slines;
+
+ *STDOUT->printf( " %s%s -> %s%s (%s)\n", "\e[1;92m", $depstring, "\e[0m\e[92m", $data->{provider}, $data->{gentoo_pkg} );
+ #*STDOUT->printf( "%s newest: %s\e[0m\n", $self->indent, $data->{newest} );
+ #*STDOUT->printf( "%s oldest: %s\e[0m\n", $self->indent, $data->{oldest} );
+
+ my $v = $data->{closest};
+ if ( not $data->{has_closest} ) { $v = 'undef' }
+
+ #*STDOUT->printf( "%s closest: %s\e[0m\n", $self->indent, $v );
+
+ for (@slines) {
+ #*STDOUT->printf( "%s %s%s -> %s%s\n", $self->indent, "\e[1;94m", $data->{provider}, "\e[0m\e[94m", $_ );
+ }
+
+}
+
+sub done {
+ my ( $self, $module, $declaration ) = @_;
+ return *STDOUT->print( $self->tail );
+}
+
+no Moose;
+__PACKAGE__->meta->make_immutable;
+1;
+