mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Python passes are now looked for in share/plugins and can be added by specifying a relative or absolute path
This commit is contained in:
		
							parent
							
								
									5864db3c2b
								
							
						
					
					
						commit
						6d18837d62
					
				
					 2 changed files with 5 additions and 24 deletions
				
			
		|  | @ -495,10 +495,7 @@ void yosys_setup() | |||
| 		PyImport_AppendInittab((char*)"libyosys", INIT_MODULE); | ||||
| 		Py_Initialize(); | ||||
| 		PyRun_SimpleString("import sys"); | ||||
| 		PyRun_SimpleString("sys.path.append(\"./\")"); | ||||
| 		//PyRun_SimpleString("import libyosys");
 | ||||
| 		//PyRun_SimpleString("sys.path.append(\"./plugins\")");
 | ||||
| 		//PyRun_SimpleString(("sys.path.append(\""+proc_share_dirname()+"plugins\")").c_str());
 | ||||
| 		PyRun_SimpleString(("sys.path.append(\""+proc_share_dirname()+"plugins\")").c_str()); | ||||
| 	#endif | ||||
| 
 | ||||
| 	Pass::init_register(); | ||||
|  |  | |||
|  | @ -49,10 +49,12 @@ void load_plugin(std::string filename, std::vector<std::string> aliases) | |||
| 		#ifdef WITH_PYTHON | ||||
| 		if(boost::algorithm::ends_with(filename, ".py")) | ||||
| 		{ | ||||
| 			int last_slash = filename.find('/'); | ||||
| 			int last_slash = filename.find_last_of('/'); | ||||
| 			std::string path = filename.substr(0, last_slash); | ||||
| 			filename = filename.substr(last_slash+1, filename.size()); | ||||
| 			filename = filename.substr(0,filename.size()-3); | ||||
| 			PyObject *filename_p = PyUnicode_FromString(filename.c_str());//filename.c_str());
 | ||||
| 			PyRun_SimpleString(("sys.path.insert(0,\""+path+"\")").c_str());  | ||||
| 			PyObject *filename_p = PyUnicode_FromString(filename.c_str()); | ||||
| 			if(filename_p == NULL) | ||||
| 			{ | ||||
| 				log_cmd_error("Issues converting `%s' to Python\n", filename.c_str()); | ||||
|  | @ -63,25 +65,7 @@ void load_plugin(std::string filename, std::vector<std::string> aliases) | |||
| 			{ | ||||
| 				log_cmd_error("Can't load python module `%s'\n", filename.c_str()); | ||||
| 				return; | ||||
| 			}/*
 | ||||
| 			PyObject *dict_p = PyModule_GetDict(module_p); | ||||
| 			if(dict_p == NULL) | ||||
| 			{ | ||||
| 				log_cmd_error("Can't load dictionary from module `%s'\n", filename.c_str()); | ||||
| 				return; | ||||
| 			} | ||||
| 			PyObject *func_p = PyDict_GetItemString(dict_p, "test"); | ||||
| 			if(module_p == NULL) | ||||
| 			{ | ||||
| 				log_cmd_error("Module `%s' does not contain test function\n", filename.c_str()); | ||||
| 				return; | ||||
| 			} | ||||
| 			PyObject *args_p = PyTuple_New(0); | ||||
| 			PyObject *result_p = PyObject_CallObject(func_p, args_p); | ||||
| 			if(result_p == NULL) | ||||
| 					printf("Calling test failed\n"); | ||||
| 			printf("Loaded Python module\n"); | ||||
| 			*/ | ||||
| 			loaded_python_plugins[orig_filename] = module_p; | ||||
| 			Pass::init_register(); | ||||
| 		} else { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue