remove "-g" (include debug flags) compiler option by alaniwi · Pull Request #305 · NCAS-CMS/cf-python
Thanks for this PR Alan, and sorry for the delayed reply, myself and @davidhassell have been very busy lately. David is now on leave, so I'll review this now.
FYI, I set the CI jobs to run, the failure in the 'Run test suite / test-suite-job-0' which cancelled the other jobs is due to a flaky test which is obviously unrelated to your Makefile change comprising this PR. The important thing is that I can see from the logs that in those jobs (pre-cancellation for all but that one) the 'Make UMRead' step ran fine, e.g:
$ cd /Users/runner/work/cf-python/cf-python/main/cf/umread_lib/c-lib $ make gcc -Wall -fPIC -DLINUX -c umfile.c gcc -Wall -fPIC -DLINUX -c error.c gcc -Wall -fPIC -DLINUX -c filetype.c gcc -Wall -fPIC -DLINUX -c malloc.c gcc -Wall -fPIC -DLINUX -c linklist.c gcc -Wall -fPIC -DLINUX -c new_structs.c gcc -Wall -fPIC -DLINUX -c swap.c make -C type-dep make[1]: Entering directory '/home/runner/work/cf-python/cf-python/main/cf/umread_lib/c-lib/type-dep' gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o umfile_test_typedep_sgl.o umfile_test_typedep.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o interpret_header_sgl.o interpret_header.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o read_sgl.o read.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o process_vars_sgl.o process_vars.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o debug_dump_sgl.o debug_dump.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o date_and_time_sgl.o date_and_time.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o compare_sgl.o compare.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o levels_sgl.o levels.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o axes_sgl.o axes.c gcc -Wall -fPIC -DLINUX -I.. -c -DSINGLE -o unwgdos_sgl.o unwgdos.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o umfile_test_typedep_dbl.o umfile_test_typedep.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o interpret_header_dbl.o interpret_header.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o read_dbl.o read.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o process_vars_dbl.o process_vars.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o debug_dump_dbl.o debug_dump.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o date_and_time_dbl.o date_and_time.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o compare_dbl.o compare.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o levels_dbl.o levels.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o axes_dbl.o axes.c gcc -Wall -fPIC -DLINUX -I.. -c -DDOUBLE -o unwgdos_dbl.o unwgdos.c rm -f umfile_typedep.a ar r umfile_typedep.a umfile_test_typedep_sgl.o interpret_header_sgl.o read_sgl.o process_vars_sgl.o debug_dump_sgl.o date_and_time_sgl.o compare_sgl.o levels_sgl.o axes_sgl.o unwgdos_sgl.o umfile_test_typedep_dbl.o interpret_header_dbl.o read_dbl.o process_vars_dbl.o debug_dump_dbl.o date_and_time_dbl.o compare_dbl.o levels_dbl.o axes_dbl.o unwgdos_dbl.o ar: creating umfile_typedep.a make[1]: Leaving directory '/home/runner/work/cf-python/cf-python/main/cf/umread_lib/c-lib/type-dep' ld -shared --build-id -o umfile.so umfile.o error.o filetype.o malloc.o linklist.o new_structs.o swap.o --whole-archive type-dep/umfile_typedep.a
so the removal of the -g flag seems to be fine across those cases, including on MacOS:
$ cd /Users/runner/work/cf-python/cf-python/main/cf/umread_lib/c-lib $ make clang -Wall -fPIC -DOSX -c umfile.c clang -Wall -fPIC -DOSX -c error.c clang -Wall -fPIC -DOSX -c filetype.c clang -Wall -fPIC -DOSX -c malloc.c clang -Wall -fPIC -DOSX -c linklist.c clang -Wall -fPIC -DOSX -c new_structs.c clang -Wall -fPIC -DOSX -c swap.c /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/make -C type-dep clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o umfile_test_typedep_sgl.o umfile_test_typedep.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o interpret_header_sgl.o interpret_header.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o read_sgl.o read.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o process_vars_sgl.o process_vars.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o debug_dump_sgl.o debug_dump.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o date_and_time_sgl.o date_and_time.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o compare_sgl.o compare.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o levels_sgl.o levels.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o axes_sgl.o axes.c clang -Wall -fPIC -DOSX -I.. -c -DSINGLE -o unwgdos_sgl.o unwgdos.c unwgdos.c:371:45: warning: shifting a negative signed value is undefined [-Wshift-negative-value] *inum = (*icomp << (31-istart)) & (~0 << 31); ~~ ^ unwgdos.c:3[9](https://github.com/NCAS-CMS/cf-python/runs/5130889501?check_suite_focus=true#step:10:9)6:[27](https://github.com/NCAS-CMS/cf-python/runs/5130889501?check_suite_focus=true#step:10:27): warning: shifting a negative signed value is undefined [-Wshift-negative-value] clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o umfile_test_typedep_dbl.o umfile_test_typedep.c i = (ui >> ibit) & ~(~0 << 1); ~~ ^ 2 warnings generated. clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o interpret_header_dbl.o interpret_header.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o read_dbl.o read.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o process_vars_dbl.o process_vars.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o debug_dump_dbl.o debug_dump.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o date_and_time_dbl.o date_and_time.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o compare_dbl.o compare.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o levels_dbl.o levels.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o axes_dbl.o axes.c clang -Wall -fPIC -DOSX -I.. -c -DDOUBLE -o unwgdos_dbl.o unwgdos.c unwgdos.c:371:45: warning: shifting a negative signed value is undefined [-Wshift-negative-value] *inum = (*icomp << ([31](https://github.com/NCAS-CMS/cf-python/runs/5130889501?check_suite_focus=true#step:10:31)-istart)) & (~0 << 31); ~~ ^ rm -f umfile_typedep.a unwgdos.c:[39](https://github.com/NCAS-CMS/cf-python/runs/5130889501?check_suite_focus=true#step:10:39)6:27: warning: shifting a negative signed value is undefined [-Wshift-negative-value] ar r umfile_typedep.a umfile_test_typedep_sgl.o interpret_header_sgl.o read_sgl.o process_vars_sgl.o debug_dump_sgl.o date_and_time_sgl.o compare_sgl.o levels_sgl.o axes_sgl.o unwgdos_sgl.o umfile_test_typedep_dbl.o interpret_header_dbl.o read_dbl.o process_vars_dbl.o debug_dump_dbl.o date_and_time_dbl.o compare_dbl.o levels_dbl.o axes_dbl.o unwgdos_dbl.o i = (ui >> ibit) & ~(~0 << 1); ~~ ^ 2 warnings generated. ar: creating archive umfile_typedep.a clang -dynamiclib -o umfile.so umfile.o error.o filetype.o malloc.o linklist.o new_structs.o swap.o -force_load type-dep/umfile_typedep.a
(Though it works and builds fine, I see there is a warning raised in the above make output, which I will raise as a separate Issue and tag you to check if you wouldn't mind, since I know little C and know you wrote the C for cf-python.)
I'm testing your PR locally now and will submit a review in a moment.