inspect: Add detection of Gentoo.
authorRichard Jones <rjones@redhat.com>
Fri, 29 Oct 2010 09:53:05 +0000 (10:53 +0100)
committerRichard Jones <rjones@redhat.com>
Fri, 29 Oct 2010 09:58:20 +0000 (10:58 +0100)
generator/generator_actions.ml
inspector/virt-inspector
src/guestfs-internal.h
src/inspect.c

index 6c21227..5aa5359 100644 (file)
@@ -791,6 +791,10 @@ Debian or a Debian-derived distro such as Ubuntu.
 
 Fedora.
 
+=item \"gentoo\"
+
+Gentoo.
+
 =item \"pardus\"
 
 Pardus.
index 9309b27..fbe05d8 100755 (executable)
@@ -389,6 +389,10 @@ sub output_applications
             $package_format = "rpm";
             $package_management = "yum";
         }
+        elsif ($distro eq "gentoo") {
+            $package_format = "ebuild";
+            $package_management = "portage";
+        }
         elsif ($distro eq "pardus") {
             $package_format = "pisi";
             $package_management = "pisi";
index e1723a4..6a4a422 100644 (file)
@@ -168,6 +168,7 @@ enum inspect_os_distro {
   OS_DISTRO_WINDOWS,
   OS_DISTRO_PARDUS,
   OS_DISTRO_ARCHLINUX,
+  OS_DISTRO_GENTOO,
 };
 
 struct inspect_fs {
index dbb194b..6e22360 100644 (file)
@@ -738,6 +738,15 @@ check_linux_root (guestfs_h *g, struct inspect_fs *fs)
      * determine the actual release or product string.
      */
   }
+  else if (guestfs_exists (g, "/etc/gentoo-release") > 0) {
+    fs->distro = OS_DISTRO_GENTOO;
+
+    if (parse_release_file (g, fs, "/etc/gentoo-release") == -1)
+      return -1;
+
+    if (parse_major_minor (g, fs) == -1)
+      return -1;
+  }
 
   /* Determine the architecture. */
   const char *binaries[] =
@@ -1255,6 +1264,7 @@ guestfs__inspect_get_distro (guestfs_h *g, const char *root)
   case OS_DISTRO_ARCHLINUX: ret = safe_strdup (g, "archlinux"); break;
   case OS_DISTRO_DEBIAN: ret = safe_strdup (g, "debian"); break;
   case OS_DISTRO_FEDORA: ret = safe_strdup (g, "fedora"); break;
+  case OS_DISTRO_GENTOO: ret = safe_strdup (g, "gentoo"); break;
   case OS_DISTRO_PARDUS: ret = safe_strdup (g, "pardus"); break;
   case OS_DISTRO_REDHAT_BASED: ret = safe_strdup (g, "redhat-based"); break;
   case OS_DISTRO_RHEL: ret = safe_strdup (g, "rhel"); break;