Bug 161417 - [patch] Mk/bsd.port.mk: USE_ICONV, treat iconv() in libc
Summary: [patch] Mk/bsd.port.mk: USE_ICONV, treat iconv() in libc
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Port Management Team
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-09 10:30 UTC by Nali Toja
Modified: 2016-12-05 01:05 UTC (History)
0 users

See Also:


Attachments
base_iconv.diff (3.60 KB, patch)
2011-10-09 10:30 UTC, Nali Toja
no flags Details | Diff
base_iconv.0.diff (1.16 KB, patch)
2011-12-07 10:32 UTC, Jan Beich
no flags Details | Diff
base_iconv.1.diff (561 bytes, patch)
2011-12-23 19:57 UTC, Jan Beich
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Nali Toja 2011-10-09 10:30:01 UTC
Don't depend on converters/libiconv if base system is built WITH_ICONV.
And fix build with a few popular ports.

To reduce the number of false positives try

  $ ln -s /usr/lib/libc.so /usr/lib/libiconv.so
  $ ln -s /usr/lib/libc.a /usr/lib/libiconv.a

as some ports explicitly add -liconv to LDFLAGS.

How-To-Repeat: $ cd www/firefox; make install
$ ldd /usr/local/lib/firefox/libxul.so | fgrep iconv
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2011-10-09 10:30:18 UTC
Responsible Changed
From-To: freebsd-ports-bugs->portmgr

bsd.port.mk is portmgr territory (via the GNATS Auto Assign Tool)
Comment 2 Jan Beich freebsd_committer freebsd_triage 2011-12-07 10:32:45 UTC
lang/gcc* also fail to build because
- fake bool decls are broken when <iconv.h> pulls <stdbool.h>
- libstdc++ wants iconv as a symbol, not as a macro
Comment 3 Jan Beich freebsd_committer freebsd_triage 2011-12-23 19:57:29 UTC
Jan Beich <jbeich@tormail.net> writes:

> - libstdc++ wants iconv as a symbol, not as a macro

ditto for boost-libs 1.48.0
Comment 4 dfilter service freebsd_committer freebsd_triage 2013-09-04 17:54:22 UTC
Author: gerald
Date: Wed Sep  4 16:54:13 2013
New Revision: 326294
URL: http://svnweb.freebsd.org/changeset/ports/326294

Log:
  Update to the 20130831 snapshot of GCC 4.7.4.
  
  Work around a bug in libcpp that pulls in the optional system iconv
  if present instead of relying on the port we actually depend on. [1]
  
  The issue is that /usr/include/iconv.h has #include <stdbool.h> which
  in turn, since both are included very late in the game, conflicts with
  similar definintions by libcpp itself.
  
  Interestingly enough, lang/gcc46 and lang/gcc48 did not fail under the
  same test scenarios and libstdc++ does not seem to require adjustments,
  so PR 161417 may not be relevant in full.
  
  PR:		161417 [1]

Added:
  head/lang/gcc47/files/patch-libcpp   (contents, props changed)
Modified:
  head/lang/gcc47/Makefile
  head/lang/gcc47/distinfo

Modified: head/lang/gcc47/Makefile
==============================================================================
--- head/lang/gcc47/Makefile	Wed Sep  4 16:51:12 2013	(r326293)
+++ head/lang/gcc47/Makefile	Wed Sep  4 16:54:13 2013	(r326294)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	gcc
-PORTVERSION=	4.7.4.20130817
+PORTVERSION=	4.7.4.20130831
 CATEGORIES=	lang java
 MASTER_SITES=	${MASTER_SITE_GCC}
 MASTER_SITE_SUBDIR=	snapshots/${DISTVERSION}

Modified: head/lang/gcc47/distinfo
==============================================================================
--- head/lang/gcc47/distinfo	Wed Sep  4 16:51:12 2013	(r326293)
+++ head/lang/gcc47/distinfo	Wed Sep  4 16:54:13 2013	(r326294)
@@ -1,2 +1,2 @@
-SHA256 (gcc-4.7-20130817.tar.bz2) = 3752ec9a294ae2d619dc3a7e47e4ce3dfd754a6304a96b6822f8f9697ebd79ea
-SIZE (gcc-4.7-20130817.tar.bz2) = 78810078
+SHA256 (gcc-4.7-20130831.tar.bz2) = 6a0cc169b93bcdab26406104bf1d80ae9f6789f28938589de0e3d745c6ed41c0
+SIZE (gcc-4.7-20130831.tar.bz2) = 78797213

Added: head/lang/gcc47/files/patch-libcpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/gcc47/files/patch-libcpp	Wed Sep  4 16:54:13 2013	(r326294)
@@ -0,0 +1,10 @@
+--- libcpp/internal.h	2012-07-30 09:24:59.000000000 +0000
++++ libcpp/internal.h	2013-09-04 00:41:26.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include "cpp-id-data.h"
+ 
+ #if HAVE_ICONV
++#define __bool_true_false_are_defined
+ #include <iconv.h>
+ #else
+ #define HAVE_ICONV 0
_______________________________________________
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 5 dfilter service freebsd_committer freebsd_triage 2013-09-05 21:08:34 UTC
Author: gerald
Date: Thu Sep  5 20:08:27 2013
New Revision: 326441
URL: http://svnweb.freebsd.org/changeset/ports/326441

Log:
  Work around a bug in libcpp that pulls in the optional system iconv
  if present instead of relying on the port we actually depend on.
  
  The issue is that /usr/include/iconv.h has #include <stdbool.h> which
  in turn, since both are included very late in the game, conflicts with
  similar definintions by libcpp itself.
  
  Interestingly enough, lang/gcc46 and lang/gcc48 did not fail under the
  same test scenarios and libstdc++ does not seem to require adjustments,
  so PR 161417 may not be relevant in full.
  
  PR:		161417

Added:
  head/lang/gcc46/files/patch-libcpp   (contents, props changed)

Added: head/lang/gcc46/files/patch-libcpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/gcc46/files/patch-libcpp	Thu Sep  5 20:08:27 2013	(r326441)
@@ -0,0 +1,10 @@
+--- libcpp/internal.h	2012-07-30 09:24:59.000000000 +0000
++++ libcpp/internal.h	2013-09-04 00:41:26.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include "cpp-id-data.h"
+ 
+ #if HAVE_ICONV
++#define __bool_true_false_are_defined
+ #include <iconv.h>
+ #else
+ #define HAVE_ICONV 0
_______________________________________________
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 6 dfilter service freebsd_committer freebsd_triage 2013-09-05 23:26:49 UTC
Author: gerald
Date: Thu Sep  5 22:26:42 2013
New Revision: 326453
URL: http://svnweb.freebsd.org/changeset/ports/326453

Log:
  Work around a bug in libcpp that pulls in the optional system iconv
  if present instead of relying on the port we actually depend on.
  
  The issue is that /usr/include/iconv.h has #include <stdbool.h> which
  in turn, since both are included very late in the game, conflicts with
  similar definintions by libcpp itself.
  
  libstdc++ does not seem to require adjustments, so PR 161417 may not
  be relevant in full.
  
  PR:		161417

Added:
  head/lang/gcc/files/patch-libcpp   (contents, props changed)

Added: head/lang/gcc/files/patch-libcpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/gcc/files/patch-libcpp	Thu Sep  5 22:26:42 2013	(r326453)
@@ -0,0 +1,10 @@
+--- libcpp/internal.h	2012-07-30 09:24:59.000000000 +0000
++++ libcpp/internal.h	2013-09-04 00:41:26.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include "cpp-id-data.h"
+ 
+ #if HAVE_ICONV
++#define __bool_true_false_are_defined
+ #include <iconv.h>
+ #else
+ #define HAVE_ICONV 0
_______________________________________________
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 7 dfilter service freebsd_committer freebsd_triage 2013-09-06 19:13:23 UTC
Author: gerald
Date: Fri Sep  6 18:11:06 2013
New Revision: 326533
URL: http://svnweb.freebsd.org/changeset/ports/326533

Log:
  Work around a bug in libcpp that pulls in the optional system iconv
  if present (even if the libiconv port is present) and fails using that.
  
  The issue is that /usr/include/iconv.h has #include <stdbool.h> which
  in turn, since both are included very late in the game, conflicts with
  similar definintions by libcpp itself.
  
  libstdc++ does not seem to require adjustments, so PR 161417 may not
  be relevant in full.
  
  PR:		161417

Added:
  head/lang/gcc42/files/patch-libcpp   (contents, props changed)

Added: head/lang/gcc42/files/patch-libcpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/gcc42/files/patch-libcpp	Fri Sep  6 18:11:06 2013	(r326533)
@@ -0,0 +1,10 @@
+--- libcpp/internal.h	2012-07-30 09:24:59.000000000 +0000
++++ libcpp/internal.h	2013-09-04 00:41:26.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include "cpp-id-data.h"
+ 
+ #if HAVE_ICONV
++#define __bool_true_false_are_defined
+ #include <iconv.h>
+ #else
+ #define HAVE_ICONV 0
_______________________________________________
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 8 dfilter service freebsd_committer freebsd_triage 2013-09-06 20:25:31 UTC
Author: gerald
Date: Fri Sep  6 19:25:24 2013
New Revision: 326538
URL: http://svnweb.freebsd.org/changeset/ports/326538

Log:
  Work around a bug in libcpp that pulls in the optional system iconv
  if present (even if the libiconv port is present and requested) and
  fails using that.
  
  The issue is that /usr/include/iconv.h has #include <stdbool.h> which
  in turn, since both are included very late in the game, conflicts with
  similar definintions by libcpp itself.
  
  libstdc++ does not seem to require adjustments, so PR 161417 may not
  be relevant in full.
  
  PR:		161417

Added:
  head/lang/gcc44/files/patch-libcpp   (contents, props changed)

Added: head/lang/gcc44/files/patch-libcpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/gcc44/files/patch-libcpp	Fri Sep  6 19:25:24 2013	(r326538)
@@ -0,0 +1,10 @@
+--- libcpp/internal.h	2012-07-30 09:24:59.000000000 +0000
++++ libcpp/internal.h	2013-09-04 00:41:26.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include "cpp-id-data.h"
+ 
+ #if HAVE_ICONV
++#define __bool_true_false_are_defined
+ #include <iconv.h>
+ #else
+ #define HAVE_ICONV 0
_______________________________________________
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 9 Baptiste Daroussin freebsd_committer freebsd_triage 2013-12-28 23:45:10 UTC
State Changed
From-To: open->closed

Fixed now. Thanks!
Comment 10 commit-hook freebsd_committer freebsd_triage 2016-12-05 01:05:04 UTC
A commit references this bug:

Author: gerald
Date: Mon Dec  5 01:04:08 UTC 2016
New revision: 427827
URL: https://svnweb.freebsd.org/changeset/ports/427827

Log:
  Remove gcc/files/patch-libcpp which has not been present on lang/gcc49
  and lang/gcc48, but is something we have in lang/gcc47 and that lang/gcc
  carried over from the days it was about GCC 4.7 (so surviving both the
  transitions to GCC 4.8 and recently GCC 4.9).

  The underlying issue was addressed upstream 2014-10-24 with r216679,
  and in FreeBSD head 2013-09-06 by theraven@ who fixed fixed our
  iconv.h to not include stdbool.h.

  PR:		161417

Changes:
  head/lang/gcc/files/patch-libcpp