build issues on zsh after some elements have been made private
Hello, after the privatization of some elements in vlc_configuration.h I got a build failure trying to build zsh completition. In Debian we do it this way
Build zsh completion
BUILDDIR=$(CURDIR)
cd extras/analyser && ./zsh_completion.sh
and it fails due to
https://launchpadlibrarian.net/570562349/buildlog_ubuntu-impish-amd64.vlc_4.0.0rc1~~git20211124+r90042+261ubuntu21.10.1_BUILDING.txt.gz
g++ -g -O2 -ffile-prefix-map=/<<BUILDDIR>>/vlc-4.0.0~rc1~~git20211124+r90042+261~ubuntu21.10.1=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -g -O0 -DHAVE_CONFIG_H -I../../ -I../..//include -I../../include zsh.cpp ../..//lib/.libs/libvlc.so ../..//src/.libs/libvlccore.so -o zsh_gen
zsh.cpp: In function ‘void PrintOption(const module_config_t*, const string&, const string&, const string&)’:
zsh.cpp:62:26: error: ‘const module_config_t’ {aka ‘const struct module_config_t’} has no member named ‘i_short’
62 | char i_short = item->i_short;
| ^~~~~~~
zsh.cpp: In function ‘void ParseOption(const module_config_t*)’:
zsh.cpp:105:15: error: ‘const module_config_t’ {aka ‘const struct module_config_t’} has no member named ‘b_removed’
105 | if (item->b_removed)
| ^~~~~~~~~
make[1]: *** [debian/rules:293: override_dh_auto_build] Error 1
make[1]: Leaving directory '/<<BUILDDIR>>/vlc-4.0.0~rc1~~git20211124+r90042+261~ubuntu21.10.1'
make: *** [debian/rules:277: binary] Error 2
It would be nice to have this check and build also done by upstream
A tentative patch is:
diff -rup a/extras/analyser/zsh.cpp b/extras/analyser/zsh.cpp
--- a/extras/analyser/zsh.cpp 2021-11-05 21:13:22.000000000 +0100
+++ b/extras/analyser/zsh.cpp 2021-11-24 14:47:22.758842188 +0100
@@ -59,7 +59,8 @@ static void PrintOption(const module_con
{
std::string longtext = item->psz_longtext ? item->psz_longtext : "";
std::string text = item->psz_text ? item->psz_text : "";
- char i_short = item->i_short;
+ struct vlc_param *param = container_of (item, struct vlc_param,
+ item);
ReplaceChars(longtext);
ReplaceChars(text);
@@ -69,8 +70,8 @@ static void PrintOption(const module_con
std::cout << " \"";
const char *args_c = args.empty() ? "" : "=";
- if (i_short) {
- std::cout << "(-" << i_short;
+ if (param->shortname) {
+ std::cout << "(-" << param->shortname;
if (!excl.empty())
std::cout << excl;
@@ -80,7 +81,7 @@ static void PrintOption(const module_con
if (!args.empty())
std::cout << ":" << longtext << ":" << args;
- std::cout << "\"\\\n \"(--" << opt << excl << ")-" << i_short;
+ std::cout << "\"\\\n \"(--" << opt << excl << ")-" << param->shortname;
} else {
if (!excl.empty())
std::cout << "(" << excl << ")";
@@ -101,8 +102,10 @@ static void ParseOption(const module_con
std::string list;
std::pair<mcmap::iterator, mcmap::iterator> range;
std::pair<mumap::iterator, mumap::iterator> range_mod;
+ struct vlc_param *param = container_of (item, struct vlc_param,
+ item);
- if (item->b_removed)
+ if (param->obsolete)
return;
switch(item->i_type)