diff --git a/pkgs/by-name/pg/pgpool/darwin-strchrnul.patch b/pkgs/by-name/pg/pgpool/darwin-strchrnul.patch new file mode 100644 index 000000000000..f645f9379aab --- /dev/null +++ b/pkgs/by-name/pg/pgpool/darwin-strchrnul.patch @@ -0,0 +1,13 @@ +diff --git a/src/utils/pool_process_reporting.c b/src/utils/pool_process_reporting.c +index 39087bc47..dc28ba958 100644 +--- a/src/utils/pool_process_reporting.c ++++ b/src/utils/pool_process_reporting.c +@@ -1118,7 +1118,8 @@ get_config(int *nrows) + StrNCpy(status[i].name, "memqcache_stats_start_time", POOLCONFIG_MAXNAMELEN); + snprintf(status[i].value, POOLCONFIG_MAXVALLEN, "%s", ctime(&pool_get_memqcache_stats()->start_time)); + /* remove a newline added by ctime() */ +- *(strchrnul(status[i].value, '\n')) = '\0'; ++ char *p = strchr(status[i].value, '\n'); ++ if (p) *p = '\0'; + StrNCpy(status[i].desc, "Start time of query cache stats", POOLCONFIG_MAXDESCLEN); + i++; diff --git a/pkgs/by-name/pg/pgpool/darwin-strlcpy.patch b/pkgs/by-name/pg/pgpool/darwin-strlcpy.patch index 2d6924af48b4..8c106662fb98 100644 --- a/pkgs/by-name/pg/pgpool/darwin-strlcpy.patch +++ b/pkgs/by-name/pg/pgpool/darwin-strlcpy.patch @@ -1,17 +1,8 @@ -diff --git a/src/Makefile.in b/src/Makefile.in -index 3b19ca27..4d2e8e52 100644 ---- a/src/Makefile.in -+++ b/src/Makefile.in -@@ -124,7 +124,7 @@ am_pgpool_OBJECTS = main/main.$(OBJEXT) main/pool_globals.$(OBJEXT) \ - context/pool_query_context.$(OBJEXT) \ - streaming_replication/pool_worker_child.$(OBJEXT) \ - rewrite/pool_timestamp.$(OBJEXT) rewrite/pool_lobj.$(OBJEXT) \ -- utils/pool_select_walker.$(OBJEXT) utils/strlcpy.$(OBJEXT) \ -+ utils/pool_select_walker.$(OBJEXT) \ - utils/psprintf.$(OBJEXT) utils/pool_params.$(OBJEXT) \ - utils/ps_status.$(OBJEXT) utils/pool_shmem.$(OBJEXT) \ - utils/pool_sema.$(OBJEXT) utils/pool_signal.$(OBJEXT) \ -@@ -469,7 +469,6 @@ pgpool_SOURCES = main/main.c \ +diff --git a/src/Makefile.am b/src/Makefile.am +index 4678ab530..f3c12cb94 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -35,7 +35,6 @@ pgpool_SOURCES = main/main.c \ rewrite/pool_timestamp.c \ rewrite/pool_lobj.c \ utils/pool_select_walker.c \ @@ -19,57 +10,52 @@ index 3b19ca27..4d2e8e52 100644 utils/psprintf.c \ utils/pool_params.c \ utils/ps_status.c \ -@@ -762,7 +761,6 @@ utils/$(am__dirstamp): - @$(MKDIR_P) utils - @: > utils/$(am__dirstamp) - utils/pool_select_walker.$(OBJEXT): utils/$(am__dirstamp) --utils/strlcpy.$(OBJEXT): utils/$(am__dirstamp) - utils/psprintf.$(OBJEXT): utils/$(am__dirstamp) - utils/pool_params.$(OBJEXT): utils/$(am__dirstamp) - utils/ps_status.$(OBJEXT): utils/$(am__dirstamp) -diff --git a/src/libs/pcp/Makefile.in b/src/libs/pcp/Makefile.in -index 5ea3213a..5689fb33 100644 ---- a/src/libs/pcp/Makefile.in -+++ b/src/libs/pcp/Makefile.in -@@ -129,7 +129,7 @@ libpcp_la_LIBADD = - am__dirstamp = $(am__leading_dot)dirstamp - dist_libpcp_la_OBJECTS = pcp.lo ../../utils/pool_path.lo \ - ../../tools/fe_port.lo ../../tools/fe_memutils.lo \ -- ../../utils/strlcpy.lo ../../utils/pool_health_check_stats.lo -+ ../../utils/pool_health_check_stats.lo - nodist_libpcp_la_OBJECTS = pcp_stream.lo md5.lo json.lo - libpcp_la_OBJECTS = $(dist_libpcp_la_OBJECTS) \ - $(nodist_libpcp_la_OBJECTS) -@@ -347,7 +347,6 @@ dist_libpcp_la_SOURCES = pcp.c \ +@@ -106,7 +105,7 @@ pgpool_LDADD = -L@PGSQL_LIB_DIR@ -lpq parser/libsql-parser.a \ + if enable_rpath + pgpool_LDFLAGS = -rpath @PGSQL_LIB_DIR@ -rpath $(libdir) + else +- pgpool_LDFLAGS = ++ pgpool_LDFLAGS = + endif + + AM_YFLAGS = -d +diff --git a/src/libs/pcp/Makefile.am b/src/libs/pcp/Makefile.am +index 31f51233a..bca3f5374 100644 +--- a/src/libs/pcp/Makefile.am ++++ b/src/libs/pcp/Makefile.am +@@ -6,7 +6,6 @@ dist_libpcp_la_SOURCES = pcp.c \ ../../utils/pool_path.c \ ../../tools/fe_port.c \ ../../tools/fe_memutils.c \ - ../../utils/strlcpy.c \ - ../../utils/pool_health_check_stats.c + ../../utils/pool_health_check_stats.c \ + ../../utils/sprompt.c - nodist_libpcp_la_SOURCES = pcp_stream.c \ -@@ -437,7 +436,6 @@ clean-libLTLIBRARIES: - @: > ../../tools/$(am__dirstamp) - ../../tools/fe_port.lo: ../../tools/$(am__dirstamp) - ../../tools/fe_memutils.lo: ../../tools/$(am__dirstamp) --../../utils/strlcpy.lo: ../../utils/$(am__dirstamp) - ../../utils/pool_health_check_stats.lo: ../../utils/$(am__dirstamp) +diff --git a/src/test/regression/tests/010.rewrite_timestamp/timestamp/Makefile b/src/test/regression/tests/010.rewrite_timestamp/timestamp/Makefile +index f19c88f29..baf6220e5 100644 +--- a/src/test/regression/tests/010.rewrite_timestamp/timestamp/Makefile ++++ b/src/test/regression/tests/010.rewrite_timestamp/timestamp/Makefile +@@ -5,7 +5,6 @@ CFLAGS=-Wall -O0 -g -std=gnu99 + CC=gcc - libpcp.la: $(libpcp_la_OBJECTS) $(libpcp_la_DEPENDENCIES) $(EXTRA_libpcp_la_DEPENDENCIES) -diff --git a/src/tools/pgenc/Makefile.in b/src/tools/pgenc/Makefile.in -index ad117a5e..5c5fc838 100644 ---- a/src/tools/pgenc/Makefile.in -+++ b/src/tools/pgenc/Makefile.in -@@ -101,7 +101,7 @@ PROGRAMS = $(bin_PROGRAMS) - am__dirstamp = $(am__leading_dot)dirstamp - dist_pg_enc_OBJECTS = pg_enc.$(OBJEXT) ../fe_port.$(OBJEXT) - nodist_pg_enc_OBJECTS = ssl_utils.$(OBJEXT) md5.$(OBJEXT) \ -- base64.$(OBJEXT) pool_passwd.$(OBJEXT) strlcpy.$(OBJEXT) \ -+ base64.$(OBJEXT) pool_passwd.$(OBJEXT) \ - regex_array.$(OBJEXT) pool_config_variables.$(OBJEXT) \ - pool_config.$(OBJEXT) fe_memutils.$(OBJEXT) \ - pool_path.$(OBJEXT) -@@ -320,7 +320,6 @@ nodist_pg_enc_SOURCES = ssl_utils.c \ + OBJS=main.o \ +- $(topsrc_dir)/utils/strlcpy.o \ + $(topsrc_dir)/utils/pgstrcasecmp.o \ + $(topsrc_dir)/utils/psprintf.o \ + $(topsrc_dir)/main/pool_globals.o \ +@@ -15,7 +14,6 @@ OBJS=main.o \ + all: all-pre $(PROGRAM) + + all-pre: +- $(MAKE) -C $(topsrc_dir)/utils strlcpy.o + $(MAKE) -C $(topsrc_dir)/utils pgstrcasecmp.o + $(MAKE) -C $(topsrc_dir)/utils psprintf.o + $(MAKE) -C $(topsrc_dir)/main pool_globals.o +diff --git a/src/tools/pgenc/Makefile.am b/src/tools/pgenc/Makefile.am +index 643ad51b4..bff5d4a1d 100644 +--- a/src/tools/pgenc/Makefile.am ++++ b/src/tools/pgenc/Makefile.am +@@ -7,7 +7,6 @@ nodist_pg_enc_SOURCES = ssl_utils.c \ md5.c \ base64.c \ pool_passwd.c \ @@ -77,7 +63,7 @@ index ad117a5e..5c5fc838 100644 regex_array.c \ pool_config_variables.c \ pool_config.c \ -@@ -664,8 +663,6 @@ base64.h: ../../../src/include/utils/base64.h +@@ -33,8 +32,6 @@ base64.h: ../../../src/include/utils/base64.h rm -f $@ && ln -s $< . ssl_utils.h: ../../../src/include/utils/ssl_utils.h rm -f $@ && ln -s $< . @@ -86,28 +72,19 @@ index ad117a5e..5c5fc838 100644 regex_array.c: ../../../src/utils/regex_array.c rm -f $@ && ln -s $< . pool_config_variables.c: ../../../src/config/pool_config_variables.c -diff --git a/src/tools/pgmd5/Makefile.in b/src/tools/pgmd5/Makefile.in -index 275f39e5..d3af1e25 100644 ---- a/src/tools/pgmd5/Makefile.in -+++ b/src/tools/pgmd5/Makefile.in -@@ -101,7 +101,7 @@ PROGRAMS = $(bin_PROGRAMS) - am__dirstamp = $(am__leading_dot)dirstamp - dist_pg_md5_OBJECTS = pg_md5.$(OBJEXT) ../fe_port.$(OBJEXT) - nodist_pg_md5_OBJECTS = md5.$(OBJEXT) pool_passwd.$(OBJEXT) \ -- strlcpy.$(OBJEXT) regex_array.$(OBJEXT) \ -+ regex_array.$(OBJEXT) \ - pool_config_variables.$(OBJEXT) pool_config.$(OBJEXT) \ - fe_memutils.$(OBJEXT) pool_path.$(OBJEXT) - pg_md5_OBJECTS = $(dist_pg_md5_OBJECTS) $(nodist_pg_md5_OBJECTS) -@@ -317,7 +317,6 @@ dist_pg_md5_SOURCES = pg_md5.c \ - +diff --git a/src/tools/pgmd5/Makefile.am b/src/tools/pgmd5/Makefile.am +index 1bf535a2a..f6fd04075 100644 +--- a/src/tools/pgmd5/Makefile.am ++++ b/src/tools/pgmd5/Makefile.am +@@ -5,7 +5,6 @@ dist_pg_md5_SOURCES = pg_md5.c \ + ../fe_port.c nodist_pg_md5_SOURCES = md5.c \ pool_passwd.c \ - strlcpy.c \ regex_array.c \ pool_config_variables.c \ pool_config.c \ -@@ -653,8 +652,6 @@ pool_passwd.c: ../../../src/auth/pool_passwd.c +@@ -23,8 +22,6 @@ pool_passwd.c: ../../../src/auth/pool_passwd.c rm -f $@ && ln -s $< . pool_path.c: ../../../src/utils/pool_path.c rm -f $@ && ln -s $< . @@ -116,20 +93,18 @@ index 275f39e5..d3af1e25 100644 regex_array.c: ../../../src/utils/regex_array.c rm -f $@ && ln -s $< . pool_config_variables.c: ../../../src/config/pool_config_variables.c -diff --git a/src/tools/watchdog/Makefile.in b/src/tools/watchdog/Makefile.in -index 3e578b44..c7fbce4e 100644 ---- a/src/tools/watchdog/Makefile.in -+++ b/src/tools/watchdog/Makefile.in -@@ -105,7 +105,7 @@ nodist_wd_cli_OBJECTS = ssl_utils.$(OBJEXT) wd_ipc_conn.$(OBJEXT) \ - wd_commands.$(OBJEXT) json_writer.$(OBJEXT) json.$(OBJEXT) \ - pool_config_variables.$(OBJEXT) pool_config.$(OBJEXT) \ - pool_path.$(OBJEXT) fe_memutils.$(OBJEXT) stringinfo.$(OBJEXT) \ -- strlcpy.$(OBJEXT) socket_stream.$(OBJEXT) \ -+ socket_stream.$(OBJEXT) \ - regex_array.$(OBJEXT) psprintf.$(OBJEXT) md5.$(OBJEXT) - wd_cli_OBJECTS = $(dist_wd_cli_OBJECTS) $(nodist_wd_cli_OBJECTS) - wd_cli_LDADD = $(LDADD) -@@ -359,7 +359,6 @@ nodist_wd_cli_SOURCES = ssl_utils.c \ +diff --git a/src/tools/watchdog/Makefile.am b/src/tools/watchdog/Makefile.am +index 14226aba5..974bd5953 100644 +--- a/src/tools/watchdog/Makefile.am ++++ b/src/tools/watchdog/Makefile.am +@@ -1,5 +1,5 @@ + parser_incdir = $(top_srcdir)/src/include/parser +-AM_CPPFLAGS = -D_GNU_SOURCE -DPOOL_PRIVATE -I $(parser_incdir) -I @PGSQL_INCLUDE_DIR@ ++AM_CPPFLAGS = -D_GNU_SOURCE -DPOOL_PRIVATE -I $(parser_incdir) -I @PGSQL_INCLUDE_DIR@ + bin_PROGRAMS = wd_cli + + bin_SCRIPTS = watchdog_setup +@@ -18,7 +18,6 @@ nodist_wd_cli_SOURCES = ssl_utils.c \ fe_memutils.c \ stringinfo.h \ stringinfo.c \ @@ -137,7 +112,7 @@ index 3e578b44..c7fbce4e 100644 socket_stream.c \ regex_array.c \ psprintf.c \ -@@ -732,8 +731,6 @@ md5.h: ../../../src/include/auth/md5.h +@@ -37,8 +36,6 @@ md5.h: ../../../src/include/auth/md5.h rm -f $@ && ln -s $< . socket_stream.c: ../../../src/utils/socket_stream.c rm -f $@ && ln -s $< . diff --git a/pkgs/by-name/pg/pgpool/package.nix b/pkgs/by-name/pg/pgpool/package.nix index b6acefeccc1f..f9ab88668be0 100644 --- a/pkgs/by-name/pg/pgpool/package.nix +++ b/pkgs/by-name/pg/pgpool/package.nix @@ -1,58 +1,77 @@ { lib, stdenv, - fetchurl, + autoreconfHook, + bison, + fetchFromGitHub, + flex, libpq, - openssl, libxcrypt, - withPam ? stdenv.hostPlatform.isLinux, + openssl, pam, + withPam ? true, }: stdenv.mkDerivation (finalAttrs: { pname = "pgpool-II"; - version = "4.6.4"; + version = "4.7.1"; - src = fetchurl { - url = "https://www.pgpool.net/mediawiki/download.php?f=pgpool-II-${finalAttrs.version}.tar.gz"; - name = "pgpool-II-${finalAttrs.version}.tar.gz"; - hash = "sha256-7w0ukamhHXN8ZHYkchnmefcYvsU1UGRhiVlO+a79KY0="; + src = fetchFromGitHub { + owner = "pgpool"; + repo = "pgpool2"; + tag = "V${lib.replaceString "." "_" finalAttrs.version}"; + hash = "sha256-npH4rhRToPVfKk7XyGGzdRSZMQ+APM8MBKHmd0rzlDw="; }; + patches = [ + # Build checks for strlcpy being available in the system, but doesn't + # actually exclude its own copy from being built + ./darwin-strlcpy.patch + # Fix strchrnul not available on Darwin + ./darwin-strchrnul.patch + ]; + + nativeBuildInputs = [ + autoreconfHook + bison + flex + ]; + buildInputs = [ libpq - openssl libxcrypt + openssl ] ++ lib.optional withPam pam; + env.NIX_CFLAGS_COMPILE = toString ( + lib.optionals (stdenv.cc.isClang) [ + "-Wno-error=implicit-function-declaration" + ] + ); + configureFlags = [ "--sysconfdir=/etc" "--localstatedir=/var" - "--with-openssl" - ] - ++ lib.optional withPam "--with-pam"; + (lib.withFeature true "openssl") + (lib.withFeature withPam "pam") + ]; installFlags = [ "sysconfdir=\${out}/etc" ]; - patches = lib.optionals (stdenv.hostPlatform.isDarwin) [ - # Build checks for strlcpy being available in the system, but doesn't - # actually exclude its own copy from being built - ./darwin-strlcpy.patch - ]; - enableParallelBuilding = true; meta = { - homepage = "https://www.pgpool.net/mediawiki/index.php/Main_Page"; description = "Middleware that works between PostgreSQL servers and PostgreSQL clients"; + homepage = "https://pgpool.net/"; changelog = "https://www.pgpool.net/docs/latest/en/html/release-${ - builtins.replaceStrings [ "." ] [ "-" ] finalAttrs.version + lib.replaceString "." "-" finalAttrs.version }.html"; license = lib.licenses.free; platforms = lib.platforms.unix; maintainers = [ ]; + mainProgram = "pgpool"; }; })