8000 Not installing all the dependencies from dependencies.json if also reading dependencies from channel.json · Issue #1301 · wbond/package_control · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Not installing all the dependencies from dependencies.json if also reading dependencies from channel.json #1301

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
evandrocoan opened this issue Dec 9, 2017 · 10 comments

Comments

@evandrocoan
Copy link
evandrocoan commented Dec 9, 2017

DPI scale: 1
startup, version: 3143 windows x32 channel: stable
executable: /D/User/Dropbox/Applications/SoftwareVersioning/SublimeText/OldBuilds/3143/sublime_text.exe
working dir: /D/User/Dropbox/Applications/SoftwareVersioning/SublimeText/OldBuilds/3143
packages path: /C/Users/Professional/AppData/Roaming/Sublime Text 3/Packages
state path: /C/Users/Professional/AppData/Roaming/Sublime Text 3/Local
zip path: /D/User/Dropbox/Applications/SoftwareVersioning/SublimeText/OldBuilds/3143/Packages
zip path: /C/Users/Professional/AppData/Roaming/Sublime Text 3/Installed Packages
ignored_packages: ["Vintage"]
pre session restore time: 0.367496
startup time: 0.518496
first paint time: 0.530496
reloading plugin Default.auto_indent_tag
reloading plugin Default.block
reloading plugin Default.comment
reloading plugin Default.convert_syntax
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
reloading plugin Default.echo
reloading plugin Default.exec
reloading plugin Default.fold
reloading plugin Default.font
reloading plugin Default.goto_line
reloading plugin Default.history_list
reloading plugin Default.indentation
reloading plugin Default.install_package_control
reloading plugin Default.kill_ring
reloading plugin Default.mark
reloading plugin Default.new_templates
reloading plugin Default.open_context_url
reloading plugin Default.open_in_browser
reloading plugin Default.pane
reloading plugin Default.paragraph
reloading plugin Default.paste_from_history
reloading plugin Default.profile
reloading plugin Default.quick_panel
reloading plugin Default.run_syntax_tests
reloading plugin Default.save_on_focus_lost
reloading plugin Default.scroll
reloading plugin Default.set_unsaved_view_name
reloading plugin Default.settings
reloading plugin Default.show_scope_name
reloading plugin Default.side_bar
reloading plugin Default.sort
reloading plugin Default.swap_line
reloading plugin Default.switch_file
reloading plugin Default.symbol
reloading plugin Default.transform
reloading plugin Default.transpose
reloading plugin Default.trim_trailing_white_space
reloading plugin Default.ui
reloading plugin CSS.css_completions
reloading plugin Diff.diff
reloading plugin HTML.encode_html_entities
reloading plugin HTML.html_completions
reloading plugin 0_package_control_loader.00-package_control
reloading plugin Package Control.1_reloader
reloading plugin Package Control.2_bootstrap
reloading plugin Package Control.Package Control
plugins loaded
Package Control: No updated packages
ignored packages updated to: ["StudioChannel", "Vintage"]
reloading settings Packages/User/Package Control.sublime-settings
Package Control: The dependency 'ChannelManager' is not currently installed; installing...
reloading settings Packages/User/Preferences.sublime-settings
reloading plugin ChannelManager.channel_installer
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_installer.py", line 55, in <module>
    from .channel_utilities import get_installed_packages
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin ChannelManager.channel_manager
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_manager.py", line 66, in <module>
    from .channel_utilities import progress_info
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin ChannelManager.channel_manager_tests
Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_manager_tests.py", line 41, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'
reloading plugin ChannelManager.channel_uninstaller
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_uninstaller.py", line 45, in <module>
    from .channel_utilities import get_installed_packages
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin ChannelManager.channel_utilities
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin ChannelManager.copy_default_package
Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\copy_default_package.py", line 53, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'
reloading plugin ChannelManager.settings
reloading plugin ChannelManager.submodules_manager
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\submodules_manager.py", line 52, in <module>
    from .channel_utilities import get_main_directory
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\submodules_manager.py", line 57, in <module>
    from settings import *
ImportError: No module named 'settings'
Package Control: The dependency 'ChannelManager' has successfully been installed or updated
reloading settings Packages/User/Package Control.sublime-settings
ignored packages updated to: ["Vintage"]
reloading plugin StudioChannel.channel_commands
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "channel_commands in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 41, in <module>
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "settings in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 35, in <module>
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin StudioChannel.installation_wizard
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "installation_wizard in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 39, in <module>
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "settings in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 35, in <module>
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin StudioChannel.settings
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "settings in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 35, in <module>
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading plugin StudioChannel.uninstallation_wizard
Traceback (most recent call last):
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 58, in <module>
    from PythonDebugTools.debug_tools import Debugger
ImportError: No module named 'PythonDebugTools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 109, in reload_plugin
    m = importlib.import_module(modulename)
  File "./python3.3/importlib/__init__.py", line 90, in import_module
  File "<frozen importlib._bootstrap>", line 1584, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "uninstallation_wizard in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 37, in <module>
  File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\OldBuilds\3143\sublime_plugin.py", line 915, in load_module
    exec(compile(source, source_path, 'exec'), mod.__dict__)
  File "settings in C:\Users\Professional\AppData\Roaming\Sublime Text 3\Installed Packages\StudioChannel.sublime-package", line 35, in <module>
  File "C:\Users\Professional\AppData\Roaming\Sublime Text 3\Packages\ChannelManager\channel_utilities.py", line 67, in <module>
    from debug_tools import Debugger
ImportError: No module named 'debug_tools'
reloading settings Packages/User/Package Control.sublime-settings
reloading settings Packages/User/Preferences.sublime-settings
reloading settings Packages/User/Preferences.sublime-settings


evandrocoan added a commit to evandrocoan/StudioChannel that referenced this issue Dec 9, 2017
dependency requirements. Issue:
If a dependency fail running, the subsequent dependencies are not installed
wbond/package_control#1301
@evandrocoan evandrocoan changed the title If a dependency fail running, the subsequent dependencies are not installed If a dependency fail running, the subsequent dependencies are not installed by Package Control Dec 9, 2017
evandrocoan added a commit to evandrocoan/channelmanager that referenced this issue Dec 9, 2017
the PythonDebugTools dependency is not found. Issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/channelmanager that referenced this issue Dec 9, 2017
fails to install missing dependencies. Issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/StudioChannel that referenced this issue Dec 9, 2017
fails to install missing dependencies. Issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
@FichteFoll
Copy link
Collaborator

I suppose this would be fixed by #945.

@evandrocoan
Copy link
Author

Thanks.

@evandrocoan
Copy link
Author
evandrocoan commented Dec 9, 2017

That is very related to the problem. But beyond that, here only the first dependency on alphabetical order is being installed. I had to manually add the command satisfy_dependencies to install the remaining dependencies, when it fails to import the other dependencies:

...
except Exception as error:
    print( "Could not import PythonDebugTools! " + str( error ) )

    def satisfy_dependencies():
        sublime.active_window().run_command( "satisfy_dependencies" )

        def reload_all_package_files():
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".settings" )
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".channel_installer" )
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".channel_manager" )
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".channel_uninstaller" )
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".channel_utilities" )
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".copy_default_package" )
            sublime_plugin.reload_plugin( CURRENT_PACKAGE_NAME + ".submodules_manager" )

        sublime.set_timeout_async( reload_all_package_files, 3000 )

    sublime.set_timeout_async( satisfy_dependencies, 3000 )

@evandrocoan evandrocoan reopened this Dec 9, 2017
@FichteFoll
Copy link
Collaborator
FichteFoll commented Dec 9, 2017

You are not using dependencies correctly. Your "Channel Manager" is essentially a package, not a dependency, because it interfaces with Sublime Text directly. This is undocumented behavior and likely to be removed (#800).

I also think I already explained this to you in some pull request to the PCC, but that could've been someone else.

By the way, submodules aren't included in zip- or tarballs, which PC downloads. Edit: Edit although it seems like you have some magic in place for that. This is quite a bit too hacky for my taste tbh.

@evandrocoan
Copy link
Author
evandrocoan commented Dec 9, 2017

I have been working on this for months and I took a great care into restricting the user, not allowing he to install it any of it, if he is not very aware of what it is doing.

I think this cannot be easily understood because I created new concepts by allowing several packages to be grouped by and distributed together.

But the user still has the last word/say, and right before to install it, I provide a quick panel showing all the packages being installed and allowing the user to pick up which packages he want to install or not. This a pictures of the menu:

image

Also, there an uninstaller, which does the same thing and ask the user, which packages he want to uninstall from all packages which where installed by the installer.

By the way, submodules aren't included in zip- or tarballs

I know, and the submodules do not need to be included if the user is installing the package as .sublime-package. That functionality is only available when the user installs the package/dependency by git clone --recursive.

Your "Channel Manager" is essentially a package,

Indeed it is not like other dependencies, which just provide a API. It does actually interact with the in limited way. It is basically a installer. uninstaller and service provider.

I put it as a dependency to decouple the installation, uninstallation and services, to allow different configurations to be applied as the ones provided by the packages SublimeStudio and SublimeAmxxSimpleIDE which require the ChannelManager as a dependency.

because it interfaces with Sublime Text directly

I do not know exactly where you say it interfaces with Sublime Text, perhaps it is because it brings up a quick_panel? I think you are mentioning the plugin channel_manager.py, indeed it is package like, but only installing the ChannelManager it does nothing as it requires a configuration file which must be provided from another package. This is way I put ChannelManager as dependency, because only by itself, it does nothing. It must be required by a package, which provides settings, .sublime-commands, .sublime-menu, etc.

This is undocumented behavior and likely to be removed

What is supposed to be removed? The import I do like:

from ChannelManager.channel_installer import main

i.e., I do not put the dependencies files inside a all folder, I just import it by its name directly.

Perhaps you mean this because on the future, the dependencies are supposed to be on a different folder as in $DATA/Lib/python3.3. So, if my ChannelManager is put under that folder, I could not import it on my packages like from ChannelManager.channel_installer import main?

If that is the case, can I just append the $DATA/Lib/python3.3 on the python path to allow these imports?

You are not using dependencies correctly.

There is not standard definition of what does is a dependency. I put ChannelManager and other as a dependency because the provide common functionality, so I do not need to repeat its code along other packages. Because that is what it would be, if it was not a dependency, I would have to copy and paste the same code everywhere.

It seems that for you, a dependency must only provide an API. However, my ChannelManager does exactly this. It is not a package, and it only provides services for other packages. If you only install ChannelManager, it does nothing for you.

Except for the plugin submodules_manager.py, which is able to run externally from Sublime Text. The submodules_manager.py is even compatible with Python 2.7, and you can access it by command line with ./submodules_manager.py --help or python submodules_manager.py --help

But even the submodules_manager.py is not interfaced with Sublime Text, you need to create one, by requiring ChannelManager as a dependency and creating it on your package. Meaning that just installing ChannelManger is not enough for it to be accessible by the user from Sublime Text.

The SublimeStudio and SublimeAmxxSimpleIDE are examples of packages which does require the ChannelManager as a dependency and provide settings and an interface for Sublime Text to be able to use the ChannelManager services.

@FichteFoll
Copy link
Collaborator
FichteFoll commented Dec 9, 2017

I do not know exactly where you say it interfaces with Sublime Text

Well, as soon as you have Python file in the repository root, ST will scan them for subclasses of its command and event listener classes. If it defines any of them, it immediately interfaces with ST.

It seems that for you, a dependency must only provide an API. However, my ChannelManager does exactly this. It is not a package, and it only provides services for other packages. If you only install ChannelManager, it does nothing for you.

The thing about your ChannelManager is that it does not provide this "API" in the usual manner, i.e. inside a recognized folder like all/channel_manager, which other plugins could import from using from channel_manager.channel_installer import main. Then the code would only be evaluated at import time, which doesn't happen until all required dependencies of a package were installed, fixing the problem reported in OP.

Over all, it seems like you are developing your own package distribution infrastructure of some sort on top of Package Control and use some of its functionality in an undocumented way. If I were the maintainer of PC, I wouldn't be content with supporting this use pattern just for you, to be honest.
I can tell you why you are not using it in the intended way and try to find more reliable alternatives (as I did above), but I wouldn't change the code base just for you.

@FichteFoll
Copy link
Collaborator
FichteFoll commented Dec 9, 2017

Uh, I wasn't finished yet. Anyway:

There is not standard definition of what does is a dependency.

https://packagecontrol.io/docs/dependencies

So, if my ChannelManager is put under that folder, I could not import it on my packages like from ChannelManager.channel_installer import main?

If that is the case, can I just append the $DATA/Lib/python3.3 on the python path to allow these imports?

No, you place your python package (which is a folder with an __init__.py) inside an all directory of your dependency repository. That all folder is then added to sys.path and everything under it will be importable. Globally. This is the guaranteed and documented behavior.

@evandrocoan
Copy link
Author
evandrocoan commented Dec 9, 2017

Well, as soon as you have Python file in the repository root, ST will scan them for subclasses of its command and event listener classes. If it defines any of them, it immediately interfaces with ST.

Oops. Sorry, I did not pay attention to that. I always kept thinking why put everything under the all folder when the code is not platform specific.

Anyways, I was not loading anything into Sublime API, etc. I can refactor the code to do the imports into the all folder.

The thing about your ChannelManager is that it does not provide this "API" in the usual manner, i.e. inside a recognized folder like all/channel_manager, which other plugins could import from using from channel_manager.channel_installer import main. Then the code would only be evaluated at import time, which doesn't happen until all required dependencies of a package were installed, fixing the problem reported in OP.

Let us see if it gets fixed after the refactoring.

Over all, it seems like you are developing your own package distribution infrastructure of some sort on top of Package Control

It is not my own, it is new one. I wrote a pretty extensive README.md for the ChannelManager dependency teaching how to create you own package distribution using the ChannelManager as dependency. But I also had created two packages distribution of my own, which are SublimeStudio and SublimeAmxxSimpleIDE. If the documentation on the ChannelManager README.md is not enough, anyone can use them as example about on how to use the ChannelManager to create their own distribution.

on top of Package Control and use some of its functionality in an undocumented way

Hey, this is what you meant by undocumented way?

I just reused the Package Control code, which is in fact documented. We just do not have an user manual teaching novices how to use the Package Control code/API.

If I were the maintainer of PC, I wouldn't be content with supporting this use pattern just for you, to be honest.

What use pattern? The imports from ChannelManager.channel_installer import main?

Importing like from ChannelManager.channel_installer import main from dependencies and packages is undocumented?

I can tell you why you are not using it in the intended way and try to find more reliable alternatives (as I did above), but I wouldn't change the code base just for you.

Are you saying that the code in not working just because I not put the dependency code into the all folder?

Then it would require change the Package Control code in order for that to work? I do not understand what difference does for the package control dependency installer, whether I put the code into subfolder called all or not.

Why I cannot just do imports like from ChannelManager.channel_installer import main? Whether I import like from ChannelManager.channel_installer import main or from channel_installer import main seems the same thing.

I would like the first one because I am very explicit about what is the code I am importing, and is reduced the chances of name collision. I do like the idea of putting all the dependencies on the system path because of the name collision.

If I import everything explicitly by from DependencyName.file_name import functionality_name I would not have to care about naming collision.

https://packagecontrol.io/docs/dependencies

Then I think I fit the description:

Dependencies are non-user-visible packages that contain binaries, shared libraries or Python modules.

No, you place your python package (which is a folder with an init.py) inside an all directory of your dependency repository. That all folder is then added to sys.path and everything under it will be importable. Globally. This is the guaranteed and documented behavior.

Ok then, let us see if that fixes the package control installer, not installing all my packages dependencies just because their code is not inside a folder called all.

evandrocoan added a commit to evandrocoan/StudioChannel that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/AmxxChannel that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/BufferScroll that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/channelmanager that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/channelmanager that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/channelmanager that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/EstimatedTimeLeft that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/OverrideUnpackedPackages that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/debugtools that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/QuickSettings that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/StudioChannel that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
evandrocoan added a commit to evandrocoan/ITE that referenced this issue Dec 9, 2017
issue:
If a dependency fail running, the subsequent dependencies are not installed by Package Control
wbond/package_control#1301
@evandrocoan
Copy link
Author
evandrocoan commented Dec 10, 2017

After refactoring all the code into the all folder and changing the imports from from ChannelManager.channel_installer import main to from channel_manager.channel_installer import main (I put the file inside the folder ChannelManager/all/channel_manager/), I figured out what was the problem.

I had set on the channel.json the dependencies for the StudioChannel as only ChannelManager and on the ChannelManager dependency I had set the remaining 2 dependencies. But as:

  1. If a dependency has a dependency, its dependencies are not installed #1300 If a dependency has a dependency, its dependencies are not installed

Still not a feature, then it was not installing the 2 remaining dependencies.

Running sublime.active_window().run_command( "satisfy_dependencies" ) was installing the dependencies because I had set on the dependencies.json of the package StudioChannel the ChannelManager and the 2 other dependencies from the ChannelManager.

Package Control has 2 ways of settings dependencies:

To mark a package as requiring one or more dependencies, there are two options:

  1. Add a dependencies key to one of the releases - docs
  2. Add a dependencies.json file to the root of the package - docs

Hence the problem is that Package Control was not installing all the dependencies from the StudioChannel/dependencies.json when reading the dependencies from channel.json, when both dependency requirement alternatives are specified.

@evandrocoan evandrocoan changed the title If a dependency fail running, the subsequent dependencies are not installed by Package Control Not installing all the dependencies from dependencies.json if also reading dependencies from channel.json Dec 10, 2017
@FichteFoll
Copy link
Collaborator

I suggest closing this in favor of #1391.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants
0