class VirtManager < Formula include Language::Python::Virtualenv desc "App for managing virtual machines" homepage "https://virt-manager.org/" url "https://releases.pagure.org/virt-manager/virt-manager-4.1.0.tar.gz" sha256 "950681d7b32dc61669278ad94ef31da33109bf6fcf0426ed82dfd7379aa590a2" license "GPL-2.0-or-later" revision 3 head "https://github.com/virt-manager/virt-manager.git", branch: "main" bottle do rebuild 3 sha256 cellar: :any, arm64_ventura: "defb94b2cf5538676af8757e65456c5667f54470d0dc4396f550b1b1871fa4ce" sha256 cellar: :any, arm64_monterey: "74a019f2782a314223c5cdebb7fd7800eba143da472944e4be8aa4a099174763" sha256 cellar: :any, arm64_big_sur: "a92a01c82747ee7fda0f8c667eca48733d62dd4995e85d640c44fe789920b7a5" sha256 cellar: :any, ventura: "a270cb5df26a6680ad74a4f2e714bedb9034b8d7df241e1ac54480e014f12e83" sha256 cellar: :any, monterey: "121d36cf07eb44a6491cb874edf4098532525aab34e5018e2e7ae6fb8cba2273" sha256 cellar: :any, big_sur: "ec6723ce30f513eea3bfac1d5235113330b4fe235c5e02e879e95e5f1a93e69e" end depends_on "docutils" => :build depends_on "intltool" => :build depends_on "pkg-config" => :build depends_on "adwaita-icon-theme" depends_on "cpio" depends_on "gtk-vnc" depends_on "gtksourceview4" depends_on "libosinfo" depends_on "libvirt-glib" depends_on "libxml2" # can't use from macos, since we need python3 bindings depends_on :macos depends_on "osinfo-db" depends_on "py3cairo" depends_on "pygobject3" depends_on "python@3.11" depends_on "spice-gtk" depends_on "vte3" # Resources are for Python `libvirt-python` and `requests` packages resource "certifi" do url "https://files.pythonhosted.org/packages/37/f7/2b1b0ec44fdc30a3d31dfebe52226be9ddc40cd6c0f34ffc8923ba423b69/certifi-2022.12.7.tar.gz" sha256 "35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3" end resource "charset-normalizer" do url "https://files.pythonhosted.org/packages/a1/34/44964211e5410b051e4b8d2869c470ae8a68ae274953b1c7de6d98bbcf94/charset-normalizer-2.1.1.tar.gz" sha256 "5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845" end resource "idna" do url "https://files.pythonhosted.org/packages/8b/e1/43beb3d38dba6cb420cefa297822eac205a277ab43e5ba5d5c46faf96438/idna-3.4.tar.gz" sha256 "814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4" end resource "libvirt-python" do url "https://files.pythonhosted.org/packages/38/95/a072b313855a210370837b626ee683c0ac04d198e646e4aaf027ca707eea/libvirt-python-9.0.0.tar.gz" sha256 "49702d33fa8cbcae19fa727467a69f7ae2241b3091324085ca1cc752b2b414ce" end resource "requests" do url "https://files.pythonhosted.org/packages/9d/ee/391076f5937f0a8cdf5e53b701ffc91753e87b07d66bae4a09aa671897bf/requests-2.28.2.tar.gz" sha256 "98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf" end resource "urllib3" do url "https://files.pythonhosted.org/packages/c5/52/fe421fb7364aa738b3506a2d99e4f3a56e079c0a798e9f4fa5e14c60922f/urllib3-1.26.14.tar.gz" sha256 "076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72" end def install python = "python3.11" venv = virtualenv_create(libexec, python) venv.pip_install resources args = Language::Python.setup_install_args(prefix, python) args.insert((args.index "install"), "--no-update-icon-cache", "--no-compile-schemas") system libexec/"bin/python", "setup.py", "configure", "--prefix=#{prefix}" system libexec/"bin/python", *args end def post_install # manual schema compile step system Formula["glib"].opt_bin/"glib-compile-schemas", HOMEBREW_PREFIX/"share/glib-2.0/schemas" # manual icon cache update step system Formula["gtk+3"].opt_bin/"gtk3-update-icon-cache", HOMEBREW_PREFIX/"share/icons/hicolor" end test do libvirt_pid = fork do exec Formula["libvirt"].opt_sbin/"libvirtd", "-f", Formula["libvirt"].etc/"libvirt/libvirtd.conf" end output = testpath/"virt-manager.log" virt_manager_pid = fork do $stdout.reopen(output) $stderr.reopen(output) exec bin/"virt-manager", "-c", "test:///default", "--debug" end sleep 10 assert_match "conn=test:///default changed to state=Active", output.read ensure Process.kill("TERM", libvirt_pid) Process.kill("TERM", virt_manager_pid) Process.wait(libvirt_pid) Process.wait(virt_manager_pid) end end