[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacspeak] Trying to install emacspeak on fedora 44



Oh, Fedora 44 doesn't have TCLX from what I recall. I just had AI fix up the speech servers by polyfilling what the servers needed in pure TCL.


On Wed, Oct 21, 2026 at 9:02 PM Jon Pielaet <emacspeak@xxxxxxxxxxxxx> wrote:
Hi Greg,

I suspect that Fedora's default tcl package is Tcl 9, and emacspeak's speech servers and their espeak glue only work with Tcl 8.6.

Fedora still ships Tcl 8.6 as tcl8, with tcl8-devel and a TclX built for it.

Here is an example script of how I would install them and emacspeak on Fedora 44:

https://github.com/leavesofgrass/emacspeak-docker/blob/main/scripts/install-emacspeak-fedora.sh

I hope this helps.

Best,

Jon


On Wed, Oct 21, 2026 at 5:21 AM Greg Wocher <emacspeak@xxxxxxxxxxxxx> wrote:
Hello all,
I am trying to install emacspeak on fedora 44. I am using the mate spin of fedora. When I try and make espeak I get a very long error and it wont make. Here is the error I get:
g++ -g    -O2 -fPIC  -DPIC  -pedantic -ansi -Wall -Wno-long-long --std=c++11 -I/usr/include/tcl8.6   -c -o tclespeak.o tclespeak.cpp
tclespeak.cpp: In function ‘int Tclespeak_Init(Tcl_Interp*)’:
tclespeak.cpp:105:43: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  105 |   Tcl_CreateObjCommand(interp, "setRate", SetRate, (ClientData)handle,
      |                                           ^     
      |                                           |
      |                                           int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
In file included from /usr/include/tcl.h:2438,
                 from tclespeak.cpp:47:
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:107:43: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  107 |   Tcl_CreateObjCommand(interp, "getRate", GetRate, (ClientData)handle,
      |                                           ^     
      |                                           |
      |                                           int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:109:46: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  109 |   Tcl_CreateObjCommand(interp, "ttsVersion", getTTSVersion, (ClientData)handle,
      |                                              ^           
      |                                              |
      |                                              int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:111:47: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  111 |   Tcl_CreateObjCommand(interp, "ttsDataPath", getTTSDataPath,
      |  ^             
      |                                               |
      |                                               int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:113:41: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  113 |   Tcl_CreateObjCommand(interp, "punct", Punct, (ClientData)handle, NULL);
      |                                         ^   
      |                                         |
      |                                         int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:114:39: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  114 |   Tcl_CreateObjCommand(interp, "say", Say, (ClientData)handle, TclEspeakFree);
      |                                       ^ 
      |                                       |
      |                                       int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:115:41: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  115 |   Tcl_CreateObjCommand(interp, "synth", Say, (ClientData)handle, NULL);
      |                                         ^ 
      |                                         |
      |                                         int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:116:47: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  116 |   Tcl_CreateObjCommand(interp, "synchronize", Synchronize, (ClientData)handle,
      |                                               ^         
      |                                               |
      |                                               int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:118:40: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  118 |   Tcl_CreateObjCommand(interp, "stop", Stop, (ClientData)handle, TclEspeakFree);
      |                                        ^   
      |                                        |
      |                                        int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:119:45: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  119 |   Tcl_CreateObjCommand(interp, "speakingP", SpeakingP, (ClientData)handle,
      |                                             ^       
      |                                             |
      |                                             int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:121:41: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  121 |   Tcl_CreateObjCommand(interp, "pause", Pause, (ClientData)handle,
      |                                         ^   
      |                                         |
      |                                         int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:123:42: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  123 |   Tcl_CreateObjCommand(interp, "resume", Resume, (ClientData)handle,
      |                                          ^     
      |                                          |
      |                                          int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp:125:47: error: invalid conversion from ‘int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**)’ {aka ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)’} to ‘int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*)’ [-fpermissive]
  125 |   Tcl_CreateObjCommand(interp, "setLanguage", SetLanguage, (ClientData)handle,
      |                                               ^         
      |                                               |
      |                                               int (*)(ClientData, Tcl_Interp*, int, Tcl_Obj**) {aka int (*)(void*, Tcl_Interp*, int, Tcl_Obj**)}
/usr/include/tclDecls.h:299:70: note: initializing argument 3 of ‘Tcl_Command_* Tcl_CreateObjCommand(Tcl_Interp*, const char*, int (*)(void*, Tcl_Interp*, int, Tcl_Obj* const*), void*, void (*)(void*))’
  299 |                              const char *cmdName, Tcl_ObjCmdProc *proc,
      |                  ^   
tclespeak.cpp: At global scope:
tclespeak.cpp:133:28: error: expected ‘,’ or ‘...’ before ‘objv’
  133 |             Tcl_Obj *CONST objv[]) {
      |                            ^   
tclespeak.cpp: In function ‘int GetRate(ClientData, Tcl_Interp*, int, Tcl_Obj*)’:
tclespeak.cpp:139:34: error: ‘objv’ was not declared in this scope; did you mean ‘objc’?
  139 |   rc = Tcl_GetIntFromObj(interp, objv[1], &voice);
      |                                  ^   
      |                                  objc
tclespeak.cpp: At global scope:
tclespeak.cpp:150:28: error: expected ‘,’ or ‘...’ before ‘objv’
  150 |             Tcl_Obj *CONST objv[]) {
      |                            ^   
tclespeak.cpp: In function ‘int SetRate(ClientData, Tcl_Interp*, int, Tcl_Obj*)’:
tclespeak.cpp:159:34: error: ‘objv’ was not declared in this scope; did you mean ‘objc’?
  159 |   rc = Tcl_GetIntFromObj(interp, objv[1], &voice);
      |                                  ^   
      |                                  objc
tclespeak.cpp: At global scope:
tclespeak.cpp:241:24: error: expected ‘,’ or ‘...’ before ‘objv’
  241 |         Tcl_Obj *CONST objv[]) {
      |                        ^   
tclespeak.cpp: In function ‘int Say(ClientData, Tcl_Interp*, int, Tcl_Obj*)’:
tclespeak.cpp:244:49: error: ‘objv’ was not declared in this scope; did you mean ‘objc’?
  244 |     char *a_text = (char *)Tcl_GetStringFromObj(objv[i], NULL);
      |                                                 ^   
      |                                                 objc
tclespeak.cpp: At global scope:
tclespeak.cpp:269:32: error: expected ‘,’ or ‘...’ before ‘objv’
  269 |                 Tcl_Obj *CONST objv[]) {
      |                                ^   
tclespeak.cpp:276:25: error: expected ‘,’ or ‘...’ before ‘objv’
  276 |          Tcl_Obj *CONST objv[]) {
      |                         ^   
tclespeak.cpp:284:30: error: expected ‘,’ or ‘...’ before ‘objv’
  284 |               Tcl_Obj *CONST objv[]) {
      |                              ^   
tclespeak.cpp:294:26: error: expected ‘,’ or ‘...’ before ‘objv’
  294 |           Tcl_Obj *CONST objv[]) {
      |                          ^   
tclespeak.cpp:300:27: error: expected ‘,’ or ‘...’ before ‘objv’
  300 |            Tcl_Obj *CONST objv[]) {
      |                           ^   
tclespeak.cpp:309:30: error: expected ‘,’ or ‘...’ before ‘objv’
  309 |               Tcl_Obj *CONST objv[]) {
      |                              ^   
tclespeak.cpp:317:26: error: expected ‘,’ or ‘...’ before ‘objv’
  317 |           Tcl_Obj *CONST objv[]) {
      |                          ^   
tclespeak.cpp: In function ‘int Punct(ClientData, Tcl_Interp*, int, Tcl_Obj*)’:
tclespeak.cpp:318:47: error: ‘objv’ was not declared in this scope; did you mean ‘objc’?
  318 |   char *a_mode = (char *)Tcl_GetStringFromObj(objv[1], NULL);
      |                                               ^   
      |                                               objc
tclespeak.cpp: At global scope:
tclespeak.cpp:343:34: error: expected ‘,’ or ‘...’ before ‘objv’
  343 |                   Tcl_Obj *CONST objv[]) {
      |                                  ^   
tclespeak.cpp:359:35: error: expected ‘,’ or ‘...’ before ‘objv’
  359 |                    Tcl_Obj *CONST objv[]) {
      |                                   ^   
tclespeak.cpp: In function ‘int getTTSDataPath(ClientData, Tcl_Interp*, int, Tcl_Obj*)’:
tclespeak.cpp:370:29: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
  370 |   char *pathCopy = Tcl_Alloc(pathLen);
      |                             ^       
      |                             |
      |                             void*
tclespeak.cpp: At global scope:
tclespeak.cpp:404:32: error: expected ‘,’ or ‘...’ before ‘objv’
  404 |                 Tcl_Obj *CONST objv[]) {
      |                                ^   
tclespeak.cpp: In function ‘int SetLanguage(ClientData, Tcl_Interp*, int, Tcl_Obj*)’:
tclespeak.cpp:407:43: error: ‘objv’ was not declared in this scope; did you mean ‘objc’?
  407 |     const char *voiceName = Tcl_GetString(objv[2]);
      |                                           ^   
make: *** [<builtin>: tclespeak.o] Error 1
greg@fedora: /emacspeak/servers/native-espeak$
I am not sure what to do here. Anyone have any suggestions?

Thanks,
Greg Wocher

Emacspeak discussion list -- emacspeak@xxxxxxxxxxxxx
To unsubscribe send email to:
emacspeak-request@xxxxxxxxxxxxx with a subject of: unsubscribe
Emacspeak discussion list -- emacspeak@xxxxxxxxxxxxx
To unsubscribe send email to:
emacspeak-request@xxxxxxxxxxxxx with a subject of: unsubscribe


|Full archive May 1995 - present by Year|Search the archive|


If you have questions about this archive or had problems using it, please contact us.

Contact Info Page