Build.PL
branchfoerste
changeset 65 85a89053a279
parent 64 a14d0bfd2e21
equal deleted inserted replaced
64:a14d0bfd2e21 65:85a89053a279
     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;