File eclipse-mylyn.spec of Package eclipse-mylyn

#
# spec file for package eclipse-mylyn
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%global tag R_3_25_0
# Set this to avoid circular deps when bootstrapping
%bcond_without bootstrap
Name:           eclipse-mylyn
Version:        3.25.0
Release:        0
Summary:        Eclipse Mylyn main feature.
License:        EPL-1.0 AND EPL-2.0
URL:            https://www.eclipse.org/mylyn
# bash fetch-eclipse-mylyn.sh
Source0:        eclipse-mylyn-%{tag}-fetched-src.tar.xz
Source1:        fetch-eclipse-mylyn.sh
Source6:        redhat-bugzilla-custom-transitions.txt
Patch0:         %{name}-remove-hudson-discovery.patch
Patch1:         %{name}-add-apache-xmlrpc.patch
Patch2:         no-wikitext-sources.patch
Patch4:         %{name}-bug-419133.patch
Patch5:         explicit-hamcrest-use.patch
Patch6:         explicit-httpcore-bundle.patch
BuildRequires:  apache-commons-io >= 2.3
BuildRequires:  apache-commons-lang >= 2.6
BuildRequires:  apache-commons-logging
# Eclipse deps
BuildRequires:  eclipse-ecf-runtime
BuildRequires:  eclipse-emf-runtime
BuildRequires:  eclipse-license1
BuildRequires:  eclipse-license2
BuildRequires:  eclipse-pde
BuildRequires:  glassfish-jaxb-api
BuildRequires:  glassfish-jaxb-runtime
BuildRequires:  google-gson
BuildRequires:  guava
BuildRequires:  jakarta-commons-httpclient
BuildRequires:  maven-local
# Deps for stage 1 wikitext build
BuildRequires:  mvn(junit:junit)
BuildRequires:  mvn(org.apache.ant:ant)
BuildRequires:  mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires:  mvn(org.apache.maven.plugins:maven-antrun-plugin)
BuildRequires:  mvn(org.apache.maven.plugins:maven-install-plugin)
BuildRequires:  mvn(org.apache.maven.plugins:maven-plugin-plugin)
BuildRequires:  mvn(org.apache.maven.plugins:maven-source-plugin)
BuildRequires:  mvn(org.apache.maven:maven-plugin-api)
BuildRequires:  mvn(org.codehaus.mojo:build-helper-maven-plugin)
BuildRequires:  mvn(org.codehaus.mojo:xml-maven-plugin)
BuildRequires:  mvn(org.eclipse.tycho:target-platform-configuration)
BuildRequires:  mvn(org.eclipse.tycho:tycho-compiler-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-maven-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-p2-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-packaging-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-source-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-surefire-plugin)
BuildRequires:  mvn(org.jsoup:jsoup)
BuildRequires:  osgi(com.sun.activation.javax.activation)
# Deps for stage 2 tycho build
BuildRequires:  ws-commons-util >= 1.0.1
BuildRequires:  xmlrpc-client >= 3.1.3
BuildRequires:  xmlrpc-common >= 3.1.3
BuildRequires:  xmlrpc-server >= 3.1.3
BuildConflicts: java >= 12
BuildConflicts: java-devel >= 12
BuildConflicts: java-headless >= 12
#!BuildRequires:  tycho
Requires:       eclipse-platform
# Added in F31
Obsoletes:      %{name}-docs-epub <= 3.25.0
Obsoletes:      %{name}-docs-wikitext <= 3.25.0
Obsoletes:      %{name}-tasks-web <= 3.25.0
Obsoletes:      %{name}-tests <= 3.25.0
BuildArch:      noarch
# Upstream Eclipse no longer supports non-64bit arches
ExcludeArch:    s390 %{arm} %{ix86}
%if %{without bootstrap}
# Circular dependencies
BuildRequires:  eclipse-cdt
BuildRequires:  eclipse-egit
BuildRequires:  eclipse-jgit
BuildRequires:  eclipse-subclipse
%endif

%description
Mylyn integrates task support into Eclipse. It supports offline editing
for certain task repositories and monitors work activity to hide
information that is not relevant to the current task.

%package context-java
Summary:        Mylyn Bridge:  Java Development
Requires:       eclipse-jdt

%description context-java
Mylyn Task-Focused UI extensions for JDT.  Provides focusing of Java
element views and editors.

%package context-pde
Summary:        Mylyn Bridge:  Plug-in Development
Requires:       eclipse-pde

%description context-pde
Mylyn Task-Focused UI extensions for PDE, Ant, Team Support and CVS.

%if %{without bootstrap}
%package context-cdt
Summary:        Mylyn Bridge:  C/C++ Development
Requires:       eclipse-cdt

%description context-cdt
Mylyn Task-Focused UI extensions for CDT.  Provides focusing of C/C++
element views and editors.
%endif

%package tasks-bugzilla
Summary:        Mylyn Tasks Connector: Bugzilla

%description tasks-bugzilla
Provides Task List integration, offline support and rich editing for the
open source Bugzilla bug tracker.

%package tasks-trac
Summary:        Mylyn Tasks Connector: Trac

%description tasks-trac
Provides Task List integration, offline support and rich editing
for the open source Trac issue tracker.

%package versions
Summary:        Eclipse Mylyn Versions

%description versions
Provides a framework for accessing team providers for Eclipse Mylyn.

%package versions-git
Summary:        Mylyn Versions Connector: Git

%description versions-git
Provides Git integration for Eclipse Mylyn.

%package versions-cvs
Summary:        Mylyn Versions Connector: CVS

%description versions-cvs
Provides CVS integration for Eclipse Mylyn.

%if %{without bootstrap}
%package versions-subclipse
Summary:        Mylyn Versions Connector: SVN

%description versions-subclipse
Provides SVN integration for Eclipse Mylyn.
%endif

%package builds
Summary:        Eclipse Mylyn Builds

%description builds
Provides a common framework to interact with continuous integration
build providers using Eclipse Mylyn.

%package builds-hudson
Summary:        Mylyn Builds Connector: Hudson/Jenkins
Requires:       eclipse-ecf-runtime

%description builds-hudson
Support for the open source Hudson and Jenkins continuous integration servers.

%package sdk
Summary:        Mylyn SDK
Requires:       %{name} = %{version}-%{release}
Requires:       %{name}-builds = %{version}-%{release}
Requires:       %{name}-builds-hudson = %{version}-%{release}
Requires:       %{name}-context-java = %{version}-%{release}
Requires:       %{name}-context-pde = %{version}-%{release}
Requires:       %{name}-tasks-bugzilla = %{version}-%{release}
Requires:       %{name}-tasks-trac = %{version}-%{release}
Requires:       %{name}-versions = %{version}-%{release}
Requires:       %{name}-versions-cvs = %{version}-%{release}
%if %{without bootstrap}
Requires:       %{name}-context-cdt = %{version}-%{release}
Requires:       %{name}-versions-git = %{version}-%{release}
Requires:       %{name}-versions-subclipse = %{version}-%{release}
%endif

%description sdk
Sources for all Mylyn bundles.

%prep
%setup -q -n eclipse-mylyn-%{tag}-fetched-src

%patch -P 0
%patch -P 1
%patch -P 2
%patch -P 4
%patch -P 5
%patch -P 6 -p1

# Relax version constraint on jsoup
find -name MANIFEST.MF -exec grep -l -e 'org\.jsoup' {} \; | xargs sed -i -e '/org\.jsoup/s/1.8.3/1.6.1/'

# Don't build and ship test bundles
for pom in $(find -maxdepth 3 -name pom.xml) ; do
  sed -i -e '/tests<\/module>/d' -e '/test-feature<\/module>/d' $pom
done

# Correct doc license feature version
sed -i -e 's/license-feature-version=\"2\.0\.0/license-feature-version=\"0.0.0/' $(find -name feature.xml)

# Disable plugins we can live without (they are skipped by default anyway)
%pom_remove_plugin -r :findbugs-maven-plugin
%pom_remove_plugin -r :maven-pmd-plugin
%pom_remove_plugin -r :jacoco-maven-plugin
%pom_remove_plugin -r :maven-deploy-plugin

# Disable target platforms and repos that we don't need for RPM builds
for site in $(grep -l -r --include="pom.xml" eclipse-update-site .) ; do
  module=$(basename $(dirname $site)); dir=$(dirname $(dirname $site))
  %pom_disable_module $module $dir
done

# Don't build development features
%pom_disable_module org.eclipse.mylyn.builds.development-feature org.eclipse.mylyn.builds
%pom_disable_module org.eclipse.mylyn.commons.development-feature org.eclipse.mylyn.commons
%pom_disable_module org.eclipse.mylyn.context.development-feature org.eclipse.mylyn.context
%pom_disable_module org.eclipse.mylyn.reviews.development.feature org.eclipse.mylyn.reviews
%pom_disable_module org.eclipse.mylyn.versions.development-feature org.eclipse.mylyn.versions

# Disable modules we can't build yet
%pom_disable_module org.eclipse.mylyn.reviews
rm org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson.ui/src/org/eclipse/mylyn/internal/hudson/ui/HudsonDiscovery.java
rm org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson.ui/src/org/eclipse/mylyn/internal/hudson/ui/HudsonUiPlugin.java
rm org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson.ui/src/org/eclipse/mylyn/internal/hudson/ui/HudsonStartup.java

%pom_xpath_remove "plugin[contains(@id, '.source')]" \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.builds.sdk-feature/feature.xml \
  org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.sdk-feature/feature.xml \
  org.eclipse.mylyn.context/org.eclipse.mylyn.context.sdk-feature/feature.xml \
  org.eclipse.mylyn.tasks/org.eclipse.mylyn.sdk-feature/feature.xml \
  org.eclipse.mylyn.tasks/org.eclipse.mylyn.test-feature/feature.xml \
  org.eclipse.mylyn.versions/org.eclipse.mylyn.versions.sdk-feature/feature.xml

# Conditionally build git, subclipse and cdt support when bootstrapping
%if %{with bootstrap}
%pom_disable_module org.eclipse.mylyn.git-feature org.eclipse.mylyn.versions
%pom_disable_module org.eclipse.mylyn.git.core org.eclipse.mylyn.versions
%pom_disable_module org.eclipse.mylyn.git.ui org.eclipse.mylyn.versions
%pom_xpath_remove "includes[@id='org.eclipse.mylyn.git']" \
  org.eclipse.mylyn.versions/org.eclipse.mylyn.versions.sdk-feature/feature.xml
%pom_disable_module org.eclipse.mylyn.subclipse-feature org.eclipse.mylyn.versions
%pom_disable_module org.eclipse.mylyn.subclipse.core org.eclipse.mylyn.versions
%pom_disable_module org.eclipse.mylyn.subclipse.ui org.eclipse.mylyn.versions
%pom_disable_module org.eclipse.mylyn.cdt-feature org.eclipse.mylyn.context
%pom_disable_module org.eclipse.mylyn.cdt.ui org.eclipse.mylyn.context
%pom_xpath_remove "includes[@id='org.eclipse.cdt.mylyn']" \
  org.eclipse.mylyn.context/org.eclipse.mylyn.context.sdk-feature/feature.xml
%endif

# Don't build artifacts that we don't ship
%pom_disable_module org.eclipse.mylyn.commons.tck-feature org.eclipse.mylyn.commons

# These are not intended to be shipped by upstream, see ebz#467669 and ebz#260666
%pom_disable_module org.eclipse.mylyn.commons.identity.ui org.eclipse.mylyn.commons
%pom_disable_module org.eclipse.mylyn.help.sdk org.eclipse.mylyn.tasks

# Use default buildtimestamp source
%pom_remove_dep :tycho-buildtimestamp-jgit org.eclipse.mylyn/org.eclipse.mylyn-parent
%pom_remove_dep :tycho-sourceref-jgit org.eclipse.mylyn/org.eclipse.mylyn-parent
sed -i -e "/<sourceReferences>/,+3d" org.eclipse.mylyn/org.eclipse.mylyn-parent/pom.xml

# Fix javax.activation references
%pom_xpath_remove "plugin[@id='javax.activation']" \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.builds.sdk-feature/feature.xml org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.sdk-feature/feature.xml
%pom_xpath_remove "import[@plugin='javax.activation']" \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson-feature/feature.xml org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.notifications-feature/feature.xml
# Fix javax.xml.stream references
%pom_xpath_remove "plugin[@id='javax.xml.stream']" \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.builds.sdk-feature/feature.xml org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.sdk-feature/feature.xml
%pom_xpath_remove "import[@plugin='javax.xml.stream']" \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson-feature/feature.xml org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.notifications-feature/feature.xml
# Fix javax.xml.bind references
sed -i -e "s/javax\.xml\.bind/jaxb-api/" -e "s/com\.sun\.xml\.bind/com.sun.xml.bind.jaxb-impl/" \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson-feature/feature.xml org.eclipse.mylyn.builds/org.eclipse.mylyn.builds.sdk-feature/feature.xml \
  org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.notifications-feature/feature.xml org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.sdk-feature/feature.xml \
  org.eclipse.mylyn.builds/org.eclipse.mylyn.hudson.core/META-INF/MANIFEST.MF org.eclipse.mylyn.commons/org.eclipse.mylyn.commons.notifications.feed/META-INF/MANIFEST.MF

# Be more tolerant for gson and guava
sed -i -e "/com.google.guava;bundle-version/s/21.0.0,22.0.0/21.0.0,99.0.0/g" $(find -name MANIFEST.MF)
sed -i -e "/com.google.gson.*version/s/2.7.0,2.[89].0/2.2.0,2.9.0/g" $(find -name MANIFEST.MF)
sed -i -e "/org.apache.lucene.*version/s/6.0.0,6.3.0/8.0.0,9.0.0/g" org.eclipse.mylyn.tasks/org.eclipse.mylyn.tasks.index.core/META-INF/MANIFEST.MF

# Deal with split package
sed -i -e '/Require-/a\ org.eclipse.jdt.core,' org.eclipse.mylyn.context/org.eclipse.mylyn.context.ui/META-INF/MANIFEST.MF

# Compilation errors with JDT annotations
for mod in $(grep -l 'org.eclipse.jdt.annotation' $(find -name build.properties) ) ; do
  mod_man=$(dirname $mod)/META-INF/MANIFEST.MF
  sed -i -e '/^Require-Bundle:/a\ org.eclipse.jdt.annotation;bundle-version="[1.0.0,3.0.0)";resolution:=optional,' $mod_man
done

%{mvn_package} "::{target,pom}::" __noinstall
%{mvn_package} "::jar:sources:" sdk
%{mvn_package} ":*.sdk{,_feature}" sdk
%{mvn_package} ":org.eclipse.mylyn.tests.util" sdk
%{mvn_package} ":org.eclipse.mylyn.{context,commons}.sdk.util" sdk
%{mvn_package} ":org.eclipse.mylyn.context.sdk.java" sdk
%{mvn_package} "org.eclipse.mylyn.builds:*hudson*" builds-hudson
%{mvn_package} "org.eclipse.mylyn.builds:" builds
%{mvn_package} "org.eclipse.mylyn.context:*cdt.mylyn*" context-cdt
%{mvn_package} "org.eclipse.mylyn.context:*mylyn.pde*" context-pde
%{mvn_package} "org.eclipse.mylyn.context*:*.team.cvs" context-pde
%{mvn_package} "org.eclipse.mylyn.context:*{java_feature,java.tasks,java.ui,ide.ant,debug.ui}*" context-java
%{mvn_package} "org.eclipse.mylyn.tasks:*bugzilla*" tasks-bugzilla
%{mvn_package} "org.eclipse.mylyn.tasks:*trac*" tasks-trac
%{mvn_package} "org.eclipse.mylyn.versions:*cvs*" versions-cvs
%{mvn_package} "org.eclipse.mylyn.versions:*git*" versions-git
%{mvn_package} "org.eclipse.mylyn.versions:*subclipse*" versions-subclipse
%{mvn_package} "org.eclipse.mylyn.versions:" versions
%{mvn_package} "org.eclipse.mylyn{,.commons,.context,.context.features,.tasks}:"

%build
# Increase memory to ensure build succeeds on s390x
export MAVEN_OPTS="-Xmx1024m"

%{mvn_build} -f -j -- -Ddist.qualifier="\'v\'yyyyMMdd-HHmm"

%install
%mvn_install

install %{SOURCE6} \
  %{buildroot}%{_datadir}/eclipse/droplets/mylyn-tasks-bugzilla/redhat-bugzilla-custom-transitions.txt

%files -f .mfiles

%files context-java -f .mfiles-context-java

%files context-pde -f .mfiles-context-pde

%if %{without bootstrap}
%files context-cdt -f .mfiles-context-cdt
%endif

%files tasks-bugzilla -f .mfiles-tasks-bugzilla
%{_datadir}/eclipse/droplets/mylyn-tasks-bugzilla/redhat-bugzilla-custom-transitions.txt

%files tasks-trac -f .mfiles-tasks-trac

%files versions -f .mfiles-versions

%files versions-cvs -f .mfiles-versions-cvs

%if %{without bootstrap}
%files versions-git -f .mfiles-versions-git

%files versions-subclipse -f .mfiles-versions-subclipse
%endif

%files builds -f .mfiles-builds

%files builds-hudson -f .mfiles-builds-hudson

%files sdk -f .mfiles-sdk

%changelog
openSUSE Build Service is sponsored by