recolic / gnome-keyring-yubikey-unlock

This is a read-only mirror for https://git.recolic.net/root/gnome-keyring-yubikey-unlock
GNU General Public License v3.0
77 stars 5 forks source link

Compilation error no matching function for call to ‘std::basic_ostream<char>::basic_ostream(rlib::impl::NullStreamBuf&)’ #3

Closed Octav14n closed 3 years ago

Octav14n commented 3 years ago

I tried compiling the project on Ubuntu 20.04, I manually downloaded and installed the dependencies from bionic Now I'm getting this error:

In file included from unlock_keyrings.cc:3:
./lib/rlib/stream.hpp: In function ‘std::ostream& rlib::null_stream()’:
./lib/rlib/stream.hpp:21:60: error: no matching function for call to ‘std::basic_ostream<char>::basic_ostream(rlib::impl::NullStreamBuf&)’
   21 |         static std::ostream instance(impl::null_streambuf());

the full output:

$ make
mkdir -p ../bin/
g++ unlock_keyrings.cc -o ../bin/unlock_keyrings -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgnome-keyring -lglib-2.0 -I ./lib -I . -std=c++14 
In file included from ./lib/rlib/log.hpp:10,
                 from unlock_keyrings.cc:1:
./lib/rlib/sys/time.hpp: In function ‘std::string rlib::get_current_time_str()’:
./lib/rlib/sys/time.hpp:15:84: warning: throw will always call terminate() [-Wterminate]
   15 |         throw std::overflow_error("on get_current_time: mbstr buffer is too small.");
      |                                                                                    ^
In file included from unlock_keyrings.cc:3:
./lib/rlib/stream.hpp: In function ‘std::ostream& rlib::null_stream()’:
./lib/rlib/stream.hpp:21:60: error: no matching function for call to ‘std::basic_ostream<char>::basic_ostream(rlib::impl::NullStreamBuf&)’
   21 |         static std::ostream instance(impl::null_streambuf());
      |                                                            ^
In file included from /usr/include/c++/9/istream:39,
                 from /usr/include/c++/9/fstream:38,
                 from ./lib/rlib/log.hpp:5,
                 from unlock_keyrings.cc:1:
/usr/include/c++/9/ostream:399:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::basic_ostream(std::basic_ostream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits<char>]’
  399 |       basic_ostream(basic_ostream&& __rhs)
      |       ^~~~~~~~~~~~~
/usr/include/c++/9/ostream:399:37: note:   no known conversion for argument 1 from ‘rlib::impl::NullStreamBuf’ to ‘std::basic_ostream<char>&&’
  399 |       basic_ostream(basic_ostream&& __rhs)
      |                     ~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/9/ostream:395:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::basic_ostream(std::basic_iostream<_CharT, _Traits>&) [with _CharT = char; _Traits = std::char_traits<char>]’
  395 |       basic_ostream(basic_iostream<_CharT, _Traits>&) { }
      |       ^~~~~~~~~~~~~
/usr/include/c++/9/ostream:395:21: note:   no known conversion for argument 1 from ‘rlib::impl::NullStreamBuf’ to ‘std::basic_iostream<char>&’
  395 |       basic_ostream(basic_iostream<_CharT, _Traits>&) { }
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/ostream:390:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::basic_ostream() [with _CharT = char; _Traits = std::char_traits<char>]’
  390 |       basic_ostream()
      |       ^~~~~~~~~~~~~
/usr/include/c++/9/ostream:390:7: note:   candidate expects 0 arguments, 1 provided
/usr/include/c++/9/ostream:84:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::basic_ostream(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]’
   84 |       basic_ostream(__streambuf_type* __sb)
      |       ^~~~~~~~~~~~~
/usr/include/c++/9/ostream:84:39: note:   no known conversion for argument 1 from ‘rlib::impl::NullStreamBuf’ to ‘std::basic_ostream<char>::__streambuf_type*’ {aka ‘std::basic_streambuf<char>*’}
   84 |       basic_ostream(__streambuf_type* __sb)
      |                     ~~~~~~~~~~~~~~~~~~^~~~
In file included from unlock_keyrings.cc:4:
keyring_op.hpp: In function ‘GnomeKeyringResult do_unlock(std::string, std::string)’:
keyring_op.hpp:6:71: warning: ‘GnomeKeyringResult gnome_keyring_unlock_sync(const char*, const char*)’ is deprecated: Use 'secret_service_unlock_sync' instead [-Wdeprecated-declarations]
    6 |     return gnome_keyring_unlock_sync(keyring.c_str(), password.c_str());
      |                                                                       ^
In file included from keyring_op.hpp:1,
                 from unlock_keyrings.cc:4:
/usr/include/gnome-keyring-1/gnome-keyring.h:229:20: note: declared here
  229 | GnomeKeyringResult gnome_keyring_unlock_sync        (const char                                   *keyring,
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from unlock_keyrings.cc:4:
keyring_op.hpp:6:71: warning: ‘GnomeKeyringResult gnome_keyring_unlock_sync(const char*, const char*)’ is deprecated: Use 'secret_service_unlock_sync' instead [-Wdeprecated-declarations]
    6 |     return gnome_keyring_unlock_sync(keyring.c_str(), password.c_str());
      |                                                                       ^
In file included from keyring_op.hpp:1,
                 from unlock_keyrings.cc:4:
/usr/include/gnome-keyring-1/gnome-keyring.h:229:20: note: declared here
  229 | GnomeKeyringResult gnome_keyring_unlock_sync        (const char                                   *keyring,
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:9: secret] Fehler 1

I have installed the libraries like so:

wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/universe/libg/libgnome-keyring/libgnome-keyring-common_3.12.0-1build1_all.deb
wget http://security.ubuntu.com/ubuntu/pool/universe/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1build1_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/universe/libg/libgnome-keyring/gir1.2-gnomekeyring-1.0_3.12.0-1build1_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/universe/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1build1_amd64.deb

sudo dpkg -i multiarch-support_2.27-3ubuntu1_amd64.deb
sudo dpkg-reconfigure multiarch-support
sudo dpkg -i libgnome-keyring-common_3.12.0-1build1_all.deb libgnome-keyring0_3.12.0-1build1_amd64.deb gir1.2-gnomekeyring-1.0_3.12.0-1build1_amd64.deb libgnome-keyring-dev_3.12.0-1build1_amd64.deb

is there a library I'm missing?

recolic commented 3 years ago

resolved in latest commit.