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

Source Code for Module rosdep.freebsd

 1  #!/usr/bin/env python 
 2  # Copyright (c) 2010, 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  # Original from cygwin.py by Tingfan Wu tingfan@gmail.com 
30  # Modified for FreeBSD by Rene Ladan rene@freebsd.org 
31   
32  import os 
33  import roslib.os_detect 
34  import base_rosdep 
35   
36  ###### FreeBSD SPECIALIZATION ######################### 
37 -def port_detect(p):
38 import subprocess 39 if p == "builtin": 40 return True 41 # The next code is a lot of hassle, but there is no 42 # better way in FreeBSD using just the base tools 43 portname = p 44 if p == "gtk20": 45 portname = "gtk-2.\*" 46 elif p == "py-gtk2": 47 portname = "py26-gtk-2.\*" 48 elif p[:9] in ["autoconf2", "automake1"]: 49 portname = p[:8] + "-" + p[8] + "." + p[9:] + "\*" 50 elif p[:3] == "py-": 51 portname = "py26-" + p[3:] + "\*" 52 else: 53 portname = p + "-\*" 54 pop = subprocess.Popen("/usr/sbin/pkg_info -qE " + portname, shell=True) 55 return os.waitpid(pop.pid, 0)[1] == 0 # pkg_info -E returns 0 if pkg installed, 1 if not
56
57 -class FreeBSD(roslib.os_detect.FreeBSD, base_rosdep.RosdepBaseOS):
58 - def strip_detected_packages(self, packages):
59 return [p for p in packages if not port_detect(p)]
60
61 - def generate_package_install_command(self, packages, default_yes):
62 if not packages: 63 return "#No Packages to install" 64 if default_yes: 65 import sys 66 print >> sys.stderr, "pkg_add does not have a default_yes option, continuing without" 67 return "#Packages\nsudo /usr/sbin/pkg_add -r " + ' '.join(packages)
68 69 ###### END FreeBSD SPECIALIZATION ######################## 70