X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=fpc.spec;h=03530ddc9ad99c0700f99702cc6045eea1de9fbe;hb=7c170f2b34add98aa802541657208f297c1856e0;hp=6338d8c2af50c31cb65c219f32d0a24ff3e4e543;hpb=d3e9323da8aa42c7d9a88786514f2fa69b09cc32;p=packages%2Ffpc.git diff --git a/fpc.spec b/fpc.spec index 6338d8c..03530dd 100644 --- a/fpc.spec +++ b/fpc.spec @@ -1,33 +1,48 @@ -# TODO: -# - sparc/ppc version, check on x86 -# - documentation -# - make it working ;) +# +# 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: 2.0.0 +Version: 2.4.4 Release: 0.1 License: GPL Group: Development/Languages -Vendor: Michael Van Canneyt -Source0: http://switch.dl.sourceforge.net/sourceforge/freepascal/%{name}-%{version}.source.tar.gz -# Source0-md5: 3f9c64d0146a3631f6963fd7477776d1 -Source1: http://dl.sourceforge.net/freepascal/fpc-%{version}.i386-linux.tar -# Source1-md5: 5f0a5fba632a811dcfdafe0ff80476a3 -Source2: http://dl.sourceforge.net/freepascal/fpc-%{version}.x86_64-linux.tar -# Source2-md5: 36270de604c6b5ad3af8aaa08143e88f -Source3: http://dl.sourceforge.net/freepascal/fpc-%{version}.powerpc-linux.tar -# Source3-md5: 7019384e09411902e530dfe55d4ff145 -Source4: http://dl.sourceforge.net/freepascal/%{name}-%{version}.sparc-linux.tar -# Source4-md5: dd8925ce8ce93309456c3072e6e4d14d -#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 amd64 ppc sparc +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 @@ -38,56 +53,81 @@ 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 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 -l ru -FPC -- 32-ÂÉÔÎÙÊ ËÏÍÐÉÌÑÔÏÒ Pascal, ÓÏ×ÍÅÓÔÉÍÙÊ Ó Turbo Pascal 7.0 É Delphi. -ðÏÓÔÁ×ÌÑÅÔÓÑ Ó RTL (ÂÉÂÌÉÏÔÅËÏÊ ×ÒÅÍÅÎÉ ÉÓÐÏÌÎÅÎÉÑ), FCL (ÂÉÂÌÉÏÔÅËÏÊ Ó×ÏÂÏÄÎÙÈ -ËÏÍÐÏÎÅÎÔ), ÉÎÔÅÒÆÅÊÓÁÍÉ Ë gtk, ncurses, zlib, mysql, postgres, ibase. +%description src +Free Pascal Compiler source files. -%description -l uk -FPC -- 32-¦ÔÎÉÊ ËÏÍЦÌÑÔÏÒ Pascal, ÓÕͦÓÎÉÊ ¦Ú Turbo Pascal 7.0 ÔÁ Delphi. -ðÏÓÔÁÞÁ¤ÔØÓÑ ¦Ú RTL (¦Â̦ÏÔÅËÏÀ ÞÁÓÕ ×ÉËÏÎÁÎÎÑ), FCL (¦Â̦ÏÔÅËÏÀ צÌØÎÉÈ -ËÏÍÐÏÎÅÎÔ), ¦ÎÔÅÒÆÅÊÓÁÍÉ ÄÏ gtk, ncurses, zlib, mysql, postgres, ibase. +%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 -n %{name} +%setup -q -n %{name}build-%{version} +%patch0 -p1 +%patch1 -p1 + %ifarch %{ix86} -%setup -q -D -n %{name} -a 1 +tar xf %{SOURCE1} +%define _bver %{version} %define _bname 386 %endif -%ifarch amd64 -%setup -q -D -n %{name} -a 2 +%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 @@ -96,99 +136,133 @@ cd bin for i in ../*.tar.gz ; do tar xzf $i done -ln -sf `pwd`/lib/%{name}/%{version}/ppc* bin +ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin +cd .. + +# save for fpc-src +install -d fpc-src +cp -af fpcsrc/* fpc-src %build -PP=`pwd`/bin/lib/%{name}/%{version}/ppc%{_bname} -NEWPP=`pwd`/compiler/ppc%{_bname} +# use ld.bfd +[ -d our-ld ] || install -d our-ld +ln -sf %{_bindir}/ld.bfd our-ld/ld +export PATH=$(pwd)/our-ld:$PATH -%{__make} compiler_cycle \ +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" ;; + i486) OPTF="-OG2p1" ;; + i586) OPTF="-OG2p2" ;; + i686) OPTF="-Og2p3" ;; + athlon) OPTF="-Og2p3" ;; + *) OPTF="-O2" ;; +esac + +%{__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} 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" \ + FPDOC=$NEWFPDOC \ DATA2INC=`pwd`/utils/data2inc \ - rtl packages_base_all fcl packages_extra_all utils_all + 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} -#%{__make} -C src/%{name}-%{version}/docs pdf FPDOC=${NEWFPDOC} +%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 - -NEWPP=`pwd`/compiler/ppc%{_bname} -FPCMAKE=`pwd`/utils/fpcm/fpcmake -%{__make} \ - compiler_install \ - rtl_install \ - fcl_install \ - packages_install \ - utils_install \ +install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_datadir}/fpcsrc,%{_examplesdir}/fpc} + +cp -af fpc-src/* $RPM_BUILD_ROOT%{_datadir}/fpcsrc + +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} \ - INSTALL_BASEDIR=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} - - -#%{__make} -C src/%{name}-%{version}/docs pdfinstall DOCINSTALLDIR=$RPM_BUILD_ROOT%{_docdir} - -#cp -af 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} -#cp -af 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 +%dir %{_libdir}/%{name}/lexyacc %{_libdir}/%{name}/%{version}/msg %{_libdir}/%{name}/%{version}/units -#%{_libdir}/%{name}/lexyacc/* +%if %{with ide} +%{_libdir}/%{name}/%{version}/ide +%endif +%{_libdir}/%{name}/lexyacc/* %attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname} %attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg -#%{_mandir}/man*/* +%{_mandir}/man*/* + +%files src +%defattr(644,root,root,755) +%{_datadir}/fpcsrc %files examples %defattr(644,root,root,755) -#%{_examplesdir}/fpc +%{_examplesdir}/fpc +%if %{with doc} %files doc %defattr(644,root,root,755) -#%doc src/%{name}-%{version}/docs/*.pdf +%doc fpcdocs/*.pdf +%endif