linux-nvme / nvme-cli

NVMe management command line interface.
https://nvmexpress.org
GNU General Public License v2.0
1.45k stars 650 forks source link

Main branch compilation error on struct nvme_nvm_id_ns #2434

Closed rwk-unil closed 1 month ago

rwk-unil commented 1 month ago

Hello,

The main branch (tested with head at commit: 0979f22fb7ec57f5c32a275a6e60c4ab90a2f563) reports a compilation error : error: ‘struct nvme_nvm_id_ns’ has no member named ‘npdgl’.

meson compile -C .build
ninja: Entering directory `/home/user/nvme-cli/.build'
[33/37] Compiling C object nvme.p/nvme-print-json.c.o
FAILED: nvme.p/nvme-print-json.c.o 
ccache cc -Invme.p -I. -I.. -Iccan -I../ccan -Isubprojects/libnvme/src -I../subprojects/libnvme/src -I/usr/include/json-c -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -O2 -g -fomit-frame-pointer -D_GNU_SOURCE -include config.h -MD -MQ nvme.p/nvme-print-json.c.o -MF nvme.p/nvme-print-json.c.o.d -o nvme.p/nvme-print-json.c.o -c ../nvme-print-json.c
In file included from ../nvme.h:30,
                 from ../nvme-print.h:5,
                 from ../nvme-print-json.c:7:
../nvme-print-json.c: In function ‘json_nvme_nvm_id_ns’:
../nvme-print-json.c:3068:59: error: ‘struct nvme_nvm_id_ns’ has no member named ‘npdgl’
 3068 |                 obj_add_int(r, "npdgl", le32_to_cpu(nvm_ns->npdgl));
      |                                                           ^~
../util/json.h:18:58: note: in definition of macro ‘json_object_add_value_int’
   18 |         json_object_object_add(o, k, json_object_new_int(v))
      |                                                          ^
../nvme-print-json.c:3068:17: note: in expansion of macro ‘obj_add_int’
 3068 |                 obj_add_int(r, "npdgl", le32_to_cpu(nvm_ns->npdgl));
      |                 ^~~~~~~~~~~
[34/37] Compiling C object nvme.p/nvme-print-stdout.c.o
FAILED: nvme.p/nvme-print-stdout.c.o 
ccache cc -Invme.p -I. -I.. -Iccan -I../ccan -Isubprojects/libnvme/src -I../subprojects/libnvme/src -I/usr/include/json-c -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -O2 -g -fomit-frame-pointer -D_GNU_SOURCE -include config.h -MD -MQ nvme.p/nvme-print-stdout.c.o -MF nvme.p/nvme-print-stdout.c.o.d -o nvme.p/nvme-print-stdout.c.o -c ../nvme-print-stdout.c
../nvme-print-stdout.c: In function ‘stdout_nvm_id_ns’:
../nvme-print-stdout.c:3144:59: error: ‘struct nvme_nvm_id_ns’ has no member named ‘npdgl’
 3144 |                 printf("npdgl : %#x\n", le32_to_cpu(nvm_ns->npdgl));
      |                                                           ^~
[36/37] Compiling C object nvme.p/util_utils.c.o
ninja: build stopped: subcommand failed.
make: *** [Makefile:19: nvme] Error 1

Regards, Rick

martin-belanger commented 1 month ago

It could be that the subprojects are out of date. Try the following and then try compiling again.

meson subprojects update
rwk-unil commented 1 month ago

Thank you very much, that was it.