@@ -542,7 +542,8 @@ static PyObject * PyPackageManager_get_registry (PyPackageManager * self, void *
542542static int PyPackageManager_set_registry (PyPackageManager * self , PyObject * val , void * closure );
543543static PyObject * PyPackageManager_search (PyPackageManager * self , PyObject * args , PyObject * kw );
544544static PyObject * PyPackageManager_install (PyPackageManager * self , PyObject * args , PyObject * kw );
545- static FridaPackageInstallOptions * PyPackageManager_parse_install_options (const gchar * project_root , PyObject * specs_value );
545+ static FridaPackageInstallOptions * PyPackageManager_parse_install_options (const gchar * project_root , const char * role_value ,
546+ PyObject * specs_value , PyObject * omits_value );
546547
547548static PyObject * PyPackage_new_take_handle (FridaPackage * handle );
548549static int PyPackage_init (PyPackage * self , PyObject * args , PyObject * kw );
@@ -5140,16 +5141,18 @@ static PyObject *
51405141PyPackageManager_install (PyPackageManager * self , PyObject * args , PyObject * kw )
51415142{
51425143 FridaPackageInstallResult * result ;
5143- static char * keywords [] = { "project_root" , "specs" , NULL };
5144+ static char * keywords [] = { "project_root" , "role" , " specs" , "omits " , NULL };
51445145 const char * project_root = NULL ;
5146+ const char * role_value = NULL ;
51455147 PyObject * specs = NULL ;
5148+ PyObject * omits = NULL ;
51465149 FridaPackageInstallOptions * options ;
51475150 GError * error = NULL ;
51485151
5149- if (!PyArg_ParseTupleAndKeywords (args , kw , "|sO " , keywords , & project_root , & specs ))
5152+ if (!PyArg_ParseTupleAndKeywords (args , kw , "|ssOO " , keywords , & project_root , & role_value , & specs , & omits ))
51505153 return NULL ;
51515154
5152- options = PyPackageManager_parse_install_options (project_root , specs );
5155+ options = PyPackageManager_parse_install_options (project_root , role_value , specs , omits );
51535156
51545157 Py_BEGIN_ALLOW_THREADS
51555158 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
51645167}
51655168
51665169static FridaPackageInstallOptions *
5167- PyPackageManager_parse_install_options (const gchar * project_root , PyObject * specs_value )
5170+ PyPackageManager_parse_install_options (const gchar * project_root , const char * role_value , PyObject * specs_value , PyObject * omits_value )
51685171{
51695172 FridaPackageInstallOptions * options ;
51705173
@@ -5173,6 +5176,16 @@ PyPackageManager_parse_install_options (const gchar * project_root, PyObject * s
51735176 if (project_root != NULL )
51745177 frida_package_install_options_set_project_root (options , project_root );
51755178
5179+ if (role_value != NULL )
5180+ {
5181+ FridaPackageRole role ;
5182+
5183+ if (!PyGObject_unmarshal_enum (role_value , FRIDA_TYPE_PACKAGE_ROLE , & role ))
5184+ goto propagate_error ;
5185+
5186+ frida_package_install_options_set_role (options , role );
5187+ }
5188+
51765189 if (specs_value != NULL )
51775190 {
51785191 gint n , i ;
@@ -5198,6 +5211,35 @@ PyPackageManager_parse_install_options (const gchar * project_root, PyObject * s
51985211 }
51995212 }
52005213
5214+ if (omits_value != NULL )
5215+ {
5216+ gint n , i ;
5217+
5218+ n = PySequence_Size (omits_value );
5219+ if (n == -1 )
5220+ goto propagate_error ;
5221+
5222+ for (i = 0 ; i != n ; i ++ )
5223+ {
5224+ PyObject * element ;
5225+ gchar * str = NULL ;
5226+ FridaPackageRole role ;
5227+
5228+ element = PySequence_GetItem (omits_value , i );
5229+ if (element == NULL )
5230+ goto propagate_error ;
5231+ PyGObject_unmarshal_string (element , & str );
5232+ Py_DecRef (element );
5233+ if (str == NULL )
5234+ goto propagate_error ;
5235+
5236+ if (!PyGObject_unmarshal_enum (str , FRIDA_TYPE_PACKAGE_ROLE , & role ))
5237+ goto propagate_error ;
5238+
5239+ frida_package_install_options_add_omit (options , role );
5240+ }
5241+ }
5242+
52015243 return options ;
52025244
52035245propagate_error :
0 commit comments