#!/usr/bin/perl # install.cgi # Install a downloaded perl module require './cpan-lib.pl'; &ReadParse(); @pfile = split(/\0/, $in{'pfile'}); if ($in{'need'}) { # Some pre-reqs are needed .. return to the download form @cpan = ( split(/\0/, $in{'needreq'}), split(/\0/, $in{'mod'}) ); unlink(@pfile); # will re-get &redirect("download.cgi?source=3&cpan=".&urlize(join(" ", @cpan))); } foreach $pfile (@pfile) { -r $pfile || &error(&text('install_efile', "<tt>$pfile</tt>")); } &ui_print_unbuffered_header(undef, $text{'install_title'}, ""); # Set environment variables for($i=0; defined($in{"name_$i"}); $i++) { if ($in{"name_$i"} ne "") { $ENV{$in{"name_$i"}} = $in{"value_$i"}; } } # Go through all the modules @mods = split(/\0/, $in{'mod'}); @dirs = split(/\0/, $in{'dir'}); $perl_path = &get_perl_path(); for($i=0; $i<@mods; $i++) { print &text('install_doing_'.$in{'act'}, "<tt>$mods[$i]</tt>"),"<p>\n"; # Untar the perl module $mod_dir = &transname($dirs[$i]); ($mod_par = $mod_dir) =~ s/\/[^\/]+$//; system("rm -rf $mod_dir >/dev/null 2>&1"); &show_output($text{'install_untar'}, $mod_par, "gunzip -c $pfile[$i] | tar xvf -"); if (-r "$mod_dir/Makefile.PL") { # Run Makefile.PL and make &show_output($text{'install_make'}, $mod_dir, "$perl_path Makefile.PL $in{'args'} && make") || &build_error(); # Run make test (if requested) if ($in{'act'} == 1 || $in{'act'} == 3) { &show_output($text{'install_test'}, $mod_dir, "make test") || &build_error(); } # Run make install (if requested) if ($in{'act'} == 2 || $in{'act'} == 3) { &show_output($text{'install_install'}, $mod_dir, "make install") || &build_error(); } } else { # Run Build.PL and Build &show_output($text{'install_make'}, $mod_dir, "$perl_path Build.PL $in{'args'} && ./Build") || &build_error(); # Run Build test (if requested) if ($in{'act'} == 1 || $in{'act'} == 3) { &show_output($text{'install_test'}, $mod_dir, "./Build test") || &build_error(); } # Run Build install (if requested) if ($in{'act'} == 2 || $in{'act'} == 3) { &show_output($text{'install_install'}, $mod_dir, "./Build install") || &build_error(); } } # Clean up files print "<p>",&text('install_done_'.$in{'act'}, "<tt>$mods[$i]</tt>"), "<p>\n"; system("rm -rf $mod_dir") if ($mod_dir && -d $mod_dir); } &clean_up(1); # clean_up(success) sub clean_up { system("rm -rf $mod_dir") if ($mod_dir && -d $mod_dir); unlink(@pfile) if ($in{'need_unlink'} && (!$config{'save_partial'} || $_[0])); &ui_print_footer($in{'return'}, $in{'returndesc'} || $text{'index_return'}); } # show_output(desc, dir, command) sub show_output { local (%seen, $endless_loop); print &ui_table_start($_[0], undef, 2); local $msg = "<pre>".&text('install_exec', $_[2])."\n"; $msg .= (" " x 100)."\n"; open(CMD, "(cd $_[1] ; $_[2]) 2>&1 </dev/null |"); while(<CMD>) { if ($seen{$_}++ > 100) { $endless_loop = 1; $msg .= "\n$text{'install_loop'}\n"; last; } while(length($_) > 100) { s/^(.{100})//; $msg .= &html_escape($1)."\n"; } $msg .= &html_escape($_); } close(CMD); $msg .= "</pre>"; print &ui_table_row(undef, $msg, 2); print &ui_table_end(); return $? || $endless_loop ? 0 : 1; } sub build_error { print "<p>",&text('install_err', "<tt>$mods[$i]</tt>"),"<br>\n"; if ($in{'source'} == 3) { print &text('install_err2', "<tt>perl -MCPAN -e shell</tt>"),"\n"; } print "<p>\n"; if ($in{'need_unlink'} && $config{'save_partial'}) { # File needs to be deleted print &text('install_needunlink', "delete_file.cgi?". join("&", map { "file=".&urlize($_) } @pfile)),"<p>\n"; } &clean_up(0); exit; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 1.88 KB | 0644 |
|
cgi_args.pl | File | 124 B | 0755 |
|
config | File | 153 B | 0644 |
|
config-solaris | File | 202 B | 0644 |
|
config.info | File | 442 B | 0644 |
|
config.info.ca | File | 539 B | 0644 |
|
config.info.cs | File | 494 B | 0644 |
|
config.info.de | File | 544 B | 0644 |
|
config.info.es | File | 351 B | 0644 |
|
config.info.fr | File | 504 B | 0644 |
|
config.info.hr | File | 0 B | 0644 |
|
config.info.hu | File | 72 B | 0644 |
|
config.info.it | File | 517 B | 0644 |
|
config.info.ja | File | 611 B | 0644 |
|
config.info.ko | File | 457 B | 0644 |
|
config.info.ms | File | 473 B | 0644 |
|
config.info.nl | File | 476 B | 0644 |
|
config.info.no | File | 459 B | 0644 |
|
config.info.pl | File | 505 B | 0644 |
|
config.info.ru | File | 292 B | 0644 |
|
config.info.sv | File | 76 B | 0644 |
|
config.info.uk | File | 305 B | 0644 |
|
config.info.zh | File | 244 B | 0644 |
|
config.info.zh_TW | File | 224 B | 0644 |
|
cpan-lib.pl | File | 11.04 KB | 0755 |
|
cpan.cgi | File | 3.36 KB | 0755 |
|
delete_file.cgi | File | 312 B | 0755 |
|
download.cgi | File | 10.56 KB | 0755 |
|
edit_mod.cgi | File | 2.35 KB | 0755 |
|
index.cgi | File | 4.28 KB | 0755 |
|
install.cgi | File | 3.61 KB | 0755 |
|
module.info | File | 160 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 127 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 178 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 185 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 201 B | 0644 |
|
module.info.ca | File | 124 B | 0644 |
|
module.info.ca.auto | File | 13 B | 0644 |
|
module.info.cs | File | 21 B | 0644 |
|
module.info.cs.auto | File | 122 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 129 B | 0644 |
|
module.info.de | File | 126 B | 0644 |
|
module.info.de.auto | File | 13 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 216 B | 0644 |
|
module.info.es | File | 32 B | 0644 |
|
module.info.es.auto | File | 104 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 134 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 224 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 114 B | 0644 |
|
module.info.fr | File | 28 B | 0644 |
|
module.info.fr.auto | File | 115 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 155 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 134 B | 0644 |
|
module.info.hu | File | 21 B | 0644 |
|
module.info.hu.auto | File | 121 B | 0644 |
|
module.info.it | File | 20 B | 0644 |
|
module.info.it.auto | File | 107 B | 0644 |
|
module.info.ja | File | 29 B | 0644 |
|
module.info.ja.auto | File | 171 B | 0644 |
|
module.info.ko | File | 20 B | 0644 |
|
module.info.ko.auto | File | 110 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 140 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 121 B | 0644 |
|
module.info.ms | File | 109 B | 0644 |
|
module.info.ms.auto | File | 13 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 126 B | 0644 |
|
module.info.nl | File | 28 B | 0644 |
|
module.info.nl.auto | File | 114 B | 0644 |
|
module.info.no | File | 21 B | 0644 |
|
module.info.no.auto | File | 109 B | 0644 |
|
module.info.pl | File | 111 B | 0644 |
|
module.info.pl.auto | File | 13 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 132 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 141 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 127 B | 0644 |
|
module.info.ru | File | 26 B | 0644 |
|
module.info.ru.auto | File | 165 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 149 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 112 B | 0644 |
|
module.info.sv | File | 21 B | 0644 |
|
module.info.sv.auto | File | 101 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 226 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 139 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 185 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 214 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 164 B | 0644 |
|
module.info.zh | File | 20 B | 0644 |
|
module.info.zh.auto | File | 93 B | 0644 |
|
module.info.zh_TW | File | 22 B | 0644 |
|
module.info.zh_TW.auto | File | 99 B | 0644 |
|
postinstall.pl | File | 239 B | 0755 |
|
uninstall.cgi | File | 1.16 KB | 0755 |
|
uninstall_mods.cgi | File | 1.33 KB | 0755 |
|