* [Buildroot] [pkg-perl infra V2 02/12] cpan: a home for Perl modules
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 03/12] scancpan: a new script Francois Perrad
` (10 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
Config.in | 7 +++++++
package/Config.in | 1 +
package/cpan/cpan.mk | 1 +
3 files changed, 9 insertions(+)
create mode 100644 package/cpan/Config.in
create mode 100644 package/cpan/cpan.mk
diff --git a/Config.in b/Config.in
index d87e0f0..1b4bf99 100644
--- a/Config.in
+++ b/Config.in
@@ -207,6 +207,13 @@ config BR2_DEBIAN_MIRROR
endif
+config BR2_CPAN_MIRROR
+ string "CPAN mirror"
+ default "http://search.cpan.org/CPAN"
+ help
+ CPAN has multiple software mirrors scattered around the world.
+ The following allows you to select your preferred mirror.
+
endmenu
config BR2_JLEVEL
diff --git a/package/Config.in b/package/Config.in
index 311cc6c..3f7bb3e 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -382,6 +382,7 @@ source "package/perl/Config.in"
if BR2_PACKAGE_PERL
menu "Perl libraries/modules"
source "package/cpanminus/Config.in"
+source "package/cpan/Config.in"
endmenu
endif
source "package/php/Config.in"
diff --git a/package/cpan/Config.in b/package/cpan/Config.in
new file mode 100644
index 0000000..e69de29
diff --git a/package/cpan/cpan.mk b/package/cpan/cpan.mk
new file mode 100644
index 0000000..764a156
--- /dev/null
+++ b/package/cpan/cpan.mk
@@ -0,0 +1 @@
+include package/cpan/*/*.mk
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 03/12] scancpan: a new script
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 02/12] cpan: a home for Perl modules Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 04/12] cpanminus: remove it Francois Perrad
` (9 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
which populates the directory package/cpan
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
support/scripts/scancpan | 646 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 646 insertions(+)
create mode 100755 support/scripts/scancpan
diff --git a/support/scripts/scancpan b/support/scripts/scancpan
new file mode 100755
index 0000000..cf02da4
--- /dev/null
+++ b/support/scripts/scancpan
@@ -0,0 +1,646 @@
+#!/usr/bin/env perl
+
+# This chunk of stuff was generated by App::FatPacker. To find the original
+# file's code, look for the end of this BEGIN block or the string 'FATPACK'
+BEGIN {
+my %fatpacked;
+
+$fatpacked{"MetaCPAN/API/Tiny.pm"} = <<'METACPAN_API_TINY';
+ package MetaCPAN::API::Tiny;
+ {
+ $MetaCPAN::API::Tiny::VERSION = '1.131730';
+ }
+ use strict;
+ use warnings;
+ # ABSTRACT: A Tiny API client for MetaCPAN
+
+ use Carp;
+ use JSON::PP 'encode_json', 'decode_json';
+ use HTTP::Tiny;
+
+
+ sub new {
+ my ($class, @args) = @_;
+
+ $#_ % 2 == 0
+ or croak 'Arguments must be provided as name/value pairs';
+
+ my %params = @args;
+
+ die 'ua_args must be an array reference'
+ if $params{ua_args} && ref($params{ua_args}) ne 'ARRAY';
+
+ my $self = +{
+ base_url => $params{base_url} || 'http://api.metacpan.org/v0',
+ ua => $params{ua} || HTTP::Tiny->new(
+ $params{ua_args}
+ ? @{$params{ua_args}}
+ : (agent => 'MetaCPAN::API::Tiny/'
+ . ($MetaCPAN::API::VERSION || 'xx'))),
+ };
+
+ return bless($self, $class);
+ }
+
+ sub _build_extra_params {
+ my $self = shift;
+
+ @_ % 2 == 0
+ or croak 'Incorrect number of params, must be key/value';
+
+ my %extra = @_;
+ my $ua = $self->{ua};
+
+ foreach my $key (keys %extra)
+ {
+ # The implementation in HTTP::Tiny uses + instead of %20, fix that
+ $extra{$key} = $ua->_uri_escape($extra{$key});
+ $extra{$key} =~ s/\+/%20/g;
+ }
+
+ my $params = join '&', map { "$_=" . $extra{$_} } sort keys %extra;
+
+ return $params;
+ }
+
+
+ # /source/{author}/{release}/{path}
+ sub source {
+ my $self = shift;
+ my %opts = @_ ? @_ : ();
+ my $url = '';
+ my $error = "Provide 'author' and 'release' and 'path'";
+
+ %opts or croak $error;
+
+ if (
+ defined ( my $author = $opts{'author'} ) &&
+ defined ( my $release = $opts{'release'} ) &&
+ defined ( my $path = $opts{'path'} )
+ ) {
+ $url = "source/$author/$release/$path";
+ } else {
+ croak $error;
+ }
+
+ $url = $self->{base_url} . "/$url";
+
+ my $result = $self->{ua}->get($url);
+ $result->{'success'}
+ or croak "Failed to fetch '$url': " . $result->{'reason'};
+
+ return $result->{'content'};
+ }
+
+
+ # /release/{distribution}
+ # /release/{author}/{release}
+ sub release {
+ my $self = shift;
+ my %opts = @_ ? @_ : ();
+ my $url = '';
+ my $error = "Either provide 'distribution', or 'author' and 'release', " .
+ "or 'search'";
+
+ %opts or croak $error;
+
+ my %extra_opts = ();
+
+ if ( defined ( my $dist = $opts{'distribution'} ) ) {
+ $url = "release/$dist";
+ } elsif (
+ defined ( my $author = $opts{'author'} ) &&
+ defined ( my $release = $opts{'release'} )
+ ) {
+ $url = "release/$author/$release";
+ } elsif ( defined ( my $search_opts = $opts{'search'} ) ) {
+ ref $search_opts && ref $search_opts eq 'HASH'
+ or croak $error;
+
+ %extra_opts = %{$search_opts};
+ $url = 'release/_search';
+ } else {
+ croak $error;
+ }
+
+ return $self->fetch( $url, %extra_opts );
+ }
+
+
+ # /pod/{module}
+ # /pod/{author}/{release}/{path}
+ sub pod {
+ my $self = shift;
+ my %opts = @_ ? @_ : ();
+ my $url = '';
+ my $error = "Either provide 'module' or 'author and 'release' and 'path'";
+
+ %opts or croak $error;
+
+ if ( defined ( my $module = $opts{'module'} ) ) {
+ $url = "pod/$module";
+ } elsif (
+ defined ( my $author = $opts{'author'} ) &&
+ defined ( my $release = $opts{'release'} ) &&
+ defined ( my $path = $opts{'path'} )
+ ) {
+ $url = "pod/$author/$release/$path";
+ } else {
+ croak $error;
+ }
+
+ # check content-type
+ my %extra = ();
+ if ( defined ( my $type = $opts{'content-type'} ) ) {
+ $type =~ m{^ text/ (?: html|plain|x-pod|x-markdown ) $}x
+ or croak 'Incorrect content-type provided';
+
+ $extra{headers}{'content-type'} = $type;
+ }
+
+ $url = $self->{base_url}. "/$url";
+
+ my $result = $self->{ua}->get( $url, \%extra );
+ $result->{'success'}
+ or croak "Failed to fetch '$url': " . $result->{'reason'};
+
+ return $result->{'content'};
+ }
+
+
+ # /module/{module}
+ sub module {
+ my $self = shift;
+ my $name = shift;
+
+ $name or croak 'Please provide a module name';
+
+ return $self->fetch("module/$name");
+ }
+
+
+ # file() is a synonym of module
+ sub file { goto &module }
+
+
+ # /author/{author}
+ sub author {
+ my $self = shift;
+ my ( $pause_id, $url, %extra_opts );
+
+ if ( @_ == 1 ) {
+ $url = 'author/' . shift;
+ } elsif ( @_ == 2 ) {
+ my %opts = @_;
+
+ if ( defined $opts{'pauseid'} ) {
+ $url = "author/" . $opts{'pauseid'};
+ } elsif ( defined $opts{'search'} ) {
+ my $search_opts = $opts{'search'};
+
+ ref $search_opts && ref $search_opts eq 'HASH'
+ or croak "'search' key must be hashref";
+
+ %extra_opts = %{$search_opts};
+ $url = 'author/_search';
+ } else {
+ croak 'Unknown option given';
+ }
+ } else {
+ croak 'Please provide an author PAUSEID or a "search"';
+ }
+
+ return $self->fetch( $url, %extra_opts );
+ }
+
+
+
+ sub fetch {
+ my $self = shift;
+ my $url = shift;
+ my $extra = $self->_build_extra_params(@_);
+ my $base = $self->{base_url};
+ my $req_url = $extra ? "$base/$url?$extra" : "$base/$url";
+
+ my $result = $self->{ua}->get($req_url);
+ return $self->_decode_result( $result, $req_url );
+ }
+
+
+ sub post {
+ my $self = shift;
+ my $url = shift;
+ my $query = shift;
+ my $base = $self->{base_url};
+
+ defined $url
+ or croak 'First argument of URL must be provided';
+
+ ref $query and ref $query eq 'HASH'
+ or croak 'Second argument of query hashref must be provided';
+
+ my $query_json = encode_json( $query );
+ my $result = $self->{ua}->request(
+ 'POST',
+ "$base/$url",
+ {
+ headers => { 'Content-Type' => 'application/json' },
+ content => $query_json,
+ }
+ );
+
+ return $self->_decode_result( $result, $url, $query_json );
+ }
+
+ sub _decode_result {
+ my $self = shift;
+ my ( $result, $url, $original ) = @_;
+ my $decoded_result;
+
+ ref $result and ref $result eq 'HASH'
+ or croak 'First argument must be hashref';
+
+ defined $url
+ or croak 'Second argument of a URL must be provided';
+
+ if ( defined ( my $success = $result->{'success'} ) ) {
+ my $reason = $result->{'reason'} || '';
+ $reason .= ( defined $original ? " (request: $original)" : '' );
+
+ $success or croak "Failed to fetch '$url': $reason";
+ } else {
+ croak 'Missing success in return value';
+ }
+
+ defined ( my $content = $result->{'content'} )
+ or croak 'Missing content in return value';
+
+ eval { $decoded_result = decode_json $content; 1 }
+ or do { croak "Couldn't decode '$content': $@" };
+
+ return $decoded_result;
+ }
+
+ 1;
+
+ __END__
+
+ =pod
+
+ =head1 NAME
+
+ MetaCPAN::API::Tiny - A Tiny API client for MetaCPAN
+
+ =head1 VERSION
+
+ version 1.131730
+
+ =head1 DESCRIPTION
+
+ This is the Tiny version of L<MetaCPAN::API>. It implements a compatible API
+ with a few notable exceptions:
+
+ =over 4
+
+ =item Attributes are direct hash access
+
+ The attributes defined using Mo(o|u)se are now accessed via the blessed hash
+ directly. There are no accessors defined to access this elements.
+
+ =item Exception handling
+
+ Instead of using Try::Tiny, raw evals are used. This could potentially cause
+ issues, so just be aware.
+
+ =item Testing
+
+ Test::Fatal was replaced with an eval implementation of exception().
+ Test::TinyMocker usage is retained, but may be absorbed since it is pure perl
+
+ =back
+
+ =head1 CLASS_METHODS
+
+ =head2 new
+
+ new is the constructor for MetaCPAN::API::Tiny. In the non-tiny version of this
+ module, this is provided via Any::Moose built from the attributes defined. In
+ the tiny version, we define our own constructor. It takes the same arguments
+ and provides similar checks to MetaCPAN::API with regards to arguments passed.
+
+ =head1 PUBLIC_METHODS
+
+ =head2 source
+
+ my $source = $mcpan->source(
+ author => 'DOY',
+ release => 'Moose-2.0201',
+ path => 'lib/Moose.pm',
+ );
+
+ Searches MetaCPAN for a module or a specific release and returns the plain source.
+
+ =head2 release
+
+ my $result = $mcpan->release( distribution => 'Moose' );
+
+ # or
+ my $result = $mcpan->release( author => 'DOY', release => 'Moose-2.0001' );
+
+ Searches MetaCPAN for a dist.
+
+ You can do complex searches using 'search' parameter:
+
+ # example lifted from MetaCPAN docs
+ my $result = $mcpan->release(
+ search => {
+ author => "OALDERS AND ",
+ filter => "status:latest",
+ fields => "name",
+ size => 1,
+ },
+ );
+
+ =head2 pod
+
+ my $result = $mcpan->pod( module => 'Moose' );
+
+ # or
+ my $result = $mcpan->pod(
+ author => 'DOY',
+ release => 'Moose-2.0201',
+ path => 'lib/Moose.pm',
+ );
+
+ Searches MetaCPAN for a module or a specific release and returns the POD.
+
+ =head2 module
+
+ my $result = $mcpan->module('MetaCPAN::API');
+
+ Searches MetaCPAN and returns a module's ".pm" file.
+
+ =head2 file
+
+ A synonym of L</module>
+
+ =head2 author
+
+ my $result1 = $mcpan->author('XSAWYERX');
+ my $result2 = $mcpan->author( pauseid => 'XSAWYERX' );
+
+ Searches MetaCPAN for a specific author.
+
+ You can do complex searches using 'search' parameter:
+
+ # example lifted from MetaCPAN docs
+ my $result = $mcpan->author(
+ search => {
+ q => 'profile.name:twitter',
+ size => 1,
+ },
+ );
+
+ =head2 fetch
+
+ my $result = $mcpan->fetch('/release/distribution/Moose');
+
+ # with parameters
+ my $more = $mcpan->fetch(
+ '/release/distribution/Moose',
+ param => 'value',
+ );
+
+ This is a helper method for API implementations. It fetches a path from MetaCPAN, decodes the JSON from the content variable and returns it.
+
+ You don't really need to use it, but you can in case you want to write your own extension implementation to MetaCPAN::API.
+
+ It accepts an additional hash as "GET" parameters.
+
+ =head2 post
+
+ # /release&content={"query":{"match_all":{}},"filter":{"prefix":{"archive":"Cache-Cache-1.06"}}}
+ my $result = $mcpan->post(
+ 'release',
+ {
+ query => { match_all => {} },
+ filter => { prefix => { archive => 'Cache-Cache-1.06' } },
+ },
+ );
+
+ The POST equivalent of the "fetch()" method. It gets the path and JSON request.
+
+ =head1 THANKS
+
+ Overall the tests and code were ripped directly from MetaCPAN::API and
+ tiny-fied. A big thanks to Sawyer X for writing the original module.
+
+ =head1 AUTHOR
+
+ Nicholas R. Perez <nperez@cpan.org>
+
+ =head1 COPYRIGHT AND LICENSE
+
+ This software is copyright (c) 2013 by Nicholas R. Perez <nperez@cpan.org>.
+
+ This is free software; you can redistribute it and/or modify it under
+ the same terms as the Perl 5 programming language system itself.
+
+ =cut
+METACPAN_API_TINY
+
+s/^ //mg for values %fatpacked;
+
+unshift @INC, sub {
+ if (my $fat = $fatpacked{$_[1]}) {
+ if ($] < 5.008) {
+ return sub {
+ return 0 unless length $fat;
+ $fat =~ s/^([^\n]*\n?)//;
+ $_ = $1;
+ return 1;
+ };
+ }
+ open my $fh, '<', \$fat
+ or die "FatPacker error loading $_[1] (could be a perl installation issue?)";
+ return $fh;
+ }
+ return
+};
+
+} # END OF FATPACK CODE
+
+
+use 5.010;
+use strict;
+use warnings;
+use Fatal qw(open close);
+
+use File::Basename;
+use Module::CoreList;
+use MetaCPAN::API::Tiny;
+
+if (scalar @ARGV != 1) {
+ say << 'USAGE';
+Usage: scancpan distname
+
+This script populates the directory package/cpan with all the Perl/CPAN
+distributions required by distname. These data are fetched from
+https://metacpan.org/.
+
+ support/scripts/scancpan Try-Tiny
+
+See the Buildroot documentation for details on the usage of the Perl
+infrastructure.
+USAGE
+ exit -1;
+}
+
+my %dist;
+my %deps_build;
+my %deps_runtime;
+my $mcpan = MetaCPAN::API::Tiny->new();
+
+sub fetch {
+ my $name = shift;
+ unless ($dist{$name}) {
+ say qq{fetch ${name}};
+ my $result = $mcpan->release( distribution => $name );
+ $dist{$name} = $result;
+ my @deps_build = ();
+ my @deps_runtime = ();
+ my $mb;
+ foreach my $dep (@{$result->{dependency}}) {
+ my $modname = ${$dep}{module};
+ $mb = 1 if $modname eq q{Module::Build};
+ next if $modname eq q{perl};
+ next if $modname =~ m|^Alien|;
+ next if $modname =~ m|^Win32|;
+ next if Module::CoreList::first_release( $modname );
+ next if ${$dep}{phase} eq q{develop};
+ next if ${$dep}{phase} eq q{test};
+ next if ${$dep}{relationship} ne q{requires};
+ my $distname = $mcpan->module( $modname )->{distribution};
+ if (${$dep}{phase} eq q{runtime}) {
+ push @deps_runtime, $distname;
+ }
+ else { # configure, build
+ push @deps_build, $distname;
+ }
+ fetch( $distname );
+ }
+ unshift @deps_build, q{Module-Build} if $mb;
+ $deps_build{$name} = \@deps_build;
+ $deps_runtime{$name} = \@deps_runtime;
+ }
+ return;
+}
+
+fetch( @ARGV );
+say scalar keys %dist, q{ packages fetched.};
+
+sub debname {
+ my $name = shift;
+ if ($name =~ m|-perl$|) {
+ return $name;
+ }
+ else {
+ return q{lib} . lc $name . q{-perl};
+ }
+}
+
+sub brname {
+ my $name = shift;
+ $name =~ s|-|_|g;
+ return uc $name;
+}
+
+while (my ($distname, $dist) = each %dist) {
+ my $debname = debname( $distname );
+ my $dirname = q{package/cpan/} . $debname;
+ my $cfgname = $dirname . q{/Config.in};
+ my $mkname = $dirname . q{/} . $debname . q{.mk};
+ my $brname = brname( $debname );
+ mkdir $dirname unless -d $dirname;
+ unless (-f $cfgname) {
+ my $abstract = $dist->{abstract} || q{NO ABSTRACT};
+ say qq{write ${cfgname}};
+ open my $fh, q{>}, $cfgname;
+ say {$fh} qq{config BR2_PACKAGE_${brname}};
+ say {$fh} qq{\tbool "${debname}"};
+ foreach my $dep (@{$deps_runtime{$distname}}) {
+ my $brdep = brname( debname( $dep ) );
+ say {$fh} qq{\tselect BR2_PACKAGE_${brdep}};
+ }
+ say {$fh} qq{\thelp};
+ say {$fh} qq{\t ${abstract}};
+ say {$fh} qq{};
+ close $fh;
+ }
+ unless (-f $mkname) {
+ my $version = $dist->{version};
+ my $author = $dist->{author};
+ my $site = dirname( $dist->{download_url} );
+ my($scheme, $auth, $path) = $dist->{download_url} =~ m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)|;
+ my($filename, $directories, $suffix) = fileparse( $path, q{tar.gz}, q{tgz} );
+ my $dependencies = join q{ }, map( { q{host-} . debname( $_ ); } @{$deps_build{$distname}} ),
+ map( { debname( $_ ); } @{$deps_runtime{$distname}} );
+ my $host_dependencies = join q{ }, map { q{host-} . debname( $_ ); } @{$deps_build{$distname}},
+ @{$deps_runtime{$distname}};
+ my $license = join q{ }, @{$dist->{license}};
+ say qq{write ${mkname}};
+ open my $fh, q{>}, $mkname;
+ say {$fh} qq{################################################################################};
+ say {$fh} qq{#};
+ say {$fh} qq{# ${debname}};
+ say {$fh} qq{#};
+ say {$fh} qq{################################################################################};
+ say {$fh} qq{};
+ say {$fh} qq{${brname}_VERSION = ${version}};
+ say {$fh} qq{${brname}_AUTHOR = ${author}};
+ say {$fh} qq{${brname}_SOURCE = ${distname}-\$(${brname}_VERSION).${suffix}};
+ say {$fh} qq{${brname}_SITE = \$(BR2_CPAN_MIRROR)${directories}};
+ say {$fh} qq{${brname}_DEPENDENCIES = perl ${dependencies}};
+ say {$fh} qq{HOST_${brname}_DEPENDENCIES = ${host_dependencies}};
+ say {$fh} qq{${brname}_LICENSE = ${license}} if $license && $license ne q{unknown};
+ say {$fh} qq{};
+ say {$fh} qq{\$(eval \$(perl-package))};
+ say {$fh} qq{\$(eval \$(host-perl-package))};
+ close $fh;
+ }
+}
+
+my %pkg;
+my $cfgname = q{package/cpan/Config.in};
+say qq{read ${cfgname}};
+open my $fh, q{<}, $cfgname;
+while (<$fh>) {
+ chomp;
+ $pkg{$_} = 1;
+}
+close $fh;
+
+foreach my $distname (sort keys %dist) {
+ my $debname = debname( $distname );
+ $pkg{qq{source "package/cpan/${debname}/Config.in"}} = 1;
+}
+
+say qq{write ${cfgname}};
+open $fh, q{>}, $cfgname;
+say {$fh} join qq{\n}, sort keys %pkg;
+close $fh;
+
+=pod
+
+This script requires the module C<MetaCPAN::API::Tiny> (version 1.131730)
+which was included at the beginning of this file by the tool C<fatpack>.
+
+See L<http://search.cpan.org/~nperez/MetaCPAN-API-Tiny-1.131730/>.
+See L<http://search.cpan.org/search?query=App-FatPacker&mode=dist>.
+
+These both library are free software and may be distributed under the same
+terms as perl itself.
+
+And perl may be distributed under the terms of Artistic v1 or GPL v1 license.
+
+=cut
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 04/12] cpanminus: remove it
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 02/12] cpan: a home for Perl modules Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 03/12] scancpan: a new script Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 05/12] perl: remove useless patch Francois Perrad
` (8 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/Config.in | 1 -
package/cpanminus/Config.in | 40 ----------------------------------
package/cpanminus/cpanminus.mk | 47 ----------------------------------------
3 files changed, 88 deletions(-)
delete mode 100644 package/cpanminus/Config.in
delete mode 100644 package/cpanminus/cpanminus.mk
diff --git a/package/Config.in b/package/Config.in
index 3f7bb3e..8ae83f9 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -381,7 +381,6 @@ source "package/nodejs/Config.in"
source "package/perl/Config.in"
if BR2_PACKAGE_PERL
menu "Perl libraries/modules"
-source "package/cpanminus/Config.in"
source "package/cpan/Config.in"
endmenu
endif
diff --git a/package/cpanminus/Config.in b/package/cpanminus/Config.in
deleted file mode 100644
index b10d211..0000000
--- a/package/cpanminus/Config.in
+++ /dev/null
@@ -1,40 +0,0 @@
-config BR2_PACKAGE_CPANMINUS
- bool "cpanminus"
- # Requires host-qemu, which cannot work properly due to kernel
- # headers mismatch between the build environment and the
- # target.
- depends on BR2_BROKEN
- help
- cpanminus is a script to get, unpack, build and install Perl modules
- from CPAN.
-
- Why? It's dependency free, requires zero configuration, and stands
- alone. When running, it requires only 10MB of RAM.
-
- http://github.com/miyagawa/cpanminus
-
-if BR2_PACKAGE_CPANMINUS
-
-config BR2_PACKAGE_CPANMINUS_MIRROR
- string "mirror"
- help
- Specifies the base URL for the CPAN mirror to use,
- such as http://cpan.cpantesters.org/.
-
-config BR2_PACKAGE_CPANMINUS_MODULES
- string "Perl modules from CPAN"
- default "Curses::UI"
- help
- List of space-separated Perl modules to install from CPAN.
-
- Examples: Try::Tiny Dancer YAML Moo
-
- Install the listed modules and their dependencies.
-
-config BR2_PACKAGE_CPANMINUS_NATIVE_DEPENDENCIES
- string "native dependencies"
- default "ncurses"
- help
- Some XS modules require native libraries.
-
-endif
diff --git a/package/cpanminus/cpanminus.mk b/package/cpanminus/cpanminus.mk
deleted file mode 100644
index b315388..0000000
--- a/package/cpanminus/cpanminus.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-################################################################################
-#
-# cpanminus
-#
-################################################################################
-
-CPANMINUS_VERSION = 1.6109
-CPANMINUS_SOURCE = $(CPANMINUS_VERSION).tar.gz
-CPANMINUS_SITE = https://github.com/miyagawa/cpanminus/archive
-CPANMINUS_DEPENDENCIES = host-qemu perl $(call qstrip,$(BR2_PACKAGE_CPANMINUS_NATIVE_DEPENDENCIES))
-
-CPANMINUS_RUN_PERL = $(QEMU_USER) $(STAGING_DIR)/usr/bin/perl
-CPANMINUS_ARCHNAME = $(shell $(CPANMINUS_RUN_PERL) -MConfig -e "print Config->{archname}")
-CPANMINUS_PERL_LIB = $(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION)
-CPANMINUS_PERL_SITELIB = $(TARGET_DIR)/usr/lib/perl5/site_perl/$(PERL_VERSION)
-CPANMINUS_PERL_ARCHLIB = $(CPANMINUS_PERL_LIB)/$(CPANMINUS_ARCHNAME)
-CPANMINUS_PERL_SITEARCH = $(CPANMINUS_PERL_SITELIB)/$(CPANMINUS_ARCHNAME)
-CPANMINUS_PERL5LIB = $(CPANMINUS_PERL_SITEARCH):$(CPANMINUS_PERL_SITELIB):$(CPANMINUS_PERL_ARCHLIB):$(CPANMINUS_PERL_LIB)
-ifneq ($(BR2_PACKAGE_CPANMINUS_MIRROR),"")
- CPANMINUS_MIRROR = --mirror $(call qstrip,$(BR2_PACKAGE_CPANMINUS_MIRROR)) --mirror-only
-endif
-CPANMINUS_MODULES = $(call qstrip,$(BR2_PACKAGE_CPANMINUS_MODULES))
-
-ifneq ($(CPANMINUS_MODULES),)
-define CPANMINUS_INSTALL_TARGET_CMDS
- echo "#!/bin/sh" > $(@D)/run_perl
- echo "PERL5LIB=$(CPANMINUS_PERL5LIB) $(CPANMINUS_RUN_PERL) \"\$$@\"" >>$(@D)/run_perl
- chmod +x $(@D)/run_perl
- PERL5LIB=$(CPANMINUS_PERL5LIB) \
- PERL_MM_OPT="DESTDIR=$(TARGET_DIR) PERL=$(@D)/run_perl PERL_LIB=$(CPANMINUS_PERL_LIB) PERL_ARCHLIB=$(CPANMINUS_PERL_ARCHLIB)" \
- PERL_MB_OPT="--destdir $(TARGET_DIR)" \
- RUN_PERL="$(@D)/run_perl" \
- $(CPANMINUS_RUN_PERL) $(@D)/cpanm \
- --perl=$(@D)/run_perl \
- --notest \
- --no-man-pages \
- $(CPANMINUS_MIRROR) \
- $(call qstrip,$(BR2_PACKAGE_CPANMINUS_MODULES))
- -find $(CPANMINUS_PERL_SITELIB) -type f -name *.bs -exec rm -f {} \;
-endef
-else
-define CPANMINUS_INSTALL_TARGET_CMDS
- @echo "No modules to install"
-endef
-endif
-
-$(eval $(generic-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 05/12] perl: remove useless patch
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (2 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 04/12] cpanminus: remove it Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 06/12] qemu: add a Config.in.host Francois Perrad
` (7 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
after the removal of cpanminus
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/perl/perl-fix-Module-Build.patch | 16 ----------------
1 file changed, 16 deletions(-)
delete mode 100644 package/perl/perl-fix-Module-Build.patch
diff --git a/package/perl/perl-fix-Module-Build.patch b/package/perl/perl-fix-Module-Build.patch
deleted file mode 100644
index 9101c11..0000000
--- a/package/perl/perl-fix-Module-Build.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
-
-Index: b/cpan/Module-Build/lib/Module/Build/Base.pm
-===================================================================
---- a/cpan/Module-Build/lib/Module/Build/Base.pm
-+++ b/cpan/Module-Build/lib/Module/Build/Base.pm
-@@ -460,7 +460,7 @@
- my $proto = shift;
- my $c = ref($proto) ? $proto->{config} : 'Module::Build::Config';
-
-- my $perl = $^X;
-+ my $perl = $ENV{RUN_PERL} || $^X;
- my $perl_basename = File::Basename::basename($perl);
-
- my @potential_perls;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 06/12] qemu: add a Config.in.host
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (3 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 05/12] perl: remove useless patch Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 07/12] host-libxml-parser-perl: move and refactor with perl infrastructure Francois Perrad
` (6 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
after the removal of cpanminus
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/Config.in.host | 1 +
package/qemu/Config.in.host | 10 ++++++++++
2 files changed, 11 insertions(+)
create mode 100644 package/qemu/Config.in.host
diff --git a/package/Config.in.host b/package/Config.in.host
index 5fd2570..d50adfb 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -10,6 +10,7 @@ source "package/lpc3250loader/Config.in.host"
source "package/mtools/Config.in.host"
source "package/omap-u-boot-utils/Config.in.host"
source "package/openocd/Config.in.host"
+source "package/qemu/Config.in.host"
source "package/sam-ba/Config.in.host"
source "package/sunxi-tools/Config.in.host"
source "package/uboot-tools/Config.in.host"
diff --git a/package/qemu/Config.in.host b/package/qemu/Config.in.host
new file mode 100644
index 0000000..cfab922
--- /dev/null
+++ b/package/qemu/Config.in.host
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_HOST_QEMU
+ bool "host qemu"
+ help
+ QEMU is a generic and open source machine emulator and virtualizer.
+
+ In user mode emulation, QEMU runs single cross-compiled programs.
+ Fast cross-compilation and cross-debugging are the main targets
+ for user-mode emulation.
+
+ http://qemu.org/
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 07/12] host-libxml-parser-perl: move and refactor with perl infrastructure
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (4 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 06/12] qemu: add a Config.in.host Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 08/12] host-libmodule-build-perl: new package Francois Perrad
` (5 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/Config.in | 1 -
.../cpan/libxml-parser-perl/libxml-parser-perl.mk | 17 ++++++++++
package/libxml-parser-perl/Config.in | 11 ------
package/libxml-parser-perl/libxml-parser-perl.mk | 35 --------------------
4 files changed, 17 insertions(+), 47 deletions(-)
create mode 100644 package/cpan/libxml-parser-perl/libxml-parser-perl.mk
delete mode 100644 package/libxml-parser-perl/Config.in
delete mode 100644 package/libxml-parser-perl/libxml-parser-perl.mk
diff --git a/package/Config.in b/package/Config.in
index 8ae83f9..3af2783 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -586,7 +586,6 @@ source "package/json-c/Config.in"
source "package/json-glib/Config.in"
source "package/libjson/Config.in"
source "package/libroxml/Config.in"
-source "package/libxml-parser-perl/Config.in"
source "package/libxml2/Config.in"
source "package/libxmlpp/Config.in"
source "package/libxslt/Config.in"
diff --git a/package/cpan/libxml-parser-perl/libxml-parser-perl.mk b/package/cpan/libxml-parser-perl/libxml-parser-perl.mk
new file mode 100644
index 0000000..32c99ce
--- /dev/null
+++ b/package/cpan/libxml-parser-perl/libxml-parser-perl.mk
@@ -0,0 +1,17 @@
+################################################################################
+#
+# libxml-parser-perl
+#
+################################################################################
+
+LIBXML_PARSER_PERL_VERSION = 2.41
+LIBXML_PARSER_PERL_AUTHOR = TODDR
+LIBXML_PARSER_PERL_SOURCE = XML-Parser-$(LIBXML_PARSER_PERL_VERSION).tar.gz
+LIBXML_PARSER_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR/
+HOST_LIBXML_PARSER_PERL_DEPENDENCIES = host-expat
+LIBXML_PARSER_PERL_LICENSE = perl_5
+
+HOST_LIBXML_PARSER_PERL_CONF_OPT += EXPATLIBPATH=$(HOST_DIR)/usr/lib
+HOST_LIBXML_PARSER_PERL_CONF_OPT += EXPATINCPATH=$(HOST_DIR)/usr/include
+
+$(eval $(host-perl-package))
diff --git a/package/libxml-parser-perl/Config.in b/package/libxml-parser-perl/Config.in
deleted file mode 100644
index 2a81086..0000000
--- a/package/libxml-parser-perl/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LIBXML_PARSER_PERL
- bool "libxml-parser-perl"
- select BR2_PACKAGE_EXPAT
- # Hide from configuration as we only support the host package
- # for the moment
- depends on BR2_HOST_ONLY
- help
- The Perl XML::Parser module.
-
- http://www.cpan.org/modules/by-module/XML/
-
diff --git a/package/libxml-parser-perl/libxml-parser-perl.mk b/package/libxml-parser-perl/libxml-parser-perl.mk
deleted file mode 100644
index 53f3bcf..0000000
--- a/package/libxml-parser-perl/libxml-parser-perl.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-################################################################################
-#
-# libxml-parser-perl
-#
-################################################################################
-
-LIBXML_PARSER_PERL_VERSION = 2.36
-LIBXML_PARSER_PERL_SOURCE = XML-Parser-$(LIBXML_PARSER_PERL_VERSION).tar.gz
-LIBXML_PARSER_PERL_SITE = http://www.cpan.org/modules/by-module/XML/
-
-LIBXML_PARSER_PERL_DEPENDENCIES = expat
-
-define HOST_LIBXML_PARSER_PERL_CONFIGURE_CMDS
- (cd $(@D) ; \
- $(HOST_CONFIGURE_OPTS) perl Makefile.PL \
- PREFIX=$(HOST_DIR)/usr \
- EXPATLIBPATH=$(HOST_DIR)/usr/lib \
- EXPATINCPATH=$(HOST_DIR)/usr/include \
- INSTALLDIRS=site \
- INSTALLSITELIB=$(HOST_DIR)/usr/lib/perl \
- INSTALLSITEARCH=$(HOST_DIR)/usr/lib/perl \
- USE_MM_LD_RUN_PATH=1 \
- )
-endef
-
-define HOST_LIBXML_PARSER_PERL_BUILD_CMDS
- $(HOST_MAKE_ENV) $(MAKE) -C $(@D)
-endef
-
-define HOST_LIBXML_PARSER_PERL_INSTALL_CMDS
- $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install
-endef
-
-$(eval $(generic-package))
-$(eval $(host-generic-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 08/12] host-libmodule-build-perl: new package
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (5 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 07/12] host-libxml-parser-perl: move and refactor with perl infrastructure Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 09/12] manual: adding packages perl Francois Perrad
` (4 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
the version coming with host-perl is too old
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
.../libmodule-build-perl/libmodule-build-perl.mk | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 package/cpan/libmodule-build-perl/libmodule-build-perl.mk
diff --git a/package/cpan/libmodule-build-perl/libmodule-build-perl.mk b/package/cpan/libmodule-build-perl/libmodule-build-perl.mk
new file mode 100644
index 0000000..d874775
--- /dev/null
+++ b/package/cpan/libmodule-build-perl/libmodule-build-perl.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# libmodule-build-perl
+#
+################################################################################
+
+LIBMODULE_BUILD_PERL_VERSION = 0.4200
+LIBMODULE_BUILD_PERL_AUTHOR = LEONT
+LIBMODULE_BUILD_PERL_SOURCE = Module-Build-$(LIBMODULE_BUILD_PERL_VERSION).tar.gz
+LIBMODULE_BUILD_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT/
+HOST_LIBMODULE_BUILD_PERL_DEPENDENCIES =
+
+$(eval $(host-perl-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 09/12] manual: adding packages perl
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (6 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 08/12] host-libmodule-build-perl: new package Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 10/12] libcurses-perl: new package Francois Perrad
` (3 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
docs/manual/adding-packages-perl.txt | 91 ++++++++++++++++++++++++++++++++++
docs/manual/adding-packages.txt | 2 +
2 files changed, 93 insertions(+)
create mode 100644 docs/manual/adding-packages-perl.txt
diff --git a/docs/manual/adding-packages-perl.txt b/docs/manual/adding-packages-perl.txt
new file mode 100644
index 0000000..4efc53a
--- /dev/null
+++ b/docs/manual/adding-packages-perl.txt
@@ -0,0 +1,91 @@
+// -*- mode:doc; -*-
+// vim: set syntax=asciidoc:
+
+Infrastructure for Perl/CPAN packages
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[[perl-package-tutorial]]
+
++perl-package+ tutorial
+^^^^^^^^^^^^^^^^^^^^^^^
+
+First, let's see how to NOT write a +.mk+ file for a Perl/CPAN package,
+with an example :
+
+------------------------
+01: ################################################################################
+02: #
+03: # libfoo-bar-perl
+04: #
+05: ################################################################################
+06:
+07: LIBFOO_BAR_PERL_VERSION = 0.02
+08: LIBFOO_BAR_PERL_AUTHOR = MONGERS
+09: LIBFOO_BAR_PERL_SOURCE = Foo-$(LIBFOO_BAR_PERL_VERSION).tar.gz
+10: LIBFOO_BAR_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER/
+11: LIBFOO_BAR_PERL_DEPENDENCIES = perl libstrictures-perl
+12: HOST_LIBFOO_BAR_PERL_DEPENDENCIES = host-libstrictures-perl
+13: LIBFOO_BAR_PERL_LICENSE = perl_5
+14:
+15: $(eval $(perl-package))
+16: $(eval $(host-perl-package))
+------------------------
+
+In fact, this file and the Config.in are written by running
+the script +supports/scripts/scancpan Foo-Bar+ in the +TOPDIR+ directory.
+This script creates packages for all required Perl/CPAN dependencies.
+All theses generated files are stored in the +package/cpan+ directory.
+In very specific case, this Makefile must be modified, for example : for
+adding a C native dependency.
+
+The Perl/CPAN modules are fine-grained, the number of module grows quickly
+over 100. So, only modified files will be stored in the Buildroot repository,
+all others can be regenerated by +scancpan+.
+
+[[perl-package-reference]]
+
++perl-package+ reference
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+This infrastructure handles various Perl build systems :
++ExtUtils-MakeMaker+, +Module-Build+ and +Module-Build-Tiny+.
+
+The main macro of the Perl/CPAN package infrastructure is
++perl-package+. It is similar to the +generic-package+ macro. The ability to
+have target and host packages is also available, with the
++host-perl-package+ macro.
+
+Just like the generic infrastructure, the Perl/CPAN infrastructure
+works by defining a number of variables before calling the
++perl-package+ macro.
+
+First, all the package metadata information variables that exist in the
+generic infrastructure also exist in the Perl/CPAN infrastructure:
++LIBFOO_VERSION+, +LIBFOO_SOURCE+,
++LIBFOO_PATCH+, +LIBFOO_SITE+,
++LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+,
++LIBFOO_INSTALL_TARGET+.
+
+A few additional variables, specific to the Perl/CPAN infrastructure,
+can also be defined. Many of them are only useful in very specific
+cases, typical packages will therefore only use a few of them.
+
+* +LIBFOO_CONF_OPT+, to specify additional configure
+ options to pass to the +perl Makefile.PL+ or +perl Build.PL+.
+ By default, empty.
+
+* +LIBFOO_BUILD_OPT+, to specify additional options to
+ pass to +make pure_all+ or +perl Build build+ in the build step.
+ By default, empty.
+
+* +LIBFOO_INSTALL_TARGET_OPT+, to specify additional options to
+ pass to +make pure_install+ or +perl Build install+ in the install step.
+ By default, empty.
+
+* +HOST_LIBFOO_INSTALL_OPT+, to specify additional options to
+ pass to +make pure_install+ or +perl Build install+ in the install step.
+ By default, empty.
+
+* +LIBFOO_CLEAN_OPT+, to specify additional options to
+ pass to +make clean+ or +perl Build clean+ in the clean step.
+ By default, empty.
diff --git a/docs/manual/adding-packages.txt b/docs/manual/adding-packages.txt
index ae76e74..d5c2268 100644
--- a/docs/manual/adding-packages.txt
+++ b/docs/manual/adding-packages.txt
@@ -18,6 +18,8 @@ include::adding-packages-autotools.txt[]
include::adding-packages-cmake.txt[]
+include::adding-packages-perl.txt[]
+
include::adding-packages-hooks.txt[]
include::adding-packages-gettext.txt[]
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 10/12] libcurses-perl: new package
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (7 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 09/12] manual: adding packages perl Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 11/12] libnet-ssleay-perl: " Francois Perrad
` (2 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
(depends on ncurses)
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/cpan/Config.in | 1 +
package/cpan/libcurses-perl/Config.in | 6 ++++++
package/cpan/libcurses-perl/libcurses-perl.mk | 15 +++++++++++++++
3 files changed, 22 insertions(+)
create mode 100644 package/cpan/libcurses-perl/Config.in
create mode 100644 package/cpan/libcurses-perl/libcurses-perl.mk
diff --git a/package/cpan/Config.in b/package/cpan/Config.in
index e69de29..d344a0a 100644
--- a/package/cpan/Config.in
+++ b/package/cpan/Config.in
@@ -0,0 +1 @@
+source "package/cpan/libcurses-perl/Config.in"
diff --git a/package/cpan/libcurses-perl/Config.in b/package/cpan/libcurses-perl/Config.in
new file mode 100644
index 0000000..fdca059
--- /dev/null
+++ b/package/cpan/libcurses-perl/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_LIBCURSES_PERL
+ bool "libcurses-perl"
+ select BR2_PACKAGE_NCURSES
+ help
+ terminal screen handling and optimization
+
diff --git a/package/cpan/libcurses-perl/libcurses-perl.mk b/package/cpan/libcurses-perl/libcurses-perl.mk
new file mode 100644
index 0000000..81ba645
--- /dev/null
+++ b/package/cpan/libcurses-perl/libcurses-perl.mk
@@ -0,0 +1,15 @@
+################################################################################
+#
+# libcurses-perl
+#
+################################################################################
+
+LIBCURSES_PERL_VERSION = 1.28
+LIBCURSES_PERL_AUTHOR = GIRAFFED
+LIBCURSES_PERL_SOURCE = Curses-$(LIBCURSES_PERL_VERSION).tgz
+LIBCURSES_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GI/GIRAFFED/
+LIBCURSES_PERL_DEPENDENCIES = perl ncurses
+HOST_LIBCURSES_PERL_DEPENDENCIES = host-ncurses
+
+$(eval $(perl-package))
+$(eval $(host-perl-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 11/12] libnet-ssleay-perl: new package
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (8 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 10/12] libcurses-perl: new package Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 12/12] libxml-libxml-perl: " Francois Perrad
2014-02-03 21:45 ` [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Yann E. MORIN
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
(depends on openssl)
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/cpan/Config.in | 1 +
package/cpan/libnet-ssleay-perl/Config.in | 6 ++++++
.../cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk | 16 ++++++++++++++++
3 files changed, 23 insertions(+)
create mode 100644 package/cpan/libnet-ssleay-perl/Config.in
create mode 100644 package/cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk
diff --git a/package/cpan/Config.in b/package/cpan/Config.in
index d344a0a..8574978 100644
--- a/package/cpan/Config.in
+++ b/package/cpan/Config.in
@@ -1 +1,2 @@
source "package/cpan/libcurses-perl/Config.in"
+source "package/cpan/libnet-ssleay-perl/Config.in"
diff --git a/package/cpan/libnet-ssleay-perl/Config.in b/package/cpan/libnet-ssleay-perl/Config.in
new file mode 100644
index 0000000..19d21cf
--- /dev/null
+++ b/package/cpan/libnet-ssleay-perl/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_LIBNET_SSLEAY_PERL
+ bool "libnet-ssleay-perl"
+ select BR2_PACKAGE_OPENSSL
+ help
+ Perl extension for using OpenSSL
+
diff --git a/package/cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk b/package/cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk
new file mode 100644
index 0000000..e067511
--- /dev/null
+++ b/package/cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk
@@ -0,0 +1,16 @@
+################################################################################
+#
+# libnet-ssleay-perl
+#
+################################################################################
+
+LIBNET_SSLEAY_PERL_VERSION = 1.53
+LIBNET_SSLEAY_PERL_AUTHOR = MIKEM
+LIBNET_SSLEAY_PERL_SOURCE = Net-SSLeay-$(LIBNET_SSLEAY_PERL_VERSION).tar.gz
+LIBNET_SSLEAY_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIKEM/
+LIBNET_SSLEAY_PERL_DEPENDENCIES = perl openssl
+HOST_LIBNET_SSLEAY_PERL_DEPENDENCIES = host-openssl
+LIBNET_SSLEAY_PERL_LICENSE = ssleay
+
+$(eval $(perl-package))
+$(eval $(host-perl-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 12/12] libxml-libxml-perl: new package
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (9 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 11/12] libnet-ssleay-perl: " Francois Perrad
@ 2013-11-21 12:35 ` Francois Perrad
2014-02-03 21:45 ` [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Yann E. MORIN
11 siblings, 0 replies; 15+ messages in thread
From: Francois Perrad @ 2013-11-21 12:35 UTC (permalink / raw)
To: buildroot
(depends on libxml2 & zlib)
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
package/cpan/Config.in | 1 +
package/cpan/libxml-libxml-perl/Config.in | 9 ++++++++
.../cpan/libxml-libxml-perl/libxml-libxml-perl.mk | 22 ++++++++++++++++++++
3 files changed, 32 insertions(+)
create mode 100644 package/cpan/libxml-libxml-perl/Config.in
create mode 100644 package/cpan/libxml-libxml-perl/libxml-libxml-perl.mk
diff --git a/package/cpan/Config.in b/package/cpan/Config.in
index 8574978..62f9fa4 100644
--- a/package/cpan/Config.in
+++ b/package/cpan/Config.in
@@ -1,2 +1,3 @@
source "package/cpan/libcurses-perl/Config.in"
source "package/cpan/libnet-ssleay-perl/Config.in"
+source "package/cpan/libxml-libxml-perl/Config.in"
diff --git a/package/cpan/libxml-libxml-perl/Config.in b/package/cpan/libxml-libxml-perl/Config.in
new file mode 100644
index 0000000..19aa55c
--- /dev/null
+++ b/package/cpan/libxml-libxml-perl/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_LIBXML_LIBXML_PERL
+ bool "libxml-libxml-perl"
+ select BR2_PACKAGE_LIBXML2
+ select BR2_PACKAGE_ZLIB
+ select BR2_PACKAGE_LIBXML_SAX_PERL
+ select BR2_PACKAGE_LIBXML_NAMESPACESUPPORT_PERL
+ help
+ Interface to Gnome libxml2 xml parsing and DOM library
+
diff --git a/package/cpan/libxml-libxml-perl/libxml-libxml-perl.mk b/package/cpan/libxml-libxml-perl/libxml-libxml-perl.mk
new file mode 100644
index 0000000..5d7d0c2
--- /dev/null
+++ b/package/cpan/libxml-libxml-perl/libxml-libxml-perl.mk
@@ -0,0 +1,22 @@
+################################################################################
+#
+# libxml-libxml-perl
+#
+################################################################################
+
+LIBXML_LIBXML_PERL_VERSION = 2.0107
+LIBXML_LIBXML_PERL_AUTHOR = SHLOMIF
+LIBXML_LIBXML_PERL_SOURCE = XML-LibXML-$(LIBXML_LIBXML_PERL_VERSION).tar.gz
+LIBXML_LIBXML_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SH/SHLOMIF/
+LIBXML_LIBXML_PERL_DEPENDENCIES = perl zlib libxml2 libxml-sax-perl libxml-namespacesupport-perl
+HOST_LIBXML_LIBXML_PERL_DEPENDENCIES = host-libxml2 host-zlib host-libxml-sax-perl host-libxml-namespacesupport-perl
+LIBXML_LIBXML_PERL_LICENSE = perl_5
+
+LIBXML_LIBXML_PERL_CONF_OPT += LIBS=-L$(STAGING_DIR)/usr/lib
+LIBXML_LIBXML_PERL_CONF_OPT += INC=-I$(STAGING_DIR)/usr/include/libxml2
+
+HOST_LIBXML_LIBXML_PERL_CONF_OPT += LIBS=-L$(HOST_DIR)/usr/lib
+HOST_LIBXML_LIBXML_PERL_CONF_OPT += INC=-I$(HOST_DIR)/usr/include/libxml2
+
+$(eval $(perl-package))
+$(eval $(host-perl-package))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure
2013-11-21 12:35 [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Francois Perrad
` (10 preceding siblings ...)
2013-11-21 12:35 ` [Buildroot] [pkg-perl infra V2 12/12] libxml-libxml-perl: " Francois Perrad
@ 2014-02-03 21:45 ` Yann E. MORIN
2014-02-04 7:29 ` François Perrad
11 siblings, 1 reply; 15+ messages in thread
From: Yann E. MORIN @ 2014-02-03 21:45 UTC (permalink / raw)
To: buildroot
Fran?ois, All,
Thank you for this contribution! :-)
Arnout and I are now doing a review of this series. Sorry to come back
to you so late...
> perl: new infrastructure
Could you please add a bit more description about this new
infrastructure?
You are doing quite some complex changes, and some of them seem
unrelated
to actually adding the infrastructure.
For example it seems the PERLIB -> PERL5LIB could be split to a separate
patch.
On 2013-11-21 13:35 +0100, Francois Perrad spake thusly:
> Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
> ---
> package/Makefile.in | 11 ++-
> package/intltool/intltool.mk | 4 +-
> package/pkg-perl.mk | 220 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 229 insertions(+), 6 deletions(-)
> create mode 100644 package/pkg-perl.mk
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 612f3c7..34ce1ec 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -206,6 +206,8 @@ HOST_PATH=$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(PATH)
> HOSTCC_VERSION:=$(shell $(HOSTCC_NOCCACHE) --version | \
> sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p')
>
> +HOST_PERL_ARCHNAME = $(shell perl -MConfig -e "print Config->{archname}")
This should use ':=', not '='. (Spawning a shell is really costly, so we
want to evaluate this variable only once.)
> AS="$(TARGET_AS)" \
> @@ -241,11 +243,11 @@ TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
> LDFLAGS="$(TARGET_LDFLAGS)" \
> FCFLAGS="$(TARGET_FCFLAGS)" \
> PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
> - PERLLIB="$(HOST_DIR)/usr/lib/perl" \
> + PERL5LIB=$(HOST_DIR)/usr/lib/perl5/$(HOST_PERL_ARCHNAME):$(HOST_DIR)/usr/lib/perl5 \
Separate patch, please (not repeated for the following instances).
[--SNIP--]
> diff --git a/package/pkg-perl.mk b/package/pkg-perl.mk
> new file mode 100644
> index 0000000..893501c
> --- /dev/null
> +++ b/package/pkg-perl.mk
> @@ -0,0 +1,220 @@
> +################################################################################
> +# Perl package infrastructure
> +#
> +# This file implements an infrastructure that eases development of
> +# package .mk files for Perl packages.
> +#
> +# See the Buildroot documentation for details on the usage of this
> +# infrastructure
> +#
> +# In terms of implementation, this perl infrastructure requires
> +# the .mk file to only specify metadata informations about the
> +# package: name, version, download URL, etc.
> +#
> +# We still allow the package .mk file to override what the different
> +# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is
> +# already defined, it is used as the list of commands to perform to
> +# build the package, instead of the default perl behaviour. The
> +# package can also define some post operation hooks.
> +#
> +################################################################################
> +
> +_PERL_ARCHNAME = $(ARCH)-linux
> +
> +_HOST_PERL_ARCHNAME = $(shell perl -MConfig -e "print Config->{archname}")
> +_HOST_PERL_INSTALL_BASE = $$(HOST_DIR)/usr
> +_HOST_PERL5LIB = $(_HOST_PERL_INSTALL_BASE)/lib/perl5/$(_HOST_PERL_ARCHNAME):$(_HOST_PERL_INSTALL_BASE)/lib/perl5
Did you have some search-and-replace issue here? Those variables are
prefixed with an underscore. If that was on purpose, can you explain
why?
Also, it seems you're repeating the HOST_PERL_INSTALL_BASE which is
computed above (maybe it really belongs here, in fact?)
> +################################################################################
> +# inner-perl-package -- defines how the configuration, compilation and
> +# installation of an autotools package should be done, implements a
s/autotools/perl/
> +# few hooks to tune the build process for autotools specifities and
Ditto.
> +# calls the generic package infrastructure to generate the necessary
> +# make targets
> +#
> +# argument 1 is the lowercase package name
> +# argument 2 is the uppercase package name, including an HOST_ prefix
> +# for host packages
> +# argument 3 is the uppercase package name, without the HOST_ prefix
> +# for host packages
> +# argument 4 is the package directory prefix
> +# argument 5 is the type (target or host)
> +################################################################################
> +
> +define inner-perl-package
> +
> +$(2)_CONF_OPT ?=
> +$(2)_BUILD_OPT ?=
> +$(2)_INSTALL_OPT ?=
> +$(2)_INSTALL_TARGET_OPT ?=
> +$(2)_CLEAN_OPT ?=
> +
> +#
> +# Configure step. Only define it if not already defined by the package
> +# .mk file. And take care of the differences between host and target
> +# packages.
> +#
> +ifndef $(2)_CONFIGURE_CMDS
> +ifeq ($(5),target)
> +
> +# Configure package for target
> +define $(2)_CONFIGURE_CMDS
> + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
> + PERL5LIB=$(_HOST_PERL5LIB) \
> + perl Build.PL \
> + --config ar="$(TARGET_AR)" \
> + --config full_ar="$(TARGET_AR)" \
> + --config cc="$(TARGET_CC)" \
> + --config ccflags="$(TARGET_CFLAGS)" \
> + --config ld="$(TARGET_CC)" \
> + --config lddlflags="-shared $(TARGET_LDFLAGS)" \
> + --config ldflags="$(TARGET_LDFLAGS)" \
> + --include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$(_PERL_ARCHNAME)/CORE \
> + --destdir $$(TARGET_DIR) \
How is this going to play when/if we have to install a perl package to
staging/ as well as in target/ ? Is that never going to happen?
> + --installdirs vendor \
> + --install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \
> + --install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$(_PERL_ARCHNAME) \
> + --install_path bin=/usr/bin \
> + --install_path script=/usr/bin \
> + --install_path bindoc=/usr/share/man/man1 \
> + --install_path libdoc=/usr/share/man/man3 \
> + $$($(2)_CONF_OPT); \
> + else \
> + PERL5LIB=$(_HOST_PERL5LIB) \
> + PERL_AUTOINSTALL=--skipdeps \
> + perl Makefile.PL \
> + AR="$(TARGET_AR)" \
> + FULL_AR="$(TARGET_AR)" \
> + CC="$(TARGET_CC)" \
> + CCFLAGS="$(TARGET_CFLAGS)" \
> + LD="$(TARGET_CC)" \
> + LDDLFLAGS="-shared $(TARGET_LDFLAGS)" \
> + LDFLAGS="$(TARGET_LDFLAGS)" \
> + DESTDIR=$$(TARGET_DIR) \
Ditto.
> + INSTALLDIRS=vendor \
> + INSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \
> + INSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$(_PERL_ARCHNAME) \
> + INSTALLVENDORBIN=/usr/bin \
> + INSTALLVENDORSCRIPT=/usr/bin \
> + INSTALLVENDORMAN1DIR=/usr/share/man/man1 \
> + INSTALLVENDORMAN3DIR=/usr/share/man/man3 \
> + $$($(2)_CONF_OPT); \
> + fi
Is this automatic detection based on Build.PL really bullet-proof?
If there is the slighest chance this is not guaranteed to be true, then
we would prefer to have an explicit package variable (like the python
infrastrucuture does for distutils vs. setup-tools), like
PERLFOO_SETUP_TYPE = {Build.PL|Makefile.PL}
See the nightly-build of the manual:
http://nightly.buildroot.org/#_infrastructure_for_python_packages
Also see the python infra:
package/pkg-python.mk
[--SNIP--]
> +#
> +# Clean step. Only define it if not already defined by
> +# the package .mk file.
> +#
> +ifndef $(2)_CLEAN_CMDS
> +define $(2)_CLEAN_CMDS
> + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
> + PERL5LIB=$(_HOST_PERL5LIB) \
> + perl Build $$($(2)_CLEAN_OPT) clean; \
> + else \
> + PERL5LIB=$(_HOST_PERL5LIB) \
> + $(MAKE1) $$($(2)_CLEAN_OPT) clean; \
> + fi
> +endef
> +endif
We removed the 'clean' targets some time ago (after you posted your
series), so no need to define them any more.
We'll continue the review tomorrow for the rest of the series.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure
2014-02-03 21:45 ` [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure Yann E. MORIN
@ 2014-02-04 7:29 ` François Perrad
2014-02-04 8:33 ` Yann E. MORIN
0 siblings, 1 reply; 15+ messages in thread
From: François Perrad @ 2014-02-04 7:29 UTC (permalink / raw)
To: buildroot
2014-02-03 Yann E. MORIN <yann.morin.1998@free.fr>:
> Fran?ois, All,
>
> Thank you for this contribution! :-)
>
> Arnout and I are now doing a review of this series. Sorry to come back
> to you so late...
>
>> perl: new infrastructure
>
> Could you please add a bit more description about this new
> infrastructure?
> You are doing quite some complex changes, and some of them seem
> unrelated
> to actually adding the infrastructure.
>
> For example it seems the PERLIB -> PERL5LIB could be split to a separate
> patch.
>
> On 2013-11-21 13:35 +0100, Francois Perrad spake thusly:
>> Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
>> ---
>> package/Makefile.in | 11 ++-
>> package/intltool/intltool.mk | 4 +-
>> package/pkg-perl.mk | 220 ++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 229 insertions(+), 6 deletions(-)
>> create mode 100644 package/pkg-perl.mk
>>
>> diff --git a/package/Makefile.in b/package/Makefile.in
>> index 612f3c7..34ce1ec 100644
>> --- a/package/Makefile.in
>> +++ b/package/Makefile.in
>> @@ -206,6 +206,8 @@ HOST_PATH=$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(PATH)
>> HOSTCC_VERSION:=$(shell $(HOSTCC_NOCCACHE) --version | \
>> sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p')
>>
>> +HOST_PERL_ARCHNAME = $(shell perl -MConfig -e "print Config->{archname}")
>
> This should use ':=', not '='. (Spawning a shell is really costly, so we
> want to evaluate this variable only once.)
>
>> AS="$(TARGET_AS)" \
>> @@ -241,11 +243,11 @@ TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
>> LDFLAGS="$(TARGET_LDFLAGS)" \
>> FCFLAGS="$(TARGET_FCFLAGS)" \
>> PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
>> - PERLLIB="$(HOST_DIR)/usr/lib/perl" \
>> + PERL5LIB=$(HOST_DIR)/usr/lib/perl5/$(HOST_PERL_ARCHNAME):$(HOST_DIR)/usr/lib/perl5 \
>
> Separate patch, please (not repeated for the following instances).
>
> [--SNIP--]
>> diff --git a/package/pkg-perl.mk b/package/pkg-perl.mk
>> new file mode 100644
>> index 0000000..893501c
>> --- /dev/null
>> +++ b/package/pkg-perl.mk
>> @@ -0,0 +1,220 @@
>> +################################################################################
>> +# Perl package infrastructure
>> +#
>> +# This file implements an infrastructure that eases development of
>> +# package .mk files for Perl packages.
>> +#
>> +# See the Buildroot documentation for details on the usage of this
>> +# infrastructure
>> +#
>> +# In terms of implementation, this perl infrastructure requires
>> +# the .mk file to only specify metadata informations about the
>> +# package: name, version, download URL, etc.
>> +#
>> +# We still allow the package .mk file to override what the different
>> +# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is
>> +# already defined, it is used as the list of commands to perform to
>> +# build the package, instead of the default perl behaviour. The
>> +# package can also define some post operation hooks.
>> +#
>> +################################################################################
>> +
>> +_PERL_ARCHNAME = $(ARCH)-linux
>> +
>> +_HOST_PERL_ARCHNAME = $(shell perl -MConfig -e "print Config->{archname}")
>> +_HOST_PERL_INSTALL_BASE = $$(HOST_DIR)/usr
>> +_HOST_PERL5LIB = $(_HOST_PERL_INSTALL_BASE)/lib/perl5/$(_HOST_PERL_ARCHNAME):$(_HOST_PERL_INSTALL_BASE)/lib/perl5
>
> Did you have some search-and-replace issue here? Those variables are
> prefixed with an underscore. If that was on purpose, can you explain
> why?
>
> Also, it seems you're repeating the HOST_PERL_INSTALL_BASE which is
> computed above (maybe it really belongs here, in fact?)
>
>> +################################################################################
>> +# inner-perl-package -- defines how the configuration, compilation and
>> +# installation of an autotools package should be done, implements a
>
> s/autotools/perl/
>
>> +# few hooks to tune the build process for autotools specifities and
>
> Ditto.
>
>> +# calls the generic package infrastructure to generate the necessary
>> +# make targets
>> +#
>> +# argument 1 is the lowercase package name
>> +# argument 2 is the uppercase package name, including an HOST_ prefix
>> +# for host packages
>> +# argument 3 is the uppercase package name, without the HOST_ prefix
>> +# for host packages
>> +# argument 4 is the package directory prefix
>> +# argument 5 is the type (target or host)
>> +################################################################################
>> +
>> +define inner-perl-package
>> +
>> +$(2)_CONF_OPT ?=
>> +$(2)_BUILD_OPT ?=
>> +$(2)_INSTALL_OPT ?=
>> +$(2)_INSTALL_TARGET_OPT ?=
>> +$(2)_CLEAN_OPT ?=
>> +
>> +#
>> +# Configure step. Only define it if not already defined by the package
>> +# .mk file. And take care of the differences between host and target
>> +# packages.
>> +#
>> +ifndef $(2)_CONFIGURE_CMDS
>> +ifeq ($(5),target)
>> +
>> +# Configure package for target
>> +define $(2)_CONFIGURE_CMDS
>> + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
>> + PERL5LIB=$(_HOST_PERL5LIB) \
>> + perl Build.PL \
>> + --config ar="$(TARGET_AR)" \
>> + --config full_ar="$(TARGET_AR)" \
>> + --config cc="$(TARGET_CC)" \
>> + --config ccflags="$(TARGET_CFLAGS)" \
>> + --config ld="$(TARGET_CC)" \
>> + --config lddlflags="-shared $(TARGET_LDFLAGS)" \
>> + --config ldflags="$(TARGET_LDFLAGS)" \
>> + --include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$(_PERL_ARCHNAME)/CORE \
>> + --destdir $$(TARGET_DIR) \
>
> How is this going to play when/if we have to install a perl package to
> staging/ as well as in target/ ? Is that never going to happen?
>
>> + --installdirs vendor \
>> + --install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \
>> + --install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$(_PERL_ARCHNAME) \
>> + --install_path bin=/usr/bin \
>> + --install_path script=/usr/bin \
>> + --install_path bindoc=/usr/share/man/man1 \
>> + --install_path libdoc=/usr/share/man/man3 \
>> + $$($(2)_CONF_OPT); \
>> + else \
>> + PERL5LIB=$(_HOST_PERL5LIB) \
>> + PERL_AUTOINSTALL=--skipdeps \
>> + perl Makefile.PL \
>> + AR="$(TARGET_AR)" \
>> + FULL_AR="$(TARGET_AR)" \
>> + CC="$(TARGET_CC)" \
>> + CCFLAGS="$(TARGET_CFLAGS)" \
>> + LD="$(TARGET_CC)" \
>> + LDDLFLAGS="-shared $(TARGET_LDFLAGS)" \
>> + LDFLAGS="$(TARGET_LDFLAGS)" \
>> + DESTDIR=$$(TARGET_DIR) \
>
> Ditto.
>
>> + INSTALLDIRS=vendor \
>> + INSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \
>> + INSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$(_PERL_ARCHNAME) \
>> + INSTALLVENDORBIN=/usr/bin \
>> + INSTALLVENDORSCRIPT=/usr/bin \
>> + INSTALLVENDORMAN1DIR=/usr/share/man/man1 \
>> + INSTALLVENDORMAN3DIR=/usr/share/man/man3 \
>> + $$($(2)_CONF_OPT); \
>> + fi
>
> Is this automatic detection based on Build.PL really bullet-proof?
> If there is the slighest chance this is not guaranteed to be true, then
> we would prefer to have an explicit package variable (like the python
> infrastrucuture does for distutils vs. setup-tools), like
> PERLFOO_SETUP_TYPE = {Build.PL|Makefile.PL}
>
> See the nightly-build of the manual:
> http://nightly.buildroot.org/#_infrastructure_for_python_packages
>
> Also see the python infra:
> package/pkg-python.mk
>
> [--SNIP--]
>> +#
>> +# Clean step. Only define it if not already defined by
>> +# the package .mk file.
>> +#
>> +ifndef $(2)_CLEAN_CMDS
>> +define $(2)_CLEAN_CMDS
>> + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \
>> + PERL5LIB=$(_HOST_PERL5LIB) \
>> + perl Build $$($(2)_CLEAN_OPT) clean; \
>> + else \
>> + PERL5LIB=$(_HOST_PERL5LIB) \
>> + $(MAKE1) $$($(2)_CLEAN_OPT) clean; \
>> + fi
>> +endef
>> +endif
>
> We removed the 'clean' targets some time ago (after you posted your
> series), so no need to define them any more.
>
> We'll continue the review tomorrow for the rest of the series.
>
I am afraid that you review the V2 series instead of V3.
Fran?ois
> Regards,
> Yann E. MORIN.
>
> --
> .-----------------.--------------------.------------------.--------------------.
> | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> '------------------------------^-------^------------------^--------------------'
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 15+ messages in thread* [Buildroot] [pkg-perl infra V2 01/12] perl: new infrastructure
2014-02-04 7:29 ` François Perrad
@ 2014-02-04 8:33 ` Yann E. MORIN
0 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2014-02-04 8:33 UTC (permalink / raw)
To: buildroot
Fran?ois, Arnout, All,
On 2014-02-04 08:29 +0100, Fran?ois Perrad spake thusly:
> 2014-02-03 Yann E. MORIN <yann.morin.1998@free.fr>:
> > We'll continue the review tomorrow for the rest of the series.
> I am afraid that you review the V2 series instead of V3.
In fact, I did review (and apply to my tree) v3, I just choose the wrong
version when replying.
So, as far as I can see, our comments still stand for v3.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 15+ messages in thread