[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 1/5] raisin: Handle aliases for packages, add pciutils-dev / libpci-dev alias



It's not uncommon for packages to be renamed, and for package managers
to know the translation from old packages to new packages.  For
example:

# apt-get install pciutils-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libpci-dev' instead of 'pciutils-dev'
libpci-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

So the command succeeds, but the subsequent package check still fails,
cince "pciutils-dev" wasn't actually installed.  This means that even
after running "install-builddep", "build" will prompt you to install the
old package every time.

Allow components to specify known aliases for a given package by
speficying a a|b|c.  Check-package will check consecutively for a, b,
and c; if it finds any of them, it will stop looking and install
nothing.  If it finds nothing, it will add the first package to the
missing_packages list.

Assuming that package managers are backwards-compatible, components
should put the oldest known package first for maximum compatibility.

Also add such an alias for pciutils-dev|libpci-dev in qemu_traditional

Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
---
 components/qemu_traditional |  2 +-
 lib/common-functions.sh     | 25 ++++++++++++++++++++-----
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/components/qemu_traditional b/components/qemu_traditional
index 3150c3e..d73c6b8 100644
--- a/components/qemu_traditional
+++ b/components/qemu_traditional
@@ -10,7 +10,7 @@ function qemu_traditional_skip() {
 }
 
 function qemu_traditional_check_package() {
-    local DEP_Debian_common="build-essential zlib1g-dev pciutils-dev 
pkg-config \
+    local DEP_Debian_common="build-essential zlib1g-dev 
pciutils-dev|libpci-dev pkg-config \
               libncurses5-dev"
     local DEP_Debian_x86_32="$DEP_Debian_common"
     local DEP_Debian_x86_64="$DEP_Debian_common"
diff --git a/lib/common-functions.sh b/lib/common-functions.sh
index 03642ae..a389054 100644
--- a/lib/common-functions.sh
+++ b/lib/common-functions.sh
@@ -233,14 +233,29 @@ function _install-package-unknown() {
 
 # Modifies inherited variable "missing"
 function check-package() {
+    local OIFS=${IFS}
+    local p
+    local x
+    
     for p in $*
     do
-        if ! _check-package-${PKGTYPE} $p
-        then
-            missing+=("$p")
-        fi
+       local found=false
+       IFS='|'
+       for x in $p
+       do
+            if _check-package-${PKGTYPE} $x
+            then
+               found=true
+            fi
+       done
+       IFS="$OIFS"
+       if ! $found
+       then
+           # Add the first of the aliases, on the assumption that the package
+           # manager will be backwards-compatible
+           missing+=("${p%%|*}")
+       fi
     done
-
 }
 
 function install-package() {
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.