Re: Requiring LLVM 14+ in PostgreSQL 18
On Tue, Oct 1, 2024 at 11:23 PM Peter Eisentraut wrote: > I have committed the two remaining patches. I'll go nudge any affected > buildfarm members to upgrade as needed. Thanks! FWIW next on my list of LLVM maintenance work are: fix ARM crash in the next week or so (CF #5220), and figure out which patches need to go where for JITLink, a small required API change for LLVM 20, unless someone else is interested in working on that soon (there was a patch[1] but the thread has gone quiet). [1] https://www.postgresql.org/message-id/flat/20220829074622.2474104-1-alex.fan.q%40gmail.com
Re: Requiring LLVM 14+ in PostgreSQL 18
On 21.08.24 16:00, Peter Eisentraut wrote: On 17.05.24 00:54, Thomas Munro wrote: On Fri, May 17, 2024 at 3:17 AM Nazir Bilal Yavuz wrote: Actually, 32 bit builds are working but the Perl version needs to be updated to 'perl5.36-i386-linux-gnu' in .cirrus.tasks.yml. I changed 0001 with the working version of 32 bit builds [1] and the rest is the same. All tests pass now [2]. Ahh, right, thanks! I will look at committing your CI/fixup patches. The CI images have been updated, so this should be ready to go now. I gave the remaining two patches a try on CI, and it all looks okay to me. (needed some gentle rebasing) I have committed the two remaining patches. I'll go nudge any affected buildfarm members to upgrade as needed.
Re: Requiring LLVM 14+ in PostgreSQL 18
On 17.05.24 00:54, Thomas Munro wrote: On Fri, May 17, 2024 at 3:17 AM Nazir Bilal Yavuz wrote: Actually, 32 bit builds are working but the Perl version needs to be updated to 'perl5.36-i386-linux-gnu' in .cirrus.tasks.yml. I changed 0001 with the working version of 32 bit builds [1] and the rest is the same. All tests pass now [2]. Ahh, right, thanks! I will look at committing your CI/fixup patches. The CI images have been updated, so this should be ready to go now. I gave the remaining two patches a try on CI, and it all looks okay to me. (needed some gentle rebasing)
Re: Requiring LLVM 14+ in PostgreSQL 18
On 19.05.24 00:46, Ole Peder Brandtzæg wrote: On Wed, May 15, 2024 at 07:20:09AM +0200, Peter Eisentraut wrote: Yes, let's get that v3-0001 patch into PG17. Upon seeing this get committed in 4dd29b6833, I noticed that the docs still advertise the llvm-config-$version search dance. That's still correct for Meson-based builds since we use their config-tool machinery, but no longer holds for configure-based builds. The attached patch updates the docs accordingly. committed
Re: Requiring LLVM 14+ in PostgreSQL 18
Thomas Munro writes: > Oops, right I didn't know we had that documented. Thanks. Will hold > off doing anything until the thaw. FWIW, I don't think the release freeze precludes docs-only fixes. But if you prefer to sit on this, that's fine too. regards, tom lane
Re: Requiring LLVM 14+ in PostgreSQL 18
On Sun, May 19, 2024 at 11:05:49AM +1200, Thomas Munro wrote: > Oops, right I didn't know we had that documented. Thanks. Will hold > off doing anything until the thaw. No worries, thanks! > Hmm, I also didn't know that Meson had its own list like our just-removed one: > > https://github.com/mesonbuild/meson/blob/master/mesonbuild/environment.py#L183 I didn't either before writing the doc patch, which led me to investigate why it *just works* when doing meson setup and then I saw the 40 odd "Trying a default llvm-config fallback…" lines in meson-log.txt =) -- Ole Peder Brandtzæg It's raining triple sec in Tchula and the radio plays "Crazy Train"
Re: Requiring LLVM 14+ in PostgreSQL 18
On Sun, May 19, 2024 at 10:46 AM Ole Peder Brandtzæg wrote: > On Wed, May 15, 2024 at 07:20:09AM +0200, Peter Eisentraut wrote: > > Yes, let's get that v3-0001 patch into PG17. > > Upon seeing this get committed in 4dd29b6833, I noticed that the docs > still advertise the llvm-config-$version search dance. That's still > correct for Meson-based builds since we use their config-tool machinery, > but no longer holds for configure-based builds. The attached patch > updates the docs accordingly. Oops, right I didn't know we had that documented. Thanks. Will hold off doing anything until the thaw. Hmm, I also didn't know that Meson had its own list like our just-removed one: https://github.com/mesonbuild/meson/blob/master/mesonbuild/environment.py#L183 Unsurprisingly, it suffers from maintenance lag, priority issues etc (new major versions pop out every 6 months): https://github.com/mesonbuild/meson/issues/10483
Re: Requiring LLVM 14+ in PostgreSQL 18
On Wed, May 15, 2024 at 07:20:09AM +0200, Peter Eisentraut wrote: > Yes, let's get that v3-0001 patch into PG17. Upon seeing this get committed in 4dd29b6833, I noticed that the docs still advertise the llvm-config-$version search dance. That's still correct for Meson-based builds since we use their config-tool machinery, but no longer holds for configure-based builds. The attached patch updates the docs accordingly. -- Ole Peder Brandtzæg In any case, these nights just ain't getting any easier And who could judge us For seeking comfort in the hazy counterfeit land of memory >From 61dfbf5a252b53697cce17cd4885ecddb7665814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Peder=20Brandtz=C3=A6g?= Date: Sun, 19 May 2024 00:29:09 +0200 Subject: [PATCH] doc: remove llvm-config search from configure documentation As of 4dd29b6833, we no longer attempt to locate any other llvm-config variant than plain llvm-config in configure-based builds; update the documentation accordingly. (For Meson-based builds, we still use Meson's LLVMDependencyConfigTool [0], which runs through a set of possible suffixes [1], so no need to update the documentation there.) [0]: https://github.com/mesonbuild/meson/blob/7d28ff29396f9d7043204de8ddc52226b9903811/mesonbuild/dependencies/dev.py#L184 [1]: https://github.com/mesonbuild/meson/blob/7d28ff29396f9d7043204de8ddc52226b9903811/mesonbuild/environment.py#L183 --- doc/src/sgml/installation.sgml | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 1b32d5ca62..19abec2c34 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -941,12 +941,9 @@ build-postgresql: llvm-configllvm-config will be used to find the required compilation options. - llvm-config, and then - llvm-config-$major-$minor for all supported - versions, will be searched for in your PATH. If - that would not yield the desired program, - use LLVM_CONFIG to specify a path to the - correct llvm-config. For example + llvm-config will be searched for in your PATH. + If that would not yield the desired program, use LLVM_CONFIG to + specify a path to the correct llvm-config. For example ./configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config' -- 2.43.0
Re: Requiring LLVM 14+ in PostgreSQL 18
On Fri, May 17, 2024 at 3:17 AM Nazir Bilal Yavuz wrote: > Actually, 32 bit builds are working but the Perl version needs to be > updated to 'perl5.36-i386-linux-gnu' in .cirrus.tasks.yml. I changed > 0001 with the working version of 32 bit builds [1] and the rest is the > same. All tests pass now [2]. Ahh, right, thanks! I will look at committing your CI/fixup patches.
Re: Requiring LLVM 14+ in PostgreSQL 18
Hi, On Thu, 16 May 2024 at 05:34, Thomas Munro wrote: > > On Wed, May 15, 2024 at 5:20 PM Peter Eisentraut wrote: > > Yes, let's get that v3-0001 patch into PG17. > > Done. > > Bilal recently created the CI images for Debian Bookworm[1]. You can > try them with s/bullseye/bookworm/ in .cirrus.tasks.yml, but it looks > like he is still wrestling with a perl installation problem[2] in the > 32 bit build, so here is a temporary patch to do that and also delete > the 32 bit tests for now. This way cfbot should succeed with the > remaining patches. Parked here for v18. Actually, 32 bit builds are working but the Perl version needs to be updated to 'perl5.36-i386-linux-gnu' in .cirrus.tasks.yml. I changed 0001 with the working version of 32 bit builds [1] and the rest is the same. All tests pass now [2]. [1] postgr.es/m/CAN55FZ0fY5EFHXLKCO_=p4pwfmhrovom_qse_7b48gpchfa...@mail.gmail.com [2] https://cirrus-ci.com/task/4969910856581120 -- Regards, Nazir Bilal Yavuz Microsoft From 976d2c7ad0e470b24875ee27171359f54078a761 Mon Sep 17 00:00:00 2001 From: Nazir Bilal Yavuz Date: Mon, 13 May 2024 10:56:28 +0300 Subject: [PATCH v5 1/3] Upgrade Debian CI images to Bookworm New Debian version, namely Bookworm, is released. Use these new images in CI tasks. Perl version is upgraded in the Bookworm images, so update Perl version at 'Linux - Debian Bookworm - Meson' task as well. Upgrading Debian CI images to Bookworm PR: https://github.com/anarazel/pg-vm-images/pull/91 --- .cirrus.tasks.yml | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index a2388cd5036..47a60aa7c6f 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -65,7 +65,7 @@ task: CPUS: 4 BUILD_JOBS: 8 TEST_JOBS: 8 -IMAGE_FAMILY: pg-ci-bullseye +IMAGE_FAMILY: pg-ci-bookworm CCACHE_DIR: ${CIRRUS_WORKING_DIR}/ccache_dir # no options enabled, should be small CCACHE_MAXSIZE: "150M" @@ -243,7 +243,7 @@ task: CPUS: 4 BUILD_JOBS: 4 TEST_JOBS: 8 # experimentally derived to be a decent choice -IMAGE_FAMILY: pg-ci-bullseye +IMAGE_FAMILY: pg-ci-bookworm CCACHE_DIR: /tmp/ccache_dir DEBUGINFOD_URLS: "https://debuginfod.debian.net"; @@ -314,7 +314,7 @@ task: #DEBIAN_FRONTEND=noninteractive apt-get -y install ... matrix: -- name: Linux - Debian Bullseye - Autoconf +- name: Linux - Debian Bookworm - Autoconf env: SANITIZER_FLAGS: -fsanitize=address @@ -348,7 +348,7 @@ task: on_failure: <<: *on_failure_ac -- name: Linux - Debian Bullseye - Meson +- name: Linux - Debian Bookworm - Meson env: CCACHE_MAXSIZE: "400M" # tests two different builds @@ -375,7 +375,7 @@ task: ${LINUX_MESON_FEATURES} \ -Dllvm=disabled \ --pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \ --DPERL=perl5.32-i386-linux-gnu \ +-DPERL=perl5.36-i386-linux-gnu \ -DPG_TEST_EXTRA="$PG_TEST_EXTRA" \ build-32 EOF @@ -652,7 +652,7 @@ task: env: CPUS: 4 BUILD_JOBS: 4 -IMAGE_FAMILY: pg-ci-bullseye +IMAGE_FAMILY: pg-ci-bookworm # Use larger ccache cache, as this task compiles with multiple compilers / # flag combinations -- 2.43.0 From a18120ace64bcde41c2ed23a050eb86f9b8772e0 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Thu, 19 Oct 2023 04:45:46 +1300 Subject: [PATCH v5 2/3] jit: Require at least LLVM 14, if enabled. Remove support for LLVM versions 10-13. The default on all non-EOL'd OSes represented in our build farm will be at least LLVM 14 when PostgreSQL 18 ships. Reviewed-by: Peter Eisentraut Discussion: https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com --- src/backend/jit/llvm/llvmjit.c | 101 src/backend/jit/llvm/llvmjit_error.cpp | 25 -- src/backend/jit/llvm/llvmjit_inline.cpp | 13 --- src/backend/jit/llvm/llvmjit_wrap.cpp | 4 - config/llvm.m4 | 4 +- doc/src/sgml/installation.sgml | 4 +- configure | 4 +- meson.build | 2 +- 8 files changed, 7 insertions(+), 150 deletions(-) diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index 1d439f24554..8f9c77eedc1 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -21,13 +21,9 @@ #if LLVM_VERSION_MAJOR > 16 #include #endif -#if LLVM_VERSION_MAJOR > 11 #include #include #include -#else -#include -#endif #include #include #if LLVM_VERSION_MAJOR < 17 @@ -50,13 +46,8 @@ /* Handle of a module emitted via ORC JIT */ typedef struct LLVMJitHandle { -#if LLVM_VERSION_MAJOR > 11 LLVMOrcLLJITRef lljit; LLVMOrcResourceTrackerRef resource_tracker; -#else - LLVMOrcJITStackRef stack; - LLVMOrcModuleHandle orc_handle; -#endif } LLVMJi
Re: Requiring LLVM 14+ in PostgreSQL 18
On Wed, May 15, 2024 at 5:20 PM Peter Eisentraut wrote: > Yes, let's get that v3-0001 patch into PG17. Done. Bilal recently created the CI images for Debian Bookworm[1]. You can try them with s/bullseye/bookworm/ in .cirrus.tasks.yml, but it looks like he is still wrestling with a perl installation problem[2] in the 32 bit build, so here is a temporary patch to do that and also delete the 32 bit tests for now. This way cfbot should succeed with the remaining patches. Parked here for v18. [1] https://github.com/anarazel/pg-vm-images/commit/685ca7ccb7b3adecb11d948ac677d54cd9599e6c [2] https://cirrus-ci.com/task/5459439048720384 From c0a05c2929e03558c730b148bdeb5d301dbc4312 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Thu, 16 May 2024 14:10:09 +1200 Subject: [PATCH v4 1/3] XXX CI kludge: bullseye->bookworm Temporarily removed 32 bit tests, as the CI image is not fully baked yet. --- .cirrus.tasks.yml | 37 + 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index a2388cd5036..5ff6b6a0556 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -65,7 +65,7 @@ task: CPUS: 4 BUILD_JOBS: 8 TEST_JOBS: 8 -IMAGE_FAMILY: pg-ci-bullseye +IMAGE_FAMILY: pg-ci-bookworm CCACHE_DIR: ${CIRRUS_WORKING_DIR}/ccache_dir # no options enabled, should be small CCACHE_MAXSIZE: "150M" @@ -243,7 +243,7 @@ task: CPUS: 4 BUILD_JOBS: 4 TEST_JOBS: 8 # experimentally derived to be a decent choice -IMAGE_FAMILY: pg-ci-bullseye +IMAGE_FAMILY: pg-ci-bookworm CCACHE_DIR: /tmp/ccache_dir DEBUGINFOD_URLS: "https://debuginfod.debian.net"; @@ -314,7 +314,7 @@ task: #DEBIAN_FRONTEND=noninteractive apt-get -y install ... matrix: -- name: Linux - Debian Bullseye - Autoconf +- name: Linux - Debian Bookworm - Autoconf env: SANITIZER_FLAGS: -fsanitize=address @@ -348,7 +348,7 @@ task: on_failure: <<: *on_failure_ac -- name: Linux - Debian Bullseye - Meson +- name: Linux - Debian Bookworm - Meson env: CCACHE_MAXSIZE: "400M" # tests two different builds @@ -364,24 +364,7 @@ task: build EOF - # Also build & test in a 32bit build - it's gotten rare to test that - # locally. - configure_32_script: | -su postgres <<-EOF - export CC='ccache gcc -m32' - meson setup \ ---buildtype=debug \ --Dcassert=true -Dinjection_points=true \ -${LINUX_MESON_FEATURES} \ --Dllvm=disabled \ ---pkg-config-path /usr/lib/i386-linux-gnu/pkgconfig/ \ --DPERL=perl5.32-i386-linux-gnu \ --DPG_TEST_EXTRA="$PG_TEST_EXTRA" \ -build-32 -EOF - build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS}' - build_32_script: su postgres -c 'ninja -C build-32 -j${BUILD_JOBS}' upload_caches: ccache @@ -393,16 +376,6 @@ task: # so that we don't upload 64bit logs if 32bit fails rm -rf build/ - # There's currently no coverage of icu with LANG=C in the buildfarm. We - # can easily provide some here by running one of the sets of tests that - # way. Newer versions of python insist on changing the LC_CTYPE away - # from C, prevent that with PYTHONCOERCECLOCALE. - test_world_32_script: | -su postgres <<-EOF - ulimit -c unlimited - PYTHONCOERCECLOCALE=0 LANG=C meson test $MTEST_ARGS -C build-32 --num-processes ${TEST_JOBS} -EOF - on_failure: <<: *on_failure_meson @@ -652,7 +625,7 @@ task: env: CPUS: 4 BUILD_JOBS: 4 -IMAGE_FAMILY: pg-ci-bullseye +IMAGE_FAMILY: pg-ci-bookworm # Use larger ccache cache, as this task compiles with multiple compilers / # flag combinations -- 2.39.2 From bcdb3453b50cd37077ad71f012d7f92c9842495f Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Thu, 19 Oct 2023 04:45:46 +1300 Subject: [PATCH v4 2/3] jit: Require at least LLVM 14, if enabled. Remove support for LLVM versions 10-13. The default on all non-EOL'd OSes represented in our build farm will be at least LLVM 14 when PostgreSQL 18 ships. Reviewed-by: Peter Eisentraut Discussion: https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com --- config/llvm.m4 | 4 +- configure | 4 +- doc/src/sgml/installation.sgml | 4 +- meson.build | 2 +- src/backend/jit/llvm/llvmjit.c | 101 src/backend/jit/llvm/llvmjit_error.cpp | 25 -- src/backend/jit/llvm/llvmjit_inline.cpp | 13 --- src/backend/jit/llvm/llvmjit_wrap.cpp | 4 - 8 files changed, 7 insertions(+), 150 deletions(-) diff --git a/config/llvm.m4 b/config/llvm.m4 index c6cf8858f64..fa4bedd9370 100644 --- a/config/llvm.m4
Re: Requiring LLVM 14+ in PostgreSQL 18
On 15.05.24 06:21, Thomas Munro wrote: And as I'm looking up how this was previously handled, I notice that this list of clang-NN versions was last updated equally sneakily as part of your patch to trim off LLVM <10 (820b5af73dc). I wonder if the original intention of that configure code was that maintaining the versioned list above clang-7/llvm-config-7 was not needed, because the unversioning programs could be used, or maybe because pkg-config could be used. It would be nice if we could get rid of having to update that. I probably misunderstood why we were doing that, perhaps something to do with the way some distro (Debian?) was doing things with older versions, and yeah I see that we went a long time after 7 without touching it and nobody cared. Yeah, it would be nice to get rid of it. Here's a patch. Meson didn't have that. Yes, let's get that v3-0001 patch into PG17.
Re: Requiring LLVM 14+ in PostgreSQL 18
On Mon, May 13, 2024 at 2:33 AM Peter Eisentraut wrote: > These patches look fine to me. The new cut-off makes sense, and it does > save quite a bit of code. We do need to get the Cirrus CI Debian images > updated first, as you had already written. Thanks for looking! > As part of this patch, you also sneak in support for LLVM 18 > (llvm-config-18, clang-18 in configure). Should this be a separate patch? Yeah, right, I didn't really think too hard about why we have that, and now that you question it... > And as I'm looking up how this was previously handled, I notice that > this list of clang-NN versions was last updated equally sneakily as part > of your patch to trim off LLVM <10 (820b5af73dc). I wonder if the > original intention of that configure code was that maintaining the > versioned list above clang-7/llvm-config-7 was not needed, because the > unversioning programs could be used, or maybe because pkg-config could > be used. It would be nice if we could get rid of having to update that. I probably misunderstood why we were doing that, perhaps something to do with the way some distro (Debian?) was doing things with older versions, and yeah I see that we went a long time after 7 without touching it and nobody cared. Yeah, it would be nice to get rid of it. Here's a patch. Meson didn't have that. From 025f8b0106821b5b6f2ab7992da388404e3e406c Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Wed, 15 May 2024 15:51:28 +1200 Subject: [PATCH v3 1/3] jit: Remove configure probes for {lvm-config,clang}-N. Previously we searched for llvm-config-N and clang-N as well as the unversioned names, and maintained a list of expected values of N. There doesn't seem to be any reason to think that the default llvm-config and clang won't be good enough, and if they aren't, they can be overridden with LLVM_CONFIG and CLANG, so let's stop maintaining that list. The Meson build system didn't do that, so this brings them into sync. Suggested-by: Peter Eisentraut Discussion: https://postgr.es/m/CA%2BhUKG%2BSOP-aR%3DYF_n0dtXGWeCy6x%2BCn-RMWURU5ySQdmeKW1Q%40mail.gmail.com --- config/llvm.m4 | 4 ++-- configure | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/llvm.m4 b/config/llvm.m4 index 44769d819a0..c6cf8858f64 100644 --- a/config/llvm.m4 +++ b/config/llvm.m4 @@ -13,7 +13,7 @@ AC_DEFUN([PGAC_LLVM_SUPPORT], AC_REQUIRE([AC_PROG_AWK]) AC_ARG_VAR(LLVM_CONFIG, [path to llvm-config command]) - PGAC_PATH_PROGS(LLVM_CONFIG, llvm-config llvm-config-17 llvm-config-16 llvm-config-15 llvm-config-14 llvm-config-13 llvm-config-12 llvm-config-11 llvm-config-10) + PGAC_PATH_PROGS(LLVM_CONFIG, llvm-config) # no point continuing if llvm wasn't found if test -z "$LLVM_CONFIG"; then @@ -32,7 +32,7 @@ AC_DEFUN([PGAC_LLVM_SUPPORT], # need clang to create some bitcode files AC_ARG_VAR(CLANG, [path to clang compiler to generate bitcode]) - PGAC_PATH_PROGS(CLANG, clang clang-17 clang-16 clang-15 clang-14 clang-13 clang-12 clang-11 clang-10) + PGAC_PATH_PROGS(CLANG, clang) if test -z "$CLANG"; then AC_MSG_ERROR([clang not found, but required when compiling --with-llvm, specify with CLANG=]) fi diff --git a/configure b/configure index 89644f2249e..8e7704d54bd 100755 --- a/configure +++ b/configure @@ -5065,7 +5065,7 @@ if test "$with_llvm" = yes; then : if test -z "$LLVM_CONFIG"; then - for ac_prog in llvm-config llvm-config-17 llvm-config-16 llvm-config-15 llvm-config-14 llvm-config-13 llvm-config-12 llvm-config-11 llvm-config-10 + for ac_prog in llvm-config do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5138,7 +5138,7 @@ $as_echo "$as_me: using llvm $pgac_llvm_version" >&6;} # need clang to create some bitcode files if test -z "$CLANG"; then - for ac_prog in clang clang-17 clang-16 clang-15 clang-14 clang-13 clang-12 clang-11 clang-10 + for ac_prog in clang do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -- 2.39.2 From ef1c38dbb1ec8a6a762c88ee50c55a87693d44f6 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Thu, 19 Oct 2023 04:45:46 +1300 Subject: [PATCH v3 2/3] jit: Require at least LLVM 14, if enabled. Remove support for LLVM versions 10-13. The default on all non-EOL'd OSes represented in our build farm will be at least LLVM 14 when PostgreSQL 18 ships. Reviewed-by: Peter Eisentraut Discussion: https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com --- config/llvm.m4 | 4 +- configure | 4 +- doc/src/sgml/installation.sgml | 4 +- meson.build | 2 +- src/backend/jit/llvm/llvmjit.c | 101 src/backend/jit/llvm/llvmjit_error.cpp | 25 -- src/backend/jit/llvm/llvmjit_inline.cpp | 13 --- src/backend/jit/llvm/l
Re: Requiring LLVM 14+ in PostgreSQL 18
On 24.04.24 01:43, Thomas Munro wrote: Rebased over ca89db5f. These patches look fine to me. The new cut-off makes sense, and it does save quite a bit of code. We do need to get the Cirrus CI Debian images updated first, as you had already written. As part of this patch, you also sneak in support for LLVM 18 (llvm-config-18, clang-18 in configure). Should this be a separate patch? And as I'm looking up how this was previously handled, I notice that this list of clang-NN versions was last updated equally sneakily as part of your patch to trim off LLVM <10 (820b5af73dc). I wonder if the original intention of that configure code was that maintaining the versioned list above clang-7/llvm-config-7 was not needed, because the unversioning programs could be used, or maybe because pkg-config could be used. It would be nice if we could get rid of having to update that.
Re: Requiring LLVM 14+ in PostgreSQL 18
Rebased over ca89db5f. I looked into whether we could drop the "old pass manager" code too[1]. Almost, but nope, even the C++ API lacks a way to set the inline threshold before LLVM 16, so that would cause a regression. Although we just hard-code the threshold to 512 with a comment that sounds like it's pretty arbitrary, a change to the default (225?) would be unjustifiable just for code cleanup. Oh well. [1] https://github.com/macdice/postgres/commit/0d40abdf1feb75210c3a3d2a35e3d6146185974c v2-0001-jit-Require-at-least-LLVM-14-if-enabled.patch Description: Binary data v2-0002-jit-Use-opaque-pointers-in-all-supported-LLVM-ver.patch Description: Binary data
Re: Requiring LLVM 14+ in PostgreSQL 18
On Wed, Apr 10, 2024 at 1:38 PM Thomas Munro wrote: > Therefore, some time after the tree re-opens for hacking, we could rip > out a bunch of support code for LLVM 10-13, and then rip out support > for pre-opaque-pointer mode. Please see attached. ... or of course closer to the end of the cycle if that's what people prefer for some reason, I don't mind too much as long as it happens. I added this to the commitfest app, and it promptly failed for cfbot. That's expected: CI is still using Debian 11 "bullseye", which only has LLVM 11. It became what Debian calls "oldstable" last year, and reaches the end of oldstable in a couple of months from now. Debian 12 "bookworm" is the current stable release, and it has LLVM 14, so we should probably go and update those CI images...