diff --git a/README.rst b/README.rst index 793c0093a7..2ba9c2c25b 100644 --- a/README.rst +++ b/README.rst @@ -168,15 +168,6 @@ Fedora / CentOS (rpm) sudo yum update sudo yum install dvc -Arch Linux (AUR) -^^^^^^^^^^^^^^^^ -*Unofficial package*, any inquiries regarding the AUR package, -`refer to the maintainer `_. - -.. code-block:: bash - - yay -S dvc - Related technologies ==================== diff --git a/dvc/command/version.py b/dvc/command/version.py index ad03858619..e8e687d2db 100644 --- a/dvc/command/version.py +++ b/dvc/command/version.py @@ -18,7 +18,7 @@ from dvc.version import __version__ from dvc.exceptions import DvcException, NotDvcRepoError from dvc.system import System -from dvc.utils.pkg import get_package_manager +from dvc.utils.pkg import PKG logger = logging.getLogger(__name__) @@ -31,19 +31,18 @@ def run(self): python_version = platform.python_version() platform_type = platform.platform() binary = is_binary() - package_manager = get_package_manager() info = ( "DVC version: {dvc_version}\n" "Python version: {python_version}\n" "Platform: {platform_type}\n" "Binary: {binary}\n" - "Package manager: {package_manager}\n" + "Package: {package}\n" ).format( dvc_version=dvc_version, python_version=python_version, platform_type=platform_type, binary=binary, - package_manager=package_manager, + package=PKG, ) try: diff --git a/dvc/updater.py b/dvc/updater.py index a9da1183e7..279d5d23af 100644 --- a/dvc/updater.py +++ b/dvc/updater.py @@ -13,7 +13,7 @@ from dvc.lock import LockError from dvc.utils import boxify from dvc.utils import env2bool -from dvc.utils.pkg import get_package_manager +from dvc.utils.pkg import PKG logger = logging.getLogger(__name__) @@ -123,10 +123,9 @@ def _notify(self): def _get_update_instructions(self): instructions = { "pip": "Run {yellow}pip{reset} install dvc {blue}--upgrade{reset}", - "yum": "Run {yellow}yum{reset} update dvc", - "yay": "Run {yellow}yay{reset} {blue}-S{reset} dvc", - "formula": "Run {yellow}brew{reset} upgrade dvc", - "apt": ( + "rpm": "Run {yellow}yum{reset} update dvc", + "brew": "Run {yellow}brew{reset} upgrade dvc", + "deb": ( "Run {yellow}apt-get{reset} install" " {blue}--only-upgrade{reset} dvc" ), @@ -136,7 +135,7 @@ def _get_update_instructions(self): "2. Go to {blue}https://dvc.org{reset}\n" "3. Download and install new binary" ), - "conda": "Run {yellow}conda{reset} {update}update{reset} dvc", + "conda": "Run {yellow}conda{reset} update dvc", None: ( "Find the latest release at\n{blue}" "https://github.com/iterative/dvc/releases/latest" @@ -144,6 +143,8 @@ def _get_update_instructions(self): ), } - package_manager = get_package_manager() + package_manager = PKG + if package_manager in ("osxpkg", "exe"): + package_manager = "binary" return instructions[package_manager] diff --git a/dvc/utils/pkg.py b/dvc/utils/pkg.py index 4d2a0228df..5d04b78ba9 100644 --- a/dvc/utils/pkg.py +++ b/dvc/utils/pkg.py @@ -1,63 +1,4 @@ -from dvc.utils import is_binary - - -def is_conda(): - try: - from .build import PKG # patched during conda package build - - return PKG == "conda" - except ImportError: - return False - - -def get_linux(): - import distro - - if not is_binary(): - return "pip" - - package_managers = { - "rhel": "yum", - "centos": "yum", - "fedora": "yum", - "amazon": "yum", - "opensuse": "yum", - "ubuntu": "apt", - "debian": "apt", - } - - return package_managers.get(distro.id()) - - -def get_darwin(): - if not is_binary(): - if __file__.startswith("/usr/local/Cellar"): - return "formula" - else: - return "pip" - return None - - -def get_windows(): - return None if is_binary() else "pip" - - -def get_package_manager(): - import platform - from dvc.exceptions import DvcException - - if is_conda(): - return "conda" - - m = { - "Windows": get_windows(), - "Darwin": get_darwin(), - "Linux": get_linux(), - } - - system = platform.system() - func = m.get(system) - if func is None: - raise DvcException("not supported system '{}'".format(system)) - - return func +try: + from .build import PKG # file created during dvc build +except ImportError: + PKG = None diff --git a/scripts/build_package.sh b/scripts/build_package.sh index 218fde1b16..d64f3e6e43 100755 --- a/scripts/build_package.sh +++ b/scripts/build_package.sh @@ -8,6 +8,8 @@ if [ ! -d "dvc" ]; then exit 1 fi +echo "PKG = \"pip\"" > dvc/utils/build.py + python setup.py sdist python setup.py bdist_wheel --universal diff --git a/scripts/build_posix.sh b/scripts/build_posix.sh index 86e44181f4..53e07dacfb 100755 --- a/scripts/build_posix.sh +++ b/scripts/build_posix.sh @@ -131,15 +131,21 @@ build_dvc() fi } -cleanup +build() +{ + cleanup + echo "PKG = \"$1\"" > dvc/utils/build.py + build_dvc + fpm_build $1 +} + install_dependencies -build_dvc if [[ "$(uname)" == 'Linux' ]]; then - fpm_build rpm - fpm_build deb + build rpm + build deb else - fpm_build osxpkg + build osxpkg fi cleanup diff --git a/scripts/build_windows.cmd b/scripts/build_windows.cmd index d9a2942fe9..61ff864c57 100755 --- a/scripts/build_windows.cmd +++ b/scripts/build_windows.cmd @@ -21,6 +21,7 @@ where iscc if %errorlevel% neq 0 (echo Error: Couldn't find Inno Setup compiler. && goto :error) echo ====== Installing requirements... ====== +echo 'PKG = "exe"' > dvc\utils\build.py call pip install .[all] || goto :error call pip install psutil || goto :error call dvc pull || goto :error diff --git a/tests/func/test_updater.py b/tests/func/test_updater.py index bef364bbfa..4045c0ca67 100644 --- a/tests/func/test_updater.py +++ b/tests/func/test_updater.py @@ -50,13 +50,3 @@ def test_check_version_outdated(updater): updater.current = "0.20.8" assert updater._is_outdated() - - -@mock.patch("dvc.utils.pkg.is_conda") -def test_check_dvc_from_conda(mocked_is_conda, updater): - mocked_is_conda.return_value = True - updater.latest = "0.21.0" - updater.current = "0.20.8" - - msg = "Run {yellow}conda{reset} {update}update{reset} dvc" - assert updater._get_update_instructions() == msg diff --git a/tests/func/test_version.py b/tests/func/test_version.py index dae8aef5f4..c8614acd61 100644 --- a/tests/func/test_version.py +++ b/tests/func/test_version.py @@ -10,14 +10,13 @@ def test_info_in_repo(repo_dir, dvc_repo, caplog): # adding a file so that dvc creates `.dvc/cache`, that is needed for proper # supported link types check. assert main(["add", repo_dir.FOO]) == 0 - assert main(["version"]) == 0 assert re.search(re.compile(r"DVC version: \d+\.\d+\.\d+"), caplog.text) assert re.search(re.compile(r"Python version: \d\.\d\.\d"), caplog.text) assert re.search(re.compile(r"Platform: .*"), caplog.text) assert re.search(re.compile(r"Binary: (True|False)"), caplog.text) - assert re.search(re.compile(r"Package manager: .*"), caplog.text) + assert re.search(re.compile(r"Package: .*"), caplog.text) assert re.search( re.compile(r"(Cache: (.*link - (True|False)(,\s)?){3})"), caplog.text ) @@ -42,7 +41,7 @@ def test_info_outside_of_repo(repo_dir, caplog): assert re.search(re.compile(r"Python version: \d\.\d\.\d"), caplog.text) assert re.search(re.compile(r"Platform: .*"), caplog.text) assert re.search(re.compile(r"Binary: (True|False)"), caplog.text) - assert re.search(re.compile(r"Package manager: .*"), caplog.text) + assert re.search(re.compile(r"Package: .*"), caplog.text) assert not re.search( re.compile(r"(Cache: (.*link - (True|False)(,\s)?){3})"), caplog.text )