Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions agents/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import subprocess
import sys
from pathlib import Path
from typing import List


def main(argv: list[str]):
def main(argv: List[str]):
npm = argv[1]
paths = [Path(p).resolve() for p in argv[2:]]
inputs = paths[:-2]
Expand All @@ -24,7 +25,7 @@ def main(argv: list[str]):
sys.exit(1)


def build(npm: Path, inputs: list[Path], output_js: Path, priv_dir: Path):
def build(npm: Path, inputs: List[Path], output_js: Path, priv_dir: Path):
pkg_file = next((f for f in inputs if f.name == "package.json"))
pkg_parent = pkg_file.parent
entrypoint = inputs[0].relative_to(pkg_parent)
Expand Down
5 changes: 3 additions & 2 deletions apps/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
import subprocess
import sys
from pathlib import Path
from typing import List
from zipfile import ZipFile


def main(argv: list[str]):
def main(argv: List[str]):
npm = argv[1]
paths = [Path(p).resolve() for p in argv[2:]]
inputs = paths[:-2]
Expand All @@ -24,7 +25,7 @@ def main(argv: list[str]):
sys.exit(1)


def build(npm: Path, inputs: list[Path], output_zip: Path, priv_dir: Path):
def build(npm: Path, inputs: List[Path], output_zip: Path, priv_dir: Path):
pkg_file = next((f for f in inputs if f.name == "package.json"))
pkg_parent = pkg_file.parent

Expand Down
3 changes: 2 additions & 1 deletion bridges/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import subprocess
import sys
from pathlib import Path
from typing import List


def main(argv):
Expand All @@ -18,7 +19,7 @@ def main(argv):
sys.exit(1)


def compile_bridges(inputs: list[Path], output_dir: Path, priv_dir: Path, npm: Path):
def compile_bridges(inputs: List[Path], output_dir: Path, priv_dir: Path, npm: Path):
pkg_file = next((f for f in inputs if f.name == "package.json"))
pkg_parent = pkg_file.parent

Expand Down
17 changes: 13 additions & 4 deletions meson.build
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
project('frida-tools', 'c',
version: run_command(find_program('python3'), files('setup.py'), '-V',
project(
'frida-tools',
'c',
version: run_command(
find_program('python3'),
meson.current_source_dir() / 'releng' / 'frida_version.py',
capture: true,
check: true).stdout().strip(),
check: true,
).stdout().strip(),
meson_version: '>=1.1.0',
)

subproject('frida-python')
meson.add_dist_script(
find_program('python'),
meson.current_source_dir() / 'set_dist_version.py',
meson.project_version(),
)

python = import('python').find_installation()

Expand Down
76 changes: 76 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,79 @@
[project]
name = "frida-tools"
dynamic = ['version']
description = "Frida CLI tools"
authors = [{ name = "Frida Developers", email = "oleavr@frida.re" }]
urls = { homepage = "https://frida.re", repository = "https://github.com/frida/frida-tools" }
license = "wxWindows"
keywords = [
"frida",
"debugger",
"dynamic",
"instrumentation",
"inject",
"javascript",
"windows",
"macos",
"linux",
"ios",
"iphone",
"ipad",
"android",
"qnx",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: MacOS X",
"Environment :: Win32 (MS Windows)",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: JavaScript",
"Topic :: Software Development :: Debuggers",
"Topic :: Software Development :: Libraries :: Python Modules",
]

requires-python = ">=3.7"
dependencies = [
"colorama >= 0.2.7, < 1.0.0",
"frida >= 17.2.8, < 18.0.0",
"prompt-toolkit >= 2.0.0, < 4.0.0",
"pygments >= 2.0.2, < 3.0.0",
"websockets >= 13.0.0, < 14.0.0",
]

[project.scripts]
frida = "frida_tools.repl:main"
frida-ls-devices = "frida_tools.lsd:main"
frida-ps = "frida_tools.ps:main"
frida-kill = "frida_tools.kill:main"
frida-ls = "frida_tools.ls:main"
frida-rm = "frida_tools.rm:main"
frida-pull = "frida_tools.pull:main"
frida-push = "frida_tools.push:main"
frida-discover = "frida_tools.discoverer:main"
frida-trace = "frida_tools.tracer:main"
frida-itrace = "frida_tools.itracer:main"
frida-join = "frida_tools.join:main"
frida-create = "frida_tools.creator:main"
frida-compile = "frida_tools.compiler:main"
frida-apk = "frida_tools.apk:main"
frida-pm = "frida_tools.pm:main"

[build-system]
build-backend = 'mesonpy'
requires = ['meson-python']


[tool.black]
line-length = 120

Expand Down
41 changes: 41 additions & 0 deletions set_dist_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env python3

import argparse
import os
import shlex
import subprocess
import sys
from typing import List


def main(argv: List[str]) -> None:
parser = argparse.ArgumentParser()
parser.add_argument("version", type=str)
args = parser.parse_args()
set_dist_version(args.version)


def set_dist_version(version: str) -> None:
"""
Used to replace the version in the meson.build file when building a dist build
"""
subprocess.run(
[
*shlex.split(os.environ["MESONREWRITE"]),
"--sourcedir",
os.environ["MESON_PROJECT_DIST_ROOT"],
"kwargs",
"set",
"project",
"/",
"version",
version,
],
check=True,
)
print(version)
return


if __name__ == "__main__":
main(sys.argv)
154 changes: 0 additions & 154 deletions setup.py

This file was deleted.