mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-05-16 08:45:47 +00:00
psqlodbc: Add the new recipe
This package provides a driver that allows ODBC-enabled applications to access PostgreSQL databases. Add ptest support as well. Signed-off-by: Jackie Huang <jackie.huang@windriver.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
parent
8bb4a8bc5b
commit
4b24a6c86c
@ -0,0 +1,26 @@
|
||||
[PATCH] do not use the hardcode libdir
|
||||
|
||||
Upstream-status: Pending
|
||||
|
||||
Signed-off-by: Roy.Li <rongqing.li@windriver.com>
|
||||
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 9b88d4c..df5ad7a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -140,7 +140,7 @@ if test "$with_libpq" != yes; then
|
||||
if test -d "$with_libpq"; then
|
||||
PATH="$PATH:$with_libpq/bin"
|
||||
CPPFLAGS="$CPPFLAGS -I$with_libpq/include"
|
||||
- LDFLAGS="$LDFLAGS -L$with_libpq/lib"
|
||||
+ LDFLAGS="$LDFLAGS -L$with_libpq/${base_libdir}"
|
||||
else
|
||||
if test -x "$with_libpq"; then
|
||||
PG_CONFIG=$with_libpq
|
||||
--
|
||||
2.8.1
|
||||
|
||||
@ -0,0 +1,148 @@
|
||||
Subject: [PATCH] psqlodbc: fixes for ptest support
|
||||
|
||||
* Fix the LIBODBC since we don't use ODBC_CONFIG.
|
||||
* Fix the path for driver.
|
||||
* Add the default info of postgresql server.
|
||||
* Fix the output format for ptest.
|
||||
* Fix the results and exe dir.
|
||||
|
||||
Upstream-Status: Inappropriate [OE ptest specific]
|
||||
|
||||
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
|
||||
---
|
||||
test/Makefile.in | 2 +-
|
||||
test/odbcini-gen.sh | 8 ++++----
|
||||
test/runsuite.c | 26 +++++++++++++-------------
|
||||
3 files changed, 18 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/test/Makefile.in b/test/Makefile.in
|
||||
index 8710616..fcb470e 100644
|
||||
--- a/test/Makefile.in
|
||||
+++ b/test/Makefile.in
|
||||
@@ -18,7 +18,7 @@ CFLAGS = @CFLAGS@
|
||||
ODBC_CONFIG = @ODBC_CONFIG@
|
||||
PROVE = @PROVE@
|
||||
|
||||
-LIBODBC := $(shell $(ODBC_CONFIG) --libs)
|
||||
+LIBODBC = -lodbc
|
||||
|
||||
all: $(TESTBINS) runsuite reset-db
|
||||
|
||||
diff --git a/test/odbcini-gen.sh b/test/odbcini-gen.sh
|
||||
index d2c2c87..6068d9d 100755
|
||||
--- a/test/odbcini-gen.sh
|
||||
+++ b/test/odbcini-gen.sh
|
||||
@@ -6,7 +6,7 @@
|
||||
outini=odbc.ini
|
||||
outinstini=odbcinst.ini
|
||||
|
||||
-drvr=../.libs/psqlodbcw
|
||||
+drvr=@LIBDIR@/psqlodbca
|
||||
driver=${drvr}.so
|
||||
if test ! -e $driver ; then
|
||||
driver=${drvr}.dll
|
||||
@@ -33,10 +33,10 @@ Driver = psqlodbc test driver
|
||||
Trace = No
|
||||
TraceFile =
|
||||
Database = contrib_regression
|
||||
-Servername =
|
||||
-Username =
|
||||
+Servername = localhost
|
||||
+Username = postgres
|
||||
Password =
|
||||
-Port =
|
||||
+Port = 5432
|
||||
ReadOnly = No
|
||||
RowVersioning = No
|
||||
ShowSystemTables = No
|
||||
diff --git a/test/runsuite.c b/test/runsuite.c
|
||||
index 583cf35..fd2a90e 100644
|
||||
--- a/test/runsuite.c
|
||||
+++ b/test/runsuite.c
|
||||
@@ -51,7 +51,7 @@ bailout(const char *fmt, ...)
|
||||
|
||||
/* Given a test program's name, get the test name */
|
||||
void
|
||||
-parse_argument(const char *in, char *testname, char *binname)
|
||||
+parse_argument(const char *in, char *testname, char *binname, const char *inputdir)
|
||||
{
|
||||
const char *basename;
|
||||
#ifdef WIN32
|
||||
@@ -65,7 +65,7 @@ parse_argument(const char *in, char *testname, char *binname)
|
||||
if (strchr(in, DIR_SEP) == NULL)
|
||||
{
|
||||
strcpy(testname, in);
|
||||
- sprintf(binname, "exe%c%s-test", DIR_SEP, in);
|
||||
+ sprintf(binname, "%s%cexe%c%s-test", inputdir, DIR_SEP, DIR_SEP, in);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ int main(int argc, char **argv)
|
||||
failures = 0;
|
||||
for (i = 1, j = 1; i <= numtests; i++, j++)
|
||||
{
|
||||
- parse_argument(argv[j], testname, binname);
|
||||
+ parse_argument(argv[j], testname, binname, inputdir);
|
||||
if (runtest(binname, testname, i, inputdir) != 0)
|
||||
failures++;
|
||||
}
|
||||
@@ -157,29 +157,29 @@ runtest(const char *binname, const char *testname, int testno, const char *input
|
||||
#ifndef WIN32
|
||||
snprintf(cmdline, sizeof(cmdline),
|
||||
"ODBCSYSINI=. ODBCINSTINI=./odbcinst.ini ODBCINI=./odbc.ini "
|
||||
- "%s > results/%s.out",
|
||||
- binname, testname);
|
||||
+ "%s > %s/results/%s.out",
|
||||
+ binname, inputdir, testname);
|
||||
#else
|
||||
snprintf(cmdline, sizeof(cmdline),
|
||||
- "%s > results\\%s.out",
|
||||
- binname, testname);
|
||||
+ "%s > %s/results\\%s.out",
|
||||
+ binname, inputdir, testname);
|
||||
#endif
|
||||
rc = system(cmdline);
|
||||
|
||||
diff = rundiff(testname, inputdir);
|
||||
if (rc != 0)
|
||||
{
|
||||
- printf("not ok %d - %s test returned %d\n", testno, testname, rc);
|
||||
+ printf("FAIL: %d - %s\n\ttest returned %d\n", testno, testname, rc);
|
||||
ret = 1;
|
||||
}
|
||||
else if (diff != 0)
|
||||
{
|
||||
- printf("not ok %d - %s test output differs\n", testno, testname);
|
||||
+ printf("FAIL: %d - %s\n\ttest output differs\n", testno, testname);
|
||||
ret = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
- printf("ok %d - %s\n", testno, testname);
|
||||
+ printf("PASS: %d - %s\n", testno, testname);
|
||||
ret = 0;
|
||||
}
|
||||
fflush(stdout);
|
||||
@@ -196,7 +196,7 @@ rundiff(const char *testname, const char *inputdir)
|
||||
char *result;
|
||||
size_t result_len;
|
||||
|
||||
- snprintf(filename, sizeof(filename), "results/%s.out", testname);
|
||||
+ snprintf(filename, sizeof(filename), "%s/results/%s.out", inputdir, testname);
|
||||
result = slurpfile(filename, &result_len);
|
||||
|
||||
outputno = 0;
|
||||
@@ -244,8 +244,8 @@ rundiff(const char *testname, const char *inputdir)
|
||||
* files and print the smallest diff?
|
||||
*/
|
||||
snprintf(cmdline, sizeof(cmdline),
|
||||
- "diff -c %s/expected/%s.out results/%s.out >> regression.diffs",
|
||||
- inputdir, testname, testname);
|
||||
+ "diff -c %s/expected/%s.out %s/results/%s.out >> regression.diffs",
|
||||
+ inputdir, testname, inputdir, testname);
|
||||
if (system(cmdline) == -1)
|
||||
printf("# diff failed\n");
|
||||
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@ -0,0 +1,118 @@
|
||||
Subject: [PATCH] remove some checks for cross-compiling
|
||||
|
||||
some lib check is not suitable for
|
||||
cross-compiling, so remove them.
|
||||
|
||||
Upstream-Status: Inappropriate [not a real bug,just for cross-compiling]
|
||||
|
||||
Signed-off-by: Song.Li <Song.Li@windriver.com>
|
||||
Signed-off-by: Kai Kang <kai.kang@windriver.com>
|
||||
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
|
||||
---
|
||||
configure.ac | 66 +++++++-----------------------------------------------------
|
||||
1 file changed, 7 insertions(+), 59 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index df5ad7a..b72bd4c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -46,57 +46,19 @@ AC_ARG_WITH(iodbc, [ --with-iodbc[[=DIR]] [[default=no]] DIR is the iODBC bas
|
||||
if test "$with_iodbc" != no; then
|
||||
with_unixodbc=no
|
||||
AC_DEFINE(WITH_IODBC, 1, [Define to 1 to build with iODBC support])
|
||||
- if test "$with_iodbc" = yes; then
|
||||
- AC_PATH_PROGS(ODBC_CONFIG, iodbc-config)
|
||||
- else
|
||||
- ODBC_CONFIG=$with_iodbc
|
||||
- fi
|
||||
- if test ! -x "${ODBC_CONFIG}/bin/iodbc-config"; then
|
||||
- if test ! -x "${ODBC_CONFIG}"; then
|
||||
- AC_MSG_ERROR([iodbc-config not found (required for iODBC build)])
|
||||
- fi
|
||||
- else
|
||||
- ODBC_CONFIG=${ODBC_CONFIG}/bin/iodbc-config
|
||||
- fi
|
||||
fi
|
||||
|
||||
if test "$with_unixodbc" != no; then
|
||||
AC_DEFINE(WITH_UNIXODBC, 1,
|
||||
[Define to 1 to build with unixODBC support])
|
||||
- if test "$with_unixodbc" = yes; then
|
||||
- AC_PATH_PROGS(ODBC_CONFIG, odbc_config)
|
||||
- else
|
||||
- ODBC_CONFIG=$with_unixodbc
|
||||
- fi
|
||||
- if test ! -x "${ODBC_CONFIG}/bin/odbc_config"; then
|
||||
- if test ! -x "${ODBC_CONFIG}"; then
|
||||
- AC_MSG_ERROR([odbc_config not found (required for unixODBC build)])
|
||||
- fi
|
||||
- else
|
||||
- ODBC_CONFIG=${ODBC_CONFIG}/bin/odbc_config
|
||||
- fi
|
||||
fi
|
||||
|
||||
#
|
||||
# ODBC include and library
|
||||
#
|
||||
-
|
||||
-if test "$ODBC_CONFIG" != ""; then
|
||||
- if test "$with_iodbc" != no; then
|
||||
- ODBC_INCLUDE=`${ODBC_CONFIG} --cflags`
|
||||
- CPPFLAGS="$CPPFLAGS ${ODBC_INCLUDE}"
|
||||
- # Linking libiodoc is rather problematic
|
||||
- [ODBC_LIBDIR=`${ODBC_CONFIG} --libs | sed -e "s/^\(-L\|.*[ \t]-L\)\([^ \n\r\f\t]*\).*$/-L\2/"`]
|
||||
- LDFLAGS="$LDFLAGS ${ODBC_LIBDIR}"
|
||||
- else
|
||||
- ODBC_INCLUDE=`${ODBC_CONFIG} --include-prefix`
|
||||
- CPPFLAGS="$CPPFLAGS -I${ODBC_INCLUDE}"
|
||||
- # Linking libodoc is rather problematic
|
||||
- ODBC_LIBDIR=`${ODBC_CONFIG} --lib-prefix`
|
||||
- LDFLAGS="$LDFLAGS -L${ODBC_LIBDIR}"
|
||||
- fi
|
||||
- AC_MSG_NOTICE([using $ODBC_INCLUDE $ODBC_LIBDIR])
|
||||
-fi
|
||||
+ODBC_LIBS="-lodbcinst"
|
||||
+LIBS="$LIBS ${ODBC_LIBS}"
|
||||
+AC_MSG_NOTICE([using $ODBC_INCLUDE $ODBC_LIBS])
|
||||
|
||||
#
|
||||
# SQLCOLATTRIBUTE_SQLLEN check
|
||||
@@ -176,18 +138,10 @@ PGAC_ARG_BOOL(enable, pthreads, yes,
|
||||
# Find libpq headers and libraries
|
||||
#
|
||||
|
||||
-if test -z "$PG_CONFIG"; then
|
||||
- AC_PATH_PROGS(PG_CONFIG, pg_config)
|
||||
-fi
|
||||
-
|
||||
-if test -n "$PG_CONFIG"; then
|
||||
- pg_includedir=`"$PG_CONFIG" --includedir`
|
||||
- pg_libdir=`"$PG_CONFIG" --libdir`
|
||||
- CPPFLAGS="$CPPFLAGS -I$pg_includedir"
|
||||
- LDFLAGS="$LDFLAGS -L$pg_libdir"
|
||||
-fi
|
||||
-
|
||||
-
|
||||
+pg_includedir=""
|
||||
+pg_libdir=""
|
||||
+CPPFLAGS="$CPPFLAGS"
|
||||
+LDFLAGS="$LDFLAGS"
|
||||
|
||||
# 1. Programs
|
||||
|
||||
@@ -211,12 +165,6 @@ if test "$with_iodbc" != no; then
|
||||
[AC_MSG_ERROR([iODBC library "iodbcinst" not found])])
|
||||
fi
|
||||
|
||||
-if test "$enable_pthreads" = yes; then
|
||||
- AC_CHECK_LIB(pthreads, pthread_create,
|
||||
- [],
|
||||
- [AC_CHECK_LIB(pthread, pthread_create)])
|
||||
-fi
|
||||
-
|
||||
AC_CHECK_LIB(pq, PQsetSingleRowMode, [],
|
||||
[AC_MSG_ERROR([libpq library version >= 9.2 is required])])
|
||||
|
||||
--
|
||||
2.8.1
|
||||
|
||||
46
meta-oe/recipes-support/psqlodbc/files/run-ptest
Normal file
46
meta-oe/recipes-support/psqlodbc/files/run-ptest
Normal file
@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
|
||||
BASEDIR="$(dirname $(readlink -f $0))"
|
||||
|
||||
# init and start postgresql server for testing
|
||||
PGDATA="/var/lib/postgresql/data"
|
||||
if [ -f "${PGDATA}/PG_VERSION" ]; then
|
||||
echo "Data directory is not empty! Skip initdb."
|
||||
else
|
||||
echo "Initializing database: "
|
||||
chown -R postgres:postgres ${PGDATA}
|
||||
su -l postgres -c "/usr/bin/initdb --pgdata='$PGDATA'"
|
||||
fi
|
||||
|
||||
SYSV_INIT="/etc/init.d/postgresql-server"
|
||||
if [ -e ${SYSV_INIT} ]; then
|
||||
RESTART_POSTGRESQL="${SYSV_INIT} restart"
|
||||
STOP_POSTGRESQL="${SYSV_INIT} stop"
|
||||
else
|
||||
RESTART_POSTGRESQL="systemctl restart postgresql"
|
||||
STOP_POSTGRESQL="systemctl stop postgresql"
|
||||
fi
|
||||
|
||||
${RESTART_POSTGRESQL} || echo "Failed to restart postgresql, skip the tests."
|
||||
|
||||
if [ ! -d ${BASEDIR}/results ]; then
|
||||
mkdir ${BASEDIR}/results
|
||||
fi
|
||||
|
||||
# Generate odbc config files and reset db
|
||||
${BASEDIR}/odbcini-gen.sh || echo "FAIL: Generate odbc config files"
|
||||
ODBCSYSINI=. ODBCINSTINI=./odbcinst.ini ODBCINI=./odbc.ini \
|
||||
${BASEDIR}/reset-db < ${BASEDIR}/sampletables.sql \
|
||||
|| echo "FAIL: reset db with sample tables"
|
||||
|
||||
# Run the actual tests
|
||||
TESTS=
|
||||
for i in `ls ${BASEDIR}/exe/*-test`; do
|
||||
TESTS="$TESTS $(basename ${i%-test})"
|
||||
done
|
||||
|
||||
${BASEDIR}/runsuite ${TESTS} --inputdir=${BASEDIR}
|
||||
|
||||
# Cleanup
|
||||
${STOP_POSTGRESQL}
|
||||
rm -f regression.diffs odbcinst.ini odbc.ini
|
||||
50
meta-oe/recipes-support/psqlodbc/psqlodbc.inc
Normal file
50
meta-oe/recipes-support/psqlodbc/psqlodbc.inc
Normal file
@ -0,0 +1,50 @@
|
||||
SUMMARY = "ODBC driver for PostgreSQL"
|
||||
DESCRIPTION = "\
|
||||
This package provides a driver that allows ODBC-enabled applications to \
|
||||
access PostgreSQL databases. ODBC is an abstraction layer that allows \
|
||||
applications written for that layer to access databases in a manner \
|
||||
that is relatively independent of the particular database management \
|
||||
system. \
|
||||
. \
|
||||
You need to install this package if you want to use an application that \
|
||||
provides database access through ODBC and you want that application to \
|
||||
access a PostgreSQL database. This package would need to be installed \
|
||||
on the same machine as that client application; the PostgreSQL database \
|
||||
server can be on a different machine and does not need any additional \
|
||||
software to accept ODBC clients. \
|
||||
"
|
||||
SECTION = "libs"
|
||||
HOMEPAGE = "http://psqlodbc.projects.postgresql.org/"
|
||||
|
||||
DEPENDS += "postgresql unixodbc"
|
||||
|
||||
EXTRA_OECONF = "\
|
||||
ac_cv_lib_ltdl_lt_dlopen=no \
|
||||
ac_cv_lib_pq_PQconnectdb=yes \
|
||||
--with-unixodbc=yes \
|
||||
--with-libpq=${STAGING_LIBDIR}/.. \
|
||||
--enable-pthreads \
|
||||
--disable-unicode \
|
||||
LIBS="-lpthread" \
|
||||
"
|
||||
|
||||
inherit autotools pkgconfig ptest
|
||||
|
||||
do_compile_ptest() {
|
||||
oe_runmake -C ${B}/test
|
||||
}
|
||||
|
||||
do_install_ptest() {
|
||||
install -d ${D}${PTEST_PATH}
|
||||
cp -a --no-preserve=ownership ${B}/test/exe ${S}/test/expected ${D}${PTEST_PATH}
|
||||
install -m 0755 ${B}/test/reset-db ${D}${PTEST_PATH}
|
||||
install -m 0755 ${B}/test/runsuite ${D}${PTEST_PATH}
|
||||
install -m 0755 ${S}/test/odbcini-gen.sh ${D}${PTEST_PATH}
|
||||
install -m 0755 ${S}/test/sampletables.sql ${D}${PTEST_PATH}
|
||||
sed -i -e 's|@LIBDIR@|${libdir}|' ${D}${PTEST_PATH}/odbcini-gen.sh
|
||||
}
|
||||
|
||||
FILES_${PN} += "${libdir}"
|
||||
|
||||
# The tests need a local PostgreSQL server running
|
||||
RDEPENDS_${PN}-ptest = "postgresql"
|
||||
14
meta-oe/recipes-support/psqlodbc/psqlodbc_09.05.0300.bb
Normal file
14
meta-oe/recipes-support/psqlodbc/psqlodbc_09.05.0300.bb
Normal file
@ -0,0 +1,14 @@
|
||||
require ${PN}.inc
|
||||
|
||||
LICENSE = "LGPLv2"
|
||||
LIC_FILES_CHKSUM = "file://license.txt;md5=6db3822fc7512e83087ba798da013692"
|
||||
|
||||
SRC_URI = "http://ftp.postgresql.org/pub/odbc/versions/src/${BPN}-${PV}.tar.gz \
|
||||
file://psqlodbc-remove-some-checks-for-cross-compiling.patch \
|
||||
file://psqlodbc-donot-use-the-hardcode-libdir.patch \
|
||||
file://psqlodbc-fix-for-ptest-support.patch \
|
||||
file://run-ptest \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "4c6e0b22187d7bb1c998ffac89e50f6b"
|
||||
SRC_URI[sha256sum] = "9521f328bf28aaaf5c8488dc89792b614f9d6271742c0baf9bb41c97537764a8"
|
||||
Loading…
x
Reference in New Issue
Block a user