Bug 1221691

Summary: GCC 14: hfsutils package fails
Product: [openSUSE] openSUSE Tumbleweed Reporter: Michal Jireš <michal.jires>
Component: OtherAssignee: Valentin Lefebvre <valentin.lefebvre>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: valentin.lefebvre
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Bug Depends on:    
Bug Blocks: 1220571    

Description Michal Jireš 2024-03-19 11:46:06 UTC
Building hfsutils with GCC 14 fails here:
https://build.opensuse.org/package/live_build_log/openSUSE:Factory:Staging:Gcc7/hfsutils/standard/x86_64

Due to (exhaustive list of errors):

tclhfs.c: In function ‘direntstr’:
tclhfs.c:193:26: error: passing argument 2 of ‘Tcl_Merge’ from incompatible pointer type [-Wincompatible-pointer-types]
  193 |   return Tcl_Merge(argc, argv);
      |                          ^~~~
      |                          |
      |                          char **
In file included from /usr/include/tcl.h:2421,
                 from tclhfs.c:37:
/usr/include/tclDecls.h:584:66: note: expected ‘const char * const*’ but argument is of type ‘char **’
  584 | EXTERN char *           Tcl_Merge(int argc, CONST84 char *const *argv);
      |                                                                  ^
tclhfs.c: In function ‘file_ref’:
tclhfs.c:510:36: error: passing argument 3 of ‘Tcl_CreateCommand’ from incompatible pointer type [-Wincompatible-pointer-types]
  510 |                                    file_cmd, fref, file_del);
      |                                    ^~~~~~~~
      |                                    |
      |                                    int (*)(void *, Tcl_Interp *, int,  char **)
/usr/include/tclDecls.h:303:67: note: expected ‘int (*)(void *, Tcl_Interp *, int,  const char **)’ but argument is of type ‘int (*)(void *, Tcl_Interp *, int,  char **)’
  303 |                                 const char *cmdName, Tcl_CmdProc *proc,
      |                                                      ~~~~~~~~~~~~~^~~~
tclhfs.c: In function ‘vol_cmd’:
tclhfs.c:892:61: error: passing argument 4 of ‘Tcl_SplitList’ from incompatible pointer type [-Wincompatible-pointer-types]
  892 |           if (Tcl_SplitList(interp, interp->result, &listc, &listv) != TCL_OK)
      |                                                             ^~~~~~
      |                                                             |
      |                                                             char ***
/usr/include/tclDecls.h:722:49: note: expected ‘const char ***’ but argument is of type ‘char ***’
  722 |                                 CONST84 char ***argvPtr);
      |                                                 ^
tclhfs.c:904:37: error: passing argument 2 of ‘Tcl_Merge’ from incompatible pointer type [-Wincompatible-pointer-types]
  904 |           result = Tcl_Merge(listc, listv);
      |                                     ^~~~~
      |                                     |
      |                                     char **
tclhfs.c:1037:54: error: passing argument 4 of ‘Tcl_SplitList’ from incompatible pointer type [-Wincompatible-pointer-types]
 1037 |           if (Tcl_SplitList(interp, argv[2], &listc, &listv) != TCL_OK)
      |                                                      ^~~~~~
      |                                                      |
      |                                                      char ***
tclhfs.c:1049:37: error: passing argument 2 of ‘Tcl_Merge’ from incompatible pointer type [-Wincompatible-pointer-types]
 1049 |           result = Tcl_Merge(fargc, fargv);
      |                                     ^~~~~
      |                                     |
      |                                     char **
tclhfs.c: In function ‘cmd_hfs’:
tclhfs.c:1238:25: error: passing argument 3 of ‘Tcl_CreateCommand’ from incompatible pointer type [-Wincompatible-pointer-types]
 1238 |                         vol_cmd, vref, vol_del);
      |                         ^~~~~~~
      |                         |
      |                         int (*)(void *, Tcl_Interp *, int,  char **)
tclhfs.c:1310:54: error: passing argument 4 of ‘Tcl_SplitList’ from incompatible pointer type [-Wincompatible-pointer-types]
 1310 |           if (Tcl_SplitList(interp, argv[5], &listc, &listv) != TCL_OK)
      |                                                      ^~~~~~
      |                                                      |
      |                                                      char ***
tclhfs.c: In function ‘Hfs_Init’:
tclhfs.c:1480:38: error: passing argument 3 of ‘Tcl_CreateCommand’ from incompatible pointer type [-Wincompatible-pointer-types]
 1480 |   Tcl_CreateCommand(interp, "hfs",   cmd_hfs,   0, 0);
      |                                      ^~~~~~~
      |                                      |
      |                                      int (*)(void *, Tcl_Interp *, int,  char **)
tclhfs.c:1481:38: error: passing argument 3 of ‘Tcl_CreateCommand’ from incompatible pointer type [-Wincompatible-pointer-types]
 1481 |   Tcl_CreateCommand(interp, "exit",  cmd_exit,  0, 0);
      |                                      ^~~~~~~~
      |                                      |
      |                                      int (*)(void *, Tcl_Interp *, int,  char **)



See the meta bug#1220571 for more info.
Comment 1 Valentin Lefebvre 2024-03-20 17:55:27 UTC
On it!
There are 2 kinds of errors, incompatible pointer type and deprecated declaration.
I am on vacation and will come back beginning of April.
But patches available at: https://build.opensuse.org/package/show/home:vlefebvre:branches:filesystems/hfsutils

Need to be tested before to submit to Factory. Will do that in my return if no urgent.
Comment 2 Valentin Lefebvre 2024-05-13 09:39:38 UTC
Fixes has been merged to Factory.
Believe all fix. Don't hesitate to re-open in case of wrong patches.