Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wgrib 3.5.0 fails to build with gcc 15 #309

Open
opoplawski opened this issue Jan 24, 2025 · 0 comments
Open

wgrib 3.5.0 fails to build with gcc 15 #309

opoplawski opened this issue Jan 24, 2025 · 0 comments

Comments

@opoplawski
Copy link

gcc 15 is now in Fedora rawhide. wgrib2 fails to build with it by default due to the change to the C23 standard. Errors include:

[ 21%] Building C object wgrib2/CMakeFiles/wgrib2_lib.dir/fnlist.c.o
cd /builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/redhat-linux-build/wgrib2 && /usr/bin/gcc -Dwgrib2_lib_EXPORTS -I/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/redhat-linux-build -I/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/gctpc/source/include -g -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -DGFORTRAN -fPIC -fopenmp -MD -MT wgrib2/CMakeFiles/wgrib2_lib.dir/fnlist.c.o -MF CMakeFiles/wgrib2_lib.dir/fnlist.c.o.d -o CMakeFiles/wgrib2_lib.dir/fnlist.c.o -c /builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:9:12: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **)’ [-Wincompatible-pointer-types]
    9 |    {"else",f_else, Else, 0, "else, -if ... -else ... -endif", 100},
      |            ^~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:9:12: note: (near initialization for ‘functions[0].fn’)
In file included from /builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:4:
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:11:5: note: ‘f_else’ declared here
   11 | int f_else(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local);
      |     ^~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:10:14: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   10 |    {"elseif",f_if, Elseif, 1, "elseif X (POSIX regular expression) conditional on match, -if ... -elseif ... -endif", 200},
      |              ^~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:10:14: note: (near initialization for ‘functions[1].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:18:5: note: ‘f_if’ declared here
   18 | int f_if(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local, const char *arg1);
      |     ^~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:11:17: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   11 |    {"elseif_fs",f_if_fs, Elseif, 1, "elseif X (fixed string) conditional execution", 200},
      |                 ^~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:11:17: note: (near initialization for ‘functions[2].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:20:5: note: ‘f_if_fs’ declared here
   20 | int f_if_fs(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local, const char *arg1);
      |     ^~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:12:16: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   12 |    {"elseif_n",f_if_n, Elseif, 1, "elseif (inv numbers in range), X=(start:end:step)", 200},
      |                ^~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:12:16: note: (near initialization for ‘functions[3].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:21:5: note: ‘f_if_n’ declared here
   21 | int f_if_n(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local, const char *arg1);
      |     ^~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:13:18: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   13 |    {"elseif_rec",f_if_rec, Elseif, 1, "elseif (record numbers in range), X=(start:end:step)", 200},
      |                  ^~~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:13:18: note: (near initialization for ‘functions[4].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:22:5: note: ‘f_if_rec’ declared here
   22 | int f_if_rec(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local, const char *arg1);
      |     ^~~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:14:18: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   14 |    {"elseif_reg",f_if_reg, Elseif, 1, "elseif rpn registers defined, X = A, A:B, A:B:C, etc A = register number", 200},
      |                  ^~~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:14:18: note: (near initialization for ‘functions[5].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:23:5: note: ‘f_if_reg’ declared here
   23 | int f_if_reg(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local, const char *arg1);
      |     ^~~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:15:13: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **)’ [-Wincompatible-pointer-types]
   15 |    {"endif",f_endif, Endif, 0, "terminates if block", 100},
      |             ^~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:15:13: note: (near initialization for ‘functions[6].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:17:5: note: ‘f_endif’ declared here
   17 | int f_endif(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local);
      |     ^~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:16:10: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   16 |    {"if",f_if, If, 1, "if X (POSIX regular expression), conditional execution on match", 100},
      |          ^~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:16:10: note: (near initialization for ‘functions[7].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:18:5: note: ‘f_if’ declared here
   18 | int f_if(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local, const char *arg1);
      |     ^~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:17:24: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **)’ [-Wincompatible-pointer-types]
   17 |    {"if_delayed_error",f_if_delayed_error, If, 0, "if delayed error", 100},
      |                        ^~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:17:24: note: (near initialization for ‘functions[8].fn’)
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.h:19:5: note: ‘f_if_delayed_error’ declared here
   19 | int f_if_delayed_error(int mode, unsigned char **sec, float *data, unsigned int ndata, char *inv, void **local);
      |     ^~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/wgrib2-3.5.0-build/wgrib2-3.5.0/wgrib2/fnlist.c:18:13: error: initialization of ‘int (*)(void)’ from incompatible pointer type ‘int (*)(int,  unsigned char **, float *, unsigned int,  char *, void **, const char *)’ [-Wincompatible-pointer-types]
   18 |    {"if_fs",f_if_fs, If, 1, "if X (fixed string), conditional execution on match", 100},
      |             ^~~~~~~

this is just a few but I think you get the gist. See https://gcc.gnu.org/gcc-15/porting_to.html#c23 for some more info.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant