aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-support/postgresql
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-support/postgresql')
-rw-r--r--meta-oe/recipes-support/postgresql/files/postgresql.pam4
-rw-r--r--meta-oe/recipes-support/postgresql/postgresql.inc128
2 files changed, 131 insertions, 1 deletions
diff --git a/meta-oe/recipes-support/postgresql/files/postgresql.pam b/meta-oe/recipes-support/postgresql/files/postgresql.pam
new file mode 100644
index 0000000000..0b6fdc5f26
--- /dev/null
+++ b/meta-oe/recipes-support/postgresql/files/postgresql.pam
@@ -0,0 +1,4 @@
+#%PAM-1.0
+auth include common-auth
+account include common-account
+password include common-password
diff --git a/meta-oe/recipes-support/postgresql/postgresql.inc b/meta-oe/recipes-support/postgresql/postgresql.inc
index 6f51c9110c..e1374fb75f 100644
--- a/meta-oe/recipes-support/postgresql/postgresql.inc
+++ b/meta-oe/recipes-support/postgresql/postgresql.inc
@@ -27,6 +27,7 @@ ARM_INSTRUCTION_SET = "arm"
SRC_URI = "http://ftp.postgresql.org/pub/source/v${PV}/${P}.tar.bz2 \
file://postgresql.init \
file://postgresql-bashprofile \
+ file://postgresql.pam \
"
LEAD_SONAME = "libpq.so"
@@ -34,7 +35,20 @@ LEAD_SONAME = "libpq.so"
# LDFLAGS for shared libraries
export LDFLAGS_SL = "${LDFLAGS}"
-inherit autotools pkgconfig useradd
+inherit autotools pkgconfig perlnative pythonnative useradd update-rc.d
+
+enable_pam = "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+PACKAGECONFIG ??= "${enable_pam} openssl python uuid libxml tcl nls libxml perl"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
+PACKAGECONFIG[python] = "--with-python,--wsithout-python,python,python"
+PACKAGECONFIG[uuid] = "--with-ossp-uuid,--without-ossp-uuid,ossp-uuid,"
+# when tcl native package is fixed change WORKDIR to STAGING_BINDIR_CROSS
+PACKAGECONFIG[tcl] = \
+ "--with-tcl --with-tclconfig=${STAGING_BINDIR_CROSS},--without-tcl,tcl,"
+PACKAGECONFIG[nls] = "--enable-nls,--disable-nls,,"
+PACKAGECONFIG[libxml] = "--with-libxml,--without-libxml,libxml2,libxml2"
+PACKAGECONFIG[perl] = "--with-perl,--without-perl,perl,perl"
EXTRA_OECONF += "--enable-thread-safety --disable-rpath \
--datadir=${datadir}/${BPN} \
@@ -44,6 +58,85 @@ EXTRA_OECONF += "--enable-thread-safety --disable-rpath \
EXTRA_OECONF_sh4 += "--disable-spinlocks"
EXTRA_OECONF_aarch64 += "--disable-spinlocks"
+PACKAGES_DYNAMIC += "^${PN}-plperl ^${PN}-plperl-dbg \
+ ^${PN}-pltcl ^${PN}-pltcl-dbg \
+ ^${PN}-plpython ^${PN}-plpython-dbg \
+"
+
+python populate_packages_prepend() {
+
+ def fill_more(name, dbg=True):
+ if name is None or name.strip() == "":
+ return
+
+ fpack=d.getVar('PACKAGES') or ""
+ fpack="${PN}-" + name + " " + fpack
+ if dbg:
+ fpack="${PN}-" + name + "-dbg" + " " + fpack
+ d.setVar('PACKAGES', fpack)
+
+ conf=(d.getVar('PACKAGECONFIG', True) or "").split()
+ pack=d.getVar('PACKAGES') or ""
+ bb.debug(1, "PACKAGECONFIG=%s" % conf)
+ bb.debug(1, "PACKAGES1=%s" % pack )
+
+ if "perl" in conf :
+ fill_more("plperl")
+
+ if "tcl" in conf:
+ fill_more("pltcl")
+
+ if "python" in conf:
+ fill_more("plpython")
+
+ pack=d.getVar('PACKAGES', True) or ""
+ bb.debug(1, "PACKAGES2=%s" % pack)
+
+}
+
+do_configure() {
+ # do_configure_prepend
+ # make sure configure finds python includdirs with these envs
+ export BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR}
+
+ # do_configure
+ autotools_do_configure
+
+ # do_configure_append
+ # workaround perl package related bugs
+ sed -i -e "s:-L/usr/local/lib:-L=/usr/local/lib:g" \
+ ${S}/src/Makefile.global
+ LIBPNA="\${STAGING_LIBDIR_NATIVE}/perl-native"
+ LIBNA="\${STAGING_LIBDIR_NATIVE}"
+ BLIBNA="\${STAGING_BASE_LIBDIR_NATIVE}"
+ sed -i -e "/^perl_archlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+ ${S}/src/Makefile.global
+ sed -i -e "/^perl_privlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+ ${S}/src/Makefile.global
+ # remove the rpath, replace with correct lib path
+ sed -i \
+ -e "/^perl_embed_ldflags/s:-Wl,-rpath,${LIBNA}::g" \
+ -e "/^perl_embed_ldflags/s:-Wl,-rpath,${BLIBNA}::g" \
+ -e "/^perl_embed_ldflags/s:-Wl,-rpath-link,${LIBNA}::g" \
+ -e "/^perl_embed_ldflags/s:-Wl,-rpath-link,${BLIBNA}::g" \
+ -e "/^perl_embed_ldflags/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+ -e "/^perl_embed_ldflags/s:${LIBNA}:${STAGING_LIBDIR}:g" \
+ -e "/^perl_embed_ldflags/s:${BLIBNA}:${STAGING_BASELIBDIR}:g" \
+ ${S}/src/Makefile.global
+
+ # workaround perl package's libperl.so problem
+ # we are using perlnative so this perl should have same version
+ perl_version=`perl -v 2>/dev/null | \
+ sed -n 's/This is perl.*v[a-z ]*\([0-9]\.[0-9][0-9.]*\).*$/\1/p'`
+ if [ ! -h "${STAGING_LIBDIR}/perl/$perl_version/CORE/libperl.so" -a \
+ ! -h "${STAGING_LIBDIR}/libperl.so" ]; then
+ ln -sf ../../../libperl.so.5 \
+ ${STAGING_LIBDIR}/perl/$perl_version/CORE/libperl.so
+ fi
+}
+
do_compile_append() {
oe_runmake -C contrib all
}
@@ -83,6 +176,11 @@ do_install_append() {
chown -R postgres:postgres ${D}${localstatedir}/lib/${BPN}
# multiple server config directory
install -d -m 700 ${D}${sysconfdir}/default/${BPN}
+
+ if [ "${@d.getVar('enable_pam', True)}" = "pam" ]; then
+ install -d ${D}${sysconfdir}/pam.d
+ install -m 644 ${WORKDIR}/postgresql.pam ${D}${sysconfdir}/pam.d/postgresql
+ fi
}
SSTATE_SCAN_FILES += "Makefile.global"
@@ -102,6 +200,9 @@ FILES_${PN} += "${sysconfdir}/init.d/${BPN}-server \
${libdir}/${BPN}/euc2004_sjis2004.so \
${libdir}/${BPN}/libpqwalreceiver.so \
${libdir}/${BPN}/*_and_*.so \
+ ${@'${sysconfdir}/pam.d/postgresql' \
+ if 'pam' == d.getVar('enable_pam', True) \
+ else ''} \
"
FILES_${PN}-dbg += " ${libdir}/${BPN}/.debug/dict_snowball.so \
@@ -237,3 +338,28 @@ FILES_${PN}-contrib-dbg = " \
"
DESCRIPTION_${PN}-contrib = "The postgresql-contrib package contains \
contributed packages that are included in the PostgreSQL distribution."
+
+FILES_${PN}-pltcl = "${libdir}/${BPN}/pltcl.so ${bindir}/pltcl_delmod \
+ ${binddir}/pltcl_listmod ${bindir}/pltcl_loadmod \
+ ${datadir}/${BPN}/unknown.pltcl"
+FILES_${PN}-pltcl-dbg = "${libdir}/${BPN}/.debug/pltcl.so"
+SUMMARY_${PN}-pltcl = "The Tcl procedural language for PostgreSQL"
+DESCRIPTION_${PN}-pltcl = "PostgreSQL is an advanced Object-Relational \
+ database management system. The postgresql-pltcl package contains the PL/Tcl \
+ procedural language for the backend."
+
+FILES_${PN}-plperl = "${libdir}/${BPN}/plperl.so"
+FILES_${PN}-plperl-dbg = "${libdir}/${BPN}/.debug/plperl.so"
+SUMMARY_${PN}-plperl = "The Perl procedural language for PostgreSQL"
+DESCRIPTION_${PN}-plperl = "PostgreSQL is an advanced Object-Relational \
+ database management system. The postgresql-plperl package contains the \
+ PL/Perl procedural language for the backend."
+
+# In version 8, it will be plpython.so
+# In version 9, it might be plpython{2,3}.so depending on python2 or 3
+FILES_${PN}-plpython = "${libdir}/${BPN}/plpython*.so"
+FILES_${PN}-plpython-dbg = "${libdir}/${BPN}/.debug/plpython*.so"
+SUMMARY_${PN}-plpython = "The Python procedural language for PostgreSQL"
+DESCRIPTION_${PN}-plpython = "PostgreSQL is an advanced Object-Relational \
+ database management system. The postgresql-plpython package contains \
+ the PL/Python procedural language for the backend."