1 #!/usr/bin/perl |
|
2 |
|
3 use Module::Build; |
|
4 |
|
5 my $builder = Module::Build->subclass( |
|
6 class => 'My::Module::Build', |
|
7 code => <<'___CODE', |
|
8 use strict; |
|
9 use warnings; |
|
10 use File::Temp; |
|
11 sub ACTION_equivs { |
|
12 my $self = shift; |
|
13 my %provides = ( |
|
14 'POSIX' => 'perl-base', |
|
15 'File::Path' => 'perl-modules', |
|
16 ); |
|
17 my %deps = ( ( map { (my $d = $_ ) =~ s/::/-/g; |
|
18 defined $provides{$_} ? $provides{$_} : 'lib' . lc $d . '-perl' |
|
19 => $self->requires->{$_} == 0 ? '' : ' (>= ' . $self->requires->{$_} . ')' |
|
20 } keys %{$self->requires} ), |
|
21 ); |
|
22 my $c = new File::Temp or die "Can't tempfile"; |
|
23 print $c "Package: libius-dav-htpasswd-perl-deps\n"; |
|
24 print $c 'Depends: ', join ', ', map { "$_$deps{$_}" } keys %deps; |
|
25 system('equivs-build', $c->filename); |
|
26 } |
|
27 sub ACTION_install { |
|
28 my $self = shift; |
|
29 my $h = ($self->install_path('cgi-bin') =~ m|^(.*)/cgi-bin$|)[0] ; |
|
30 my $u = my $g = ($h =~ m|/([^/]+)$|)[0]; |
|
31 system(qw(chown -R), "$u:$g", $h) == 0 |
|
32 or die "Can't 'chown -R $u:$g $h': $!"; |
|
33 { no warnings 'qw'; |
|
34 system(qw(chmod -R go=,-st), $h) == 0 |
|
35 or die "Can't 'chmod -R go=,-st $h"; |
|
36 } |
|
37 $self->SUPER::ACTION_install; |
|
38 } |
|
39 sub get_metadata { |
|
40 my ($self, @args) = @_; |
|
41 my $data = $self->SUPER::get_metadata(@args); |
|
42 # workaround double utf encoded characters in MYMETA.{yml,json} ('ö' |
|
43 # instead of 'ö' for example): the author name is taken from the pod in |
|
44 # lib/Ius/Dav/Htpasswd.pm and the pod parser used by Module::Build is |
|
45 # assuming latin1 despite the '=encoding' command |
|
46 use Encode; |
|
47 map { $_ = decode('utf8', $_); } @{$data->{author}} if defined $data->{author}; |
|
48 return $data; |
|
49 } |
|
50 ___CODE |
|
51 ); |
|
52 |
|
53 my $build = $builder->new( |
|
54 module_name => 'Ius::Dav::Htpasswd', |
|
55 license => 'gpl', |
|
56 create_license => 1, |
|
57 requires => { |
|
58 'Apache::Htpasswd' => 0, |
|
59 'AppConfig' => 0, |
|
60 'File::Path' => 0, |
|
61 'POSIX' => 0, |
|
62 'String::MkPasswd' => 0 |
|
63 }, |
|
64 script_files => [ glob 'bin/*' ], |
|
65 cgi_files => |
|
66 { map { /\.(bak|orig)$/ ? () : ( $_ => $_ ) } glob 'cgi-bin/*' } |
|
67 ); |
|
68 $build->add_build_element('cgi'); |
|
69 $build->install_path( |
|
70 'cgi-bin' => $build->original_prefix( $build->installdirs ) |
|
71 . '/lib/ius-dav-htpasswd/cgi-bin' ); |
|
72 $build->create_build_script; |
|