mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Don't reset the status on installed tool dependencies when getting updates from the tool shed for installed tool shed repositories.
This commit is contained in:
@@ -138,7 +138,7 @@ class InstallManager( object ):
|
||||
self.app.sa_session.flush()
|
||||
if 'tool_dependencies' in metadata_dict:
|
||||
# All tool_dependency objects must be created before the tools are processed even if no tool dependencies will be installed.
|
||||
tool_dependencies = create_tool_dependency_objects( self.app, tool_shed_repository, tool_shed_repository.installed_changeset_revision )
|
||||
tool_dependencies = create_tool_dependency_objects( self.app, tool_shed_repository, tool_shed_repository.installed_changeset_revision, set_status=True )
|
||||
else:
|
||||
tool_dependencies = None
|
||||
if 'tools' in metadata_dict:
|
||||
|
||||
@@ -11,13 +11,14 @@ pkg_resources.require( 'elementtree' )
|
||||
from elementtree import ElementTree, ElementInclude
|
||||
from elementtree.ElementTree import Element, SubElement
|
||||
|
||||
def create_or_update_tool_dependency( app, tool_shed_repository, name, version, type, status ):
|
||||
def create_or_update_tool_dependency( app, tool_shed_repository, name, version, type, status, set_status=True ):
|
||||
# Called from Galaxy (never the tool shed) when a new repository is being installed or when an uninstalled repository is being reinstalled.
|
||||
sa_session = app.model.context.current
|
||||
# First see if an appropriate tool_dependency record exists for the received tool_shed_repository.
|
||||
tool_dependency = get_tool_dependency_by_name_version_type_repository( app, tool_shed_repository, name, version, type )
|
||||
if tool_dependency:
|
||||
tool_dependency.status = status
|
||||
if set_status:
|
||||
tool_dependency.status = status
|
||||
else:
|
||||
# Create a new tool_dependency record for the tool_shed_repository.
|
||||
tool_dependency = app.model.ToolDependency( tool_shed_repository.id, name, version, type, status )
|
||||
@@ -59,7 +60,8 @@ def install_package( app, elem, tool_shed_repository, tool_dependencies=None ):
|
||||
name=package_name,
|
||||
version=package_version,
|
||||
type='package',
|
||||
status=app.model.ToolDependency.installation_status.INSTALLING )
|
||||
status=app.model.ToolDependency.installation_status.INSTALLING,
|
||||
set_status=True )
|
||||
if package_install_version == '1.0':
|
||||
# Handle tool dependency installation using a fabric method included in the Galaxy framework.
|
||||
for actions_elem in package_elem:
|
||||
|
||||
@@ -380,7 +380,7 @@ def create_or_update_tool_shed_repository( app, name, description, installed_cha
|
||||
sa_session.add( tool_shed_repository )
|
||||
sa_session.flush()
|
||||
return tool_shed_repository
|
||||
def create_tool_dependency_objects( app, tool_shed_repository, current_changeset_revision ):
|
||||
def create_tool_dependency_objects( app, tool_shed_repository, current_changeset_revision, set_status=True ):
|
||||
# Create or update a ToolDependency for each entry in tool_dependencies_config. This method is called when installing a new tool_shed_repository.
|
||||
tool_dependency_objects = []
|
||||
work_dir = make_tmp_directory()
|
||||
@@ -404,7 +404,8 @@ def create_tool_dependency_objects( app, tool_shed_repository, current_changeset
|
||||
name=package_name,
|
||||
version=package_version,
|
||||
type='package',
|
||||
status=app.model.ToolDependency.installation_status.NEVER_INSTALLED )
|
||||
status=app.model.ToolDependency.installation_status.NEVER_INSTALLED,
|
||||
set_status=set_status )
|
||||
tool_dependency_objects.append( tool_dependency )
|
||||
try:
|
||||
shutil.rmtree( work_dir )
|
||||
|
||||
@@ -688,7 +688,7 @@ class AdminToolshed( AdminGalaxy ):
|
||||
trans.sa_session.add( tool_shed_repository )
|
||||
trans.sa_session.flush()
|
||||
if 'tool_dependencies' in metadata_dict and not reinstalling:
|
||||
tool_dependencies = create_tool_dependency_objects( trans.app, tool_shed_repository, tool_shed_repository.installed_changeset_revision )
|
||||
tool_dependencies = create_tool_dependency_objects( trans.app, tool_shed_repository, tool_shed_repository.installed_changeset_revision, set_status=True )
|
||||
if 'tools' in metadata_dict:
|
||||
tool_panel_dict = generate_tool_panel_dict_for_new_install( metadata_dict[ 'tools' ], tool_section )
|
||||
repository_tools_tups = get_repository_tools_tups( trans.app, metadata_dict )
|
||||
@@ -1480,7 +1480,7 @@ class AdminToolshed( AdminGalaxy ):
|
||||
trans.sa_session.flush()
|
||||
# Create tool_dependency records if necessary.
|
||||
if 'tool_dependencies' in metadata_dict:
|
||||
tool_dependencies = create_tool_dependency_objects( trans.app, repository, repository.changeset_revision )
|
||||
tool_dependencies = create_tool_dependency_objects( trans.app, repository, repository.changeset_revision, set_status=False )
|
||||
message = "The installed repository named '%s' has been updated to change set revision '%s'. " % ( name, latest_changeset_revision )
|
||||
# See if any tool dependencies can be installed.
|
||||
shed_tool_conf, tool_path, relative_install_dir = get_tool_panel_config_tool_path_install_dir( trans.app, repository )
|
||||
|
||||
Reference in New Issue
Block a user