diff options
author | Renato Botelho <garga@FreeBSD.org> | 2014-02-13 09:31:58 -0200 |
---|---|---|
committer | Renato Botelho <garga@FreeBSD.org> | 2014-02-13 09:32:25 -0200 |
commit | 6635f5b90d317247e7c61ba0d3ce81c3080a0efc (patch) | |
tree | 922fafbd7207aa2e78f94dbf9745b4dcc6f6d4a4 /etc/inc/pkg-utils.inc | |
parent | 8f38bc5716636aa462399e76a928b7e79beefd06 (diff) | |
download | pfsense-6635f5b90d317247e7c61ba0d3ce81c3080a0efc.zip pfsense-6635f5b90d317247e7c61ba0d3ce81c3080a0efc.tar.gz |
Abort installation when pbi_add fails
Diffstat (limited to 'etc/inc/pkg-utils.inc')
-rw-r--r-- | etc/inc/pkg-utils.inc | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc index 5697413..dc4ac94 100644 --- a/etc/inc/pkg-utils.inc +++ b/etc/inc/pkg-utils.inc @@ -567,21 +567,30 @@ function pkg_fetch_recursive($pkgname, $filename, $dependlevel = 0, $base_url = if (isset($config['system']['pkg_nochecksig'])) $no_checksig = "--no-checksig"; - exec("/usr/local/sbin/pbi_add " . $pkgstaging . " -f -v {$no_checksig} " . escapeshellarg($fetchto) . " 2>&1", $pkgaddout); - pkg_debug($pkgname . " " . print_r($pkgaddout, true) . "\npbi_add successfully completed.\n"); - setup_library_paths(); - exec("/usr/local/sbin/pbi_info " . escapeshellarg(preg_replace('/\.pbi$/','',$filename)) . " | /usr/bin/awk '/Prefix/ {print $2}'",$pbidir); - $pbidir = $pbidir[0]; - $linkdirs = array('bin','sbin'); - foreach($linkdirs as $dir) { - if(is_dir("{$pbidir}/{$dir}")) { + exec("/usr/local/sbin/pbi_add " . $pkgstaging . " -f -v {$no_checksig} " . escapeshellarg($fetchto) . " 2>&1", $pkgaddout, $rc); + pkg_debug($pkgname . " " . print_r($pkgaddout, true) . "\n"); + if ($rc == 0) { + setup_library_paths(); + exec("/usr/local/sbin/pbi_info " . escapeshellarg(preg_replace('/\.pbi$/','',$filename)) . " | /usr/bin/awk '/Prefix/ {print $2}'",$pbidir); + $pbidir = $pbidir[0]; + foreach(array('bin', 'sbin') as $dir) { + if(!is_dir("{$pbidir}/{$dir}")) + continue; + $files = scandir("{$pbidir}/{$dir}"); - foreach($files as $f) { - if(!file_exists("/usr/local/{$dir}/{$f}")) { - symlink("{$pbidir}/{$dir}/{$f}","/usr/local/{$dir}/{$f}"); - } - } + foreach($files as $f) + if(!file_exists("/usr/local/{$dir}/{$f}")) + @symlink("{$pbidir}/{$dir}/{$f}","/usr/local/{$dir}/{$f}"); } + pkg_debug("pbi_add successfully completed.\n"); + } else { + if (is_array($pkgaddout)) + foreach ($pkgaddout as $line) + $static_output .= " " . $line .= "\n"; + + update_output_window($static_output); + pkg_debug("pbi_add failed.\n"); + return false; } } return true; |