Blob Blame History Raw
%{?scl:%scl_package eclipse-cdt}
%{!?scl:%global pkg_name %{name}}

%global debug_package %{nil}
%global _enable_debug_packages 0

# Change following to 0 to default to no container/remote support when building for 
# first time in a release...this is needed to build eclipse-linuxtools-docker and
# eclipse.remote which are circular dependencies of eclipse-cdt
%global _enable_container_and_remote_support 1

Epoch: 1

%define major                   8
%define minor                   7
%define majmin                  %{major}.%{minor}
%define micro                   0
%define eclipse_base            %{_libdir}/eclipse
%define cdt_snapshot		org.eclipse.cdt-CDT_8_7_0

# All arches line up except i386 -> x86
%ifarch %{ix86}
%define eclipse_arch    x86
%else
%ifarch %{arm}
%define eclipse_arch    arm
%else
%define eclipse_arch    %{_arch}
%endif
%endif

Summary:        Eclipse C/C++ Development Tools (CDT) plugin
Name:           %{?scl_prefix}eclipse-cdt
Version:        %{majmin}.%{micro}
Release:        10%{?dist}
License:        EPL and CPL
URL:            http://www.eclipse.org/cdt

Source0: http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/snapshot/%{cdt_snapshot}.tar.xz

Source3: eclipse-cdt.desktop

# man-page for /usr/bin/cdtdebug
Source4: cdtdebug.man

# Script to run the tests in Xvnc
Source5: %{name}-runtests.sh

Patch0: %{name}-tycho-build.patch

# Following adds current directory to autotools tests build.properties
Patch1: %{name}-autotools-test.patch

# Following fixes cdtdebug.sh script to get proper platform filesystem plugin
Patch2: %{pkg_name}-cdtdebug.patch

# Following fixes Standalone Debugger config.ini file to use bundle symbolic names
Patch3: %{pkg_name}-config-ini.patch

# Following fixes Standalone Debugger README file to refer to /usr/bin/cdtdebug
Patch4: %{pkg_name}-cdtdebug-readme.patch

# Following fixes jetty reqs in CDT target
Patch5: %{pkg_name}-target.patch

# Following removes docker launcher plugins from repo
Patch6: remove-docker.patch

# Following removes autotools and remote plugins from repo
Patch7: remove-remote.patch

# Following adds missing java resources to tests
Patch9: %{pkg_name}-test-resources.patch

# Following fixes missing exit code in console bug
Patch10: %{pkg_name}-exit-code.patch

BuildRequires: tycho
BuildRequires: tycho-extras
BuildRequires: %{?scl_prefix}eclipse-pde >= 1:4.3.0
BuildRequires: eclipse-license
BuildRequires: maven-local
BuildRequires: desktop-file-utils
BuildRequires: java-devel >= 1:1.7.0
BuildRequires: %{?scl_prefix}lpg-java-compat
BuildRequires: %{?scl_prefix}eclipse-platform >= 1:4.3.0
BuildRequires: %{?scl_prefix}eclipse-tests >= 1:4.3.0
BuildRequires: %{?scl_prefix}eclipse-swtbot
BuildRequires: eclipse-launchbar
BuildRequires: exec-maven-plugin
%if %{_enable_container_and_remote_support}
BuildRequires: eclipse-linuxtools-docker
BuildRequires: %{?scl_prefix}eclipse-remote
BuildRequires: %{?scl_prefix}eclipse-rse
%endif

Requires:      gdb make gcc-c++
%if %{_enable_container_and_remote_support}
Requires:      autoconf automake libtool
Requires:      %{?scl_prefix}eclipse-remote
%endif
Recommends:    eclipse-linuxtools-libhover

%description
Eclipse features and plugins that are useful for C and C++ development.

%package parsers
Summary:        Eclipse C/C++ Development Tools (CDT) Optional Parsers
Requires:       %{name} = %{epoch}:%{version}-%{release}
Requires:       lpg-java-compat

%description parsers
Optional language-variant parsers for the CDT.

%package llvm
Summary:        Eclipse C/C++ Development Tools (CDT) LLVM
Requires:       %{name} = %{epoch}:%{version}-%{release}
Requires:       lpg-java-compat
Requires:       clang

%description llvm
Optional llvm parsers for the CDT.

%package arduino
Summary:        Arduino C++ Tools
Requires:       %{name} = %{epoch}:%{version}-%{release}

%description arduino
Extensions to support Arduino C++ projects in Eclipse.

%if %{_enable_container_and_remote_support} == 1

%package docker
Summary:	C/C++ Docker Launcher
Requires:      %{name} = %{epoch}:%{version}-%{release}
Requires:	eclipse-linuxtools-docker

%description docker
Special launcher for CDT to allow launching and debugging C/C++ applications
in Docker Containers.

%endif

%package tests
Summary:	Eclipse C/C++ Development Tools (CDT) Tests
Requires:       %{name} = %{epoch}:%{version}-%{release}
Requires:       %{name}-llvm = %{epoch}:%{version}-%{release}
Requires:       %{name}-parsers = %{epoch}:%{version}-%{release}
Requires:       %{?scl_prefix}eclipse-tests

%description tests
Test plugins for the CDT.

%package sdk
Summary:        Eclipse C/C++ Development Tools (CDT) SDK plugin
Requires:       %{name} = %{epoch}:%{version}-%{release}

%description sdk
Source for Eclipse CDT for use within Eclipse.

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

# get desktop info
mkdir desktop
cp %{SOURCE3} desktop

# handle man page
mkdir man
cp %{SOURCE4} man

%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%if %{_enable_container_and_remote_support} == 0
%patch6 -p0
%patch7 -p0
%endif
%patch9 -p0
%patch10 -p1

sed -i -e 's/<arch>x86<\/arch>/<arch>%{eclipse_arch}<\/arch>/g' pom.xml
# Add secondary arch support if we are building there
%ifarch %{arm} s390 s390x aarch64
pushd core
pushd org.eclipse.cdt.core.native
sed -i -e 's/linux.x86 /linux.%{eclipse_arch} /g' plugin.properties
sed -i -e 's/\\(x86\\)/(%{eclipse_arch})/g' plugin.properties
popd
cp -r org.eclipse.cdt.core.linux.x86 org.eclipse.cdt.core.linux.%{eclipse_arch}
rm -fr org.eclipse.cdt.core.linux.x86
pushd org.eclipse.cdt.core.linux
sed -i -e 's/<arch>x86<\/arch>/<arch>%{eclipse_arch}<\/arch>/g' pom.xml
popd
pushd org.eclipse.cdt.core.linux.%{eclipse_arch}
sed -i -e 's/x86/%{eclipse_arch}/g' pom.xml
pushd META-INF
sed -i -e 's/x86/%{eclipse_arch}/g' MANIFEST.MF
popd
pushd os/linux
mv x86 %{eclipse_arch}
popd
popd
popd
pushd releng/org.eclipse.cdt.native-feature
sed -i -e 's/"org.eclipse.cdt.core.linux.x86"/"org.eclipse.cdt.core.linux.%{eclipse_arch}"/g' feature.xml
sed -i -e 's/arch="x86"/arch="%{eclipse_arch}"/' feature.xml
popd
sed -i -e "s|org.eclipse.cdt.core.linux.x86</module>|org.eclipse.cdt.core.linux.%{eclipse_arch}</module>|g" pom.xml
%endif
# Force the linux arch-specific plug-in to be a dir so that the .so files aren't loaded into
# the user.home .eclipse configuration
pushd core/org.eclipse.cdt.core.linux.%{eclipse_arch}
sed -i -e"/Bundle-Localization: plugin/ aEclipse-BundleShape: dir" META-INF/MANIFEST.MF
popd

# Disable the jgit provider and force default packaging
%pom_remove_plugin org.eclipse.tycho:tycho-packaging-plugin
%pom_remove_plugin org.jacoco:jacoco-maven-plugin

# Disable docker, autotools, and remote features if we are building a boot-strap build
%if %{_enable_container_and_remote_support} == 0
%pom_disable_module launch/org.eclipse.cdt.docker.launcher
%pom_disable_module launch/org.eclipse.cdt.docker.launcher-feature
%pom_disable_module launch/org.eclipse.cdt.docker.launcher.source-feature
%pom_disable_module build/org.eclipse.cdt.autotools.core
%pom_disable_module build/org.eclipse.cdt.autotools.ui
%pom_disable_module build/org.eclipse.cdt.autotools.docs
%pom_disable_module build/org.eclipse.cdt.autotools.tests
%pom_disable_module build/org.eclipse.cdt.autotools.ui.tests
%pom_disable_module build/org.eclipse.cdt.autotools-feature
%pom_disable_module build/org.eclipse.cdt.autotools.source-feature
%pom_disable_module build/org.eclipse.linuxtools.cdt.autotools.core
%pom_disable_module cross/org.eclipse.cdt.launch.remote
%pom_disable_module cross/org.eclipse.cdt.launch.remote-feature
%pom_disable_module remote/org.eclipse.cdt.remote.core
%pom_disable_module remote/org.eclipse.cdt.remote-feature
%endif

for b in `ls core/ | grep -P -e 'org.eclipse.cdt.core\.(?!linux\.%{eclipse_arch}$|tests$|linux$|native$)'` ; do
  module=$(grep ">core/$b<" pom.xml || :)
  if [ -n "$module" ] ; then
    %pom_disable_module core/$b
    %pom_xpath_remove "plugin[@id='$b']" releng/org.eclipse.cdt.native-feature/feature.xml
  fi
done
for b in aix macosx solaris win32 ; do
  %pom_xpath_remove "plugin[@id='org.eclipse.cdt.core.$b.source']" releng/org.eclipse.cdt.native.source-feature/feature.xml
done

sed -i -e "s|org.junit|org.hamcrest.core, org.junit|g" dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF

%build
export JAVA_HOME=%{java_home}

# Exclude EquinoxResolver to avoid NPE occuring on arm
%ifarch %{arm}
export MAVEN_OPTS="-XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState"
%endif

pushd core/org.eclipse.cdt.core.linux/library
make JAVA_HOME="%{java_home}" ARCH=%{eclipse_arch} CC='gcc -D_GNU_SOURCE'
popd

%{?scl:scl enable %{scl} - <<"EOF"}
xmvn -o -Dtycho.local.keepTarget -Dskip-ppc64le -Dmaven.test.skip=true -Dmaven.repo.local=`pwd`/.m2 install
%{?scl:EOF}

%install

installDir=${RPM_BUILD_ROOT}/%{eclipse_base}/dropins/cdt
testInstallDir=${RPM_BUILD_ROOT}/%{_javadir}/eclipse-cdt-tests/plugins
parsersInstallDir=${installDir}-parsers
%if %{_enable_container_and_remote_support} == 1
dockerInstallDir=${installDir}-docker
%endif
arduinoInstallDir=${installDir}-arduino
llvmInstallDir=${installDir}-llvm
sdkInstallDir=${installDir}-sdk
binInstallDir=${RPM_BUILD_ROOT}/%{_bindir}
manInstallDir=${RPM_BUILD_ROOT}/%{_mandir}/man1
install -d -m755 $installDir
install -d -m755 $parsersInstallDir
install -d -m755 $arduinoInstallDir
install -d -m755 $llvmInstallDir
install -d -m755 $sdkInstallDir
install -d -m755 $testInstallDir
install -d -m755 $binInstallDir
install -d -m755 $manInstallDir
%if %{_enable_container_and_remote_support} == 1
install -d -m755 $dockerInstallDir
%endif

# Unzip contents of the cdt repo, removing all but plugins and features
unzip -q -o releng/org.eclipse.cdt.repo/target/org.eclipse.cdt.repo.zip \
-d $installDir/eclipse

#tests
# We need grep to return non-zero status to skip all non eclipse-test-plugins
set +e
for pom in `find . -name pom.xml`; do
 grep -q '<packaging>eclipse-test-plugin</packaging>' ${pom}
 if [ $? -eq 0 ]; then
   testjar=`ls ${pom/pom.xml/}'target/'*.jar | grep -v sources`
   cp ${testjar} $testInstallDir
 fi
done
set -e

cat << EOF > eclipse-runCDTTestBundles
#! /bin/bash
eclipse-runTestBundles %{_javadir}/eclipse-cdt-tests
EOF

install -D -m 755 eclipse-runCDTTestBundles %{buildroot}%{_bindir}/eclipse-runCDTTestBundles

# Unzip CDT Standalone Debug plugin which contains installation scripts for the end-user to use
pushd ${installDir}/eclipse/plugins
DEBUGAPPLICATIONVERSION=$(ls . | grep org.eclipse.cdt.debug.application_ | sed 's/org.eclipse.cdt.debug.application_//' |sed 's/.jar//')
unzip org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION.jar -d ./org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION
# Copy the jar file inside the folder to work around issue where standalone application cannot be found without a jar file
mv org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION.jar org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/org.eclipse.cdt.debug.application.jar
# Fix the cdtdebug.sh script to hard-code ECLIPSE_HOME and cdt dropins directory
sed -i -e "s,@ECLIPSE_HOME@,%{eclipse_base}," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/cdtdebug.sh
sed -i -e "s,@CDT_DROPINS@,%{eclipse_base}/dropins/cdt/eclipse/plugins," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/cdtdebug.sh
# Fix the dropin bundles to have full paths to their respective jar files as Eclipse start-up won't find them otherwise
PLUGIN=$(ls . | grep org.eclipse.cdt.core.linux_)
sed -i -e "s,org.eclipse.cdt.core.linux\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.core_)
sed -i -e "s,org.eclipse.cdt.core\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.ui.memory.floatingpoint_)
sed -i -e "s,org.eclipse.cdt.debug.ui.memory.floatingpoint\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.make.core_)
sed -i -e "s,org.eclipse.cdt.make.core\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.dsf.ui_)
sed -i -e "s,org.eclipse.cdt.dsf.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.ui.memory.traditional_)
sed -i -e "s,org.eclipse.cdt.debug.ui.memory.traditional\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.ui_)
sed -i -e "s,org.eclipse.cdt.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.core_)
sed -i -e "s,org.eclipse.cdt.core\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.application_)
sed -i -e "s,org.eclipse.cdt.debug.application\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN/org.eclipse.cdt.debug.application.jar\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.application.doc_)
sed -i -e "s,org.eclipse.cdt.debug.application.doc\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.dsf.gdb.ui_)
sed -i -e "s,org.eclipse.cdt.dsf.gdb.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.mi.ui_)
sed -i -e "s,org.eclipse.cdt.debug.mi.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.launch_)
sed -i -e "s,org.eclipse.cdt.launch\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.managedbuilder.core_)
sed -i -e "s,org.eclipse.cdt.managedbuilder.core\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.managedbuilder.gnu.ui_)
sed -i -e "s,org.eclipse.cdt.managedbuilder.gnu.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.gdb_)
sed -i -e "s,org.eclipse.cdt.gdb\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.dsf.gdb_)
sed -i -e "s,org.eclipse.cdt.dsf.gdb\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.dsf_)
sed -i -e "s,org.eclipse.cdt.dsf\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.mi.core_)
sed -i -e "s,org.eclipse.cdt.debug.mi.core\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.gdb.ui_)
sed -i -e "s,org.eclipse.cdt.gdb.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.ui.memory.transport_)
sed -i -e "s,org.eclipse.cdt.debug.ui.memory.transport\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.ui.memory.search_)
sed -i -e "s,org.eclipse.cdt.debug.ui.memory.search\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.ui.memory.memorybrowser_)
sed -i -e "s,org.eclipse.cdt.debug.ui.memory.memorybrowser\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.ui_)
sed -i -e "s,org.eclipse.cdt.debug.ui\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.debug.core_)
sed -i -e "s,org.eclipse.cdt.debug.core\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep org.eclipse.cdt.core.native_)
sed -i -e "s,org.eclipse.cdt.core.native\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
PLUGIN=$(ls . | grep 'org.eclipse.cdt.core.linux\..*.jar' | grep -v source)
sed -i -e "s,\$linux.plugin\$\,,file\\\\:%{eclipse_base}/dropins/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
sed -i -e "s,cp config.ini,cp %{eclipse_base}/dropins/cdt/eclipse/plugins/org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/cdtdebug.sh
sed -i -e "s,cp dev.properties,cp %{eclipse_base}/dropins/cdt/eclipse/plugins/org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/dev.properties," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/cdtdebug.sh
cp org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/cdtdebug.sh $binInstallDir/cdtdebug
popd

install -D desktop/eclipse-cdt.desktop $RPM_BUILD_ROOT/%{_datadir}/applications/%{?scl_prefix}eclipse-cdt.desktop
desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/%{?scl_prefix}eclipse-cdt.desktop

# man page
cp man/cdtdebug.man $manInstallDir/cdtdebug.1

# Unpack all existing feature jars
for x in $installDir/eclipse/features/*.jar; do
  dirname=`echo $x | sed -e 's:\\(.*\\)\\.jar:\\1:g'`
  mkdir -p $dirname
  unzip -q $x -d $dirname
  rm $x
done 

# Remove lpgjavaruntime jar file
rm -rf $installDir/eclipse/plugins/net.sourceforge.*

# Move upc, xlc, and lrparser plugins/features to parsers install area.
mkdir -p $parsersInstallDir/eclipse/features $parsersInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*xlc* $parsersInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*xlc* $parsersInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*lrparser* $parsersInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*lrparser* $parsersInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*upc* $parsersInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*upc* $parsersInstallDir/eclipse/plugins
pushd $parsersInstallDir/eclipse/plugins
ln -s /usr/share/java/lpgjavaruntime.jar net.sourceforge.lpg.lpgjavaruntime_1.1.0.jar
popd

# Move llvm plugins/features to llvm install area.
mkdir -p $llvmInstallDir/eclipse/features $llvmInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*llvm* $llvmInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*llvm* $llvmInstallDir/eclipse/plugins

# Move arudion plugins/features to arduino install area.
mkdir -p $arduinoInstallDir/eclipse/features $arduinoInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*arduino* $arduinoInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*arduino* $arduinoInstallDir/eclipse/plugins

%if %{_enable_container_and_remote_support} == 1
# Move docker launcher plugins/features to docker install area.
mkdir -p $dockerInstallDir/eclipse/features $dockerInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*docker* $dockerInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*docker* $dockerInstallDir/eclipse/plugins
%endif

mkdir -p $sdkInstallDir/eclipse/features $sdkInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*source* $sdkInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*source* $sdkInstallDir/eclipse/plugins
mv $installDir/eclipse/plugins/org.eclipse.cdt.doc.isv_* $sdkInstallDir/eclipse/plugins
mv $installDir/eclipse/features/*sdk* $sdkInstallDir/eclipse/features
mv $installDir/eclipse/plugins/*sdk* $sdkInstallDir/eclipse/plugins

rm -rf $installDir/eclipse/features/org.eclipse.cdt.master_*
rm -rf $installDir/eclipse/plugins/org.eclipse.ant.optional.junit_*
rm -rf $installDir/eclipse/plugins/org.eclipse.test_*

# remove repo stuff that shouldn't be in dropins folder
rm -rf $installDir/eclipse/artifacts.jar
rm -rf $installDir/eclipse/content.jar
rm -rf $installDir/eclipse/binary

%files
%{eclipse_base}/dropins/cdt
%{_bindir}/cdtdebug
%{_datadir}/applications/*
%{_mandir}/man1/cdtdebug.1*
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html

%files sdk
%{eclipse_base}/dropins/cdt-sdk
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html

%files parsers
%{eclipse_base}/dropins/cdt-parsers
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html

%files tests
%{_javadir}/eclipse-cdt-tests
%{_bindir}/eclipse-runCDTTestBundles
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html

%files llvm
%{eclipse_base}/dropins/cdt-llvm
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html

%files arduino
%{eclipse_base}/dropins/cdt-arduino
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html

%if %{_enable_container_and_remote_support} == 1
%files docker
%{eclipse_base}/dropins/cdt-docker
%doc releng/org.eclipse.cdt.releng/epl-v10.html
%doc releng/org.eclipse.cdt.releng/notice.html
%endif

%changelog
* Mon Sep 21 2015 Jeff Johnston <jjohnstn@redhat.com> - 1:8.7.0-10
- Fix missing test resources
- Fix missing exit code in console

* Tue Aug 04 2015 Roland Grunberg <rgrunber@redhat.com> - 1:8.7.0-9
- Add script for automatically launching CDT Test Bundles.

* Fri Jul 10 2015 Mat Booth <mat.booth@redhat.com> - 1:8.7.0-8
- No longer R/BR nekohtml

* Tue Jul 07 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-7
- Change macro controlling docker support to also control remote support
- Disable autotools and remote plug-ins/features if macro is 0
- This allows boot-strapping CDT for use by eclipse-remote and
  eclipse-linuxtools-docker packages
 
* Thu Jul 02 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-6
- Add missing src file test resources referred to by test cases.

* Mon Jun 29 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-5
- Fix for bug 1235942.
- Fix up some dependencies in the config.ini file that have changed their
  OSGI reference in rawhide.

* Fri Jun 26 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-4
- Fix for bug 1235942.
- Add back patch3 which is needed to set up the config.ini file properly.
- Also add some new dependencies to the config.ini file that were added
  as part of CDT 8.7.

* Fri Jun 26 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-3
- Fix for bug 1235945.
- Move Docker launcher plug-ins to own package: eclipse-cdt-docker.

* Thu Jun 25 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-2
- Use simpler macro to control container support and fix macro tests.

* Tue Jun 23 2015 Jeff Johnston <jjohnstn@redhat.com> 1:8.7.0-1
- Switch to use CDT_8_7 tag.
- Add with conditional to remove container support or add it in.

* Mon Jun 15 2015 Alexander Kurtakov <akurtako@redhat.com> 1:8.7.0-0.6.gitd13a53c
- Fix build with Tycho 0.23.
- Update to newer snapshot.
- Drop rse R as it's autogen.

* Thu Jun 4 2015 Alexander Kurtakov <akurtako@redhat.com> 1:8.7.0-0.5.git6c36f7f
- Disable jacoco plugin and remove useless directory from the build.

* Thu Jun 4 2015 Alexander Kurtakov <akurtako@redhat.com> 1:8.7.0-0.4.git6c36f7f
- Add arduino subpackage and enable building arduino plugins.

* Wed Jun 3 2015 Alexander Kurtakov <akurtako@redhat.com> 1:8.7.0-0.3.git6c36f7f
- Drop Linux Tools libhover compilation and Recommend eclipse-linuxtools-libhover instead. 

* Wed Jun 3 2015 Alexander Kurtakov <akurtako@redhat.com> 1:8.7.0-0.2.git6c36f7f
- Newer snapshot.
- Enable remote feature now that deps are available.
- Drop Group tags.

* Mon Jun 1 2015 Alexander Kurtakov <akurtako@redhat.com> 1:8.7.0-0.1.git136c034
- Update to 8.7.0 pre-release.