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

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



"Devin Prater" (via emacspeak Mailing List) <emacspeak@xxxxxxxxxxxxx> writes:


Actually, I'm not sure that information is correct. I'm running on
Fedora 44 and dnf shows there is a tclx package. However, I did have to
change the shell shebang to

#!/usr/bin/tclsh8

I have the following tcl related packages installed from dnf

tcl.x86_64        1:9.0.2-1.fc44  
tcl8.x86_64       1:8.6.17-2.fc44 
tcl8-devel.x86_64 1:8.6.17-2.fc44 
tclx.x86_64       8.4.0-52.fc44   

The most common cause of errors when it comes to building the speech
servers are minor naming inconsistencies across linux distributions or
operating systems. For example, tclsh8 for the tcl shell name instead of
just tclsh or slight differences in shared library names. The ldd
command can help identify missing shared libs, as can using tools like
find ro the fd utility. 

> 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.
> Devin Prater
> r.d.t.prater@xxxxxxxxx
>
> 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
>
> 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