[devel] Сборка расширений PostgreSQL

alexei на taf.ru alexei на taf.ru
Ср Фев 9 17:04:45 MSK 2022



----- Исходное сообщение -----
> От: "Sergey V Turchin" <zerg на altlinux.org>
> Кому: "ALT Linux Team development discussions" <devel на lists.altlinux.org>
> Отправленные: Среда, 9 Февраль 2022 г 21:43:03
> Тема: Re: [devel] Сборка расширений PostgreSQL

> On Wednesday, 9 February 2022 16:25:43 MSK alexei  wrote:
> 
> [...]
>> > Например, одна из реализаций может содержать
>> > "Provides: postgresql-server-devel".
>> 
>> Идея как раз в том, что если кому-то надо именно серверный API, то он должен
>> четко понимать под какую ветку он собирает приложение,
> Сейчас там "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4"
> "8.3" "8.2" "8.1" "8.0" в их FindPostgreSQL.cmake, поэтому лучше будет, если я
> решу сделать
> BuildRequires: postgresql-devel >= 8
> BuildRequires: postgresql-devel < 13
> Зачем мне для этого postgresql-непонялзачем-devel ?

Потмоу что приложение явно хочет получить доступ к серверному API:

cmake/modules/FindPostgreSQL.cmake:
...
    set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "/usr/include/postgresql/${suffix}/server")
...

Главным образом ему нужен файл

find_path(PostgreSQL_TYPE_INCLUDE_DIR
  NAMES catalog/pg_type.h
  PATHS
   # Look in other places.
   ${PostgreSQL_ROOT_DIRECTORIES}
  PATH_SUFFIXES
    postgresql
    pgsql/server
    postgresql/server
    include/server
  # Help the user find it if we cannot.
  DOC "${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
...

На протяжении длительного времени у нас h-файлы от libpq, нужные обычным клиентским программам, и серверные заголовки были
свалены в одну кучу. По этой причине было невозможно собирать серверные расширения под все имеющиеся ветки сервера.

Собственно, если приложение знать не знает про версии новее 12, то имеет смысл как раз задать ему зависимость
postgresql12-server-devel, и тогда оно полоучит именно то, что ожидает.


Подробная информация о списке рассылки Devel