New upstream version 0.8001
gregor herrmann
2 years ago
0 | 0 | Revision history for Perl extension ExtUtils::Depends. |
1 | ||
2 | 0.8001 | |
3 | - Remove hack (cf https://rt.cpan.org/Ticket/Display.html?id=45224) | |
4 | The hijacking of EUMM's `static_lib` method is now obsolete, as well as | |
5 | causing problems. | |
6 | - Also added a couple of code tidy-ups | |
1 | 7 | |
2 | 8 | 0.8000 |
3 | 9 | - Bump version so https://metacpan.org/pod/ExtUtils::Depends shows the |
4 | 4 | "Gtk2-Perl Team <gtk-perl-list at gnome dot org>" |
5 | 5 | ], |
6 | 6 | "dynamic_config" : 1, |
7 | "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150010", | |
7 | "generated_by" : "ExtUtils::MakeMaker version 7.44, CPAN::Meta::Converter version 2.150010", | |
8 | 8 | "keywords" : [ |
9 | 9 | "XS", |
10 | 10 | "XS extensions", |
38 | 38 | "configure" : { |
39 | 39 | "requires" : { |
40 | 40 | "Data::Dumper" : "0", |
41 | "ExtUtils::MakeMaker" : "0", | |
41 | "ExtUtils::MakeMaker" : "7.44", | |
42 | 42 | "File::Spec" : "0", |
43 | 43 | "IO::File" : "0" |
44 | 44 | } |
46 | 46 | "runtime" : { |
47 | 47 | "requires" : { |
48 | 48 | "Data::Dumper" : "0", |
49 | "ExtUtils::MakeMaker" : "7.44", | |
49 | 50 | "File::Spec" : "0", |
50 | 51 | "IO::File" : "0", |
51 | 52 | "perl" : "5.006" |
74 | 75 | }, |
75 | 76 | "x_MailingList" : "https://mail.gnome.org/mailman/listinfo/gtk-perl-list" |
76 | 77 | }, |
77 | "version" : "0.8000", | |
78 | "version" : "0.8001", | |
78 | 79 | "x_serialization_backend" : "JSON::PP version 2.97001" |
79 | 80 | } |
7 | 7 | Test::More: '0' |
8 | 8 | configure_requires: |
9 | 9 | Data::Dumper: '0' |
10 | ExtUtils::MakeMaker: '0' | |
10 | ExtUtils::MakeMaker: '7.44' | |
11 | 11 | File::Spec: '0' |
12 | 12 | IO::File: '0' |
13 | 13 | dynamic_config: 1 |
14 | generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150010' | |
14 | generated_by: 'ExtUtils::MakeMaker version 7.44, CPAN::Meta::Converter version 2.150010' | |
15 | 15 | keywords: |
16 | 16 | - XS |
17 | 17 | - 'XS extensions' |
29 | 29 | - ExtUtils::MM |
30 | 30 | requires: |
31 | 31 | Data::Dumper: '0' |
32 | ExtUtils::MakeMaker: '7.44' | |
32 | 33 | File::Spec: '0' |
33 | 34 | IO::File: '0' |
34 | 35 | perl: '5.006' |
38 | 39 | homepage: http://gtk2-perl.sourceforge.net |
39 | 40 | license: http://dev.perl.org/licenses/ |
40 | 41 | repository: git://git.gnome.org/perl-ExtUtils-Depends |
41 | version: '0.8000' | |
42 | version: '0.8001' | |
42 | 43 | x_serialization_backend: 'CPAN::Meta::YAML version 0.018' |
7 | 7 | 'File::Spec' => 0, |
8 | 8 | 'Data::Dumper' => 0, |
9 | 9 | 'IO::File' => 0, |
10 | 'ExtUtils::MakeMaker' => '7.44', # no need for Win32 static_lib hack | |
10 | 11 | ); |
11 | 12 | |
12 | 13 | my %meta_merge = ( |
7 | 7 | use File::Spec; |
8 | 8 | use Data::Dumper; |
9 | 9 | |
10 | our $VERSION = '0.8000'; | |
10 | our $VERSION = '0.8001'; | |
11 | 11 | |
12 | 12 | sub import { |
13 | 13 | my $class = shift; |
151 | 151 | |
152 | 152 | sub Inline { |
153 | 153 | my (\$class, \$lang) = \@_; |
154 | if (\$lang ne 'C') { | |
155 | warn "Warning: Inline hints not available for \$lang language\n"; | |
156 | return; | |
157 | } | |
158 | 154 | +{ map { (uc(\$_) => \$self->{\$_}) } qw(inc libs typemaps) }; |
159 | 155 | } |
160 | 156 | EOT |
228 | 224 | |
229 | 225 | sub load_deps { |
230 | 226 | my $self = shift; |
231 | my @load = grep { not $self->{deps}{$_} } keys %{ $self->{deps} }; | |
227 | my @load = grep !$self->{deps}{$_}, keys %{ $self->{deps} }; | |
228 | my %in_load; @in_load{@load} = (); | |
232 | 229 | foreach my $d (@load) { |
233 | my $dep = load ($d); | |
234 | $self->{deps}{$d} = $dep; | |
235 | if ($dep->{deps}) { | |
236 | foreach my $childdep (@{ $dep->{deps} }) { | |
237 | push @load, $childdep | |
238 | unless | |
239 | $self->{deps}{$childdep} | |
240 | or | |
241 | grep {$_ eq $childdep} @load; | |
242 | } | |
243 | } | |
230 | $self->{deps}{$d} = my $dep = load($d); | |
231 | my @new_deps = grep !($self->{deps}{$_} || exists $in_load{$_}), | |
232 | @{ $dep->{deps} || [] }; | |
233 | push @load, @new_deps; | |
234 | @in_load{@new_deps} = (); | |
244 | 235 | } |
245 | 236 | } |
246 | 237 | |
247 | 238 | sub uniquify { |
248 | 239 | my %seen; |
249 | # we use a seen hash, but also keep indices to preserve | |
250 | # first-seen order. | |
251 | my $i = 0; | |
252 | foreach (@_) { | |
253 | $seen{$_} = ++$i | |
254 | unless exists $seen{$_}; | |
255 | } | |
256 | #warn "stripped ".(@_ - (keys %seen))." redundant elements\n"; | |
257 | sort { $seen{$a} <=> $seen{$b} } keys %seen; | |
258 | } | |
259 | ||
240 | grep !$seen{$_}++, @_; | |
241 | } | |
260 | 242 | |
261 | 243 | sub get_makefile_vars { |
262 | 244 | my $self = shift; |
385 | 367 | return @found_libs; |
386 | 368 | } |
387 | 369 | |
388 | # Hook into ExtUtils::MakeMaker to create an import library on MSWin32 when gcc | |
389 | # is used. FIXME: Ideally, this should be done in EU::MM itself. | |
390 | package # wrap to fool the CPAN indexer | |
391 | ExtUtils::MM; | |
392 | use Config; | |
393 | sub static_lib { | |
394 | my $base = shift->SUPER::static_lib(@_); | |
395 | ||
396 | return $base unless $^O =~ /MSWin32/ && $Config{cc} =~ /\bgcc\b/i; | |
397 | ||
398 | my $DLLTOOL = $Config{'dlltool'} || 'dlltool'; | |
399 | ||
400 | return <<"__EOM__" | |
401 | # This isn't actually a static lib, it just has the same name on Win32. | |
402 | \$(INST_DYNAMIC_LIB): \$(INST_DYNAMIC) | |
403 | $DLLTOOL --def \$(EXPORT_LIST) --output-lib \$\@ --dllname \$(DLBASE).\$(DLEXT) \$(INST_DYNAMIC) | |
404 | ||
405 | dynamic:: \$(INST_DYNAMIC_LIB) | |
406 | __EOM__ | |
407 | } | |
408 | ||
409 | 1; | |
410 | ||
411 | 370 | __END__ |
412 | 371 | |
413 | 372 | =head1 NAME |
1 | 1 | use strict; |
2 | 2 | use warnings; |
3 | 3 | |
4 | use Test::More tests => 40; | |
4 | use Test::More tests => 41; | |
5 | 5 | |
6 | 6 | use FindBin; |
7 | 7 | use lib "$FindBin::Bin/lib"; |
50 | 50 | open my $iffh, '>>', $IFpm or die "write $IFpm: $!"; |
51 | 51 | print $iffh qq{\nwarn "LOADING\\n";\n1;\n}; |
52 | 52 | undef $iffh; |
53 | ||
54 | # test utility function | |
55 | is_deeply [ExtUtils::Depends::uniquify(qw(a c b c a b))], [qw(a c b)]; | |
53 | 56 | |
54 | 57 | # --------------------------------------------------------------------------- # |
55 | 58 |