X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=fpc.spec;h=03530ddc9ad99c0700f99702cc6045eea1de9fbe;hb=7c170f2b34add98aa802541657208f297c1856e0;hp=04e5a11af6902ccea1289ce66076520b734a6942;hpb=e588518e4a623935155bbb099e036929d9c108c8;p=packages%2Ffpc.git diff --git a/fpc.spec b/fpc.spec index 04e5a11..03530dd 100644 --- a/fpc.spec +++ b/fpc.spec @@ -1,23 +1,48 @@ +# +# Conditional build: +%bcond_without ide # build with ide +%bcond_without doc # build without doc + Summary: 32-bit compiler for the i386 and m68k processors -Summary(pl): 32 bitowy kompilator dla procesorów i386 i m68k -Summary(ru): ó×ÏÂÏÄÎÙÊ ËÏÍÐÉÌÑÔÏÒ Pascal -Summary(uk): ÷¦ÌØÎÉÊ ËÏÍЦÌÑÔÏÒ Pascal +Summary(pl.UTF-8): 32 bitowy kompilator dla procesorów i386 i m68k +Summary(ru.UTF-8): Свободный компилятор Pascal +Summary(uk.UTF-8): Вільний компілятор Pascal Name: fpc -Version: 1.0.10 -Release: 1 +Version: 2.4.4 +Release: 0.1 License: GPL Group: Development/Languages -Vendor: Michael Van Canneyt -Source0: ftp://ftp.us.freepascal.org/pub/fpc/dist/source-%{version}/%{name}-%{version}-src.tar.gz -# Source0-md5: da2ec003500584649cb31288613c33fa -Source1: ftp://ftp.us.freepascal.org/pub/fpc/dist/Linux/i386/separate/binary.tar -# Source1-md5: 62c7ac6c21c44276b5e14bf34265d185 -Source2: %{name}-sample.cfg +Source0: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/source/%{name}build-%{version}.tar.gz +# Source0-md5: d069dfd3412bd0d26dcd1b81ac998305 +Source1: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/i386-linux/%{name}-%{version}.i386-linux.tar +# Source1-md5: e761c4866ac4c8fcbe09f657f315ec32 +Source2: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/x86_64-linux/%{name}-%{version}.x86_64-linux.tar +# Source2-md5: 058e6cd765026748a2bd24c86f1ecf18 +Source3: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/powerpc-linux/%{name}-%{version}.powerpc-linux.tar +# Source3-md5: cea93e5da48c45da3147236cba75dc76 +Patch0: %{name}-skip-dev-dot.patch +Patch1: %{name}-link.patch URL: http://www.freepascal.org/ -BuildRequires: bin86 -BuildRequires: zlib-devel -Requires: gcc >= 2.95.2 -ExclusiveArch: %{ix86} m68k +BuildRequires: binutils-static >= 3:2.17.50 +BuildRequires: gpm-devel +BuildRequires: ncurses-devel +BuildRequires: rpmbuild(macros) >= 1.213 +%if %{with ide} +BuildRequires: gdb-lib >= 7.2-7 +BuildRequires: python-static +BuildRequires: readline-static +BuildRequires: zlib-static +%endif +%if %{with doc} +BuildRequires: tetex-fonts-jknappen +BuildRequires: tetex-format-pdflatex +BuildRequires: tetex-makeindex +BuildRequires: tetex-metafont +BuildRequires: texlive-xetex +%endif +Requires: binutils +Provides: fpc-bootstrap +ExclusiveArch: %{ix86} %{x8664} ppc BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description @@ -28,175 +53,216 @@ attained), but it also enhances these languages with elements like function overloading. And, unlike these ancestors, it supports multiple platforms. -%description -l pl -Free Pascal to 32 bitowy kompilator dla procesorów i386 oraz m86k. -Free Pascal zosta³ zaprojektowany by byæ (jak tylko to mo¿liwe) -kompatybilnym z Turbo Pascal 7.0 oraz Delphi 4. Free Pascal równie¿ -rozszerza te jêzyki elementami takimi jak przeci±¿anie funkcji. - -%description -l ru -FPC -- 32-ÂÉÔÎÙÊ ËÏÍÐÉÌÑÔÏÒ Pascal, ÓÏ×ÍÅÓÔÉÍÙÊ Ó Turbo Pascal 7.0 É Delphi. -ðÏÓÔÁ×ÌÑÅÔÓÑ Ó RTL (ÂÉÂÌÉÏÔÅËÏÊ ×ÒÅÍÅÎÉ ÉÓÐÏÌÎÅÎÉÑ), FCL (ÂÉÂÌÉÏÔÅËÏÊ Ó×ÏÂÏÄÎÙÈ -ËÏÍÐÏÎÅÎÔ), ÉÎÔÅÒÆÅÊÓÁÍÉ Ë gtk, ncurses, zlib, mysql, postgres, ibase. - -%description -l uk -FPC -- 32-¦ÔÎÉÊ ËÏÍЦÌÑÔÏÒ Pascal, ÓÕͦÓÎÉÊ ¦Ú Turbo Pascal 7.0 ÔÁ Delphi. -ðÏÓÔÁÞÁ¤ÔØÓÑ ¦Ú RTL (¦Â̦ÏÔÅËÏÀ ÞÁÓÕ ×ÉËÏÎÁÎÎÑ), FCL (¦Â̦ÏÔÅËÏÀ צÌØÎÉÈ -ËÏÍÐÏÎÅÎÔ), ¦ÎÔÅÒÆÅÊÓÁÍÉ ÄÏ gtk, ncurses, zlib, mysql, postgres, ibase. +%description -l pl.UTF-8 +Free Pascal to 32 bitowy kompilator dla procesorów i386 oraz m86k. +Free Pascal został zaprojektowany by być (jak tylko to możliwe) +kompatybilnym z Turbo Pascal 7.0 oraz Delphi 4. Free Pascal również +rozszerza te języki elementami takimi jak przeciążanie funkcji. + +%description -l ru.UTF-8 +FPC -- 32-битный компилятор Pascal, совместимый с Turbo Pascal 7.0 и +Delphi. Поставляется с RTL (библиотекой времени исполнения), FCL +(библиотекой свободных компонент), интерфейсами к gtk, ncurses, zlib, +mysql, postgres, ibase. + +%description -l uk.UTF-8 +FPC -- 32-бітний компілятор Pascal, сумісний із Turbo Pascal 7.0 та +Delphi. Постачається із RTL (бібліотекою часу виконання), FCL +(бібліотекою вільних компонент), інтерфейсами до gtk, ncurses, zlib, +mysql, postgres, ibase. + +%package src +Summary: Free Pascal Compiler source files +Summary(pl.UTF-8): Pliki źródłowe kompilatora Free Pascal +Group: Development +Requires: %{name} = %{version}-%{release} +Provides: fpcsrc + +%description src +Free Pascal Compiler source files. + +%description src -l pl.UTF-8 +Pliki źródłowe kompilatora Free Pascal. %package examples Summary: Free Pascal Compiler exaple programs -Summary(pl): Przyk³adowe programy do kompilatora Free Pascal +Summary(pl.UTF-8): Przykładowe programy do kompilatora Free Pascal Group: Documentation -Requires: %{name} = %{version} +Requires: %{name} = %{version}-%{release} %description examples Free Pascal Compiler exaple programs. -%description examples -l pl -Przyk³adowe programy do kompilatora Free Pascal. +%description examples -l pl.UTF-8 +Przykładowe programy do kompilatora Free Pascal. %package doc Summary: Free Pascal Compiler documentation -Summary(pl): Dokumentacja do kompilatora Free Pascal +Summary(pl.UTF-8): Dokumentacja do kompilatora Free Pascal Group: Documentation -Requires: %{name} = %{version} +# doesn't require base %description doc Documentation for fpc in PDF format. -%description doc -l pl +%description doc -l pl.UTF-8 Dokumentacja do fpc w formacie PDF. %prep -%setup -q -c -T -a1 - -for i in *.tar.gz ; do +%setup -q -n %{name}build-%{version} +%patch0 -p1 +%patch1 -p1 + +%ifarch %{ix86} +tar xf %{SOURCE1} +%define _bver %{version} +%define _bname 386 +%endif +%ifarch %{x8664} +tar xf %{SOURCE2} +%define _bver %{version} +%define _bname x64 +%endif +%ifarch ppc +tar xf %{SOURCE3} +%define _bver %{version} +%define _bname ppc +%endif + +tar xf binary.*-linux.tar + +mkdir bin +cd bin +for i in ../*.tar.gz ; do tar xzf $i done +ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin +cd .. -mkdir -p src/%{name}-%{version}/doc -mv doc/%{name}-%{version}/* src/%{name}-%{version}/doc -mkdir -p src/%{name}-%{version}/man && echo ".PHONY: all install installman" > src/%{name}-%{version}/man/Makefile - -cd src/%{name}-%{version} -tar xzf %{SOURCE0} +# save for fpc-src +install -d fpc-src +cp -af fpcsrc/* fpc-src %build -if [ "%{_build_cpu}" = "m68k" ]; then - CPU=M68K -else - CPU=I386 -fi +# use ld.bfd +[ -d our-ld ] || install -d our-ld +ln -sf %{_bindir}/ld.bfd our-ld/ld +export PATH=$(pwd)/our-ld:$PATH + +PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname} +NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname} +NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/fpdoc # DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins case "%{_build_cpu}" in - i386) - OPTF="-OG2p1" ;; - i586) - OPTF="-OG2p2" ;; - i686) - OPTF="-Og2p3" ;; - *) - OPTF="-O2" ;; + i386) OPTF="-OG2p1" ;; + i486) OPTF="-OG2p1" ;; + i586) OPTF="-OG2p2" ;; + i686) OPTF="-Og2p3" ;; + athlon) OPTF="-Og2p3" ;; + *) OPTF="-O2" ;; esac -PP=`pwd`/lib/fpc/%{version}/ppc386 -NEWPP=`pwd`/src/fpc-%{version}/compiler/ppc386 -NEWFPDOC=`pwd`/utils/fpdoc/fpdoc - -# ppc386 binary cuts PATH - sometimes before /usr/bin with needed as and ld -export PATH="/usr/bin:/bin" - -%{__make} -C src/%{name}-%{version} \ +%{__make} -C fpcsrc compiler_cycle \ OPT="$OPTF -Xs -n" \ - RELEASE="" \ + RELEASE="1" \ BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \ BININSTALLDIR=%{_bindir} \ PP="$PP" \ FPC="$PP" \ - compiler_cycle + LINKSMART=YES -%{__make} -C src/%{name}-%{version} \ - OPT="$OPTF -Xs -n" \ - RELEASE="" \ +%{__make} -C fpcsrc OPT="$OPTF -Xs -n" \ + RELEASE="1" \ BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \ BININSTALLDIR=%{_bindir} \ + GDBLIBDIR=%{_libdir} \ PP="$NEWPP" \ FPC="$NEWPP" \ - rtl_clean rtl_smart packages_base_smart fcl_smart packages_extra_smart utils_all - -# %{__make} -C src/%{name}-%{version}/docs pdf FPDOC=${NEWFPDOC} + FPDOC=$NEWFPDOC \ + DATA2INC=`pwd`/utils/data2inc \ + LINKSMART=YES \ + NODOCS=YES \ + rtl_clean \ + packages_clean \ + utils_clean \ + %{?with_ide: ide_clean installer_clean} \ + rtl_all \ + packages_all \ + utils_all %{?with_ide:ide_all installer_all} + +%if %{with doc} +export save_size=10000 +%{__make} -j1 -C fpcdocs \ + FPDOC=$NEWFPDOC \ + FPC="$NEWPP" \ + pdf +%endif %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_examplesdir}/fpc} - -install %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/fpc.cfg +install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_datadir}/fpcsrc,%{_examplesdir}/fpc} -# new ppc386 cuts PATH too (how to fix it???) -export PATH="/usr/bin:/bin" +cp -af fpc-src/* $RPM_BUILD_ROOT%{_datadir}/fpcsrc -NEWPP=`pwd`/src/fpc-%{version}/compiler/ppc386 -%{__make} -C src/%{name}-%{version} \ +NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname} +FPCMAKE=`pwd`/fpcsrc/utils/fpcm/fpcmake +%{__make} -j1 -C fpcsrc \ + compiler_distinstall \ + rtl_distinstall \ + packages_distinstall \ + %{?with_ide:ide_distinstall} \ + utils_distinstall \ + PP="$NEWPP" \ + FPCMAKE="$FPCMAKE" \ + SMARTLINK=YES \ INSTALL_PREFIX=$RPM_BUILD_ROOT%{_prefix} \ INSTALL_BINDIR=$RPM_BUILD_ROOT%{_bindir} \ INSTALL_LIBDIR=$RPM_BUILD_ROOT%{_libdir} \ INSTALL_DOCDIR=$RPM_BUILD_ROOT%{_docdir} \ INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \ - PP="$NEWPP" \ - compiler_distinstall \ - rtl_distinstall \ - packages_distinstall \ - fcl_distinstall \ - utils_distinstall \ - man_install - -# %{__make} -C src/%{name}-%{version}/docs pdfinstall DOCINSTALLDIR=$RPM_BUILD_ROOT%{_docdir} - -mv -f src/%{name}-%{version}/doc/examples/* $RPM_BUILD_ROOT%{_examplesdir}/fpc + INSTALL_BASEDIR=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} \ + INSTALL_EXAMPLEDIR=$RPM_BUILD_ROOT%{_examplesdir}/%{name} \ + INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \ + CODPATH=$RPM_BUILD_ROOT%{_libdir}/%{name}/lexyacc -ln -sf ../lib/%{name}/%{version}/ppc386 $RPM_BUILD_ROOT%{_bindir}/ppc386 -ln -sf ppc386 $RPM_BUILD_ROOT%{_bindir}/fpc +%{__make} -j1 -C install/man installman \ + INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} -mv -f src/%{name}-%{version}/doc/faq.htm src/%{name}-%{version}/doc/faq.html +ln -sf %{_libdir}/%{name}/%{version}/ppc%{_bname} $RPM_BUILD_ROOT%{_bindir} -ln -sf %{_bindir}/{as,ld} $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} +sh fpcsrc/compiler/utils/samplecfg %{_libdir}/%{name}/%{version} $RPM_BUILD_ROOT%{_sysconfdir} %clean rm -rf $RPM_BUILD_ROOT -%post -umask 022 -GCCSPEC=`(gcc -v 2>&1)| head -n 1| awk '{ print $4 } '` -GCCDIR=`dirname $GCCSPEC` -echo "Found libgcc.a in $GCCDIR" -sed -e "s#\$GCCDIR#$GCCDIR#" %{_sysconfdir}/fpc.cfg > %{_sysconfdir}/fpc.cfg.new -sed -e "s#\$1#%{_libdir}/%{name}/%{version}#" %{_sysconfdir}/fpc.cfg.new > %{_sysconfdir}/fpc.cfg -rm -f %{_sysconfdir}/fpc.cfg.new - %files %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/* -%doc src/%{name}-%{version}/doc/{copying*,*.txt} -%doc src/%{name}-%{version}/doc/faq.html -%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/fpc.cfg +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fpc.cfg %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/%{version} %dir %{_libdir}/%{name}/lexyacc %{_libdir}/%{name}/%{version}/msg %{_libdir}/%{name}/%{version}/units -%{_libdir}/%{name}/%{version}/as -%{_libdir}/%{name}/%{version}/ld +%if %{with ide} +%{_libdir}/%{name}/%{version}/ide +%endif %{_libdir}/%{name}/lexyacc/* -%attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc386 +%attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname} %attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg %{_mandir}/man*/* +%files src +%defattr(644,root,root,755) +%{_datadir}/fpcsrc + %files examples %defattr(644,root,root,755) %{_examplesdir}/fpc -#%files doc -#%defattr(644,root,root,755) -#%doc src/%{name}-%{version}/doc/*.pdf +%if %{with doc} +%files doc +%defattr(644,root,root,755) +%doc fpcdocs/*.pdf +%endif