mirror of
https://github.com/frida/frida-python
synced 2026-06-08 14:16:17 +00:00
Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e92e829f6d | |||
| 5793fb5528 | |||
| cac6993d87 | |||
| 714b7f8626 | |||
| ab0b9e98ae | |||
| 19a7fa4f45 | |||
| 38552a368a | |||
| 38724cab58 | |||
| b60d085ad9 | |||
| 1a4afbcc62 | |||
| 9e15cab647 | |||
| 9ef1c9c1f7 | |||
| 3da6af4759 | |||
| a9075822b1 | |||
| 2e61509c04 | |||
| aa9396c6b0 | |||
| 6530b2a7d4 | |||
| 2d833af062 | |||
| 9f6ab2d384 | |||
| a005f1bf4c | |||
| 59a24aa48f | |||
| 782d626419 | |||
| 3aa122f4fd | |||
| ef315fc0ad | |||
| daf93eea54 | |||
| 5d02a36906 | |||
| ba8daa423d | |||
| afb27bfa7c | |||
| 93a201acf2 | |||
| ca1cdad96a | |||
| fbc83cc9bf | |||
| b838e1df9a | |||
| e2409be987 | |||
| b061ea43d2 | |||
| a50a62999a | |||
| 3a47d33ee8 | |||
| ea93d827bb | |||
| 8d4c05f664 | |||
| 2f78c96622 | |||
| 4b5aa28119 | |||
| 4f87afa0f1 | |||
| 82272945ac | |||
| bf496a81d9 | |||
| c2dcae3ff4 | |||
| 0cb42c47dc | |||
| 0e3a9fb551 | |||
| 4e16e5c667 | |||
| 09d6c7b044 |
@@ -803,7 +803,9 @@ class PackageManager(Object):
|
||||
def install(
|
||||
self,
|
||||
project_root: Optional[str] = None,
|
||||
role: Optional[str] = None,
|
||||
specs: Optional[Sequence[str]] = None,
|
||||
omits: Optional[Sequence[str]] = None,
|
||||
) -> PackageInstallResult:
|
||||
"""
|
||||
Install one or more packages.
|
||||
|
||||
@@ -542,7 +542,8 @@ static PyObject * PyPackageManager_get_registry (PyPackageManager * self, void *
|
||||
static int PyPackageManager_set_registry (PyPackageManager * self, PyObject * val, void * closure);
|
||||
static PyObject * PyPackageManager_search (PyPackageManager * self, PyObject * args, PyObject * kw);
|
||||
static PyObject * PyPackageManager_install (PyPackageManager * self, PyObject * args, PyObject * kw);
|
||||
static FridaPackageInstallOptions * PyPackageManager_parse_install_options (const gchar * project_root, PyObject * specs_value);
|
||||
static FridaPackageInstallOptions * PyPackageManager_parse_install_options (const gchar * project_root, const char * role_value,
|
||||
PyObject * specs_value, PyObject * omits_value);
|
||||
|
||||
static PyObject * PyPackage_new_take_handle (FridaPackage * handle);
|
||||
static int PyPackage_init (PyPackage * self, PyObject * args, PyObject * kw);
|
||||
@@ -5140,16 +5141,18 @@ static PyObject *
|
||||
PyPackageManager_install (PyPackageManager * self, PyObject * args, PyObject * kw)
|
||||
{
|
||||
FridaPackageInstallResult * result;
|
||||
static char * keywords[] = { "project_root", "specs", NULL };
|
||||
static char * keywords[] = { "project_root", "role", "specs", "omits", NULL };
|
||||
const char * project_root = NULL;
|
||||
const char * role_value = NULL;
|
||||
PyObject * specs = NULL;
|
||||
PyObject * omits = NULL;
|
||||
FridaPackageInstallOptions * options;
|
||||
GError * error = NULL;
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords (args, kw, "|sO", keywords, &project_root, &specs))
|
||||
if (!PyArg_ParseTupleAndKeywords (args, kw, "|ssOO", keywords, &project_root, &role_value, &specs, &omits))
|
||||
return NULL;
|
||||
|
||||
options = PyPackageManager_parse_install_options (project_root, specs);
|
||||
options = PyPackageManager_parse_install_options (project_root, role_value, specs, omits);
|
||||
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
result = frida_package_manager_install_sync (PY_GOBJECT_HANDLE (self), options, g_cancellable_get_current (), &error);
|
||||
@@ -5164,7 +5167,7 @@ PyPackageManager_install (PyPackageManager * self, PyObject * args, PyObject * k
|
||||
}
|
||||
|
||||
static FridaPackageInstallOptions *
|
||||
PyPackageManager_parse_install_options (const gchar * project_root, PyObject * specs_value)
|
||||
PyPackageManager_parse_install_options (const gchar * project_root, const char * role_value, PyObject * specs_value, PyObject * omits_value)
|
||||
{
|
||||
FridaPackageInstallOptions * options;
|
||||
|
||||
@@ -5173,6 +5176,16 @@ PyPackageManager_parse_install_options (const gchar * project_root, PyObject * s
|
||||
if (project_root != NULL)
|
||||
frida_package_install_options_set_project_root (options, project_root);
|
||||
|
||||
if (role_value != NULL)
|
||||
{
|
||||
FridaPackageRole role;
|
||||
|
||||
if (!PyGObject_unmarshal_enum (role_value, FRIDA_TYPE_PACKAGE_ROLE, &role))
|
||||
goto propagate_error;
|
||||
|
||||
frida_package_install_options_set_role (options, role);
|
||||
}
|
||||
|
||||
if (specs_value != NULL)
|
||||
{
|
||||
gint n, i;
|
||||
@@ -5198,6 +5211,35 @@ PyPackageManager_parse_install_options (const gchar * project_root, PyObject * s
|
||||
}
|
||||
}
|
||||
|
||||
if (omits_value != NULL)
|
||||
{
|
||||
gint n, i;
|
||||
|
||||
n = PySequence_Size (omits_value);
|
||||
if (n == -1)
|
||||
goto propagate_error;
|
||||
|
||||
for (i = 0; i != n; i++)
|
||||
{
|
||||
PyObject * element;
|
||||
gchar * str = NULL;
|
||||
FridaPackageRole role;
|
||||
|
||||
element = PySequence_GetItem (omits_value, i);
|
||||
if (element == NULL)
|
||||
goto propagate_error;
|
||||
PyGObject_unmarshal_string (element, &str);
|
||||
Py_DecRef (element);
|
||||
if (str == NULL)
|
||||
goto propagate_error;
|
||||
|
||||
if (!PyGObject_unmarshal_enum (str, FRIDA_TYPE_PACKAGE_ROLE, &role))
|
||||
goto propagate_error;
|
||||
|
||||
frida_package_install_options_add_omit (options, role);
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
|
||||
propagate_error:
|
||||
|
||||
+6
-4
@@ -1649,15 +1649,11 @@ PackageManagerInstallProgressCallback = Callable[
|
||||
"initializing",
|
||||
"preparing-dependencies",
|
||||
"resolving-package",
|
||||
"using-lockfile-data",
|
||||
"metadata-fetched",
|
||||
"fetching-resource",
|
||||
"package-already-installed",
|
||||
"downloading-package",
|
||||
"package-installed",
|
||||
"resolving-and-installing-all",
|
||||
"dependencies-processed",
|
||||
"finalizing-manifests",
|
||||
"complete",
|
||||
],
|
||||
float,
|
||||
@@ -1666,6 +1662,8 @@ PackageManagerInstallProgressCallback = Callable[
|
||||
None,
|
||||
]
|
||||
|
||||
PackageRole = Literal["runtime", "development", "optional", "peer"]
|
||||
|
||||
|
||||
class PackageManager:
|
||||
def __init__(self) -> None:
|
||||
@@ -1700,11 +1698,15 @@ class PackageManager:
|
||||
def install(
|
||||
self,
|
||||
project_root: Optional[str] = None,
|
||||
role: Optional[PackageRole] = None,
|
||||
specs: Optional[Sequence[str]] = None,
|
||||
omits: Optional[Sequence[PackageRole]] = None,
|
||||
) -> _frida.PackageInstallResult:
|
||||
kwargs: Dict[str, Any] = {
|
||||
"project_root": project_root,
|
||||
"role": role,
|
||||
"specs": specs,
|
||||
"omits": omits,
|
||||
}
|
||||
_filter_missing_kwargs(kwargs)
|
||||
return self._impl.install(**kwargs)
|
||||
|
||||
+1
-1
Submodule releng updated: e10baa39a2...800f2385c3
@@ -1,6 +1,6 @@
|
||||
[wrap-git]
|
||||
url = https://github.com/frida/frida-core.git
|
||||
revision = 17.2.6
|
||||
revision = 17.4.2
|
||||
depth = 1
|
||||
|
||||
[provide]
|
||||
|
||||
Reference in New Issue
Block a user