Can't install relstorage 3.5.0 on MacOS

python3.11 -m venv test
cd test
bin/pip install RelStorage==3.5.0

error output

clang++ -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -Isrc/relstorage/cache -Isrc/relstorage -Iinclude -I/opt/sandbox/eea-website-backend/develop/include -I/opt/homebrew/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/include/python3.11 -c src/relstorage/cache/c_cache.cpp -o build/temp.macosx-14.0-arm64-cpython-311/src/relstorage/cache/c_cache.o
      In file included from src/relstorage/cache/c_cache.cpp:17:
      In file included from src/relstorage/cache/c_cache.h:65:
      In file included from include/boost/intrusive/list.hpp:20:
      In file included from include/boost/intrusive/list_hook.hpp:23:
      In file included from include/boost/intrusive/detail/generic_hook.hpp:24:
      In file included from include/boost/intrusive/pointer_traits.hpp:24:
      In file included from include/boost/intrusive/detail/mpl.hpp:26:
      include/boost/move/detail/type_traits.hpp:877:30: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins]
      {  static const bool value = BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T); };
                                   ^
      include/boost/move/detail/type_traits.hpp:335:54: note: expanded from macro 'BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE'
         #define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T)   BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) || ::boost::move_detail::is_pod<T>::value
                                                           ^
      include/boost/move/detail/type_traits.hpp:166:51: note: expanded from macro 'BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR'
      #     define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
                                                        ^
      include/boost/move/detail/type_traits.hpp:908:30: warning: builtin __has_trivial_assign is deprecated; use __is_trivially_assignable instead [-Wdeprecated-builtins]
         static const bool value = BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T);
                                   ^
      include/boost/move/detail/type_traits.hpp:323:58: note: expanded from macro 'BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE'
                                                               BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T))
                                                               ^
      include/boost/move/detail/type_traits.hpp:159:47: note: expanded from macro 'BOOST_MOVE_HAS_TRIVIAL_ASSIGN'
      #     define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
                                                    ^
      include/boost/move/detail/type_traits.hpp:923:30: warning: builtin __has_nothrow_constructor is deprecated; use __is_nothrow_constructible instead [-Wdeprecated-builtins]
      {  static const bool value = BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T);  };
                                   ^
      include/boost/move/detail/type_traits.hpp:341:60: note: expanded from macro 'BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE'
         #define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T)  BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) || ::boost::move_detail::is_pod<T>::value
                                                                 ^
      include/boost/move/detail/type_traits.hpp:173:52: note: expanded from macro 'BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR'
      #     define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
                                                         ^
      include/boost/move/detail/type_traits.hpp:930:30: warning: builtin __has_nothrow_copy is deprecated; use __is_nothrow_constructible instead [-Wdeprecated-builtins]
      {  static const bool value = BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T);  };
                                   ^
      include/boost/move/detail/type_traits.hpp:347:58: note: expanded from macro 'BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE'
         #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T)   BOOST_MOVE_HAS_NOTHROW_COPY(T) || ::boost::move_detail::is_pod<T>::value
                                                               ^
      include/boost/move/detail/type_traits.hpp:180:46: note: expanded from macro 'BOOST_MOVE_HAS_NOTHROW_COPY'
      #     define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T))
                                                   ^
      include/boost/move/detail/type_traits.hpp:944:30: warning: builtin __has_nothrow_assign is deprecated; use __is_nothrow_assignable instead [-Wdeprecated-builtins]
      {  static const bool value = BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T);  };
                                   ^
      include/boost/move/detail/type_traits.hpp:353:53: note: expanded from macro 'BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE'
         #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) || ::boost::move_detail::is_pod<T>::value
                                                          ^
      include/boost/move/detail/type_traits.hpp:187:48: note: expanded from macro 'BOOST_MOVE_HAS_NOTHROW_ASSIGN'
      #     define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T))
                                                     ^
      In file included from src/relstorage/cache/c_cache.cpp:17:
      In file included from src/relstorage/cache/c_cache.h:65:
      include/boost/intrusive/list.hpp:1348:14: warning: variable 'node_count' set but not used [-Wunused-but-set-variable]
            size_t node_count = 0;
                   ^
      In file included from src/relstorage/cache/c_cache.cpp:16:
      /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/c++/v1/vector:407:5: error: static assertion failed due to requirement 'is_same<relstorage::PythonAllocator<relstorage::cache::ProposedCacheEntry>, std::allocator<relstorage::cache::ProposedCacheEntry> >::value': [allocator.requirements] states that rebinding an allocator to the same type should result in the original allocator
          static_assert(is_same<allocator_type, __rebind_alloc<__alloc_traits, value_type> >::value,
          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/c++/v1/__config:624:32: note: expanded from macro 'static_assert'
      #    define static_assert(...) _Static_assert(__VA_ARGS__)
                                     ^              ~~~~~~~~~~~
      src/relstorage/cache/c_cache.h:523:17: note: in instantiation of template class 'std::vector<relstorage::cache::ProposedCacheEntry, relstorage::PythonAllocator<relstorage::cache::ProposedCacheEntry> >' requested here
              typedef EntryList::const_iterator iterator;
                      ^
      src/relstorage/cache/c_cache.cpp:515:51: error: indirection requires pointer operand ('TempCacheFiller::iterator' (aka 'int') invalid)
              SVCacheEntry* incoming = new SVCacheEntry(*it);
                                                        ^~~
      src/relstorage/cache/c_cache.cpp:545:34: error: member reference type 'TempCacheFiller::iterator' (aka 'int') is not a pointer
              if (this->data.count(it->oid()) != 0)
                                   ~~  ^
      src/relstorage/cache/c_cache.cpp:546:33: error: member reference type 'TempCacheFiller::iterator' (aka 'int') is not a pointer
                  added.push_back(it->oid());
                                  ~~  ^
      6 warnings and 4 errors generated.
      error: command '/usr/bin/clang++' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for relstorage
Failed to build relstorage
ERROR: Could not build wheels for relstorage, which is required to install pyproject.toml-based projects

It seems to be fixed in version 4.0.0. But there are other issues with psycopg2==2.9.9, thus don't try to update it :wink:

The following formula seems to work:

bin/pip install relstorage==4.0.0 psycopg2==2.9.5