rosmake: removing whitelist functionality. Implementing <catkin/> tag as ros nobuild
This commit is contained in:
parent
c49329b595
commit
f251738242
|
@ -289,8 +289,6 @@ class RosMakeAll:
|
|||
self.start_time = time.time()
|
||||
self.log_dir = ""
|
||||
self.logging_enabled = True
|
||||
self.obey_whitelist = False
|
||||
self.obey_whitelist_recursively = False
|
||||
|
||||
def num_packages_built(self):
|
||||
"""
|
||||
|
@ -395,7 +393,7 @@ class RosMakeAll:
|
|||
with self._result_lock:
|
||||
failed_packages = [j for j in self.result[argument] if not self.result[argument][j] == True]
|
||||
|
||||
(buildable, error, why) = self.flag_tracker.can_build(p, self.obey_whitelist, self.obey_whitelist_recursively, self.skip_blacklist, failed_packages)
|
||||
(buildable, error, why) = self.flag_tracker.can_build(p, self.skip_blacklist, failed_packages)
|
||||
if buildable or self.robust_build:
|
||||
start_time = time.time()
|
||||
(returncode, pstd_out) = self._build_package(p, argument)
|
||||
|
@ -625,10 +623,6 @@ class RosMakeAll:
|
|||
default=False, action="store_true",
|
||||
help="deprecated option. it will do nothing, please use platform declarations and --require-platform instead")
|
||||
|
||||
parser.add_option("--require-platform", dest="obey_whitelist",
|
||||
action="store_true", help="do not build a package unless it is marked as supported on this platform")
|
||||
parser.add_option("--require-platform-recursive", dest="obey_whitelist_recursively",
|
||||
action="store_true", help="do not build a package unless it is marked as supported on this platform, and all dependents are also marked")
|
||||
parser.add_option("--status-rate", dest="status_update_rate",
|
||||
action="store", help="How fast to update the status bar in Hz. Default: 5Hz")
|
||||
|
||||
|
@ -663,10 +657,6 @@ class RosMakeAll:
|
|||
if options.skip_blacklist_osx:
|
||||
self.printer.print_all("Option --skip-blacklist-osx is deprecated. It will do nothing, please use platform declarations and --require-platform instead");
|
||||
self.logging_enabled = options.logging_enabled
|
||||
if options.obey_whitelist or options.obey_whitelist_recursively:
|
||||
self.obey_whitelist = True
|
||||
if options.obey_whitelist_recursively:
|
||||
self.obey_whitelist_recursively = True
|
||||
|
||||
# pass through verbosity options
|
||||
self.printer.full_verbose = options.full_verbose
|
||||
|
@ -769,7 +759,7 @@ class RosMakeAll:
|
|||
# make sure all dependencies are satisfied and if not warn
|
||||
buildable_packages = []
|
||||
for p in required_packages:
|
||||
(buildable, error, str) = self.flag_tracker.can_build(p, self.obey_whitelist, self.obey_whitelist_recursively, self.skip_blacklist, [], False)
|
||||
(buildable, error, str) = self.flag_tracker.can_build(p, self.skip_blacklist, [], False)
|
||||
if buildable:
|
||||
buildable_packages.append(p)
|
||||
|
||||
|
|
|
@ -74,14 +74,8 @@ class PackageFlagTracker:
|
|||
self.nomakefile = set()
|
||||
self.packages_tested = set()
|
||||
self.dependency_tracker = dependency_tracker
|
||||
self.paths = {}
|
||||
self.build_failed = set()
|
||||
|
||||
def get_path(self, package):
|
||||
if not package in self.paths:
|
||||
self.paths[package] = self.rospack.get_path(package)
|
||||
return self.paths[package]
|
||||
|
||||
def register_blacklisted(self, blacklisted_package, dependent_package):
|
||||
if dependent_package in self.blacklisted.keys():
|
||||
self.blacklisted[dependent_package].append(blacklisted_package)
|
||||
|
@ -96,21 +90,27 @@ class PackageFlagTracker:
|
|||
|
||||
def _check_package_flags(self, package):
|
||||
if package in self.packages_tested:
|
||||
return
|
||||
if os.path.exists(os.path.join(self.get_path(package), "ROS_BUILD_BLACKLIST")):
|
||||
return
|
||||
rospack = self.rospack
|
||||
path = self.get_path(package)
|
||||
|
||||
if os.path.exists(os.path.join(path, "ROS_BUILD_BLACKLIST")):
|
||||
self.register_blacklisted(package, package)
|
||||
for p in self.rospack.get_depends_on(package, implicit=True):
|
||||
for p in rospack.get_depends_on(package, implicit=True):
|
||||
self.register_blacklisted(package, p)
|
||||
|
||||
if os.path.exists(os.path.join(self.get_path(package), "ROS_BUILD_BLACKLIST_OSX")):
|
||||
if os.path.exists(os.path.join(path, "ROS_BUILD_BLACKLIST_OSX")):
|
||||
self.register_blacklisted_osx(package, package)
|
||||
for p in self.rospack.get_depends_on(package, implicit=True):
|
||||
for p in rospack.get_depends_on(package, implicit=True):
|
||||
self.register_blacklisted_osx(package, p)
|
||||
|
||||
if os.path.exists(os.path.join(self.get_path(package), "ROS_NOBUILD")):
|
||||
# NO_BUILD if marker file or catkin attribute in manifest
|
||||
if os.path.exists(os.path.join(path, "ROS_NOBUILD")):
|
||||
self.nobuild.add(package)
|
||||
if self.rospack.get_manifest(package).is_catkin:
|
||||
self.nobuild.add(package)
|
||||
|
||||
if not os.path.exists(os.path.join(self.get_path(package), "Makefile")):
|
||||
if not os.path.exists(os.path.join(path, "Makefile")):
|
||||
self.nomakefile.add(package)
|
||||
|
||||
self.packages_tested.add(package)
|
||||
|
@ -166,7 +166,7 @@ class PackageFlagTracker:
|
|||
def add_nobuild(self, package):
|
||||
if self.has_nobuild(package):
|
||||
return True
|
||||
with open(os.path.join(self.get_path(package), "ROS_NOBUILD"), 'w') as f:
|
||||
with open(os.path.join(self.rospack.get_path(package), "ROS_NOBUILD"), 'w') as f:
|
||||
f.write("created by rosmake to mark as installed")
|
||||
self.nobuild.add(package)
|
||||
return True
|
||||
|
@ -176,7 +176,7 @@ class PackageFlagTracker:
|
|||
if not self.has_nobuild(package):
|
||||
return True
|
||||
try:
|
||||
os.remove(os.path.join(self.get_path(package), "ROS_NOBUILD"))
|
||||
os.remove(os.path.join(self.rospack.get_path(package), "ROS_NOBUILD"))
|
||||
self.nobuild.remove(package)
|
||||
return True
|
||||
except:
|
||||
|
@ -188,10 +188,7 @@ class PackageFlagTracker:
|
|||
def build_failed(self, package):
|
||||
return package in self.build_failed
|
||||
|
||||
def is_whitelisted(self, package):
|
||||
return platform_supported(self.rospack, package, self.os_name, self.os_version)
|
||||
|
||||
def can_build(self, pkg, use_whitelist = False, use_whitelist_recursive = False, use_blacklist = False, failed_packages = [], use_makefile = True):
|
||||
def can_build(self, pkg, use_blacklist = False, failed_packages = [], use_makefile = True):
|
||||
"""
|
||||
Return (buildable, error, "reason why not")
|
||||
"""
|
||||
|
@ -206,19 +203,6 @@ class PackageFlagTracker:
|
|||
output_str += " Package %s cannot be built for dependent package(s) %s failed. \n"%(pkg, previously_failed_pkgs)
|
||||
|
||||
|
||||
if use_whitelist:
|
||||
non_whitelisted_packages = []
|
||||
if not self.is_whitelisted(pkg):
|
||||
buildable = False
|
||||
output_state = False
|
||||
non_whitelisted_packages.append(pkg)
|
||||
if use_whitelist_recursive:
|
||||
for p in [pk for pk in self.dependency_tracker.get_deps(pkg) if not self.is_whitelisted(pk)]:
|
||||
non_whitelisted_packages.append(p)
|
||||
if len(non_whitelisted_packages) > 0:
|
||||
output_state = False
|
||||
output_str += " Package(s) %s are not supported on this OS\n"%non_whitelisted_packages
|
||||
|
||||
if use_blacklist:
|
||||
black_listed_dependents = self.is_blacklisted(pkg)
|
||||
if len(black_listed_dependents) > 0:
|
||||
|
|
Loading…
Reference in New Issue