Browse code

Merge "Add is_package_installed function to know if a package is installed"

Jenkins authored on 2012/09/13 01:29:07
Showing 3 changed files
... ...
@@ -548,6 +548,26 @@ function install_package() {
548 548
 }
549 549
 
550 550
 
551
+# Distro-agnostic function to tell if a package is installed
552
+# is_package_installed package [package ...]
553
+function is_package_installed() {
554
+    if [[ -z "$@" ]]; then
555
+        return 1
556
+    fi
557
+
558
+    if [[ -z "$os_PACKAGE" ]]; then
559
+        GetOSVersion
560
+    fi
561
+    if [[ "$os_PACKAGE" = "deb" ]]; then
562
+        dpkg -l "$@" > /dev/null
563
+        return $?
564
+    else
565
+        rpm --quiet -q "$@"
566
+        return $?
567
+    fi
568
+}
569
+
570
+
551 571
 # Test if the named environment variable is set and not zero length
552 572
 # is_set env-var
553 573
 function is_set() {
... ...
@@ -182,11 +182,7 @@ if [[ $EUID -eq 0 ]]; then
182 182
     sleep $ROOTSLEEP
183 183
 
184 184
     # Give the non-root user the ability to run as **root** via ``sudo``
185
-    if [[ "$os_PACKAGE" = "deb" ]]; then
186
-        dpkg -l sudo || install_package sudo
187
-    else
188
-        rpm -qa | grep sudo || install_package sudo
189
-    fi
185
+    is_package_installed sudo || install_package sudo
190 186
     if ! getent group stack >/dev/null; then
191 187
         echo "Creating a group called stack"
192 188
         groupadd stack
... ...
@@ -215,12 +211,7 @@ if [[ $EUID -eq 0 ]]; then
215 215
     exit 1
216 216
 else
217 217
     # We're not **root**, make sure ``sudo`` is available
218
-    if [[ "$os_PACKAGE" = "deb" ]]; then
219
-        CHECK_SUDO_CMD="dpkg -l sudo"
220
-    else
221
-        CHECK_SUDO_CMD="rpm -q sudo"
222
-    fi
223
-    $CHECK_SUDO_CMD || die "Sudo is required.  Re-run stack.sh as root ONE TIME ONLY to set up sudo."
218
+    is_package_installed sudo || die "Sudo is required.  Re-run stack.sh as root ONE TIME ONLY to set up sudo."
224 219
 
225 220
     # UEC images ``/etc/sudoers`` does not have a ``#includedir``, add one
226 221
     sudo grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers ||
... ...
@@ -239,3 +239,44 @@ test_disable_negated_services 'a,-a' ''
239 239
 test_disable_negated_services 'b,a,-a' 'b'
240 240
 test_disable_negated_services 'a,b,-a' 'b'
241 241
 test_disable_negated_services 'a,-a,b' 'b'
242
+
243
+
244
+echo "Testing is_package_installed()"
245
+
246
+if [[ -z "$os_PACKAGE" ]]; then
247
+    GetOSVersion
248
+fi
249
+
250
+if [[ "$os_PACKAGE" = "deb" ]]; then
251
+    is_package_installed dpkg
252
+    VAL=$?
253
+else
254
+    is_package_installed rpm
255
+    VAL=$?
256
+fi
257
+if [[ "$VAL" -eq 0 ]]; then
258
+    echo "OK"
259
+else
260
+    echo "is_package_installed() on existing package failed"
261
+fi
262
+
263
+if [[ "$os_PACKAGE" = "deb" ]]; then
264
+    is_package_installed dpkg bash
265
+    VAL=$?
266
+else
267
+    is_package_installed rpm bash
268
+    VAL=$?
269
+fi
270
+if [[ "$VAL" -eq 0 ]]; then
271
+    echo "OK"
272
+else
273
+    echo "is_package_installed() on more than one existing package failed"
274
+fi
275
+
276
+is_package_installed zzzZZZzzz
277
+VAL=$?
278
+if [[ "$VAL" -ne 0 ]]; then
279
+    echo "OK"
280
+else
281
+    echo "is_package_installed() on non-existing package failed"
282
+fi