]> git.pld-linux.org Git - packages/fpc.git/blob - fpc.spec
- added man patch (skip gzipping at install)
[packages/fpc.git] / fpc.spec
1 #
2 # Conditional build:
3 %bcond_without  ide     # build with ide
4 %bcond_without  doc     # build without doc
5
6 Summary:        32-bit compiler for the i386 and m68k processors
7 Summary(pl.UTF-8):      32 bitowy kompilator dla procesorów i386 i m68k
8 Summary(ru.UTF-8):      Свободный компилятор Pascal
9 Summary(uk.UTF-8):      Вільний компілятор Pascal
10 Name:           fpc
11 Version:        3.0.0
12 Release:        5
13 License:        GPL v2+
14 Group:          Development/Languages
15 Source0:        ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/source/%{name}build-%{version}.tar.gz
16 # Source0-md5:  bb7d17ef5c7c007466368262c0779cb7
17 Source1:        ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/i386-linux/%{name}-%{version}.i386-linux.tar
18 # Source1-md5:  41e0bcb7c11b7edf311142079ba2defa
19 Source2:        ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/x86_64-linux/%{name}-%{version}.x86_64-linux.tar
20 # Source2-md5:  db2ae45b0d1846e01b61ba52f03e60b2
21 Patch0:         %{name}-skip-dev-dot.patch
22 Patch1:         %{name}-link.patch
23 Patch2:         %{name}-gdb.patch
24 Patch3:         fpc-r32374.patch
25 Patch4:         fpcdocs-r1260.patch
26 Patch5:         fpc-man.patch
27 URL:            http://www.freepascal.org/
28 BuildRequires:  binutils-devel >= 3:2.17.50
29 BuildRequires:  gpm-devel
30 BuildRequires:  ncurses-devel
31 BuildRequires:  rpmbuild(macros) >= 1.213
32 %if %{with ide}
33 BuildRequires:  babeltrace-devel
34 BuildRequires:  expat-devel
35 BuildRequires:  gdb-lib >= 7.2-7
36 BuildRequires:  guile-devel
37 BuildRequires:  python-devel
38 BuildRequires:  readline-devel
39 BuildRequires:  libselinux-devel
40 BuildRequires:  xz-devel
41 BuildRequires:  zlib-devel
42 %endif
43 %if %{with doc}
44 BuildRequires:  tetex-fonts-jknappen
45 BuildRequires:  tetex-format-pdflatex
46 BuildRequires:  tetex-makeindex
47 BuildRequires:  tetex-metafont
48 BuildRequires:  texlive-xetex
49 %endif
50 Requires:       binutils
51 Provides:       fpc-bootstrap
52 ExclusiveArch:  %{ix86} %{x8664}
53 # TODO:
54 # %{arm} ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/arm-linux/fpc-3.0.0.arm-linux-raspberry1wq.tar
55 # ppc64 ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/powerpc64-linux/fpc-3.0.0.powerpc64-linux.tar
56 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
57
58 %description
59 Free Pascal is a 32-bit compiler for the i386 and m68k processors.
60 Free Pascal is designed to be, as much as possible, source compatible
61 with Turbo Pascal 7.0 and Delphi 4 (although this goal is not yet
62 attained), but it also enhances these languages with elements like
63 function overloading. And, unlike these ancestors, it supports
64 multiple platforms.
65
66 %description -l pl.UTF-8
67 Free Pascal to 32 bitowy kompilator dla procesorów i386 oraz m86k.
68 Free Pascal został zaprojektowany by być (jak tylko to możliwe)
69 kompatybilnym z Turbo Pascal 7.0 oraz Delphi 4. Free Pascal również
70 rozszerza te języki elementami takimi jak przeciążanie funkcji.
71
72 %description -l ru.UTF-8
73 FPC -- 32-битный компилятор Pascal, совместимый с Turbo Pascal 7.0 и
74 Delphi. Поставляется с RTL (библиотекой времени исполнения), FCL
75 (библиотекой свободных компонент), интерфейсами к gtk, ncurses, zlib,
76 mysql, postgres, ibase.
77
78 %description -l uk.UTF-8
79 FPC -- 32-бітний компілятор Pascal, сумісний із Turbo Pascal 7.0 та
80 Delphi. Постачається із RTL (бібліотекою часу виконання), FCL
81 (бібліотекою вільних компонент), інтерфейсами до gtk, ncurses, zlib,
82 mysql, postgres, ibase.
83
84 %package src
85 Summary:        Free Pascal Compiler source files
86 Summary(pl.UTF-8):      Pliki źródłowe kompilatora Free Pascal
87 Group:          Development
88 Requires:       %{name} = %{version}-%{release}
89 Provides:       fpcsrc
90
91 %description src
92 Free Pascal Compiler source files.
93
94 %description src -l pl.UTF-8
95 Pliki źródłowe kompilatora Free Pascal.
96
97 %package examples
98 Summary:        Free Pascal Compiler exaple programs
99 Summary(pl.UTF-8):      Przykładowe programy do kompilatora Free Pascal
100 Group:          Documentation
101 Requires:       %{name} = %{version}-%{release}
102
103 %description examples
104 Free Pascal Compiler exaple programs.
105
106 %description examples -l pl.UTF-8
107 Przykładowe programy do kompilatora Free Pascal.
108
109 %package doc
110 Summary:        Free Pascal Compiler documentation
111 Summary(pl.UTF-8):      Dokumentacja do kompilatora Free Pascal
112 Group:          Documentation
113 # doesn't require base
114
115 %description doc
116 Documentation for fpc in PDF format.
117
118 %description doc -l pl.UTF-8
119 Dokumentacja do fpc w formacie PDF.
120
121 %prep
122 %setup -q -n %{name}build-%{version}
123 %patch0 -p1
124 %patch1 -p1
125 %patch2 -p1
126 %patch3 -p0
127 %patch4 -p0
128 %patch5 -p1
129
130 %ifarch %{ix86}
131 tar xf %{SOURCE1}
132 %define _bver %{version}
133 %define _bname 386
134 %define _barch i386
135 %endif
136 %ifarch %{x8664}
137 tar xf %{SOURCE2}
138 %define _bver %{version}
139 %define _bname x64
140 %define _barch x86_64
141 %endif
142 %ifarch %{arm}
143 %define _bver %{version}
144 %define _bname arm
145 %define _barch arm
146 %endif
147 %ifarch ppc
148 %define _bver ?
149 %define _bname ppc
150 %define _barch powerpc
151 %endif
152 %ifarch ppc64
153 %define _bver %{version}
154 %define _bname ppc64
155 %define _barch powerpc64
156 %endif
157 %ifarch sparc sparcv9
158 %define _bver ?
159 %define _bname sparc
160 %define _barch sparc
161 %endif
162
163 cd %{name}-%{version}.%{_barch}-linux
164 tar xf binary.*-linux.tar
165 cd ..
166
167 mkdir bin
168 cd bin
169 for i in ../%{name}-%{version}.%{_barch}-linux/*.tar.gz ; do
170         tar xzf $i
171 done
172 ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin
173 cd ..
174
175 find fpcsrc -name Makefile -o -name fpcmake.ini -o -name fpmkunit.pp | \
176         xargs %{__sed} -i -e 's|/usr/lib/|%{_libdir}/|g'
177
178 # remove precompiled objects from fpc-src
179 %{__rm} fpcsrc/rtl/palmos/m68k/{libcrt.a,*.o}
180
181 # save for fpc-src
182 install -d fpc-src
183 cp -af fpcsrc/* fpc-src
184 rm -r fpc-src/{ide,tests}
185
186 %if 0%{?debug:1}
187 find fpcsrc -name Makefile | xargs %{__sed} -i -e 's/-Xs//'
188 %endif
189
190 %build
191 # use ld.bfd
192 [ -d our-ld ] || install -d our-ld
193 ln -sf %{_bindir}/ld.bfd our-ld/ld
194 export PATH=$(pwd)/our-ld:$PATH
195
196 PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname}
197 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
198 NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/bin/%{_barch}-linux/fpdoc
199 DATA2INC=`pwd`/fpcsrc/utils/bin/%{_barch}-linux/data2inc
200
201 # DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins
202 case "%{_build_cpu}" in
203         i386|i486) OPTF="-OG2p1" ;;
204         i586) OPTF="-OG2p2" ;;
205         i686|athlon|pentium3|pentium4|x86_64|amd64|ia32e) OPTF="-Og2p3" ;;
206         *) OPTF="-O2" ;;
207 esac
208
209 %{__make} -C fpcsrc compiler_cycle \
210         OPT="$OPTF %{!?debug:-Xs} -n" \
211         RELEASE="1" \
212         BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
213         BININSTALLDIR=%{_bindir} \
214         DATA2INC="$DATA2INC" \
215         PP="$PP" \
216         FPC="$PP" \
217         LINKSMART=YES
218
219 %{__make} -C fpcsrc OPT="$OPTF %{!?debug:-Xs} -n" \
220         RELEASE="1" \
221         BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
222         BININSTALLDIR=%{_bindir} \
223         GDBLIBDIR=%{_libdir} \
224         DATA2INC="$DATA2INC" \
225         PP="$NEWPP" \
226         FPC="$NEWPP" \
227         FPDOC=$NEWFPDOC \
228         LINKSMART=YES \
229         NODOCS=YES \
230         rtl_clean \
231         packages_clean \
232         utils_clean \
233         %{?with_ide: ide_clean installer_clean} \
234         rtl_all \
235         packages_all \
236         utils_all %{?with_ide:ide_all installer_all}
237
238 %if %{with doc}
239 export save_size=10000
240 %{__make} -j1 -C fpcdocs \
241         FPDOC=$NEWFPDOC \
242         FPC="$NEWPP" \
243         pdf
244 %endif
245
246 %install
247 rm -rf $RPM_BUILD_ROOT
248 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_datadir}/fpcsrc,%{_examplesdir}/fpc}
249
250 cp -af fpc-src/* $RPM_BUILD_ROOT%{_datadir}/fpcsrc
251
252 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
253 FPCMAKE=`pwd`/fpcsrc/utils/fpcm/bin/%{_barch}-linux/fpcmake
254 %{__make} -j1 -C fpcsrc \
255         compiler_distinstall \
256         rtl_distinstall \
257         packages_distinstall \
258         %{?with_ide:ide_distinstall} \
259         utils_distinstall \
260         PP="$NEWPP" \
261         FPCMAKE="$FPCMAKE" \
262         SMARTLINK=YES \
263         FPCDIR=%{_libdir}/%{name}/%{version} \
264         INSTALL_PREFIX=$RPM_BUILD_ROOT%{_prefix} \
265         INSTALL_BINDIR=$RPM_BUILD_ROOT%{_bindir} \
266         INSTALL_LIBDIR=$RPM_BUILD_ROOT%{_libdir} \
267         INSTALL_DOCDIR=$RPM_BUILD_ROOT%{_docdir} \
268         INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
269         INSTALL_BASEDIR=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} \
270         INSTALL_EXAMPLEDIR=$RPM_BUILD_ROOT%{_examplesdir}/%{name} \
271         INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
272         CODPATH=$RPM_BUILD_ROOT%{_libdir}/%{name}/lexyacc
273
274 %{__make} -j1 -C install/man installman \
275         INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir}
276
277 ln -sf ../%{_lib}/%{name}/%{version}/ppc%{_bname} $RPM_BUILD_ROOT%{_bindir}
278
279 ln -sf %{_bindir}/ld.bfd $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/ld
280
281 sh fpc-src/compiler/utils/samplecfg $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} $RPM_BUILD_ROOT%{_sysconfdir}
282 %{__sed} -i -e "s,$RPM_BUILD_ROOT,,g" $RPM_BUILD_ROOT%{_sysconfdir}/{*.cfg,fppkg/default}
283
284 %if "%{_lib}" != "lib"
285 %{__mv} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/lexyacc $RPM_BUILD_ROOT%{_libdir}/%{name}
286 %endif
287
288 # Fix examples, make seems to ignore INSTALL_EXAMPLEDIR
289 %{__mv} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/* $RPM_BUILD_ROOT%{_examplesdir}/fpc/
290
291 %ifnarch %{ix86}
292 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppc386.1
293 %endif
294 %ifnarch %{arm}
295 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcarm.1
296 %endif
297 %ifnarch ppc ppc64
298 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcppc.1
299 %endif
300 %ifnarch sparc sparcv9
301 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcsparc.1
302 %endif
303 %ifnarch %{x8664}
304 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcx64.1
305 %endif
306
307 %clean
308 rm -rf $RPM_BUILD_ROOT
309
310 %files
311 %defattr(644,root,root,755)
312 %attr(755,root,root) %{_bindir}/bin2obj
313 %attr(755,root,root) %{_bindir}/chmcmd
314 %attr(755,root,root) %{_bindir}/chmls
315 %attr(755,root,root) %{_bindir}/cldrparser
316 %attr(755,root,root) %{_bindir}/data2inc
317 %attr(755,root,root) %{_bindir}/delp
318 %attr(755,root,root) %{_bindir}/fd2pascal
319 %attr(755,root,root) %{_bindir}/fp
320 %attr(755,root,root) %{_bindir}/fpc*
321 %attr(755,root,root) %{_bindir}/fpdoc
322 %attr(755,root,root) %{_bindir}/fppkg
323 %attr(755,root,root) %{_bindir}/fprcp
324 %attr(755,root,root) %{_bindir}/grab_vcsa
325 %attr(755,root,root) %{_bindir}/h2pas
326 %attr(755,root,root) %{_bindir}/h2paspp
327 %attr(755,root,root) %{_bindir}/instantfpc
328 %attr(755,root,root) %{_bindir}/makeskel
329 %attr(755,root,root) %{_bindir}/mkarmins
330 %attr(755,root,root) %{_bindir}/mkinsadd
331 %attr(755,root,root) %{_bindir}/mkx86ins
332 %attr(755,root,root) %{_bindir}/pas2fpm
333 %attr(755,root,root) %{_bindir}/pas2jni
334 %attr(755,root,root) %{_bindir}/pas2ut
335 %attr(755,root,root) %{_bindir}/plex
336 %attr(755,root,root) %{_bindir}/postw32
337 %attr(755,root,root) %{_bindir}/ppc%{_bname}
338 %attr(755,root,root) %{_bindir}/ppdep
339 %attr(755,root,root) %{_bindir}/ppudump
340 %attr(755,root,root) %{_bindir}/ppufiles
341 %attr(755,root,root) %{_bindir}/ppumove
342 %attr(755,root,root) %{_bindir}/ptop
343 %attr(755,root,root) %{_bindir}/pyacc
344 %attr(755,root,root) %{_bindir}/rmcvsdir
345 %attr(755,root,root) %{_bindir}/rstconv
346 %attr(755,root,root) %{_bindir}/unihelper
347 %attr(755,root,root) %{_bindir}/unitdiff
348 # TODO: move the below files to datadir
349 # - ANSI art file used by fp binary
350 %{_bindir}/fp.ans
351 # - IDE command templates
352 %{_bindir}/cvsco.tdf
353 %{_bindir}/cvsdiff.tdf
354 %{_bindir}/cvsup.tdf
355 %{_bindir}/grep.tdf
356 %{_bindir}/tpgrep.tdf
357 # - Pascal code skeletons
358 %{_bindir}/gplprog.pt
359 %{_bindir}/gplunit.pt
360 %{_bindir}/program.pt
361 %{_bindir}/unit.pt
362 # - JSON resources(?)
363 %{_bindir}/makeskel.rsj
364 %{_bindir}/ptop.rsj
365 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fpc.cfg
366 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fppkg.cfg
367 %dir %{_sysconfdir}/fppkg
368 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fppkg/default
369 %dir %{_libdir}/%{name}
370 %dir %{_libdir}/%{name}/%{version}
371 %dir %{_libdir}/%{name}/lexyacc
372 %{_libdir}/%{name}/%{version}/msg
373 %{_libdir}/%{name}/%{version}/units
374 %{_libdir}/%{name}/%{version}/fpmkinst
375 %if %{with ide}
376 %{_libdir}/%{name}/%{version}/ide
377 %endif
378 %{_libdir}/%{name}/lexyacc/*
379 %attr(755,root,root) %{_libdir}/%{name}/%{version}/ld
380 %attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname}
381 %attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg
382 %{_mandir}/man1/bin2obj.1*
383 %{_mandir}/man1/chmcmd.1*
384 %{_mandir}/man1/chmls.1*
385 %{_mandir}/man1/data2inc.1*
386 %{_mandir}/man1/delp.1*
387 %{_mandir}/man1/fd2pascal.1*
388 %{_mandir}/man1/fp.1*
389 %{_mandir}/man1/fpc*.1*
390 %{_mandir}/man1/fpdoc.1*
391 %{_mandir}/man1/fppkg.1*
392 %{_mandir}/man1/fprcp.1*
393 %{_mandir}/man1/grab_vcsa.1*
394 %{_mandir}/man1/h2pas.1*
395 %{_mandir}/man1/h2paspp.1*
396 %{_mandir}/man1/makeskel.1*
397 %{_mandir}/man1/pas2fpm.1*
398 %{_mandir}/man1/pas2jni.1*
399 %{_mandir}/man1/pas2ut.1*
400 %{_mandir}/man1/plex.1*
401 %{_mandir}/man1/postw32.1*
402 %ifarch ppc64
403 %{_mandir}/man1/ppcppc.1*
404 %else
405 %{_mandir}/man1/ppc%{_bname}.1*
406 %endif
407 %{_mandir}/man1/ppdep.1*
408 %{_mandir}/man1/ppudump.1*
409 %{_mandir}/man1/ppufiles.1*
410 %{_mandir}/man1/ppumove.1*
411 %{_mandir}/man1/ptop.1*
412 %{_mandir}/man1/pyacc.1*
413 %{_mandir}/man1/rmcvsdir.1*
414 %{_mandir}/man1/rstconv.1*
415 %{_mandir}/man1/unitdiff.1*
416 %{_mandir}/man5/fpc.cfg.5*
417 %{_mandir}/man5/fpcmake.5*
418 %{_mandir}/man5/ptop.cfg.5*
419
420 %files src
421 %defattr(644,root,root,755)
422 %{_datadir}/fpcsrc
423
424 %files examples
425 %defattr(644,root,root,755)
426 %{_examplesdir}/fpc
427
428 %if %{with doc}
429 %files doc
430 %defattr(644,root,root,755)
431 %doc fpcdocs/*.pdf
432 %endif
This page took 0.49792 seconds and 3 git commands to generate.