When uploading tool_dependencies.xml to toolshed, do set toolshed repository attributes of package/repository tags that occur within actions that specify os or architecture.

This commit is contained in:
Daniel Blankenberg
2015-08-24 16:25:53 -04:00
parent 6d3523e81f
commit 8cd94be52d
2 changed files with 16 additions and 11 deletions
@@ -199,5 +199,5 @@ class ToolDependencyAttributeHandler( object ):
if tree is None:
return False, None, error_message
root = tree.getroot()
altered, new_root, error_message = tah.process_config( root )
altered, new_root, error_message = tah.process_config( root, skip_actions_tags=False )
return altered, new_root, error_message
@@ -40,7 +40,7 @@ class TagAttributeHandler( object ):
new_elem[ sub_index ] = new_sub_elem
return elem_altered, new_elem, message
def process_actions_tag_set( self, elem, message ):
def process_actions_tag_set( self, elem, message, skip_actions_tags=True ):
# <actions>
# <package name="libgtextutils" version="0.6">
# <repository name="package_libgtextutils_0_6" owner="test" prior_installation_required="True" />
@@ -53,7 +53,8 @@ class TagAttributeHandler( object ):
error_message = ''
if sub_elem.tag == 'package':
altered, new_sub_elem, error_message = self.process_package_tag_set( elem=sub_elem,
message=message )
message=message,
skip_actions_tags=skip_actions_tags )
elif sub_elem.tag == 'action':
# <action type="set_environment_for_install">
# <repository name="package_readline_6_2" owner="devteam"">
@@ -97,7 +98,8 @@ class TagAttributeHandler( object ):
continue
altered, new_sub_elem, error_message = \
self.process_actions_tag_set( elem=sub_elem,
message=message )
message=message,
skip_actions_tags=skip_actions_tags )
if error_message and error_message not in message:
message += error_message
if altered:
@@ -108,7 +110,7 @@ class TagAttributeHandler( object ):
new_elem[ sub_index ] = new_sub_elem
return elem_altered, new_elem, message
def process_config( self, root ):
def process_config( self, root, skip_actions_tags=True ):
error_message = ''
new_root = copy.deepcopy( root )
if root.tag == 'tool_dependency':
@@ -118,7 +120,8 @@ class TagAttributeHandler( object ):
# <package name="eigen" version="2.0.17">
altered, new_elem, error_message = \
self.process_package_tag_set( elem=elem,
message=error_message )
message=error_message,
skip_actions_tags=skip_actions_tags )
if altered:
if not self.altered:
self.altered = True
@@ -127,7 +130,7 @@ class TagAttributeHandler( object ):
error_message = "Invalid tool_dependencies.xml file."
return self.altered, new_root, error_message
def process_install_tag_set( self, elem, message ):
def process_install_tag_set( self, elem, message, skip_actions_tags=True ):
# <install version="1.0">
elem_altered = False
new_elem = copy.deepcopy( elem )
@@ -138,11 +141,12 @@ class TagAttributeHandler( object ):
altered, new_sub_elem, error_message = \
self.process_actions_group_tag_set( elem=sub_elem,
message=message,
skip_actions_tags=True )
skip_actions_tags=skip_actions_tags )
elif sub_elem.tag == 'actions':
altered, new_sub_elem, error_message = \
self.process_actions_tag_set( elem=sub_elem,
message=message )
message=message,
skip_actions_tags=skip_actions_tags )
else:
package_name = elem.get( 'name', '' )
package_version = elem.get( 'version', '' )
@@ -160,7 +164,7 @@ class TagAttributeHandler( object ):
new_elem[ sub_index ] = new_sub_elem
return elem_altered, new_elem, message
def process_package_tag_set( self, elem, message ):
def process_package_tag_set( self, elem, message, skip_actions_tags=True ):
elem_altered = False
new_elem = copy.deepcopy( elem )
for sub_index, sub_elem in enumerate( elem ):
@@ -169,7 +173,8 @@ class TagAttributeHandler( object ):
if sub_elem.tag == 'install':
altered, new_sub_elem, error_message = \
self.process_install_tag_set( elem=sub_elem,
message=message )
message=message,
skip_actions_tags=skip_actions_tags )
elif sub_elem.tag == 'repository':
altered, new_sub_elem, error_message = \
self.process_repository_tag_set( parent_elem=elem,