New comment by chloris-pale-green on void-packages repository https://github.com/void-linux/void-packages/issues/4420#issuecomment-1571738791 Comment: I've almost successfully packaged `jami-daemon` (see [this commit](https://github.com/chloris-pale-green/void-packages/commit/e2e1ef07781df3376d0ac3ad15485c36f569caa2)). The build documentation is quite abysmal. I've ripped off most of the build process from Arch. Dependencies compile successfully, the configure step is successful (except some complaining about `dbus`, which can be disabled, if needed), but the `jami-daemon` itself fails to compile. We don't have `libnatpmp` in the repos, if that's desired. The compile error seems to be about class member naming: ``` => jami-daemon-20230601_1: running do_build ... make all-recursive make[1]: Entering directory '/builddir/jami-daemon-20230601' Making all in src make[2]: Entering directory '/builddir/jami-daemon-20230601/src' CXX buildinfo.lo CXX conference.lo CXX conference_protocol.lo CXX account_factory.lo CXX call_factory.lo CXX preferences.lo CXX manager.lo CXX call.lo CXX gittransport.lo In file included from /builddir/jami-daemon-20230601/src/media/video/video_input.h:27, from client/videomanager.h:35, from preferences.cpp:58: /builddir/jami-daemon-20230601/src/media/media_stream.h: In constructor 'jami::MediaStream::MediaStream(const std::string&, AVCodecContext*, int64_t)': /builddir/jami-daemon-20230601/src/media/media_stream.h:115:33: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'? 115 | nbChannels = c->ch_layout.nb_channels; | ^~~~~~~~~ | channel_layout /builddir/jami-daemon-20230601/src/media/media_stream.h: In member function 'void jami::MediaStream::update(AVFrame*)': /builddir/jami-daemon-20230601/src/media/media_stream.h:147:29: error: 'AVFrame' {aka 'struct AVFrame'} has no member named 'ch_layout'; did you mean 'channel_layout'? 147 | nbChannels = f->ch_layout.nb_channels; | ^~~~~~~~~ | channel_layout In file included from /builddir/jami-daemon-20230601/src/media/media_encoder.h:36, from /builddir/jami-daemon-20230601/src/media/media_recorder.h:27, from /builddir/jami-daemon-20230601/src/media/recordable.h:25, from call.h:32, from call_factory.h:30, from call_factory.cpp:23: /builddir/jami-daemon-20230601/src/media/media_stream.h: In constructor 'jami::MediaStream::MediaStream(const std::string&, AVCodecContext*, int64_t)': /builddir/jami-daemon-20230601/src/media/media_stream.h:115:33: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'? 115 | nbChannels = c->ch_layout.nb_channels; | ^~~~~~~~~ | channel_layout /builddir/jami-daemon-20230601/src/media/media_stream.h: In member function 'void jami::MediaStream::update(AVFrame*)': /builddir/jami-daemon-20230601/src/media/media_stream.h:147:29: error: 'AVFrame' {aka 'struct AVFrame'} has no member named 'ch_layout'; did you mean 'channel_layout'? 147 | nbChannels = f->ch_layout.nb_channels; | ^~~~~~~~~ | channel_layout In file included from /builddir/jami-daemon-20230601/src/media/media_encoder.h:36, from /builddir/jami-daemon-20230601/src/media/media_recorder.h:27, from /builddir/jami-daemon-20230601/src/media/recordable.h:25, from call.h:32, from call_factory.h:30, from manager.h:35, from manager.cpp:35: /builddir/jami-daemon-20230601/src/media/media_stream.h: In constructor 'jami::MediaStream::MediaStream(const std::string&, AVCodecContext*, int64_t)': /builddir/jami-daemon-20230601/src/media/media_stream.h:115:33: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'? 115 | nbChannels = c->ch_layout.nb_channels; | ^~~~~~~~~ | channel_layout /builddir/jami-daemon-20230601/src/media/media_stream.h: In member function 'void jami::MediaStream::update(AVFrame*)': /builddir/jami-daemon-20230601/src/media/media_stream.h:147:29: error: 'AVFrame' {aka 'struct AVFrame'} has no member named 'ch_layout'; did you mean 'channel_layout'? 147 | nbChannels = f->ch_layout.nb_channels; | ^~~~~~~~~ | channel_layout ``` And so on... Any suggestions? Is is sloppy code or does one of our libraries have different variable names in it than on another distro (`ch_layout` vs `channel_layout`)? We don't need to patch the source files to rename them, right? If that's the case, `sed` would probably do the job.