Blob Blame History Raw
%global eclipse_dropins      %{_datadir}/eclipse/dropins
%global install_loc_plugins  %{eclipse_dropins}/%{name}/eclipse/plugins
%global install_loc_features %{eclipse_dropins}/%{name}/eclipse/features
%global release_tag          %{version}.20130601-0317
%global x_y                  1.4
%global release_dir          releases/%{x_y}/%{release_tag}

Name:           eclipse-m2e-core
Version:        1.4.0
Release:        3%{?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

# Exclude org.jboss.netty from the feature - causes tycho to fail
Patch7:         %{name}-m2e.feature.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


BuildArch:      noarch

BuildRequires:  aether-api
BuildRequires:  aether-connector-asynchttpclient
BuildRequires:  aether-connector-wagon
BuildRequires:  aether-impl
BuildRequires:  aether-spi
BuildRequires:  aether-util
BuildRequires:  aopalliance
BuildRequires:  apache-commons-cli
BuildRequires:  apache-commons-collections
BuildRequires:  apache-commons-io
BuildRequires:  apache-commons-lang
BuildRequires:  async-http-client
BuildRequires:  atinject
BuildRequires:  cglib
BuildRequires:  dom4j
BuildRequires:  eclipse-emf >= 2.9.0
BuildRequires:  eclipse-emf-core >= 2.9.0
BuildRequires:  eclipse-jdt >= 4.3.0
BuildRequires:  eclipse-p2-discovery >= 4.2.1
BuildRequires:  eclipse-platform >= 4.3.0
BuildRequires:  eclipse-swt >= 4.3.0
BuildRequires:  eclipse-wtp-common >= 3.5.0-1
BuildRequires:  eclipse-wtp-sourceediting >= 3.5.0-1
BuildRequires:  google-guice
BuildRequires:  guava
BuildRequires:  hamcrest
BuildRequires:  icu4j-eclipse
BuildRequires:  java-devel
BuildRequires:  jchardet
BuildRequires:  jdom
BuildRequires:  jpackage-utils
BuildRequires:  jsr-305
BuildRequires:  junit
BuildRequires:  lucene
BuildRequires:  lucene-contrib
BuildRequires:  maven-local
BuildRequires:  maven-archetype-catalog
BuildRequires:  maven-archetype-common
BuildRequires:  maven-archetype-descriptor
BuildRequires:  maven-indexer
BuildRequires:  maven-install-plugin
BuildRequires:  maven-resources-plugin
BuildRequires:  maven-compiler-plugin
BuildRequires:  maven-surefire-plugin
BuildRequires:  maven-plugin-build-helper
BuildRequires:  maven-plugin-bundle
BuildRequires:  maven-wagon
BuildRequires:  maven-wagon-ahc
BuildRequires:  netty
BuildRequires:  objectweb-asm
BuildRequires:  plexus-build-api
BuildRequires:  plexus-cipher
BuildRequires:  plexus-classworlds
BuildRequires:  plexus-containers-component-annotations
BuildRequires:  plexus-interpolation
BuildRequires:  plexus-sec-dispatcher
BuildRequires:  plexus-utils
BuildRequires:  plexus-velocity
BuildRequires:  sisu
BuildRequires:  slf4j
BuildRequires:  tycho
BuildRequires:  tycho-extras
BuildRequires:  velocity
BuildRequires:  xbean

Requires:       aether-api
Requires:       aether-connector-asynchttpclient
Requires:       aether-connector-wagon
Requires:       aether-impl
Requires:       aether-spi
Requires:       aether-util
Requires:       aopalliance
Requires:       apache-commons-cli
Requires:       apache-commons-collections
Requires:       apache-commons-io
Requires:       apache-commons-lang
Requires:       async-http-client
Requires:       atinject
Requires:       cglib
Requires:       dom4j
Requires:       eclipse-emf >= 2.9.0
Requires:       eclipse-emf-core >= 2.9.0
Requires:       eclipse-jdt >= 4.3.0
Requires:       eclipse-p2-discovery >= 4.2.1
Requires:       eclipse-platform >= 4.3.0
Requires:       eclipse-swt >= 4.3.0
Requires:       eclipse-wtp-common >= 3.5.0-1
Requires:       eclipse-wtp-sourceediting >= 3.5.0-1
Requires:       google-guice
Requires:       guava
Requires:       hamcrest
Requires:       icu4j-eclipse
Requires:       java
Requires:       jchardet
Requires:       jdom
Requires:       jpackage-utils
Requires:       jsr-305
Requires:       junit
Requires:       lucene
Requires:       lucene-contrib
Requires:       maven
Requires:       maven-archetype-catalog
Requires:       maven-archetype-common
Requires:       maven-archetype-descriptor
Requires:       maven-indexer
Requires:       maven-wagon
Requires:       maven-wagon-ahc
Requires:       netty
Requires:       objectweb-asm
Requires:       plexus-build-api
Requires:       plexus-cipher
Requires:       plexus-classworlds
Requires:       plexus-containers-component-annotations
Requires:       plexus-interpolation
Requires:       plexus-sec-dispatcher
Requires:       plexus-utils
Requires:       plexus-velocity
Requires:       sisu
Requires:       slf4j
Requires:       velocity
Requires:       xbean


%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/com.ning.async-http-client/src/main/resources/about_files/LICENSE-2.0.txt .

# These don't currently build, but don't seem to be absolutely necessary
%pom_disable_module org.eclipse.m2e.tests.common
%pom_disable_module org.eclipse.m2e.logback.appender
%pom_disable_module org.eclipse.m2e.logback.configuration
%pom_disable_module org.eclipse.m2e.logback.feature
%pom_disable_module org.eclipse.m2e.sdk.feature
%pom_disable_module org.eclipse.m2e.site
%pom_disable_module org.jboss.netty m2e-maven-runtime

# jetty already has OSGI info, so doesn't need to be bundled like it is
%pom_remove_dep org.eclipse.m2e:org.jboss.netty
%pom_add_dep io.netty:netty

# async-http-client already has OSGI info, so doesn't need to be bundled
# adding packaged version as a dep here causes some 'tycholock' problem
%pom_remove_dep org.eclipse.m2e:com.ning.async-http-client

# Don't add version to jar names that get bundled - easier for symlinking
pushd m2e-maven-runtime
  for pom in `find -name pom.xml`; do
    sed -i -e 's|</Embed-Dependency>|</Embed-Dependency><Embed-StripVersion>true</Embed-StripVersion>|g' ${pom};
  done
popd

# Add these dependencies so that they get added to OSGi classpath
pushd m2e-maven-runtime/org.eclipse.m2e.maven.runtime
      %pom_add_dep cglib:cglib
      %pom_add_dep aopalliance:aopalliance
popd

# oro is jakarta-oro in Fedora
pushd m2e-maven-runtime/org.eclipse.m2e.archetype.common/
  sed -i -e 's/oro,/jakarta-oro,/g' pom.xml
popd

# Fix OSGI generation in pom.xml for MANIFEST.MF
pushd m2e-maven-runtime/org.eclipse.m2e.maven.runtime/
  sed -i -e 's/;bundle-version=\".*/,/g' \
         -e 's/org.slf4j.api,/slf4j.api/g' pom.xml

  # While we're here, re-allow aopalliance to be embedded in OSGi
  # and exclude plexus-container-default
  sed -i -e 's/\!aopalliance|/\!plexus-container-default|/g' pom.xml

popd

# Fix incorrect bundle name and version for slf4j in manifests
find -name MANIFEST.MF \
 -exec sed -i -e 's|org.slf4j.api;bundle-version=\".*\"|slf4j.api|g' {} \;

sed -i '/setupDefaultFilters/ a setupMatchPatterns();' org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/ResourceScanner.java

%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
%patch6
%patch7
%patch8
%patch9


%build
repo=localrepo
mvn-rpmbuild -f m2e-maven-runtime/pom.xml install -Dmaven.local.repo=${repo} -X -Dmaven.local.debug=true
mvn-rpmbuild install javadoc:aggregate -Dmaven.local.repo=${repo} -X -Dmaven.local.debug=true

%install
install -d -m 0755 %{buildroot}%{install_loc_plugins}
install -d -m 0755 %{buildroot}%{install_loc_features}
install -d -m 0755 %{buildroot}%{_javadocdir}/%{name}

# Install normal plugins as packed jars
for dir in `find -name target|grep -v feature|grep -v m2e-maven-runtime|grep -v lifecyclemapping`; do
  if [ -f ${dir}/*-SNAPSHOT.jar ]; then
    cp -p ${dir}/*-SNAPSHOT.jar %{buildroot}%{install_loc_plugins}
  fi
done

# Unpack the plugins from m2e-maven-runtime
for plug in maven.runtime maven.indexer archetype.common; do
  unzip -q -d %{buildroot}%{install_loc_plugins}/org.eclipse.m2e.${plug}-%{version}-SNAPSHOT \
    m2e-maven-runtime/org.eclipse.m2e.${plug}/target/*-SNAPSHOT.jar
done

unzip -q -d %{buildroot}%{install_loc_plugins}/org.eclipse.m2e.lifecyclemapping.defaults-%{version}-SNAPSHOT \
  org.eclipse.m2e.lifecyclemapping.defaults/target/*-SNAPSHOT.jar

# symlink existing jars
pushd %{buildroot}%{install_loc_plugins}
  %{__ln_s} %{_javadir}/async-http-client/async-http-client.jar
  %{__ln_s} %{_javadir}/netty.jar
  %{__ln_s} %{_javadir}/slf4j/api.jar slf4j-api.jar
  %{__ln_s} %{_javadir}/maven-archetype/archetype-catalog.jar
  %{__ln_s} %{_javadir}/maven-archetype/archetype-descriptor.jar
popd

# delete bundled jars and symlink to system jars
pushd %{buildroot}%{install_loc_plugins}
  pushd org.eclipse.m2e.maven.runtime-%{version}-SNAPSHOT/jars
    rm -f *
    %{__ln_s} %{_javadir}/aether/api.jar aether-api.jar
    %{__ln_s} %{_javadir}/aether/connector-asynchttpclient.jar \
     aether-connector-asynchttpclient.jar
    %{__ln_s} %{_javadir}/aether/connector-wagon.jar aether-connector-wagon.jar
    %{__ln_s} %{_javadir}/aether/impl.jar aether-impl.jar
    %{__ln_s} %{_javadir}/aether/spi.jar aether-spi.jar
    %{__ln_s} %{_javadir}/aether/util.jar aether-util.jar
    %{__ln_s} %{_javadir}/aopalliance.jar
    %{__ln_s} %{_javadir}/objectweb-asm/asm.jar
    %{__ln_s} %{_javadir}/cglib.jar
    %{__ln_s} %{_javadir}/apache-commons-cli.jar commons-cli.jar
    %{__ln_s} %{_javadir}/guava.jar
    %{__ln_s} %{_javadir}/sisu/guice-bean-binders.jar
    %{__ln_s} %{_javadir}/sisu/guice-bean-converters.jar
    %{__ln_s} %{_javadir}/sisu/guice-bean-inject.jar
    %{__ln_s} %{_javadir}/sisu/guice-bean-locators.jar
    %{__ln_s} %{_javadir}/sisu/guice-bean-reflect.jar
    %{__ln_s} %{_javadir}/sisu/guice-bean-scanners.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-binders.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-converters.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-lifecycles.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-locators.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-metadata.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-scanners.jar
    %{__ln_s} %{_javadir}/sisu/guice-plexus-shim.jar
    %{__ln_s} %{_javadir}/hamcrest/core.jar hamcrest-core.jar
    %{__ln_s} %{_javadir}/atinject.jar javax.inject.jar
    %{__ln_s} %{_javadir}/jsr-305.jar jsr305.jar
    %{__ln_s} %{_javadir}/junit.jar
    %{__ln_s} %{_javadir}/maven/maven-aether-provider.jar
    %{__ln_s} %{_javadir}/maven/maven-artifact.jar
    %{__ln_s} %{_javadir}/maven/maven-compat.jar
    %{__ln_s} %{_javadir}/maven/maven-core.jar
    %{__ln_s} %{_javadir}/maven/maven-embedder.jar
    %{__ln_s} %{_javadir}/maven/maven-model.jar
    %{__ln_s} %{_javadir}/maven/maven-model-builder.jar
    %{__ln_s} %{_javadir}/maven/maven-plugin-api.jar
    %{__ln_s} %{_javadir}/maven/maven-repository-metadata.jar
    %{__ln_s} %{_javadir}/maven/maven-settings.jar
    %{__ln_s} %{_javadir}/maven/maven-settings-builder.jar
    %{__ln_s} %{_javadir}/plexus/plexus-build-api.jar
    %{__ln_s} %{_javadir}/plexus/plexus-cipher.jar
    %{__ln_s} %{_javadir}/plexus/classworlds.jar plexus-classworlds.jar
    %{__ln_s} %{_javadir}/plexus/containers-component-annotations.jar \
      plexus-component-annotations.jar
    %{__ln_s} %{_javadir}/plexus/interpolation.jar plexus-interpolation.jar
    %{__ln_s} %{_javadir}/plexus/plexus-sec-dispatcher.jar
    %{__ln_s} %{_javadir}/plexus/utils.jar plexus-utils.jar
    %{__ln_s} %{_javadir}/guice/google-guice.jar sisu-guice.jar
    %{__ln_s} %{_javadir}/maven-wagon-ahc.jar wagon-ahc.jar
    %{__ln_s} %{_javadir}/maven-wagon/file.jar wagon-file.jar
    %{__ln_s} %{_javadir}/maven-wagon/provider-api.jar wagon-provider-api.jar
    %{__ln_s} %{_javadir}/xbean/xbean-reflect.jar
  popd

  pushd org.eclipse.m2e.maven.indexer-%{version}-SNAPSHOT/
    rm *.jar

    %{__ln_s} %{_javadir}/aether/api.jar aether-api.jar
    %{__ln_s} %{_javadir}/aether/util.jar aether-util.jar
    %{__ln_s} %{_javadir}/maven-indexer-artifact.jar indexer-artifact.jar
    %{__ln_s} %{_javadir}/maven-indexer-core.jar indexer-core.jar
    %{__ln_s} %{_javadir}/lucene-core.jar
    %{__ln_s} %{_javadir}/lucene-contrib/lucene-highlighter.jar
    %{__ln_s} %{_javadir}/lucene-contrib/lucene-memory.jar
  popd

  pushd org.eclipse.m2e.archetype.common-%{version}-SNAPSHOT/
    rm *.jar

    %{__ln_s} %{_javadir}/maven-archetype/archetype-common.jar
    %{__ln_s} %{_javadir}/apache-commons-collections.jar commons-collections.jar
    %{__ln_s} %{_javadir}/apache-commons-io.jar commons-io.jar
    %{__ln_s} %{_javadir}/apache-commons-lang.jar commons-lang.jar
    %{__ln_s} %{_javadir}/dom4j.jar
    %{__ln_s} %{_javadir}/jchardet.jar
    %{__ln_s} %{_javadir}/jdom.jar
    %{__ln_s} %{_javadir}/plexus/velocity.jar plexus-velocity.jar
    %{__ln_s} %{_javadir}/velocity.jar
  popd
popd

# Install main feature
unzip -q -d %{buildroot}%{install_loc_features}/org.eclipse.m2e.feature-%{version}-SNAPSHOT \
  org.eclipse.m2e.feature/target/org.eclipse.m2e.feature-%{version}-SNAPSHOT.jar

# Javadocs
rm -f target/site/apidocs/javadoc.sh
cp -rp target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}


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

%files javadoc
%{_javadocdir}/%{name}
%doc epl-v10.html LICENSE-2.0.txt


%changelog
* Wed Oct 02 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.0-3
- Require aether-connector-asynchttpclient

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

* Tue Jun 25 2013 Gerard Ryan <galileo@fedoraproject.org> - 1.4.1-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.