%bcond_without bootstrap
# Main version can be seen here http://www.jetbrains.com/idea/download/index.html
# while the build numbers corresponds to tags in VCS
%define idea_version 9.0.1
%define idea_build 94.399
Name: intellij-idea
Version: %{idea_version}.%{idea_build}
Release: 8%{?dist}
Summary: IntelliJ IDEA Community Edition IDE
Group: Development/Tools
License: ASL 2.0 and LGPLv2 and CDDL and SPL
# trove4j: LGPLv2
# eawtstub: GPLv2 or CDDL
# javacvs: SPL
URL: http://www.jetbrains.com/idea/nextversion/free_java_ide.html
# git clone --bare git://git.jetbrains.org/idea/community.git idea
# cd idea; git archive 94.399 --prefix=idea-94.399/ |xz >idea-94.399.tar.xz
Source0: idea-%{idea_build}.tar.xz
Source1: intellij-idea-idea
Source2: intellij-idea.desktop
Source3: intellij-idea-cvsIntegration.sh
Source4: intellij-idea-git4idea.sh
Source5: intellij-idea-Groovy.sh
Source6: intellij-idea-svn4idea.sh
Source7: intellij-idea-testng.sh
# Used only for bootstrapping
Source10: jps.jar
Source11: javac2.jar
# Build changes
Patch1: 0001-Delete-unneeded-import-that-is-not-compatible-with-O.patch
Patch2: 0002-Pull-ASM-3.2-from-ObjectWeb.patch
Patch3: 0003-Make-the-NotNull-instrumenter-work-with-stock-asm.patch
Patch4: 0004-Pull-cglib-2.2.patch
Patch5: 0005-Make-it-build-with-cglib-2.2.patch
Patch6: 0006-Fix-build-of-svn-plugin-against-newer-svnkit.patch
Patch7: 0007-Rename-javac.util.DefaultFileManager-for-OpenJDK-1.6.patch
Patch8: 0008-Make-groovy-plugin-build.patch
Patch9: 0009-Do-not-install-stuff-from-lib.patch
Patch10: 0010-Use-system-wide-installed-gant-ant-and-jps.patch
Patch11: 0011-Chop-out-proxy-support-for-CVS-plugin.patch
Patch12: 0012-Scriptlet-and-rules-to-replace-bundled-jars.patch
Patch13: 0013-Scriptlet-to-disable-certain-modules.patch
Patch14: 0014-Make-it-build.patch
Patch15: 0015-Look-for-Eclipse-JDT-in-Fedora-location.patch
Patch16: 0016-Disable-update-checks-per-default.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%if %without bootstrap
BuildRequires: jps
BuildRequires: intellij-idea
%endif
BuildRequires: ant
BuildRequires: ant-jakarta-oro
BuildRequires: antlr
BuildRequires: ant-nodeps
BuildRequires: cglib = 2.2
BuildRequires: classworlds
BuildRequires: commons-beanutils
BuildRequires: commons-codec
BuildRequires: commons-collections
BuildRequires: commons-net
BuildRequires: eclipse-jdt
BuildRequires: gant
BuildRequires: ganymed-ssh2
BuildRequires: gradle-open-api
BuildRequires: groovy
BuildRequires: jakarta-commons-cli
BuildRequires: jakarta-commons-lang
BuildRequires: jakarta-commons-logging
BuildRequires: jakarta-oro
BuildRequires: java-1.6.0-openjdk-devel
BuildRequires: javahelp2
BuildRequires: jaxen
BuildRequires: jazzy
BuildRequires: jdom
BuildRequires: jgoodies-forms
BuildRequires: jgoodies-looks
BuildRequires: jna
BuildRequires: jna-examples >= 3.0.9
BuildRequires: junit
BuildRequires: junit4 >= 4.6
BuildRequires: log4j
BuildRequires: lucene
BuildRequires: lucene-core
BuildRequires: mercury
BuildRequires: microba
BuildRequires: nanoxml
BuildRequires: objectweb-asm
BuildRequires: patricia-trie
BuildRequires: picocontainer
BuildRequires: plexus-digest
BuildRequires: plexus-utils
BuildRequires: svnkit
BuildRequires: testng
BuildRequires: trilead-ssh2
BuildRequires: velocity
BuildRequires: xerces-j2
BuildRequires: xmlbeans
BuildRequires: xml-commons-resolver
BuildRequires: xmlrpc
BuildRequires: xstream
BuildRequires: ImageMagick
BuildRequires: desktop-file-utils
BuildRequires: jcip-annotations
# Base
Requires: ant-apache-oro
Requires: ant-nodeps
Requires: cglib
Requires: commons-codec
Requires: commons-collections
Requires: commons-net
Requires: eclipse-jdt
Requires: groovy
Requires: jakarta-commons-lang
Requires: jakarta-oro
Requires: java-1.6.0-openjdk-devel
Requires: javahelp2
Requires: jaxen
Requires: jdom
Requires: jgoodies-forms
Requires: jgoodies-looks
Requires: jna
Requires: jna-examples
Requires: junit
Requires: junit4
Requires: log4j
Requires: microba
Requires: nanoxml
Requires: objectweb-asm
Requires: picocontainer
Requires: velocity
Requires: xerces-j2
Requires: xmlbeans
Requires: xml-commons-resolver
Requires: xmlrpc
Requires: xstream
Requires: intellij-idea-annotations
# Modules
Requires: trilead-ssh2
Requires: gradle-open-api
Requires: svnkit
Requires: testng
%description
IntelliJ IDEA Community Edition features an intelligent code editor that has
all the smarts for understanding Java code; provides refactorings, code
inspections and intentions, super-fast navigation and search. It integrates
with such essential tools as JUnit and TestNG, Ant and Maven, and popular
version control systems: CVS, Subversion and git. XML-Java interoperability
and comprehensive Groovy language support are complemented by the Swing UI
designer providing the suite of tools for developing Java desktop
applications - such as IntelliJ IDEA itself.
%package annotations
Summary: IntelliJ IDEA Community Edition IDE
Group: Development/Tools
URL: http://www.jetbrains.com/idea/features/annotation_java.html
%description annotations
This package contains IntelliJ IDEA annotation classes as well as compiler
extension and Ant tasks to process the annotations.
%prep
%setup -q -n idea-%{idea_build}
# The patched gnu-trove, adds some equality classes,
# seems like based on 1.0.2
unzip -qd trove4j lib/src/trove4j_src.jar
# This is some code specific to cocoa GUI, originates
# from netbeans, though not packaged with it when
# not on OS X. Not distributed separately.
unzip -qd eawtstub lib/src/eawtstub_src.zip
# Patches
# At least ones against .idea should not make backups
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%build
# Fix up build number
sed 's/\(buildNumber: "IC\)-[^"]*/\1-%{idea_build}/' \
-i build/scripts/dist.gant
# Build patched trove4j
mkdir -p trove4j/out
find trove4j/src -name '*.java' |xargs javac -d trove4j/out
jar cf trove4j/trove4j.jar -C trove4j/out .
# Build standalone eawt stub
cd eawtstub
ant -Djavac.source=1.5 -Djavac.target=1.5 jar
cd ..
# We don't build certain modules until we sort out the dependencies
sh disablemodules.sh
# Replace the prebuilt JARS
sh replacedeps.sh <replacerules.txt
# Drop bundled gant
find build/lib/ -type f -delete
# Drop other prebuilt stuff
find lib java plugins -name '*.jar' -not -name 'serviceMessages.jar' -delete
# Break generator
cd native/breakgen
gcc -I/usr/lib/jvm/java/include/linux -I/usr/lib/jvm/java/include \
%{optflags} -shared -fPIC -o libbreakgen.so AppMain.c
cd ../..
cp -fl native/breakgen/libbreakgen.so bin/linux/libbreakgen.so
cp -fl bin/linux/libbreakgen.so bin/linux/libbreakgen64.so
%if %with bootstrap
sed '
/gant_patches.jar/d
s|/usr/share/java/idea/javac2.jar|%{SOURCE11}|;
s|/usr/share/java/jps/jps.jar|%{SOURCE10}|;
' -i build.xml
%endif
# Fire!
ant
%install
rm -rf $RPM_BUILD_ROOT
# Directory structure
install -d $RPM_BUILD_ROOT%{_javadir}/idea
install -d $RPM_BUILD_ROOT%{_libdir}/idea/bin
install -d $RPM_BUILD_ROOT%{_bindir}
install -d $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -d $RPM_BUILD_ROOT%{_datadir}/applications
# Core
install -p -m644 out/dist.all.ce/lib/*.jar trove4j/trove4j.jar \
$RPM_BUILD_ROOT%{_javadir}/idea
install -p -m644 out/dist.all.ce/lib/*.jar trove4j/trove4j.jar \
$RPM_BUILD_ROOT%{_javadir}/idea
install -p -m644 bin/idea.properties bin/log.xml bin/appletviewer.policy \
$RPM_BUILD_ROOT%{_libdir}/idea/bin
install -p -m755 bin/linux/libbreakgen.so \
$RPM_BUILD_ROOT%{_libdir}/idea/bin
install -p -m755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/idea
# Plugins
cp -a out/dist.all.ce/plugins $RPM_BUILD_ROOT%{_libdir}/idea
install -p -m644 %{SOURCE3} \
$RPM_BUILD_ROOT%{_libdir}/idea/plugins/cvsIntegration/cvsIntegration.sh
install -p -m644 %{SOURCE4} \
$RPM_BUILD_ROOT%{_libdir}/idea/plugins/git4idea/git4idea.sh
install -p -m644 %{SOURCE5} \
$RPM_BUILD_ROOT%{_libdir}/idea/plugins/Groovy/Groovy.sh
install -p -m644 %{SOURCE6} \
$RPM_BUILD_ROOT%{_libdir}/idea/plugins/svn4idea/svn4idea.sh
install -p -m644 %{SOURCE7} \
$RPM_BUILD_ROOT%{_libdir}/idea/plugins/testng/testng.sh
# Menu entry
convert out/classes/production/icons/idea_CE.ico idea.png
mv idea-0.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}-ce.png
desktop-file-install %{SOURCE2} \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%{_bindir}/idea
%{_libdir}/idea
%dir %{_javadir}/idea
%{_javadir}/idea/boot.jar
%{_javadir}/idea/bootstrap.jar
%{_javadir}/idea/extensions.jar
%{_javadir}/idea/forms_rt.jar
%{_javadir}/idea/icons.jar
%{_javadir}/idea/idea.jar
%{_javadir}/idea/idea_rt.jar
%{_javadir}/idea/openapi.jar
%{_javadir}/idea/resources_en.jar
%{_javadir}/idea/resources.jar
%{_javadir}/idea/trove4j.jar
%{_javadir}/idea/util.jar
%{_datadir}/pixmaps/%{name}-ce.png
%{_datadir}/applications/%{name}.desktop
%doc LICENSE.txt
%files annotations
%{_javadir}/idea/javac2.jar
%{_javadir}/idea/annotations.jar
%doc LICENSE.txt
%changelog
* Fri Apr 02 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.399-8
- Correct path to Eclipse JDT
- Set up OpenJDK 1.6.0 SDK per default
- Disable updates check
* Mon Mar 29 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.399-2
- Bootstrap
* Sun Mar 28 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.399-1
- Update to a later build
- Split annotations into a subpackage
- Provide a way for plugins to add their dependencies to a classpath
- Fix @NotNull processing, re-enable it
* Tue Mar 23 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.393-6
- Disable bootstrap
* Thu Mar 18 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.393-5
- Re-enable SVN
- Fix License tag
- Build breakgen with proper compiler flags
* Wed Feb 24 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.310-4
- Enable all plugins, except for maven
* Tue Feb 23 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.310-3
- Build with external jps
- Depend upon ourselves -- make it possible to bootstrap
* Wed Feb 17 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.310-2
- Use objectweb-asm 3.1 instead of asm2, needed for new groovy
* Tue Feb 16 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0.1.94.310-1
- Rebase to newest upstream build
* Tue Feb 16 2010 Lubomir Rintel <lkundrak@v3.sk> - 9.0-0.2.20091028git
- Builds against Fedora
* Fri Oct 30 2009 Lubomir Rintel <lkundrak@v3.sk> - 9.0-0.1.20091028git
- Packaging start