Alien::patch - Find or build patch
version 0.15
use Alien::patch (); use Env qw( @PATH ); unshift @PATH, Alien::patch->bin_dir; my $patch = Alien::patch->exe; system "$patch -p1 < foo.patch";
Or in your alienfile:
use alienfile; ... share { ... # Alien-Build knows to automatically pull in Alien::patch # so you do not need to specify it as a prereq. # The %{.install.patch} directory is a shortcut for the # `patch' directory in your dist, and gets copied into the # dist share directory, so you can rebuild with `af' after # install. patch [ '%{patch} -p1 < %{.install.patch}/mypatch.patch' ]; };
Or with Alien::Build::ModuleBuild:
use Alien::Base::ModuleBuild; Alien::Base::ModuleBuild->new( ... alien_bin_requires => { 'Alien::patch' => '0.08', }, alien_build_commands => { '%{patch} -p1 < foo.patch', }, ... )->create_build_script;
Many environments provide the patch command, but a few do not. Using this module in your alienfile (or elsewhere) you can make sure that patch will be available. If the system provides it, then great, this module is a no-op. If it does not, then it will download and install it into a private location so that it can be added to the PATH
when this module is used.
This class is a subclass of Alien::Base, and works closely with Alien::Build and alienfile
my $exe = Alien::patch->exe;
Returns the command to run patch on your system. For now it simply adds the --binary
option on Windows (MSWin32
but not cygwin
) which is usually what you want.
%{patch}
When used with Alien::Base::ModuleBuild in a alien_build_commands
or alien_install_commands
, this helper will be replaced by either patch
(Unix and cygwin) or patch --binary
(MSWin32).
1;
Author: Graham Ollis <plicease@cpan.org>
Contributors:
Zakariyya Mughal
This software is copyright (c) 2017 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.