File intellij-idea.spec of Package intellij-idea
# speedup a bit for now
%global __jar_repack %{nil}
Name: intellij-idea
Version: 9.0
Release: 0.2.20091028git%{?dist}.os1
Summary: IntelliJ IDEA Community Edition IDE
Group: Development/Tools
# XXX: Trove, EAWT!
License: ASL 2.0
URL: http://www.jetbrains.com/idea/nextversion/free_java_ide.html
# git clone --bare git://git.jetbrains.org/idea/community.git intellij-idea-9.0
# (cd intellij-idea-9.0 && git checkout 50da4c)
# tar cf intellij-idea-9.0.tar intellij-idea-9.0 --exclude .git
# xz -9 intellij-idea-9.0.tar
Source0: %{name}-%{version}.tar.xz
Source1: intellij-idea-idea
Patch0: 0001-Make-it-build.patch
Patch1: 0001-Fix-with-newer-jna.patch
Patch2: 0001-Do-not-install-stuff-from-lib.patch
Patch3: 0001-Do-not-try-to-use-precompiled-ant-libraries.patch
Patch4: 0001-Rename-javac.util.DefaultFileManager-for-OpenJDK-1.6.patch
Patch5: 0001-Scriptlet-to-disable-modules.patch
Patch6: 0001-Scriptlet-and-rules-to-replace-bundled-jars.patch
Patch7: 0001-Make-it-build-with-cglib-2.2.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: groovy
BuildRequires: xmlrpc
BuildRequires: jakarta-commons-codec
BuildRequires: javahelp2
BuildRequires: picocontainer
BuildRequires: objectweb-asm
BuildRequires: microba
BuildRequires: oro
BuildRequires: jgoodies-forms
BuildRequires: jgoodies-looks
BuildRequires: nanoxml
BuildRequires: junit4 >= 4.6
BuildRequires: jdom
BuildRequires: xstream
BuildRequires: jaxen
BuildRequires: log4j
BuildRequires: xmlbeans
BuildRequires: xml-commons-resolver
BuildRequires: jakarta-commons-net
BuildRequires: jna-examples >= 3.0.9
BuildRequires: jna
BuildRequires: velocity
BuildRequires: jakarta-commons-lang
BuildRequires: eclipse-jdt
BuildRequires: jakarta-commons-collections
BuildRequires: cglib = 2.2
BuildRequires: xerces-j2
BuildRequires: junit
BuildRequires: xz
BuildRequires: unzip
Requires: groovy
Requires: xmlrpc
Requires: jakarta-commons-codec
Requires: javahelp2
Requires: picocontainer
Requires: objectweb-asm
Requires: microba
Requires: oro
Requires: jgoodies-forms
Requires: jgoodies-looks
Requires: nanoxml
Requires: junit4 >= 4.6
Requires: jdom
Requires: xstream
Requires: jaxen
Requires: log4j
Requires: xmlbeans
Requires: xml-commons-resolver
Requires: jakarta-commons-net
Requires: jna-examples >= 3.0.9
Requires: jna
Requires: velocity
Requires: jakarta-commons-lang
Requires: jakarta-commons-collections
Requires: cglib
Requires: xerces-j2
Requires: junit
Requires: eclipse-jdt
%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.
%prep
%setup -q
# 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 -d eawtstub lib/src/eawtstub_src.zip
# Patches
%patch0 -p1 -b .build
%patch1 -p1 -b .jna
%patch2 -p1 -b .lib
%patch3 -p1 -b .ant
%patch4 -p1 -b .ant
%patch5 -p1 -b .modules
%patch6 -p1 -b .deps
%patch7 -p1 -b .cglib22
%build
# Drop prebuilt stuff
# TODO: build/lib/gant
find lib java plugins -name '*.jar' -not -name 'serviceMessages.jar' -delete
# 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 jar
cd ..
# We don't build modules until we sort out the dependencies
# XXX: FIXME!
sh disablemodules.sh
# Replace the prebuilt JARS
sh replacedeps.sh <replacerules.txt
# Fire!
ant
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_javadir}/idea
install -d $RPM_BUILD_ROOT%{_libdir}/idea/bin
install -d $RPM_BUILD_ROOT%{_bindir}
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 \
bin/linux/libbreakgen.so $RPM_BUILD_ROOT%{_libdir}/idea/bin
install -p -m755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/idea
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%{_bindir}/idea
%{_libdir}/idea
%{_javadir}/idea
%doc
%changelog
* Fri Oct 30 2009 Lubomir Rintel <lkundrak@v3.sk> - 9.0-0.1.20091028git
- Initial packaging