1
0
Fork 0
mirror of synced 2024-06-27 02:20:36 +12:00

add md5 hashes to dependencies dict

This commit is contained in:
Nick Sweeting 2019-04-22 14:34:12 -04:00
parent 29ced7b5c8
commit 50b947f41d

View file

@ -1,12 +1,14 @@
__package__ = 'archivebox.legacy' __package__ = 'archivebox.legacy'
import os import os
import io
import re import re
import sys import sys
import django import django
import getpass import getpass
import shutil import shutil
from hashlib import md5
from typing import Optional from typing import Optional
from subprocess import run, PIPE, DEVNULL from subprocess import run, PIPE, DEVNULL
@ -173,6 +175,18 @@ def bin_version(binary: str) -> Optional[str]:
stderr() stderr()
return None return None
def bin_hash(binary: str) -> Optional[str]:
bin_path = binary and shutil.which(os.path.expanduser(binary))
if not bin_path:
return None
file_hash = md5()
with io.open(bin_path, mode='rb') as f:
for chunk in iter(lambda: f.read(io.DEFAULT_BUFFER_SIZE), b''):
file_hash.update(chunk)
return f'md5:{file_hash.hexdigest()}'
def find_chrome_binary() -> Optional[str]: def find_chrome_binary() -> Optional[str]:
"""find any installed chrome binaries in the default locations""" """find any installed chrome binaries in the default locations"""
@ -372,42 +386,49 @@ try:
'PYTHON_BINARY': { 'PYTHON_BINARY': {
'path': PYTHON_BINARY, 'path': PYTHON_BINARY,
'version': PYTHON_VERSION, 'version': PYTHON_VERSION,
'hash': bin_hash(PYTHON_BINARY),
'enabled': True, 'enabled': True,
'is_valid': bool(DJANGO_VERSION), 'is_valid': bool(DJANGO_VERSION),
}, },
'DJANGO_BINARY': { 'DJANGO_BINARY': {
'path': DJANGO_BINARY, 'path': DJANGO_BINARY,
'version': DJANGO_VERSION, 'version': DJANGO_VERSION,
'hash': bin_hash(DJANGO_BINARY),
'enabled': True, 'enabled': True,
'is_valid': bool(DJANGO_VERSION), 'is_valid': bool(DJANGO_VERSION),
}, },
'CURL_BINARY': { 'CURL_BINARY': {
'path': CURL_BINARY and shutil.which(CURL_BINARY), 'path': CURL_BINARY and shutil.which(CURL_BINARY),
'version': CURL_VERSION, 'version': CURL_VERSION,
'hash': bin_hash(PYTHON_BINARY),
'enabled': USE_CURL, 'enabled': USE_CURL,
'is_valid': bool(CURL_VERSION), 'is_valid': bool(CURL_VERSION),
}, },
'WGET_BINARY': { 'WGET_BINARY': {
'path': WGET_BINARY and shutil.which(WGET_BINARY), 'path': WGET_BINARY and shutil.which(WGET_BINARY),
'version': WGET_VERSION, 'version': WGET_VERSION,
'hash': bin_hash(WGET_BINARY),
'enabled': USE_WGET, 'enabled': USE_WGET,
'is_valid': bool(WGET_VERSION), 'is_valid': bool(WGET_VERSION),
}, },
'GIT_BINARY': { 'GIT_BINARY': {
'path': GIT_BINARY and shutil.which(GIT_BINARY), 'path': GIT_BINARY and shutil.which(GIT_BINARY),
'version': GIT_VERSION, 'version': GIT_VERSION,
'hash': bin_hash(GIT_BINARY),
'enabled': FETCH_GIT, 'enabled': FETCH_GIT,
'is_valid': bool(GIT_VERSION), 'is_valid': bool(GIT_VERSION),
}, },
'YOUTUBEDL_BINARY': { 'YOUTUBEDL_BINARY': {
'path': YOUTUBEDL_BINARY and shutil.which(YOUTUBEDL_BINARY), 'path': YOUTUBEDL_BINARY and shutil.which(YOUTUBEDL_BINARY),
'version': YOUTUBEDL_VERSION, 'version': YOUTUBEDL_VERSION,
'hash': bin_hash(YOUTUBEDL_BINARY),
'enabled': FETCH_MEDIA, 'enabled': FETCH_MEDIA,
'is_valid': bool(YOUTUBEDL_VERSION), 'is_valid': bool(YOUTUBEDL_VERSION),
}, },
'CHROME_BINARY': { 'CHROME_BINARY': {
'path': CHROME_BINARY and shutil.which(CHROME_BINARY), 'path': CHROME_BINARY and shutil.which(CHROME_BINARY),
'version': CHROME_VERSION, 'version': CHROME_VERSION,
'hash': bin_hash(CHROME_BINARY),
'enabled': USE_CHROME, 'enabled': USE_CHROME,
'is_valid': bool(CHROME_VERSION), 'is_valid': bool(CHROME_VERSION),
}, },