Blob Blame History Raw
%global findbugs_ver_min 3.0.0
%global findbugs_version %(rpm -q --qf "%%{version}" findbugs)
%global javac_source_ver 1.8
%global java_ver_min %{javac_source_ver}.0
%global jsr305_maven_name mvn(com.google.code.findbugs:jsr305)
%global jsr305_maven_version %(rpm -q --qf "%%{version}" --whatprovides "%{jsr305_maven_name}")
%global resteasy_ver_min 3.0.6
%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
%global mvn_build_opts -e -T 1 -DskipUnitTest=true -DskipTests=true -DskipFuncTests=true -DskipArqTests=true dependency:build-classpath -Dmdep.analyze.skip=true -DfailIfNoTests=false -DincludeScope=compile -Dmdep.outputFile=classpath.txt -Prelease -Ddoclint=none

Name:           zanata-platform
Version:        4.4.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.3.0-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:  jsr-305
BuildRequires:  maven-dependency-plugin
BuildRequires:  maven-javadoc-plugin
BuildRequires:  mvn(com.sun:tools)
BuildRequires:  mvn(commons-beanutils:commons-beanutils)
BuildRequires:  mvn(com.google.guava:guava)
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.assertj:assertj-core)
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.scannotation:scannotation)
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:  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 -p2

## 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
sed -i -e 's/--builder .*/--builder singlethreaded/' .mvn/maven.config
#sed -i -e 's/--builder .*/--builder multithreaded/' .mvn/maven.config

## remove SupressFBWarnings, because Fedora does not have edu.umd.cs.findbugs.annotations.SuppressFBWarnings
for jSrc in $( grep -R -l edu.umd.cs --include '*.java' * ); do
    sed -i.FBWarnings -e 's/^.*edu.umd.cs.findbugs.annotations.SuppressFBWarnings.*$//' $jSrc
    sed -i -e 's/@SuppressFBWarnings.*$//' $jSrc
done

## Global
%pom_remove_dep -r com.google.code.findbugs:findbugs-annotations
%pom_remove_plugin -r :findbugs-maven-plugin parent
%pom_remove_plugin -r :maven-enforcer-plugin parent

## root
%pom_xpath_set "pom:parent/pom:relativePath" "parent/pom.xml"
%mvn_artifact pom.xml

## build-tools
%mvn_artifact build-tools/pom.xml
%pom_xpath_set "pom:packaging" "jar" build-tools

%pom_xpath_remove  "pom:profiles/pom:profile[pom:id='release']/pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-gpg-plugin']" build-tools
%pom_remove_plugin :maven-surefire-plugin build-tools
%pom_remove_dep com.lesfurets:jenkins-pipeline-unit build-tools
%pom_remove_dep org.assertj:assertj-core build-tools
rm -fr build-tools/src/test/java/TestJenkinsfile.java

## parent
%mvn_artifact parent/pom.xml
%pom_remove_plugin :animal-sniffer-maven-plugin parent
%pom_remove_plugin :restrict-maven-plugin parent
%pom_remove_plugin :duplicate-finder-maven-plugin parent
%pom_remove_plugin :gitdescribe-maven-plugin parent
%pom_remove_plugin :jacoco-maven-plugin parent
%pom_remove_plugin :maven-antrun-plugin parent
%pom_remove_plugin :maven-checkstyle-plugin parent
%pom_remove_plugin :maven-eclipse-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
%pom_xpath_remove  "pom:profiles/pom:profile[pom:id='release']/pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-gpg-plugin']" parent
%pom_xpath_inject  "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-javadoc-plugin']/pom:executions" "<execution><id>aggregate</id><goals><goal>aggregate</goal></goals><phase>prepare-package</phase></execution>" parent
%pom_xpath_set "pom:properties/pom:resteasy.version" %{resteasy_version} parent

%pom_xpath_remove  "pom:build/pom:extensions" parent

%pom_xpath_inject "pom:properties" "<gitDescribe>platform-%{version}</gitDescribe>" parent


## api
%pom_xpath_set "pom:parent/pom:relativePath" "../parent/pom.xml" api
%mvn_artifact api/pom.xml

## zanata-common-api
%mvn_artifact api/zanata-common-api/pom.xml api/zanata-common-api/target/zanata-common-api-%{version}.jar
%pom_xpath_set "pom:packaging" "jar" api/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-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

%pom_xpath_inject "pom:dependencies/pom:dependency[pom:artifactId='resteasy-multipart-provider']" "<version>%{resteasy_version}</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/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


## common
%pom_xpath_set "pom:parent/pom:relativePath" "../parent/pom.xml" common
%mvn_artifact common/pom.xml

%pom_add_dep com.google.code.findbugs:jsr305:2.0.1:provided common

## common/zanata-common-util
%mvn_artifact common/zanata-common-util/pom.xml common/zanata-common-util/target/zanata-common-util-%{version}.jar
%pom_xpath_set "pom:packaging" "jar" common/zanata-common-util

%pom_xpath_inject "pom:parent" "<relativePath>../pom.xml</relativePath>" common/zanata-common-util

## common/zanata-adapters
%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-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
%pom_xpath_set "pom:packaging" "jar" common/zanata-adapter-po
%pom_xpath_set "pom:packaging" "jar" common/zanata-adapter-properties
%pom_xpath_set "pom:packaging" "jar" common/zanata-adapter-glossary
%pom_xpath_set "pom:packaging" "jar" common/zanata-adapter-xliff


## client
%pom_xpath_set "pom:parent/pom:relativePath" "../parent/pom.xml" client
%mvn_artifact client/pom.xml
%mvn_package ":zanata-{rest-client,client-commands,cli}" zanata-client
%mvn_package ":client,stub-server" zanata-client


%pom_xpath_set "pom:properties/pom:resteasy.version" %{resteasy_version} client

# Ensure it compile with supported java version
%pom_add_plugin org.apache.maven.plugins:maven-compiler-plugin client "<configuration><source>%{javac_source_ver}</source><target>%{javac_source_ver}</target><fork>true</fork><verbose>true</verbose></configuration>"

%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

## stub-server
%mvn_artifact client/stub-server/pom.xml client/stub-server/target/stub-server-%{version}.jar
%pom_xpath_set "pom:packaging" "jar" client/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
%pom_remove_plugin :maven-surefire-plugin client/stub-server

## rest
%mvn_artifact client/zanata-rest-client/pom.xml client/zanata-rest-client/target/zanata-rest-client-%{version}.jar
%pom_xpath_set "pom:packaging" "jar" client/zanata-rest-client

rm -fr client/zanata-rest-client/src/test
## remove the test dependency
%pom_remove_plugin :duplicate-finder-maven-plugin client/zanata-rest-client


## 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

## remove SupressFBWarnings, because Fedora does not have edu.umd.cs.findbugs.annotations.SuppressFBWarnings
sed -i -e 's/import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;.*$//' client/zanata-client-commands/src/main/java/org/zanata/client/commands/*.java
sed -i -e 's/@SuppressFBWarnings.*$//' client/zanata-client-commands/src/main/java/org/zanata/client/commands/*.java

%mvn_artifact client/zanata-client-commands/pom.xml client/zanata-client-commands/target/zanata-client-commands-%{version}.jar
%pom_xpath_set "pom:packaging" "jar" client/zanata-client-commands

## cli
## No need to generate tarball, thus remove assembly-plugin
%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

## 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
%pom_xpath_set "pom:packaging" "jar" client/zanata-cli

## 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
%mvn_build -i -X -- %{mvn_build_opts}

%install
%mvn_install -X -- %{mvn_build_opts}
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 -f %{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
%doc README.md docs/release-notes.md CONTRIBUTING.md
%license license.md license-gpl.md

%files javadoc -f .mfiles-javadoc

%files -n zanata-client -f .mfiles-zanata-client
%{_bindir}/zanata-cli
%doc client/README.md docs/client/index.md docs/client/configuration.md docs/client/command-hook.md

%changelog
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Thu Feb 01 2018 Ding-Yi Chen <dchen@redhat.com> 4.4.1-1
- Upstream update to 4.4.1

* Mon Dec 04 2017 Ding-Yi Chen <dchen@redhat.com> 4.3.2-1
- Upstream update to 4.3.2

* Thu Nov 09 2017 Ding-Yi Chen <dchen@redhat.com> 4.3.1-1
- Upstream update to 4.3.1

* Tue Oct 31 2017 Ding-Yi Chen <dchen@redhat.com> 4.3.0-1
- Upstream update to 4.3.0

* Mon Sep 04 2017 Ding-Yi Chen <dchen@redhat.com> 4.2.4-1
- Upstream update to 4.2.4

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Fri Jun 02 2017 Ding-Yi Chen <dchen@redhat.com> 4.2.1-1
- Upstream update to 4.2.1

* Wed Mar 22 2017 Ding-Yi Chen <dchen@redhat.com> 4.1.1-4
- No need to stop on missing javadoc.sh

* Fri Mar 17 2017 Ding-Yi Chen <dchen@redhat.com> 4.1.1-3
- Fixes Bug 1433226 - zanata-cli is mistakenly go to zanata-platform

* Mon Mar 06 2017 Ding-Yi Chen <dchen@redhat.com> 4.1.1-2
- Review issues addressed

* Mon Mar 06 2017 Ding-Yi Chen <dchen@redhat.com> 4.1.1-1
- Initial import of zanata-platform