MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //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;
}