[Bug 261976] databases/postgresql14-server: disallow devel/llvm14 for now

From: <bugzilla-noreply_at_freebsd.org>
Date: Tue, 15 Feb 2022 20:43:14 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261976

            Bug ID: 261976
           Summary: databases/postgresql14-server: disallow devel/llvm14
                    for now
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: dim@FreeBSD.org
                CC: brooks@FreeBSD.org, pgsql@FreeBSD.org
                CC: brooks@FreeBSD.org, pgsql@FreeBSD.org

During an exp-run for llvm 14 (see bug 261742), it turned out that
databases/postgresql14-server and the other slaved postgresql-server ports fail
to build when the base system compiler is clang 14  (note this is from the i386
exp-run, after devel/llvm14 was introduced:

...
g++10 -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute
-Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security
-fno-strict-aliasing -fwrapv -O2 -pipe  -fstack-protector-strong
-Wl,-rpath=/usr/local/lib/gcc10  -nostdinc++ -isystem /usr/include/c++/v1
-Wl,-rpath=/usr/local/lib/gcc10  -std=c++14 -fPIC -DPIC -D__STDC_LIMIT_MACROS
-D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -I/usr/local/llvm14/include  -I../../../../src/include
-I/usr/local/include  -I/usr/local/include -I/usr/local/include
-I/usr/local/include -I/usr/local/include  -c -o llvmjit_error.o
llvmjit_error.cpp
llvmjit_error.cpp:28:13: error: 'new_handler' in namespace 'std' does not name
a type
   28 | static std::new_handler old_new_handler = NULL;
      |             ^~~~~~~~~~~
llvmjit_error.cpp:32:64: error: 'string' in namespace 'std' does not name a
type
   32 | static void fatal_llvm_new_handler(void *user_data, const std::string&
reason, bool gen_crash_diag);
      |                                                                ^~~~~~
llvmjit_error.cpp:25:1: note: 'std::string' is defined in header '<string>';
did you forget to '#include <string>'?
   24 | #include "jit/llvmjit.h"
  +++ |+#include <string>
   25 |
llvmjit_error.cpp:34:66: error: 'string' in namespace 'std' does not name a
type
   34 | static void fatal_llvm_error_handler(void *user_data, const
std::string& reason, bool gen_crash_diag);
      |                                                                  ^~~~~~
llvmjit_error.cpp:34:61: note: 'std::string' is defined in header '<string>';
did you forget to '#include <string>'?
   34 | static void fatal_llvm_error_handler(void *user_data, const
std::string& reason, bool gen_crash_diag);
      |                                                             ^~~
llvmjit_error.cpp: In function 'void llvm_enter_fatal_on_oom()':
llvmjit_error.cpp:60:3: error: 'old_new_handler' was not declared in this scope
   60 |   old_new_handler = std::set_new_handler(fatal_system_new_handler);
      |   ^~~~~~~~~~~~~~~
llvmjit_error.cpp:60:26: error: 'set_new_handler' is not a member of 'std'
   60 |   old_new_handler = std::set_new_handler(fatal_system_new_handler);
      |                          ^~~~~~~~~~~~~~~
llvmjit_error.cpp:62:41: error: invalid conversion from 'void (*)(void*, const
int&, bool)' to 'llvm::fatal_error_handler_t' {aka 'void (*)(void*, const
char*, bool)'} [-fpermissive]
   62 |   llvm::install_bad_alloc_error_handler(fatal_llvm_new_handler);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void (*)(void*, const int&,
bool)

There seem to be a few changes in the LLVM C and C++ APIs, and until upstream
postgresql adapts to these changes, I think it is necessary to specifically
limit the PG_LLVM_VERSION to a maximum of 13.

-- 
You are receiving this mail because:
You are the assignee for the bug.