%global findbugs_ver_min 3.0.0
%global javac_source_ver 1.8
%global java_ver_min %{javac_source_ver}.0
%global jersey_ver_min 1.17
%global resteasy_ver_min 3.0.6
%global findbugs_version %(rpm -q --qf "%%{version}" findbugs)
%global resteasy_version %(rpm -q --qf "%%{version}" resteasy-core)
%global simpleframework_version %(rpm -q --qf "%%{version}" simple)
%global client_sub_modules zanata-rest-client zanata-client-commands zanata-cli
%global client_command_name zanata-cli
Name: zanata-platform
Version: 4.1.1
Release: 2%{?dist}
Summary: Zanata the web-based translation platform
Group: Development/Tools
License: LGPLv2+
URL: https://github.com/zanata/%{name}
Source0: https://github.com/zanata/%{name}/archive/platform-%{version}.zip
Patch0: %{name}-4.1.1-mvn-extensions.patch
BuildArch: noarch
BuildRequires: maven-local
BuildRequires: java-devel >= 1:%{java_ver_min}
BuildRequires: apache-commons-csv
BuildRequires: args4j >= 2.0.25
BuildRequires: enunciate >= 2.6.0
BuildRequires: exec-maven-plugin
BuildRequires: findbugs >= %{findbugs_ver_min}
BuildRequires: jetty-servlet
BuildRequires: jetty-servlets
BuildRequires: jgettext
BuildRequires: maven-dependency-plugin
BuildRequires: mvn(com.sun:tools)
BuildRequires: mvn(com.google.guava:guava)
BuildRequires: mvn(io.takari.aether:aether-connector-okhttp)
BuildRequires: mvn(javax.validation:validation-api)
BuildRequires: mvn(net.sourceforge.findbugs:annotations)
BuildRequires: mvn(org.apache.commons:commons-exec)
BuildRequires: mvn(org.jboss.resteasy:async-http-servlet-3.0)
BuildRequires: mvn(org.jboss.resteasy:resteasy-jackson-provider)
BuildRequires: mvn(org.jboss.resteasy:resteasy-multipart-provider)
BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-clean-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-deploy-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-enforcer-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-install-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-site-plugin)
BuildRequires: mvn(org.codehaus.jackson:jackson-core-asl)
BuildRequires: mvn(org.codehaus.mojo:jaxb2-maven-plugin)
BuildRequires: mvn(org.hibernate:hibernate-validator)
BuildRequires: mvn(org.jboss:jboss-parent:pom:)
BuildRequires: mvn(org.jboss.resteasy:jaxrs-api)
BuildRequires: mvn(org.mockito:mockito-core)
BuildRequires: mvn(org.slf4j:jcl-over-slf4j)
BuildRequires: openprops
BuildRequires: powermock-api-mockito
BuildRequires: powermock-core
BuildRequires: powermock-junit4
BuildRequires: resteasy-core
BuildRequires: simple
BuildRequires: slf4j
BuildRequires: slf4j-log4j12
BuildRequires: spock-core
BuildRequires: takari-lifecycle
BuildRequires: takari-smart-builder
BuildRequires: xom
Requires: java-headless >= 1:%{java_ver_min}
Requires: apache-commons-csv
Requires: args4j >= 2.0.25
Requires: jgettext
Requires: mvn(org.apache.commons:commons-exec)
Requires: openprops
Requires: xom
Provides: zanata-parent = 1:%{version}
Obsoletes: zanata-parent < 0:30
Provides: zanata-api = %{version}
Obsoletes: zanata-api < 4.0
Provides: zanata-common = %{version}
Obsoletes: zanata-common < 4.0
%description
Zanata is a web-based system for translators to translate documentation and
software online using a web-browser. It is written in Java and uses modern web
technologies like JBoss EAP, CDI, Hibernate, and a REST API. It currently
supports translation of DocBook/Publican documentation through PO files, and a
number of other formats.
The Fedora package contains the command line client so far.
%package javadoc
Summary: Javadocs for %{name}
Group: Documentation
Requires: %{name} = %{version}-%{release}
Provides: zanata-api-javadoc = %{version}
Obsoletes: zanata-api-javadoc < 4.0
Provides: zanata-common-javadoc = %{version}
Obsoletes: zanata-common-javadoc < 4.0
Provides: zanata-client-javadoc = %{version}
Obsoletes: zanata-client-javadoc < 4.0
%description javadoc
This package contains the API documentation for zanata-platform.
%package -n zanata-client
Summary: Command-line client of Zanata
Group: Development/Tools
Requires: %{name} = %{version}-%{release}
%description -n zanata-client
Zanata client modules.
Holds most of Zanata's client code, including Zanata CLI.
It also contains REST stub for interacting with a Zanata server.
%prep
%setup -q -n %{name}-platform-%{version}
%patch0 -b .mvn-extensions -p0
## Remove .jar files in source
rm -f .mvn/wrapper/maven-wrapper.jar
rm -f parent/intellij-code-style-settings.jar
## Single Thread compile
sed -i -e 's/--T 1.0C/--T 1/' .mvn/maven.config
%pom_xpath_set "pom:parent/pom:relativePath" "parent/pom.xml"
%mvn_artifact pom.xml
## build-tools
%mvn_artifact build-tools/pom.xml
## parent
%pom_remove_dep org.jboss.resteasy:resteasy-bom parent
%pom_remove_plugin :animal-sniffer-maven-plugin parent
%pom_remove_plugin :duplicate-finder-maven-plugin parent
%pom_remove_plugin :findbugs-maven-plugin parent
%pom_remove_plugin :gitdescribe-maven-plugin parent
%pom_remove_plugin :jacoco-maven-plugin parent
%pom_remove_plugin :maven-checkstyle-plugin parent
%pom_remove_plugin :maven-eclipse-plugin parent
%pom_remove_plugin :maven-enforcer-plugin parent
%pom_remove_plugin :maven-release-plugin parent
%pom_remove_plugin :maven-sortpom-plugin parent
%pom_remove_plugin :maven-source-plugin parent
%pom_remove_plugin :maven-surefire-plugin parent
%pom_remove_plugin :versions-maven-plugin parent
# Takari plugin
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='takari-lifecycle-plugin']/pom:dependencies" parent
%pom_xpath_remove "pom:build/pom:extensions" parent
%pom_xpath_set "pom:properties/pom:resteasy.version" %{resteasy_version} parent
%pom_xpath_inject "pom:properties" "%{version}" parent
%pom_xpath_remove "pom:profiles/pom:profile[pom:id='m2e']" parent
%mvn_artifact parent/pom.xml
## api
%pom_remove_plugin :findbugs-maven-plugin api
%pom_xpath_set "pom:parent/pom:relativePath" "../parent/pom.xml" api
%mvn_artifact api/pom.xml
## zanata-common-api
%pom_remove_plugin :enunciate-slim-maven-plugin api/zanata-common-api
%pom_remove_plugin :gmaven-plugin api/zanata-common-api
%pom_remove_plugin :maven-enforcer-plugin api/zanata-common-api
%pom_remove_plugin :maven-shade-plugin api/zanata-common-api
%pom_remove_dep org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec api/zanata-common-api
# We use the existing findbugs in fedora
%pom_xpath_inject "pom:dependencies" "com.google.code.findbugsjsr3052.0.1provided" api/zanata-common-api
%pom_xpath_inject "pom:dependencies/pom:dependency[pom:artifactId='resteasy-multipart-provider']" "%{resteasy_version}" api/zanata-common-api
# delete enunciate stuff
rm -rf zanata-common-api/src/test/java/org/zanata/rest/enunciate
rm -rf zanata-common-api/src/test/java/org/zanata/rest/dto/
rm -rf zanata-common-api/src/test/java/org/zanata/rest/service
# remove groovy-all and spock
%pom_remove_dep org.codehaus.groovy:groovy-all api/zanata-common-api
%pom_remove_dep org.spockframework:spock-core api/zanata-common-api
%mvn_artifact api/zanata-common-api/pom.xml api/zanata-common-api/target/zanata-common-api-%{version}.jar
## common
%pom_remove_plugin :findbugs-maven-plugin common
%pom_xpath_inject "pom:dependencies" "com.google.code.findbugsjsr3052.0.1provided" common
%pom_xpath_set "pom:parent/pom:relativePath" "../parent/pom.xml" common
%mvn_artifact common/pom.xml
%mvn_artifact common/zanata-adapter-po/pom.xml common/zanata-adapter-po/target/zanata-adapter-po-%{version}.jar
%mvn_artifact common/zanata-adapter-properties/pom.xml common/zanata-adapter-properties/target/zanata-adapter-properties-%{version}.jar
%mvn_artifact common/zanata-common-util/pom.xml common/zanata-common-util/target/zanata-common-util-%{version}.jar
%mvn_artifact common/zanata-adapter-glossary/pom.xml common/zanata-adapter-glossary/target/zanata-adapter-glossary-%{version}.jar
%mvn_artifact common/zanata-adapter-xliff/pom.xml common/zanata-adapter-xliff/target/zanata-adapter-xliff-%{version}.jar
## client
%mvn_package ":zanata-{rest-client,client-commands,zanata-cli}" zanata-client
%mvn_package ":client,stub-server" zanata-client
%pom_remove_plugin :findbugs-maven-plugin client
%pom_xpath_set "pom:properties/pom:resteasy.version" %{resteasy_version} client
%pom_xpath_inject "pom:dependencies" "com.google.code.findbugsjsr3052.0.1provided" client
# Ensure it compile with supported java version
%pom_xpath_inject "pom:plugins" "org.apache.maven.pluginsmaven-compiler-plugin%{javac_source_ver}truetrue" client
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId='org.simpleframework']/pom:artifactId" "simple-http" client
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId='org.simpleframework']/pom:version" %{simpleframework_version} client
%pom_xpath_set "pom:parent/pom:relativePath" "../parent/pom.xml" client
%mvn_artifact client/pom.xml
## stub-server
%pom_remove_dep org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec client/stub-server
%pom_remove_dep org.scannotation:scannotation client/stub-server
%pom_remove_plugin :duplicate-finder-maven-plugin client/stub-server
## rest
rm -fr client/zanata-rest-client/src/test
%pom_remove_plugin :duplicate-finder-maven-plugin client/zanata-rest-client
%mvn_artifact client/zanata-rest-client/pom.xml client/zanata-rest-client/target/zanata-rest-client-%{version}.jar
## command
%pom_remove_dep org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec client/zanata-client-commands
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId='org.simpleframework']/pom:artifactId" "simple-http" client/zanata-client-commands
rm client/zanata-client-commands/src/test/java/org/zanata/client/commands/*.java
rm client/zanata-client-commands/src/test/java/org/zanata/client/commands/init/*.java
rm client/zanata-client-commands/src/test/java/org/zanata/client/commands/push/*.java
rm client/zanata-client-commands/src/test/java/org/zanata/client/commands/pull/*.java
%mvn_artifact client/zanata-client-commands/pom.xml client/zanata-client-commands/target/zanata-client-commands-%{version}.jar
## cli
## We do not need assembly to tar ball
%pom_remove_plugin :appassembler-maven-plugin client/zanata-cli
%pom_remove_plugin :maven-assembly-plugin client/zanata-cli
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId='org.simpleframework']/pom:artifactId" "simple-http" client/zanata-cli
%pom_xpath_inject "pom:dependency[pom:artifactId[text()='zanata-client-commands']]/pom:exclusions" "com.suntools" client/zanata-cli
## simple-6.0.1 does not have org.simpleframework.http.core.ContainerServer.class
rm client/zanata-cli/src/test/java/org/zanata/client/ClientToServerTest.java
rm client/zanata-cli/src/test/java/org/zanata/client/HTTPMockContainer.java
%mvn_artifact client/zanata-cli/pom.xml client/zanata-cli/target/zanata-cli-%{version}.jar
## zanata-maven-plugin
# zanata-maven-plugin depends on com.pyx4j:maven-plugin-log4j,
# which is not available in Fedora
%pom_disable_module zanata-maven-plugin client
## server
# Not packing server at this point
%pom_disable_module server
%build
# Don't install here, it seems takari produces many duplicates in xmvn-reactor
%mvn_build -i -X -G -- -T 1 -DskipTests=false -DskipFuncTests=true -DskipArqTests=true dependency:build-classpath -Dmdep.analyze.skip=true -DfailIfNoTests=false -DincludeScope=compile -Dmdep.outputFile=classpath.txt
%install
%mvn_install -X
WorkRoot=$(realpath .)
cd client
ClientCP=
for mod in . %{client_sub_modules};do
sed -e "s|:|\\n|g" $mod/classpath.txt > $mod/cp.txt
sed -i.bak -e "s|%{_javadir}/||" $mod/cp.txt
sed -i.bak -e "s|.jar||" $mod/cp.txt
sed -i.bak -e "s|$WorkRoot/.*/target|%{name}|" $mod/cp.txt
sed -i.bak -e "s|/usr/lib/java/||" $mod/cp.txt
sed -i.bak -e "s|-%{version}||" $mod/cp.txt
if [ ! $mod = . ];then
echo -e "\n" >> cp.txt
cat $mod/cp.txt >> cp.txt
fi
done
sort -u cp.txt > cp-sorted.txt
ClientCP=$(cat cp-sorted.txt | xargs)
ClientCP+=" %{name}/zanata-cli"
cd -
mkdir -p %{buildroot}%{_bindir}
install -p -d -m 755 %{buildroot}%{_bindir}
# No need to package javadoc
rm %{buildroot}%{_javadocdir}/%{name}/javadoc.sh
# Variable substitution does not work with 4th parameter
%jpackage_script org.zanata.client.ZanataClient "" "" "" %{client_command_name} true
# Fix the jpackage_scripts
sed -i -e "s|/etc/java/%{name}|/etc/java/zanata-client|" %{buildroot}%{_bindir}/%{client_command_name}
sed -i -e "s|%{name}rc|zanata-clientrc|" %{buildroot}%{_bindir}/%{client_command_name}
sed -i -e "s|BASE_JARS=.*|BASE_JARS=\"$ClientCP\"|" %{buildroot}%{_bindir}/%{client_command_name}
chmod 755 %{buildroot}%{_bindir}/zanata-cli
#################################################################
%files -f .mfiles
%{_bindir}/zanata-cli
%doc README.md docs/release-notes.md
%license LICENSE.txt LICENSE.LESSER.txt
%files javadoc -f .mfiles-javadoc
%files -n zanata-client -f .mfiles-zanata-client
%doc client/README.txt docs/client/index.md docs/client/configuration.md docs/client/command-hook.md
%changelog
* Mon Mar 06 2017 Ding-Yi Chen 4.1.1-2
- Review issues addressed
* Mon Mar 06 2017 Ding-Yi Chen 4.1.1-1
- Initial import of zanata-platform