Codebase list ros-rospack / 22e26df
New upstream version 2.5.2 Jochen Sprickerhof 5 years ago
5 changed file(s) with 46 addition(s) and 26 deletion(s). Raw diff Collapse all Expand all
00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
11 Changelog for package rospack
22 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3
4 2.5.2 (2018-09-05)
5 ------------------
6 * add delete whitespace settings for backward compatibility, regression from 2.4.0 (`#94 <https://github.com/ros/rospack/issues/94>`_)
7 * fix build issue on Windows (`#90 <https://github.com/ros/rospack/issues/90>`_)
8 * use namespace to avoid name conflict between tinyxml2 and msxml (`#89 <https://github.com/ros/rospack/issues/89>`_)
39
410 2.5.1 (2018-05-31)
511 ------------------
612 * add run_depend on ros_environment (`#88 <https://github.com/ros/rospack/issues/88>`_)
713
814 2.5.0 (2018-01-30)
9 -----------
15 ------------------
1016 * skip warning if permission to read directory was denied (`#87 <https://github.com/ros/rospack/issues/87>`_)
1117
1218 2.4.3 (2017-10-12)
00 <package>
11 <name>rospack</name>
2 <version>2.5.1</version>
2 <version>2.5.2</version>
33 <description>ROS Package Tool</description>
44 <maintainer email="dthomas@osrfoundation.org">Dirk Thomas</maintainer>
55 <license>BSD</license>
7979 #define PyUnicode_FromString PyString_FromString
8080 #endif
8181
82 using namespace tinyxml2;
83
8482 // TODO:
8583 // recrawl on:
8684 // package not found in cache
115113 static const int MAX_DEPENDENCY_DEPTH = 1000;
116114 static const double DEFAULT_MAX_CACHE_AGE = 60.0;
117115
118 XMLElement* get_manifest_root(Stackage* stackage);
116 tinyxml2::XMLElement* get_manifest_root(Stackage* stackage);
119117 double time_since_epoch();
120118
121119 #ifdef __APPLE__
152150 // \brief have we already loaded the manifest?
153151 bool manifest_loaded_;
154152 // \brief TinyXML structure, filled in during parsing
155 XMLDocument manifest_;
153 tinyxml2::XMLDocument manifest_;
156154 std::vector<Stackage*> deps_;
157155 bool deps_computed_;
158156 bool is_wet_package_;
167165 manifest_path_(manifest_path),
168166 manifest_name_(manifest_name),
169167 manifest_loaded_(false),
168 manifest_(true, tinyxml2::COLLAPSE_WHITESPACE),
170169 deps_computed_(false),
171170 is_metapackage_(false)
172171 {
178177 assert(is_wet_package_);
179178 assert(manifest_loaded_);
180179 // get name from package.xml instead of folder name
181 XMLElement* root = get_manifest_root(this);
182 for(XMLElement* el = root->FirstChildElement("name"); el; el = el->NextSiblingElement("name"))
180 tinyxml2::XMLElement* root = get_manifest_root(this);
181 for(tinyxml2::XMLElement* el = root->FirstChildElement("name"); el; el = el->NextSiblingElement("name"))
183182 {
184183 name_ = el->GetText();
185184 break;
186185 }
187186 // Get license texts, where there may be multiple elements for.
188187 std::string tagname_license = "license";
189 for(XMLElement* el = root->FirstChildElement(tagname_license.c_str()); el; el = el->NextSiblingElement(tagname_license.c_str()))
188 for(tinyxml2::XMLElement* el = root->FirstChildElement(tagname_license.c_str()); el; el = el->NextSiblingElement(tagname_license.c_str()))
190189 {
191190 licenses_.push_back(el->GetText());
192191 }
193192 // check if package is a metapackage
194 for(XMLElement* el = root->FirstChildElement("export"); el; el = el->NextSiblingElement("export"))
193 for(tinyxml2::XMLElement* el = root->FirstChildElement("export"); el; el = el->NextSiblingElement("export"))
195194 {
196195 if(el->FirstChildElement("metapackage"))
197196 {
735734 void
736735 Rosstackage::_rosdeps(Stackage* stackage, std::set<std::string>& rosdeps, const char* tag_name)
737736 {
738 XMLElement* root = get_manifest_root(stackage);
739 for(XMLElement* ele = root->FirstChildElement(tag_name);
737 tinyxml2::XMLElement* root = get_manifest_root(stackage);
738 for(tinyxml2::XMLElement* ele = root->FirstChildElement(tag_name);
740739 ele;
741740 ele = ele->NextSiblingElement(tag_name))
742741 {
778777 it != deps_vec.end();
779778 ++it)
780779 {
781 XMLElement* root = get_manifest_root(*it);
782 for(XMLElement* ele = root->FirstChildElement(MANIFEST_TAG_VERSIONCONTROL);
780 tinyxml2::XMLElement* root = get_manifest_root(*it);
781 for(tinyxml2::XMLElement* ele = root->FirstChildElement(MANIFEST_TAG_VERSIONCONTROL);
783782 ele;
784783 ele = ele->NextSiblingElement(MANIFEST_TAG_VERSIONCONTROL))
785784 {
10201019 const std::string& attrib,
10211020 std::vector<std::string>& flags)
10221021 {
1023 XMLElement* root = get_manifest_root(stackage);
1024 for(XMLElement* ele = root->FirstChildElement(MANIFEST_TAG_EXPORT);
1022 tinyxml2::XMLElement* root = get_manifest_root(stackage);
1023 for(tinyxml2::XMLElement* ele = root->FirstChildElement(MANIFEST_TAG_EXPORT);
10251024 ele;
10261025 ele = ele->NextSiblingElement(MANIFEST_TAG_EXPORT))
10271026 {
10281027 bool os_match = false;
10291028 const char *best_match = NULL;
1030 for(XMLElement* ele2 = ele->FirstChildElement(lang.c_str());
1029 for(tinyxml2::XMLElement* ele2 = ele->FirstChildElement(lang.c_str());
10311030 ele2;
10321031 ele2 = ele2->NextSiblingElement(lang.c_str()))
10331032 {
11261125 it != stackages.end();
11271126 ++it)
11281127 {
1129 XMLElement* root = get_manifest_root(*it);
1130 for(XMLElement* ele = root->FirstChildElement(MANIFEST_TAG_EXPORT);
1128 tinyxml2::XMLElement* root = get_manifest_root(*it);
1129 for(tinyxml2::XMLElement* ele = root->FirstChildElement(MANIFEST_TAG_EXPORT);
11311130 ele;
11321131 ele = ele->NextSiblingElement(MANIFEST_TAG_EXPORT))
11331132 {
1134 for(XMLElement* ele2 = ele->FirstChildElement(name.c_str());
1133 for(tinyxml2::XMLElement* ele2 = ele->FirstChildElement(name.c_str());
11351134 ele2;
11361135 ele2 = ele2->NextSiblingElement(name.c_str()))
11371136 {
15621561 if(stackage->manifest_loaded_)
15631562 return;
15641563
1565 if(stackage->manifest_.LoadFile(stackage->manifest_path_.c_str()) != XML_SUCCESS)
1564 if(stackage->manifest_.LoadFile(stackage->manifest_path_.c_str()) != tinyxml2::XML_SUCCESS)
15661565 {
15671566 std::string errmsg = std::string("error parsing manifest of package ") +
15681567 stackage->name_ + " at " + stackage->manifest_path_;
16081607 void
16091608 Rosstackage::computeDepsInternal(Stackage* stackage, bool ignore_errors, const std::string& depend_tag, bool ignore_missing)
16101609 {
1611 XMLElement* root;
1610 tinyxml2::XMLElement* root;
16121611 root = get_manifest_root(stackage);
16131612
16141613 const char* dep_pkgname;
1615 for(XMLElement *dep_ele = root->FirstChildElement(depend_tag.c_str());
1614 for(tinyxml2::XMLElement *dep_ele = root->FirstChildElement(depend_tag.c_str());
16161615 dep_ele;
16171616 dep_ele = dep_ele->NextSiblingElement(depend_tag.c_str()))
16181617 {
23372336 return "stack";
23382337 }
23392338
2340 XMLElement*
2339 tinyxml2::XMLElement*
23412340 get_manifest_root(Stackage* stackage)
23422341 {
2343 XMLElement* ele = stackage->manifest_.RootElement();
2342 tinyxml2::XMLElement* ele = stackage->manifest_.RootElement();
23442343 if(!ele)
23452344 {
23462345 std::string errmsg = std::string("error parsing manifest of package ") +
00 include_directories(${PROJECT_SOURCE_DIR}/src)
11 catkin_add_gtest(${PROJECT_NAME}-utest
2 test/utest.cpp ${PROJECT_SOURCE_DIR}/src/rospack_cmdline.cpp ${PROJECT_SOURCE_DIR}/src/utils.cpp
2 test/utest.cpp
33 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
44 if(TARGET ${PROJECT_NAME}-utest)
55 target_link_libraries(${PROJECT_NAME}-utest rospack)
3232 #include <string>
3333 #include <vector>
3434 #include <stdlib.h>
35 #ifndef _WIN32
3536 #include <unistd.h>
37 #endif
3638 #include <stdio.h>
3739 #include <time.h>
3840 #include <gtest/gtest.h>
4143 #include "rospack/rospack.h"
4244 #include "utils.h"
4345
46 #ifdef _WIN32
47 int setenv(const char *name, const char *value, int overwrite)
48 {
49 if(!overwrite)
50 {
51 size_t envsize = 0;
52 errno_t errcode = getenv_s(&envsize, NULL, 0, name);
53 if(errcode || envsize)
54 return errcode;
55 }
56 return _putenv_s(name, value);
57 }
58 #endif
4459
4560 TEST(rospack, reentrant)
4661 {