mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
bootstrap: More resiliently install Deiban-like platform dependencies (#31281)
1. First check to see if a package is available before trying to install it. This means that we always do our best to install everything, but don't fail if we cannot. 2. Install crown and taplo first. This means that if the platform-specific bits fail, we still install Servo-specific dependencies.
This commit is contained in:
parent
b62d169f0f
commit
38b11afb22
2 changed files with 12 additions and 10 deletions
|
@ -55,9 +55,9 @@ class Base:
|
|||
return False
|
||||
|
||||
def bootstrap(self, force: bool):
|
||||
installed_something = self._platform_bootstrap(force)
|
||||
installed_something |= self.install_taplo(force)
|
||||
installed_something = self.install_taplo(force)
|
||||
installed_something |= self.install_crown(force)
|
||||
installed_something |= self._platform_bootstrap(force)
|
||||
if not installed_something:
|
||||
print("Dependencies were already installed!")
|
||||
|
||||
|
|
|
@ -153,15 +153,17 @@ class Linux(Base):
|
|||
def install_non_gstreamer_dependencies(self, force: bool) -> bool:
|
||||
install = False
|
||||
pkgs = []
|
||||
if self.distro in ['Ubuntu', 'Raspbian GNU/Linux']:
|
||||
command = ['apt-get', 'install']
|
||||
if self.distro in ['Ubuntu', 'Debian GNU/Linux', 'Raspbian GNU/Linux']:
|
||||
command = ['apt-get', 'install', "-m"]
|
||||
pkgs = APT_PKGS
|
||||
if subprocess.call(['dpkg', '-s'] + pkgs, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE) != 0:
|
||||
install = True
|
||||
elif self.distro == 'Debian GNU/Linux':
|
||||
command = ['apt-get', 'install']
|
||||
pkgs = [pkg for pkg in APT_PKGS if pkg != 'libgstreamer-plugins-good1.0-dev']
|
||||
|
||||
# Try to filter out unknown packages from the list. This is important for Debian
|
||||
# as it does not ship all of the packages we want.
|
||||
installable = subprocess.check_output(['apt-cache', '--generate', 'pkgnames'])
|
||||
if installable:
|
||||
installable = installable.decode("ascii").splitlines()
|
||||
pkgs = list(filter(lambda pkg: pkg in installable, pkgs))
|
||||
|
||||
if subprocess.call(['dpkg', '-s'] + pkgs, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE) != 0:
|
||||
install = True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue