Date: Sun, 20 May 2007 23:53:48 +0200 (CEST) From: Henrik Brix Andersen <henrik@brixandersen.dk> To: FreeBSD-gnats-submit@FreeBSD.org Cc: novel@FreeBSD.org Subject: ports/112821: [patch] Make x11-wm/fbpager compile with gcc-4.2 Message-ID: <20070520215348.EC85B11420@lothlorien.brixandersen.dk> Resent-Message-ID: <200705202200.l4KM0BZB035662@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 112821 >Category: ports >Synopsis: [patch] Make x11-wm/fbpager compile with gcc-4.2 >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun May 20 22:00:10 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Henrik Brix Andersen >Release: FreeBSD 7.0-CURRENT i386 >Organization: pil.dk >Environment: System: FreeBSD lothlorien.brixandersen.dk 7.0-CURRENT FreeBSD 7.0-CURRENT #34: Sun May 20 13:14:49 CEST 2007 root@lothlorien.brixandersen.dk:/usr/obj/usr/src/sys/LOTHLORIEN i386 >Description: Currently, x11-wm/fbpager doesn't compile with gcc-4.2 as found in recent -CURRENT: source='main.cc' object='fbpager-main.o' libtool=no depfile='.deps/fbpager-main.Po' tmpdepfile='.deps/fbpager-main.TPo' depmo de=gcc3 /bin/sh ../depcomp c++ -DHAVE_CONFIG_H -I. -I. -I.. -IFbTk -O2 -fno-strict-aliasing -pipe -march=prescott -I/usr/l ocal/include -c -o fbpager-main.o `test -f main.cc || echo './'`main.cc source='FbPager.cc' object='fbpager-FbPager.o' libtool=no depfile='.deps/fbpager-FbPager.Po' tmpdepfile='.deps/fbpager-FbPager .TPo' depmode=gcc3 /bin/sh ../depcomp c++ -DHAVE_CONFIG_H -I. -I. -I.. -IFbTk -O2 -fno-strict-aliasing -pipe -march=presco tt -I/usr/local/include -c -o fbpager-FbPager.o `test -f FbPager.cc || echo './'`FbPager.cc In file included from FbPager.cc:40: Resources.hh:13: error: specialization of 'void FbTk::Resource<T>::setFromString(const char*) [with T = bool]' in different nam espace Resources.hh:13: error: from definition of 'void FbTk::Resource<T>::setFromString(const char*) [with T = bool]' Resources.hh:23: error: specialization of 'std::string FbTk::Resource<T>::getString() [with T = bool]' in different namespace Resources.hh:23: error: from definition of 'std::string FbTk::Resource<T>::getString() [with T = bool]' Resources.hh:28: error: specialization of 'void FbTk::Resource<T>::setFromString(const char*) [with T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]' in different namespace Resources.hh:28: error: from definition of 'void FbTk::Resource<T>::setFromString(const char*) [with T = std::basic_string<ch ar, std::char_traits<char>, std::allocator<char> >]' Resources.hh:33: error: specialization of 'std::string FbTk::Resource<T>::getString() [with T = std::basic_string<char, std::ch ar_traits<char>, std::allocator<char> >]' in different namespace Resources.hh:33: error: from definition of 'std::string FbTk::Resource<T>::getString() [with T = std::basic_string<char, std: :char_traits<char>, std::allocator<char> >]' Resources.hh:38: error: specialization of 'void FbTk::Resource<T>::setFromString(const char*) [with T = int]' in different name space Resources.hh:38: error: from definition of 'void FbTk::Resource<T>::setFromString(const char*) [with T = int]' Resources.hh:45: error: specialization of 'std::string FbTk::Resource<T>::getString() [with T = int]' in different namespace Resources.hh:45: error: from definition of 'std::string FbTk::Resource<T>::getString() [with T = int]' Resources.hh:53: error: specialization of 'void FbTk::Resource<T>::setFromString(const char*) [with T = FbPager::FbPager::Align ment]' in different namespace Resources.hh:53: error: from definition of 'void FbTk::Resource<T>::setFromString(const char*) [with T = FbPager::FbPager::Al ignment]' Resources.hh:61: error: specialization of 'std::string FbTk::Resource<T>::getString() [with T = FbPager::FbPager::Alignment]' i n different namespace Resources.hh:61: error: from definition of 'std::string FbTk::Resource<T>::getString() [with T = FbPager::FbPager::Alignment] ' FbPager.cc: In constructor 'FbPager::FbPager::FbPager(int, bool, bool, bool, bool, const char*)': FbPager.cc:271: warning: deprecated conversion from string constant to 'char*' FbPager.cc:277: warning: deprecated conversion from string constant to 'char*' FbPager.cc:278: warning: deprecated conversion from string constant to 'char*' *** Error code 1 >How-To-Repeat: On a -CURRENT box with gcc-4.2: # cd /usr/ports/x11-wm/fbpager # make >Fix: The patch below was taken from Gentoo Linux Bugzilla, originally submitted by Ryan Hill. See http://bugs.gentoo.org/135504 It fixes the build with gcc-4.2 for me. --- patch-Resources.hh begins here --- --- src/Resources.hh +++ src/Resources.hh @@ -8,8 +8,10 @@ #include <cstdio> #include <cstring> +namespace FbTk { + template<> -void FbTk::Resource<bool>:: +void Resource<bool>:: setFromString(char const *strval) { if (strcasecmp(strval, "true") == 0 || strcasecmp(strval, "yes") == 0) @@ -19,38 +21,37 @@ } template<> -std::string FbTk::Resource<bool>:: +std::string Resource<bool>:: getString() { return std::string(**this == true ? "true" : "false"); } template <> -void FbTk::Resource<std::string>::setFromString(const char *str) { +void Resource<std::string>::setFromString(const char *str) { *(*this) = (str ? str : ""); } template <> -std::string FbTk::Resource<std::string>::getString() { +std::string Resource<std::string>::getString() { return *(*this); } template <> -void FbTk::Resource<int>::setFromString(const char *str) { +void Resource<int>::setFromString(const char *str) { if (str == 0) return; sscanf(str, "%d", &(*(*this))); } template <> -std::string FbTk::Resource<int>::getString() { +std::string Resource<int>::getString() { char buff[16]; sprintf(buff, "%d", (*(*this))); return std::string(buff); } -namespace FbPager { template <> -void FbTk::Resource<FbPager::Alignment>::setFromString(const char *str) { +void Resource<FbPager::FbPager::Alignment>::setFromString(const char *str) { if (strcmp("TopToBottom", str) == 0) *(*this) = FbPager::FbPager::TOP_TO_BOTTOM; else @@ -58,7 +59,7 @@ } template <> -std::string FbTk::Resource<FbPager::Alignment>::getString() { +std::string Resource<FbPager::FbPager::Alignment>::getString() { switch (*(*this)) { case FbPager::FbPager::LEFT_TO_RIGHT: return "LeftToRight"; @@ -67,6 +68,6 @@ } } -} // end namespace FbPager +} // end namespace FbTk #endif // RESOURCES --- patch-Resources.hh ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070520215348.EC85B11420>