summaryrefslogtreecommitdiffstats
path: root/etc/inc/pkg-utils.inc
diff options
context:
space:
mode:
authorRenato Botelho <garga@FreeBSD.org>2014-02-13 09:31:58 -0200
committerRenato Botelho <garga@FreeBSD.org>2014-02-13 09:32:25 -0200
commit6635f5b90d317247e7c61ba0d3ce81c3080a0efc (patch)
tree922fafbd7207aa2e78f94dbf9745b4dcc6f6d4a4 /etc/inc/pkg-utils.inc
parent8f38bc5716636aa462399e76a928b7e79beefd06 (diff)
downloadpfsense-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.inc35
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;
OpenPOWER on IntegriCloud