Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to PEP 518 #1111

Closed
wants to merge 11 commits into from
5 changes: 2 additions & 3 deletions .github/workflows/pythonpublish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,10 @@ jobs:
python-version: '3.x'
- name: Install dependencies
run: |
pip install setuptools wheel
pip install setuptools wheel build
- name: Build distribution 📦
run: |
pip install .
python setup.py sdist bdist_wheel
python -m build
- uses: actions/upload-artifact@v2
with:
path: ${{ github.workspace }}/dist/*
Expand Down
80 changes: 80 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
[project]
name = "qiling"
version = "1.4.5-dev"
description = "Qiling is an advanced binary emulation framework that cross-platform-architecture"
readme = "README.md"
requires-python = ">=3.8"
license = {text = "GPL-2.0-only"}
maintainers = [
{name = "KaiJern Lau (xwings)", email = "[email protected]"}
]
keywords = ["qiling", "binary", "emulator", "framework", "malware", "analysis", "UEFI", "IoT"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Topic :: Software Development :: Build Tools",
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
"Programming Language :: Python :: 3"
]

dependencies = [
"capstone>=4.0.1",
"unicorn>=2.0.0",
"pefile>=2022.5.30",
"python-registry>=1.3.1",
"keystone-engine>=0.9.2",
"pyelftools>=0.28",
"gevent>=20.9.0",
"multiprocess>=0.70.12.2",
"windows-curses>=2.1.0;platform_system=='Windows'",
"pyyaml>=6.0",
"python-fx",
"questionary",
"termcolor"
]

[project.optional-dependencies]
evm = [
"blake2b-py>=0.1.2",
"cached-property>=1.5.2;python_version<'3.8'",
"typing-extensions>=3.7.4.3;python_version<'3.8'",
"eth-keys>=0.2.1",
"eth-typing>=2.2.0",
"eth-utils>=1.9.4",
"eth_abi>=2.1.1",
"lru-dict>=1.1.6",
"py-ecc>=1.4.7",
"rlp>=2",
"trie==2.0.0-alpha.5",
"eth-hash[pycryptodome]",
"numpy",
"rich",
"cmd2"
]
fuzz = [
"unicornafl>=2.0.0;platform_system!='Windows'",
"fuzzercorn>=0.0.1;platform_system=='Linux'"
]
RE = [
"r2libr>=5.7.4"
]

[project.urls]
homepage = "https://qiling.io"
documentation = "https://docs.qiling.io"
repository = "https://github.com/qilingframework/qiling"
changelog = "https://github.com/qilingframework/qiling/blob/master/ChangeLog"

[project.scripts]
qltool = "qltool:main"

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools.package-data]
qiling = ["profiles/*.ql"]
"qiling.debugger.gdb" = ["xml/*/*"]
"qiling.os.uefi" = ["guids.csv"]
"qiling.arch.evm.analysis" = ["signatures.json"]

14 changes: 9 additions & 5 deletions qltool
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def handle_examples(parser: argparse.ArgumentParser):

parser.exit(0, __ql_examples)

if __name__ == '__main__':
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--version', action='version', version=f'qltool for Qiling {ql_ver}, using Unicorn {uc_ver}')

Expand Down Expand Up @@ -266,11 +266,15 @@ if __name__ == '__main__':
ql.run(timeout=options.timeout)

if options.json:
report = report.generate_report(ql)
generated_report = report.generate_report(ql)
if qltui_enabled:
report["syscalls"] = qltui.transform_syscalls(ql.os.stats.syscalls)
qltui.show_report(ql, report, hook_dictionary)
generated_report["syscalls"] = qltui.transform_syscalls(ql.os.stats.syscalls)
qltui.show_report(ql, generated_report, hook_dictionary)
else:
pprint(report)
pprint(generated_report)

exit(ql.os.exit_code)


if __name__ == '__main__':
main()
99 changes: 2 additions & 97 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,101 +2,6 @@
#
# Python setup for Qiling framework

from setuptools import setup, find_packages
from setuptools import setup

# NOTE: use "-dev" for dev branch
VERSION = "1.4.5" + "-dev"
#VERSION = "1.4.4"

requirements = [
"capstone>=4.0.1",
"unicorn>=2.0.0",
"pefile>=2022.5.30",
"python-registry>=1.3.1",
"keystone-engine>=0.9.2",
"pyelftools>=0.28",
"gevent>=20.9.0",
"multiprocess>=0.70.12.2",
"windows-curses>=2.1.0;platform_system=='Windows'",
"pyyaml>=6.0",
"python-fx",
"questionary",
"termcolor",
]

extras = {
"evm": [
"blake2b-py>=0.1.2",
"cached-property>=1.5.2;python_version<'3.8'",
"typing-extensions>=3.7.4.3;python_version<'3.8'",
"eth-keys>=0.2.1",
"eth-typing>=2.2.0",
"eth-utils>=1.9.4",
"eth_abi>=2.1.1",
"lru-dict>=1.1.6",
"py-ecc>=1.4.7",
"rlp>=2",
"trie==2.0.0-alpha.5",
"eth-hash[pycryptodome]",
"numpy",
"rich",
"cmd2"
],
"fuzz" : [
"unicornafl>=2.0.0;platform_system!='Windows'",
"fuzzercorn>=0.0.1;platform_system=='Linux'"
],
"RE": [
"r2libr>=5.7.4",
]
}

with open("README.md", "r", encoding="utf-8") as ld:
long_description = ld.read()

setup(
name='qiling',
version=VERSION,

description='Qiling is an advanced binary emulation framework that cross-platform-architecture',
url='http://qiling.io',
long_description=long_description,
long_description_content_type="text/markdown",
maintainer='KaiJern Lau (xwings)',
maintainer_email='[email protected]',

license='GPLv2',

# See https://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=[
# How mature is this project? Common values are
# 3 - Alpha
# 5 - Production/Stable
#'Development Status :: 5 - Production/Stable',
'Development Status :: 3 - Alpha',

# Indicate who your project is intended for
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',

# Pick your license as you wish (should match "license" above)
'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',

# Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 3',
],

keywords='qiling binary emulator framework malware analysis UEFI IoT',

packages=find_packages(),
scripts=['qltool'],
package_data={
'qiling': ['profiles/*.ql'],
'qiling.debugger.gdb': ['xml/*/*'],
'qiling.os.uefi': ['guids.csv'],
'qiling.arch.evm.analysis': ['signatures.json']
},
install_requires=requirements,
extras_require=extras,
)
setup()