postgresql-jdbc.git / summary / log / commit / refs
commit d2e4f5859affc14762bdb20cd386055aac71e265
Author: Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
Date: Tue Mar 03 19:39:24 2020 +0000
Add source distribution
.travis/travis_build.sh | 14 ++--
packaging/rpm/postgresql-jdbc.spec.tpl | 47 +++---------
pgjdbc/build.gradle.kts | 80 ++++++++++++++++++++
pgjdbc/reduced-pom.xml | 132 +++++++++++++++++++++++++++++++++
4 files changed, 232 insertions(+), 41 deletions(-)
diff --git a/.travis/travis_build.sh b/.travis/travis_build.sh
index 4a959ecf..f40129b4 100755
--- a/.travis/travis_build.sh
+++ b/.travis/travis_build.sh
@@ -3,14 +3,18 @@ set -x -e
if [[ "${FEDORA_CI}" == *"Y" ]];
then
+ # Prepare "source release" archive
+ ./gradlew :postgresql:sourceDistribution -Prelease
+
+ # Copy file to packaging directory, so rpm_ci would use it rather that downloading it from release URL
+ cp pgjdbc/build/distributions/postgresql-*-src.tar.gz packaging/rpm
+
# Try to prevent "stdout: write error"
# WA is taken from https://github.com/travis-ci/travis-ci/issues/4704#issuecomment-348435959
python -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);'
- export PROJECT_VERSION=$(mvn -B -N org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v '\[')
- export PARENT_VERSION=$(mvn -B -N org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.parent.version | grep -v '\[')
- export CHECK_PARENT_VERSION=$(mvn help:evaluate -Dexpression=project.parent.version -q -DforceStdout -f pgjdbc/pom.xml)
- # just make sure that pom.xml has the same value as pgjdbc/pom.xml
- test "$PARENT_VERSION" = "$CHECK_PARENT_VERSION"
+ export PROJECT_VERSION=$(grep pgjdbc.version gradle.properties | cut -d "=" -f2-)
+ # Removal of PARENT_VERSION requires rebuild of praiskup/copr-and-jdbc-ci Docker image
+ export PARENT_VERSION=unused_but_passed_to_make_script_inside_docker_happy
exec ./packaging/rpm_ci
fi
diff --git a/packaging/rpm/postgresql-jdbc.spec.tpl b/packaging/rpm/postgresql-jdbc.spec.tpl
index 45f81791..79d6f9cd 100644
--- a/packaging/rpm/postgresql-jdbc.spec.tpl
+++ b/packaging/rpm/postgresql-jdbc.spec.tpl
@@ -36,11 +36,6 @@
%global section devel
%global source_path pgjdbc/src/main/java/org/postgresql
-%global parent_ver GENERATED
-%global parent_poms_builddir ./pgjdbc-parent-poms
-
-%global pgjdbc_mvn_options -DwaffleEnabled=false -DosgiEnabled=false \\\
- -DexcludePackageNames=org.postgresql.osgi:org.postgresql.sspi
Summary: JDBC driver for PostgreSQL
Name: postgresql-jdbc
@@ -49,25 +44,24 @@ Release: GENERATED
License: BSD
URL: http://jdbc.postgresql.org/
-Source0: https://github.com/pgjdbc/pgjdbc/archive/REL%{version}/pgjdbc-REL%{version}.tar.gz
+# This archive contains the minimal set of files + pom.xml that can be used to build postgresql.jar
+Source0: https://repo1.maven.org/maven2/org/postgresql/postgresql/%{version}/postgresql-%{version}-src.tar.gz
Provides: pgjdbc = %version-%release
-# Upstream moved parent pom.xml into separate project (even though there is only
-# one dependant project on it?). Let's try to not complicate packaging by
-# having separate spec file for it, too.
-Source1: https://github.com/pgjdbc/pgjdbc-parent-poms/archive/REL%parent_ver/pgjdbc-parent-poms-REL%{parent_ver}.tar.gz
-
BuildArch: noarch
BuildRequires: java-devel >= 1.8
BuildRequires: maven-local
BuildRequires: java-comment-preprocessor
-BuildRequires: maven-enforcer-plugin
BuildRequires: maven-plugin-bundle
-BuildRequires: maven-plugin-build-helper
BuildRequires: classloader-leak-test-framework
BuildRequires: mvn(com.ongres.scram:client)
BuildRequires: mvn(org.apache.maven.plugins:maven-clean-plugin)
+BuildRequires: mvn(org.apache.maven.surefire:surefire-junit-platform)
+BuildRequires: mvn(org.junit.jupiter:junit-jupiter-api)
+BuildRequires: mvn(org.junit.jupiter:junit-jupiter-engine)
+BuildRequires: mvn(org.junit.jupiter:junit-jupiter-params)
+BuildRequires: mvn(org.junit.vintage:junit-vintage-engine)
%if %runselftest
BuildRequires: postgresql-contrib
@@ -93,39 +87,18 @@ This package contains the API Documentation for %{name}.
%prep
-%setup -c -q -a 1
-
-mv pgjdbc-REL%version/* .
-mv pgjdbc-parent-poms-REL%parent_ver pgjdbc-parent-poms
+%setup -c -q
# remove any binary libs
find -name "*.jar" -or -name "*.class" | xargs rm -f
-# Build parent POMs in the same Maven call.
-%pom_xpath_inject pom:modules "<module>%parent_poms_builddir</module>"
-%pom_xpath_inject pom:parent "<relativePath>pgjdbc-parent-poms/pgjdbc-versions</relativePath>"
-%pom_xpath_set pom:relativePath ../pgjdbc-parent-poms/pgjdbc-core-parent pgjdbc
-%pom_xpath_remove "pom:plugin[pom:artifactId = 'maven-shade-plugin']" pgjdbc
-%pom_remove_plugin :karaf-maven-plugin pgjdbc
-%pom_remove_plugin :properties-maven-plugin pgjdbc-parent-poms/pgjdbc-core-parent
-%pom_remove_plugin :properties-maven-plugin pgjdbc-parent-poms/pgjdbc-versions
-
# compat symlink: requested by dtardon (libreoffice), reverts part of
# 0af97ce32de877 commit.
%mvn_file org.postgresql:postgresql %{name}/postgresql %{name} postgresql
-# Parent POMs should not be installed.
-%mvn_package ":*{parent,versions,prevjre}*" __noinstall
-
# For compat reasons, make Maven artifact available under older coordinates.
%mvn_alias org.postgresql:postgresql postgresql:postgresql
-# Hack #1! This directory is missing for some reason, it is most probably some
-# misunderstanding between maven, maven-compiler-plugin and
-# java-comment-preprocessor? Not solved yet. See rhbz#1325060.
-mkdir -p pgjdbc/target/generated-sources/annotations
-
-
%build
# Ideally we would run "sh update-translations.sh" here, but that results
# in inserting the build timestamp into the generated messages_*.class
@@ -159,7 +132,7 @@ EOF
opts="-f"
%endif
-%mvn_build $opts -- %pgjdbc_mvn_options
+%mvn_build $opts
%install
@@ -176,5 +149,7 @@ opts="-f"
%changelog
+* Tue Mar 03 2020 Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
+- Adapted to building from the source release
* Wed Nov 29 2017 Pavel Raiskup <praiskup@redhat.com> - 9.5.git
- no changelog in this spec file (upstream git)
diff --git a/pgjdbc/build.gradle.kts b/pgjdbc/build.gradle.kts
index 7d26e83d..a44f8e65 100644
--- a/pgjdbc/build.gradle.kts
+++ b/pgjdbc/build.gradle.kts
@@ -234,9 +234,89 @@ karaf {
}
}
+// <editor-fold defaultstate="collapsed" desc="Source distribution for building pgjdbc with minimal features">
+val sourceDistribution by tasks.registering(Tar::class) {
+ archiveClassifier.set("src")
+ archiveExtension.set("tar.gz")
+ compression = Compression.GZIP
+ includeEmptyDirs = false
+ from(rootDir) {
+ include("build.properties")
+ include("ssltest.properties")
+ include("LICENSE")
+ include("README.md")
+ }
+ into("src/main/resources") {
+ from("$rootDir/LICENSE")
+ }
+
+ val props = listOf(
+ "pgjdbc.version",
+ "junit4.version",
+ "junit5.version",
+ "classloader-leak-test-framework.version",
+ "com.ongres.scram.client.version"
+ ).associate { propertyName ->
+ val value = project.findProperty(propertyName) as String
+ inputs.property(propertyName, project.findProperty(propertyName))
+ "%{$propertyName}" to value
+ }
+
+ from("reduced-pom.xml") {
+ rename { "pom.xml" }
+ filter {
+ it.replace(Regex("%\\{[^}]+\\}")) {
+ props[it.value] ?: throw GradleException("Unknown property in reduced-pom.xml: $it")
+ }
+ }
+ }
+ into("src/main/resources") {
+ from(tasks.jar.map {
+ zipTree(it.archiveFile).matching {
+ include("META-INF/MANIFEST.MF")
+ }
+ })
+ }
+ into("src/main") {
+ into("java") {
+ from(preprocessVersion)
+ }
+ from("src/main") {
+ exclude("checkstyle")
+ exclude("*/org/postgresql/osgi/**")
+ exclude("*/org/postgresql/sspi/NTDSAPI.java")
+ exclude("*/org/postgresql/sspi/NTDSAPIWrapper.java")
+ exclude("*/org/postgresql/sspi/SSPIClient.java")
+ }
+ }
+ into("src/test") {
+ from("src/test") {
+ exclude("*/org/postgresql/test/osgi/**")
+ exclude("**/*Suite*")
+ exclude("*/org/postgresql/test/sspi/*.java")
+ exclude("*/org/postgresql/replication/**")
+ }
+ }
+ into("certdir") {
+ from("$rootDir/certdir") {
+ include("good*")
+ include("bad*")
+ include("Makefile")
+ include("README.md")
+ from("server") {
+ include("root*")
+ include("server*")
+ include("pg_hba.conf")
+ }
+ }
+ }
+}
+// </editor-fold>
+
val extraMavenPublications by configurations.getting
(artifacts) {
+ extraMavenPublications(sourceDistribution)
extraMavenPublications(osgiJar) {
classifier = ""
}
diff --git a/pgjdbc/reduced-pom.xml b/pgjdbc/reduced-pom.xml
new file mode 100644
index 00000000..17824a05
--- /dev/null
+++ b/pgjdbc/reduced-pom.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (c) 2019, PostgreSQL Global Development Group
+ ~ See the LICENSE file in the project root for more information.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <packaging>jar</packaging>
+ <name>PostgreSQL JDBC Driver - JDBC 4.2</name>
+ <version>%{pgjdbc.version}</version>
+ <description>Java JDBC 4.2 (JRE 8+) driver for PostgreSQL database</description>
+ <url>https://github.com/pgjdbc/pgjdbc</url>
+
+ <licenses>
+ <license>
+ <name>BSD-2-Clause</name>
+ <url>https://jdbc.postgresql.org/about/license.html</url>
+ </license>
+ </licenses>
+
+ <organization>
+ <name>PostgreSQL Global Development Group</name>
+ <url>https://jdbc.postgresql.org/</url>
+ </organization>
+
+ <properties>
+ <!-- Require JDK 1.8 or later -->
+ <javac.target>1.8</javac.target>
+ <encoding>UTF-8</encoding>
+ <project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
+ <project.resources.sourceEncoding>${encoding}</project.resources.sourceEncoding>
+ <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
+ <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
+ <maven-jar-plugin.version>2.6</maven-jar-plugin.version>
+ <maven-javadoc-plugin.version>3.0.1</maven-javadoc-plugin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.ongres.scram</groupId>
+ <artifactId>client</artifactId>
+ <version>%{com.ongres.scram.client.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>se.jiderhamn</groupId>
+ <artifactId>classloader-leak-test-framework</artifactId>
+ <version>%{classloader-leak-test-framework.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>%{junit4.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <version>%{junit5.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-params</artifactId>
+ <version>%{junit5.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <version>%{junit5.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ <version>%{junit5.version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven-compiler-plugin.version}</version>
+ <configuration>
+ <source>${javac.target}</source>
+ <target>${javac.target}</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${maven-surefire-plugin.version}</version>
+ <configuration>
+ <argLine>-Xmx1536m</argLine>
+ <systemPropertyVariables>
+ <build.properties.relative.path>.</build.properties.relative.path>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>${maven-jar-plugin.version}</version>
+ <configuration>
+ <archive>
+ <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${maven-javadoc-plugin.version}</version>
+ <executions>
+ <execution>
+ <id>attach-javadocs</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
[parent: 9f396707b8e0]