dev-java/jdbc-postgresql: Version bump

Test suite built successfully; new test dependency dev-java/xml-commons, sigh

Changelog:
https://jdbc.postgresql.org/documentation/changelog.html#version_9.4-1204

Package-Manager: portage-2.2.23
This commit is contained in:
Andreas Sturmlechner
2015-10-14 20:57:03 +02:00
parent 4251f6b41c
commit 3ce006d7ff
3 changed files with 242 additions and 0 deletions

View File

@@ -5,3 +5,4 @@ DIST postgresql-jdbc-9.2-1004.src.tar.gz 1842921 SHA256 eeadff0d830cd19a4f52a948
DIST postgresql-jdbc-9.3-1100.src.tar.gz 1852465 SHA256 e6be53d4cda04735f5f147d2296acb9a22630b062fa3a4ef894073f23efc6d55 SHA512 43968a62f9443739721016ede186b2f41fa6db2d1ef319cd65059f8715e90eda7c7f568995b293578c39e04d43085cfdfece587500f99ed1a49964c12d8c747a WHIRLPOOL 9bf218936a00df00fb4b4f6ed6c3bbe06cdcfcd14d306a4f7bf3073e83f1c51bc85c0a061c2e04790bcebf9183b8aabd056522fa5d18b0734a4aec34b3ab14a0
DIST postgresql-jdbc-9.4-1201.src.tar.gz 1909810 SHA256 96b079611038c0ffff6bb8d22d51ada0cb82c8eb3bd3a9294055963cc638fda7 SHA512 6fd543e325de931ee6c33fe4b1daf53d7baa91061afc9dc1687c4b202430cbcf2a7e3fb047f9e1d88f4d39b8f4f85a98f2b930205ceba414212dfcbaaf108883 WHIRLPOOL 3245227c875d44d82109a5700e06ed3d5bcc75469cd9333c98a7b396b2db1e2ac1da002db19f632afed262929cd7e9a3d8f93d2b24321e103b815383f8fc0a05
DIST postgresql-jdbc-9.4-1203.src.tar.gz 1909858 SHA256 ce2fd309778d9453f012fa85c99071b42cbd62f3ce06d53a4b8aaeb53ac51322 SHA512 9ac059714fb411cf52b1a03ce4991179cc032f17060e733c454f0e41bd8da64c64e718ec131a7d875e334719fd572452c77dbed9ba119eca6cf2f066a3511013 WHIRLPOOL c8581872dfe1495deef2335def51e54d7094c26c6034f26220a63bb657c452181ba996fd6def975d7532dc87a7dba49dd8111c07f9c8e9823917988fd36c9609
DIST postgresql-jdbc-9.4-1204.src.tar.gz 2018904 SHA256 c22862ce505c501115e9f72ae10cd8b5a02ff7f8c7c2f1475f4035b3c85f170b SHA512 659e60fe3ea54f87396d9f32521799d78381a87530c167e903820f3990facc04f3e145685a9c40d74ba3167a404c144fefa781568b9cea2910399cfe2632f25e WHIRLPOOL e5703de1053b5136656c496b4d9518b8044d6a27d431d054d1c48101364b6a999cb4c97295aecca99edf8cb80bf3b2a4b60b740901b9c3f15340eb51197e9cc1

View File

@@ -0,0 +1,138 @@
--- a/org/postgresql/core/v3/ConnectionFactoryImpl.java 2015-10-09 20:55:53.000000000 +0200
+++ b/org/postgresql/core/v3/ConnectionFactoryImpl.java 2015-10-14 20:42:48.816753341 +0200
@@ -32,7 +32,6 @@
import org.postgresql.hostchooser.HostChooserFactory;
import org.postgresql.hostchooser.HostRequirement;
import org.postgresql.hostchooser.HostStatus;
-import org.postgresql.sspi.SSPIClient;
import org.postgresql.util.GT;
import org.postgresql.util.HostSpec;
import org.postgresql.util.MD5Digest;
@@ -394,11 +393,7 @@
// or an authentication request
String password = PGProperty.PASSWORD.get(info);
-
- /* SSPI negotiation state, if used */
- SSPIClient sspiClient = null;
- try {
authloop:
while (true)
{
@@ -514,88 +509,16 @@
case AUTH_REQ_SSPI:
/*
* Use GSSAPI if requested on all platforms, via JSSE.
- *
- * For SSPI auth requests, if we're on Windows attempt native SSPI
- * authentication if available, and if not disabled by setting a
- * kerberosServerName. On other platforms, attempt JSSE GSSAPI
- * negotiation with the SSPI server.
- *
- * Note that this is slightly different to libpq, which uses SSPI
- * for GSSAPI where supported. We prefer to use the existing Java
- * JSSE Kerberos support rather than going to native (via JNA) calls
- * where possible, so that JSSE system properties etc continue
- * to work normally.
- *
- * Note that while SSPI is often Kerberos-based there's no guarantee
- * it will be; it may be NTLM or anything else. If the client responds
- * to an SSPI request via GSSAPI and the other end isn't using Kerberos
- * for SSPI then authentication will fail.
*/
- final String gsslib = PGProperty.GSS_LIB.get(info);
- final boolean usespnego = PGProperty.USE_SPNEGO.getBoolean(info);
-
- boolean useSSPI = false;
+ org.postgresql.gss.MakeGSS.authenticate(pgStream, host,
+ user, password,
+ PGProperty.JAAS_APPLICATION_NAME.get(info),
+ PGProperty.KERBEROS_SERVER_NAME.get(info),
+ logger,
+ PGProperty.USE_SPNEGO.getBoolean(info));
+
+ break;
- /*
- * Use SSPI if we're in auto mode on windows and have a
- * request for SSPI auth, or if it's forced. Otherwise
- * use gssapi. If the user has specified a Kerberos server
- * name we'll always use JSSE GSSAPI.
- */
- if (gsslib.equals("gssapi"))
- logger.debug("Using JSSE GSSAPI, param gsslib=gssapi");
- else if (areq == AUTH_REQ_GSS && !gsslib.equals("sspi"))
- logger.debug("Using JSSE GSSAPI, gssapi requested by server and gsslib=sspi not forced");
- else
- {
- /* Determine if SSPI is supported by the client */
- sspiClient = new SSPIClient(pgStream,
- PGProperty.SSPI_SERVICE_CLASS.get(info),
- /* Use negotiation for SSPI, or if explicitly requested for GSS */
- areq == AUTH_REQ_SSPI || (areq == AUTH_REQ_GSS && usespnego),
- logger);
-
- useSSPI = sspiClient.isSSPISupported();
- logger.debug("SSPI support detected: " + useSSPI);
-
- if (!useSSPI) {
- /* No need to dispose() if no SSPI used */
- sspiClient = null;
-
- if (gsslib.equals("sspi"))
- throw new PSQLException("SSPI forced with gsslib=sspi, but SSPI not available; set loglevel=2 for details",
- PSQLState.CONNECTION_UNABLE_TO_CONNECT);
- }
-
- logger.debug("Using SSPI: " + useSSPI + ", gsslib="+gsslib+" and SSPI support detected");
- }
-
- if (useSSPI)
- {
- /* SSPI requested and detected as available */
- sspiClient.startSSPI();
- }
- else
- {
- /* Use JGSS's GSSAPI for this request */
- org.postgresql.gss.MakeGSS.authenticate(pgStream, host,
- user, password,
- PGProperty.JAAS_APPLICATION_NAME.get(info),
- PGProperty.KERBEROS_SERVER_NAME.get(info),
- logger,
- usespnego);
- }
-
- break;
-
- case AUTH_REQ_GSS_CONTINUE:
- /*
- * Only called for SSPI, as GSS is handled by an inner loop
- * in MakeGSS.
- */
- sspiClient.continueSSPI(l_msgLen - 8);
- break;
-
case AUTH_REQ_OK:
/* Cleanup after successful authentication */
if (logger.logDebug())
@@ -616,18 +539,6 @@
throw new PSQLException(GT.tr("Protocol error. Session setup failed."), PSQLState.PROTOCOL_VIOLATION);
}
}
- } finally {
- /* Cleanup after successful or failed authentication attempts */
- if (sspiClient != null)
- {
- try {
- sspiClient.dispose();
- } catch (RuntimeException ex) {
- logger.log("Unexpected error during SSPI context disposal", ex);
- }
-
- }
- }
}

View File

@@ -0,0 +1,103 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI="5"
JAVA_PKG_IUSE="doc source"
inherit eutils java-pkg-2 java-ant-2
MY_PN="postgresql-jdbc"
MY_PV="${PV/_p/-}"
MY_P="${MY_PN}-${MY_PV}.src"
DESCRIPTION="JDBC Driver for PostgreSQL"
SRC_URI="http://jdbc.postgresql.org/download/${MY_P}.tar.gz"
HOMEPAGE="http://jdbc.postgresql.org/"
LICENSE="POSTGRESQL"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
IUSE="test"
DEPEND="
>=virtual/jdk-1.6
doc? (
dev-libs/libxslt
app-text/docbook-xsl-stylesheets
)
test? (
>=dev-db/postgresql-9.3[server]
dev-java/ant-junit
dev-java/junit:4
dev-java/xml-commons
)"
RDEPEND=">=virtual/jre-1.6"
RESTRICT="test" # Requires external postgresql server setup
S="${WORKDIR}/postgresql-jdbc-${MY_PV}.src"
java_prepare() {
# Strip build.xml of maven deps
sed -i -e '/<classpath.*dependency\.compile\.classpath/c\' build.xml || die
sed -i -e '/<classpath.*dependency\.runtime\.classpath/c\' build.xml || die
sed -i -e '/<classpath.*dependency\.test\.classpath/c\' build.xml || die
sed -i -e '/<target name="artifact-version"/,/<[/]target>/{s/depends="maven-dependencies"//}' build.xml || die
sed -i -e '/<target name="compile"/ s/,maven-dependencies//' build.xml || die
# Remove SSPI, it pulls in Waffle-JNA and is only used on Windows
sed -i -e '/<include.*sspi/c\' build.xml || die
rm -vrf org/postgresql/sspi || die "Error removing sspi"
epatch "${FILESDIR}"/${PN}-9.4_p1204-remove-sspi.patch
# FIXME @someone who cares: enable through osgi flag?
sed -i -e '/<include.*osgi/c\' build.xml || die
sed -i -e '/<test.*osgi/c\' build.xml || die
rm -vrf org/postgresql/osgi || die "Error removing osgi"
rm -vrf org/postgresql/test/osgi || die "Error removing osgi tests"
epatch "${FILESDIR}"/${PN}-9.4_p1201-remove-osgi.patch
java-pkg_clean
}
JAVA_ANT_REWRITE_CLASSPATH="yes"
EANT_DOC_TARGET="publicapi"
src_compile() {
EANT_BUILD_TARGET="release-version jar"
java-pkg-2_src_compile
# There is a task that creates this doc but I didn't find a way how to use system catalog
# to lookup the stylesheet so the 'doc' target is rewritten here to use system call instead.
if use doc; then
mkdir -p "${S}/build/doc" || die
xsltproc -o "${S}/build/doc/pgjdbc.html" http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl \
"${S}/doc/pgjdbc.xml" || die
fi
}
src_test() {
einfo "In order to run the tests successfully, you have to have:"
einfo "1) PostgreSQL server running"
einfo "2) database 'test' defined with user 'test' with password 'test'"
einfo " as owner of the database"
einfo "3) plpgsql support in the 'test' database"
einfo
einfo "You can find a general info on how to perform these steps at"
einfo "https://wiki.gentoo.org/wiki/PostgreSQL"
ANT_TASKS="ant-junit" eant test -Dgentoo.classpath=$(java-pkg_getjars --build-only "junit-4,xml-commons")
}
src_install() {
java-pkg_newjar build/jars/postgresql*.jar jdbc-postgresql.jar
if use doc ; then
java-pkg_dojavadoc build/publicapi
dohtml build/doc/pgjdbc.html
fi
use source && java-pkg_dosrc org
}