mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Factor out dependency checking functions to its own class (ref T9).
This commit is contained in:
parent
c6bca34587
commit
08a6856b3c
@ -23,34 +23,31 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
required_packages = [
|
import util
|
||||||
|
|
||||||
|
deps = {
|
||||||
|
'packages': [
|
||||||
'sudo',
|
'sudo',
|
||||||
'make',
|
'make',
|
||||||
'live-build',
|
'live-build',
|
||||||
'pbuilder',
|
'pbuilder',
|
||||||
'devscripts',
|
'devscripts',
|
||||||
'python-pystache'
|
'python-pystache'
|
||||||
]
|
],
|
||||||
|
'binaries': []
|
||||||
|
}
|
||||||
def is_installed(name):
|
|
||||||
result = os.system("dpkg-query -W --showformat='${{Status}}\n' {name} 2>&1 | grep 'install ok installed' >/dev/null".format(name=name))
|
|
||||||
return True if result == 0 else False
|
|
||||||
|
|
||||||
|
|
||||||
missing_packages = []
|
|
||||||
|
|
||||||
print("Checking if packages required for VyOS image build are installed")
|
print("Checking if packages required for VyOS image build are installed")
|
||||||
|
|
||||||
for p in required_packages:
|
checker = util.DependencyChecker(deps)
|
||||||
if not is_installed(p):
|
|
||||||
missing_packages.append(p)
|
|
||||||
|
|
||||||
if missing_packages:
|
missing = checker.get_missing_dependencies()
|
||||||
print("Your system does not have some of the required packages installed.")
|
if not missing:
|
||||||
print("Please install the following packages:")
|
print("All dependencies are installed")
|
||||||
print(" ".join(missing_packages))
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
print("All required packages are installed")
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
checker.print_missing_deps()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|||||||
@ -21,39 +21,29 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from distutils.spawn import find_executable
|
|
||||||
|
|
||||||
required_packages = [
|
import util
|
||||||
|
|
||||||
|
deps = {
|
||||||
|
'packages': [
|
||||||
'make',
|
'make',
|
||||||
'qemu-system-x86',
|
'qemu-system-x86',
|
||||||
'qemu-utils'
|
'qemu-utils'
|
||||||
]
|
],
|
||||||
|
'binaries': ['packer']
|
||||||
|
}
|
||||||
|
|
||||||
|
print("Checking if packages required for VyOS image build are installed")
|
||||||
|
|
||||||
def is_installed(name):
|
checker = util.DependencyChecker(deps)
|
||||||
result = os.system("dpkg-query -W --showformat='${{Status}}\n' {name} 2>&1 | grep 'install ok installed' >/dev/null".format(name=name))
|
|
||||||
return True if result == 0 else False
|
|
||||||
|
|
||||||
|
missing = checker.get_missing_dependencies()
|
||||||
missing_packages = []
|
if not missing:
|
||||||
|
print("All dependencies are installed")
|
||||||
print("Checking if packages required for VyOS VM image build are installed")
|
sys.exit(0)
|
||||||
|
|
||||||
for p in required_packages:
|
|
||||||
if not is_installed(p):
|
|
||||||
missing_packages.append(p)
|
|
||||||
|
|
||||||
if missing_packages:
|
|
||||||
print("Your system does not have some of the required packages installed.")
|
|
||||||
print("Please install the following packages:")
|
|
||||||
print(" ".join(missing_packages))
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
print("All required packages are installed")
|
|
||||||
|
|
||||||
if find_executable("packer"):
|
|
||||||
print("Your system has Packer.")
|
|
||||||
else:
|
else:
|
||||||
|
checker.print_missing_deps()
|
||||||
|
if 'packer' in missing['binaries']:
|
||||||
print("Your system does not have Packer.")
|
print("Your system does not have Packer.")
|
||||||
print("Please install Packer from https://www.packer.io/downloads.html.")
|
print("Please install Packer from https://www.packer.io/downloads.html.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
from distutils.spawn import find_executable
|
||||||
|
|
||||||
import defaults
|
import defaults
|
||||||
|
|
||||||
@ -27,3 +28,38 @@ def check_build_config():
|
|||||||
print("Build config file ({file}) does not exist".format(file=defaults.BUILD_CONFIG))
|
print("Build config file ({file}) does not exist".format(file=defaults.BUILD_CONFIG))
|
||||||
print("If you are running this script by hand, you should better not. Run 'make iso' instead.")
|
print("If you are running this script by hand, you should better not. Run 'make iso' instead.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
class DependencyChecker(object):
|
||||||
|
def __init__(self, spec):
|
||||||
|
missing_packages = self._get_missing_packages(spec['packages'])
|
||||||
|
missing_binaries = self._get_missing_binaries(spec['binaries'])
|
||||||
|
self.__missing = {'packages': missing_packages, 'binaries': missing_binaries}
|
||||||
|
|
||||||
|
|
||||||
|
def _package_installed(self, name):
|
||||||
|
result = os.system("dpkg-query -W --showformat='${{Status}}\n' {name} 2>&1 | grep 'install ok installed' >/dev/null".format(name=name))
|
||||||
|
return True if result == 0 else False
|
||||||
|
|
||||||
|
def _get_missing_packages(self, packages):
|
||||||
|
missing_packages = []
|
||||||
|
for p in packages:
|
||||||
|
if not self._package_installed(p):
|
||||||
|
missing_packages.append(p)
|
||||||
|
return missing_packages
|
||||||
|
|
||||||
|
def _get_missing_binaries(self, binaries):
|
||||||
|
missing_binaries = []
|
||||||
|
for b in binaries:
|
||||||
|
if not find_executable(b):
|
||||||
|
missing_binaries.append(b)
|
||||||
|
return missing_binaries
|
||||||
|
|
||||||
|
def get_missing_dependencies(self):
|
||||||
|
if self.__missing['packages'] or self.__missing['binaries']:
|
||||||
|
return self.__missing
|
||||||
|
return None
|
||||||
|
|
||||||
|
def print_missing_deps(self):
|
||||||
|
print("Missing packages: " + " ".join(self.__missing['packages']))
|
||||||
|
print("Missing binaries: " + " ".join(self.__missing['binaries']))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user