FreeBSD 12.0-RELEASEへの更新中、www/apache24のports更新で以下のようなビルドエラーが起きた。
unixd.c:245:25: error: variable has incomplete type 'union semun' union semun ick; ^ unixd.c:245:19: note: forward declaration of 'union semun' union semun ick; ^ 1 error generated. *** [unixd.lo] Error code 1
union semun
が定義されとらんとな…。
ググってみたら既にバグチケが上がっていた。メンテナ曰く、当該箇所を削除するか全部のトップレベルのportsをリビルドせよとの事だが、後者は面倒でござる。というか、“全てのトップレベル”の範囲がわからんかったので、ソース修正でどうにかする。
/usr/ports/www/apache24/work/httpd-2.4.39/os/unix/unixd.c
の240行目付近、#if !APR_HAVE_UNION_SEMUN
によってunion semun
の定義がなくなっているようなので、#if
と#endif
をコメントしてやる。
apr_os_proc_mutex_t ospmutex; //#if !APR_HAVE_UNION_SEMUN ///★コメントアウト! union semun { long val; struct semid_ds *buf; unsigned short *array; }; //#endif ///★コメントアウト! union semun ick; struct semid_ds buf = { { 0 } };
あとは/usr/ports/www/apache24
の下でmake install
すればビルドは通る。……が、起動しようとするとSegmentation faultで落ちるぅorz。
見た感じdevel/apr1関係のコードのような気がするので、portmaster apr –force-config
でaprをリビルド。その後、改めてportmaster apache24 –force-config
したら無事ビルドも通って問題なく起動した。