summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Scherer <misc@zarb.org>2011-10-14 01:05:03 +0200
committerRichard W.M. Jones <rjones@redhat.com>2011-10-14 10:01:44 +0100
commit5332515db3ed87716d702ef2b973816a73ab5702 (patch)
tree4990e7c7782466768c35a80aef0dbfe8cc4e2cc7
parent1d0683964f996b24b8fcf5bce7611a98443344f3 (diff)
downloadlibguestfs-5332515db3ed87716d702ef2b973816a73ab5702.tar.gz
libguestfs-5332515db3ed87716d702ef2b973816a73ab5702.tar.xz
libguestfs-5332515db3ed87716d702ef2b973816a73ab5702.zip
Add Opensuse and zypper detection support
This would also erronously detect SLES as Opensuse.
-rw-r--r--generator/generator_actions.ml6
-rw-r--r--src/guestfs-internal.h2
-rw-r--r--src/inspect.c2
-rw-r--r--src/inspect_fs.c5
-rw-r--r--src/inspect_fs_unix.c10
5 files changed, 24 insertions, 1 deletions
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index 6c8a14da..60fca9b7 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -814,6 +814,10 @@ Mandriva.
MeeGo.
+=item \"opensuse\"
+
+OpenSUSE.
+
=item \"pardus\"
Pardus.
@@ -1190,7 +1194,7 @@ a real packaging system (eg. Windows).
Possible strings include: C<yum>, C<up2date>,
C<apt> (for all Debian derivatives),
-C<portage>, C<pisi>, C<pacman>, C<urpmi>.
+C<portage>, C<pisi>, C<pacman>, C<urpmi>, C<zypper>.
Future versions of libguestfs may return other strings.
Please read L<guestfs(3)/INSPECTION> for more details.");
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index 58d06e59..cee3048a 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -275,6 +275,7 @@ enum inspect_os_distro {
OS_DISTRO_SCIENTIFIC_LINUX,
OS_DISTRO_TTYLINUX,
OS_DISTRO_MAGEIA,
+ OS_DISTRO_OPENSUSE,
};
enum inspect_os_package_format {
@@ -295,6 +296,7 @@ enum inspect_os_package_management {
OS_PACKAGE_MANAGEMENT_PORTAGE,
OS_PACKAGE_MANAGEMENT_PISI,
OS_PACKAGE_MANAGEMENT_URPMI,
+ OS_PACKAGE_MANAGEMENT_ZYPPER,
};
struct inspect_fs {
diff --git a/src/inspect.c b/src/inspect.c
index be06fde7..62cbc855 100644
--- a/src/inspect.c
+++ b/src/inspect.c
@@ -200,6 +200,7 @@ guestfs__inspect_get_distro (guestfs_h *g, const char *root)
case OS_DISTRO_MAGEIA: ret = safe_strdup (g, "mageia"); break;
case OS_DISTRO_MANDRIVA: ret = safe_strdup (g, "mandriva"); break;
case OS_DISTRO_MEEGO: ret = safe_strdup (g, "meego"); break;
+ case OS_DISTRO_OPENSUSE: ret = safe_strdup (g, "opensuse"); 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;
@@ -480,6 +481,7 @@ guestfs__inspect_get_package_management (guestfs_h *g, const char *root)
case OS_PACKAGE_MANAGEMENT_PORTAGE: ret = safe_strdup (g, "portage"); break;
case OS_PACKAGE_MANAGEMENT_PISI: ret = safe_strdup (g, "pisi"); break;
case OS_PACKAGE_MANAGEMENT_URPMI: ret = safe_strdup (g, "urpmi"); break;
+ case OS_PACKAGE_MANAGEMENT_ZYPPER: ret = safe_strdup (g, "zypper"); break;
case OS_PACKAGE_MANAGEMENT_UNKNOWN:
default:
ret = safe_strdup (g, "unknown");
diff --git a/src/inspect_fs.c b/src/inspect_fs.c
index 81b30082..25336265 100644
--- a/src/inspect_fs.c
+++ b/src/inspect_fs.c
@@ -363,6 +363,7 @@ check_package_format (guestfs_h *g, struct inspect_fs *fs)
case OS_DISTRO_RHEL:
case OS_DISTRO_MAGEIA:
case OS_DISTRO_MANDRIVA:
+ case OS_DISTRO_OPENSUSE:
case OS_DISTRO_CENTOS:
case OS_DISTRO_SCIENTIFIC_LINUX:
fs->package_format = OS_PACKAGE_FORMAT_RPM;
@@ -433,6 +434,10 @@ check_package_management (guestfs_h *g, struct inspect_fs *fs)
fs->package_management = OS_PACKAGE_MANAGEMENT_URPMI;
break;
+ case OS_DISTRO_OPENSUSE:
+ fs->package_management = OS_PACKAGE_MANAGEMENT_ZYPPER;
+ break;
+
case OS_DISTRO_SLACKWARE:
case OS_DISTRO_TTYLINUX:
case OS_DISTRO_WINDOWS:
diff --git a/src/inspect_fs_unix.c b/src/inspect_fs_unix.c
index 689fdb51..20c164ec 100644
--- a/src/inspect_fs_unix.c
+++ b/src/inspect_fs_unix.c
@@ -419,6 +419,16 @@ guestfs___check_linux_root (guestfs_h *g, struct inspect_fs *fs)
if (guestfs___parse_major_minor (g, fs) == -1)
return -1;
}
+ else if (guestfs_exists (g, "/etc/SuSE-release") > 0) {
+ fs->distro = OS_DISTRO_OPENSUSE;
+
+ if (parse_release_file (g, fs, "/etc/SuSE-release") == -1)
+ return -1;
+
+ if (guestfs___parse_major_minor (g, fs) == -1)
+ return -1;
+ }
+
skip_release_checks:;