Skip to content

Compilation fails with Python3 and sqlite  #2

@gabriele-scivoletto

Description

@gabriele-scivoletto

Describe the bug

Cannot compile the unikernel when i enable the sqlite python3 extension

Steps to reproduce

$ mkdir temp
$ cd temp
$ mkdir uk_workdir
$ export UK_WORKDIR=$(pwd)/uk_workdir
$ nano kraft.yaml 
---
specification: '0.5'
name: bug-sqlite
unikraft:
  version: staging
  kconfig:
    - CONFIG_LIBUK9P=y
    - CONFIG_LIB9PFS=y
    - CONFIG_LIBDEVFS=y
    - CONFIG_LIBDEVFS_AUTOMOUNT=y
    - CONFIG_LIBVFSCORE_AUTOMOUNT_ROOTFS=y
    - CONFIG_LIBVFSCORE_ROOTFS_9PFS=y
    - CONFIG_LIBUKLIBPARAM=y
    - CONFIG_LIBVFSCORE_ROOTDEV="fs0"
targets:
  - architecture: x86_64
    platform: kvm
libraries:
  pthread-embedded:
    version: staging
  lwip:
    version: staging
  zlib:
    version: staging
  libuuid:
    version: staging
  newlib:
    version: staging
  sqlite:
    version: staging
    kconfig:
      - CONFIG_LIBSQLITE_MAIN_FUNCTION=n
  python3:
    version: staging
    kconfig:
      - CONFIG_LIBPYTHON3=y
      - CONFIG_LIBPYTHON3_EXTENSIONS=y
      - CONFIG_LIBPYTHON3_EXTENSION_EXPAT=y
      - CONFIG_LIBPYTHON3_EXTENSION_LIBMPDEC=y
      - CONFIG_LIBPYTHON3_EXTENSION_UUID=y
      - CONFIG_LIBPYTHON3_EXTENSION_ZLIB=y
      - CONFIG_LIBPYTHON3_MAIN_FUNCTION=y
volumes:
  fs0:
    driver: 9pfs
    source: ./minrootfs.tgz
$ kraft list pull
$ kraft configure -F
$ kraft build 

Which architectures were you using or does this bug affect?
x86_64

Which platforms were you using or does this bug affect?
kvm

Relevant log output

`CC      libnewlibglue: crypt_r.o
CC      libnewlibglue: crypt_sha256.o
CC      libnewlibglue: crypt_sha512.o
CC      libnewlibglue: encrypt.o
LD      libnewlibglue.ld.o
OBJCOPY libnewlibglue.o
CC      libsqlite: shell.o
CC      libsqlite: sqlite3.o
LD      libsqlite.ld.o
OBJCOPY libsqlite.o 
CC      libpython3: init.unikraft.o
CC      libpython3: modules_config.unikraft.o
/home/ubuntu/temp/uk-event-manager/uk_workdir/libs/python3/modules_config.c:293:16: error: ‘PyInit__sqlite3’ undeclared here (not in a function); did you mean ‘PyInit__tkinter’?
  293 |     {"sqlite", PyInit__sqlite3},
      |                ^~~~~~~~~~~~~~~
      |                PyInit__tkinter
/home/ubuntu/temp/uk-event-manager/uk_workdir/libs/python3/modules_config.c:293:5: warning: missing initializer for field ‘initfunc’ of ‘struct _inittab’ [-Wmissing-field-initializers]
  293 |     {"sqlite", PyInit__sqlite3},
      |     ^
In file included from /home/ubuntu/temp/uk-event-manager/build/libpython3/origin/Python-3.7.4/Include/Python.h:145,
                 from /home/ubuntu/temp/uk-event-manager/uk_workdir/libs/python3/include/Python.h:39,
                 from /home/ubuntu/temp/uk-event-manager/uk_workdir/libs/python3/modules_config.c:20:
/home/ubuntu/temp/uk-event-manager/build/libpython3/origin/Python-3.7.4/Include/import.h:122:17: note: ‘initfunc’ declared here
  122 |     PyObject* (*initfunc)(void);
      |                 ^~~~~~~~
make[1]: *** [/home/ubuntu/temp/uk-event-manager/uk_workdir/unikraft/support/build/Makefile.build:27: /home/ubuntu/temp/uk-event-manager/build/libpython3/modules_config.unikraft.o] Error 1
make: *** [Makefile:1008: sub-make] Error 2`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions