diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml index b2771559b..76c1bd8a0 100644 --- a/.github/workflows/build-ci.yml +++ b/.github/workflows/build-ci.yml @@ -45,7 +45,7 @@ jobs: powershell Start-Process -PassThru -Wait PowerShell -ArgumentList "'-Command Set-MpPreference -DisableBehaviorMonitoring \$true'" powershell Start-Process -PassThru -Wait PowerShell -ArgumentList "'-Command Set-MpPreference -DisableRealtimeMonitoring \$true'" powershell Start-Process -PassThru -Wait PowerShell -ArgumentList "'-Command Add-MpPreference -ExclusionPath $GITHUB_WORKSPACE'" - pip3 install . + pip3 install ".[test]" cd examples rm -rf rootfs curl -LJk -o master.zip https://github.com/qilingframework/rootfs/archive/refs/heads/master.zip && unzip master.zip diff --git a/ARCHITECTURE/modules/cli-build.md b/ARCHITECTURE/modules/cli-build.md index 89b5bd752..95d3e0f94 100644 --- a/ARCHITECTURE/modules/cli-build.md +++ b/ARCHITECTURE/modules/cli-build.md @@ -34,7 +34,9 @@ Use the [root baseline](../../ARCHITECTURE.md#code-conventions). arguments. Preserve option names and exit status. TUI uses questionary/fx/ termcolor; testing its import is not testing its prompts. Keep build metadata in the manifest, resolve its lock with Poetry, and retain package license -and resource attribution. Documentation here contains coding context only. +and resource attribution. Test-only dependencies belong in the `test` +extra, which the Windows CI job installs; runtime dependants must not +receive them. Documentation here contains coding context only. ## Contracts and Invariants diff --git a/poetry.lock b/poetry.lock index 2d99b4731..b293e4d8e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.5.1 and should not be changed by hand. [[package]] name = "antlr4-python3-runtime" @@ -178,9 +178,10 @@ dev = ["black", "coveralls", "mypy", "pre-commit", "pylint", "pytest (>=5)", "py name = "dill" version = "0.3.9" description = "serialize all of Python" -optional = false +optional = true python-versions = ">=3.8" groups = ["main"] +markers = "extra == \"test\"" files = [ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, @@ -413,15 +414,16 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["Sphinx (==7.2.5) ; python_version >= \"3.9\"", "colorama (==0.4.5) ; python_version < \"3.8\"", "colorama (==0.4.6) ; python_version >= \"3.8\"", "exceptiongroup (==1.1.3) ; python_version >= \"3.7\" and python_version < \"3.11\"", "freezegun (==1.1.0) ; python_version < \"3.8\"", "freezegun (==1.2.2) ; python_version >= \"3.8\"", "mypy (==v0.910) ; python_version < \"3.6\"", "mypy (==v0.971) ; python_version == \"3.6\"", "mypy (==v1.4.1) ; python_version == \"3.7\"", "mypy (==v1.5.1) ; python_version >= \"3.8\"", "pre-commit (==3.4.0) ; python_version >= \"3.8\"", "pytest (==6.1.2) ; python_version < \"3.8\"", "pytest (==7.4.0) ; python_version >= \"3.8\"", "pytest-cov (==2.12.1) ; python_version < \"3.8\"", "pytest-cov (==4.1.0) ; python_version >= \"3.8\"", "pytest-mypy-plugins (==1.9.3) ; python_version >= \"3.6\" and python_version < \"3.8\"", "pytest-mypy-plugins (==3.0.0) ; python_version >= \"3.8\"", "sphinx-autobuild (==2021.3.14) ; python_version >= \"3.9\"", "sphinx-rtd-theme (==1.3.0) ; python_version >= \"3.9\"", "tox (==3.27.1) ; python_version < \"3.8\"", "tox (==4.11.0) ; python_version >= \"3.8\""] +dev = ["Sphinx (==7.2.5) ; python_version >= \"3.9\"", "colorama (==0.4.5) ; python_version < \"3.8\"", "colorama (==0.4.6) ; python_version >= \"3.8\"", "exceptiongroup (==1.1.3) ; python_version >= \"3.7\" and python_version < \"3.11\"", "freezegun (==1.1.0) ; python_version < \"3.8\"", "freezegun (==1.2.2) ; python_version >= \"3.8\"", "mypy (==0.910) ; python_version < \"3.6\"", "mypy (==0.971) ; python_version == \"3.6\"", "mypy (==1.4.1) ; python_version == \"3.7\"", "mypy (==1.5.1) ; python_version >= \"3.8\"", "pre-commit (==3.4.0) ; python_version >= \"3.8\"", "pytest (==6.1.2) ; python_version < \"3.8\"", "pytest (==7.4.0) ; python_version >= \"3.8\"", "pytest-cov (==2.12.1) ; python_version < \"3.8\"", "pytest-cov (==4.1.0) ; python_version >= \"3.8\"", "pytest-mypy-plugins (==1.9.3) ; python_version >= \"3.6\" and python_version < \"3.8\"", "pytest-mypy-plugins (==3.0.0) ; python_version >= \"3.8\"", "sphinx-autobuild (==2021.3.14) ; python_version >= \"3.9\"", "sphinx-rtd-theme (==1.3.0) ; python_version >= \"3.9\"", "tox (==3.27.1) ; python_version < \"3.8\"", "tox (==4.11.0) ; python_version >= \"3.8\""] [[package]] name = "multiprocess" version = "0.70.17" description = "better multiprocessing and multithreading in Python" -optional = false +optional = true python-versions = ">=3.8" groups = ["main"] +markers = "extra == \"test\"" files = [ {file = "multiprocess-0.70.17-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7ddb24e5bcdb64e90ec5543a1f05a39463068b6d3b804aa3f2a4e16ec28562d6"}, {file = "multiprocess-0.70.17-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d729f55198a3579f6879766a6d9b72b42d4b320c0dcb7844afb774d75b573c62"}, @@ -1148,8 +1150,9 @@ testing = ["coverage[toml]", "zope.event", "zope.testing"] [extras] fuzz = ["fuzzercorn", "unicornafl"] re = ["r2libr"] +test = ["multiprocess"] [metadata] lock-version = "2.1" python-versions = "^3.10" -content-hash = "b65631e55580e06f60d535d41d2c2d0c4ee786609c7232988ceda8ce6b586a6d" +content-hash = "ebe16c808ad320fe46b3a030cefd7db2c192155355fc7526d0e7ad2145802c6b" diff --git a/pyproject.toml b/pyproject.toml index cc6a6252b..2152eed26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,6 @@ python-registry = "^1.3.1" keystone-engine = "^0.9.2" pyelftools = ">=0.28" gevent = ">=24.10" -multiprocess = ">=0.70.12.2" windows-curses = { version = "^2.1.0", markers = "platform_system == 'Windows'" } pyyaml = "^6.0.1" python-fx = "*" @@ -54,9 +53,12 @@ fuzzercorn = { version = "^0.0.1", markers = "platform_system == 'Linux'", optio r2libr = { version = "^5.7.4", optional = true } +multiprocess = { version = ">=0.70.12.2", optional = true } + [tool.poetry.extras] fuzz = ["unicornafl", "fuzzercorn"] RE = ["r2libr"] +test = ["multiprocess"] [build-system] requires = ["poetry-core>=2.0,<3.0"]