postgresql: enable some bindings

1. Enable pam, openssl, python, uuid, libxml, tcl, nls, libxml and perl bindings.
2. Make plperl, plpython, pltcl subpackages as dynamic in case other packages runtime
depend on them.

Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Chong.Lu@windriver.com
2014-04-22 15:07:28 +08:00
committed by Martin Jansa
parent 791e294356
commit 2726a6c88d
2 changed files with 131 additions and 1 deletions
@@ -0,0 +1,4 @@
#%PAM-1.0
auth include common-auth
account include common-account
password include common-password
@@ -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."