Can not build vkdt master on Debian stable 12.6

This works for me, using v0.7.0:

git clone https://github.com/hanatos/vkdt.git
cd vkdt
cd bin
git checkout 0.7.0
git submodule update --init
make -j32
./vkdt

But if I try latest master I get an error:

git clone https://github.com/hanatos/vkdt.git
cd vkdt
cd bin
make 
...
clang -Wall -pipe -I. -D_GNU_SOURCE -std=c11 -Ipipe -I. -fPIC -DVKDT_DSO_BUILD -Wall -pipe -O3 -march=x86-64 -DNDEBUG   -shared pipe/modules/inpaint/main.c  -o pipe/modules/inpaint/libinpaint.so  -s -lm -ldl
clang -Wall -pipe -I. -D_GNU_SOURCE -std=c11 -Ipipe -I. -fPIC -DVKDT_DSO_BUILD -Wall -pipe -O3 -march=x86-64 -DNDEBUG   -shared pipe/modules/i-pfm/main.c  -o pipe/modules/i-pfm/libi-pfm.so  -s  -ldl
cd pipe/modules/i-raw/rawloader-c; cargo update; cargo build --release
    Updating crates.io index
    Updating git repository `https://github.com/dnglab/dnglab`
error: package `toml_datetime v0.6.6` cannot be built because it requires rustc 1.65 or newer, while the currently active rustc version is 1.63.0
Either upgrade to rustc 1.65 or newer, or use
cargo update -p toml_datetime@0.6.6 --precise ver
where `ver` is the latest version of `toml_datetime` supporting rustc 1.63.0
make[2]: *** [pipe/modules/i-raw/flat.mk:55: pipe/modules/i-raw/rawloader-c/target/release/librawloader.a] Error 101
make[2]: Leaving directory '/home/magnus/test/vkdt/src'
make[1]: *** [Makefile:104: src] Error 2
make[1]: Leaving directory '/home/magnus/test/vkdt'
make: *** [Makefile:7: all] Error 2

This is correct. Debian 12.6 has:

rustc --version
rustc 1.63.0

So, my only way out is to follow advice below?

Either upgrade to rustc 1.65 or newer, or use
cargo update -p toml_datetime@0.6.6 --precise ver
where `ver` is the latest version of `toml_datetime` supporting rustc 1.63.0

Seems like it!

sorry i’m not expert in rust and associated toolchains enough to give you a good answer. i have no idea how packages can update themselves in the background… the git commit to the rawler package i use is constant, it’s just that the dependencies update themselves. it’s like inverse code rot :slight_smile:

anyhow the workaround i use in the CI builds is to update the rust toolchain via:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

(see https://rustup.rs)

this will then use all the newest dependencies to make the build happy.

Hello @hanatos,

Thank you for the feedback.

Same here! :slight_smile: All I have is a rust installation.

OK. Good to know. I will probably try and update rustc locally for the vkdt build environment. I am aware that Debian stable is not the optimal build environment, since it is so conservative regarding package versions. Debian Testing is using rustc 1.78.0.

I got this on vkdt master with new modern rustc:

git clone https://github.com/hanatos/vkdt.git
cd vkdt
cd bin
make
...
   Compiling rawler v0.6.1 (https://github.com/dnglab/dnglab?rev=828ea44#828ea448)
   Compiling num_enum v0.7.2
   Compiling rawloader-clib v0.1.0 (/home/magnus/test/vkdt/vkdt/src/pipe/modules/i-raw/rawloader-c)
    Finished `release` profile [optimized] target(s) in 27.20s
touch pipe/modules/i-raw/rawloader-c/target/release/librawloader.a
clang -Wall -pipe -I. -D_GNU_SOURCE -std=c11 -Ipipe -I. -fPIC -DVKDT_DSO_BUILD -Wall -pipe -O3 -march=x86-64 -DNDEBUG  -Ipipe/modules/i-raw/rawloader-c -shared pipe/modules/i-raw/main.c  -o pipe/modules/i-raw/libi-raw.so  -s pipe/modules/i-raw/rawloader-c/target/release/librawloader.a -ldl
clang -Wall -pipe -I. -D_GNU_SOURCE -std=c11 -Ipipe -I. -fPIC -DVKDT_DSO_BUILD -Wall -pipe -O3 -march=x86-64 -DNDEBUG   -shared pipe/modules/i-v4l2/main.c  -o pipe/modules/i-v4l2/libi-v4l2.so  -s  -ldl
clang -Wall -pipe -I. -D_GNU_SOURCE -std=c11 -Ipipe -I. -fPIC -DVKDT_DSO_BUILD -Wall -pipe -O3 -march=x86-64 -DNDEBUG  -I/usr/include/x86_64-linux-gnu  -shared pipe/modules/i-vid/main.c  -o pipe/modules/i-vid/libi-vid.so  -s -lavformat -lavcodec -lswresample  -ldl
pipe/modules/i-vid/main.c:474:42: error: no member named 'frame_num' in 'struct AVCodecContext'; did you mean 'frame_number'?
    if(mod->graph->frame + 1 != d->vctx->frame_num) // zero vs 1 based
                                         ^~~~~~~~~
                                         frame_number
/usr/include/x86_64-linux-gnu/libavcodec/avcodec.h:1037:9: note: 'frame_number' declared here
    int frame_number;
        ^
1 error generated.
make[2]: *** [Makefile:157: pipe/modules/i-vid/libi-vid.so] Error 1
make[2]: Leaving directory '/home/magnus/test/vkdt/vkdt/src'
make[1]: *** [Makefile:104: src] Error 2
make[1]: Leaving directory '/home/magnus/test/vkdt/vkdt'
make: *** [Makefile:7: all] Error 2

I got past all rustc complaints from before => my rustc is now up to date for vkdt master.

I will file a proper issue report later.

this means your ffmpeg is too old. you need 6+. if you’re ubuntu there is some ppa for it. but you mentioned this is debian right? either get that from a newer repo or if you don’t want video you can disable it in the build by editing config.mk in the bin directory to contain

VKDT_USE_FFMPEG=0
export VKDT_USE_FFMPEG

Aha. Got it. Thank you very much. I suspected as much, a too old package, that is, but I had no idea it was caused by ffmpeg. I have:

ffmpeg
ffmpeg version 5.1.5-0+deb12u1 

Yes, Debian stable 12.6, Bookworm. I will use a newer repo or disable video as you propose.

I can compile git master with VKDT_USE_FFMPEG=0 export VKDT_USE_FFMPEG in config.mk, but I get a runtime error:

./vkdt
[gui] glfwGetVersionString() : 3.3.8 X11 GLX EGL OSMesa clock_gettime evdev shared
[gui] monitor [0] DP-2 at 0 0
[gui] vk extension required by GLFW:
[gui]   VK_KHR_surface
[gui]   VK_KHR_xcb_surface
[ERR] error VK_ERROR_EXTENSION_NOT_PRESENT executing vkCreateInstance!
[ERR] init vulkan failed
[ERR] failed to init gui/swapchain

I have a basic Vulkan operating since vkdt 0.7.0 works for me on the same system.

I have:

Debian 12.6
X11
Intel core I9 14900K
Nvidia Quadro RTX 4000

EDIT: Is this some NVIDIA GPU and Intel Core I9 GPU (Intel® UHD Graphics 770) interference?

vulkaninfo

...
Presentable Surfaces:
=====================
GPU id : 0 (Quadro RTX 4000):
...
...
GPU id : 1 (llvmpipe (LLVM 15.0.6, 256 bits)):

hm. could you run ./vkdt -d all or at least ./vkdt -d qvk please? maybe it’ll be more verbose in which gpu it picks and ideally which extension it is missing.

the only additional extension i can think of that i might have added since 0.7.0 is some colour management swapchain thing that i was hoping would solve some issues on wayland (which it doesn’t). if it’s that i can remove it, but yeah… it might just select the wrong gpu.

[pipe] base directory /home/magnus/test/vkdt/vkdt/bin
[pipe] home directory /home/magnus/.config/vkdt
[pipe] module menon has no connectors!
[pipe] module i-geo has no connectors!
[pipe] module cnn has no connectors!
[pipe] module o-ffmpeg has no connectors!
[pipe] loaded 82 modules
[gui] glfwGetVersionString() : 3.3.8 X11 GLX EGL OSMesa clock_gettime evdev shared
[gui] monitor [0] DP-2 at 0 0
[gui] vk extension required by GLFW:
[gui]   VK_KHR_surface
[gui]   VK_KHR_xcb_surface
[ERR] error VK_ERROR_EXTENSION_NOT_PRESENT executing vkCreateInstance!
[ERR] init vulkan failed
[ERR] failed to init gui/swapchain

I am using X11.

EDIT: Added same in issue report vkdt master: Runtime error on Debian 12.6 : Nvidia Quadro RTX 4000 : Intel I9 14900K : Vulkan Instance Version: 1.3.239 · Issue #131 · hanatos/vkdt · GitHub.

EDIT: Thank you for your help. Just FYI, I will be traveling for a week, from tomorrow, with no access to my computer. => I will be silent.

okay thanks. since you said the old version had no issues, i removed the colour management thing. it doesn’t work anyways. this is now pushed, if you still have time to test you can pull. otherwise safe travels, we’ll talk after.

git master 0.8.99-59-gf2aa97e8 works for me with VKDT_USE_FFMPEG=0 and export VKDT_USE_FFMPEG in config.mk.

:partying_face: thanks for the high quality issue descriptions and for confirming. glad it’s working now.

1 Like