| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package runci.targets;
- import sys.FileSystem;
- import runci.System.*;
- import runci.Config.*;
- class Python {
- static public function getPythonDependencies():Array<String> {
- switch (systemName) {
- case "Linux":
- if (commandSucceed("python3", ["-V"]))
- infoMsg('python3 has already been installed.');
- else
- Linux.requireAptPackages(["python3"]);
- runCommand("python3", ["-V"]);
- var pypy = "pypy3";
- if (commandSucceed(pypy, ["-V"])) {
- infoMsg('pypy3 has already been installed.');
- } else {
- final pypyVersion = "pypy3.8-v7.3.7-" + (switch Linux.arch {
- case Arm64: "aarch64";
- case Amd64: "linux64";
- });
- final file = '${pypyVersion}.tar.bz2';
- if(!FileSystem.exists(file)) {
- runNetworkCommand("wget", ["-nv", 'https://downloads.python.org/pypy/$file']);
- }
- runCommand("tar", ["-xf", file]);
- pypy = FileSystem.fullPath('${pypyVersion}/bin/pypy3');
- }
- runCommand(pypy, ["-V"]);
- return ["python3", pypy];
- case "Mac":
- if (commandSucceed("python3", ["-V"]))
- infoMsg('python3 has already been installed.');
- else
- runNetworkCommand("brew", ["install", "python3"]);
- runCommand("python3", ["-V"]);
- if (commandSucceed("pypy3", ["-V"]))
- infoMsg('pypy3 has already been installed.');
- else
- runNetworkCommand("brew", ["install", "pypy3"]);
- runCommand("pypy3", ["-V"]);
- return ["python3", "pypy3"];
- case "Windows":
- if (commandSucceed("python3", ["-V"]))
- infoMsg('python3 has already been installed.');
- else
- throw "please install python 3.x and make it available as python3 in PATH";
- runCommand("python3", ["-V"]);
- return ["python3"];
- }
- return [];
- }
- static public function run(args:Array<String>) {
- final pys = getPythonDependencies();
- runCommand("haxe", ["compile-python.hxml"].concat(args));
- for (py in pys) {
- runCommand(py, ["bin/unit.py"]);
- // Additional test for python-version >= 3.4
- runCommand(py, ["bin/unit34.py"]);
- }
- Display.maybeRunDisplayTests(Python);
- changeDirectory(sysDir);
- runCommand("haxe", ["compile-python.hxml"].concat(args));
- for (py in pys) {
- runSysTest(py, ["bin/python/sys.py"]);
- }
- changeDirectory(getMiscSubDir("python"));
- runCommand("haxe", ["run.hxml"]);
- changeDirectory(getMiscSubDir('python', "pythonImport"));
- runCommand("haxe", ["compile.hxml"]);
- for (py in pys) {
- runCommand(py, ["test.py"]);
- }
- changeDirectory(threadsDir);
- runCommand("haxe", ["build.hxml", "--python", "export/threads.py"].concat(args));
- for (py in pys) {
- runCommand(py, ["export/threads.py"]);
- }
- }
- }
|