[Bug 275969] converters/iconv: Unable to build without including /usr/local/include/iconv.h

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 27 Dec 2023 17:06:52 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275969

            Bug ID: 275969
           Summary: converters/iconv: Unable to build without including
                    /usr/local/include/iconv.h
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: bofh@freebsd.org
          Reporter: rodarima@gmail.com
             Flags: maintainer-feedback?(bofh@freebsd.org)
          Assignee: bofh@freebsd.org

Hi,

I'm trying to add FreeBSD as another OS in the continuous integration of the
Dillo browser that depends on iconv, FLTK and other libraries in ports.

While the configure script runs, the libc is interrogated first in case it
already provides a working iconv library, which it does, so it is configured as
the iconv provider.

The problem I'm having is that FLTK from ports requires -I/usr/local/include,
as that is the place where the headers are included in FreeBSD.

However, that causes the iconv.h file to also be picked from
/usr/local/include, which is not compatible with the one in /usr/include,
provided by the libc.

This problem causes a linkage error, as /usr/local/include/iconv.h prefixes the
iconv_* functions as libiconv_*.

I tried to work around this issue, without having to switch to libiconv from
ports, but I'm afraid there is no combination of -I flags that can override the
search order. Adding -I/usr/include doesn't work, as it is already in the
system search paths, I have more details here:

https://github.com/dillo-browser/dillo/issues/41

I saw the same problem with other ports and the workaround seems to always end
up adding libiconv as a dependency. I would like to find another solution
before doing so, so I can keep the dependency with the libc only (even if
libiconv is installed).

I suspect one way would be to install libconv into
/usr/local/include/iconv/..., so other packages have to include it manually by
using the proper -I. Another solution that I saw in Arch Linux is to place the
headers into libiconv.h instead of iconv.h:

https://gitlab.archlinux.org/archlinux/packaging/packages/libiconv/-/blob/9776068fe291e0653f5267aebdf31d5976a12593/PKGBUILD#L42

Do you have any other solution?

Best,
Rodrigo.

-- 
You are receiving this mail because:
You are the assignee for the bug.