def packages_are_installed()

in build/fbcode_builder/getdeps/fetcher.py [0:0]


    def packages_are_installed(self):
        if self.installed is not None:
            return self.installed

        cmd = None
        if self.manager == "rpm":
            cmd = ["rpm", "-q"] + sorted(self.packages)
        elif self.manager == "deb":
            cmd = ["dpkg", "-s"] + sorted(self.packages)
        elif self.manager == "homebrew":
            cmd = ["brew", "ls", "--versions"] + sorted(self.packages)

        if cmd:
            proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            if proc.returncode == 0:
                # captured as binary as we will hash this later
                self.installed = proc.stdout
            else:
                # Need all packages to be present to consider us installed
                self.installed = False

        else:
            self.installed = False

        return bool(self.installed)