Thread: FreeBSD 11 compiling from source cannot find readline headers

FreeBSD 11 compiling from source cannot find readline headers

From
Keith Fiske
Date:
The current version of FreeBSD 11 cannot compile the PostgreSQL from source without adding the --with-includes flag to the configure option

configure: error: readline header not found
If you have libedit already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable libedit support.

Doing the following command, after ensuring that the readline package/port is installed, allows the configure to work

./configure --with-includes=/usr/local/include

I noticed this issue mostly because I remembered on FreeBSD 10, I did not even need to have the readline package explicitly installed and the configure would still work perfectly fine, even confirming it could find the readline headers. This was because previously, FreeBSD10 seemed to include the readline header by default:

freebsd10% sudo find / -type f -name readline.h
/usr/include/readline/readline.h
/usr/include/edit/readline/readline.h

Whereas, the package installs the header to /usr/local, which is the proper location for it if it's not included as part of the system libraries anymore. Seems this inconsistency was fixed in FreeBSD11?:

freebsd11%  sudo find / -type f -name readline.h
/usr/include/edit/readline/readline.h
/usr/local/include/readline/readline.h

So, I'm not sure if this is an issue with FreeBSD not having the userspace includes in some sort of default PATH, or if the PostgreSQL "configure" script now needs to look in the proper userspace location for the readline includes.

--
Keith Fiske
Senior Database Engineer
Crunchy Data - http://crunchydata.com

Re: FreeBSD 11 compiling from source cannot find readline headers

From
Tom Lane
Date:
Keith Fiske <keith.fiske@crunchydata.com> writes:
> The current version of FreeBSD 11 cannot compile the PostgreSQL from source
> without adding the --with-includes flag to the configure option

Yeah, and I believe you need a --with-libs switch too.  This is just a
FreeBSD idiosyncrasy --- everybody else thinks their compilers should
automatically search the platform's standard place for optional packages.

> I noticed this issue mostly because I remembered on FreeBSD 10, I did not
> even need to have the readline package explicitly installed and the
> configure would still work perfectly fine, even confirming it could find
> the readline headers.

Really?  AFAIK FreeBSD has always been like this.  I did find a wiki
page suggesting they're thinking about changing it:

https://wiki.freebsd.org/WarnerLosh/UsrLocal

            regards, tom lane


Re: FreeBSD 11 compiling from source cannot find readline headers

From
Keith Fiske
Date:


On Fri, Oct 19, 2018 at 8:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Keith Fiske <keith.fiske@crunchydata.com> writes:
> The current version of FreeBSD 11 cannot compile the PostgreSQL from source
> without adding the --with-includes flag to the configure option

Yeah, and I believe you need a --with-libs switch too.  This is just a
FreeBSD idiosyncrasy --- everybody else thinks their compilers should
automatically search the platform's standard place for optional packages.



--with-libs is not needed when compiling with just a default "make install-world" on FreeBSD10 nor 11

 
> I noticed this issue mostly because I remembered on FreeBSD 10, I did not
> even need to have the readline package explicitly installed and the
> configure would still work perfectly fine, even confirming it could find
> the readline headers.

Really?  AFAIK FreeBSD has always been like this.  I did find a wiki
page suggesting they're thinking about changing it:

https://wiki.freebsd.org/WarnerLosh/UsrLocal

                        regards, tom lane


Positive. I set up a brand new 10.4 VM as I was writing up this email to test this just to make sure I wasn't remembering things wrong. I believe it's the same back in 9 as well, but that's harder to set up a quick test now. Only thing required in 10.4 is to install gmake and everything "just works".

And now for 11+, it seems readline is the only additional include/library that is required to compile postgresql on a clean FreeBSD install that the --with-includes is needed just for that. Main reason being seems to be that they no longer have a readline header included by default in core.

--
Keith Fiske
Senior Database Engineer
Crunchy Data - http://crunchydata.com