Package rosdep :: Module gentoo
[frames] | no frames]

Source Code for Module rosdep.gentoo

 1  #!/usr/bin/env python 
 2  # Copyright (c) 2009, Willow Garage, Inc. 
 3  # All rights reserved. 
 4  #  
 5  # Redistribution and use in source and binary forms, with or without 
 6  # modification, are permitted provided that the following conditions are met: 
 7  #  
 8  #     * Redistributions of source code must retain the above copyright 
 9  #       notice, this list of conditions and the following disclaimer. 
10  #     * Redistributions in binary form must reproduce the above copyright 
11  #       notice, this list of conditions and the following disclaimer in the 
12  #       documentation and/or other materials provided with the distribution. 
13  #     * Neither the name of the Willow Garage, Inc. nor the names of its 
14  #       contributors may be used to endorse or promote products derived from 
15  #       this software without specific prior written permission. 
16  #  
17  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
18  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
19  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
20  # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
21  # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
22  # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
23  # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
24  # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
25  # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
26  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
27  # POSSIBILITY OF SUCH DAMAGE. 
28   
29  from __future__ import with_statement 
30  import os.path 
31  import roslib.os_detect 
32  import subprocess 
33   
34  import rosdep.base_rosdep 
35   
36  # Determine whether package p needs to be installed 
37 -def equery_detect(p):
38 cmd = ['equery', '-q', 'l', p] 39 pop = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 40 (std_out, std_err) = pop.communicate() 41 42 return (std_out.count("") == 1)
43 44 # Check equery for existence and compatibility (gentoolkit 0.3)
45 -def equery_available():
46 if not os.path.exists("/usr/bin/equery"): 47 return False 48 49 cmd = ['equery', '-V'] 50 pop = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 51 (stdout, stderr) = pop.communicate() 52 53 return "0.3." == stdout[8:12]
54 55 56 ###### Gentoo SPECIALIZATION #########################
57 -class Gentoo(roslib.os_detect.Gentoo, rosdep.base_rosdep.RosdepBaseOS):
58 - def strip_detected_packages(self, packages):
59 if equery_available(): 60 return [p for p in packages if equery_detect(p)] 61 else: 62 return packages
63
64 - def generate_package_install_command(self, packages, default_yes):
65 if len(packages) == 0: 66 return "# Package prerequisites satisfied - nothing to do" 67 elif equery_available(): 68 return "#Packages\nsudo emerge " + ' '.join(packages) 69 else: 70 return "#Packages\nsudo emerge -u " + ' '.join(packages)
71 72 ###### END Gentoo SPECIALIZATION ######################## 73