NAME
Alien::MSYS - Tools required for GNU style configure scripts on Windows
VERSION
version 0.08
SYNOPSIS
from Perl:
use Alien::MSYS;
# runs uname from MSYS
my $uname = msys { `uname` };
From Prompt/Makefile
C:\> perl -MAlien::MSYS -e msys_run uname
DESCRIPTION
MSYS provides minimal shell and POSIX tools on Windows to enable GNU style configure scripts to run (the type usually generated by autoconf
). This module aims to provide an interface for using MSYS on Windows and act as a no-op on Unix like operating systems which already have that capability. If you use this module, I recommend that you list this as a prerequisite only during MSWin32 installs.
When installing, this distribution will look for an existing MSYS
using the following methods in this order:
- environment variable
ALIEN_INSTALL_TYPE
orALIEN_MSYS_INSTALL_TYPE
-
If set to
share
a system install will not be attempted. If set tosystem
then a share install will not be attempted. - environment variable
PERL_ALIEN_MSYS_BIN
-
If set, this environment variable should be set to the root of
MSYS
(NOTMinGW
). For example, if you haveMinGW
/MSYS
installed onD:
you might use this:C:\> set PERL_ALIEN_MSYS_BIN=D:\MinGW\msys\1.0\bin
Keep in mind that this environment variable is consulted during both install and at run-time, so it is advisable to set this in the System Properties control panel.
- search
PATH
formingw-get.exe
-
Second, Alien::MSYS searches the
PATH
environment variable for themingw-get.exe
program, which is a common method for installingMinGW
andMSYS
. From there if it can deduce the location ofMSYS
it will use that. - try
C:\MinGW\msys\1.0\bin
-
Next, Alien::MSYS tries the default install location.
- Use desktop shortcut for
MinGW Installer
-
Finally, Alien::MSYS will try to find
MSYS
from the desktop shortcut created by the GUI installer forMinGW
. This method only works if you already have Win32::Shortcut installed, as it is an optional dependency.
If MSYS
cannot be found using any of these methods, then it will download and install MSYS
in this distribution's share directory (via File::ShareDir).
FUNCTIONS
msys
# get the uname from MSYS
my $uname = msys { `uanem` };
# run with GNU make from MSYS instead of
# dmake from Strawberry Perl
msys { system 'make' };
This function takes a single argument, a code reference, and runs it with the correctly set environment so that calls to the system function or the qx quote like operator will use MSYS instead of the default environment.
msys_run
# pass command through @ARGV
C:\> perl -MAlien::MSYS -e msys_run uname
# pass command through @_
C:\> perl -MAlien::MSYS -e "msys_run 'make'; msys_run 'make install'"
This function runs a command with the MSYS environment. It gets the command and arguments either as passed to it, or if none are passed the the command is expected to be in @ARGV.
If the command fails then it will exit with a non-zero error code. This is useful, in the second example above if either make
or make install
fails, then the whole command will fail, also make install
will not be attempted unless make
succeeds.
msys_path
This function returns the full path to the MSYS bin directory.
AUTHOR
Graham Ollis <plicease@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 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.