bloomberg/comdb2

Can not build on Ubuntu 22.04

phopfgartner opened this issue · 2 comments

Describe the bug

Can not build comdb2 with current sources on a clean Ubuntu 22.04 system.

To Reproduce
Steps to reproduce the behavior:

Following the README:

sudo apt-get install -y  \
    bison                \
    build-essential      \
    cmake                \
    flex                 \
    libevent-dev         \
    liblz4-dev           \
    libprotobuf-c-dev    \
    libreadline-dev      \
    libsqlite3-dev       \
    libssl-dev           \
    libunwind-dev        \
    ncurses-dev          \
    protobuf-c-compiler  \
    tcl                  \
    uuid-dev             \
    zlib1g-dev

mkdir build
cd build
cmake ..
make

The last step does not complete. In particular, it fails to build the header files in dbinc_auto/

...
[ 10%] Generating qam/qam_auto.c, dbinc_auto/qam_auto.h
awk: run time error: not enough arguments passed to printf("	int ufid_log = gbl_ufid_log || (gbl_ufid_dbreg_test ? rand() % 2 : 0);
")
	FILENAME="-" FNR=40 NR=40
[ 10%] Generating btree/btree_auto.c, dbinc_auto/btree_auto.h
awk: run time error: not enough arguments passed to printf("	int ufid_log = gbl_ufid_log || (gbl_ufid_dbreg_test ? rand() % 2 : 0);
")
	FILENAME="-" FNR=62 NR=62
[ 10%] Generating db/crdel_auto.c, dbinc_auto/crdel_auto.h
awk: run time error: not enough arguments passed to printf("	int ufid_log = gbl_ufid_log || (gbl_ufid_dbreg_test ? rand() % 2 : 0);
")
	FILENAME="-" FNR=44 NR=44
[ 10%] Generating db/db_auto.c, dbinc_auto/db_auto.h
awk: run time error: not enough arguments passed to printf("	int ufid_log = gbl_ufid_log || (gbl_ufid_dbreg_test ? rand() % 2 : 0);
")
	FILENAME="-" FNR=56 NR=56
[ 11%] Generating dbinc_auto/btree_ext.h
[ 11%] Generating dbinc_auto/common_ext.h
[ 11%] Generating dbinc_auto/crypto_ext.h
[ 11%] Generating dbinc_auto/db_ext.h
[ 11%] Generating dbreg/dbreg_auto.c, dbinc_auto/dbreg_auto.h
[ 11%] Generating dbinc_auto/dbreg_ext.h
[ 11%] Generating dbinc_auto/env_ext.h
[ 11%] Generating fileops/fileops_auto.c, dbinc_auto/fileops_auto.h
[ 11%] Generating dbinc_auto/fileops_ext.h
[ 11%] Generating hash/hash_auto.c, dbinc_auto/hash_auto.h
awk: run time error: not enough arguments passed to printf("	int ufid_log = gbl_ufid_log || (gbl_ufid_dbreg_test ? rand() % 2 : 0);
")
	FILENAME="-" FNR=87 NR=87
...

The generated header files are therefore corrupt:

...
[ 13%] Building C object berkdb/CMakeFiles/db.dir/btree/bt_compare.c.o
In file included from /home/phopfgartner/projects/comdb2/berkdb/dbinc/qam.h:174,
                 from /home/phopfgartner/projects/comdb2/berkdb/build/db_int.h:470,
                 from /home/phopfgartner/projects/comdb2/berkdb/btree/bt_compare.c:54:
/home/phopfgartner/projects/comdb2/build/berkdb/dbinc_auto/qam_auto.h:3: error: unterminated #ifndef
    3 | #ifndef __qam_AUTO_H
      | 
In file included from /home/phopfgartner/projects/comdb2/berkdb/dbinc/btree.h:347,
                 from /home/phopfgartner/projects/comdb2/berkdb/btree/bt_compare.c:56:
/home/phopfgartner/projects/comdb2/build/berkdb/dbinc_auto/btree_auto.h:3: error: unterminated #ifndef
    3 | #ifndef __bam_AUTO_H
      | 
In file included from /home/phopfgartner/projects/comdb2/berkdb/build/db_int.h:20,
                 from /home/phopfgartner/projects/comdb2/berkdb/btree/bt_compare.c:54:
/home/phopfgartner/projects/comdb2/build/berkdb/dbinc_auto/btree_ext.h:59:53: error: unknown type name ‘__bam_pgcompact_args’; did you mean ‘__bam_split_args’?
   59 | int __bam_pgcompact_redo_target __P((DBC *, PAGE *, __bam_pgcompact_args *));
      |                                                     ^~~~~~~~~~~~~~~~~~~~
/home/phopfgartner/projects/comdb2/berkdb/build/db.h:69:25: note: in definition of macro ‘__P’
   69 | #define __P(protos)     protos
      |                         ^~~~~~
...

Environment (please complete the following information):

  • Operating System and Version: Ubuntu Linux 22.04

Ubuntu 22.04 installs mawk as default.

after sudo apt install gawk the tree builds without any issue.