105 #ifndef ROSPACK_ROSPACK_H
106 #define ROSPACK_ROSPACK_H
108 #include <boost/tr1/unordered_set.hpp>
109 #include <boost/tr1/unordered_map.hpp>
116 #if 1 // def ROSPACK_API_BACKCOMPAT_V1
117 #include "rospack/rospack_backcompat.h"
132 class DirectoryCrawlRecord;
142 std::string manifest_name_;
143 std::string cache_name_;
148 std::vector<std::string> search_paths_;
149 std::tr1::unordered_set<std::string> dups_;
150 std::tr1::unordered_map<std::string, Stackage*> stackages_;
151 Stackage* findWithRecrawl(
const std::string& name);
152 void log(
const std::string& level,
const std::string& msg,
bool append_errno);
153 void addStackage(
const std::string& path);
154 void crawlDetail(
const std::string& path,
157 bool collect_profile_data,
158 std::vector<DirectoryCrawlRecord*>& profile_data,
159 std::tr1::unordered_set<std::string>& profile_hash);
160 bool depsOnDetail(
const std::string& name,
bool direct,
161 std::vector<Stackage*>&
deps);
162 bool depsDetail(
const std::string& name,
bool direct,
163 std::vector<Stackage*>& deps);
164 bool isStackage(
const std::string& path);
165 void loadManifest(Stackage* stackage);
166 void computeDeps(Stackage* stackage,
bool ignore_errors=
false);
167 void gatherDeps(Stackage* stackage,
bool direct,
168 traversal_order_t order,
169 std::vector<Stackage*>& deps);
170 void gatherDepsFull(Stackage* stackage,
bool direct,
171 traversal_order_t order,
int depth,
172 std::tr1::unordered_set<Stackage*>& deps_hash,
173 std::vector<Stackage*>& deps,
174 bool get_indented_deps,
175 std::vector<std::string>& indented_deps);
176 std::string getCachePath();
179 FILE* validateCache();
180 bool expandExportString(Stackage* stackage,
181 const std::string& instring,
182 std::string& outstring);
183 void depsWhyDetail(Stackage* from,
185 std::list<std::list<Stackage*> >& acc_list);
197 const std::string& cache_name,
198 const std::string& name,
199 const std::string& tag);
211 virtual const char*
usage() {
return ""; }
223 void crawl(std::vector<std::string> search_path,
bool force);
258 bool find(
const std::string& name, std::string& path);
265 bool contents(
const std::string& name, std::set<std::string>& packages);
273 bool contains(
const std::string& name,
281 void list(std::set<std::pair<std::string, std::string> >&
list);
298 bool deps(
const std::string& name,
bool direct, std::vector<std::string>& deps);
309 bool depsOn(
const std::string& name,
bool direct,
310 std::vector<std::string>& deps);
323 std::vector<std::string>& manifests);
337 bool depsMsgSrv(
const std::string& name,
bool direct,
338 std::vector<std::string>& gens);
360 bool depsIndent(
const std::string& name,
bool direct,
361 std::vector<std::string>& deps);
378 bool depsWhy(
const std::string& from,
379 const std::string& to,
380 std::string& output);
392 bool rosdeps(
const std::string& name,
bool direct,
393 std::set<std::string>&
rosdeps);
406 bool vcs(
const std::string& name,
bool direct,
407 std::vector<std::string>&
vcs);
420 bool exports(
const std::string& name,
const std::string& lang,
421 const std::string& attrib,
bool deps_only,
422 std::vector<std::string>& flags);
434 bool plugins(
const std::string& name,
const std::string& attrib,
435 const std::string& top,
436 std::vector<std::string>& flags);
462 bool profile(
const std::vector<std::string>& search_path,
465 std::vector<std::string>& dirs);
472 void logWarn(
const std::string& msg,
473 bool append_errno =
false);
480 void logError(
const std::string& msg,
481 bool append_errno =
false);
499 virtual const char*
usage();
517 virtual const char*
usage();
bool exports(const std::string &name, const std::string &lang, const std::string &attrib, bool deps_only, std::vector< std::string > &flags)
Compute exports declared in a package and its dependencies. Used by rosbuild.
bool depsMsgSrv(const std::string &name, bool direct, std::vector< std::string > &gens)
List the marker files in a packages's dependencies that indicate that those packages contain auto-gen...
bool inStackage(std::string &name)
Is the current working directory a stackage?
bool contents(const std::string &name, std::set< std::string > &packages)
Compute the packages that are contained in a stack.
void listDuplicates(std::vector< std::string > &dups)
Identify duplicate stackages. Forces crawl.
bool deps(const std::string &name, bool direct, std::vector< std::string > &deps)
Compute dependencies of a stackage (i.e., stackages that this stackages depends on).
void setQuiet(bool quiet)
Control warning and error console output.
virtual const char * usage()
Usage statement.
bool rosdeps(const std::string &name, bool direct, std::set< std::string > &rosdeps)
Compute rosdep entries that are declared in manifest of a package and its dependencies. Used by rosmake.
Rosstackage(const std::string &manifest_name, const std::string &cache_name, const std::string &name, const std::string &tag)
Constructor, only used by derived classes.
void list(std::set< std::pair< std::string, std::string > > &list)
List names and paths of all stackages.
bool contains(const std::string &name, std::string &stack, std::string &path)
Find the stack that contains a package.
bool getSearchPathFromEnv(std::vector< std::string > &sp)
Helper method to construct a directory search path by looking at relevant environment variables...
virtual const char * usage()
Usage string, to be overridden by derived classes.
Definition: rospack.h:211
bool depsManifests(const std::string &name, bool direct, std::vector< std::string > &manifests)
List the manifests of a stackage's dependencies. Used by rosbuild.
virtual const char * usage()
Usage statement.
Package crawler. Create one of these to operate on a package tree. Call public methods inherited from...
Definition: rospack.h:488
bool depsOn(const std::string &name, bool direct, std::vector< std::string > &deps)
Compute reverse dependencies of a stackage (i.e., stackages that depend on this stackage). Forces crawl.
const std::string & getName()
Get the name of the tool that's in use (e.g., "rospack" or "rosstack")
Definition: rospack.h:242
The base class for package/stack ("stackage") crawlers. Users of the library should use the functiona...
Definition: rospack.h:139
void crawl(std::vector< std::string > search_path, bool force)
Crawl the filesystem, accumulating a database of stackages. May read results from a cache file instea...
bool vcs(const std::string &name, bool direct, std::vector< std::string > &vcs)
Compute vcs entries that are declared in manifest of a package and its dependencies. Was used by Hudson build scripts; might not be needed.
void logError(const std::string &msg, bool append_errno=false)
Log a error (usually goes to stderr).
bool depsIndent(const std::string &name, bool direct, std::vector< std::string > &deps)
Generate indented list of a stackage's dependencies, including duplicates. Intended for visual debugg...
bool profile(const std::vector< std::string > &search_path, bool zombie_only, int length, std::vector< std::string > &dirs)
Report on time taken to crawl for stackages. Intended for use in debugging misconfigured stackage tre...
bool find(const std::string &name, std::string &path)
Look for a stackage.
virtual ~Rosstackage()
Destructor.
Stack crawler. Create one of these to operate on a stack tree. Call public methods inherited from Ros...
Definition: rospack.h:506
bool plugins(const std::string &name, const std::string &attrib, const std::string &top, std::vector< std::string > &flags)
Compute exported plugins declared in packages that depend on a package. Forces crawl. Used by rosbuild and roslib.
bool depsWhy(const std::string &from, const std::string &to, std::string &output)
Compute all dependency chains from one stackage to another. Intended for visual debugging of dependen...
void logWarn(const std::string &msg, bool append_errno=false)
Log a warning (usually goes to stderr).