Re: [PATCH 1/1] Fix detection of pwritev support for OSX.

From: Sergey Shinderuk <s(dot)shinderuk(at)postgrespro(dot)ru>
To: James Hilliard <james(dot)hilliard1(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
Subject: Re: [PATCH 1/1] Fix detection of pwritev support for OSX.
Date: 2021-01-21 23:32:46
Message-ID: 6d43a157-e51a-6449-0b47-94d133829afc@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 22.01.2021 01:17, James Hilliard wrote:
> On Thu, Jan 21, 2021 at 11:38 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>>
>> James Hilliard <james(dot)hilliard1(at)gmail(dot)com> writes:
>>> On Wed, Jan 20, 2021 at 4:07 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>>>> I'm not sure that the case of not having the "command line tools"
>>>> installed is interesting for our purposes. AFAIK you have to have
>>>> that in order to have access to required tools like bison and gmake.
>>>> (That reminds me, I was intending to add something to our docs
>>>> about how-to-build-from-source to say that you need to install those.)
>>
>>> Yeah, not 100% sure but I was able to build just fine after deleting my
>>> command line tools.
>>
>> Hm. I've never been totally clear on what's included in the "command line
>> tools", although it's now apparent that one thing that gets installed is
>> an SDK matching the host OS version. However, Apple's description at [1]
>> says
>>
>> Command Line Tools
>>
>> Download the macOS SDK, headers, and build tools such as the Apple
>> LLVM compiler and Make. These tools make it easy to install open
>> source software or develop on UNIX within Terminal. macOS can
>> automatically download these tools the first time you try to build
>> software, and they are available on the downloads page.
>>
>> which certainly strongly implies that gmake is not there otherwise.
>> At this point I lack any "bare" macOS system to check it on. I wonder
>> whether you have a copy of make available from MacPorts or Homebrew.
>> Or maybe uninstalling the command line tools doesn't really remove
>> everything?
> Yeah, not entirely sure there but I do use homebrew.

FWIW, I tested with a clean install of Catalina. Before I install
anything at all, I already have xcode-select, xcrun and all the shims in
/usr/bin for developer tools, including cc, make, git, xcodebuild...
Just about everything listed in the FILES section of "man xcode-select".

When I run any tool (except xcode-select), a GUI dialog pops up offering
to install the Command Line Tools. So apparently those shims are not
functional yet. I rejected the installation.

Instead I downloaded Xcode12.1.xip via [1], the latest version with
macosx10.15 SDK. I unpacked it and installed by dragging Xcode.app to
/Applications. It seems to me there is no magic behind the scenes, just
moving the directory. I selectively checked that the shims in /usr/bin
didn't change after that.

Now, running "cc" tells me that I have to accept the Xcode license
agreement. After accepting it, all the shims in /usr/bin start to work,
forwarding to the real tools inside Xcode.app.

If I run the Homebrew installer, it says that it's going to install the
Command Line Tools. I don't know why it needs them, all the tools are
there already. I thought that CLT is a lighter-weight option when you
don't want the full Xcode installation, but Homebrew requires them anyway.

I rejected to install CLT and abandoned Homebrew. Then I just cloned and
built Postgres successfully. So it looks like Xcode is really enough, at
least on a recent macOS version.

[1] https://xcodereleases.com

--
Sergey Shinderuk
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2021-01-21 23:39:30 Re: PATCH: Batch/pipelining support for libpq
Previous Message Andres Freund 2021-01-21 22:51:23 Re: Avoiding smgrimmedsync() during nbtree index builds