%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}%{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