File fp-ide-en.spec of Package fp-ide-en
%define debug_package %{nil}
%define gdb_ver 7.5.1
Summary: Text Mode Free Pascal IDE (English)
Name: fp-ide-en
Version: 2.6.2
Release: 0
License: GPLv2+ and LGPLv2+ with exceptions
Group: Development/Tools
#Url: http://code.google.com/p/fp-ide-en
Url: http://sourceforge.net/projects/freepascal
#Main source
Source0: fpcbuild-%{version}.tar.gz
#Icon
Source1: %{name}.png
#Script for run IDE
Source2: %{name}
#Add IDE in Menu
Source3: %{name}.desktop
#From ftp://ftp.freepascal.org/pub/fpc/dist/
Source6: doc-html.tar.gz
#It's works with renamed *.a
Source9: gdbint.pp
#For printing
Source10: fp-prn-en
#It's shows when IDE runs the first time
Source11: readme_en.ide
#Don't change this source, because you will need adaptation sources and patches
Source13: gdb-%{gdb_ver}.tar.bz2
#For printing
Patch1: fpide_prn_support_0.patch
#For printing
Patch2: fpmfile_prn_en_support_1.patch
#Fix http://bugs.freepascal.org/view.php?id=23682
Patch4: fpkeys.patch
#Fix http://bugs.freepascal.org/view.php?id=23683
Patch5: process_window_info.patch
#Fix http://bugs.freepascal.org/view.php?id=23957
Patch6: indicator_draw_x86_64.patch
#Don't show message on mouse click
Patch7: mouse_click.patch
#For correctly link *.a
Patch8: gdb_link.patch
#Fix http://bugs.freepascal.org/view.php?id=25230
Patch9: fix_incorrect_hints.patch
#Fix http://bugs.freepascal.org/view.php?id=25202
Patch10: fpswitch.pas.patch
#Fix http://bugs.freepascal.org/view.php?id=25239
Patch11: help_buttons.patch
#Fix http://bugs.freepascal.org/view.php?id=25280
Patch12: fix_min_size.patch
#Compiler fpc (which have Requires: gpm, ncurses, binutils)
Requires: fpc = %{version}
#No Requires for gdb, because there is gdb in fp binary
#Requires: gdb = %{gdb_ver}
#For notify-send; you don't need notify-send, because fp-ide-en uses notify-send from package fp-ide-ru (if fp-ide-ru is not installed, then no messages)
#Requires: libnotify
#For work of IDE
Requires: coreutils
#For compiling in IDE, for ptcgraph
Requires: glibc-devel, gcc, pkgconfig(x11), pkgconfig(xrandr), pkgconfig(xxf86vm), pkgconfig(xext), pkgconfig(xxf86dga)
#For svn tools in IDE
Suggests: subversion
#For grep in IDE
Suggests: grep
#Fundamental for building
BuildRequires: fpc, gcc
#For iconv in spec
BuildRequires: glibc
#For libexpat.so when build linking
BuildRequires: expat libexpat-devel
#For libncurses.so when build linking
#####BuildRequires: pkgconfig(ncurses)
BuildRequires: ncurses-devel
#For libz.a (for gdb >= 7.5.1)
BuildRequires: zlib zlib-devel zlib-devel-static
#For building gdb
BuildRequires: termcap
%description
Text Mode Free Pascal IDE (English)
%prep
%setup -q -n fpcbuild-%{version}
cd fpcsrc
%patch9 -p0
%patch1 -p0
%patch2 -p0
%patch4 -p0
%patch5 -p0
%patch6 -p0
%patch7 -p0
%patch8 -p0
%patch10 -p0
%patch11 -p0
%patch12 -p0
cp -f %{SOURCE9} ./packages/gdbint/src/
tar -xf %{SOURCE6}
#Fix year
sed -i -e "s|1998-2011|1998-2013|g" ./ide/fpviews.pas
#Fix for better result
sed -i -e "s|Write(' Press any key to return to IDE');|Writeln(' Press any key to return to IDE');|g" ./ide/fpide.pas
#Fix symbols in html
iconv -c -s -f ISO-8859-15 -t UTF-8 ./doc/user/user.html > ./doc/user/user.html.tmp
sed -i -e "s|>ël Van Canneyt<|>el Van Canneyt<|g" ./doc/user/user.html.tmp
sed -i -e "s|>ämpfl<|>ampfl<|g" ./doc/user/user.html.tmp
iconv -c -s -f UTF-8 -t ISO-8859-15 ./doc/user/user.html.tmp > ./doc/user/user.html
rm -f ./doc/user/user.html.tmp
iconv -c -s -f ISO-8859-15 -t UTF-8 ./doc/prog/prog.html > ./doc/prog/prog.html.tmp
sed -i -e "s|>ël Van Canneyt<|>el Van Canneyt<|g" ./doc/prog/prog.html.tmp
iconv -c -s -f UTF-8 -t ISO-8859-15 ./doc/prog/prog.html.tmp > ./doc/prog/prog.html
rm -f ./doc/prog/prog.html.tmp
iconv -c -s -f ISO-8859-15 -t UTF-8 ./doc/ref/ref.html > ./doc/ref/ref.html.tmp
sed -i -e "s|>ël Van Canneyt<|>el Van Canneyt<|g" ./doc/ref/ref.html.tmp
iconv -c -s -f UTF-8 -t ISO-8859-15 ./doc/ref/ref.html.tmp > ./doc/ref/ref.html
rm -f ./doc/ref/ref.html.tmp
iconv -c -s -f ISO-8859-15 -t UTF-8 ./doc/fpdoc/fpdoc.html > ./doc/fpdoc/fpdoc.html.tmp
sed -i -e "s|>ël Van Canneyt<|>el Van Canneyt<|g" ./doc/fpdoc/fpdoc.html.tmp
iconv -c -s -f UTF-8 -t ISO-8859-15 ./doc/fpdoc/fpdoc.html.tmp > ./doc/fpdoc/fpdoc.html
rm -f ./doc/fpdoc/fpdoc.html.tmp
#Add IDE's path
sed -i -e "s|SystemIDEDir:=FExpand(DirOf(system.paramstr(0))+'../lib/fpc/'+version_string+'/ide/text');|SystemIDEDir:='%{_datadir}/%{name}';|g" ./ide/fpini.pas
sed -i -e "s|SystemIDEDir:=FExpand(DirOf(system.paramstr(0))+'../lib64/fpc/'+version_string+'/ide/text');|SystemIDEDir:='%{_datadir}/%{name}';|g" ./ide/fpini.pas
sed -i -e "s|SystemIDEDir:='/usr/lib/fpc/'+version_string+'/ide/text';|SystemIDEDir:='%{_datadir}/%{name}';|g" ./ide/fpini.pas
#Add path for readme.ide and added readme.ide into Help menu instead "Using help"
sed -i -e "s|'readme.ide'|'%{_datadir}/%{name}/readme.ide'|g" ./ide/fpconst.pas
sed -i -e "s|Help(0,hcUsingHelp,false);|ShowReadme;|g" ./ide/fpmhelp.inc
sed -i -e "s|'~U~sing help'|'~W~elcome'|g" ./ide/fpide.pas
sed -i -e "s|'~U~sing help'|'~W~elcome'|g" ./packages/fv/src/strtxt.inc
sed -i -e "s|'How to use Online Help'|'Show file readme.ide'|g" ./ide/fphelp.pas
#Don't use background, correcting interface of IDE
sed -i -e "s|'fp.ans'|'fpans'|g" ./ide/fpconst.pas
#Configure configs
echo '' >> ./utils/fpcmkcfg/fpinc.ini
echo '[Help]' >> ./utils/fpcmkcfg/fpinc.ini
echo 'Files="%{_docdir}/%{name}/fpctoc.html|Free Pascal IDE"' >> ./utils/fpcmkcfg/fpinc.ini
sed -i -e "s|%fpctargetos%|Linux|g" ./utils/fpcmkcfg/fpinc.cfg
sed -i -e 's|%basepath%|/usr/lib/fpc/$fpcversion|g' ./utils/fpcmkcfg/fpinc.cfg
sed -i -e 's|\\|/|g' ./utils/fpcmkcfg/fpinc.cfg
GCC_LIB=`gcc -print-libgcc-file-name`
GCC_LIB_PATH=`dirname $GCC_LIB`
sed -i -e "s|%GCCLIBPATH%| -Fl$GCC_LIB_PATH|g" ./utils/fpcmkcfg/fpinc.cfg
#Fix http://bugs.freepascal.org/view.php?id=25279
sed -i -e "/NewItem(menu_debug_output,'', kbNoKey, cmUserScreenWindow, hcUserScreenWindow,/d" ./ide/fpide.pas
sed -i -e "s|))))))))))))))))),|)))))))))))))))),|g" ./ide/fpide.pas
#Fix for new docs
sed -i -e "s|http://www.freepascal.org/down/docs/docs.html|ftp://ftp.freepascal.org/pub/fpc/dist/|g" ./ide/wconstse.inc
cd $RPM_BUILD_DIR
tar -xf %{SOURCE13}
%build
#Build gdb
cd $RPM_BUILD_DIR
cd ./gdb-%{gdb_ver}
./configure --prefix=/usr --disable-nls --without-python --disable-werror --disable-tui
make
make -C gdb libgdb.a
#Rename *.a and move them into one directory for future linking
rm -rf ./libgdb
mkdir ./libgdb
cp -f ./bfd/libbfd.a ./libgdb/libbfd_fpc.a
cp -f ./libdecnumber/libdecnumber.a ./libgdb/libdecnumber_fpc.a
cp -f ./gdb/libgdb.a ./libgdb/libgdb.a
cp -f ./gdb/build-gnulib/import/libgnu.a ./libgdb/libgnu_fpc.a
cp -f ./readline/libhistory.a ./libgdb/libhistory_fpc.a
cp -f ./libiberty/libiberty.a ./libgdb/libiberty_fpc.a
cp -f ./opcodes/libopcodes.a ./libgdb/libopcodes_fpc.a
cp -f ./readline/libreadline.a ./libgdb/libreadline_fpc.a
cp -f %{_libdir}/libz.a ./libgdb/libz_fpc.a
#Build fpc
cd $RPM_BUILD_DIR
cd ./fpcbuild-%{version}
ln -s "$RPM_BUILD_DIR/gdb-%{gdb_ver}/libgdb/libgdb.a" "$RPM_BUILD_DIR/fpcbuild-%{version}/fpcsrc/packages/gdbint/src/libgdb.a"
make all GDBVNATUREDIR="-Fl$RPM_BUILD_DIR/gdb-%{gdb_ver}/libgdb" LIBGDBFILE="$RPM_BUILD_DIR/gdb-%{gdb_ver}/libgdb/libgdb.a" LD_LIBRARY_PATH="$RPM_BUILD_DIR/gdb-%{gdb_ver}/libgdb" %{?_smp_mflags}
%install
cd fpcsrc
install -dm 755 %{buildroot}%{_datadir}/applications
install -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/applications/
install -dm 755 %{buildroot}%{_datadir}/pixmaps
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/pixmaps/
install -dm 755 %{buildroot}%{_bindir}
install -m 755 %{SOURCE2} %{buildroot}%{_bindir}/
install -m 755 %{SOURCE10} %{buildroot}%{_bindir}/
install -dm 755 %{buildroot}%{_datadir}/%{name}
cp -f ./ide/fp %{buildroot}%{_datadir}/%{name}/%{name}
install -dm 755 %{buildroot}%{_docdir}/%{name}
cp -pfR ./doc/* %{buildroot}%{_docdir}/%{name}/
install -m 0644 %{SOURCE11} %{buildroot}%{_datadir}/%{name}/readme.ide
cp -pfR ./ide/*.pt %{buildroot}%{_datadir}/%{name}/
cp -pfR ./ide/*.tdf %{buildroot}%{_datadir}/%{name}/
install -m 0644 ./utils/fpcmkcfg/fpinc.cfg %{buildroot}%{_datadir}/%{name}/fp.cfg
install -m 0644 ./utils/fpcmkcfg/fpinc.ini %{buildroot}%{_datadir}/%{name}/fp.ini
%files
%{_datadir}/applications/%{name}.desktop
%{_datadir}/pixmaps/%{name}.png
%{_bindir}/%{name}
%{_bindir}/fp-prn-en
%{_docdir}/%{name}
%{_datadir}/%{name}
%{_datadir}/%{name}/%{name}
%{_datadir}/%{name}/*.pt
%{_datadir}/%{name}/*.tdf
%{_datadir}/%{name}/fp.cfg
%{_datadir}/%{name}/fp.ini
%{_datadir}/%{name}/readme.ide
%changelog
* Tue Nov 05 2013 AlexL <loginov.alex.valer@gmail.com
- initial build, based on fp-ide-ru project