File: //proc/self/root/proc/self/root/scripts.20110531.215904.25158/installimagemagick
#!/usr/bin/perl
# cpanel - installimagemagick Copyright(c) 2010 cPanel, Inc.
# All rights Reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
BEGIN { unshift @INC, '/usr/local/cpanel'; }
use strict;
use warnings;
use Cpanel::FindBin ();
use Cpanel::SafeRun::Simple ();
use IPC::Open3 ();
use Cpanel::SysPkgs ();
eval "use BSD::Resource qw(setrlimit RLIM_INFINITY RLIMIT_RSS RLIMIT_AS);";
my $has_bsd_resource = $@ ? 0 : 1;
if ($has_bsd_resource) {
#yum is a hog
my $maxmem = ( 256 * ( 1024 * 1024 ) );
setrlimit( RLIMIT_RSS(), $maxmem, $maxmem )
|| print STDERR "$$: Unable to set RLIMIT_RSS\n";
setrlimit( RLIMIT_AS(), $maxmem, $maxmem )
|| print STDERR "$$: Unable to set RLIMIT_AS\n";
}
if ( safegetimkstatus() ) {
print "ImageMagick installed ok\n";
exit;
}
system '/scripts/bsdldconfig';
system '/scripts/checkccompiler';
my @RPMLIST;
if ( -e '/etc/debian_version' ) {
@RPMLIST = ( 'freetype2', 'freetype-dev', 'freetype', 'freetype-devel', 'libfreetype6', 'libfreetype6-dev', 'libjpeg62', 'libjpeg62-dev' );
}
else {
@RPMLIST = ( 'freetype2', 'freetype2-devel', 'freetype', 'freetype-devel' );
}
my $syspkgobj = Cpanel::SysPkgs->new();
if ( !$syspkgobj ) { die print "Could not create SysPkgs object\n"; }
my @pkgs = ( @RPMLIST, 'perl-CPAN', 'libpng-devel', 'libjpeg-devel', 'XFree86-devel', 'iconv', 'jpeg', 'xpm', 'png', 'linuxthreads', 'libxml2-devel', 'bzip2-devel', 'xorg-x11-devel', 'XFree86-devel', 'libXpm-devel', 'librsvg2-devel', 'librsvg2', 'librsvg2-devel', 'libwmf', 'libwmf-devel', 'ghostscript', 'ghostscript-devel', 'ghostscript-fonts' );
$syspkgobj->install( 'pkglist' => \@pkgs );
my $brokeninstall = 0;
my $imagemagick_version = get_major_version();
if ( $imagemagick_version && $imagemagick_version >= 6.2 ) {
print 'Building Image::Magick....';
open( RNULL, '<', '/dev/null' );
my $pid = IPC::Open3::open3( '>&RNULL', '>&STDOUT', \*ERH, '/scripts/perlinstaller', 'Image::Magick' );
while (<ERH>) {
print "......\n";
if (/^\s*make:.*Magick.*Error/) {
$brokeninstall = 1;
}
}
close(RNULL);
close(ERH);
waitpid( $pid, 0 );
print "Done\n";
my $imkstatus = safegetimkstatus($brokeninstall);
print "ImageMagick status [$imkstatus]\n";
}
try_source_install();
sub try_source_install {
system '/scripts/fetchimagemagick';
#fetchimageimagk installs imagemagick and perl magick
if ( safegetimkstatus() ) {
print "ImageMagick installed ok\n";
exit;
}
system '/scripts/perlinstaller', '--force', 'Image::Magick';
if ( safegetimkstatus() ) {
print "ImageMagick installed ok\n";
}
else {
system '/scripts/cleanimagemagick', '--quit';
system '/scripts/fetchimagemagick', '--skip64';
#fetchimageimagk installs imagemagick and perl magick
if ( safegetimkstatus() ) {
print "ImageMagick installed ok\n";
exit;
}
system '/scripts/perlinstaller', '--force', 'Image::Magick';
if ( safegetimkstatus() ) {
print "ImageMagick installed ok\n";
exit;
}
else {
print "ImageMagick install failed\n";
}
}
}
sub safegetimkstatus {
my $out = Cpanel::SafeRun::Simple::saferun('/scripts/safeimagemagicktester');
my $status = 0;
if ( $out =~ /Status: (\d+)/ ) {
$status = int $1;
}
return $status;
}
sub find_convert {
foreach my $path ( '/usr/X11R6/bin/convert', '/usr/bin/convert', '/usr/local/bin/convert' ) {
if ( -x $path ) { return $path; }
}
return '';
}
sub get_major_version {
my $convert = find_convert();
my $version = Cpanel::SafeRun::Simple::saferun( $convert, '--version' );
$version =~ /\s+(\d\.\d+)\.\d+/;
return $1;
}