Thread: missing requirement on ccache in postgresql16-devel
The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a reference
to ccache but the rpm doesn't list this as a dependency. I would like
to submit that it is a bug that it does not.
Sincerely,
Greg Hennessy
On Wed, Oct 25, 2023 at 11:25:15AM -0400, Greg Hennessy wrote: > The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a reference > to ccache but the rpm doesn't list this as a dependency. I would like > to submit that it is a bug that it does not. Uh, ccache is an _optional_ way to speed up compilation. It is not a requirement/dependency. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
Bruce Momjian <bruce@momjian.us> writes: > On Wed, Oct 25, 2023 at 11:25:15AM -0400, Greg Hennessy wrote: >> The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a reference >> to ccache but the rpm doesn't list this as a dependency. I would like >> to submit that it is a bug that it does not. > Uh, ccache is an _optional_ way to speed up compilation. It is not a > requirement/dependency. Yeah, but if the Makefile says "CC = ccache gcc" then anybody trying to build under PGXS will fail if they don't have ccache installed. So I think Greg has a point. On typical Red Hat setups, it's not necessary to mention ccache explicitly to use it; instead that's managed via PATH. For example, I have $ which gcc /usr/lib64/ccache/gcc $ ls -l /usr/lib64/ccache/gcc lrwxrwxrwx. 1 root root 16 May 21 09:35 /usr/lib64/ccache/gcc -> ../../bin/ccache so it Just Works. I'd suggest arranging the rpm builds to be done similarly, and then you get ccache usage in the rpm build, while the distributed Makefile will just say "CC = gcc" so it will work for users whether they use ccache or not. regards, tom lane
On Wed, Oct 25, 2023 at 01:21:44PM -0400, Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: > > On Wed, Oct 25, 2023 at 11:25:15AM -0400, Greg Hennessy wrote: > >> The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a reference > >> to ccache but the rpm doesn't list this as a dependency. I would like > >> to submit that it is a bug that it does not. > > > Uh, ccache is an _optional_ way to speed up compilation. It is not a > > requirement/dependency. > > Yeah, but if the Makefile says "CC = ccache gcc" then anybody > trying to build under PGXS will fail if they don't have ccache > installed. So I think Greg has a point. Well, the question is where can we see this file, /usr/pgsql-16/lib/pgxs/src/Makefile.global? Who created it? What does it contain? Mine is built from Makefile.global.in, and has: CC = ccache gcc but I define CC='ccache gcc' before I run autoconf. > On typical Red Hat setups, it's not necessary to mention ccache > explicitly to use it; instead that's managed via PATH. For > example, I have > > $ which gcc > /usr/lib64/ccache/gcc > > $ ls -l /usr/lib64/ccache/gcc > lrwxrwxrwx. 1 root root 16 May 21 09:35 /usr/lib64/ccache/gcc -> ../../bin/ccache Oh, I have not done that. I like to know when ccache is being used. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
Hi, On Wed, 2023-10-25 at 13:21 -0400, Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: > > On Wed, Oct 25, 2023 at 11:25:15AM -0400, Greg Hennessy wrote: > > > The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a > > > reference > > > to ccache but the rpm doesn't list this as a dependency. I would > > > like > > > to submit that it is a bug that it does not. > > > Uh, ccache is an _optional_ way to speed up compilation. It is not > > a requirement/dependency. > > Yeah, but if the Makefile says "CC = ccache gcc" then anybody > trying to build under PGXS will fail if they don't have ccache > installed. Makefile.global has this reference to ccache on RHEL 9 and Fedora: CLANG = /usr/lib64/ccache/clang which is caused by: %if 0%{?rhel} && 0%{?rhel} == 8 export CLANG=%{_bindir}/clang LLVM_CONFIG=%{_bindir}/llvm-config-64 %endif (so this issue does not exist on RHEL 8). Pushed a fix to PostgreSQL 17. I'll check the results tomorrow, and then will patch PostgreSQL 11+. Greg: Thanks for the report. The changes will appear in next month's minor release set (Nov 9). I'm not inclined to push an update set just for this issue. Regards, -- Devrim Gündüz Open Source Solution Architect, PostgreSQL Major Contributor Twitter: @DevrimGunduz , @DevrimGunduzTR
On Thu, Oct 26, 2023 at 10:42:10PM +0100, Devrim Gunduz wrote: > > Hi, > > On Wed, 2023-10-25 at 13:21 -0400, Tom Lane wrote: > > Bruce Momjian <bruce@momjian.us> writes: > > > On Wed, Oct 25, 2023 at 11:25:15AM -0400, Greg Hennessy wrote: > > > > The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a > > > > reference > > > > to ccache but the rpm doesn't list this as a dependency. I would > > > > like > > > > to submit that it is a bug that it does not. > > > > > Uh, ccache is an _optional_ way to speed up compilation. It is not > > > a requirement/dependency. > > > > Yeah, but if the Makefile says "CC = ccache gcc" then anybody > > trying to build under PGXS will fail if they don't have ccache > > installed. > > Makefile.global has this reference to ccache on RHEL 9 and Fedora: > > CLANG = /usr/lib64/ccache/clang > > which is caused by: > > %if 0%{?rhel} && 0%{?rhel} == 8 > export CLANG=%{_bindir}/clang LLVM_CONFIG=%{_bindir}/llvm-config-64 > %endif > > (so this issue does not exist on RHEL 8). > > Pushed a fix to PostgreSQL 17. I'll check the results tomorrow, and then > will patch PostgreSQL 11+. > > Greg: Thanks for the report. The changes will appear in next month's > minor release set (Nov 9). I'm not inclined to push an update set just > for this issue. Great, thanks. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
Thank you very much. I agree that waiting till the next minor release is fine.
Greg
On Thu, Oct 26, 2023 at 5:42 PM Devrim Gündüz <devrim@gunduz.org> wrote:
Hi,
On Wed, 2023-10-25 at 13:21 -0400, Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > On Wed, Oct 25, 2023 at 11:25:15AM -0400, Greg Hennessy wrote:
> > > The file /usr/pgsql-16/lib/pgxs/src/Makefile.global has a
> > > reference
> > > to ccache but the rpm doesn't list this as a dependency. I would
> > > like
> > > to submit that it is a bug that it does not.
>
> > Uh, ccache is an _optional_ way to speed up compilation. It is not
> > a requirement/dependency.
>
> Yeah, but if the Makefile says "CC = ccache gcc" then anybody
> trying to build under PGXS will fail if they don't have ccache
> installed.
Makefile.global has this reference to ccache on RHEL 9 and Fedora:
CLANG = /usr/lib64/ccache/clang
which is caused by:
%if 0%{?rhel} && 0%{?rhel} == 8
export CLANG=%{_bindir}/clang LLVM_CONFIG=%{_bindir}/llvm-config-64
%endif
(so this issue does not exist on RHEL 8).
Pushed a fix to PostgreSQL 17. I'll check the results tomorrow, and then
will patch PostgreSQL 11+.
Greg: Thanks for the report. The changes will appear in next month's
minor release set (Nov 9). I'm not inclined to push an update set just
for this issue.
Regards,
--
Devrim Gündüz
Open Source Solution Architect, PostgreSQL Major Contributor
Twitter: @DevrimGunduz , @DevrimGunduzTR