1# This Source Code Form is subject to the terms of the Mozilla Public 2# License, v. 2.0. If a copy of the MPL was not distributed with this 3# file, You can obtain one at http://mozilla.org/MPL/2.0/. 4""" Collects visualmetrics dependencies. 5""" 6import os 7import subprocess 8import sys 9import time 10import contextlib 11from distutils.spawn import find_executable 12 13from mozperftest.utils import host_platform 14 15 16_PILLOW_VERSION = "7.2.0" 17_PYSSIM_VERSION = "0.4" 18 19 20def _start_xvfb(): 21 old_display = os.environ.get("DISPLAY") 22 xvfb = find_executable("Xvfb") 23 if xvfb is None: 24 raise FileNotFoundError("Xvfb") 25 cmd = [xvfb, ":99"] 26 proc = subprocess.Popen( 27 cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, close_fds=True 28 ) 29 os.environ["DISPLAY"] = ":99" 30 time.sleep(0.2) 31 return proc, old_display 32 33 34def _stop_xvfb(proc, old_display): 35 proc, old_display 36 if old_display is None: 37 del os.environ["DISPLAY"] 38 else: 39 os.environ["DISPLAY"] = old_display 40 if proc is not None: 41 try: 42 proc.terminate() 43 proc.wait() 44 except OSError: 45 pass 46 47 48@contextlib.contextmanager 49def xvfb(): 50 proc, old_display = _start_xvfb() 51 try: 52 yield 53 finally: 54 _stop_xvfb(proc, old_display) 55 56 57def get_plat(): 58 return host_platform(), f"{sys.version_info.major}.{sys.version_info.minor}" 59 60 61NUMPY = { 62 ("linux64", "3.8",): ( 63 "41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/" 64 "numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl" 65 ), 66 ("linux64", "3.7",): ( 67 "d6/2e/a2dbcff6f46bb65645d18538d67183a1cf56b006ba96a12575c282a976bc/" 68 "numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl" 69 ), 70 ("linux64", "3.6",): ( 71 "b8/e5/a64ef44a85397ba3c377f6be9c02f3cb3e18023f8c89850dd319e7945521/" 72 "numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl" 73 ), 74 ("darwin", "3.8",): ( 75 "33/1a/d10d1c23d21c289a3e87e751a9daf0907e91665cab08d0c35033fd4f5b55/" 76 "numpy-1.19.2-cp38-cp38-macosx_10_9_x86_64.whl" 77 ), 78 ("darwin", "3.7",): ( 79 "c1/a9/f04a5b7db30cc30b41fe516b8914c5049264490a34a49d977937606fbb23/" 80 "numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl" 81 ), 82 ("darwin", "3.6",): ( 83 "be/8e/800113bd3a0c9195b24574b8922ad92be96278028833c389b69a8b14f657/" 84 "numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl" 85 ), 86 ("win64", "3.6",): ( 87 "dc/8e/a78d4e4a28adadbf693a9c056a0d5955a906889fa0dc3768b88deb236e22/" 88 "numpy-1.19.2-cp36-cp36m-win_amd64.whl" 89 ), 90 ("win64", "3.7",): ( 91 "82/4e/61764556b7ec13f5bd441b04530e2f9f11bb164308ef0e6951919bb846cb/" 92 "numpy-1.19.2-cp37-cp37m-win_amd64.whl" 93 ), 94 ("win64", "3.8"): ( 95 "69/89/d8fc61a51ded540bd4b8859510b4ae44a0762c8b61dd81eb2c36f5e853ef/" 96 "numpy-1.19.2-cp38-cp38-win_amd64.whl" 97 ), 98 ("win64", "3.9"): ( 99 "cc/bd/5779abe299afb562cdd434e8229a69a71802cc131ea6d811a8bf05937745/" 100 "numpy-1.20.0-cp39-cp39-win_amd64.whl" 101 ), 102} 103 104 105SCIPY = { 106 ("darwin", "3.8",): ( 107 "8a/84/568ec7727bc789a9b623ec2652043ad3311d7939f152e81cb5d699bfb9b1" 108 "/scipy-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl" 109 ), 110 ("darwin", "3.7",): ( 111 "bc/47/e71e7f198a0b547fe861520a0240e3171256822dae81fcc97a36b772303e" 112 "/scipy-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl" 113 ), 114 ("darwin", "3.6",): ( 115 "00/c0/ddf03baa7ee2a3540d8fbab0fecff7cdd0595dffd91cda746caa95cb686d" 116 "/scipy-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl" 117 ), 118 ("linux64", "3.8",): ( 119 "8f/be/8625045311a3ed58af5f7ca8a51f20b1bbf72e288d34b48cc81cca550166" 120 "/scipy-1.5.2-cp38-cp38-manylinux1_x86_64.whl" 121 ), 122 ("linux64", "3.7",): ( 123 "65/f9/f7a7e5009711579c72da2725174825e5056741bf4001815d097eef1b2e17" 124 "/scipy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl" 125 ), 126 ("linux64", "3.6",): ( 127 "2b/a8/f4c66eb529bb252d50e83dbf2909c6502e2f857550f22571ed8556f62d95" 128 "/scipy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl" 129 ), 130 ("win64", "3.6",): ( 131 "fc/f6/3d455f8b376a0faf1081dbba38bbd594c074292bdec08feaac589f53bc06/" 132 "numpy-1.19.2-cp36-cp36m-win_amd64.whl" 133 ), 134 ("win64", "3.7",): ( 135 "66/80/d8a5050df5b4d8229e018f3222fe603ce7f92c026b78f4e05d69c3a6c43b/" 136 "numpy-1.19.2-cp37-cp37m-win_amd64.whl" 137 ), 138 ("win64", "3.8"): ( 139 "9e/66/57d6cfa52dacd9a57d0289f8b8a614b2b4f9c401c2ac154d6b31ed8257d6/" 140 "numpy-1.19.2-cp38-cp38-win_amd64.whl" 141 ), 142 ("win64", "3.9"): ( 143 "a5/6c/30c838130f75f3aaf65fdf72cc357967d7d2b569bf52c7eb788e6f1eb8c3/" 144 "scipy-1.5.4-cp39-cp39-win_amd64.whl" 145 ), 146} 147 148 149def get_dependencies(): 150 return ( 151 "https://files.pythonhosted.org/packages/" + NUMPY[get_plat()], 152 "https://files.pythonhosted.org/packages/" + SCIPY[get_plat()], 153 "Pillow==%s" % _PILLOW_VERSION, 154 "pyssim==%s" % _PYSSIM_VERSION, 155 "influxdb==5.3.0", 156 "grafana_api==1.0.3", 157 ) 158