Blob Blame History Raw
%global namedreltag .Final
%global namedversion %{version}%{?namedreltag}

Name:          hibernate
Version:       4.1.7
Release:       7%{?dist}
Summary:       Relational persistence and query service
Group:         Development/Libraries
License:       LGPLv2+ and ASL 2.0
URL:           http://www.hibernate.org/
Source0:       http://sourceforge.net/projects/hibernate/files/hibernate4/%{namedversion}/hibernate-release-%{namedversion}.tgz
# TODO remove these poms when gradle maven plugin work properly
Source1:       http://repo1.maven.org/maven2/org/hibernate/hibernate-c3p0/%{namedversion}/hibernate-c3p0-%{namedversion}.pom
Source2:       http://repo1.maven.org/maven2/org/hibernate/hibernate-core/%{namedversion}/hibernate-core-%{namedversion}.pom
Source3:       http://repo1.maven.org/maven2/org/hibernate/hibernate-ehcache/%{namedversion}/hibernate-ehcache-%{namedversion}.pom
Source4:       http://repo1.maven.org/maven2/org/hibernate/hibernate-entitymanager/%{namedversion}/hibernate-entitymanager-%{namedversion}.pom
Source5:       http://repo1.maven.org/maven2/org/hibernate/hibernate-envers/%{namedversion}/hibernate-envers-%{namedversion}.pom
Source6:       http://repo1.maven.org/maven2/org/hibernate/hibernate-infinispan/%{namedversion}/hibernate-infinispan-%{namedversion}.pom
Source7:       http://repo1.maven.org/maven2/org/hibernate/hibernate-proxool/%{namedversion}/hibernate-proxool-%{namedversion}.pom
Source8:       http://repo1.maven.org/maven2/org/hibernate/hibernate-testing/%{namedversion}/hibernate-testing-%{namedversion}.pom

# hibernate package don't include ASL license file
Source9:       http://www.apache.org/licenses/LICENSE-2.0.txt

Patch0:        hibernate-4.1.7.Final-build.patch
Patch1:        hibernate-4.1.6.Final-fix-incorrect-fsf-address.patch

BuildRequires: java-devel
BuildRequires: jpackage-utils

BuildRequires: ant
BuildRequires: antlr-tool
BuildRequires: bean-validation-api
BuildRequires: byteman
BuildRequires: c3p0
BuildRequires: classmate
BuildRequires: dom4j
BuildRequires: ehcache-core
BuildRequires: h2
BuildRequires: hibernate-commons-annotations
BuildRequires: hibernate-jpa-2.0-api
# BuildRequires: hibernate-tools https://bugzilla.redhat.com/show_bug.cgi?id=826701
BuildRequires: hibernate-validator
BuildRequires: infinispan
BuildRequires: jandex
BuildRequires: javassist
BuildRequires: jboss-common-core
BuildRequires: jboss-jacc-1.4-api
# jboss-jts 4.16.4.Final
BuildRequires: jboss-jts
BuildRequires: jboss-logging
BuildRequires: jboss-naming
BuildRequires: jboss-transaction-1.1-api
BuildRequires: junit
BuildRequires: log4j
BuildRequires: mchange-commons
BuildRequires: mockito
BuildRequires: proxool
BuildRequires: rhq-plugin-annotations
BuildRequires: shrinkwrap
BuildRequires: slf4j
BuildRequires: xapool

# build tools and deps
BuildRequires: annox
BuildRequires: apache-commons-beanutils
BuildRequires: apache-commons-lang
BuildRequires: apache-commons-logging
BuildRequires: codemodel
BuildRequires: glassfish-jaxb
BuildRequires: glassfish-jaxb-api
BuildRequires: gradle
BuildRequires: hibernate-jpamodelgen
BuildRequires: istack-commons
BuildRequires: jaxb2-common-basics
BuildRequires: jboss-logging-tools
# BuildRequires: maven-wagon
BuildRequires: rngom
BuildRequires: txw2
BuildRequires: xsom

Requires:      ant
Requires:      antlr-tool
Requires:      bean-validation-api
Requires:      classmate
Requires:      dom4j
Requires:      hibernate-commons-annotations
Requires:      hibernate-jpa-2.0-api
Requires:      hibernate-validator
Requires:      jandex
Requires:      javassist
Requires:      jboss-jacc-1.4-api
Requires:      jboss-logging
Requires:      jboss-transaction-1.1-api

Requires:      java
Requires:      jpackage-utils
BuildArch:     noarch

%description
Hibernate is a powerful, ultra-high performance
object/relational persistence and query service
for Java. Hibernate lets you develop persistent
objects following common Java idiom - including
association, inheritance, polymorphism, composition
and the Java collections framework. Extremely
fine-grained, richly typed object models are
possible. The Hibernate Query Language, designed
as a "minimal" object-oriented extension to SQL,
provides an elegant bridge between the object and
relational worlds. Hibernate is now the most
popular ORM solution for Java.

%package c3p0
Group:         Development/Libraries
Summary:       Hibernate C3P0 ConnectionProvider
Requires:      c3p0
Requires:      jboss-logging
Requires:      %{name} = %{version}-%{release}

%description c3p0
C3P0-based implementation of the Hibernate ConnectionProvder contract.

%package ehcache
Group:         Development/Libraries
Summary:       Hibernate Ehcache Integration
Requires:      ehcache-core
Requires:      jboss-logging
Requires:      %{name} = %{version}-%{release}

%description ehcache
Integration of Hibernate with Ehcache.

%package entitymanager
Group:         Development/Libraries
Summary:       Hibernate Entity Manager
Requires:      dom4j
Requires:      hibernate-commons-annotations
Requires:      hibernate-jpa-2.0-api
Requires:      javassist
Requires:      jboss-logging
Requires:      jboss-transaction-1.1-api
Requires:      %{name} = %{version}-%{release}

%description entitymanager
Hibernate Entity Manager.

%package envers
Group:         Development/Libraries
Summary:       Hibernate Envers
# Requires:      hibernate-tools
Requires:      jboss-logging
Requires:      %{name} = %{version}-%{release}
Requires:      %{name}-entitymanager = %{version}-%{release}

%description envers
Support for entity auditing.

%package infinispan
Group:         Development/Libraries
Summary:       Hibernate Infinispan Integration
Requires:      infinispan
Requires:      jboss-common-core
Requires:      jboss-logging
Requires:      rhq-plugin-annotations
Requires:      %{name} = %{version}-%{release}
Requires:      %{name}-testing = %{version}-%{release}

%description infinispan
Integration of Hibernate with Infinispan.

%package proxool
Group:         Development/Libraries
Summary:       Hibernate Proxool ConnectionProvider
Requires:      jboss-logging
Requires:      proxool
Requires:      %{name} = %{version}-%{release}

%description proxool
Proxool-based implementation of the Hibernate ConnectionProvder contract.

%package testing
Group:         Development/Libraries
Summary:       Hibernate Testing
Requires:      byteman
# jboss-jts 4.16.4.Final
Requires:      jboss-jts
Requires:      junit
Requires:      xapool
Requires:      %{name} = %{version}-%{release}

%description testing
Hibernate JUnit test utilities.

%package javadoc
Group:         Documentation
Summary:       Javadoc for %{name}
Requires:      jpackage-utils

%description javadoc
This package contains javadoc for %{name}.

%prep
%setup -q -n hibernate-release-%{namedversion}

find .  -name "*.jar" -delete
find .  -name "*.class" -delete
rm -r documentation/*
mv -f project/* .

%patch0 -p1
%patch1 -p0


# FIXME
cp -p %{SOURCE6} .
# infinispan
sed -i "s|<version>5.1.6.FINAL</version>|<version>5.1.2.FINAL</version>|" hibernate-infinispan-%{namedversion}.pom
cp -p %{SOURCE8} .
# jboss-jts
sed -i "s|<version>4.16.4.Final</version>|<version>4.16.2.Final</version>|" hibernate-testing-%{namedversion}.pom

sed -i "s|<artifactId>jbossjta</artifactId>|<artifactId>jbossjts</artifactId>|" hibernate-testing-%{namedversion}.pom
# jbossjta was removed in jboss-jts 4.16.2-10 package
sed -i "s|org.jboss.jbossts:jboss-jts/jbossjta:4.16.4.Final|org.jboss.jbossts:jboss-jts/jbossjts:4.16.4.Final|" libraries.gradle


cp -p %{SOURCE9} .
sed -i 's/\r//' LICENSE-2.0.txt

# fix non ASCII chars
for s in hibernate-core/src/main/java/org/hibernate/annotations/FlushModeType.java\
 hibernate-core/src/main/java/org/hibernate/annotations/SQLUpdate.java\
 hibernate-core/src/main/java/org/hibernate/annotations/NamedQueries.java\
 hibernate-core/src/main/java/org/hibernate/annotations/NaturalId.java\
 hibernate-core/src/main/java/org/hibernate/annotations/ResultCheckStyle.java\
 hibernate-core/src/main/java/org/hibernate/annotations/SQLDeleteAll.java\
 hibernate-core/src/main/java/org/hibernate/annotations/SQLDelete.java\
 hibernate-core/src/main/java/org/hibernate/annotations/Loader.java\
 hibernate-core/src/main/java/org/hibernate/annotations/SQLInsert.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/BaseEnversEventListener.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/EnversPreCollectionUpdateEventListenerImpl.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/EnversPostDeleteEventListenerImpl.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/BaseEnversCollectionEventListener.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/EnversPostUpdateEventListenerImpl.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/EnversPreCollectionRemoveEventListenerImpl.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/EnversPostInsertEventListenerImpl.java\
 hibernate-envers/src/main/java/org/hibernate/envers/event/EnversPostCollectionRecreateEventListenerImpl.java\
 hibernate-envers/src/main/java/org/hibernate/envers/configuration/metadata/CollectionMetadataGenerator.java\
 hibernate-envers/src/main/java/org/hibernate/envers/entities/EntityConfiguration.java\
 hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/OneToOneNotOwningMapper.java\
 hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/ToOneIdMapper.java\
 hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/ToOneDelegateSessionImplementor.java\
 hibernate-envers/src/main/java/org/hibernate/envers/query/AuditQueryCreator.java\
 hibernate-envers/src/main/java/org/hibernate/envers/query/impl/AbstractAuditQuery.java\
 hibernate-envers/src/main/java/org/hibernate/envers/query/impl/RevisionsOfEntityQuery.java\
 hibernate-envers/src/main/java/org/hibernate/envers/query/impl/EntitiesAtRevisionQuery.java\
 hibernate-envers/src/main/java/org/hibernate/envers/tools/Tools.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/JndiInfinispanRegionFactory.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/AddressAdapterImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/EvictAllCommand.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheCommandInitializer.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheCommandFactory.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/AddressAdapter.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/FlagAdapter.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheAdapter.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheCommandIds.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheAdapterImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheHelper.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/util/CacheCommandExtensions.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/entity/EntityRegionImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/entity/ReadOnlyAccess.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/entity/TransactionalAccess.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/impl/BaseRegion.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/impl/BaseTransactionalDataRegion.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/impl/BaseGeneralDataRegion.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/collection/CollectionRegionImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/collection/CollectionRegionImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/collection/TransactionalAccess.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/timestamp/TimestampsRegionImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/timestamp/TimestampTypeOverrides.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/access/PutFromLoadValidator.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/access/TransactionalAccessDelegate.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/query/QueryResultsRegionImpl.java\
 hibernate-infinispan/src/main/java/org/hibernate/cache/infinispan/tm/HibernateTransactionManagerLookup.java\
 hibernate-proxool/src/main/java/org/hibernate/service/jdbc/connections/internal/ProxoolConnectionProvider.java;do
  native2ascii -encoding UTF8 ${s} ${s}
done

# disable hibernate-tools support
rm -r hibernate-envers/src/main/java/org/hibernate/tool/ant/*.java \
  hibernate-envers/src/main/java/org/hibernate/envers/ant/*.java
sed -i "s|provided( |//provided(|" hibernate-envers/hibernate-envers.gradle

# require gradle maven plugin
# Caused by: org.gradle.api.InvalidUserDataException: You can't change a configuration which is not in unresolved state!
sed -i "s|provided( libraries.validation )|compile( libraries.validation )|" hibernate-c3p0/hibernate-c3p0.gradle
sed -i "s|provided( libraries.jandex )|compile( libraries.jandex )|" hibernate-core/hibernate-core.gradle
sed -i "s|provided( libraries.classmate )|compile( libraries.classmate )|" hibernate-core/hibernate-core.gradle
sed -i "s|provided( libraries.ant )|compile( libraries.ant )|" hibernate-core/hibernate-core.gradle
sed -i "s|provided( libraries.jacc )|compile( libraries.jacc )|" hibernate-core/hibernate-core.gradle
sed -i "s|provided( libraries.validation )|compile( libraries.validation )|" hibernate-core/hibernate-core.gradle
sed -i "s|all|//all|" hibernate-infinispan/hibernate-infinispan.gradle

# TODO test fails also for unavailable test deps, 
# should be updated the test deps list in each sub module
# e.g. Test testHHH6635(org.hibernate.test.c3p0.C3P0ConnectionProviderTest) FAILED: java.lang.NoClassDefFoundError: Could not initialize class com.arjuna.ats.internal.jts.OTSImpleManager
rm -r hibernate-c3p0/src/test/java/org \
 hibernate-core/src/test/java/org \
 hibernate-ehcache/src/test/java/org \
 hibernate-entitymanager/src/test/java/org \
 hibernate-envers/src/test/java/org \
 hibernate-infinispan/src/test/java/org \
 hibernate-proxool/src/test/java/org

%build

unset JAVA_HOME
export JAVA_HOME=%{_jvmdir}/java
export GRADLE_USER_HOME=$PWD SKIP_UNIT_TEST=true
mkdir -p gradlehome
# build buildSrc.jar
gradle --debug -S jar javadoc -g $PWD/gradlehome -b $PWD/buildSrc/build.gradle
# use buildReleaseBundles for aggregate javadoc
gradle --debug -S build buildReleaseBundles -g $PWD/gradlehome -b $PWD/build.gradle

%install

mkdir -p %{buildroot}%{_javadir}/%{name}
for module in c3p0 core ehcache entitymanager envers infinispan proxool testing; do
    install -m 644 hibernate-${module}/target/libs/hibernate-${module}-%{namedversion}.jar %{buildroot}%{_javadir}/%{name}/hibernate-${module}.jar
done

mkdir -p %{buildroot}%{_mavenpomdir}
# TODO use the poms files generated by gradle maven plugin
install -pm 644 %{SOURCE1} %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-c3p0.pom
%add_maven_depmap JPP.%{name}-hibernate-c3p0.pom %{name}/hibernate-c3p0.jar -f c3p0

install -pm 644 %{SOURCE2} %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-core.pom
%add_maven_depmap JPP.%{name}-hibernate-core.pom %{name}/hibernate-core.jar

install -pm 644 %{SOURCE3} %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-ehcache.pom
%add_maven_depmap JPP.%{name}-hibernate-ehcache.pom %{name}/hibernate-ehcache.jar -f ehcache

install -pm 644 %{SOURCE4} %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-entitymanager.pom
%add_maven_depmap JPP.%{name}-hibernate-entitymanager.pom %{name}/hibernate-entitymanager.jar -f entitymanager

install -pm 644 %{SOURCE5} %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-envers.pom
%add_maven_depmap JPP.%{name}-hibernate-envers.pom %{name}/hibernate-envers.jar -f envers

install -pm 644 hibernate-infinispan-%{namedversion}.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-infinispan.pom
%add_maven_depmap JPP.%{name}-hibernate-infinispan.pom %{name}/hibernate-infinispan.jar -f infinispan

install -pm 644 %{SOURCE7} %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-proxool.pom
%add_maven_depmap JPP.%{name}-hibernate-proxool.pom %{name}/hibernate-proxool.jar -f proxool

install -pm 644 hibernate-testing-%{namedversion}.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-hibernate-testing.pom
%add_maven_depmap JPP.%{name}-hibernate-testing.pom %{name}/hibernate-testing.jar -f testing

mkdir -p %{buildroot}%{_javadocdir}/%{name}
cp -rp release/target/documentation/javadocs/* %{buildroot}%{_javadocdir}/%{name}

%files
%dir %{_javadir}/%{name}
%{_javadir}/%{name}/hibernate-core.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-core.pom
%{_mavendepmapfragdir}/%{name}
%doc changelog.txt lgpl.txt LICENSE-2.0.txt README.md

%files javadoc
%{_javadocdir}/%{name}
%doc lgpl.txt LICENSE-2.0.txt

%files c3p0
%{_javadir}/%{name}/hibernate-c3p0.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-c3p0.pom
%{_mavendepmapfragdir}/%{name}-c3p0
%doc lgpl.txt

%files ehcache
%{_javadir}/%{name}/hibernate-ehcache.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-ehcache.pom
%{_mavendepmapfragdir}/%{name}-ehcache
%doc lgpl.txt LICENSE-2.0.txt

%files entitymanager
%{_javadir}/%{name}/hibernate-entitymanager.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-entitymanager.pom
%{_mavendepmapfragdir}/%{name}-entitymanager
%doc lgpl.txt

%files envers
%{_javadir}/%{name}/hibernate-envers.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-envers.pom
%{_mavendepmapfragdir}/%{name}-envers
%doc lgpl.txt LICENSE-2.0.txt

%files infinispan
%{_javadir}/%{name}/hibernate-infinispan.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-infinispan.pom
%{_mavendepmapfragdir}/%{name}-infinispan
%doc lgpl.txt LICENSE-2.0.txt

%files proxool
%{_javadir}/%{name}/hibernate-proxool.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-proxool.pom
%{_mavendepmapfragdir}/%{name}-proxool
%doc lgpl.txt LICENSE-2.0.txt

%files testing
%{_javadir}/%{name}/hibernate-testing.jar
%{_mavenpomdir}/JPP.%{name}-hibernate-testing.pom
%{_mavendepmapfragdir}/%{name}-testing
%doc lgpl.txt LICENSE-2.0.txt

%changelog
* Thu Apr 11 2013 gil cattaneo <puntogil@libero.it> 4.1.7-7
- use full-stacktrace option (-S)

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.7-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Thu Nov 08 2012 gil cattaneo <puntogil@libero.it> 4.1.7-5
- fixed changelog

* Mon Oct 29 2012 gil cattaneo <puntogil@libero.it> 4.1.7-4
- fix license field
- added ASL license txt file
- renamed the "hibernate-core" package as "hibernate"

* Wed Oct 17 2012 gil cattaneo <puntogil@libero.it> 4.1.7-3
- removed gradle maven plugin references
- update buildrequires list
- fix jboss-jts aId

* Tue Oct 16 2012 gil cattaneo <puntogil@libero.it> 4.1.7-2
- update PATCH0

* Fri Sep 21 2012 gil cattaneo <puntogil@libero.it> 4.1.7-1
- update to 4.1.7.Final

* Mon Aug 27 2012 gil cattaneo <puntogil@libero.it> 4.1.6-1
- update to 4.1.6.Final

* Thu Aug 02 2012 gil cattaneo <puntogil@libero.it> 4.1.5-1.SP1
- initial rpm