summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-10-29 10:32:53 +0100
committerRichard Jones <rjones@redhat.com>2010-10-29 10:55:40 +0100
commitb4618fb060b40ba70f2be28b1b1ad625722a7edf (patch)
tree7d464a51c794cec36c22882946a95de439c3d04e
parent233530d3541dd67ce8fec7d9677cdf659c9d2900 (diff)
downloadlibguestfs-b4618fb060b40ba70f2be28b1b1ad625722a7edf.tar.gz
libguestfs-b4618fb060b40ba70f2be28b1b1ad625722a7edf.tar.xz
libguestfs-b4618fb060b40ba70f2be28b1b1ad625722a7edf.zip
inspect: Add detection of Arch Linux.
-rw-r--r--generator/generator_actions.ml4
-rwxr-xr-xinspector/virt-inspector6
-rw-r--r--src/guestfs-internal.h1
-rw-r--r--src/inspect.c8
4 files changed, 18 insertions, 1 deletions
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index 4fadd17b..6c21227f 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -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.
diff --git a/inspector/virt-inspector b/inspector/virt-inspector
index 49360688..9309b272 100755
--- a/inspector/virt-inspector
+++ b/inspector/virt-inspector
@@ -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";
}
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index 529aa7d6..e1723a44 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -167,6 +167,7 @@ enum inspect_os_distro {
OS_DISTRO_RHEL,
OS_DISTRO_WINDOWS,
OS_DISTRO_PARDUS,
+ OS_DISTRO_ARCHLINUX,
};
struct inspect_fs {
diff --git a/src/inspect.c b/src/inspect.c
index 8e42408e..dbb194b9 100644
--- a/src/inspect.c
+++ b/src/inspect.c
@@ -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;