[Debian-med-packaging] Bug#1085967: fix cif-tools build failure
Yue Gui
yuemeng.gui at gmail.com
Thu Oct 24 09:46:42 BST 2024
Dear cif-tools Maintainer,
The package cif-tools build failed on all arch. The crucial buildd log
below:
```
[ 28%] Building CXX object CMakeFiles/cif-grep.dir/src/cif-grep.cpp.o
/usr/bin/c++ -DCACHE_DIR=\"/var/cache/libcifpp\"
-DDATA_DIR=\"/usr/share/libcifpp\" -DUSE_RSRC -g -O2
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra
-Wno-unused-parameter -Wno-missing-field-initializers -std=gnu++20 -MD
-MT CMakeFiles/cif-grep.dir/src/cif-grep.cpp.o -MF
CMakeFiles/cif-grep.dir/src/cif-grep.cpp.o.d -o
CMakeFiles/cif-grep.dir/src/cif-grep.cpp.o -c
/<<PKGBUILDDIR>>/src/cif-grep.cpp
/<<PKGBUILDDIR>>/src/cif-diff.cpp:122:14: error: ‘void
templateParser::produce_datablock(const std::string&)’ marked
‘override’, but does not override
122 | void produce_datablock(const std::string &name) override
| ^~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-diff.cpp:126:14: error: ‘void
templateParser::produce_category(const std::string&)’ marked
‘override’, but does not override
126 | void produce_category(const std::string &name) override
| ^~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-diff.cpp:134:14: error: ‘void
templateParser::produce_item(const std::string&, const std::string&,
const std::string&)’ marked ‘override’, but does not override
134 | void produce_item(const std::string &category, const
std::string &item, const std::string &value) override
| ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-diff.cpp: In function ‘void
compareCategories(cif::category&, cif::category&, size_t)’:
/<<PKGBUILDDIR>>/src/cif-diff.cpp:165:38: warning: ‘cif::iset
cif::category::key_fields() const’ is deprecated: use key_items
instead [-Wdeprecated-declarations]
165 | for (auto &tag : a.key_fields())
| ~~~~~~~~~~~~^~
In file included from /usr/include/cif++/datablock.hpp:29,
from /usr/include/cif++/file.hpp:31,
from /usr/include/cif++.hpp:30,
from /<<PKGBUILDDIR>>/src/cif-diff.cpp:33:
/usr/include/cif++/category.hpp:170:54: note: declared here
170 | [[deprecated("use key_items instead")]] iset
key_fields() const; ///< Returns the cif::iset of key item names.
Retrieved from the @ref category_validator for this category
| ^~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-grep.cpp:61:14: error: ‘void
statsParser::produce_datablock(const std::string&)’ marked ‘override’,
but does not override
61 | void produce_datablock(const std::string &name) override
| ^~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-grep.cpp:65:14: error: ‘void
statsParser::produce_category(const std::string&)’ marked ‘override’,
but does not override
65 | void produce_category(const std::string &name) override
| ^~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-grep.cpp:73:14: error: ‘void
statsParser::produce_item(const std::string&, const std::string&,
const std::string&)’ marked ‘override’, but does not override
73 | void produce_item(const std::string &category, const
std::string &item, const std::string &value) override
| ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-diff.cpp: In function ‘void
compareCifsText(cif::file&, cif::file&, const std::string&, const
std::string&, bool, bool)’:
/<<PKGBUILDDIR>>/src/cif-diff.cpp:499:61: warning:
‘std::vector<std::__cxx11::basic_string<char> >
cif::datablock::get_tag_order() const’ is deprecated: use
get_item_order instead [-Wdeprecated-declarations]
499 | b.front().write(out, a.front().get_tag_order());
| ~~~~~~~~~~~~~~~~~~~~~~~^~
/usr/include/cif++/datablock.hpp:196:34: note: declared here
196 | std::vector<std::string> get_tag_order() const
| ^~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-grep.cpp: In constructor
‘statsParser::statsParser(const std::string&, std::istream&, const
std::string&, const std::string&, bool, bool, bool)’:
/<<PKGBUILDDIR>>/src/cif-grep.cpp:56:60: warning:
‘std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >
cif::split_tag_name(std::string_view)’ is deprecated: use
split_item_name instead [-Wdeprecated-declarations]
56 | std::tie(mCat, mItem) = cif::split_tag_name(tag);
| ~~~~~~~~~~~~~~~~~~~^~~~~
In file included from /usr/include/cif++/item.hpp:31,
from /usr/include/cif++/row.hpp:29,
from /usr/include/cif++/condition.hpp:29,
from /usr/include/cif++/category.hpp:31,
from /usr/include/cif++/datablock.hpp:29,
from /usr/include/cif++/file.hpp:31,
from /usr/include/cif++.hpp:30,
from /<<PKGBUILDDIR>>/src/cif-grep.cpp:35:
/usr/include/cif++/text.hpp:329:38: note: declared here
329 | std::tuple<std::string, std::string>
split_tag_name(std::string_view item_name);
| ^~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-grep.cpp: In function ‘size_t cifGrep(const
std::string&, const std::string&, const std::string&, std::istream&,
bool, bool, bool)’:
/<<PKGBUILDDIR>>/src/cif-grep.cpp:105:29: error: cannot declare
variable ‘gp’ to be of abstract type ‘statsParser’
105 | statsParser gp(file, is, pattern, quiet,
printLineNr, invertMatch);
| ^~
/<<PKGBUILDDIR>>/src/cif-grep.cpp:40:7: note: because the following
virtual functions are pure within ‘statsParser’:
40 | class statsParser : public cif::sac_parser
| ^~~~~~~~~~~
In file included from /usr/include/cif++/file.hpp:32:
/usr/include/cif++/parser.hpp:252:22: note: ‘virtual void
cif::sac_parser::produce_datablock(std::string_view)’
252 | virtual void produce_datablock(std::string_view name) = 0;
| ^~~~~~~~~~~~~~~~~
/usr/include/cif++/parser.hpp:253:22: note: ‘virtual void
cif::sac_parser::produce_category(std::string_view)’
253 | virtual void produce_category(std::string_view name) = 0;
| ^~~~~~~~~~~~~~~~
/usr/include/cif++/parser.hpp:255:22: note: ‘virtual void
cif::sac_parser::produce_item(std::string_view, std::string_view,
std::string_view)’
255 | virtual void produce_item(std::string_view category,
std::string_view item, std::string_view value) = 0;
| ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/cif-grep.cpp:112:29: error: cannot declare
variable ‘gp’ to be of abstract type ‘statsParser’
112 | statsParser gp(file, is, tag, pattern, quiet,
printLineNr, invertMatch);
| ^~
/<<PKGBUILDDIR>>/src/cif-grep.cpp: In function ‘int pr_main(int, char**)’:
/<<PKGBUILDDIR>>/src/cif-grep.cpp:181:58: warning:
‘std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >
cif::split_tag_name(std::string_view)’ is deprecated: use
split_item_name instead [-Wdeprecated-declarations]
181 | std::tie(cat, item) = cif::split_tag_name(tag);
| ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/cif++/text.hpp:329:38: note: declared here
329 | std::tuple<std::string, std::string>
split_tag_name(std::string_view item_name);
| ^~~~~~~~~~~~~~
make[3]: *** [CMakeFiles/cif-diff.dir/build.make:83:
CMakeFiles/cif-diff.dir/src/cif-diff.cpp.o] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:972: CMakeFiles/cif-diff.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
```
The full buildd log is below:
https://buildd.debian.org/status/fetch.php?pkg=cif-tools&arch=riscv64&ver=1.0.7-1%2Bb2&stamp=1729338657&raw=0
My solution to this issue:
The error occurred because the relevant parts of this package are not
compatible with the current version of libcifpp. So,we can modify this part
code to be compatible with libcifpp.I have tested the solution locally,and
it works well.The debpatch is in the attachment.Please let me know whether
this solution can be accepted.
Gui-Yue
Best Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-packaging/attachments/20241024/0dcafb2d/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mod-for-libcifpp.patch
Type: application/octet-stream
Size: 4233 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/debian-med-packaging/attachments/20241024/0dcafb2d/attachment-0001.obj>
More information about the Debian-med-packaging
mailing list