package Alien::Build::Plugin::Cleanse::BuildDir; use strict; use warnings; use 5.008001; use Alien::Build; use Alien::Build::Plugin; use File::Path qw /remove_tree/; use Cwd qw /getcwd/; use Path::Tiny qw /path/; our $VERSION = '0.05'; # VERSION sub init { my($self, $meta) = @_; $meta->after_hook ( build => sub { my($build) = @_; return if $build->install_type ne 'share'; return if $build->meta_prop->{out_of_source}; my $build_dir = path ($build->install_prop->{extract})->absolute; if (!defined $build_dir) { $build->log ("Unable to determine build dir\n"); return; } # a spot of paranoia #return if $build_dir !~ /\b_alien\b/; $build->log ("Going to delete $build_dir\n"); $build->log ("Currently in " . getcwd() . "\n"); my $curdir = getcwd(); if (path($curdir)->subsumes ($build_dir)) { $build->log ("Going to parent of build directory\n"); chdir "$build_dir/.."; } my $count = eval { remove_tree ($build_dir, { safe => 1, #verbose => 1, }); } || 0; $build->log ("Deleted $count items\n"); }); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Alien::Build::Plugin::Cleanse::BuildDir - Alien::Build plugin to cleanse the build dir after the build phase =head1 VERSION version 0.01 =head1 SYNOPSIS use alienfile share { # other commands to download, unpack and build etc., # and then: plugin 'Cleanse::BuildDir'; }; 1; =head1 DESCRIPTION This plugin deletes the build directory after the alien module's build phase. This is useful if your alien has a large build size. It was developed because the L<Alien::gdal> build footprint is enormous, and was filling up disk space on cpan testers. You should use it conditionally in your alienfile, for example when you know the build dir contents are not needed later. Has no effect if you are running a non-share install, or are using an out of source build (although these are currently untested). =head1 SEE ALSO =over 4 =item L<Alien::Build> =back =head1 AUTHOR Shawn Laffan <shawnlaffan@cpan.org> =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2018 by Shawn Laffan. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.