Subject: Emacspeak discussion list
List archive
- From: Tim Cross <theophilusx AT gmail.com>
- To: Devin Prater <r.d.t.prater AT gmail.com>
- Cc: Jon Pielaet <jon AT pielaet.net>, Greg Wocher <gtwocher AT gmail.com>, emacspeak AT emacspeak.net
- Subject: Re: [Emacspeak] Trying to install emacspeak on fedora 44
- Date: Fri, 23 Oct 2026 11:30:47 +1100
"Devin Prater" (via emacspeak Mailing List) <emacspeak AT emacspeak.net> 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 AT gmail.com
>
> On Wed, Oct 21, 2026 at 9:02 PM Jon Pielaet <emacspeak AT emacspeak.net> 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 AT emacspeak.net>
> 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 AT emacspeak.net
> To unsubscribe send email to:
> emacspeak-request AT emacspeak.net with a subject of: unsubscribe
>
> Emacspeak discussion list -- emacspeak AT emacspeak.net
> To unsubscribe send email to:
> emacspeak-request AT emacspeak.net with a subject of: unsubscribe
>
> Emacspeak discussion list -- emacspeak AT emacspeak.net
> To unsubscribe send email to:
> emacspeak-request AT emacspeak.net with a subject of: unsubscribe
- [Emacspeak] Trying to install emacspeak on fedora 44, Greg Wocher, 10/21/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Jon Pielaet, 10/22/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Devin Prater, 10/22/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Tim Cross, 10/23/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Devin Prater, 10/23/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Tim Cross, 10/23/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Devin Prater, 10/22/2026
- Re: [Emacspeak] Trying to install emacspeak on fedora 44, Jon Pielaet, 10/22/2026
Archive powered by MHonArc 2.6.19+.