Bug 2337701 - Please update the package for the 'Tcl/Tk 9.0' Fedora change
Summary: Please update the package for the 'Tcl/Tk 9.0' Fedora change
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: emacspeak
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Jens Petersen
QA Contact: Fedora Extras Quality Assurance
URL: https://fedoraproject.org/wiki/Change...
Whiteboard:
Depends On:
Blocks: 2337584
TreeView+ depends on / blocked
 
Reported: 2025-01-14 18:33 UTC by Jaroslav Škarvada
Modified: 2025-02-04 02:54 UTC (History)
1 user (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-02-04 02:52:43 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Jaroslav Škarvada 2025-01-14 18:33:26 UTC
Fedora 42 will update Tcl/Tk to version 9.0. It seems your package uses Tcl or Tk as a dependency.
Please check that your package builds and works correctly with Tcl/Tk 9.0.
The effort is tracked in the bug 2337584, there is system wide change proposal [1]. I also tried to
rebuild the direct dependencies in Copr [2].

TL/DR:
- there is side tag "f42-build-side-103615"
- Tcl/Tk was bumped to version 9.0 in the side tag
- there are compat packages tcl8/tk8 in the side tag for backward compatibility
- if your package needs fixing, please fix it to build with the Tcl/Tk 9.0 or switch it to the compat tcl8/tk8
- build your package into the side tag "f42-build-side-103615" (if rebuild is not needed, e.g. the package
  just calls the Tcl shell and works with any Tcl version, ignore this step)
- close this bug

Full version:
If your package works correctly and doesn't require rebuild, please close this bug as rawhide.

If your package needs rebuild and correctly builds with the Tcl/Tk 9.0, please rebuild it with the
side-tag "f42-build-side-103615":
  $ fedpkg build --target=f42-build-side-103615
Optionally, you can regenerate the repo for others to be able to build with your package in the side-tag
(example YOUR_PKG_NVR="brltty-6.7-3"):
  $ koji wait-repo --build=$YOUR_PKG_NVR.fc42 f42-build-side-103615 --request
Close this bug as rawhide.

If your package doesn't build with the Tcl/Tk 9.0, please fix/port it. There is a Tcl/Tk 9.0 porting
guide [3]. Then build it with the side-tag "f42-build-side-103615":
  $ fedpkg build --target=f42-build-side-103615
Optionally, you can regenerate the repo for others to be able to build with your package in the side-tag,
(example YOUR_PKG_NVR="brltty-6.7-3"):
  $ koji wait-repo --build=$YOUR_PKG_NVR.fc42 f42-build-side-103615 --request
Close this bug as rawhide.

If your package cannot be ported or it's unrealistic to do it in the short time, please switch to the
compat Tcl/Tk 8 packages. In the spec file change the BuildRequires from the "tcl-devel"/"tk-devel" to
"tcl8-devel"/"tk8-devel". If your package needs explicit "Requires: tcl", you can use "Requires: tcl8".
Then build your package with the side-tag "f42-build-side-103615":
  $ fedpkg build --target=f42-build-side-103615
Optionally, you can regenerate the repo for others to be able to build with your package in the side-tag,
(example YOUR_PKG_NVR="brltty-6.7-3"):
  $ koji wait-repo --build=$YOUR_PKG_NVR.fc42 f42-build-side-103615 --request
Close this bug as rawhide.

If you update your package after resolving this bug (and before 2025-02-04), please build to the side-tag.

Components which bugzillas won't be resolved till 2025-01-31 will be switched to the compat tcl8/tk8
packages by proven packager and rebuilt into the side-tag.

Then at the turning point (2025-02-03) the side-tag will be pushed by me as an Bodhi update.

Thanks for your cooperation.

[1] https://fedoraproject.org/wiki/Changes/TclTk9.0
[2] https://copr.fedorainfracloud.org/coprs/jskarvad/TclTK9.0.0/
[3] https://www.tcl-lang.org/software/tcltk/9.0.html

Comment 1 Jens Petersen 2025-01-15 02:34:49 UTC
Given that the Mass Rebuild starts later today - it would be good to update the scope of the Change to explain how you plan to land this after the Mass Rebuild.

(It doesn't make sense to rebuild today in a sidetag, only to be rebuilt the next day in f42-rebuild.)

Comment 2 Jens Petersen 2025-01-15 02:52:53 UTC
Hmm, I just updated emacspeak yesterday, but today:

util.py:459:  Problem: conflicting requests
util.py:459:    - nothing provides libtree-sitter.so.0.23()(64bit) needed by emacs-1:29.4-46.fc42.x86_64 from build

Comment 4 Jaroslav Škarvada 2025-01-15 10:42:07 UTC
Update:

There is a better way how to handle switch to compat packages, instead of build requiring tcl8-devel/tk8-devel, the following is better and backward compatible approach:
  BuildRequires: tcl-devel < 9
  BuildRequires: tk-devel < 9
The correct provides are already included in the tcl8/tk8 packages. And in a such way the package needn't be built into the side tag.

For updates please check the tracking bug 2337584.

Comment 5 Jens Petersen 2025-01-15 10:49:50 UTC
Thanks - I can try that...

I did try first actually after rebuilding emacs, but hit surprisingly (to me):

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:2439,
                 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
make: Leaving directory '/builddir/build/BUILD/emacspeak-60.0-build/emacspeak-60.0/servers/native-espeak'
error: Bad exit status from /var/tmp/rpm-tmp.52QLcZ (%install)

Comment 6 Jens Petersen 2025-01-15 10:51:26 UTC
To ask explicitly/curiously: why is /use/bin/tcl8.6 provided by tcl-9 ?

Comment 7 Jaroslav Škarvada 2025-01-15 11:06:51 UTC
Update (auto comment):

>  BuildRequires: tcl-devel < 9
>  BuildRequires: tk-devel < 9

There is epoch, so the correct variant is:
  BuildRequires: tcl-devel < 1:9
  BuildRequires: tk-devel < 1:9

Sorry for confusion.

Comment 8 Jaroslav Škarvada 2025-01-15 11:22:00 UTC
(In reply to Jens Petersen from comment #6)
> To ask explicitly/curiously: why is /use/bin/tcl8.6 provided by tcl-9 ?

It shouldn't be provided, I cannot see it:
$ rpm -q -l tcl | grep tcl8.6
$ rpm -q -l tcl-devel | grep tcl8.6
$ rpm -q tcl
tcl-9.0.0-6.fc42.x86_64

Comment 9 Jaroslav Škarvada 2025-01-15 11:25:58 UTC
(In reply to Jens Petersen from comment #1)
> Given that the Mass Rebuild starts later today - it would be good to update
> the scope of the Change to explain how you plan to land this after the Mass
> Rebuild.
> 
> (It doesn't make sense to rebuild today in a sidetag, only to be rebuilt the
> next day in f42-rebuild.)

Yes, I noticed this and this complicates things a bit. The current plan: for the packages switched to compat, we will not rebuild them, because the ABI shouldn't break. For the packages in the side-tag, I will rebuild them before pushing the bodhi update.

Comment 10 Jens Petersen 2025-01-15 17:15:50 UTC
(In reply to Jaroslav Škarvada from comment #8)
> (In reply to Jens Petersen from comment #6)
> > To ask explicitly/curiously: why is /use/bin/tcl8.6 provided by tcl-9 ?
> 
> It shouldn't be provided, I cannot see it:
> $ rpm -q -l tcl | grep tcl8.6
> $ rpm -q -l tcl-devel | grep tcl8.6
> $ rpm -q tcl
> tcl-9.0.0-6.fc42.x86_64

Yeah I don't understand either but as you can above somehow /usr/bin/tcl8.6 was used in my scratch build despite tcl-9 being installed.  Mysterious.
But indeed with "tcl-devel < 1:9" it succeeds.

I would probably feel safer just using "BR: tcl8-devel" TBH anyway, given that emacspeak currently fails with tcl-9 apparently?

Comment 11 Jens Petersen 2025-01-15 17:18:55 UTC
> I would probably feel safer just using "BR: tcl8-devel" TBH anyway, given
> that emacspeak currently fails with tcl-9 apparently?

Nvm: it is quite true that tcl-devel is backward compatible so it does make more sense.

Comment 12 Jens Petersen 2025-01-15 17:23:07 UTC
I pushed a commit with "BuildRequires: tcl-devel < 1:9" 👍

Comment 13 Jaroslav Škarvada 2025-02-03 19:00:21 UTC
Update (auto comment):

Tcl/Tk 9.0 update was pushed as fedora 42 update together with the tcl8/tk8 compat packages.

If your package is Tcl/Tk 9.0 compatible, build it with the tcl-devel or tk-devel build requirements (no side tag build now).

If your package isn't Tcl/Tk 9.0 compatible, the implicit dependencies should be automatically satisfied now by the compat tcl8/tk8 packages,
but the package may later fail to build (FTBFS). In such case, change the build requirement to tcl8-devel or tk8-devel. It turned out that some
packages may also require patching to use the tclsh8/wish8 instead of the tclsh/wish. This should be trivial change.

If you already handled it, thank you and please ignore this message.

Comment 14 Jens Petersen 2025-02-04 02:54:20 UTC
I think I used the virtual provides, though I actually wanted to use the versioned ones.


Note You need to log in before you can comment on or make changes to this bug.