PostgreSQL configureオプション(8.3～12)

# はじめに

なんとなくPostgreSQLのconfigureオプションの変遷について調べてみた。
PostgreSQL 12情報も追加した(2019-12-29)

# 調査のきっかけ

先日、とある案件でPostgreSQL 8.3からAurora PostgreSQL 10への移行したい、みたいな話を聞いて、互換性に関する下調べをしてた。

で、リリースノートを見ると、configureオプションの変更についても記載されているバージョンがあったので、この際、configureのオプションの歴史を調べてみようかなと。
（configureを使ってソースビルドからインストールするユーザはそんなにいないような気もするけど）

だいたい、普段もprefixとか、beta版フェーズで--enable-debugを使うくらいだしなあ。

# バージョン毎の変更点
configureオプションの変更なんて、そんなにないだろうと思っていたけど、調べてみると結構あるなという印象。

## PostgreSQL 8.4
8.4では非常に多くのconfigureオプションの変更があった。こんなに変更があったとは。

* 追加：datarootdir
* 追加：docdir
* 削除：with-docdir
* 削除：with-docdir
* 追加：htmldir
* 追加：with-python
* 追加：with-libedit-preferred
* 追加：with-bonjour
* 追加：with-ossp-uuid
* 追加：disable-integer-datetimes
* 削除：enable-integer-datetimes
* 追加：disable-float4-byval
* 追加：disable-float8-byval
* 追加：with-segsize
* 追加：with-blocksize
* 追加：with-wal-segsize
* 追加：with-wal-blocksize* 
* 追加：enable-coverage

## PostgreSQL 9.0
スレッドセーフ指定がデフォルト有効に。

* 追加：disable-thread-safety
* 削除：enable-thread-safety

## PostgreSQL 9.1

configureのオプションページには記載されていないけど、contrib/sepgsql(9.1～)のページに、``with-selinux``オプションに関する記述があるので注意。

* 追加：with-selinux

## PostgreSQL 9.2, 9.3
変更なし。

## PostgreSQL 9.4
``with-extra-version``って、今まで使ったことなかったけど、パッチを当てたコードをビルドするような時に付与しておくと良さそう。(性能検証のときなど）

* 追加：with-extra-version
* 追加：with-uuid
* 追加：enable-tap-tests

## PostgreSQL 9.5
``with-krb-srvnam``の指定の有無で代用するようにしたのかな？（使ったことないので分からない）

* 削除：with-krb5

## PostgreSQL 9.6

* 追加：with-bsd-auth
* 追加：with-systemd

## PostgreSQL 10
``disable-integer-datetimes``がついに削除された！

* 追加：with-icu
* 削除：disable-integer-datetimes
* 追加：disable-strong-random

## PostgreSQL 11
JIT対応に関連する``with-llvm``の追加と、``initdb``パラメータとして指定可能になった、``with-wal-segsize``が削除された。

* 追加：with-llvm
* 削除：with-wal-segsize

## PostgreSQL 12
``--disable-strong-random``オプションが削除された。このオプションも短命でしたね・・・。


# configureオプションの変遷

| オプション名              | 8.3   | 8.4   | 9.0   | 9.1   | 9.2   | 9.3   | 9.4   | 9.5   | 9.6   | 10   | 11   | 12   |
| ------------------------- | :--:  | :--:  | :--:  | :--:  | :--:  | :--:  | :--:  | :--:  | :--:  | :--: | :--: | :--: |
| prefix                    |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| exec-prefix               |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| bindir                    |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| datadir                   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| sysconfdir                |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| libdir                    |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| includedir                |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| datarootdir               |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| mandir                    |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| localedir                 |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| docdir                    |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-docdir               |  ●   |  －   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | －   | －   | －   |
| htmldir                   |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| without-docdir            |  ●   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | －    | －   | －   | －   |
| with-extra-version        |  －   |  －   |  －   |  －   |  －   |  －   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-includes             |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-libraries            |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-nls                |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-pgport               |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-perl                 |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-python               |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-tcl                  |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-tclconfig            |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-gssapi               |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-krb5                 |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  －   | －    | －   | －   | －   |
| with-krb-srvname          |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-llvm                 |  －   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | －    | －   | ●   | ●   |
| with-icu                  |  －   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | －    | ●   | ●   | ●   |
| with-openssl              |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-pam                  |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-bsd-auth             |  －   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | ●    | ●   | ●   | ●   |
| with-ldap                 |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-systemd              |  －   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | ●    | ●   | ●   | ●   |
| without-readline          |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-libedit-preferred    |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-bonjour              |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-uuid                 |  －   |  －   |  －   |  －   |  －   |  －   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-ossp-uuid            |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-libxml               |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-libxslt              |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| disable-integer-datetimes |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | －   | －   | －   |
| enable-integer-datetimes  |  ●   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | －    | －   | －   | －   |
| disable-float4-byval      |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| disable-float8-byval      |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-segsize              |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-blocksize            |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-wal-segsize          |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | －   | －   |
| with-wal-blocksize        |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| disable-spinlock          |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| disable-strong-random     |  －   |  －   |  －   |  －   |  －   |  －   |  －   |  －   | －    | ●   | ●   | －   |
| disable-thread-safety     |  －   |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-thread-safety      |  ●   |  ●   |  －   |  －   |  －   |  －   |  －   |  －   | －    | －   | －   | －   |
| with-system-tzdata        |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| without-zlib              |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-debug              |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-coverage           |  －   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-profiling          |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-cassert            |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-depend             |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-dtrace             |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| enable-tap-tests          |  －   |  －   |  －   |  －   |  －   |  －   |  ●   |  ●   | ●    | ●   | ●   | ●   |
| with-selinux              |  －   |  －   |  －   |  ●   |  ●   |  ●   |  ●   |  ●   | ●    | ●   | ●   | ●   |

#その他
* 何気にバージョンによって、PostgreSQL文書での記述順序が違っていたりするのがちょっと面倒だった。
* 今更、アルファベット順に変更するのは無理なんだろうなあ。
* contrib/sepgsql のように拡張機能依存のconfigureオプションが他にもあるかもしれない。気づいたら随時追加する。

# おわりに
* configureオプションの変遷、調べてみると意外に面白かった。
* ``with-extra-version``のように、使いこなすと検証作業に使えそうなオプションの存在も知ることができたので、たまにはこういう調査もやって良かったなと。