Alien-Judy

 view release on metacpan or  search on metacpan

inc/My/Judy/Builder.pm  view on Meta::CPAN

                    '..'
                )
            );
    }

    my $html3 = $self->install_destination('libhtml');
    my $html;
    if ( $html3 ) {
        $html =
            Cwd::abs_path(
                File::Spec->catdir(
                    $html3,
                    '..'
                )
            );
    }

    my %args = (
        sysconfdir     => $arch,
        sharedstatedir => $arch,
        localstatedir  => $arch,
        libdir         => $arch,
        includedir     => $arch,
        oldincludedir  => $arch,
        datarootdir    => $arch,
        datadir        => $arch,

        $bin ? ( bindir     => $bin,
                 sbindir    => $bin,
                 libexecdir => $bin )
             : (),
        $man ? ( mandir => $man )
             : (),
        $html ? ( htmldir => $html )
              : (),
    );
    
    return
        join ' ',
        map { "--$_=$args{$_}" }
        sort
        keys %args;
}

sub ACTION_code {
    my ($self) = @_;

    if ( $self->notes('build_judy') =~ /^y/i ) {
        $self->SUPER::ACTION_code();

        _chdir_to_judy();
        
        $self->_run(MAKE())
            or do {
                warn "building Judy failed";
                _chdir_back();
                return 0;
            };

        # "Install" a minor copy of Judy.h and libJudy.so to my own
        # blib/arch/Alien/Judy because it looks like some CPAN smokers
        # don't install dependencies but just adjust @INC to point
        # into depended-on- blib/* directories.
        my $alien = File::Spec->catdir( $Orig_CWD, 'blib', 'arch', 'Alien', 'Judy' );
        File::Path::make_path( $alien );
        my @files = (
            'src/Judy.h',
            glob('src/obj/.libs/*'),
        );
        for my $file ( @files ) {
            File::Copy::copy( $file, $alien );
        }

        _chdir_back();

        return 1;
    }
    else {
	return $self->SUPER::ACTION_code();
    }
}


sub ACTION_test {
    my ($self) = @_;
    
    if ( $self->notes('build_judy') =~ /^y/i ) {
        $self->SUPER::ACTION_test();
    
        _chdir_to_judy();
        
        $self->_run( MAKE(), 'check' )
            or do {
                warn "checking Judy failed ";
                _chdir_back();
                return 0;
            };
        
        _chdir_back();

        return 1;
    }
    else {
        return $self->SUPER::ACTION_test();
    }
}

sub ACTION_install {
    my ($self) = @_;
    
    if ( $self->notes('build_judy') =~ /^y/i ) {
        $self->SUPER::ACTION_install();

        _chdir_to_judy();
        
        $self->_run( MAKE(), 'install' )
            or do {
                warn "installing Judy failed ";
                _chdir_back();
                return 0;
            };



( run in 3.133 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )