From e1dfb7505582aba851a535b4058de949f8d5b0aa Mon Sep 17 00:00:00 2001 From: n3hrox Date: Sun, 10 Nov 2019 19:46:48 +0100 Subject: [PATCH] Refactor get_package_manager --- dvc/command/version.py | 8 ++- dvc/updater.py | 9 ++-- dvc/utils/bulid.py | 1 + dvc/utils/pkg.py | 54 ++----------------- scripts/build_posix.sh | 5 +- scripts/build_windows.cmd | 2 +- scripts/patches/deb.patch | 14 +++++ .../patches/{darwin.patch => osxpkg.patch} | 8 +-- scripts/patches/rpm.patch | 14 +++++ scripts/patches/windows.patch | 15 ++---- 10 files changed, 48 insertions(+), 82 deletions(-) create mode 100644 dvc/utils/bulid.py create mode 100644 scripts/patches/deb.patch rename scripts/patches/{darwin.patch => osxpkg.patch} (58%) create mode 100644 scripts/patches/rpm.patch diff --git a/dvc/command/version.py b/dvc/command/version.py index 38b16cc93..0025ee4b2 100644 --- a/dvc/command/version.py +++ b/dvc/command/version.py @@ -18,7 +18,7 @@ from dvc.command.base import CmdBaseNoRepo, append_doc_link from dvc.version import __version__ from dvc.exceptions import DvcException, NotDvcRepoError from dvc.system import System -from dvc.utils.pkg import get_package_manager, check_build_patch +from dvc.utils.pkg import get_package_manager logger = logging.getLogger(__name__) @@ -30,16 +30,14 @@ class CmdVersion(CmdBaseNoRepo): dvc_version = __version__ python_version = platform.python_version() platform_type = platform.platform() - binary = False - if is_binary(): - binary = check_build_patch() + 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 type: {package_manager}\n" ).format( dvc_version=dvc_version, python_version=python_version, diff --git a/dvc/updater.py b/dvc/updater.py index a9da1183e..cdb9490e4 100644 --- a/dvc/updater.py +++ b/dvc/updater.py @@ -123,14 +123,13 @@ class Updater(object): # pragma: no cover 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", + "osxpkg": "Run {yellow}brew{reset} upgrade dvc", + "deb": ( "Run {yellow}apt-get{reset} install" " {blue}--only-upgrade{reset} dvc" ), - "binary": ( + "exe": ( "To upgrade follow these steps:\n" "1. Uninstall dvc binary\n" "2. Go to {blue}https://dvc.org{reset}\n" diff --git a/dvc/utils/bulid.py b/dvc/utils/bulid.py new file mode 100644 index 000000000..ada7a0bba --- /dev/null +++ b/dvc/utils/bulid.py @@ -0,0 +1 @@ +PKG = "windows" diff --git a/dvc/utils/pkg.py b/dvc/utils/pkg.py index 08a2875ce..df4493138 100644 --- a/dvc/utils/pkg.py +++ b/dvc/utils/pkg.py @@ -7,57 +7,11 @@ def check_build_patch(): return PKG 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 check_build_patch() == "darwin": - return "formula" - else: - return "pip" - return None - - -def get_windows(): - return None if is_binary() else "pip" + return None def get_package_manager(): - import platform - from dvc.exceptions import DvcException + if not is_binary(): + return "pip" - if check_build_patch() == "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 + return check_build_patch() diff --git a/scripts/build_posix.sh b/scripts/build_posix.sh index 56b383f6a..c37acf6bb 100755 --- a/scripts/build_posix.sh +++ b/scripts/build_posix.sh @@ -52,6 +52,7 @@ command_exists() fpm_build() { print_info "Building $1..." + git apply "$(pwd)/scripts/$1.patch" VERSION=$(python -c "import dvc; from dvc import __version__; print(str(__version__))") fpm -s dir \ -f \ @@ -103,10 +104,6 @@ build_dvc() { print_info "Building dvc binary..." - if [[ "$(uname)" != 'Linux' ]]; then - git apply $(pwd)/scripts/darwin.patch - fi - pyinstaller \ --additional-hooks-dir $(pwd)/scripts/hooks dvc/__main__.py \ --name dvc \ diff --git a/scripts/build_windows.cmd b/scripts/build_windows.cmd index de7e8f79b..0df597f31 100755 --- a/scripts/build_windows.cmd +++ b/scripts/build_windows.cmd @@ -22,7 +22,7 @@ where iscc if %errorlevel% neq 0 (echo Error: Couldn't find Inno Setup compiler. && goto :error) echo ====== Installing requirements... ====== -call git patch scripts/patches/windows.patch +call git patch scripts\patches\windows.patch call pip install .[all] || goto :error call pip install psutil || goto :error call dvc pull || goto :error diff --git a/scripts/patches/deb.patch b/scripts/patches/deb.patch new file mode 100644 index 000000000..1ece153cf --- /dev/null +++ b/scripts/patches/deb.patch @@ -0,0 +1,14 @@ +--- + dvc/utils/build.py | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 dvc/utils/build.py + +diff --git a/dvc/utils/build.py b/dvc/utils/build.py +new file mode 100644 +index 00000000..ada7a0bb +--- /dev/null ++++ b/dvc/utils/build.py +@@ -0,0 +1 @@ ++PKG = "deb" +-- +2.17.1 diff --git a/scripts/patches/darwin.patch b/scripts/patches/osxpkg.patch similarity index 58% rename from scripts/patches/darwin.patch rename to scripts/patches/osxpkg.patch index efcb75b19..21de8fff4 100644 --- a/scripts/patches/darwin.patch +++ b/scripts/patches/osxpkg.patch @@ -1,8 +1,3 @@ -From 71707795d27aa848d71780b84e056b4f5735650c Mon Sep 17 00:00:00 2001 -From: n3hrox -Date: Sun, 10 Nov 2019 17:35:10 +0100 -Subject: [PATCH] Darwin patch - --- dvc/utils/build.py | 1 + 1 file changed, 1 insertion(+) @@ -14,7 +9,6 @@ index 00000000..3d149b9a --- /dev/null +++ b/dvc/utils/build.py @@ -0,0 +1 @@ -+PKG = "darwin" ++PKG = "osxpkg" -- 2.17.1 - diff --git a/scripts/patches/rpm.patch b/scripts/patches/rpm.patch new file mode 100644 index 000000000..d9157d9e8 --- /dev/null +++ b/scripts/patches/rpm.patch @@ -0,0 +1,14 @@ +--- + dvc/utils/build.py | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 dvc/utils/build.py + +diff --git a/dvc/utils/build.py b/dvc/utils/build.py +new file mode 100644 +index 00000000..ada7a0bb +--- /dev/null ++++ b/dvc/utils/build.py +@@ -0,0 +1 @@ ++PKG = "rpm" +-- +2.17.1 diff --git a/scripts/patches/windows.patch b/scripts/patches/windows.patch index 7b8c7f852..32a293b6b 100644 --- a/scripts/patches/windows.patch +++ b/scripts/patches/windows.patch @@ -1,19 +1,14 @@ -From 6b53dcffe5e13cb3c196d29a495d8da9bcc26d6d Mon Sep 17 00:00:00 2001 -From: n3hrox -Date: Sun, 10 Nov 2019 15:44:14 +0100 -Subject: [PATCH] Windows patch - --- - dvc/utils/buid.py | 1 + + dvc/utils/build.py | 1 + 1 file changed, 1 insertion(+) - create mode 100644 dvc/utils/buid.py + create mode 100644 dvc/utils/build.py -diff --git a/dvc/utils/buid.py b/dvc/utils/buid.py +diff --git a/dvc/utils/build.py b/dvc/utils/build.py new file mode 100644 index 00000000..ada7a0bb --- /dev/null -+++ b/dvc/utils/buid.py ++++ b/dvc/utils/build.py @@ -0,0 +1 @@ -+PKG = "windows" ++PKG = "exe" -- 2.17.1