1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/9e36d1ed099f/
changeset: 9e36d1ed099f
user: greg
date: 2013-02-18 21:28:06
summary: Fix for installing a repository from the tool shed that includes a repository dependency defintion where the required repository is owned by a user other than the dependent repository.
affected #: 3 files
diff -r 84b6c4608e357a466948d895d90d1a1d77f3cd71 -r 9e36d1ed099fb31eccbc6bf55f20c1bd3fec1773 lib/galaxy/util/shed_util.py
--- a/lib/galaxy/util/shed_util.py
+++ b/lib/galaxy/util/shed_util.py
@@ -720,7 +720,11 @@
for rd_tup in rd_tups:
tool_shed, name, owner, changeset_revision = rd_tup
# Updates to installed repository revisions may have occurred, so make sure to locate the appropriate repository revision if one exists.
- repository, current_changeset_revision = repository_was_previously_installed( trans, tool_shed, name, repo_info_tuple )
+ # We need to create a temporary repo_info_tuple that includes the correct repository owner which we get from the current rd_tup. The current
+ # tuple looks like: ( description, repository_clone_url, changeset_revision, ctx_rev, repository_owner, repository_dependencies, installed_td )
+ tmp_clone_url = suc.generate_clone_url_from_repo_info_tup( rd_tup )
+ tmp_repo_info_tuple = ( None, tmp_clone_url, changeset_revision, None, owner, None, None )
+ repository, current_changeset_revision = repository_was_previously_installed( trans, tool_shed, name, tmp_repo_info_tuple )
if repository:
new_rd_tup = [ tool_shed, name, owner, changeset_revision, repository.id, repository.status ]
if repository.status == trans.model.ToolShedRepository.installation_status.INSTALLED:
diff -r 84b6c4608e357a466948d895d90d1a1d77f3cd71 -r 9e36d1ed099fb31eccbc6bf55f20c1bd3fec1773 lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -1068,6 +1068,12 @@
return '%s://%s%s/repos/%s/%s' % ( protocol, username, base, repository.user.username, repository.name )
else:
return '%s/repos/%s/%s' % ( base_url, repository.user.username, repository.name )
+def generate_clone_url_from_repo_info_tup( repo_info_tup ):
+ """Generate teh URL for cloning a repositoyr given a tuple of toolshed, name, owner, changeset_revision."""
+ # Example tuple: ['http://localhost:9009', 'blast_datatypes', 'test', '461a4216e8ab']
+ toolshed, name, owner, changeset_revision = repo_info_tup
+ # Don't include the changeset_revision in clone urls.
+ return url_join( toolshed, 'repos', owner, name )
def generate_data_manager_metadata( app, repository, repo_dir, data_manager_config_filename, metadata_dict, shed_config_dict=None ):
"""Update the received metadata_dict with information from the parsed data_manager_config_filename."""
if data_manager_config_filename is None:
diff -r 84b6c4608e357a466948d895d90d1a1d77f3cd71 -r 9e36d1ed099fb31eccbc6bf55f20c1bd3fec1773 lib/galaxy/webapps/community/controllers/repository.py
--- a/lib/galaxy/webapps/community/controllers/repository.py
+++ b/lib/galaxy/webapps/community/controllers/repository.py
@@ -1472,12 +1472,15 @@
repository_clone_url = suc.generate_clone_url_for_repository_in_tool_shed( trans, repository )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, repository_id, changeset_revision )
metadata = repository_metadata.metadata
- if not includes_tools and 'tools' in metadata:
- includes_tools = True
- if not has_repository_dependencies and 'repository_dependencies' in metadata:
- has_repository_dependencies = True
- if not includes_tool_dependencies and 'tool_dependencies' in metadata:
- includes_tool_dependencies = True
+ if not includes_tools:
+ if 'tools' in metadata:
+ includes_tools = True
+ if not has_repository_dependencies:
+ if 'repository_dependencies' in metadata:
+ has_repository_dependencies = True
+ if not includes_tool_dependencies:
+ if 'tool_dependencies' in metadata:
+ includes_tool_dependencies = True
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
ctx = suc.get_changectx_for_changeset( repo, changeset_revision )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/84b6c4608e35/
changeset: 84b6c4608e35
user: dan
date: 2013-02-18 21:10:57
summary: Fix typo in 7d0a0ca401f7.
affected #: 1 file
diff -r 7d0a0ca401f7cee8b2862c4191f4c1c073cc538d -r 84b6c4608e357a466948d895d90d1a1d77f3cd71 lib/galaxy/util/shed_util.py
--- a/lib/galaxy/util/shed_util.py
+++ b/lib/galaxy/util/shed_util.py
@@ -1418,7 +1418,7 @@
# Handle Data Managers
valid_data_managers = None
invalid_data_managers = None
- data_manager_errors = None
+ data_managers_errors = None
if 'data_manager' in metadata:
valid_data_managers = metadata['data_manager'].get( 'data_managers', None )
invalid_data_managers = metadata['data_manager'].get( 'invalid_data_managers', None )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/36ab5b39b985/
changeset: 36ab5b39b985
user: greg
date: 2013-02-18 16:01:40
summary: A bit of messaging cleanup in the tool shed.
affected #: 3 files
diff -r 131f63d242216522ffb06cada3684fbf93fe9254 -r 36ab5b39b985d84d02b449eeaa4876ad73190317 lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -1166,6 +1166,33 @@
else:
valid_tool_dependencies_dict[ 'set_environment' ] = [ requirements_dict ]
return valid_tool_dependencies_dict
+def generate_message_for_invalid_repository_dependencies( metadata_dict ):
+ """Return the error message associated with an invalid repository dependency for display in the caller."""
+ message = ''
+ if metadata_dict:
+ invalid_repository_dependencies_dict = metadata_dict.get( 'invalid_repository_dependencies', None )
+ if invalid_repository_dependencies_dict:
+ invalid_repository_dependencies = invalid_repository_dependencies_dict[ 'invalid_repository_dependencies' ]
+ for repository_dependency_tup in invalid_repository_dependencies:
+ toolshed, name, owner, changeset_revision, error = repository_dependency_tup
+ if error:
+ message = '%s ' % str( error )
+ return message
+def generate_message_for_invalid_tool_dependencies( metadata_dict ):
+ """
+ Due to support for orphan tool dependencies (which are always valid) tool dependency definitions can only be invalid if they include a definition for a complex
+ repository dependency and the repository dependency definition is invalid. This method retrieves the error message associated with the invalid tool dependency
+ for display in the caller.
+ """
+ message = ''
+ if metadata_dict:
+ invalid_tool_dependencies = metadata_dict.get( 'invalid_tool_dependencies', None )
+ if invalid_tool_dependencies:
+ for td_key, requirement_dict in invalid_tool_dependencies.items():
+ error = requirement_dict.get( 'error', None )
+ if error:
+ message = '%s ' % str( error )
+ return message
def generate_message_for_invalid_tools( trans, invalid_file_tups, repository, metadata_dict, as_html=True, displaying_invalid_tool=False ):
if as_html:
new_line = '<br/>'
@@ -1211,7 +1238,6 @@
is considered valid but perhaps an orphan due to it's actual invalidity.
"""
message = ''
- status = 'done'
if metadata_dict:
orphan_tool_dependencies = metadata_dict.get( 'orphan_tool_dependencies', None )
if orphan_tool_dependencies:
@@ -1237,8 +1263,7 @@
version = requirements_dict[ 'version' ]
message += "<b>* name:</b> %s, <b>type:</b> %s, <b>version:</b> %s<br/>" % ( str( name ), str( type ), str( version ) )
message += "<br/>"
- status = 'warning'
- return message, status
+ return message
def generate_metadata_for_changeset_revision( app, repository, changeset_revision, repository_clone_url, shed_config_dict=None, relative_install_dir=None,
repository_files_dir=None, resetting_all_metadata_on_repository=False, updating_installed_repository=False,
persist=False ):
diff -r 131f63d242216522ffb06cada3684fbf93fe9254 -r 36ab5b39b985d84d02b449eeaa4876ad73190317 lib/galaxy/webapps/community/controllers/repository.py
--- a/lib/galaxy/webapps/community/controllers/repository.py
+++ b/lib/galaxy/webapps/community/controllers/repository.py
@@ -2000,10 +2000,11 @@
key_rd_dicts_to_be_processed=None,
all_repository_dependencies=None,
handled_key_rd_dicts=None )
- if metadata:
- if 'orphan_tool_dependencies' in metadata:
- orphan_message, status = suc.generate_message_for_orphan_tool_dependencies( metadata )
- message += orphan_message
+ # Handle messaging for orphan tool dependencies.
+ orphan_message = suc.generate_message_for_orphan_tool_dependencies( metadata )
+ if orphan_message:
+ message += orphan_message
+ status = 'warning'
if is_malicious:
if trans.app.security_agent.can_push( trans.app, trans.user, repository ):
message += malicious_error_can_push
@@ -2752,10 +2753,11 @@
key_rd_dicts_to_be_processed=None,
all_repository_dependencies=None,
handled_key_rd_dicts=None )
- if metadata:
- if 'orphan_tool_dependencies' in metadata:
- orphan_message, status = suc.generate_message_for_orphan_tool_dependencies( metadata )
- message += orphan_message
+ # Handle messaging for orphan tool dependencies.
+ orphan_message = suc.generate_message_for_orphan_tool_dependencies( metadata )
+ if orphan_message:
+ message += orphan_message
+ status = 'warning'
else:
repository_metadata_id = None
metadata = None
diff -r 131f63d242216522ffb06cada3684fbf93fe9254 -r 36ab5b39b985d84d02b449eeaa4876ad73190317 lib/galaxy/webapps/community/controllers/upload.py
--- a/lib/galaxy/webapps/community/controllers/upload.py
+++ b/lib/galaxy/webapps/community/controllers/upload.py
@@ -167,33 +167,29 @@
message += " %d files were removed from the repository root. " % len( files_to_remove )
kwd[ 'message' ] = message
suc.set_repository_metadata_due_to_new_tip( trans, repository, content_alert_str=content_alert_str, **kwd )
- # Provide a warning message if a tool_dependencies.xml file is provided, but tool dependencies weren't loaded due to a requirement tag mismatch
- # or some other problem.
if repository.metadata_revisions:
# A repository's metadata revisions are order descending by update_time, so the zeroth revision will be the tip just after an upload.
metadata_dict = repository.metadata_revisions[0].metadata
else:
metadata_dict = {}
+ # Provide a warning message if a tool_dependencies.xml file is provided, but tool dependencies weren't loaded due to a requirement tag mismatch
+ # or some other problem. Tool dependency definitions can define orphan tool dependencies (no relationship to any tools contained in the repository),
+ # so warning messages are important because orphans are always valid. The repository owner must be warned in case they did not intend to define an
+ # orphan dependency, but simply provided incorrect information (tool shed, name owner, changeset_revision) for the definition.
# Handle messaging for orphan tool dependencies.
- orphan_message, status = suc.generate_message_for_orphan_tool_dependencies( metadata_dict )
+ orphan_message = suc.generate_message_for_orphan_tool_dependencies( metadata_dict )
if orphan_message:
message += orphan_message
- # Display message for invalid tool sependencies.
- invalid_tool_dependencies = metadata_dict.get( 'invalid_tool_dependencies', None )
- if invalid_tool_dependencies:
- for td_key, requirement_dict in invalid_tool_dependencies.items():
- error = requirement_dict.get( 'error', None )
- if error:
- message = "%s %s" % ( message, str( error ) )
+ status = 'warning'
+ # Handle messaging for invalid tool dependencies.
+ invalid_tool_dependencies_message = suc.generate_message_for_invalid_tool_dependencies( metadata_dict )
+ if invalid_tool_dependencies_message:
+ message += invalid_tool_dependencies_message
status = 'error'
- # Display message for invalid repository dependencies.
- invalid_repository_dependencies_dict = metadata_dict.get( 'invalid_repository_dependencies', None )
- if invalid_repository_dependencies_dict:
- invalid_repository_dependencies = invalid_repository_dependencies_dict[ 'invalid_repository_dependencies' ]
- for repository_dependency_tup in invalid_repository_dependencies:
- toolshed, name, owner, changeset_revision, error = repository_dependency_tup
- if error:
- message += "%s %s" % ( message, str( error ) )
+ # Handle messaging for invalid repository dependencies.
+ invalid_repository_dependencies_message = suc.generate_message_for_invalid_repository_dependencies( metadata_dict )
+ if invalid_repository_dependencies_message:
+ message += invalid_repository_dependencies_message
status = 'error'
# Reset the tool_data_tables by loading the empty tool_data_table_conf.xml file.
suc.reset_tool_data_tables( trans.app )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.