From 672956d15c12bb60ed411e4d5575fbbd55adebcd Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Fri, 24 Apr 2009 22:20:18 +0000 Subject: [PATCH] Support pkgutil for blastwave packages, where available --- software/CHANGELOG | 2 ++ software/csw-lib.pl | 20 +++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/software/CHANGELOG b/software/CHANGELOG index 5c1dc4ae4..e8ededf07 100644 --- a/software/CHANGELOG +++ b/software/CHANGELOG @@ -27,3 +27,5 @@ Added an Upgrade All button for CSW packages. Added a Module Config option to not use any update system, even if YUM or APT are installed. Added the function package_files for other modules to call, when only a list of files in some package is needed. The selected package and update systems are now checked when the module is opened, and an error message displayed if any needed commands are missing. +---- Changes since 1.480 ---- +On Solaris, added support for the pkgutil command from Blastwave for installing packages, which replaces the old pkg-get. diff --git a/software/csw-lib.pl b/software/csw-lib.pl index 44b070e48..05342de7b 100644 --- a/software/csw-lib.pl +++ b/software/csw-lib.pl @@ -1,8 +1,10 @@ # csw-lib.pl # Functions for installing packages from Blastwave -$pkg_get = -x "/opt/csw/bin/pkg-get" ? "/opt/csw/bin/pkg-get" - : &has_command("pkg-get"); +$pkg_get = -x "/opt/csw/bin/pkgutil" ? "/opt/csw/bin/pkgutil" : + -x "/opt/csw/bin/pkg-get" ? "/opt/csw/bin/pkg-get" : + &has_command("pkgutil") ? &has_command("pkgutil") : + &has_command("pkg-get"); sub list_update_system_commands { @@ -28,12 +30,14 @@ do { # Don't try the same update twice last; } + local $flag = $pkg_get =~ /pkgutil$/ ? "-y" : "-f"; print "",&text('csw_install', - "$pkg_get -i -f $update"),"

\n"; + "$pkg_get -i $flag $update"),"

\n"; $failed = 0; $retry = 0; print "

";
-	&open_execute_command(PKGGET, "$pkg_get -i -f ".quotemeta($update), 2);
+	&open_execute_command(PKGGET,
+		"$pkg_get -i $flag ".quotemeta($update), 2);
 	while() {
 		if (!/^\s*\d+\%\s+\[/) {
 			# Output everything except download lines
@@ -95,7 +99,13 @@ while() {
 	s/\r|\n//g;
 	s/#.*$//;
 	next if (/^\s*WARNING:/);
-	if (/^\s*(\S+)\s+(\S+)/) {
+	if (/^\s*(\S+)\s+(\S+)\s+(\d\S+)\s+([0-9\.]+)\s+(KB|MB|GB)/i) {
+		# New pkgutil format
+		push(@rv, { 'name' => $1, 'version' => $3,
+			    'select' => "$1-$3" });
+		}
+	elsif (/^\s*(\S+)\s+(\S+)/) {
+		# Old pkg-get format
 		push(@rv, { 'name' => $1, 'version' => $2,
 			    'select' => "$1-$2" });
 		}