summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Kajaba <pkajaba@redhat.com>2016-04-07 10:56:40 +0200
committerPavel Kajaba <pkajaba@redhat.com>2016-04-07 10:56:40 +0200
commit76a9922e928c274794f31b47b49888561f593632 (patch)
tree8e197454463e651190f01afccf528809fb9340e3
parent16ed82e6660901304b5016b9c291fde6d9aac1ab (diff)
downloadpostgresql-jdbc-76a9922e928c274794f31b47b49888561f593632.tar.gz
postgresql-jdbc-76a9922e928c274794f31b47b49888561f593632.tar.xz
postgresql-jdbc-76a9922e928c274794f31b47b49888561f593632.zip
Update to version 1208HEADmaster
-rw-r--r--0001-Disable-SSPI-under-Linux.patch113
-rw-r--r--SSPIClient.patch268
-rw-r--r--build.patch154
-rw-r--r--postgresql-jdbc.pom23
-rw-r--r--postgresql-jdbc.spec88
5 files changed, 148 insertions, 498 deletions
diff --git a/0001-Disable-SSPI-under-Linux.patch b/0001-Disable-SSPI-under-Linux.patch
new file mode 100644
index 0000000..c1e1aca
--- /dev/null
+++ b/0001-Disable-SSPI-under-Linux.patch
@@ -0,0 +1,113 @@
+diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java b/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
+index fec5bb0..f6d81d5 100644
+--- a/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
++++ b/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
+@@ -24,7 +24,7 @@ import org.postgresql.hostchooser.HostChooser;
+ import org.postgresql.hostchooser.HostChooserFactory;
+ import org.postgresql.hostchooser.HostRequirement;
+ import org.postgresql.hostchooser.HostStatus;
+-import org.postgresql.sspi.SSPIClient;
++import org.postgresql.sspi.ISSPIClient;
+ import org.postgresql.util.GT;
+ import org.postgresql.util.HostSpec;
+ import org.postgresql.util.MD5Digest;
+@@ -68,6 +68,38 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
+ private static class UnsupportedProtocolException extends IOException {
+ }
+
++
++ private ISSPIClient SSPIfactory(PGStream pgStream,
++ String spnServiceClass,
++ boolean enableNegotiate,
++ Logger logger) {
++ // arguments to initialize windows version of class
++ Class[] cArg = new Class[4];
++ cArg[0] = PGStream.class;
++ cArg[1] = String.class;
++ cArg[2] = boolean.class;
++ cArg[3] = Logger.class;
++
++ Class c = null;
++ String osName = System.getProperty("os.name");
++ if (osName.startsWith("Linux")) {
++ try {
++ c = Class.forName("org.postgresql.sspi.ISSPIClient");
++ return (ISSPIClient) c.getDeclaredConstructor().newInstance();
++ } catch (Throwable e) {
++ logger.info("Unable to find SSPI class for Linux", e);
++ }
++ } else {
++ try {
++ c = Class.forName("org.postgresql.sspi.SSPIClient");
++ return (ISSPIClient) c.getDeclaredConstructor(cArg).newInstance(pgStream, spnServiceClass, enableNegotiate, logger);
++ } catch (Throwable e) {
++ logger.info("Unable to find SSPI class for Linux", e);
++ }
++ }
++ return null;
++ }
++
+ public ProtocolConnection openConnectionImpl(HostSpec[] hostSpecs, String user, String database,
+ Properties info, Logger logger) throws SQLException {
+ // Extract interesting values from the info properties:
+@@ -404,7 +436,7 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
+ String password = PGProperty.PASSWORD.get(info);
+
+ /* SSPI negotiation state, if used */
+- SSPIClient sspiClient = null;
++ ISSPIClient sspiClient = null;
+
+ try {
+ authloop: while (true) {
+@@ -563,7 +595,7 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
+ "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),
++ sspiClient = SSPIfactory(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);
+
+diff --git a/pgjdbc/src/main/java/org/postgresql/sspi/ISSPIClient.java b/pgjdbc/src/main/java/org/postgresql/sspi/ISSPIClient.java
+new file mode 100644
+index 0000000..27add44
+--- /dev/null
++++ b/pgjdbc/src/main/java/org/postgresql/sspi/ISSPIClient.java
+@@ -0,0 +1,37 @@
++package org.postgresql.sspi;
++
++import java.io.IOException;
++import java.sql.SQLException;
++
++import org.postgresql.core.Logger;
++import org.postgresql.core.PGStream;
++import org.postgresql.util.HostSpec;
++import org.postgresql.util.PSQLException;
++import org.postgresql.util.PSQLState;
++
++/**
++ * Use Waffle-JNI to support SSPI authentication when PgJDBC is running on a Windows
++ * client and talking to a Windows server.
++ *
++ * SSPI is not supported on a non-Windows client.
++ *
++ *
++ * @author craig
++ *
++ */
++public class ISSPIClient {
++
++ public boolean isSSPISupported() {
++ return false;
++ }
++
++ public void startSSPI() throws SQLException, IOException {
++ }
++
++ public void continueSSPI(int msgLength) throws SQLException, IOException {
++ }
++
++ public void dispose() {
++ }
++
++}
diff --git a/SSPIClient.patch b/SSPIClient.patch
deleted file mode 100644
index 8d37658..0000000
--- a/SSPIClient.patch
+++ /dev/null
@@ -1,268 +0,0 @@
-diff --git a/org/postgresql/sspi/SSPIClient.java b/org/postgresql/sspi/SSPIClient.java
-index 208018a..f71e8c9 100644
---- a/org/postgresql/sspi/SSPIClient.java
-+++ b/org/postgresql/sspi/SSPIClient.java
-@@ -9,23 +9,8 @@ import org.postgresql.util.HostSpec;
- import org.postgresql.util.PSQLException;
- import org.postgresql.util.PSQLState;
-
--import com.sun.jna.LastErrorException;
--import com.sun.jna.Platform;
--import com.sun.jna.platform.win32.Sspi;
--import com.sun.jna.platform.win32.Sspi.SecBufferDesc;
--import com.sun.jna.platform.win32.Win32Exception;
--
--import waffle.windows.auth.IWindowsAuthProvider;
--import waffle.windows.auth.IWindowsCredentialsHandle;
--import waffle.windows.auth.IWindowsSecurityContext;
--import waffle.windows.auth.impl.WindowsAccountImpl;
--import waffle.windows.auth.impl.WindowsAuthProviderImpl;
--import waffle.windows.auth.impl.WindowsCredentialsHandleImpl;
--import waffle.windows.auth.impl.WindowsSecurityContextImpl;
--
- /**
-- * Use Waffle-JNI to support SSPI authentication when PgJDBC is running on a Windows
-- * client and talking to a Windows server.
-+ * Empty class
- *
- * SSPI is not supported on a non-Windows client.
- *
-@@ -35,227 +20,59 @@ import waffle.windows.auth.impl.WindowsSecurityContextImpl;
- */
- public class SSPIClient {
-
-- public static String SSPI_DEFAULT_SPN_SERVICE_CLASS = "POSTGRES";
--
-- private final Logger logger;
-- private final PGStream pgStream;
-- private final String spnServiceClass;
-- private final boolean enableNegotiate;
--
-- private IWindowsCredentialsHandle clientCredentials;
-- private WindowsSecurityContextImpl sspiContext;
-- private String targetName;
--
--
- /**
- * Instantiate an SSPIClient for authentication of a connection.
- *
-- * SSPIClient is not re-usable across connections.
-- *
-- * It is safe to instantiate SSPIClient even if Waffle and JNA are missing
-- * or on non-Windows platforms, however you may not call any methods other than
-- * isSSPISupported().
-- *
- * @param pgStream PostgreSQL connection stream
-+ *
- * @param spnServiceClass SSPI SPN service class, defaults to POSTGRES if null
- * @param logger
- */
- public SSPIClient(PGStream pgStream,
- String spnServiceClass,
- boolean enableNegotiate,
-- Logger logger) {
-- this.logger = logger;
-- this.pgStream = pgStream;
--
-- /* If blank or unspecified, SPN service class should be POSTGRES */
-- String realServiceClass = spnServiceClass;
-- if (spnServiceClass != null && spnServiceClass.isEmpty())
-- spnServiceClass = null;
-- if (spnServiceClass == null)
-- spnServiceClass = SSPI_DEFAULT_SPN_SERVICE_CLASS;
-- this.spnServiceClass = spnServiceClass;
--
-- /* If we're forcing Kerberos (no spnego), disable SSPI negotiation */
-- this.enableNegotiate = enableNegotiate;
-- }
-+ Logger logger) {}
-
- /**
-- * Test whether we can attempt SSPI authentication. If false,
-+ * Empty method, since there is no support for SSPI in Linux. If false,
- * do not attempt to call any other SSPIClient methods.
- *
-- * @return true if it's safe to attempt SSPI authentication
-+ * @return always false
- */
- public boolean isSSPISupported() {
-- try {
-- /*
-- * SSPI is windows-only. Attempt to use JNA to identify the platform.
-- * If Waffle is missing we won't have JNA and this will throw a
-- * NoClassDefFoundError.
-- */
-- if (!Platform.isWindows())
-- {
-- logger.debug("SSPI not supported: non-Windows host");
-- return false;
-- }
-- /* Waffle must be on the CLASSPATH */
-- Class.forName("waffle.windows.auth.impl.WindowsSecurityContextImpl");
-- return true;
-- } catch (NoClassDefFoundError ex) {
-- if (logger.logDebug())
-- logger.debug("SSPI unavailable (no Waffle/JNA libraries?)", ex);
-- return false;
-- } catch (ClassNotFoundException ex) {
-- if (logger.logDebug())
-- logger.debug("SSPI unavailable (no Waffle/JNA libraries?)", ex);
-- return false;
-- }
-+ return false;
- }
-
-- private String makeSPN() throws PSQLException
-- {
-- final HostSpec hs = pgStream.getHostSpec();
--
-- try {
-- return NTDSAPIWrapper.instance.DsMakeSpn(
-- spnServiceClass, hs.getHost(),
-- null, (short)hs.getPort(), null);
-- } catch (LastErrorException ex) {
-- throw new PSQLException("SSPI setup failed to determine SPN",
-- PSQLState.CONNECTION_UNABLE_TO_CONNECT, ex);
-- }
-+ private String makeSPN() throws PSQLException{
-+ return "";
- }
-
-
- /**
-- * Respond to an authentication request from the back-end
-- * for SSPI authentication (AUTH_REQ_SSPI).
-+ * Not supported on Linux does nothing.
- *
- * @throws SQLException on SSPI authentication handshake failure
- * @throws IOException on network I/O issues
- */
- public void startSSPI() throws SQLException, IOException {
--
-- /*
-- * We usually use SSPI negotiation (spnego), but it's disabled if the client
-- * asked for GSSPI and usespngo isn't explicitly turned on.
-- */
-- final String securityPackage = enableNegotiate ? "negotiate" : "kerberos";
--
-- logger.debug("Beginning SSPI/Kerberos negotiation with SSPI package: " + securityPackage);
--
-- try {
-- /*
-- * Acquire a handle for the local Windows login credentials for the current user
-- *
-- * See AcquireCredentialsHandle (http://msdn.microsoft.com/en-us/library/windows/desktop/aa374712%28v=vs.85%29.aspx)
-- *
-- * This corresponds to pg_SSPI_startup in libpq/fe-auth.c .
-- */
-- try {
-- clientCredentials = WindowsCredentialsHandleImpl.getCurrent(securityPackage);
-- clientCredentials.initialize();
-- } catch (Win32Exception ex) {
-- throw new PSQLException(
-- "Could not obtain local Windows credentials for SSPI",
-- PSQLState.CONNECTION_UNABLE_TO_CONNECT /* TODO: Should be authentication error */,
-- ex);
-- }
--
-- try {
-- targetName = makeSPN();
--
-- if (logger.logDebug())
-- {
-- logger.debug("SSPI target name: " + targetName);
-- }
--
-- sspiContext = new WindowsSecurityContextImpl();
-- sspiContext.setPrincipalName(targetName);
-- sspiContext.setCredentialsHandle(clientCredentials.getHandle());
-- sspiContext.setSecurityPackage(securityPackage);
-- sspiContext.initialize(null, null, targetName);
-- } catch (Win32Exception ex) {
-- throw new PSQLException(
-- "Could not initialize SSPI security context",
-- PSQLState.CONNECTION_UNABLE_TO_CONNECT /* TODO: Should be auth error */,
-- ex);
-- }
--
-- sendSSPIResponse(sspiContext.getToken());
-- logger.debug("Sent first SSPI negotiation message");
-- } catch (NoClassDefFoundError ex) {
-- throw new PSQLException(
-- "SSPI cannot be used, Waffle or its dependencies are missing from the classpath",
-- PSQLState.NOT_IMPLEMENTED, ex);
-- }
- }
-
- /**
-- * Continue an existing authentication conversation with
-- * the back-end in resonse to an authentication request
-- * of type AUTH_REQ_GSS_CONT.
-- *
-+ * Not supported on Linux does nothing.
-+ *
- * @param msgLength Length of message to read, excluding length word and message type word
- * @throws SQLException
- * @throws IOException
- */
- public void continueSSPI(int msgLength) throws SQLException, IOException {
--
-- if (sspiContext == null)
-- throw new IllegalStateException(
-- "Cannot continue SSPI authentication that we didn't begin");
--
-- logger.debug("Continuing SSPI negotiation");
--
-- /* Read the response token from the server */
-- byte[] receivedToken = pgStream.Receive(msgLength);
--
-- SecBufferDesc continueToken = new SecBufferDesc(Sspi.SECBUFFER_TOKEN, receivedToken);
--
-- sspiContext.initialize(sspiContext.getHandle(), continueToken, targetName);
--
-- /*
-- * Now send the response token. If negotiation is complete
-- * there may be zero bytes to send, in which case we shouldn't
-- * send a reply as the server is not expecting one; see fe-auth.c
-- * in libpq for details.
-- */
-- byte[] responseToken = sspiContext.getToken();
-- if (responseToken.length > 0)
-- {
-- sendSSPIResponse(responseToken);
-- logger.debug("Sent SSPI negotiation continuation message");
-- } else {
-- logger.debug("SSPI authentication complete, no reply required");
-- }
- }
-
- private void sendSSPIResponse(byte[] outToken) throws IOException {
-- /*
-- * The sspiContext now contains a token we can send to the server to
-- * start the handshake. Send a 'password' message containing the
-- * required data; the server knows we're doing SSPI negotiation
-- * and will deal with it appropriately.
-- */
-- pgStream.SendChar('p');
-- pgStream.SendInteger4(4 + outToken.length);
-- pgStream.Send(outToken);
-- pgStream.flush();
- }
-
- /**
-- * Clean up native win32 resources after completion or failure of
-- * SSPI authentication. This SSPIClient instance becomes unusable
-- * after disposal.
-+ * Not supported on Linux does nothing.
- */
- public void dispose() {
-- if (sspiContext != null) {
-- sspiContext.dispose();
-- sspiContext = null;
-- }
-- if (clientCredentials != null) {
-- clientCredentials.dispose();
-- clientCredentials = null;
-- }
- }
- }
diff --git a/build.patch b/build.patch
deleted file mode 100644
index 1e5f54a..0000000
--- a/build.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-diff --git a/build.xml b/build.xml
-index a93eaae..399fd4d 100644
---- a/build.xml
-+++ b/build.xml
-@@ -79,18 +79,14 @@
- <!-- ssl -->
- <include name="${package}/ssl/**" />
-
-- <!-- gss and sspi -->
-+ <!-- gss -->
- <include name="${package}/gss/*.java"/>
-- <include name="${package}/sspi/*.java"/>
-
- <!-- datasource stuff -->
- <include name="${package}/ds/**"/>
-
- <!-- XA stuff -->
- <include name="${package}/xa/**"/>
--
-- <!-- OSGi package -->
-- <include name="${package}/osgi/*.java"/>
- </patternset>
-
- <property name="waffle-jna.version" value="1.7" />
-@@ -218,18 +214,6 @@
- </artifact:dependencies>
-
- <!--
-- These are used for test compilation and for test running only. They aren't
-- exposed to javac during the main driver compilation.
-- -->
-- <artifact:dependencies pathId="dependency.test.classpath"
-- filesetId="dependency.test.fileset"
-- useScope="test"
-- pomRefId="org.postgresql:postgresql:pom">
-- <remoteRepository id="${maven.remote.repository.id}"
-- url="${maven.remote.repository.url}"/>
-- </artifact:dependencies>
--
-- <!--
- These are used for building only and are only exposed for ant script
- -->
- <artifact:dependencies pathId="dependency.build.classpath">
-@@ -354,13 +338,8 @@
-
- <!-- create the jar file -->
- <target name="jar" depends="compile, artifact-version">
-- <property name="temp.jar.dir" value="${builddir}/${jardir}"/>
- <property name="artifact.jar" value="${jardir}/${artifact.version.string}.jar"/>
-- <property name="artifact.jar.build" value="${temp.jar.dir}/${artifact.version.string}.jar"/>
--
-- <mkdir dir="${temp.jar.dir}" />
--
-- <jar jarfile="${artifact.jar.build}">
-+ <jar jarfile="${artifact.jar}">
- <fileset dir="${builddir}">
- <include name="${package}/**/*.class" />
- </fileset>
-@@ -383,34 +362,6 @@
- <attribute name="Implementation-Vendor" value="PostgreSQL Global Development Group" />
- </manifest>
- </jar>
--
-- <!-- add OSGi meta information -->
-- <property name="osgidir" value="${builddir}/osgi"/>
-- <mkdir dir="${osgidir}"/>
--
-- <!-- create a bnd file named after the JAR file so that bnd wrap tool find it -->
-- <echo file="${osgidir}/${artifact.version.string}.bnd">
--Bundle-ManifestVersion: 2
--
--Bundle-Name: PostgreSQL JDBC Driver ${jdbc.version.upper}
--Bundle-SymbolicName: org.postgresql.${jdbc.version}
--Bundle-Version: ${osgi.version}
--
--Bundle-Vendor: PostgreSQL Global Development Group
--Bundle-Copyright: Copyright (c) 2003-2015, PostgreSQL Global Development Group
--Bundle-License: http://www.postgresql.org/about/licence/
--Bundle-DocURL: http://jdbc.postgresql.org/
--
--Bundle-Classpath: .
--Bundle-Activator: org.postgresql.osgi.PGBundleActivator
--Require-Capability: osgi.ee;filter:="(&amp;(|(osgi.ee=J2SE)(osgi.ee=JavaSE))(version>=${java.specification.version}))"
--Export-Package: org.postgresql*; version=${fullversion}
--Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=optional
-- </echo>
--
-- <!-- run wrap task from bnd -->
-- <taskdef resource="aQute/bnd/ant/taskdef.properties" classpathref="dependency.build.classpath"/>
-- <bndwrap jars="${artifact.jar.build}" output="${artifact.jar}" definitions="${osgidir}"/>
- </target>
-
- <!-- create a distribution with docs, dependencies, and driver jar -->
-@@ -469,14 +420,13 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
- </zip>
- </target>
-
-- <target name="compile" depends="prepare,check_versions,driver,maven-dependencies">
-+ <target name="compile" depends="prepare,check_versions,driver">
-
- <available classname="org.postgresql.Driver" property="old.driver.present" />
- <fail message="Old driver was detected on classpath or in jre/lib/ext, please remove and try again." if="old.driver.present" />
-
- <javac classpath="${srcdir}" srcdir="${srcdir}" destdir="${builddir}"
- debug="${debug}" debuglevel="lines,vars,source" source="${java.specification.version}" includeantruntime="false">
-- <classpath refid="dependency.compile.classpath"/>
- <!-- Do NOT add dependency.test here, we should not depend on junit -->
- <!-- Similarly, omit dependency.runtime, we're intentionally not compiling against those libs -->
- <patternset refid="jdbc.version.src.pattern"/>
-@@ -663,13 +613,11 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
-
- <!-- This compiles and builds the test jarfile. -->
- <target name="testjar" depends="snapshot-version, jar">
-+ <fail message="JUnit could not be found in your classpath. You must download and install it from http://junit.org to build and run the test suite." unless="junit" />
- <mkdir dir="${builddir}/tests"/>
- <javac srcdir="${srcdir}" destdir="${builddir}/tests" debug="${debug}"
- debuglevel="lines,vars,source"
- source="${java.specification.version}" includeantruntime="false">
-- <classpath refid="dependency.compile.classpath" />
-- <classpath refid="dependency.runtime.classpath" />
-- <classpath refid="dependency.test.classpath" />
- <include name="${package}/test/**" />
-
- <exclude name="${package}/test/jdbc4/jdbc41/**" unless="jdbc41tests" />
-@@ -712,9 +660,6 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
- <sysproperty key="protocolVersion" value="${protocolVersion}" />
- <sysproperty key="ssltest.properties" value="${ssltest.properties}" />
-
-- <classpath refid="dependency.compile.classpath" />
-- <classpath refid="dependency.runtime.classpath" />
-- <classpath refid="dependency.test.classpath" />
- <classpath>
- <pathelement location="${artifact.jar}" />
- <pathelement location="${jardir}/postgresql-tests.jar" />
-@@ -835,8 +780,7 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
- </target>
-
- <target name="artifact-version"
-- description="Sets the version string for the jar artifact"
-- depends="maven-dependencies">
-+ description="Sets the version string for the jar artifact">
- <property name="artifact.version.string" value="${maven.artifact.id}-${maven.artifact.version}.${jdbc.version}" />
- <echo message="Artifact version string: ${artifact.version.string}" />
- </target>
-@@ -853,8 +797,7 @@ Import-Package: javax.sql, javax.transaction.xa, javax.naming, *;resolution:=opt
- <echo message="Maven version string: ${maven.artifact.version.string}" />
- </target>
-
-- <target name="prepare-pom" depends="maven-dependencies"
-- description="Write a pom.xml for uploading to Maven Central">
-+ <target name="prepare-pom" description="Write a pom.xml for uploading to Maven Central">
-
- <mkdir dir="${builddir}/pom"/>
-
diff --git a/postgresql-jdbc.pom b/postgresql-jdbc.pom
deleted file mode 100644
index a242066..0000000
--- a/postgresql-jdbc.pom
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>postgresql</groupId>
- <artifactId>postgresql</artifactId>
- <packaging>jar</packaging>
- <name>PostgreSQL JDBC Driver</name>
-
- <version>UPSTREAM_VERSION</version>
- <url>http://jdbc.postgresql.org</url>
- <description>The PostgreSQL Driver JDBC4</description>
- <licenses>
- <license>
- <name>BSD License</name>
- <url>http://jdbc.postgresql.org/license.html</url>
-
- <distribution>repo</distribution>
- </license>
- </licenses>
- <scm>
- <url>http://gborg.postgresql.org/project/pgjdbc/cvs/cvs.php</url>
- </scm>
-</project>
diff --git a/postgresql-jdbc.spec b/postgresql-jdbc.spec
index 2f4fbf8..87b660f 100644
--- a/postgresql-jdbc.spec
+++ b/postgresql-jdbc.spec
@@ -29,8 +29,9 @@
#
%global section devel
-%global upstreamrel 1205
+%global upstreamrel 1208
%global upstreamver 9.4-%{upstreamrel}
+%global source_path pgjdbc/src/main/java/org/postgresql
Summary: JDBC driver for PostgreSQL
Name: postgresql-jdbc
@@ -41,23 +42,17 @@ License: BSD and ASL 2.0
Group: Applications/Databases
URL: http://jdbc.postgresql.org/
-Source0: http://jdbc.postgresql.org/download/%{name}-%{upstreamver}.src.tar.gz
-# originally http://repo2.maven.org/maven2/postgresql/postgresql/8.4-701.jdbc4/postgresql-8.4-701.jdbc4.pom:
-Source1: %{name}.pom
+Source0: https://jdbc.postgresql.org/download/postgresql-jdbc-%{upstreamver}.src.tar.gz
-# Stripped maven from from ant build
-Patch0: build.patch
-
-# Erased parts of code where was required sspi
-# sspi is used for authorization but windows only
-Patch1: SSPIClient.patch
+Patch1: 0001-Disable-SSPI-under-Linux.patch
BuildArch: noarch
-BuildRequires: java-devel >= 1:1.8
+BuildRequires: java-devel >= 1.8
BuildRequires: jpackage-utils
-BuildRequires: ant
-BuildRequires: ant-junit
-BuildRequires: junit
+BuildRequires: maven-local
+BuildRequires: java-comment-preprocessor
+BuildRequires: postgresql-jdbc-parent-poms
+BuildRequires: properties-maven-plugin
# gettext is only needed if we try to update translations
#BuildRequires: gettext
Requires: jpackage-utils
@@ -77,59 +72,48 @@ This package contains the API Documentation for %{name}.
%prep
%setup -c -q
-rm -f %{name}-%{upstreamver}.src/org/postgresql/sspi/NTDSAPI.java
-rm -f %{name}-%{upstreamver}.src/org/postgresql/sspi/NTDSAPIWrapper.java
-rm -f %{name}-%{upstreamver}.src/org/postgresql/osgi/*
-mv -f %{name}-%{upstreamver}.src/* .
-rm -f %{name}-%{upstreamver}.src/.gitattributes
-rm -f %{name}-%{upstreamver}.src/.gitignore
-rm -f %{name}-%{upstreamver}.src/.travis.yml
-rmdir %{name}-%{upstreamver}.src
+# there are no dependencies for SSPI and OSGi so these files
+# has to be deleted in order to build it
+rm -f postgresql-jdbc-%{upstreamver}.src/%{source_path}/sspi/NTDSAPI.java
+rm -f postgresql-jdbc-%{upstreamver}.src/%{source_path}/sspi/NTDSAPIWrapper.java
+rm -f postgresql-jdbc-%{upstreamver}.src/%{source_path}/sspi/SSPIClient.java
+rm -f postgresql-jdbc-%{upstreamver}.src/%{source_path}/osgi/*
+
+rm -f postgresql-jdbc-%{upstreamver}.src/.gitignore
+rm -f postgresql-jdbc-%{upstreamver}.src/.travis.yml
+# this may not be necessary if release is source from official release
+rm -f postgresql-jdbc-%{upstreamver}.src/.gitattributes
+mv -f postgresql-jdbc-%{upstreamver}.src/* .
+rmdir postgresql-jdbc-%{upstreamver}.src/
# remove any binary libs
find -name "*.jar" -or -name "*.class" | xargs rm -f
-%patch0 -p1 -b .revert-travis-fix
-%patch1 -p1
+pwd
+%patch1 -p1
+%pom_disable_module ubenchmark
%build
-export OPT_JAR_LIST="ant/ant-junit junit"
-export CLASSPATH=
-
# Ideally we would run "sh update-translations.sh" here, but that results
# in inserting the build timestamp into the generated messages_*.class
# files, which makes rpmdiff complain about multilib conflicts if the
# different platforms don't build in the same minute. For now, rely on
# upstream to have updated the translations files before packaging.
-ant jar publicapi
+%mvn_build -f
%install
-install -d $RPM_BUILD_ROOT%{_javadir}
-# Per jpp conventions, jars have version-numbered names and we add
-# versionless symlinks.
-install -m 644 jars/postgresql-%{upstreamver}.jdbc42.jar $RPM_BUILD_ROOT%{_javadir}/%{name}.jar
-
+%mvn_install
pushd $RPM_BUILD_ROOT%{_javadir}
# Also, for backwards compatibility with our old postgresql-jdbc packages,
# add these symlinks. (Probably only the jdbc3 symlink really makes sense?)
-ln -s postgresql-jdbc.jar postgresql-jdbc2.jar
-ln -s postgresql-jdbc.jar postgresql-jdbc2ee.jar
-ln -s postgresql-jdbc.jar postgresql-jdbc3.jar
+ln -s %{name}/postgresql.jar postgresql-jdbc.jar
+ln -s %{name}/postgresql.jar postgresql-jdbc2.jar
+ln -s %{name}/postgresql.jar postgresql-jdbc2ee.jar
+ln -s %{name}/postgresql.jar postgresql-jdbc3.jar
popd
-# Install the pom after inserting the correct version number
-sed 's/UPSTREAM_VERSION/%{upstreamver}/g' %{SOURCE1} >JPP-%{name}.pom
-install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir}/
-install -m 644 JPP-%{name}.pom $RPM_BUILD_ROOT%{_mavenpomdir}/JPP-%{name}.pom
-%add_maven_depmap
-
-install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
-cp -ra build/publicapi $RPM_BUILD_ROOT%{_javadocdir}/%{name}
-install -d build/publicapi docs/%{name}
-
-
%check
%if 0%{?runselftest}
# Note that this requires to have PostgreSQL properly configured; for this
@@ -141,21 +125,19 @@ ant test 2>&1 | tee "$test_log" || :
%endif
-
%files -f .mfiles
-%doc LICENSE README.md doc/*
+%license LICENSE
+%doc README.md
+%{_javadir}/%{name}.jar
%{_javadir}/%{name}2.jar
%{_javadir}/%{name}2ee.jar
%{_javadir}/%{name}3.jar
%files javadoc
-%doc LICENSE
+%license LICENSE
%doc %{_javadocdir}/%{name}
%changelog
-* Wed Nov 25 2015 Pavel Kajaba <pkajaba@redhat.com> - 9.4.1205-1
-- Stripped osgi and sspi. Rebased to most recent version
-
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.4.1200-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild