Bug 678772

Summary: rb_libtorrent is incompatible with new libboost
Product: [Fedora] Fedora Reporter: Jan Vcelak <jvcelak>
Component: rb_libtorrentAssignee: Peter Gordon <peter>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 15CC: leigh123linux, peter, tsmetana
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-03-15 18:12:43 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
fatrat.spec none

Description Jan Vcelak 2011-02-19 14:29:41 UTC
Description of problem:

Current version of rb_libtorrent in F15 and Rawhide is incompatible with new libboost. This causes that package 'fatrat' can not be recompiled and therefore we have a broken-deps version in F15 and Rawhide.

Version-Release number of selected component (if applicable):

rb_libtorrent-0.15.5-2.fc15.x86_64
boost-1.46.0-0.3.beta1.fc15.x86_64

How reproducible:

=== reproducer.cpp ===

#include <libtorrent/create_torrent.hpp>

int main(int argc, char *argv[]) { return 0; }

== compilation output ==

[build@rawhide reproducer]$ g++ reproducer.cpp 
In file included from /usr/include/libtorrent/create_torrent.hpp:38:0,
                 from reproducer.cpp:1:
/usr/include/libtorrent/file_storage.hpp:110:8: error: ‘void libtorrent::file_storage::add_file(const wpath&, libtorrent::size_type, int, time_t, const boost::filesystem3::path&)’ cannot be overloaded
/usr/include/libtorrent/file_storage.hpp:106:8: error: with ‘void libtorrent::file_storage::add_file(const boost::filesystem3::path&, libtorrent::size_type, int, time_t, const boost::filesystem3::path&)’
In file included from /usr/include/libtorrent/storage.hpp:55:0,
                 from /usr/include/libtorrent/create_torrent.hpp:41,
                 from reproducer.cpp:1:
/usr/include/libtorrent/torrent_info.hpp:195:3: error: ‘libtorrent::torrent_info::torrent_info(const wpath&)’ cannot be overloaded
/usr/include/libtorrent/torrent_info.hpp:193:3: error: with ‘libtorrent::torrent_info::torrent_info(const boost::filesystem3::path&)’
/usr/include/libtorrent/torrent_info.hpp:204:3: error: ‘libtorrent::torrent_info::torrent_info(const wpath&, boost::system::error_code&)’ cannot be overloaded
/usr/include/libtorrent/torrent_info.hpp:202:3: error: with ‘libtorrent::torrent_info::torrent_info(const boost::filesystem3::path&, boost::system::error_code&)’
In file included from reproducer.cpp:1:0:
/usr/include/libtorrent/create_torrent.hpp:200:60: error: ‘boost::filesystem::basic_path’ has not been declared
/usr/include/libtorrent/create_torrent.hpp:200:70: error: expected ‘,’ or ‘...’ before ‘<’ token
/usr/include/libtorrent/create_torrent.hpp: In function ‘void libtorrent::detail::add_files_impl(libtorrent::file_storage&, int)’:
/usr/include/libtorrent/create_torrent.hpp:203:29: error: ‘boost::filesystem::basic_path’ has not been declared
/usr/include/libtorrent/create_torrent.hpp:204:29: error: ‘boost::filesystem::basic_directory_iterator’ has not been declared
/usr/include/libtorrent/create_torrent.hpp:205:4: error: ‘basic_path’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:205:18: error: expected primary-expression before ‘,’ token
/usr/include/libtorrent/create_torrent.hpp:205:30: error: expected primary-expression before ‘>’ token
/usr/include/libtorrent/create_torrent.hpp:205:34: error: ‘p’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:205:38: error: ‘l’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:205:39: error: there are no arguments to ‘f’ that depend on a template parameter, so a declaration of ‘f’ must be available [-fpermissive]
/usr/include/libtorrent/create_torrent.hpp:205:39: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/include/libtorrent/create_torrent.hpp:206:14: error: ‘f’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:206:15: error: there are no arguments to ‘pred’ that depend on a template parameter, so a declaration of ‘pred’ must be available [-fpermissive]
/usr/include/libtorrent/create_torrent.hpp:208:32: error: ‘f’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:208:33: error: there are no arguments to ‘is_directory’ that depend on a template parameter, so a declaration of ‘is_directory’ must be available [-fpermissive]
/usr/include/libtorrent/create_torrent.hpp:211:21: error: there are no arguments to ‘is_symlink’ that depend on a template parameter, so a declaration of ‘is_symlink’ must be available [-fpermissive]
/usr/include/libtorrent/create_torrent.hpp:211:28: error: ‘flags’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:216:10: error: ‘basic_directory_iterator’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:216:49: error: expected primary-expression before ‘,’ token
/usr/include/libtorrent/create_torrent.hpp:216:61: error: expected primary-expression before ‘>’ token
/usr/include/libtorrent/create_torrent.hpp:216:63: error: expected primary-expression before ‘>’ token
/usr/include/libtorrent/create_torrent.hpp:216:68: error: there are no arguments to ‘i’ that depend on a template parameter, so a declaration of ‘i’ must be available [-fpermissive]
/usr/include/libtorrent/create_torrent.hpp:216:71: error: ‘end’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:216:71: note: suggested alternatives:
/usr/include/boost/range/end.hpp:106:77: note:   ‘boost::range_adl_barrier::end’
/usr/include/boost/range/end.hpp:106:77: note:   ‘boost::range_adl_barrier::end’
/usr/include/libtorrent/create_torrent.hpp:216:76: error: ‘i’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:224:38: error: ‘pred’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:224:44: error: ‘flags’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:233:10: error: ‘flags’ was not declared in this scope
/usr/include/libtorrent/create_torrent.hpp:240:32: error: there are no arguments to ‘file_size’ that depend on a template parameter, so a declaration of ‘file_size’ must be available [-fpermissive]
/usr/include/libtorrent/create_torrent.hpp: In function ‘void libtorrent::add_files(libtorrent::file_storage&, const boost::filesystem3::path&, uint32_t)’:
/usr/include/libtorrent/create_torrent.hpp:275:33: error: no matching function for call to ‘add_files_impl(libtorrent::file_storage&, boost::filesystem3::path, boost::filesystem3::path, bool (&)(const boost::filesystem3::path&), uint32_t&)’
/usr/include/libtorrent/create_torrent.hpp:275:33: note: candidate is:
/usr/include/libtorrent/create_torrent.hpp:201:95: note: template<class Pred, class Str, class PathTraits> void libtorrent::detail::add_files_impl(libtorrent::file_storage&, int)
[build@rawhide reproducer]$


Steps to Reproduce:
1. install rb_libtorrent-devel
2. g++ reproducer.cpp
3. 
  
Actual results:
Reproducer causes this error. And fatrat build fails.

Expected results:
Reproducer will not crash on including create_torrent.hpp. And fatrat build will succeed.

Additional info:
fatrat: http://koji.fedoraproject.org/koji/packageinfo?packageID=10956

Comment 1 leigh scott 2011-02-19 14:53:10 UTC
Created attachment 479700 [details]
fatrat.spec

Comment 2 leigh scott 2011-02-19 14:53:33 UTC
I have attached a spec file that enables it to build

http://koji.fedoraproject.org/koji/taskinfo?taskID=2851140

Comment 3 leigh scott 2011-02-19 15:18:27 UTC
(In reply to comment #0)
> Description of problem:
> 
> Current version of rb_libtorrent in F15 and Rawhide is incompatible with new
> libboost. This causes that package 'fatrat' can not be recompiled and therefore


IMO the fault lies with fatrat not using the libtorrent-rasterbar.pc file

Comment 4 Jan Vcelak 2011-02-19 15:54:18 UTC
(In reply to comment #1)
> Created attachment 479700 [details]
> fatrat.spec

Thank you! I've already fixed that.

Anyway your patch is wrong, as it drops all the other compiler flags. This is the reason:
$ rpm --showrc | grep CFLAGS=
  CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS;

You can take a look at:
http://fedoraproject.org/wiki/PackagingGuidelines#Compiler_flags

(In reply to comment #3)
> 
> IMO the fault lies with fatrat not using the libtorrent-rasterbar.pc file

That's a good point.

Comment 5 Mamoru TASAKA 2011-03-15 18:12:43 UTC
Once closing.