<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">After a lot of hacking, I figured out that you can make an iPhone simulator sys root by configuring using the ios-64 target in pyqtdeploycli, and then before the “make” step in each project, just go and edit all the qmake-generated Makefiles to change the following line:<div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: Monaco; color: rgb(215, 57, 30); background-color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">####### Custom Variables </span></div><div style="margin: 0px; line-height: normal; font-family: Monaco; color: rgb(205, 121, 35); background-color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">EXPORT_VALID_ARCHS</span><span style="font-variant-ligatures: no-common-ligatures; color: #e1e1e1" class=""> = armv7 arm64</span></div><div class=""><br class=""></div><div class="">to:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: Monaco; color: rgb(215, 57, 30); background-color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">####### Custom Variables </span></div><div style="margin: 0px; line-height: normal; font-family: Monaco; color: rgb(205, 121, 35); background-color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">EXPORT_VALID_ARCHS</span><span style="font-variant-ligatures: no-common-ligatures; color: #e1e1e1" class=""> = i386 x86_64</span></div></div><div class=""><br class=""></div><div class="">Then also change the SDK path from iPhoneOS to iPhoneSimulator in CFLAGS and CXXFLAGS at the top of each Makefile. So change both instances of:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: Monaco; color: rgb(225, 225, 225); background-color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk</span></div></div><div class=""><br class=""></div><div class="">to:</div><div class=""><br class=""></div><div class=""><div class=""><div style="margin: 0px; line-height: normal; font-family: Monaco; color: rgb(225, 225, 225); background-color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.2.sdk</span></div></div></div><div class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><br class=""></span></div><div class="">Take notice that there is a separate Makefile for each PyQt5 package. The easiest way to search and replace in all of them is to use Xcode, create a workspace in the PyQt src root dir, then drag all of the dir contents into the workspace pane on the left of the Xcode window selecting ‘make references to folders’ (or something similar), and then choose search and replace in workspace from the Edit menu.</div><div class=""><br class=""></div><div class="">After that you should be all set to make and make install in each source package as described in the pyqtdeploy documentation: </div><div class=""><br class=""></div><div class=""><a href="http://pyqt.sourceforge.net/Docs/pyqtdeploy/static_builds.html" class="">http://pyqt.sourceforge.net/Docs/pyqtdeploy/static_builds.html</a></div><div class=""><br class=""></div><div class="">I’ve bene out of touch with PyQt5 for a while, but man it’s great to be able to deploy it to iOS!</div><div class=""><br class=""></div><div class="">Good luck!</div><div class="">-P</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 3, 2017, at 3:12 AM, Patrick Stinson <<a href="mailto:patrickstinson.lists@gmail.com" class="">patrickstinson.lists@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Well, I suppose this question is somehow off-topic? Just for future reference...<br class=""><br class="">Thanks!<br class=""><br class="">On Tue, Jan 31, 2017 at 7:27 PM, Patrick Stinson <<a href="mailto:patrickkidd@gmail.com" class="">patrickkidd@gmail.com</a>> wrote:<br class=""><blockquote type="cite" class="">What is the correct way to build a SYSROOT for the iOS simulator using pyqtdeploy? When I try to “make iphonsimulator” in “./build” using my ios-64 SYSROOT I get the following unresolved symbols (and I imagine more from the other libraries once I resolve these):<br class=""><br class="">Undefined symbols for architecture x86_64:<br class=""> "_PyEval_GetBuiltins", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyObject_CallFunction", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyImport_AddModuleObject", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyModule_GetDict", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyDict_SetItemString", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyImport_ExecCodeModuleObject", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyImport_ImportModule", referenced from:<br class=""> qrcimporter_find_loader(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyObject_CallObject", referenced from:<br class=""> qrcimporter_find_loader(_object*, _object*) in pdytools_module.o<br class=""> "_PyErr_SetString", referenced from:<br class=""> qrcimporter_init(_object*, _object*, _object*) in pdytools_module.o<br class=""> "_PyType_Ready", referenced from:<br class=""> _PyInit_pdytools in pdytools_module.o<br class=""> "_PyModule_Create2", referenced from:<br class=""> _PyInit_pdytools in pdytools_module.o<br class=""> "_PyList_Append", referenced from:<br class=""> append_path_dirs(_object*, char const**) in pyqtdeploy_start.o<br class=""> "_PyInit_sip", referenced from:<br class=""> extension_modules in pyqtdeploy_main.o<br class=""> "_PyErr_ExceptionMatches", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyMarshal_ReadObjectFromString", referenced from:<br class=""> get_code_object(QString const&) in pdytools_module.o<br class=""> "_Py_BuildValue", referenced from:<br class=""> qrcimporter_find_loader(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyErr_NormalizeException", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyInit_QtWidgets", referenced from:<br class=""> extension_modules in pyqtdeploy_main.o<br class=""> "__Py_NoneStruct", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> pdytools_init_executable_dir(QString const&) in pdytools_module.o<br class=""> qrcimporter_find_loader(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_find_module(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_get_code(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_get_source(_object*, _object*) in pdytools_module.o<br class=""> "_PyUnicode_FromString", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyErr_Clear", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyErr_Print", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyLong_AsLong", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "__Py_FalseStruct", referenced from:<br class=""> qrcimporter_is_package(_object*, _object*) in pdytools_module.o<br class=""> "_Py_OptimizeFlag", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_Py_SetProgramName", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_Py_FileSystemDefaultEncoding", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyModule_AddObject", referenced from:<br class=""> _PyInit_pdytools in pdytools_module.o<br class=""> "_PyImport_AppendInittab", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_Py_NoSiteFlag", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "__PyArg_NoKeywords", referenced from:<br class=""> qrcimporter_init(_object*, _object*, _object*) in pdytools_module.o<br class=""> "_Py_HasFileSystemDefaultEncoding", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyObject_GetAttrString", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> qrcimporter_find_loader(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyUnicode_FromStringAndSize", referenced from:<br class=""> append_path_dirs(_object*, char const**) in pyqtdeploy_start.o<br class=""> "_PyImport_Inittab", referenced from:<br class=""> qrcimporter_find_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyExc_ImportError", referenced from:<br class=""> qrcimporter_init(_object*, _object*, _object*) in pdytools_module.o<br class=""> raise_import_error(QString const&) in pdytools_module.o<br class=""> read_data(QString const&, QByteArray&) in pdytools_module.o<br class=""> "_PyArg_ParseTuple", referenced from:<br class=""> qrcimporter_init(_object*, _object*, _object*) in pdytools_module.o<br class=""> qrcimporter_find_loader(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_find_module(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_get_code(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_get_data(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_is_package(_object*, _object*) in pdytools_module.o<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> ...<br class=""> "_PyImport_ExtendInittab", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_Py_Initialize", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyUnicode_FSDecoder", referenced from:<br class=""> qrcimporter_init(_object*, _object*, _object*) in pdytools_module.o<br class=""> "_Py_FrozenFlag", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PySys_GetObject", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> pdytools_init_executable_dir(QString const&) in pdytools_module.o<br class=""> "_PyInit_Qt", referenced from:<br class=""> extension_modules in pyqtdeploy_main.o<br class=""> "_PyErr_Format", referenced from:<br class=""> raise_import_error(QString const&) in pdytools_module.o<br class=""> read_data(QString const&, QByteArray&) in pdytools_module.o<br class=""> "_PyImport_Import", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyObject_CallMethod", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_Py_IgnoreEnvironmentFlag", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PySys_SetObject", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_Py_Finalize", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyUnicode_FromKindAndData", referenced from:<br class=""> qstring_to_str(QString const&) in pdytools_module.o<br class=""> "__Py_TrueStruct", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> qrcimporter_is_package(_object*, _object*) in pdytools_module.o<br class=""> "_PyExc_SystemExit", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyInit_QtGui", referenced from:<br class=""> extension_modules in pyqtdeploy_main.o<br class=""> "_PyImport_FrozenModules", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyType_GenericNew", referenced from:<br class=""> _PyInit_pdytools in pdytools_module.o<br class=""> "_PySys_SetArgvEx", referenced from:<br class=""> pyqtdeploy_start(int, char**, _inittab*, char const*, char const*, char const**) in pyqtdeploy_start.o<br class=""> "_PyBytes_FromStringAndSize", referenced from:<br class=""> qrcimporter_get_data(_object*, _object*) in pdytools_module.o<br class=""> "_PyModule_AddIntConstant", referenced from:<br class=""> _PyInit_pdytools in pdytools_module.o<br class=""> "_PyErr_Fetch", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyErr_Restore", referenced from:<br class=""> handle_exception() in pyqtdeploy_start.o<br class=""> "_PyDict_GetItemString", referenced from:<br class=""> qrcimporter_load_module(_object*, _object*) in pdytools_module.o<br class=""> "_PyInit_QtCore", referenced from:<br class=""> extension_modules in pyqtdeploy_main.o<br class="">ld: symbol(s) not found for architecture x86_64<br class="">clang: error: linker command failed with exit code 1 (use -v to see invocation)<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Jan 31, 2017, at 10:47 AM, Patrick Stinson <<a href="mailto:patrickkidd@gmail.com" class="">patrickkidd@gmail.com</a>> wrote:<br class=""><br class="">When building the sip python and PYQT libraries, what is the correct build architecture to use for linking with pyqtdeploy -generated targets? When using osx-64, I am getting unresolved symbol errors for symbols defined in the python library upon linking using the makefiles generated by pyqtdeploy.<br class=""><br class="">If it helps, looking back up in the log there's all these warnings from ld saying that the x86_64 architecture is going to be deprecated for the iPhone simulator.<br class=""><br class="">Thoughts? Thanks!<br class=""></blockquote><br class="">_______________________________________________<br class="">PyQt mailing list <a href="mailto:PyQt@riverbankcomputing.com" class="">PyQt@riverbankcomputing.com</a><br class=""><a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" class="">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br class=""></blockquote></div></div></blockquote></div><br class=""></div></div></body></html>