summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/dev/how2build.html36
-rw-r--r--docs/dev/maintainer_notes.txt82
2 files changed, 107 insertions, 11 deletions
diff --git a/docs/dev/how2build.html b/docs/dev/how2build.html
index 738bf8e..bdca950 100644
--- a/docs/dev/how2build.html
+++ b/docs/dev/how2build.html
@@ -4,26 +4,40 @@
</head>
<body>
-<H2><A NAME=PURPOSE>Ivycpy - buiding instructions</A></H2>
-<p>First of all ivycpy is building process is managed by autoconf.</p>
+<H2><A NAME=PURPOSE>Ivycpy - buiding instructions</A></H2>
+
+<p>First of all ivycpy building process is managed by
+<em>autoconf</em>. The <em>configure</em> script file shoule help you
+to build a GNUmakefile with the suitable environment or hlep you
+detect the flaws in your environment.</p>
+
<p>You should have to do the following actions:
<ul>
- <li>say to configure where is ivy-c lib and include files (LD_LIBRARY_PATH , CPPFAGS)
- <li>say to configure where is your version of Python (LD_LIBRARY_PATH ,
-CPPFAGS) (Note: a specific version is required exporting some MACRO def)
- <li>launching configure with the suited location of tcl/tk configuration file tclConfig.sh and your target
- destination:<br>
- <em>./configure --prefix=/opt/ivycpy-dp --with-tcl=/opt/tcltk-8.4.5/lib/</em><br>
- verify that every test is ok; normally if all is ok, you should be capable to compile and install
- without any problems.
+
+ <li>say to <em>configure</em> where is ivy-c lib and include files
+ LD_LIBRARY_PATH , CPPFAGS)
+
+ <li>say to <em>configure</em> where is your version of Python
+(LD_LIBRARY_PATH , CPPFAGS) (Note: a specific version is required
+exporting some MACRO def)
+
+ <li>launching configure with the suited location of tcl/tk
+ configuration file tclConfig.sh and your target destination:<br>
+ <em>./configure --prefix=/opt/ivycpy-dp --with-tcl=/opt/tcltk-8.4.5/lib/</em>
+
+ <br> verify that every test is ok; normally if all is ok, you
+ should be capable to compile and install without any problems.
+
<li><em>make</em>
+
<li><em>make install </em>
+
</ul>
</p>
<hr>
<!-- hhmts start -->
-Last modified: Mon May 24 16:43:51 CEST 2004
+Last modified: Fri Sep 17 16:49:43 CEST 2004
<!-- hhmts end -->
</body> </html>
diff --git a/docs/dev/maintainer_notes.txt b/docs/dev/maintainer_notes.txt
index 54a6147..8a59ccb 100644
--- a/docs/dev/maintainer_notes.txt
+++ b/docs/dev/maintainer_notes.txt
@@ -1,3 +1,85 @@
+L'adaptation a faire sur tkinter est la suivante :
+
+Il faut rendre partageable les macros ENTER_TCL, LEAVE_TCL,
+ENTER_OVERLAP, LEAVE_OVERLAP_TCL, ENTER_PYTHON, LEAVE_PYTHON
+
+ces definistions se trouvent dans le corps du module _tkinter.c dans
+la version standard ; il faut les exporter (dans le header) et definir
+les variables associes comme extern;
+
+le _tkinter.h doit ressembler à ceci :
+
+<<
+#ifndef _TKINTER_H
+#define _TKINTER_H
+
+#ifdef WITH_THREAD
+
+#include "pythread.h"
+
+/* also included in body _tkinter.c but necessary for client using this header
+ dp 062004 */
+#ifndef TCL_THREADS
+#define TCL_THREADS
+#endif
+
+extern PyThread_type_lock tcl_lock ;
+
+#ifdef TCL_THREADS
+extern Tcl_ThreadDataKey state_key;
+typedef PyThreadState *ThreadSpecificData;
+#define tcl_tstate (*(PyThreadState**)Tcl_GetThreadData(&state_key, sizeof(PyThreadState*)))
+#else
+extern PyThreadState *tcl_tstate;
+#endif /* TCL_THREADS */
+
+#define ENTER_TCL \
+ { PyThreadState *tstate = PyThreadState_Get(); Py_BEGIN_ALLOW_THREADS \
+ if(tcl_lock)PyThread_acquire_lock(tcl_lock, 1); tcl_tstate = tstate;
+
+#define LEAVE_TCL \
+ tcl_tstate = NULL; if(tcl_lock)PyThread_release_lock(tcl_lock); Py_END_ALLOW_THREADS}
+
+#define ENTER_OVERLAP \
+ Py_END_ALLOW_THREADS
+
+#define LEAVE_OVERLAP_TCL \
+ tcl_tstate = NULL; if(tcl_lock)PyThread_release_lock(tcl_lock); }
+
+#define ENTER_PYTHON \
+ { PyThreadState *tstate = tcl_tstate; tcl_tstate = NULL; \
+ if(tcl_lock)PyThread_release_lock(tcl_lock); PyEval_RestoreThread((tstate)); }
+
+#define LEAVE_PYTHON \
+ { PyThreadState *tstate = PyEval_SaveThread(); \
+ if(tcl_lock)PyThread_acquire_lock(tcl_lock, 1); tcl_tstate = tstate; }
+
+#define CHECK_TCL_APPARTMENT \
+ if (((TkappObject *)self)->threaded && \
+ ((TkappObject *)self)->thread_id != Tcl_GetCurrentThread()) { \
+ PyErr_SetString(PyExc_RuntimeError, "Calling Tcl from different appartment"); \
+ return 0; \
+ }
+
+
+#else
+
+#define ENTER_TCL
+#define LEAVE_TCL
+#define ENTER_OVERLAP
+#define LEAVE_OVERLAP_TCL
+#define ENTER_PYTHON
+#define LEAVE_PYTHON
+#define CHECK_TCL_APPARTMENT
+
+#endif /* WITH_THREAD */
+
+#endif /* !_TKINTER_H */
+
+>>
+
+
+
Echanges avec Martin Loewis concerant les évolutions de Python et Tkinter
liés au wrapper python <-> ivy