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

index 4fadd17..6c21227 100644 (file)
@@ -779,6 +779,10 @@ Currently defined distros are:
 
 =over 4
 
+=item \"archlinux\"
+
+Arch Linux.
+
 =item \"debian\"
 
 Debian or a Debian-derived distro such as Ubuntu.
index 4936068..9309b27 100755 (executable)
@@ -377,7 +377,11 @@ sub output_applications
     # and package management.
     my ($package_format, $package_management);
     if (defined $distro) {
-        if ($distro eq "debian") {
+        if ($distro eq "archlinux") {
+            $package_format = "pacman";
+            $package_management = "pacman";
+        }
+        elsif ($distro eq "debian") {
             $package_format = "deb";
             $package_management = "apt";
         }
index 529aa7d..e1723a4 100644 (file)
@@ -167,6 +167,7 @@ enum inspect_os_distro {
   OS_DISTRO_RHEL,
   OS_DISTRO_WINDOWS,
   OS_DISTRO_PARDUS,
+  OS_DISTRO_ARCHLINUX,
 };
 
 struct inspect_fs {
index 8e42408..dbb194b 100644 (file)
@@ -731,6 +731,13 @@ check_linux_root (guestfs_h *g, struct inspect_fs *fs)
     if (parse_major_minor (g, fs) == -1)
       return -1;
   }
+  else if (guestfs_exists (g, "/etc/arch-release") > 0) {
+    fs->distro = OS_DISTRO_ARCHLINUX;
+
+    /* /etc/arch-release file is empty and I can't see a way to
+     * determine the actual release or product string.
+     */
+  }
 
   /* Determine the architecture. */
   const char *binaries[] =
@@ -1245,6 +1252,7 @@ guestfs__inspect_get_distro (guestfs_h *g, const char *root)
 
   char *ret;
   switch (fs->distro) {
+  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_PARDUS: ret = safe_strdup (g, "pardus"); break;