Building 12.3 from source on Mac

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Building 12.3 from source on Mac

Paul Förster
Hi,

I'm not sure this is the right list, but I have a problem concerning building PostgreSQL 12.3 from source on a Mac.

I do:

./configure \
    --prefix=${pgTargetDir} \
    --enable-nls \
    --with-perl \
    --with-python \
    --with-libxml \
    --with-tclconfig=/usr/lib64 \
    PG_SYSROOT=$(xcodebuild -version -sdk macosx Path)

and I get:

...
checking for __cpuid... no
checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=... no
checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=-msse4.2... yes
checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=... no
checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc... no
checking which CRC-32C implementation to use... SSE 4.2 with runtime check
checking which semaphore API to use... System V
checking for /dev/urandom... yes
checking which random number source to use... /dev/urandom
checking for library containing bind_textdomain_codeset... no
configure: error: a gettext implementation is required for NLS

If I leave out --enable-nls then building works fine and I get everything without error. But why is there a problem with gettext?

My Mac:

MacBook Pro (Retina, 15-inch, Late 2013)
macOS Catalina 10.15.6 (all updates installed)
Xcode 11.6 (11E708) w/ command line tools installed
No brew, no MacPorts, or other stuff like this is installed.

Does anyone have an idea? Thanks in advance.

Cheers,
Paul

Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Daniel Gustafsson
> On 23 Jul 2020, at 12:01, Paul Förster <[hidden email]> wrote:

> If I leave out --enable-nls then building works fine and I get everything without error. But why is there a problem with gettext?

gettext is not shipped by default with macOS, you will have to install it
separately via your favourite package manager or by building from source.  To
verify you can always search your system for the required header file:

    mdfind -name libintl.h

See https://www.postgresql.org/docs/current/install-requirements.html for more
information on build-time requirements.

cheers ./daniel

Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Paul Förster
Hi Daniel,

> On 23. Jul, 2020, at 12:37, Daniel Gustafsson <[hidden email]> wrote:
> gettext is not shipped by default with macOS, you will have to install it
> separately via your favourite package manager or by building from source.  To
> verify you can always search your system for the required header file:
>
>    mdfind -name libintl.h
>
> See https://www.postgresql.org/docs/current/install-requirements.html for more
> information on build-time requirements.

thanks for the answer and the pointer.

But I am still wondering: mdfind spits out libintl.h without me installing the gettext library:

paul@meerkat:~$ mdfind -name libintl.h
/usr/local/include/libintl.h

Why is that? Did I miss something?

Cheers,
Paul

Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Tom Lane-2
=?utf-8?Q?Paul_F=C3=B6rster?= <[hidden email]> writes:
>> On 23. Jul, 2020, at 12:37, Daniel Gustafsson <[hidden email]> wrote:
>> gettext is not shipped by default with macOS, you will have to install it
>> separately via your favourite package manager or by building from source.

> But I am still wondering: mdfind spits out libintl.h without me installing the gettext library:
> paul@meerkat:~$ mdfind -name libintl.h
> /usr/local/include/libintl.h

Kind of looks like you *did* install gettext as Daniel suggested
(macOS proper would never put anything under /usr/local).  Maybe
you did not ask for that specifically, but installed some package
that requires it?

However, Apple's toolchain doesn't search /usr/local by default,
I believe.  You'll need to add something along the line of

    --with-includes=/usr/local/include --with-libs=/usr/local/lib

to your configure command.

                        regards, tom lane


Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Paul Förster
Hi Tom,

> On 23. Jul, 2020, at 15:42, Tom Lane <[hidden email]> wrote:
>
> Kind of looks like you *did* install gettext as Daniel suggested
> (macOS proper would never put anything under /usr/local).  Maybe
> you did not ask for that specifically, but installed some package
> that requires it?
>
> However, Apple's toolchain doesn't search /usr/local by default,
> I believe.  You'll need to add something along the line of
>
>    --with-includes=/usr/local/include --with-libs=/usr/local/lib
>
> to your configure command.

I tried with your options. Still, same effect. Ok, worth a try.

I found:

paul@meerkat:~$ mdfind -name gettext | egrep -vi "/(share|man|bin|system)/"  
/usr/local/info/gettext.info
/usr/local/lib/gettext
/Library/i-Installer/Receipts/gettext.ii2receipt
/usr/local/include/gettext-po.h

paul@meerkat:~$ mdfind -name libintl | egrep -vi "/(share|man|bin|system)/"
/usr/local/lib/libintl.3.4.3.dylib
/usr/local/lib/libintl.a
/usr/local/lib/libintl.la
/usr/local/include/libintl.h

But I did not *knowingly* install that. I guess it comes as part of Xcode but I really don't know. I'm not a developer, I just want to build PostgreSQL for my Mac.

Cheers,
Paul

Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Tom Lane-2
=?utf-8?Q?Paul_F=C3=B6rster?= <[hidden email]> writes:
>> On 23. Jul, 2020, at 15:42, Tom Lane <[hidden email]> wrote:
>> However, Apple's toolchain doesn't search /usr/local by default,
>> I believe.  You'll need to add something along the line of
>> --with-includes=/usr/local/include --with-libs=/usr/local/lib
>> to your configure command.

> I tried with your options. Still, same effect. Ok, worth a try.

I might be wrong about that.  But this shows another issue:

> paul@meerkat:~$ mdfind -name libintl | egrep -vi "/(share|man|bin|system)/"
> /usr/local/lib/libintl.3.4.3.dylib
> /usr/local/lib/libintl.a
> /usr/local/lib/libintl.la
> /usr/local/include/libintl.h

Looks like what you lack is a symlink libintl.dylib -> libintl.3.4.3.dylib
in /usr/local/lib.  It's not real clear to me why you'd have .a and .la
files and no versionless symlink, because all of those files would
just be used for linking dependent software.

> But I did not *knowingly* install that. I guess it comes as part of Xcode but I really don't know. I'm not a developer, I just want to build PostgreSQL for my Mac.

These files absolutely, positively, gold-plated 100% did not come
with XCode.  Homebrew installs stuff under /usr/local though.
Not sure about MacPorts.

                        regards, tom lane


Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Paul Förster
Hi Tom,

> On 23. Jul, 2020, at 16:03, Tom Lane <[hidden email]> wrote:
>
> Looks like what you lack is a symlink libintl.dylib -> libintl.3.4.3.dylib
> in /usr/local/lib.  It's not real clear to me why you'd have .a and .la
> files and no versionless symlink, because all of those files would
> just be used for linking dependent software.

there is not a single symlink in /usr/local/lib:

paul@meerkat:~$ ll /usr/local/lib    
total 113968
drwxr-xr-x  4 root  wheel      128 Oct 17  2014 ImageMagick-6.3.3
-rw-r--r--+ 1 root  wheel      606 May 14  2010 charset.alias
drwxr-xr-x  6 root  wheel      192 Oct 17  2014 gettext
-rwxr-xr-x+ 1 root  wheel  4244568 Mar  6  2007 libMagick++.10.0.7.dylib
-rw-r--r--+ 1 root  wheel  4722468 Mar  6  2007 libMagick++.a
-rwxr-xr-x+ 1 root  wheel      980 Mar  6  2007 libMagick++.la
-rwxr-xr-x+ 1 root  wheel  8414800 Mar  6  2007 libMagick.10.0.7.dylib
-rw-r--r--+ 1 root  wheel  8129604 Mar  6  2007 libMagick.a
-rwxr-xr-x+ 1 root  wheel      912 Mar  6  2007 libMagick.la
-rwxr-xr-x+ 1 root  wheel  2416164 Mar  6  2007 libWand.10.0.7.dylib
-rw-r--r--+ 1 root  wheel  3354004 Mar  6  2007 libWand.a
-rwxr-xr-x+ 1 root  wheel      926 Mar  6  2007 libWand.la
-rwxr-xr-x+ 1 root  wheel   737672 Sep 23  2006 libasprintf.0.0.0.dylib
-rw-r--r--+ 1 root  wheel    47704 Sep 23  2006 libasprintf.a
-rwxr-xr-x+ 1 root  wheel      832 Sep 23  2006 libasprintf.la
-rwxr-xr-x+ 1 root  wheel  4024172 Mar  6  2007 libfreetype.6.3.12.dylib
-rw-r--r--+ 1 root  wheel  4240572 Mar  6  2007 libfreetype.a
-rwxr-xr-x+ 1 root  wheel      838 Mar  6  2007 libfreetype.la
-rwxr-xr-x+ 1 root  wheel  3429720 Mar 13  2007 libgdraw.1.0.14.dylib
-rwxr-xr-x+ 1 root  wheel      891 Mar 13  2007 libgdraw.la
-rwxr-xr-x+ 1 root  wheel   485908 Sep 23  2006 libgettextlib-0.14.5.dylib
-rwxr-xr-x+ 1 root  wheel      908 Sep 23  2006 libgettextlib.la
-rwxr-xr-x+ 1 root  wheel    79480 Sep 23  2006 libgettextpo.0.1.0.dylib
-rw-r--r--+ 1 root  wheel    62136 Sep 23  2006 libgettextpo.a
-rwxr-xr-x+ 1 root  wheel      954 Sep 23  2006 libgettextpo.la
-rwxr-xr-x+ 1 root  wheel  1097632 Sep 23  2006 libgettextsrc-0.14.5.dylib
-rwxr-xr-x+ 1 root  wheel      940 Sep 23  2006 libgettextsrc.la
-rwxr-xr-x+ 1 root  wheel  5713584 Mar 13  2007 libgunicode.2.0.3.dylib
-rwxr-xr-x+ 1 root  wheel      877 Mar 13  2007 libgunicode.la
-rw-r--r--+ 1 root  wheel   253512 Sep 23  2006 libintl.3.4.3.dylib
-rw-r--r--+ 1 root  wheel   286284 Sep 23  2006 libintl.a
-rw-r--r--+ 1 root  wheel      829 Sep 23  2006 libintl.la
-rwxr-xr-x+ 1 root  wheel  2121700 Mar 13  2007 libuninameslist-fr.0.0.1.dylib
-rwxr-xr-x+ 1 root  wheel      774 Mar 13  2007 libuninameslist-fr.la
-rwxr-xr-x+ 1 root  wheel  2148388 Mar 13  2007 libuninameslist.0.0.1.dylib
-rwxr-xr-x+ 1 root  wheel      756 Mar 13  2007 libuninameslist.la
-rw-r--r--+ 1 root  wheel  1670612 Sep 28  2006 libwmf.a
-rwxr-xr-x+ 1 root  wheel      913 Sep 28  2006 libwmf.la
-rw-r--r--+ 1 root  wheel   571300 Sep 28  2006 libwmflite.a
-rwxr-xr-x+ 1 root  wheel      751 Sep 28  2006 libwmflite.la
drwxr-xr-x  7 root  wheel      224 Oct 17  2014 pkgconfig

> These files absolutely, positively, gold-plated 100% did not come
> with XCode.  Homebrew installs stuff under /usr/local though.
> Not sure about MacPorts.

but I didn't install Homebrew, MacPorts, Fink or other package managers.

Are they leftovers from old OS versions? After all, I started with don't know what macOS (Mavericks or Yosemite?) back then and always upgraded the OS, one major release after the other and it has always been working fine with no problem at all. And now, as I mentioned before, it's Catalina and still works with not a single reinstall.

paul@meerkat:~$ uname -a
Darwin meerkat.local 19.6.0 Darwin Kernel Version 19.6.0: Sun Jul  5 00:43:10 PDT 2020; root:xnu-6153.141.1~9/RELEASE_X86_64 x86_64

Cheers,
Paul



Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Tom Lane-2
=?utf-8?Q?Paul_F=C3=B6rster?= <[hidden email]> writes:
> there is not a single symlink in /usr/local/lib:

Not only that, but look at the file dates:

> -rw-r--r--+ 1 root  wheel   253512 Sep 23  2006 libintl.3.4.3.dylib
> -rw-r--r--+ 1 root  wheel   286284 Sep 23  2006 libintl.a
> -rw-r--r--+ 1 root  wheel      829 Sep 23  2006 libintl.la

You should see what "file" reports these as, but there's a good
bet that these are 32-bit code and won't even run on Catalina.

>> These files absolutely, positively, gold-plated 100% did not come
>> with XCode.  Homebrew installs stuff under /usr/local though.
>> Not sure about MacPorts.

> but I didn't install Homebrew, MacPorts, Fink or other package managers.

You apparently installed *something*, or several somethings, back
in ought-six or so.  Do you really remember what you were doing
back then?

Anyway, now that we realize these are ancient history, you likely
need to install a more modern version anyway.

                        regards, tom lane


Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Paul Förster
Hi Tom,

> On 23. Jul, 2020, at 16:50, Tom Lane <[hidden email]> wrote:
>
> You should see what "file" reports these as, but there's a good
> bet that these are 32-bit code and won't even run on Catalina.

yes, they seem pretty old:

paul@meerkat:/usr/local/lib$ file libintl.*          
libintl.3.4.3.dylib: Mach-O universal binary with 2 architectures: [i386:Mach-O dynamically linked shared library i386] [ppc:Mach-O dynamically linked shared library ppc]
libintl.3.4.3.dylib (for architecture i386): Mach-O dynamically linked shared library i386
libintl.3.4.3.dylib (for architecture ppc): Mach-O dynamically linked shared library ppc
libintl.a:           Mach-O universal binary with 2 architectures: [i386:current ar archive random library] [ppc:current ar archive random library]
libintl.a (for architecture i386): current ar archive random library
libintl.a (for architecture ppc): current ar archive random library
libintl.la:          libtool library file, ASCII text

> You apparently installed *something*, or several somethings, back
> in ought-six or so.  Do you really remember what you were doing
> back then?

I used to have an old iMac. And when I got this laptop, I did a time machine backup then and restored it to this laptop to not have to install all my software from scratch. Maybe it's old stuff from Java installations. I also have XQuartz running since ages now which has been updated from version to version, currently 2.7.11. I don't know which it could be that could be that old.

Seems like a lot of old stuff:

paul@meerkat:/usr/local/lib$ file * | egrep "(i386|ppc)" | awk '{ print $1 }' | tr -d ':' | sort -u
libMagick++.10.0.7.dylib
libMagick++.a
libMagick.10.0.7.dylib
libMagick.a
libWand.10.0.7.dylib
libWand.a
libasprintf.0.0.0.dylib
libasprintf.a
libfreetype.6.3.12.dylib
libfreetype.a
libgdraw.1.0.14.dylib
libgettextlib-0.14.5.dylib
libgettextpo.0.1.0.dylib
libgettextpo.a
libgettextsrc-0.14.5.dylib
libgunicode.2.0.3.dylib
libintl.3.4.3.dylib
libintl.a
libuninameslist-fr.0.0.1.dylib
libuninameslist.0.0.1.dylib
libwmf.a
libwmflite.a

> Anyway, now that we realize these are ancient history, you likely
> need to install a more modern version anyway.

will try, thanks. :-)

Cheers,
Paul



Reply | Threaded
Open this post in threaded view
|

Re: Building 12.3 from source on Mac

Pavel Borisov
I'd like to add that MacPorts installs everything to /opt/ and /opt/local unless someone configures other path.
You can also easily check is something from homebrew installation by running 'brew config' and looking at HOMEBREW_PREFIX entry.

Regards,
Pavel 

чт, 23 июл. 2020 г. в 19:05, Paul Förster <[hidden email]>:
Hi Tom,

> On 23. Jul, 2020, at 16:50, Tom Lane <[hidden email]> wrote:
>
> You should see what "file" reports these as, but there's a good
> bet that these are 32-bit code and won't even run on Catalina.

yes, they seem pretty old:

paul@meerkat:/usr/local/lib$ file libintl.*         
libintl.3.4.3.dylib: Mach-O universal binary with 2 architectures: [i386:Mach-O dynamically linked shared library i386] [ppc:Mach-O dynamically linked shared library ppc]
libintl.3.4.3.dylib (for architecture i386):    Mach-O dynamically linked shared library i386
libintl.3.4.3.dylib (for architecture ppc):     Mach-O dynamically linked shared library ppc
libintl.a:           Mach-O universal binary with 2 architectures: [i386:current ar archive random library] [ppc:current ar archive random library]
libintl.a (for architecture i386):      current ar archive random library
libintl.a (for architecture ppc):       current ar archive random library
libintl.la:          libtool library file, ASCII text

> You apparently installed *something*, or several somethings, back
> in ought-six or so.  Do you really remember what you were doing
> back then?

I used to have an old iMac. And when I got this laptop, I did a time machine backup then and restored it to this laptop to not have to install all my software from scratch. Maybe it's old stuff from Java installations. I also have XQuartz running since ages now which has been updated from version to version, currently 2.7.11. I don't know which it could be that could be that old.

Seems like a lot of old stuff:

paul@meerkat:/usr/local/lib$ file * | egrep "(i386|ppc)" | awk '{ print $1 }' | tr -d ':' | sort -u
libMagick++.10.0.7.dylib
libMagick++.a
libMagick.10.0.7.dylib
libMagick.a
libWand.10.0.7.dylib
libWand.a
libasprintf.0.0.0.dylib
libasprintf.a
libfreetype.6.3.12.dylib
libfreetype.a
libgdraw.1.0.14.dylib
libgettextlib-0.14.5.dylib
libgettextpo.0.1.0.dylib
libgettextpo.a
libgettextsrc-0.14.5.dylib
libgunicode.2.0.3.dylib
libintl.3.4.3.dylib
libintl.a
libuninameslist-fr.0.0.1.dylib
libuninameslist.0.0.1.dylib
libwmf.a
libwmflite.a

> Anyway, now that we realize these are ancient history, you likely
> need to install a more modern version anyway.

will try, thanks. :-)

Cheers,
Paul