On 06/08/2012 09:49 AM, Stephan Bergmann wrote:
On 06/08/2012 09:22 AM, David Ostrovsky wrote:
2. on Linux I'm testing the clean build with --enable-python=internal,
and it seems not to work: opening Tools=>Macros=>Organize Macros=>Python
and trying to open Hello World python Macor. I do not see any macros
available but see this warning in console
[david@wizball program (master)]$ ./soffice.bin --writer
'import site' failed; use -v for traceback
Any ideas how to proceed?
I can have a look.
Attached pyuno.patch addresses three problems that I discovered:
* The sed call in pyuno/CustomTarget_python_shell.mk used wrong variable
names, so that expansions in the python wrapper script were empty.
** The pyuno/zipcore/python.sh also contains NOMACSECTION and MACSECTION
blocks, and the original pyuno/zipcore/makefile.mk made sure to only
include one of them. This still needs to be fixed.
* SAL_DLLPUBLIC_EXPORT was missing from
pyuno/source/module/pyuno_dlopenwrapper.c, so that the pyuno.so wrapper
did not export initpyuno.
* The program/python-core-2.6.1/ tree was missing from the installation
set. Getting this back was a bit tricky, as the old system zipped
together a temporary tree with some python-core-2.6.1/lib/ structure,
that ended up with that hierarchy included in the zip, and scp2
specified to unzip it into the program directory. I changed that to zip
together the flat content of $(OUTDIR)/lib/python, and instead
explicitly create the python-core-2.6.1/lib hierarchy in scp2 into which
to then unzip the zip file.
** Ideally, the "lib" directory could be removed from the hierarchy
completely, but that would require changes to all the places that set up
PYTHONPATH etc.
** The original pyuno/zipcore/makefile.mk called strip on the files that
went into the zip. From the recent general discussion whether or not to
strip when building LO, it indeed seems acceptable to just drop that.
** We should also think about build dependencies, so that the zip file
gets recreated whenever its content would change. Maybe it would be
best to move creation of the zip file to the python module?
Then, both executing ".../program/python -c 'import uno'" in the
installation set and running the Hello World macro from "Tools -
Macros..." worked fine for me on Linux (the former of course only by
luck, printing a "NONMACSECTION: command not found" message; see above).
Stephan
diff --git a/pyuno/CustomTarget_python_shell.mk b/pyuno/CustomTarget_python_shell.mk
index ea87a9b..9dce854 100644
--- a/pyuno/CustomTarget_python_shell.mk
+++ b/pyuno/CustomTarget_python_shell.mk
@@ -42,8 +42,8 @@ endif
$(call gb_CustomTarget_get_workdir,pyuno/python_shell)/python.sh :
$(SRCDIR)/pyuno/zipcore/python.sh | \
$(call gb_CustomTarget_get_workdir,pyuno/python_shell)/.dir
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),SED,1)
- sed -e "s/%%PYVERSION%%/$(PYTHON_SHELL_VERSION)/g" -e \
- "s/%%OOO_LIBRARY_PATH_VAR%%/$(OOO_LIBRARY_PATH_VAR)/g" \
+ sed -e "s/%%PYVERSION%%/$(pyuno_PYTHON_SHELL_VERSION)/g" -e \
+ "s/%%OOO_LIBRARY_PATH_VAR%%/$(gb_Helper_LIBRARY_PATH_VAR)/g" \
$(PYTHON_SHELL_STRIPRULE) < $? > $@
chmod +x $@
diff --git a/pyuno/CustomTarget_zipcore.mk b/pyuno/CustomTarget_zipcore.mk
index 3024355..171e3d2 100644
--- a/pyuno/CustomTarget_zipcore.mk
+++ b/pyuno/CustomTarget_zipcore.mk
@@ -38,7 +38,7 @@ $(call gb_CustomTarget_get_target,pyuno/zipcore) : \
$(call gb_CustomTarget_get_workdir,pyuno/zipcore)/$(pyuno_PYTHON_ARCHIVE_NAME) :| \
$(call gb_CustomTarget_get_workdir,pyuno/zipcore)/.dir
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),ZIP,1)
- cd $(OUTDIR)/lib/ && zip $@ `$(FIND) python -type f | $(GREP) -v "\.pyc" | $(GREP) -v
"\.py~" | $(GREP) -v .orig | $(GREP) -v _failed`
+ cd $(OUTDIR)/lib/python && zip $@ `$(FIND) . -type f | $(GREP) -v "\.pyc" | $(GREP) -v
"\.py~" | $(GREP) -v .orig | $(GREP) -v _failed`
# TODO: implement this if
diff --git a/pyuno/source/module/pyuno_dlopenwrapper.c b/pyuno/source/module/pyuno_dlopenwrapper.c
index 3bdc912..cb17c51 100644
--- a/pyuno/source/module/pyuno_dlopenwrapper.c
+++ b/pyuno/source/module/pyuno_dlopenwrapper.c
@@ -84,14 +84,14 @@ static void * load(void * address, char const * symbol) {
#if PY_MAJOR_VERSION >= 3
-PyObject * PyInit_pyuno(void) {
+SAL_DLLPUBLIC_EXPORT PyObject * PyInit_pyuno(void) {
return
((PyObject * (*)(void)) load((void *) &PyInit_pyuno, "PyInit_pyuno"))();
}
#else
-void initpyuno(void) {
+SAL_DLLPUBLIC_EXPORT void initpyuno(void) {
((void (*)(void)) load((void *) &initpyuno, "initpyuno"))();
}
diff --git a/scp2/source/python/file_python.scp b/scp2/source/python/file_python.scp
index 194394d..e21f0a1 100644
--- a/scp2/source/python/file_python.scp
+++ b/scp2/source/python/file_python.scp
@@ -73,13 +73,26 @@ File gid_File_Py_Pythonloader
End
#ifndef SYSTEM_PYTHON
+#ifndef MACOSX
+Directory gid_Dir_Py_PythonCore
+ ParentID = gid_Brand_Dir_Program;
+ HostName = STRING(CONCAT2(python-core-,PYVERSION));
+END
+
+Directory gid_Dir_Py_PythonCore_Lib
+ ParentID = gid_Dir_Py_PythonCore;
+ HostName = "lib";
+END
+#endif
+
File gid_File_Py_Python_Core
TXT_FILE_BODY;
- Dir = gid_Brand_Dir_Program;
#ifdef MACOSX
+ Dir = gid_Brand_Dir_Program;
Name = "OOoPython.framework.zip";
Styles = (ARCHIVE,USE_INTERNAL_RIGHTS);
#else
+ Dir = gid_Dir_Py_PythonCore_Lib;
Name = STRING(CONCAT3(python-core-,PYVERSION,.zip));
Styles = (ARCHIVE);
#endif
diff --git a/scp2/source/python/module_python.scp b/scp2/source/python/module_python.scp
index 6ee8345..74ca1c5 100644
--- a/scp2/source/python/module_python.scp
+++ b/scp2/source/python/module_python.scp
@@ -40,7 +40,8 @@ Module gid_Module_Optional_Pyuno
gid_Dir_PythonFramework_Versions_ver_bin,
gid_Dir_PythonFramework_Versions_ver_lib,
gid_Dir_PythonFramework_Versions_ver_lib_pythonver,
- gid_Dir_PythonFramework_Versions_ver_lib_pythonver_config);
+ gid_Dir_PythonFramework_Versions_ver_lib_pythonver_config,
+ gid_Dir_Py_PythonCore, gid_Dir_Py_PythonCore_Lib);
Files =
(gid_File_Pyuno,gid_File_Lib_Pyuno,gid_File_Lib_Pythonloader,gid_File_Py_Unohelper,gid_File_Py_Uno,gid_File_Py_Pythonloader,gid_File_Py_Python_Core,gid_File_Py_Python_Bin,gid_File_Lib_Python_So,gid_Shortcut_Lib_Python_So,gid_File_Scripts_Python,gid_File_Share_Registry_Pyuno_Xcd);
Unixlinks = (gid_Unixlink_Python_Headers,
gid_Unixlink_Python_Resources,
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.