Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f5aUS-0004CD-PR for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Apr 2018 17:22:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f5aUR-0005Ld-Di for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Apr 2018 17:21:59 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f5aUR-0005LT-2Y for pgsql-hackers@lists.postgresql.org; Mon, 09 Apr 2018 17:21:59 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f5aUN-0005LE-NP for pgsql-hackers@postgresql.org; Mon, 09 Apr 2018 17:21:57 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.4/8.14.4) with ESMTP id w39HLnwp006630; Mon, 9 Apr 2018 13:21:49 -0400 From: Tom Lane To: Michael Paquier cc: Postgres hackers Subject: Re: pgsql: Merge catalog/pg_foo_fn.h headers back into pg_foo.h headers. In-reply-to: <20180409061354.GD1740@paquier.xyz> References: <20180409010031.GA11599@paquier.xyz> <16609.1523243109@sss.pgh.pa.us> <20180409061354.GD1740@paquier.xyz> Comments: In-reply-to Michael Paquier message dated "Mon, 09 Apr 2018 15:13:54 +0900" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <6628.1523294509.1@sss.pgh.pa.us> Date: Mon, 09 Apr 2018 13:21:49 -0400 Message-ID: <6629.1523294509@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Michael Paquier writes: > On Sun, Apr 08, 2018 at 11:05:09PM -0400, Tom Lane wrote: >> Hm. I'd tested "make -j all", but not going directly to "install". >> Does it help if you add >> $(SUBDIRS:%=install-%-recurse): | submake-generated-headers >> to src/Makefile? > That takes care of the problem from the root of the directory, but when > doing the same from src/bin/ then the same issue shows up even if > src/Makefile is patched to handle install targets. Hm. Not sure how far we want to go in that direction. It's never really been the case that you could configure a maintainer-clean tree and then go and build in any random subdirectory without taking care of the generated headers. In principle, we could do something like the hack Peter did with temp-install, where it's basically forced to be a prerequisite of "make check" in EVERY subdirectory and then we buy back some of the inefficiency by making it a no-op in child make runs. Not sure that's a good thing though. Independently of that, though, I noticed that part of the issue in your "make install" example is that relpath.c, along with some other frontend code, includes catalog/catalog.h which includes pg_class.h (and thereby now pg_class_d.h). Since src/common/Makefile thinks the only generated header it needs to worry about is errcodes.h, building src/common first now falls over. But allowing frontend code to include catalog.h is pretty insane: that pulls in relcache.h as well, and surely we don't want to tie our hands to the point that relcache.h has to be frontend clean. What we need to do is take OIDCHARS and TABLESPACE_VERSION_DIRECTORY out of catalog.h and put them in some more frontend-friendly header. My first thought was pg_tablespace_d.h, but my second one is relpath.h. Comments? regards, tom lane