Alien-Role-Alt
view release on metacpan or search on metacpan
use Role::Tiny::With qw( with );
with 'Alien::Role::Alt';
1;
Then you can use it:
use Alien::Libfoo;
my $cflags = Alien::Libfoo->alt('foo1')->cflags;
my $libs = Alien::Libfoo->alt('foo1')->libs;
DESCRIPTION
NOTE: The capabilities that used to be provided by this role have been
moved into Alien::Base's core class. This is an empty role provided for
compatibility only. New code should not be using this class.
Some packages come with multiple libraries, and multiple .pc files to
use with them. This Role::Tiny role can be used with Alien::Base to
corpus/lib/auto/share/dist/Alien-libfoo1/_alien/alien.json view on Meta::CPAN
"libs" : "-lfoo ",
"install_type" : "system",
"version" : "1.2.3",
"legacy" : {
"finished_installing" : 1,
"name" : "foo",
"version" : "1.2.3",
"original_prefix" : "/foo/bar/baz/auto/share/dist/Alien-libfoo1",
"install_type" : "system"
},
"cflags_static" : "-DFOO=1 -DFOO_STATIC=1 ",
"cflags" : "-DFOO=1 ",
"libs_static" : "-lfoo -lbar -lbaz ",
"prefix" : "/foo/bar/baz/auto/share/dist/Alien-libfoo1",
"arbitrary" : "one"
}
corpus/lib/auto/share/dist/Alien-libfoo2/_alien/alien.json view on Meta::CPAN
"libs" : "-L/foo/bar/baz/auto/share/dist/Alien-libfoo1/lib -lfoo ",
"install_type" : "share",
"version" : "2.3.4",
"legacy" : {
"finished_installing" : 1,
"name" : "foo",
"version" : "2.3.4",
"original_prefix" : "/foo/bar/baz/auto/share/dist/Alien-libfoo1",
"install_type" : "share"
},
"cflags_static" : "-I/foo/bar/baz/auto/share/dist/Alien-libfoo1/include -DFOO=1 -DFOO_STATIC=1 ",
"cflags" : "-I/foo/bar/baz/auto/share/dist/Alien-libfoo1/include -DFOO=1 ",
"libs_static" : "-L/foo/bar/baz/auto/share/dist/Alien-libfoo1/lib -lfoo -lbar -lbaz ",
"prefix" : "/foo/bar/baz/auto/share/dist/Alien-libfoo1",
"arbitrary" : "two",
"alt" : {
"foo1" : {
"libs" : "-L/foo/bar/baz/auto/share/dist/Alien-libfoo1/lib -lfoo ",
"version" : "2.3.4",
"cflags_static" : "-I/foo/bar/baz/auto/share/dist/Alien-libfoo1/include -DFOO=1 -DFOO_STATIC=1 ",
"cflags" : "-I/foo/bar/baz/auto/share/dist/Alien-libfoo1/include -DFOO=1 ",
"libs_static" : "-L/foo/bar/baz/auto/share/dist/Alien-libfoo1/lib -lfoo -lbar -lbaz "
},
"foo2" : {
"libs" : "-L/foo/bar/baz/auto/share/dist/Alien-libfoo1/lib -lfoo1 ",
"version" : "2.3.5",
"cflags_static" : "-I/foo/bar/baz/auto/share/dist/Alien-libfoo1/include -DFOO=2 -DFOO_STATIC=2 ",
"cflags" : "-I/foo/bar/baz/auto/share/dist/Alien-libfoo1/include -DFOO=2 ",
"libs_static" : "-L/foo/bar/baz/auto/share/dist/Alien-libfoo1/lib -lfoo1 -lbar -lbaz ",
"arbitrary" : "four"
},
"foo3" : {
"arbitrary" : "five"
}
}
}
lib/Alien/Role/Alt.pm view on Meta::CPAN
use Role::Tiny::With qw( with );
with 'Alien::Role::Alt';
1;
Then you can use it:
use Alien::Libfoo;
my $cflags = Alien::Libfoo->alt('foo1')->cflags;
my $libs = Alien::Libfoo->alt('foo1')->libs;
=head1 DESCRIPTION
B<NOTE>: The capabilities that used to be provided by this role have been
moved into L<Alien::Base>'s core class. This is an empty role provided
for compatibility only. New code should not be using this class.
Some packages come with multiple libraries, and multiple C<.pc> files to
use with them. This L<Role::Tiny> role can be used with L<Alien::Base>
t/alien_role_alt.t view on Meta::CPAN
diag '* Please use Alien::Build instead. *';
diag '*********************************************';
diag '';
diag '';
subtest 'test a share install' => sub {
alien_ok 'Alien::libfoo2';
subtest 'default' => sub {
like( Alien::libfoo2->cflags, qr{-I.*Alien-libfoo2/include -DFOO=1} );
like( Alien::libfoo2->libs, qr{-L.*Alien-libfoo2/lib -lfoo} );
like( Alien::libfoo2->cflags_static, qr{-I.*Alien-libfoo2/include -DFOO=1 -DFOO_STATIC=1} );
like( Alien::libfoo2->libs_static, qr{-L.*Alien-libfoo2/lib -lfoo -lbar -lbaz} );
is( Alien::libfoo2->version, '2.3.4' );
is( Alien::libfoo2->runtime_prop->{arbitrary}, 'two');
};
subtest 'foo1' => sub {
my $alien = Alien::libfoo2->alt('foo1');
isa_ok $alien, 'Alien::Base';
isa_ok $alien, 'Alien::libfoo2';
like( $alien->cflags, qr{-I.*Alien-libfoo2/include -DFOO=1} );
like( $alien->libs, qr{-L.*Alien-libfoo2/lib -lfoo} );
like( $alien->cflags_static, qr{-I.*Alien-libfoo2/include -DFOO=1 -DFOO_STATIC=1} );
like( $alien->libs_static, qr{-L.*Alien-libfoo2/lib -lfoo -lbar -lbaz} );
is( $alien->version, '2.3.4' );
is( $alien->runtime_prop->{arbitrary}, 'two');
};
subtest 'foo2' => sub {
my $alien = Alien::libfoo2->alt('foo2');
isa_ok $alien, 'Alien::Base';
isa_ok $alien, 'Alien::libfoo2';
like( $alien->cflags, qr{-I.*Alien-libfoo2/include -DFOO=2} );
like( $alien->libs, qr{-L.*Alien-libfoo2/lib -lfoo1} );
like( $alien->cflags_static, qr{-I.*Alien-libfoo2/include -DFOO=2 -DFOO_STATIC=2} );
like( $alien->libs_static, qr{-L.*Alien-libfoo2/lib -lfoo1 -lbar -lbaz} );
is( $alien->version, '2.3.5' );
is( $alien->runtime_prop->{arbitrary}, 'four');
};
subtest 'foo3' => sub {
my $alien = Alien::libfoo2->alt('foo3');
isa_ok $alien, 'Alien::Base';
isa_ok $alien, 'Alien::libfoo2';
like( $alien->cflags, qr{-I.*Alien-libfoo2/include -DFOO=1} );
like( $alien->libs, qr{-L.*Alien-libfoo2/lib -lfoo} );
like( $alien->cflags_static, qr{-I.*Alien-libfoo2/include -DFOO=1 -DFOO_STATIC=1} );
like( $alien->libs_static, qr{-L.*Alien-libfoo2/lib -lfoo -lbar -lbaz} );
is( $alien->version, '2.3.4' );
is( $alien->runtime_prop->{arbitrary}, 'five');
};
subtest 'foo4' => sub {
eval { Alien::libfoo2->alt('foo4') };
like $@, qr/no such alt: foo4/;
};
subtest 'default -> foo2 -> foo1' => sub {
my $alien = Alien::libfoo2->alt('foo2')->alt('foo1');
isa_ok $alien, 'Alien::Base';
isa_ok $alien, 'Alien::libfoo2';
like( $alien->cflags, qr{-I.*Alien-libfoo2/include -DFOO=1} );
like( $alien->libs, qr{-L.*Alien-libfoo2/lib -lfoo} );
like( $alien->cflags_static, qr{-I.*Alien-libfoo2/include -DFOO=1 -DFOO_STATIC=1} );
like( $alien->libs_static, qr{-L.*Alien-libfoo2/lib -lfoo -lbar -lbaz} );
is( $alien->version, '2.3.4' );
is( $alien->runtime_prop->{arbitrary}, 'two');
};
};
done_testing
( run in 0.583 second using v1.01-cache-2.11-cpan-94b05bcf43c )