Thread: [meson] expose buildtype debug/optimization info to pg_config
build system using configure set VAL_CFLAGS with debug and optimization flags, so pg_config will show these infos. Some extensions depend on the mechanism. This patch exposes these flags with a typo fixed together. -- Regards Junwang Zhao
Attachment
On 12.12.23 11:40, Junwang Zhao wrote: > build system using configure set VAL_CFLAGS with debug and > optimization flags, so pg_config will show these infos. Some > extensions depend on the mechanism. > > This patch exposes these flags with a typo fixed together. I have committed the typo fix. But I would like to learn more about the requirements of extensions in this area. This seems a bit suspicious to me.
Hi Peter, Thanks for looking into this. On Thu, Dec 14, 2023 at 4:50 PM Peter Eisentraut <peter@eisentraut.org> wrote: > > On 12.12.23 11:40, Junwang Zhao wrote: > > build system using configure set VAL_CFLAGS with debug and > > optimization flags, so pg_config will show these infos. Some > > extensions depend on the mechanism. > > > > This patch exposes these flags with a typo fixed together. > > I have committed the typo fix. > > But I would like to learn more about the requirements of extensions in > this area. This seems a bit suspicious to me. This is what I found when building citus against an installation of meson debug build pg instance, since the CFLAGS doesn't contain -g flag, the binary doesn't include the debug information, which is different behavior from configure building system. Another issue I found is that some C++ extensions(ajust/parquet_fdw for example) don't build against the meson generated pgxs.mk, since it doesn't set the CXX command. CXX is only set when llvm option is enabled, which is different from old building system. I don't insist we make Meson the same behaviour with old building system, I just think the issues I raised might stop developers try the fancy new building system. And the fix I post might not be ideal, you and Andres might have better solutions. > -- Regards Junwang Zhao
Hi, On 2023-12-14 17:24:58 +0800, Junwang Zhao wrote: > On Thu, Dec 14, 2023 at 4:50 PM Peter Eisentraut <peter@eisentraut.org> wrote: > > > > On 12.12.23 11:40, Junwang Zhao wrote: > > > build system using configure set VAL_CFLAGS with debug and > > > optimization flags, so pg_config will show these infos. Some > > > extensions depend on the mechanism. > > > > > > This patch exposes these flags with a typo fixed together. > > > > I have committed the typo fix. > > > > But I would like to learn more about the requirements of extensions in > > this area. This seems a bit suspicious to me. > > This is what I found when building citus against an installation > of meson debug build pg instance, since the CFLAGS doesn't > contain -g flag, the binary doesn't include the debug information, > which is different behavior from configure building system. Hm. I'm not sure it's the right call to make extensions build the same way as the main postgres install with regard to optimization and debug info. So I feel a bit hesitant around generating -g and particularly -Ox. But it's historically what we've done... If we want to do so, I think this should not check buildtype, but debug. > Another issue I found is that some C++ > extensions(ajust/parquet_fdw for example) don't build against > the meson generated pgxs.mk, since it doesn't set the CXX > command. CXX is only set when llvm option is enabled, which > is different from old building system. I wanted to skip the C++ tests when we don't need C++, because it makes configure take longer. But I could be convinced that we should always at least determine the C++ compiler for Makefile.global. Greetings, Andres Freund
Hi, On Fri, Dec 15, 2023 at 10:20 PM Andres Freund <andres@anarazel.de> wrote: > > Hi, > > On 2023-12-14 17:24:58 +0800, Junwang Zhao wrote: > > On Thu, Dec 14, 2023 at 4:50 PM Peter Eisentraut <peter@eisentraut.org> wrote: > > > > > > On 12.12.23 11:40, Junwang Zhao wrote: > > > > build system using configure set VAL_CFLAGS with debug and > > > > optimization flags, so pg_config will show these infos. Some > > > > extensions depend on the mechanism. > > > > > > > > This patch exposes these flags with a typo fixed together. > > > > > > I have committed the typo fix. > > > > > > But I would like to learn more about the requirements of extensions in > > > this area. This seems a bit suspicious to me. > > > > This is what I found when building citus against an installation > > of meson debug build pg instance, since the CFLAGS doesn't > > contain -g flag, the binary doesn't include the debug information, > > which is different behavior from configure building system. > > Hm. I'm not sure it's the right call to make extensions build the same way as > the main postgres install with regard to optimization and debug info. So I > feel a bit hesitant around generating -g and particularly -Ox. But it's > historically what we've done... > > If we want to do so, I think this should not check buildtype, but debug. I'm confused which *debug* do you mean, can you be more specific? > > > > Another issue I found is that some C++ > > extensions(ajust/parquet_fdw for example) don't build against > > the meson generated pgxs.mk, since it doesn't set the CXX > > command. CXX is only set when llvm option is enabled, which > > is different from old building system. > > I wanted to skip the C++ tests when we don't need C++, because it makes > configure take longer. But I could be convinced that we should always at least > determine the C++ compiler for Makefile.global. The first idea that came to my mind is using the *project* command to set [`c`, `cpp`], but this might be a little bit confusing for somebody. Then I tried another way by adding a 'pgxscpp' option to let the user choose whether he will set the C++ compiler for Makefile.global. It works but may not be an ideal way, see the attached. > > Greetings, > > Andres Freund -- Regards Junwang Zhao
Attachment
On 14.12.23 10:24, Junwang Zhao wrote: > On Thu, Dec 14, 2023 at 4:50 PM Peter Eisentraut <peter@eisentraut.org> wrote: >> >> On 12.12.23 11:40, Junwang Zhao wrote: >>> build system using configure set VAL_CFLAGS with debug and >>> optimization flags, so pg_config will show these infos. Some >>> extensions depend on the mechanism. >>> >>> This patch exposes these flags with a typo fixed together. >> >> I have committed the typo fix. >> >> But I would like to learn more about the requirements of extensions in >> this area. This seems a bit suspicious to me. > > This is what I found when building citus against an installation > of meson debug build pg instance, since the CFLAGS doesn't > contain -g flag, the binary doesn't include the debug information, > which is different behavior from configure building system. Ok, that makes sense. I think a better place to add those options would the variable var_cflags, which are the combined C flags that we export to Makefile.global and pg_config. The cflags variable that you used is more for internal use, for passing to the actual compilation commands, so adding more options there would be duplicative. And then set var_cxxflags as well. Maybe you should also check whether the compiler takes unix-style arguments, perhaps using cc.get_argument_syntax().