Blob Blame History Raw

%global install_loc          %{_datadir}/eclipse/dropins/m2e-core
%global release_dir          m2e-core-8f1095d2e358ddda2002431f1e535d57451cad84

Name:           eclipse-m2e-core
Version:        1.5.0
Release:        5%{?dist}
Summary:        Maven integration for Eclipse

Group:          Development/Tools
# Most of components are under EPL, but some of them are licensed under
# ASL 2.0 license.
License:        EPL and ASL 2.0
URL:            http://eclipse.org/m2e/

Source0:        http://git.eclipse.org/c/m2e/m2e-core.git/snapshot/%{release_dir}.tar.bz2

# Add some necessary stuff (mainly requires & imports) to manifests
Patch0:         %{name}-fix-m2e.core-manifest.patch
Patch1:         %{name}-fix-m2e.core.ui-manifest-1.2.0.patch

# AbstractResourceFetcher is now ResourceFetcher (interface)
Patch2:         %{name}-m2e.core-resourcefetcher.patch

# Archetype class is now ArchetypeManager
Patch3:         %{name}-archetype-archetypemanager.patch

# Method returns collection of ArtifactInfo instances rather than just one
Patch4:         %{name}-artifactinfo-return-type.patch

# Have to specify type here
Patch5:         %{name}-remotearchetypecatalogdialog.patch

# org.eclipse.m2e.launching tries to bundle jars, but they don't seem needed
Patch6:         %{name}-org.eclipse.m2e.launching-build.properties.patch

# In updated lucene in F18, some methods have been renamed
Patch8:         %{name}-lucene-deprecated-methods.patch

# Leaving out the modello version causes a NullPointerException
# See comment 13 on RHBZ #847160
Patch9:         %{name}-m2e.core-modello-version.patch

# API change in maven-indexer 5.1.1
Patch10:        %{name}-indexer-5.1.1.patch
Patch15:        %{name}-NexusIndexManager.patch

# API change in aether (remove once implemented)
Patch13:        %{name}-ContextRepositorySystemSession-missing-method.patch
Patch14:        %{name}-LifecycleMappingFactory.patch

# API changes in lucene 4
Patch16:        %{name}-lucene-4.patch

# Exclude features we don't build from p2 repo.
Patch17:        %{name}-disable-unneeded-features.patch

BuildArch:      noarch


# Maven build-requires for the main build.  After successfull build
# they can be regenerated with the following command:
#   xmvn-builddep <path-to-build-log>
BuildRequires:  maven-local
BuildRequires:  mvn(org.codehaus.modello:modello-maven-plugin)
BuildRequires:  mvn(org.codehaus.mojo:build-helper-maven-plugin)
BuildRequires:  mvn(org.eclipse.tycho:target-platform-configuration)
BuildRequires:  mvn(org.eclipse.tycho:tycho-maven-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-source-plugin)
BuildRequires:  mvn(org.fedoraproject:feclipse-maven-plugin)
BuildRequires:  mvn(org.sonatype.forge:forge-parent:pom:)

# Additional Maven build-requires for m2e-maven-runtime.  They cannot
# be regenerated using xmvn-builddep because m2e-maven-runtime is not
# built using %%mvn_build.
BuildRequires:  mvn(com.google.guava:guava)
BuildRequires:  mvn(io.tesla.aether:aether-connector-okhttp)
BuildRequires:  mvn(io.tesla.aether:tesla-concurrent-localrepo)
BuildRequires:  mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires:  mvn(org.apache.maven.archetype:archetype-common)
BuildRequires:  mvn(org.apache.maven.indexer:indexer-core)
BuildRequires:  mvn(org.apache.maven:maven-compat)
BuildRequires:  mvn(org.apache.maven:maven-core)
BuildRequires:  mvn(org.apache.maven:maven-embedder)
BuildRequires:  mvn(org.apache.maven.wagon:wagon-file)
BuildRequires:  mvn(org.eclipse.aether:aether-impl)
BuildRequires:  mvn(org.eclipse.aether:aether-transport-wagon)
BuildRequires:  mvn(org.eclipse.sisu:org.eclipse.sisu.plexus)
BuildRequires:  mvn(org.eclipse.tycho:tycho-maven-plugin)
BuildRequires:  mvn(org.eclipse.tycho:tycho-p2-plugin)
BuildRequires:  mvn(org.slf4j:slf4j-simple)
BuildRequires:  mvn(org.sonatype.forge:forge-parent:pom:)
BuildRequires:  mvn(org.sonatype.plexus:plexus-build-api)
BuildRequires:  mvn(org.sonatype.sisu:sisu-guice::no_aop:)


# OSGi build-requires.  They can be regenerated with the following command:
#   sed -n 's/^Require-Bundle: //;T;:l;s/[;=,].*//;/^org.eclipse.m2e/bn;s/..*/BuildRequires:  osgi(&)/;T;p;:n;n;s/^ //;T;bl' `find -name *.MF` | sort -u
BuildRequires:  osgi(com.ibm.icu)
BuildRequires:  osgi(org.apache.maven.archetype.catalog)
BuildRequires:  osgi(org.apache.maven.archetype.descriptor)
BuildRequires:  osgi(org.eclipse.compare)
BuildRequires:  osgi(org.eclipse.core.expressions)
BuildRequires:  osgi(org.eclipse.core.filebuffers)
BuildRequires:  osgi(org.eclipse.core.filesystem)
BuildRequires:  osgi(org.eclipse.core.jobs)
BuildRequires:  osgi(org.eclipse.core.resources)
BuildRequires:  osgi(org.eclipse.core.runtime)
BuildRequires:  osgi(org.eclipse.core.variables)
BuildRequires:  osgi(org.eclipse.debug.core)
BuildRequires:  osgi(org.eclipse.debug.ui)
BuildRequires:  osgi(org.eclipse.emf.common)
BuildRequires:  osgi(org.eclipse.emf.ecore)
BuildRequires:  osgi(org.eclipse.emf.ecore.edit)
BuildRequires:  osgi(org.eclipse.emf.ecore.xmi)
BuildRequires:  osgi(org.eclipse.emf.edit)
BuildRequires:  osgi(org.eclipse.equinox.common)
BuildRequires:  osgi(org.eclipse.equinox.p2.core)
BuildRequires:  osgi(org.eclipse.equinox.p2.discovery)
BuildRequires:  osgi(org.eclipse.equinox.p2.discovery.compatibility)
BuildRequires:  osgi(org.eclipse.equinox.p2.metadata)
BuildRequires:  osgi(org.eclipse.equinox.p2.operations)
BuildRequires:  osgi(org.eclipse.equinox.p2.repository)
BuildRequires:  osgi(org.eclipse.equinox.p2.ui)
BuildRequires:  osgi(org.eclipse.equinox.p2.ui.discovery)
BuildRequires:  osgi(org.eclipse.equinox.registry)
BuildRequires:  osgi(org.eclipse.jdt.core)
BuildRequires:  osgi(org.eclipse.jdt.debug)
BuildRequires:  osgi(org.eclipse.jdt.debug.ui)
BuildRequires:  osgi(org.eclipse.jdt.launching)
BuildRequires:  osgi(org.eclipse.jdt.ui)
BuildRequires:  osgi(org.eclipse.jem.util)
BuildRequires:  osgi(org.eclipse.jface)
BuildRequires:  osgi(org.eclipse.jface.text)
BuildRequires:  osgi(org.eclipse.ltk.core.refactoring)
BuildRequires:  osgi(org.eclipse.ltk.ui.refactoring)
BuildRequires:  osgi(org.eclipse.osgi)
BuildRequires:  osgi(org.eclipse.search)
BuildRequires:  osgi(org.eclipse.swt)
BuildRequires:  osgi(org.eclipse.ui)
BuildRequires:  osgi(org.eclipse.ui.console)
BuildRequires:  osgi(org.eclipse.ui.editors)
BuildRequires:  osgi(org.eclipse.ui.externaltools)
BuildRequires:  osgi(org.eclipse.ui.forms)
BuildRequires:  osgi(org.eclipse.ui.ide)
BuildRequires:  osgi(org.eclipse.ui.workbench)
BuildRequires:  osgi(org.eclipse.ui.workbench.texteditor)
BuildRequires:  osgi(org.eclipse.wst.common.emf)
BuildRequires:  osgi(org.eclipse.wst.common.uriresolver)
BuildRequires:  osgi(org.eclipse.wst.sse.core)
BuildRequires:  osgi(org.eclipse.wst.sse.ui)
BuildRequires:  osgi(org.eclipse.wst.xml.core)
BuildRequires:  osgi(org.eclipse.wst.xml.ui)
BuildRequires:  osgi(org.eclipse.wst.xsd.core)
BuildRequires:  osgi(slf4j.api)

# Bundle requires are auto-generated, but explicit requires are needed
# for symlinks to JARs installed by other packages.  After installing
# m2e these requires can be regenerated with the following command:
#   rpm -qf --qf 'Requires:       %{name}\n' $(readlink $(find /usr/share/eclipse/dropins/m2e-core -type l)) | sort -u
Requires:       aether-api
Requires:       aether-connector-okhttp
Requires:       aether-impl
Requires:       aether-spi
Requires:       aether-transport-wagon
Requires:       aether-util
Requires:       aopalliance
Requires:       apache-commons-cli
Requires:       apache-commons-collections
Requires:       apache-commons-io
Requires:       apache-commons-lang
Requires:       atinject
Requires:       dom4j
Requires:       google-guice
Requires:       guava
Requires:       hamcrest
Requires:       jboss-transaction-1.2-api
Requires:       jchardet
Requires:       jdom
Requires:       jetty-util
Requires:       junit
Requires:       lucene
Requires:       lucene-analysis
Requires:       lucene-highlighter
Requires:       lucene-memory
Requires:       lucene-queries
Requires:       lucene-queryparser
Requires:       lucene-sandbox
Requires:       maven
Requires:       maven-archetype-catalog
Requires:       maven-archetype-common
Requires:       maven-archetype-descriptor
Requires:       maven-archetype-registry
Requires:       maven-artifact-manager
Requires:       maven-indexer
Requires:       maven-invoker
Requires:       maven-model
Requires:       maven-plugin-registry
Requires:       maven-profile
Requires:       maven-project
Requires:       maven-wagon-file
Requires:       maven-wagon-provider-api
Requires:       multithreadedtc
Requires:       okhttp
Requires:       okhttp-protocols
Requires:       plexus-build-api
Requires:       plexus-cipher
Requires:       plexus-classworlds
Requires:       plexus-containers-component-annotations
Requires:       plexus-containers-container-default
Requires:       plexus-interpolation
Requires:       plexus-sec-dispatcher
Requires:       plexus-utils
Requires:       plexus-velocity
Requires:       sisu-inject
Requires:       sisu-plexus
Requires:       slf4j
Requires:       tesla-concurrent-localrepo
Requires:       tesla-filelock
Requires:       velocity
Requires:       xbean
Requires:       xml-commons-apis


%description
The goal of the m2ec project is to provide a first-class Apache Maven support
in the Eclipse IDE, making it easier to edit Maven's pom.xml, run a build from
the IDE and much more. For Java developers, the very tight integration with JDT
greatly simplifies the consumption of Java artifacts either being hosted on open
source repositories such as Maven Central, or in your in-house Maven repository.

m2e is also a platform that let others provide better integration with
additional Maven plugins (e.g. Android, web development, etc.), and facilitates
the distribution of those extensions through the m2e marketplace.


%package javadoc
Group:          Documentation
Summary:        API documentation for %{name}

%description javadoc
This package contains %{summary}.


%prep
%setup -q -n %{release_dir}

find -name '*.class' -delete
find -name '*.jar' -delete

# Copy license files so they can be installed more easily.
cp -p org.eclipse.m2e.feature/epl-v10.html .
cp -p m2e-maven-runtime/org.eclipse.m2e.maven.indexer/src/main/resources/about_files/LICENSE-2.0.txt .

# These don't currently build, but don't seem to be absolutely necessary
# Tests are skipped because they require Jetty 6.x
for mod in org.eclipse.m2e.tests.common \
           org.eclipse.m2e.logback.appender \
           org.eclipse.m2e.logback.configuration \
           org.eclipse.m2e.logback.feature \
           org.eclipse.m2e.sdk.feature
do
  %pom_disable_module $mod
  rm -rf $mod
done

# Install p2 repo using feclipse-maven-plugin
# See: https://fedoraproject.org/wiki/Feclipse-maven-installer
%pom_add_plugin org.fedoraproject:feclipse-maven-plugin:0.0.4 org.eclipse.m2e.site "
  <configuration>
    <sourceRepo>\${project.build.directory}/repository</sourceRepo>
    <targetLocation>\${session.executionRootDirectory}/eclipse</targetLocation>
  </configuration>
  <executions>
    <execution>
      <id>install</id>
      <phase>package</phase>
      <goals>
        <goal>install</goal>
      </goals>
    </execution>
  </executions>"

# Embed all Maven dependencies.  They may be some superflous deps
# added this way, but in Fedora we don't have enough manpower to test
# dependency correctness.  And we don't even run m2e tests...
for d in `find m2e-maven-runtime/* -maxdepth 0 -type d`; do
    %pom_xpath_inject pom:instructions "<Embed-Directory>jars</Embed-Directory>" $d
    %pom_xpath_set pom:Embed-Dependency "*;scope=compile|runtime" $d
done

# Fix incorrect bundle name and version for slf4j in manifests and POMs
sed -i 's|org.slf4j.api;bundle-version=\".*\"|slf4j.api|g' `find -name *.MF -o -name pom.xml`

%autopatch -p0

sed -i -e "s/aether-connector-wagon/aether-transport-wagon/" m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml

%build
# Building m2e is a two step process.  See upstream documentation:
# http://wiki.eclipse.org/M2E_Development_Environment#Building_m2e_on_command_line
repo=localrepo
xmvn -B -o install -f m2e-maven-runtime/pom.xml -Dmaven.repo.local=${repo}
%mvn_build -i -- -Dmaven.repo.local=${repo}

%install
%mvn_install

# Install plugins and features
install -d -m 755 %{buildroot}%{install_loc}
cp -a eclipse %{buildroot}%{install_loc}

# Install extra plugin dependencies
for bsn in org.apache.maven.archetype.catalog \
           org.apache.maven.archetype.descriptor \
           slf4j.api
do
  bundle=`basename .m2/p2/repo/plugins/${bsn}_*.jar`
  cp .m2/p2/repo/plugins/$bundle %{buildroot}%{install_loc}/eclipse/plugins/
  extra="$extra %{buildroot}%{install_loc}/eclipse/plugins/$bundle"
done

# Replace bundled JARs with symlinks to system JARs using XMvn Subst.  This way
# there is no need to manually synchronize JAR lists between Maven and M2E when
# some Maven dependency changes.  All that needs to be done is rebuilding M2E.
xmvn-subst -s `find %{buildroot}%{install_loc} -name jars` $extra


%files
%{install_loc}
%doc org.eclipse.m2e.core/about.html
%doc epl-v10.html LICENSE-2.0.txt

%files javadoc -f .mfiles-javadoc
%doc epl-v10.html LICENSE-2.0.txt


%changelog
* Sat Mar 22 2014 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.5.0-5
- Add explicit requires, resolves: rhbz#1079458
- Regenerate build-requires
- Rename dropin installation dir to m2e-core
- Simplify patch application with %%autopatch macro
- Use %%mvn_build and %%mvn_install macros
- Use feclipse-maven-plugin to simplify bundle installation
- Embed all dependencies in m2e-maven-runtime bundles

* Sat Mar 15 2014 Gerard Ryan <galileo@fedoraproject.org> - 1.5.0-4
- Use xmvn instead of mvn-rpmbuild

* Fri Mar 14 2014 Gerard Ryan <galileo@fedoraproject.org> - 1.5.0-3
- Patch for lucene API changes

* Tue Mar 04 2014 Stanislav Ochotnicky <sochotnicky@redhat.com> - 1.5.0-2
- Use Requires: java-headless rebuild (#1067528)

* Mon Jan 27 2014 Gerard Ryan <galileo@fedoraproject.org> - 1.5.0-1
- Update to 1.5.0-SNAPSHOT

* Mon Jan 27 2014 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-13
- Fix for RHBZ#1015324: Failing to retrieve archetypes

* Thu Jan 23 2014 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.4.0-12
- Switch to netty3 compat package

* Sat Jan  4 2014 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.4.0-11
- Fully remove CGlib from Maven runtime bundle
- Exclude AOP version of Guice from Sisu dependencies
- Fix Sisu dependency scope

* Thu Jan 02 2014 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-10
- Revert removal of workaround for missing cglib and aopalliance

* Tue Dec 31 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.4.0-9
- Remove workaround for rhbz#911365 (missing cglib and aopalliance)
- Add NOP SLF4J implementation JAR to classpath
- Use xmvn-subst to symlink JARs, resolves: rhbz#1020299

* Wed Dec 04 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-8
- Rebuild in Rawhide

* Wed Oct 02 2013 Roland Grunberg <rgrunber@redhat.com> - 1.4.0-7
- Fix bug with plexus-utils > 3.0.5.

* Tue Oct 01 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-6
- Add BR/R on aether-connector-basic in f20+

* Sun Sep 29 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-5
- Fixes for maven 3.1.0

* Sat Aug 24 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-4
- Bump release to rebuild in rawhide/f20

* Mon Aug 19 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-3
- Use Eclipse Sisu and Eclipse Aether
- Add patch for new maven-indexer

* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

* Tue Jun 25 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-1
- Update to latest upstream version 1.4.0

* Tue May 14 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.3.1-2
- Fix broken symbolic links on f19+
- Update Requires/BuildRequires

* Sun Apr 07 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.3.1-1
- Update to upstream version 1.3.1

* Wed Feb 20 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-7
- Bump release to test again in koji (previously broken deps)

* Mon Feb 18 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.2.0-6
- Drop dependency on plexus-container-default
- Resolves: rhbz#912311

* Wed Feb 06 2013 Java SIG <java-devel@lists.fedoraproject.org> - 1.2.0-5
- Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild
- Replace maven BuildRequires with maven-local

* Wed Jan 30 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-4
- Update min versions of eclipse and eclipse-emf

* Thu Jan 24 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-3
- Fix incorrect changelog entry dates.

* Tue Jan 22 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-2
- Remove javadoc.sh file from javadoc subpackage.
- Fix URL for source0.

* Tue Dec 11 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-1
- Bump to a more sane release number

* Tue Dec 11 2012 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.2.0-0.3
- Add javadoc subpackage
- Fix licensing

* Tue Dec 11 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-0.2
- Require org.apache.maven.archetype.descriptor in OSGi for m2e.core.

* Mon Dec 10 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.2.0-0.1
- Attempt update to upstream 1.2.0

* Mon Dec 10 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.1.0-4
- Force usage of sisu over plexus-containers for DefaultPlexusContainer.

* Thu Dec 06 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.1.0-3
- Add cglib and aopalliance as embedded dependencies.
- Use newer pom macro to add netty dependency.
- Add cglib and aopalliance as dependencies in org.eclipse.m2e.maven.runtime.
- Symlink catalog and descriptor jars from maven-archetype.
- Remove symlink to plexus-container-default.jar, fix sisu-guice.jar link.

* Fri Aug 10 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.1.0-2
- Fix sources.

* Sun Aug 05 2012 Gerard Ryan <galileo@fedoraproject.org> - 1.1.0-1
- Initial packaging.