Bug 182162

Summary: x11-wm/fluxbox fails to compile with libc++
Product: Ports & Packages Reporter: Dan McGregor <dan.mcgregor>
Component: Individual Port(s)Assignee: Steve Wills <swills>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description Dan McGregor 2013-09-16 18:20:00 UTC
x11-wm/fluxbox fails to compile with libc++ in 10-CURRENT. The error message from the build is:

c++ -DHAVE_CONFIG_H -I. -I..   -I/usr/local/include  -O2 -pipe -march=bdver1 -fno-strict-aliasing  -I/usr/local/include  -D_THREAD_SAFE -I/usr/local/include/freetype2 -I/usr/local/include   -MT fluxbox.o -MD -MP -MF .deps/fluxbox.Tpo -c -o fluxbox.o fluxbox.cc
In file included from fluxbox.cc:25:
In file included from ./fluxbox.hh:29:
In file included from ./FbTk/Resource.hh:30:
In file included from /usr/include/c++/v1/iostream:38:
In file included from /usr/include/c++/v1/ios:216:
In file included from /usr/include/c++/v1/__locale:18:
In file included from /usr/include/c++/v1/mutex:177:
/usr/include/c++/v1/functional:684:13: error: no matching constructor for initialization of 'binder2nd<std::__1::equal_to<WinClient *> >'
    {return binder2nd<__Operation>(__op, __x);}
            ^                      ~~~~~~~~~
fluxbox.cc:1362:25: note: in instantiation of function template specialization 'std::__1::bind2nd<std::__1::equal_to<WinClient *>, const WinClient *>' requested here
                Compose(bind2nd(equal_to<WinClient *>(), client),
                        ^
/usr/include/c++/v1/functional:670:5: note: candidate constructor not viable: 2nd argument ('const WinClient *const') would lose const qualifier
    binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y)
    ^
/usr/include/c++/v1/functional:661:24: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
class _LIBCPP_TYPE_VIS binder2nd
                       ^
1 error generated.

Fix: Change the function Fluxbox::validateClient to take a WinClient * instead of a const WinClient *.  Patch attached.

Patch attached with submission follows:
How-To-Repeat: Simply try to compile x11-wm on 10-CURRENT.
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-09-17 02:28:25 UTC
Responsible Changed
From-To: freebsd-ports-bugs->beat

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Steve Wills freebsd_committer freebsd_triage 2013-09-21 09:35:56 UTC
Responsible Changed
From-To: beat->swills

I'll take it.
Comment 3 dfilter service freebsd_committer freebsd_triage 2013-09-21 09:39:16 UTC
Author: swills
Date: Sat Sep 21 08:39:08 2013
New Revision: 327797
URL: http://svnweb.freebsd.org/changeset/ports/327797

Log:
  - Fix build on 10.0-ALPHA [1]
  - Rename files with :: while here
  
  PR:		ports/182162 [1]
  Submitted by:	Dan McGregor <dan.mcgregor@usask.ca> [1]
  Approved by:	maintainer (beat, via IRC)

Added:
  head/x11-wm/fluxbox/files/patch-src__fluxbox.cc   (contents, props changed)
  head/x11-wm/fluxbox/files/patch-src__fluxbox.hh   (contents, props changed)
     - copied unchanged from r327696, head/x11-wm/fluxbox/files/patch-util::fluxbox-generate_menu.in
Directory Properties:
  head/x11-wm/fluxbox/files/patch-util__fluxbox-generate_menu.in   (props changed)
Deleted:
  head/x11-wm/fluxbox/files/patch-util::fluxbox-generate_menu.in

Added: head/x11-wm/fluxbox/files/patch-src__fluxbox.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11-wm/fluxbox/files/patch-src__fluxbox.cc	Sat Sep 21 08:39:08 2013	(r327797)
@@ -0,0 +1,11 @@
+--- ./src/fluxbox.cc.orig	2013-02-13 10:04:05.899812000 +0000
++++ ./src/fluxbox.cc	2013-09-20 15:41:23.584087389 +0000
+@@ -1355,7 +1355,7 @@
+         FocusControl::setFocusedWindow(0);
+ }
+ 
+-bool Fluxbox::validateClient(const WinClient *client) const {
++bool Fluxbox::validateClient(WinClient *client) const {
+     WinClientMap::const_iterator it =
+         find_if(m_window_search.begin(),
+                 m_window_search.end(),

Added: head/x11-wm/fluxbox/files/patch-src__fluxbox.hh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11-wm/fluxbox/files/patch-src__fluxbox.hh	Sat Sep 21 08:39:08 2013	(r327797)
@@ -0,0 +1,11 @@
+--- ./src/fluxbox.hh.orig	2013-02-13 10:04:05.899812000 +0000
++++ ./src/fluxbox.hh	2013-09-20 15:41:23.585087645 +0000
+@@ -88,7 +88,7 @@
+     /// main event loop
+     void eventLoop();
+     bool validateWindow(Window win) const;
+-    bool validateClient(const WinClient *client) const;
++    bool validateClient(WinClient *client) const;
+ 
+     void grab();
+     void ungrab();

Copied: head/x11-wm/fluxbox/files/patch-util__fluxbox-generate_menu.in (from r327696, head/x11-wm/fluxbox/files/patch-util::fluxbox-generate_menu.in)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11-wm/fluxbox/files/patch-util__fluxbox-generate_menu.in	Sat Sep 21 08:39:08 2013	(r327797, copy of r327696, head/x11-wm/fluxbox/files/patch-util::fluxbox-generate_menu.in)
@@ -0,0 +1,219 @@
+--- util/fluxbox-generate_menu.in.orig	2012-12-10 18:26:53.000000000 +0100
++++ util/fluxbox-generate_menu.in	2013-01-02 14:22:14.000000000 +0100
+@@ -68,7 +68,7 @@
+     -d  Other path(s) to recursively search for *.desktop files
+     -ds Wider search for *.desktop files (takes more time)
+     -i  Other path(s) to search for icons
+-        e.g., "/usr/kde/3.3/share/icons/crystalsvg/16x16/*"
++        e.g., "%%LOCALBASE%%/share/icons/crystalsvg/16x16/*"
+     -is Wider search for icons (worth the extra time)
+     -in Skip icon search
+ 
+@@ -85,7 +85,7 @@
+   Only for packagers:
+ 
+     -p  Prefix; default is @PREFIX@
+-    -n  Gnome-prefix; /opt, /usr, /usr/X11R6 and /usr/local autodetected
++    -n  Gnome-prefix; %%LOCALBASE%% autodetected
+     -q  KDE-prefix; idem dito
+ 
+ 
+@@ -145,13 +145,42 @@
+     esac
+ }
+ 
+-find_it() {
+-    [ -n "$1" ] && hash $1 2> /dev/null && shift && "$@"
+-}
++# some which's have a reliable return code, some don't
++# Lets figure out which which we have.
++if which this_program_does_not_exist-no_really-aA1zZ9 2> /dev/null 1> /dev/null; then
++    # can't rely on return value
++    find_it() {
++        file=`which $1 2> /dev/null`
++        if [ -x "$file" ]; then
++            if [ $# -gt 1 ]; then
++                shift
++                "$@"
++            fi
++            return 0
++        else
++            return 1
++        fi
++    }
+ 
+-find_it_options() {
+-    [ -n "$1" ] && hash $1 2> /dev/null
+-}
++    find_it_options() {
++        file=`which $1 2> /dev/null`
++        if [ -x "$file" ]; then
++            return 0
++        else
++            return 1
++        fi
++    }
++
++else
++    # can rely on return value
++    find_it() {
++        which $1 > /dev/null 2>&1 && shift && "$@"
++    }
++
++    find_it_options() {
++        which $1 > /dev/null 2>&1
++    }
++fi
+ 
+ #echo "replaceWithinString: $1, $2, $3" >&2
+ #echo ${1//$2/$3} # causes error in BSD even though not used
+@@ -203,7 +232,7 @@
+     if [ -f "${entry_icon}" ]; then
+         : echo "File exists. To overwrite, type: convert \"$1\" \"$entry_icon\"" >&2
+     else
+-        if hash convert 2> /dev/null; then
++        if which convert &> /dev/null; then
+             convert "$1" "$entry_icon"
+             # echo convert "$1" , "$entry_icon" >> $ICONMAPPING
+         else
+@@ -275,7 +304,7 @@
+     # echo -n "for $temp_icon"
+     eval doSearchLoop $USER_ICONPATHS \
+       "$FB_ICONDIR" \
+-      "/usr/share/${execname%% *}" \
++      "%%LOCALBASE%%/share/${execname%% *}" \
+       ${OTHER_ICONPATHS} \
+ 
+ 
+@@ -558,7 +587,7 @@
+ 
+ 
+ WHOAMI=`whoami`
+-[ "$WHOAMI" = root ] && PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
++[ "$WHOAMI" = root ] && PATH=/bin:/usr/bin:%%LOCALBASE%%/bin
+ 
+ # Check for Imlib2-support
+ if @pkgprefix@fluxbox@pkgsuffix@@EXEEXT@ -info 2> /dev/null | grep -q "^IMLIB"; then
+@@ -1271,16 +1300,16 @@
+ # These are prefixes; So if fluxbox is installed in @PREFIX@/bin/fluxbox
+ # your prefix is: @PREFIX@
+ 
+-# fluxbox-generate already looks in /usr/X11R6, /usr, /usr/local and /opt so
++# fluxbox-generate already looks in %%LOCALBASE%% so
+ # there should be no need to specify them.
+ #
+ # PREFIX=@PREFIX@
+-# GNOME_PREFIX=/opt/gnome
+-# KDE_PREFIX=/opt/kde
++# GNOME_PREFIX=%%LOCALBASE%%
++# KDE_PREFIX=%%LOCALBASE%%
+ 
+ 
+ # Separate the list of background dirs with colons ':'
+-# BACKGROUND_DIRS="${USERFLUXDIR}/backgrounds/:@PREFIX@/share/fluxbox/backgrounds/:/usr/share/wallpapers"
++# BACKGROUND_DIRS="${USERFLUXDIR}/backgrounds/:@PREFIX@/share/fluxbox/backgrounds/:%%LOCALBASE%%/share/wallpapers"
+ 
+ 
+ # --- Boolean variables.
+@@ -1327,29 +1356,21 @@
+         -g) GNOMEMENU=yes; shift;;
+         -in) NO_ICON=yes; shift;;
+         -is) OTHER_ICONPATHS="
+-                /usr/share/icons
+-                /usr/share/icons/mini
+-                /usr/share/pixmaps
+-                /usr/local/share/icons
+-                /usr/local/share/icons/mini
+-                /usr/local/share/pixmaps
+-                /usr/share/xclass/icons
+-                /usr/share/xclass/pixmaps
+-                /usr/local/share/xclass/icons
+-                /usr/local/share/xclass/pixmaps
+-                /usr/X11R6/share/icons/default/16x16
+-                /usr/X11R6/share/icons/kde/16x16
+-                /usr/X11R6/share/icons/hicolor/16x16
+-                /usr/local/X11R6/share/icons/default/16x16
+-                /usr/local/X11R6/share/icons/kde/16x16
+-                /usr/local/X11R6/share/icons/hicolor/16x16
++                %%LOCALBASE%%/share/icons
++                %%LOCALBASE%%/share/icons/mini
++                %%LOCALBASE%%/share/pixmaps
++                %%LOCALBASE%%/share/xclass/icons
++                %%LOCALBASE%%/share/xclass/pixmaps
++                %%LOCALBASE%%/share/icons/default/16x16
++                %%LOCALBASE%%/share/icons/kde/16x16
++                %%LOCALBASE%%/share/icons/hicolor/16x16
+             "
+             shift;;
+         -ds) OTHER_DESKTOP_PATHS="
+-                /usr/share/mimelnk 
+-                /usr/share/applications
+-                /usr/share/xsessions 
+-                /usr/share/services 
++                %%LOCALBASE%%/share/mimelnk
++                %%LOCALBASE%%/share/applications
++                %%LOCALBASE%%/share/xsessions
++                %%LOCALBASE%%/share/services
+             "
+             # /usr/share/apps \
+             shift;;
+@@ -1420,13 +1441,12 @@
+ # prefix
+ PREFIX="${PREFIX:=@PREFIX@}"
+ if [  -z "${PREFIX}" -o ! -d "${PREFIX}" ]; then
+-    hash @pkgprefix@fluxbox@pkgsuffix@@EXEEXT@
+-    PREFIX=`hash | grep @pkgprefix@fluxbox@pkgsuffix@ | sed 's,.*\t/,/,' | sed 's,/bin/@pkgprefix@fluxbox@pkgsuffix@@EXEEXT@$,,'`
++    PREFIX=`which fluxbox | sed 's,/bin/fluxbox$,,'`
+ fi
+ 
+ 
+ # gnome prefix
+-for GNOME_PREFIX in "${GNOME_PREFIX}" /usr/local /usr/X11R6 /usr /opt "${PREFIX}"; do
++for GNOME_PREFIX in "${GNOME_PREFIX}" %%LOCALBASE%% "${PREFIX}"; do
+     if [ -n "${GNOME_PREFIX}" -a -d "$GNOME_PREFIX/share/gnome" ]; then
+         break;
+     fi
+@@ -1434,7 +1454,7 @@
+ # Will remain $PREFIX if all else fails
+ 
+ # kde prefix
+-for KDE_PREFIX in "${KDE_PREFIX}" /usr/local /usr/X11R6 /usr /opt "${PREFIX}"; do
++for KDE_PREFIX in "${KDE_PREFIX}" %%LOCALBASE%% "${PREFIX}"; do
+     if [ -n "${KDE_PREFIX}" -a -d "$KDE_PREFIX/share/applnk" ]; then
+         break;
+     fi
+@@ -1522,7 +1542,7 @@
+ else
+     [ -n "$MY_BROWSER" ] && echo "Warning: you chose an invalid browser." >&2
+     #The precise order is up for debate.
+-    for browser in firefox mozilla-firefox mozilla-firebird MozillaFirebird opera skipstone mozilla seamonkey galeon konqueror dillo netscape w3m amaya links lynx; do
++    for browser in chrome firefox mozilla-firefox mozilla-firebird MozillaFirebird linux-opera opera skipstone mozilla seamonkey galeon konqueror dillo netscape w3m amaya links lynx; do
+         if find_it_options $browser; then
+             DEFAULT_BROWSER=$browser
+             break
+@@ -1581,9 +1601,10 @@
+ 
+ case "$DEFAULT_BROWSERNAME" in
+     links|w3m|lynx)  append "[exec] (${DEFAULT_BROWSERNAME}) {${DEFAULT_TERM} -e ${DEFAULT_BROWSER} ${HOMEPAGE}}" ;;
+-    firefox|firebird|mozilla|seamonkey|phoenix|galeon|dillo|netscape|amaya) append "[exec] (${DEFAULT_BROWSERNAME}) {${DEFAULT_BROWSER}}" ;;
++    chrome|firefox|firebird|mozilla|seamonkey|phoenix|galeon|dillo|netscape|amaya) append "[exec] (${DEFAULT_BROWSERNAME}) {${DEFAULT_BROWSER}}" ;;
+     konqueror) append "[exec] (konqueror) {kfmclient openProfile webbrowsing}" ;;
+-    opera) append "[exec] (opera) {env QT_XFT=true opera}" ;;
++    linux-opera) append "[exec] (linux-opera) {linux-opera}" ;;
++    opera) append "[exec] (opera) {opera}" ;;
+     MozillaFirebird) append "[exec] (firebird) {MozillaFirebird}" ;;
+     MozillaFirefox) append "[exec] (firefox) {MozillaFirefox}" ;;
+     *) append "[exec] ($DEFAULT_BROWSERNAME) {$DEFAULT_BROWSER}" ;;
+@@ -1600,9 +1621,10 @@
+ 
+ append_submenu "${NETMENU}"
+     append_submenu "${BROWSERMENU}"
+-        normal_find firefox mozilla-firefox MozillaFirefox galeon mozilla seamonkey dillo netscape vncviewer
++        normal_find chrome firefox mozilla-firefox MozillaFirefox galeon mozilla seamonkey dillo netscape vncviewer
+         find_it links       append "[exec]   (links-graphic) {links -driver x ${HOMEPAGE}}"
+-        find_it opera       append "[exec]   (opera) {env QT_XFT=true opera}"
++        find_it linux-opera append "[exec]   (linux-opera) {linux-opera}"
++        find_it opera       append "[exec]   (opera) {opera}"
+         find_it konqueror   append "[exec]   (konqueror) {kfmclient openProfile webbrowsing}"
+         find_it links       append "[exec]   (links) {${DEFAULT_TERM} -e links ${HOMEPAGE}}"
+         find_it w3m         append "[exec]   (w3m) {${DEFAULT_TERM} -e w3m ${HOMEPAGE}}"
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 4 Steve Wills freebsd_committer freebsd_triage 2013-09-21 09:39:22 UTC
State Changed
From-To: open->closed

Committed. Thanks!