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
    No fields configured for issues without a type.

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions