Forráskód Böngészése

add optional pgpool frontend support

Ralf S. Engelschall 21 éve
szülő
commit
1137fb9af9
2 módosított fájl, 50 hozzáadás és 4 törlés
  1. 43 2
      postgresql/postgresql.spec
  2. 7 2
      postgresql/rc.postgresql

+ 43 - 2
postgresql/postgresql.spec

@@ -30,6 +30,7 @@
 %define       V_pgperl          2.0.2
 %define       V_psqlodbc        07.03.0200
 %define       V_slony1          1.0.1
+%define       V_pgpool          2.0.6
 
 #   package information
 Name:         postgresql
@@ -52,6 +53,7 @@ Release:      20040811
 %option       with_compat   no
 %option       with_tcl      no
 %option       with_slony1   no
+%option       with_pgpool   no
 
 #   list of sources
 Source0:      ftp://ftp.postgresql.org/pub/source/v%{V_postgresql}/postgresql-%{V_postgresql}.tar.bz2
@@ -60,8 +62,9 @@ Source2:      ftp://gborg.postgresql.org/pub/libpqxx/stable/libpqxx-%{V_libpqxx}
 Source3:      ftp://gborg.postgresql.org/pub/pgperl/stable/pgperl-%{V_pgperl}.tar.gz
 Source4:      ftp://ftp.us.postgresql.org/odbc/versions/src/psqlodbc-%{V_psqlodbc}.tar.gz
 Source5:      http://developer.postgresql.org/~wieck/slony1/download/slony1-%{V_slony1}.tar.gz
-Source6:      rc.postgresql
-Source7:      pg_migrate
+Source6:      http://www2b.biglobe.ne.jp/~caco/pgpool/pgpool-%{V_pgpool}.tar.gz
+Source7:      rc.postgresql
+Source8:      pg_migrate
 Patch0:       postgresql.patch
 
 #   build information
@@ -125,6 +128,11 @@ AutoReqProv:  no
         url       = http://developer.postgresql.org/~wieck/slony1/download/
         regex     = slony1-(__VER__)\.tar\.gz
     }
+    prog postgresql:pgpool = {
+        version   = %{V_pgpool}
+        url       = http://www2b.biglobe.ne.jp/~caco/pgpool/
+        regex     = pgpool-(__VER__)\.tar\.gz
+    }
 
 %prep
     %setup -q
@@ -142,6 +150,9 @@ AutoReqProv:  no
 %if "%{with_slony1}" == "yes"
     %setup -q -T -D -a 5
 %endif
+%if "%{with_pgpool}" == "yes"
+    %setup -q -T -D -a 6
+%endif
 
     #   adjust source tree
     %{l_shtool} subst \
@@ -288,6 +299,21 @@ AutoReqProv:  no
     ) || exit $?
 %endif
 
+    #   build pgpool frontend
+%if "%{with_pgpool}" == "yes"
+    ( cd pgpool-%{V_pgpool}
+      export CC="%{l_cc}"
+      export CFLAGS="%{l_cflags -O} %{l_cppflags}"
+      export LDFLAGS="%{l_ldflags}"
+      export LIBS="-lgetopt"
+      ./configure \
+          --prefix=%{l_prefix} \
+          --sysconfdir=%{l_prefix}/etc/postgresql \
+          --with-pgsrc=/dummy
+      %{l_make} %{l_mflags}
+    ) || exit $?
+%endif
+
 %install
     rm -rf $RPM_BUILD_ROOT
 
@@ -324,6 +350,7 @@ AutoReqProv:  no
 
     #   create additional directories
     %{l_shtool} mkdir -f -p -m 755 \
+        $RPM_BUILD_ROOT%{l_prefix}/etc/postgresql \
         $RPM_BUILD_ROOT%{l_prefix}/var/postgresql/db \
         $RPM_BUILD_ROOT%{l_prefix}/var/postgresql/run
 
@@ -394,6 +421,19 @@ AutoReqProv:  no
     ) || exit $?
 %endif
 
+    #   install pgpool frontend
+%if "%{with_pgpool}" == "yes"
+    ( cd pgpool-%{V_pgpool}
+      %{l_shtool} install -c -s -m 755 \
+          pgpool $RPM_BUILD_ROOT%{l_prefix}/bin/
+      %{l_shtool} install -c -m 644 \
+          -e "s;\(socket_dir = \).*;\1'%{l_prefix}/var/postgresql/run';" \
+          -e "s;\(backend_socket_dir = \).*;\1'%{l_prefix}/var/postgresql/run';" \
+          -e "s;\(logdir = \).*;\1'%{l_prefix}/var/postgresql/run';" \
+          pgpool.conf.sample $RPM_BUILD_ROOT%{l_prefix}/etc/postgresql/pgpool.conf
+    ) || exit $?
+%endif
+
     #   install run-command script
     %{l_shtool} mkdir -f -p -m 755 \
         $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
@@ -418,6 +458,7 @@ AutoReqProv:  no
     %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
 %if "%{with_server}" == "yes"
         %{l_files_std} `cat perl-openpkg-files` \
+        '%config %{l_prefix}/etc/postgresql/*' \
         '%attr(700,%{l_rusr},%{l_rgrp}) %dir %{l_prefix}/var/postgresql/db' \
         '%attr(755,%{l_rusr},%{l_rgrp}) %dir %{l_prefix}/var/postgresql/run' \
         '%config %{l_prefix}/var/postgresql/db/*.conf'

+ 7 - 2
postgresql/rc.postgresql

@@ -15,6 +15,7 @@
     postgresql_log_numfiles="10"
     postgresql_log_minsize="1M"
     postgresql_log_complevel="9"
+    postgresql_pgpool="no"
 
 %common
     postgresql_opts="-i -h $postgresql_socket_inet -k $postgresql_socket_unix"
@@ -34,16 +35,22 @@
     rcService postgresql enable yes || exit 0
     rcService postgresql active yes && exit 0
     @l_prefix@/bin/pg_ctl start -l $postgresql_log_file -D $postgresql_datadir -o "$postgresql_opts"
+    rcVarIsYes postgresql_pgpool && @l_prefix@/bin/pgpool
 
 %stop -p 400 -u @l_rusr@
     rcService postgresql enable yes || exit 0
     rcService postgresql active no  && exit 0
     @l_prefix@/bin/pg_ctl stop -l $postgresql_log_file -D $postgresql_datadir -m $postgresql_shut_mode
+    rcVarIsYes postgresql_pgpool && @l_prefix@/bin/pgpool stop
 
 %restart -p 400 -u @l_rusr@
     rcService postgresql enable yes || exit 0
     rcService postgresql active no  && exit 0
     @l_prefix@/bin/pg_ctl restart -l $postgresql_log_file -D $postgresql_datadir -o "$postgresql_opts" -m $postgresql_shut_mode
+    if rcVarIsYes postgresql_pgpool; then
+        @l_prefix@/bin/pgpool stop
+        @l_prefix@/bin/pgpool
+    fi
 
 %reload -p 400 -u @l_rusr@
     rcService postgresql enable yes || exit 0
@@ -52,8 +59,6 @@
 
 %daily -u @l_rusr@
     rcService postgresql enable yes || exit 0
-
-    #   rotate logfile
     shtool rotate -f \
         -n ${postgresql_log_numfiles} -s ${postgresql_log_minsize} -d \
         -z ${postgresql_log_complevel} -m 600 -o @l_rusr@ -g @l_rgrp@ \