%global homedir %{_datadir}/%{name} %global clientdir %{homedir}/client %global libdir %{homedir}/lib %global bindir %{homedir}/bin %global apidocdir %{homedir}/api-docs/java %global confdir %{_sysconfdir}/%{name} Name: vert.x Version: 2.1 Release: 1%{?dist} Summary: A lightweight, polyglot, event-driven application platform for JVM License: ASL 2.0 URL: http://vertx.io/ # Downloaded from https://github.com/eclipse/vert.x/archive/v2.1.tar.gz Source0: https://github.com/eclipse/%{name}/archive/v%{version}.tar.gz # Custom vertx-parent POM Source100: vertx-parent-%{version}.pom Source101: http://repo1.maven.org/maven2/io/vertx/vertx-core/%{version}/vertx-core-%{version}.pom Source102: http://repo1.maven.org/maven2/io/vertx/vertx-hazelcast/%{version}/vertx-hazelcast-%{version}.pom Source103: http://repo1.maven.org/maven2/io/vertx/vertx-platform/%{version}/vertx-platform-%{version}.pom BuildArch: noarch BuildRequires: maven-local BuildRequires: maven-release-plugin BuildRequires: maven-resources-plugin BuildRequires: maven-source-plugin BuildRequires: maven-enforcer-plugin BuildRequires: java-devel >= 0:1.7.0 BuildRequires: netty >= 0:4.0.19 BuildRequires: hazelcast >= 0:3.2.1 BuildRequires: jackson-databind >= 0:2.2.2 BuildRequires: jackson-core >= 0:2.2.2 BuildRequires: jackson-annotations >= 0:2.2.2 BuildRequires: log4j BuildRequires: slf4j BuildRequires: junit # Required for raw java/groovy module to compile Requires: java-devel >= 0:1.7.0 Provides: %{name}-platform = %{version}-%{release} Obsoletes: %{name}-platform < %{version}-%{release} %description Vert.x is a lightweight, high performance, simple, polyglot, event-driven application platform for JVM that's designed for modern mobile, web, and enterprise applications. Vert.x application components can be written in Java, JavaScript, Groovy, Ruby or Python. %package javadoc Summary: Javadocs for %{name} Group: Documentation %description javadoc This package contains the API documentation for %{name}. %prep %setup -q -n %{name}-%{version} # Delte all binary .jar files find . -name "*.jar" -delete # Delte all binary .class files find . -name "*.class" -delete cp %{SOURCE100} pom.xml cp %{SOURCE101} vertx-core/pom.xml cp %{SOURCE102} vertx-hazelcast/pom.xml cp %{SOURCE103} vertx-platform/pom.xml # Add custom parent POM %pom_add_parent io.vertx:vertx-parent:%{version} vertx-core/pom.xml %pom_add_parent io.vertx:vertx-parent:%{version} vertx-hazelcast/pom.xml %pom_add_parent io.vertx:vertx-parent:%{version} vertx-platform/pom.xml ## Remove unused test scope dependencies # No io.vertx:testtools available %pom_remove_dep io.vertx:testtools vertx-core %pom_remove_dep io.vertx:testtools vertx-hazelcast %pom_remove_dep io.vertx:testtools vertx-platform # No io.vertx:vertx-testframework available %pom_remove_dep io.vertx:vertx-testframework vertx-core %pom_remove_dep io.vertx:vertx-testframework vertx-hazelcast %pom_remove_dep io.vertx:vertx-testframework vertx-platform %build export MAVEN_OPTS="-Xms256m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m" # JUnit test failures %mvn_build -f %install %mvn_install install -d -m 755 $RPM_BUILD_ROOT%{homedir} install -d -m 755 $RPM_BUILD_ROOT%{bindir} install -d -m 755 $RPM_BUILD_ROOT%{clientdir} install -d -m 755 $RPM_BUILD_ROOT%{libdir} install -d -m 755 $RPM_BUILD_ROOT%{apidocdir} install -d -m 755 $RPM_BUILD_ROOT%{confdir} install -d -m 755 $RPM_BUILD_ROOT%{_bindir} # conf dir install -m 644 vertx-platform/src/main/resources/default-cluster.xml $RPM_BUILD_ROOT%{confdir}/cluster.xml install -m 644 vertx-platform/src/main/resources/default-langs.properties $RPM_BUILD_ROOT%{confdir}/langs.properties install -m 644 vertx-platform/src/main/resources/logging.properties $RPM_BUILD_ROOT%{confdir}/logging.properties install -m 644 vertx-platform/src/main/resources/default-repos.txt $RPM_BUILD_ROOT%{confdir}/repos.txt install -d -m 755 $RPM_BUILD_ROOT%{confdir}/META-INF/services install -m 644 vertx-platform/src/main/resources/META-INF/services/org.vertx.java.platform.PlatformManagerFactory $RPM_BUILD_ROOT%{confdir}/META-INF/services/org.vertx.java.platform.PlatformManagerFactory # link to conf dir from vertx home dir pushd $RPM_BUILD_ROOT%{homedir} ln -s %{confdir} conf popd # bin dir install -m 755 src/dist/scripts/vertx $RPM_BUILD_ROOT%{bindir}/vertx pushd $RPM_BUILD_ROOT%{_bindir} ln -s %{bindir}/vertx vertx popd # vertxbus.js in client dir install -m 644 src/dist/client/vertxbus.js $RPM_BUILD_ROOT%{clientdir}/vertxbus-%{version}.js # lib dir jar link files pushd $RPM_BUILD_ROOT%{libdir} ln -s $(build-classpath hazelcast/hazelcast) hazelcast.jar ln -s $(build-classpath jackson-annotations/jackson-annotations) jackson-annotations.jar ln -s $(build-classpath jackson-core/jackson-core) jackson-core.jar ln -s $(build-classpath jackson-databind/jackson-databind) jackson-databind.jar ln -s $(build-classpath netty/netty-all) netty-all.jar # jar comes from same build ln -s %{_javadir}/%{name}/vertx-core.jar vertx-core.jar ln -s %{_javadir}/%{name}/vertx-hazelcast.jar vertx-hazelcast.jar ln -s %{_javadir}/%{name}/vertx-platform.jar vertx-platform.jar popd # api-docs pushd $RPM_BUILD_ROOT%{apidocdir} ln -s %{_javadocdir}/%{name} api popd %files -f .mfiles %doc LICENSE-eplv10-aslv20.html notice.html %dir %{homedir} %{bindir} %{clientdir} %{libdir} %{apidocdir} %{homedir}/conf %{_bindir}/* %dir %{confdir} %{confdir}/cluster.xml %{confdir}/langs.properties %{confdir}/repos.txt %{confdir}/logging.properties %{confdir}/META-INF/services/org.vertx.java.platform.PlatformManagerFactory %files javadoc -f .mfiles-javadoc %doc LICENSE-eplv10-aslv20.html notice.html %changelog * Tue Jun 17 2014 Lin Gao 2.1-1 - Initial packaging