]>
Commit | Line | Data |
---|---|---|
1 | # | |
2 | # Conditional build: | |
3 | %bcond_without ocaml_opt # native, optimized compiler | |
4 | ||
5 | # ppc64, sparc64 and x32 variants not supported currently | |
6 | # alpha, hppa, ia64, mips removed since 4.00 | |
7 | %ifnarch %{ix86} %{x8664} %{arm} aarch64 ppc sparc sparcv9 | |
8 | %undefine with_ocaml_opt | |
9 | %endif | |
10 | ||
11 | %define sver 4.12 | |
12 | ||
13 | Summary: The Objective Caml compiler and programming environment | |
14 | Summary(pl.UTF-8): Kompilator OCamla (Objective Caml) oraz środowisko programistyczne | |
15 | Name: ocaml | |
16 | Version: 4.12.0 | |
17 | Release: 5 | |
18 | Epoch: 1 | |
19 | License: QPL v1.0 with linking exception (compiler), LGPL v2 with linking exception (library) | |
20 | Group: Development/Languages | |
21 | Source0: http://caml.inria.fr/distrib/ocaml-%{sver}/%{name}-%{version}.tar.xz | |
22 | # Source0-md5: 7343cd398d477001db2c3f2ac92e12ea | |
23 | Source1: http://caml.inria.fr/distrib/ocaml-%{sver}/%{name}-%{sver}-refman-html.tar.gz | |
24 | # Source1-md5: 1bda3d0a46328a985c817d551423e2c6 | |
25 | Source3: http://caml.inria.fr/distrib/ocaml-%{sver}/%{name}-%{sver}-refman.info.tar.gz | |
26 | # Source3-md5: c808dbbe35a6cc5d14da6c3b2f175d2c | |
27 | Source4: https://github.com/mmottl/pure-fun/archive/v1.0.13/pure-fun-1.0.13.tar.gz | |
28 | # Source4-md5: 0a6ff033df78d0880fe4883ace025ebe | |
29 | # note: dead URL | |
30 | Source5: http://www.ocaml.info/ocaml_sources/ds-contrib.tar.gz | |
31 | # Source5-md5: 77fa1da7375dea1393cc0b6cd802d7e1 | |
32 | Patch0: %{name}-10266.patch | |
33 | Patch1: %{name}-info.patch | |
34 | URL: https://www.ocaml.org/ | |
35 | Requires: %{name}-runtime = %{epoch}:%{version}-%{release} | |
36 | Provides: ocaml-bytes-devel | |
37 | Provides: ocaml-ocamldoc | |
38 | Obsoletes: ocaml-bytes-devel < 1.4 | |
39 | Obsoletes: ocaml-doc-ps < 1:4.12 | |
40 | Obsoletes: ocaml-emacs < 1:4.12 | |
41 | Obsoletes: ocaml-ocamldoc <= pre4 | |
42 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) | |
43 | ||
44 | %define specflags -fno-strict-aliasing | |
45 | ||
46 | %if %{without ocaml_opt} | |
47 | %define _noautoreq Backend_intf Inlining_decision_intf Simplify_boxed_integer_ops_intf | |
48 | %endif | |
49 | ||
50 | %description | |
51 | Objective Caml is a high-level, strongly-typed, functional and | |
52 | object-oriented programming language from the ML family of languages. | |
53 | ||
54 | This package comprises two batch compilers (a fast bytecode compiler | |
55 | and an optimizing native-code compiler), an interactive toplevel | |
56 | system, Lex&Yacc tools, a replay debugger, and a comprehensive | |
57 | library. | |
58 | ||
59 | %description -l pl.UTF-8 | |
60 | OCaml (Objective Caml) jest funkcyjnym, obiektowo zorientowanym | |
61 | językiem wysokiego poziomu z silnym typowaniem. Należy do rodziny | |
62 | języków ML. | |
63 | ||
64 | Ten pakiet zawiera dwa kompilatory (szybki kompilator do bajtkodu oraz | |
65 | optymalizujący kompilator do kodu natywnego), interaktywne środowisko | |
66 | pracy, narzędzia do tworzenia analizatorów leksykalnych oraz | |
67 | składniowych (ocamllex, ocamlyacc), odpluskwiacz (ocamldebug) i | |
68 | biblioteki. | |
69 | ||
70 | %package runtime | |
71 | Summary: Runtime system for OCaml | |
72 | Summary(pl.UTF-8): Środowisko uruchomieniowe dla OCamla | |
73 | Group: Libraries | |
74 | ||
75 | %description runtime | |
76 | This package contains binaries needed to run bytecode OCaml programs: | |
77 | ocamlrun bytecode interpreter, and basic dynamic link libraries. | |
78 | ||
79 | %description runtime -l pl.UTF-8 | |
80 | Pakiet ten zawiera binaria potrzebne do uruchamiania programów w | |
81 | OCamlu skompilowanych do bajtkodu: interpreter bajtkodu (ocamlrun) | |
82 | oraz podstawowe biblioteki linkowane dynamicznie. | |
83 | ||
84 | %package lib-source | |
85 | Summary: Sources of OCaml standard library | |
86 | Summary(pl.UTF-8): Źródła biblioteki standardowej OCamla | |
87 | Group: Development/Languages | |
88 | Requires: %{name} = %{epoch}:%{version}-%{release} | |
89 | ||
90 | %description lib-source | |
91 | This sources come helpful during debugging of user programs with | |
92 | ocamldebug. | |
93 | ||
94 | %description lib-source -l pl.UTF-8 | |
95 | Źródła te są przydatne przy odpluskwianiu programów użytkownika z | |
96 | użyciem ocamldebug. | |
97 | ||
98 | %package doc-html | |
99 | Summary: HTML documentation for OCaml | |
100 | Summary(pl.UTF-8): Dokumentacja dla OCamla w formacie HTML | |
101 | Group: Development/Tools | |
102 | ||
103 | %description doc-html | |
104 | HTML documentation for OCaml. | |
105 | ||
106 | %description doc-html -l pl.UTF-8 | |
107 | Dokumentacja dla OCamla w formacie HTML. | |
108 | ||
109 | %package doc-info | |
110 | Summary: Info documentation for OCaml | |
111 | Summary(pl.UTF-8): Dokumentacja info dla OCamla | |
112 | Group: Development/Tools | |
113 | ||
114 | %description doc-info | |
115 | Info documentation for OCaml. | |
116 | ||
117 | %description doc-info -l pl.UTF-8 | |
118 | Dokumentacja info dla OCamla. | |
119 | ||
120 | %package compiler-objects | |
121 | Summary: Compiled parts of OCaml compiler | |
122 | Summary(pl.UTF-8): Skompilowane części kompilatora OCamla | |
123 | Group: Development/Languages | |
124 | Requires: %{name} = %{epoch}:%{version}-%{release} | |
125 | Provides: ocaml-devel | |
126 | Obsoletes: ocaml-devel < 3.06-3 | |
127 | ||
128 | %description compiler-objects | |
129 | This package contains *.cmi and *.cmo files being parts of OCaml | |
130 | compiler. They are needed to compile some programs. | |
131 | ||
132 | %description compiler-objects -l pl.UTF-8 | |
133 | Pakiet ten zawiera pliki *.cmi oraz *.cmo będące częściami kompilatora | |
134 | OCamla. Są one wymagane do kompilacji niektórych programów. | |
135 | ||
136 | %package ocamldoc-devel | |
137 | Summary: Files needed to develop programs using ocamldoc | |
138 | Summary(pl.UTF-8): Pliki potrzebne do tworzenia programów używających ocamldoc | |
139 | Group: Development/Languages | |
140 | Requires: %{name} = %{epoch}:%{version}-%{release} | |
141 | ||
142 | %description ocamldoc-devel | |
143 | You need this package if you are going to write ocamldoc front end or | |
144 | something like that. | |
145 | ||
146 | %description ocamldoc-devel -l pl.UTF-8 | |
147 | Będziesz potrzebować tego pakietu, jeśli zamierzasz pisać front end | |
148 | dla ocamldoc lub coś podobnego. | |
149 | ||
150 | # maybe we'll want to add some more stuff here? | |
151 | %package examples | |
152 | Summary: Example source code for OCaml | |
153 | Summary(pl.UTF-8): Przykładowe kody źródłowe w OCamlu | |
154 | Group: Development/Languages | |
155 | Requires: %{name} = %{epoch}:%{version}-%{release} | |
156 | ||
157 | %description examples | |
158 | This packages contains sources for Okasaki's Purely Functional | |
159 | Datastructures in OCaml, along with some contributions. | |
160 | ||
161 | %description examples -l pl.UTF-8 | |
162 | Pakiet ten zawiera źródła Czysto Funkcyjnych Struktur Danych autorstwa | |
163 | Okasaki'ego, napisane w OCamlu, wraz z dodatkami. | |
164 | ||
165 | %prep | |
166 | %setup -q -a1 -a3 | |
167 | %patch0 -p1 | |
168 | gunzip infoman/ocaml.info.gz | |
169 | %patch1 -p1 | |
170 | ||
171 | mkdir examples | |
172 | tar xzf %{SOURCE4} -C examples | |
173 | tar xzf %{SOURCE5} -C examples | |
174 | # order mess with docs somewhat | |
175 | mkdir -p docs/html | |
176 | %{__mv} htmlman docs/html/ocaml | |
177 | ||
178 | %build | |
179 | %configure \ | |
180 | AS=%{__as} \ | |
181 | ASPP="%{__cc} -c" \ | |
182 | --libdir=%{_libdir}/ocaml \ | |
183 | %{!?with_ocaml_opt:--disable-native-compiler} | |
184 | ||
185 | %{__make} world | |
186 | %{__make} bootstrap | |
187 | %if %{with ocaml_opt} | |
188 | %{__make} opt | |
189 | %{__make} opt.opt | |
190 | %endif | |
191 | ||
192 | %install | |
193 | rm -rf $RPM_BUILD_ROOT | |
194 | install -d $RPM_BUILD_ROOT{%{_includedir},%{_infodir},%{_examplesdir}/%{name}-%{version}} | |
195 | ||
196 | %{__make} install \ | |
197 | DESTDIR=$RPM_BUILD_ROOT | |
198 | ||
199 | cat > $RPM_BUILD_ROOT%{_libdir}/%{name}/ld.conf <<EOF | |
200 | %{_libdir}/%{name}/stublibs | |
201 | %{_libdir}/%{name} | |
202 | EOF | |
203 | ||
204 | # move includes to the proper place | |
205 | %{__mv} $RPM_BUILD_ROOT%{_libdir}/ocaml/caml $RPM_BUILD_ROOT%{_includedir}/caml | |
206 | # but leave compatibility symlink | |
207 | ln -s ../../include/caml $RPM_BUILD_ROOT%{_libdir}/ocaml/caml | |
208 | ||
209 | # compiled sources of compiler, needed by some programs | |
210 | for f in %{?with_ocaml_opt:asmcomp} bytecomp parsing typing utils ; do | |
211 | install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/compiler/$f | |
212 | cp $f/*.{cmi,cmo} $RPM_BUILD_ROOT%{_libdir}/%{name}/compiler/$f | |
213 | %{?with_ocaml_opt:cp $f/*.{cmx,o} $RPM_BUILD_ROOT%{_libdir}/%{name}/compiler/$f} | |
214 | done | |
215 | ||
216 | cp -r examples/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} | |
217 | ln -sf %{_libdir}/%{name}/{scrape,add}labels $RPM_BUILD_ROOT%{_bindir} | |
218 | ||
219 | # shutup checkfiles | |
220 | %{__rm} -r $RPM_BUILD_ROOT%{_mandir}/man3 | |
221 | ||
222 | # install info pages | |
223 | cp -p infoman/ocaml.info $RPM_BUILD_ROOT%{_infodir} | |
224 | cp -p infoman/ocaml.info.body-*.gz $RPM_BUILD_ROOT%{_infodir} | |
225 | ||
226 | %clean | |
227 | rm -rf $RPM_BUILD_ROOT | |
228 | ||
229 | %post doc-info -p /sbin/postshell | |
230 | -/usr/sbin/fix-info-dir -c %{_infodir} | |
231 | ||
232 | %postun doc-info -p /sbin/postshell | |
233 | -/usr/sbin/fix-info-dir -c %{_infodir} | |
234 | ||
235 | %files | |
236 | %defattr(644,root,root,755) | |
237 | %doc Changes LICENSE README.adoc | |
238 | %attr(755,root,root) %{_bindir}/addlabels | |
239 | %attr(755,root,root) %{_bindir}/ocaml | |
240 | %attr(755,root,root) %{_bindir}/ocamlc | |
241 | %attr(755,root,root) %{_bindir}/ocamlc.byte | |
242 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlc.opt} | |
243 | %attr(755,root,root) %{_bindir}/ocamlcmt | |
244 | %attr(755,root,root) %{_bindir}/ocamlcp | |
245 | %attr(755,root,root) %{_bindir}/ocamlcp.byte | |
246 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlcp.opt} | |
247 | %attr(755,root,root) %{_bindir}/ocamldebug | |
248 | %attr(755,root,root) %{_bindir}/ocamldep | |
249 | %attr(755,root,root) %{_bindir}/ocamldep.byte | |
250 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamldep.opt} | |
251 | %attr(755,root,root) %{_bindir}/ocamldoc | |
252 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamldoc.opt} | |
253 | %attr(755,root,root) %{_bindir}/ocamllex | |
254 | %attr(755,root,root) %{_bindir}/ocamllex.byte | |
255 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamllex.opt} | |
256 | %attr(755,root,root) %{_bindir}/ocamlmklib | |
257 | %attr(755,root,root) %{_bindir}/ocamlmklib.byte | |
258 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlmklib.opt} | |
259 | %attr(755,root,root) %{_bindir}/ocamlmktop | |
260 | %attr(755,root,root) %{_bindir}/ocamlmktop.byte | |
261 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlmktop.opt} | |
262 | %attr(755,root,root) %{_bindir}/ocamlobjinfo | |
263 | %attr(755,root,root) %{_bindir}/ocamlobjinfo.byte | |
264 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlobjinfo.opt} | |
265 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlopt} | |
266 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlopt.byte} | |
267 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlopt.opt} | |
268 | %attr(755,root,root) %{_bindir}/ocamloptp | |
269 | %attr(755,root,root) %{_bindir}/ocamloptp.byte | |
270 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamloptp.opt} | |
271 | %attr(755,root,root) %{_bindir}/ocamlprof | |
272 | %attr(755,root,root) %{_bindir}/ocamlprof.byte | |
273 | %{?with_ocaml_opt:%attr(755,root,root) %{_bindir}/ocamlprof.opt} | |
274 | %attr(755,root,root) %{_bindir}/ocamlyacc | |
275 | %attr(755,root,root) %{_bindir}/scrapelabels | |
276 | %{_includedir}/caml | |
277 | %{_libdir}/%{name}/caml | |
278 | %dir %{_libdir}/%{name}/compiler-libs | |
279 | %{_libdir}/%{name}/compiler-libs/*.cm* | |
280 | %{_libdir}/%{name}/compiler-libs/ocaml*.a | |
281 | %{?with_ocaml_opt:%{_libdir}/%{name}/compiler-libs/*.o} | |
282 | %dir %{_libdir}/%{name}/ocamldoc | |
283 | %{_libdir}/%{name}/ocamldoc/*.hva | |
284 | %dir %{_libdir}/%{name}/threads | |
285 | %{_libdir}/%{name}/threads/*.cm* | |
286 | %{_libdir}/%{name}/threads/threads.a | |
287 | %{_libdir}/%{name}/*.a | |
288 | %{?with_ocaml_opt:%{_libdir}/%{name}/*.o} | |
289 | %{_libdir}/%{name}/*.cm* | |
290 | %{_libdir}/%{name}/Makefile.config | |
291 | %{_libdir}/%{name}/ld.conf | |
292 | %{_libdir}/%{name}/camlheader | |
293 | %{_libdir}/%{name}/camlheaderd | |
294 | %{_libdir}/%{name}/camlheaderi | |
295 | %{_libdir}/%{name}/camlheader_ur | |
296 | %attr(755,root,root) %{_libdir}/%{name}/expunge | |
297 | %attr(755,root,root) %{_libdir}/%{name}/extract_crc | |
298 | %{_mandir}/man1/ocaml.1* | |
299 | %{_mandir}/man1/ocamlc.1* | |
300 | %{?with_ocaml_opt:%{_mandir}/man1/ocamlc.opt.1*} | |
301 | %{_mandir}/man1/ocamlcp.1* | |
302 | %{_mandir}/man1/ocamldebug.1* | |
303 | %{_mandir}/man1/ocamldep.1* | |
304 | %{_mandir}/man1/ocamldoc.1* | |
305 | %{_mandir}/man1/ocamllex.1* | |
306 | %{_mandir}/man1/ocamlmktop.1* | |
307 | %{?with_ocaml_opt:%{_mandir}/man1/ocamlopt.1*} | |
308 | %{?with_ocaml_opt:%{_mandir}/man1/ocamlopt.opt.1*} | |
309 | %{_mandir}/man1/ocamloptp.1* | |
310 | %{_mandir}/man1/ocamlprof.1* | |
311 | %{_mandir}/man1/ocamlyacc.1* | |
312 | ||
313 | %files runtime | |
314 | %defattr(644,root,root,755) | |
315 | %attr(755,root,root) %{_bindir}/ocamlrun | |
316 | %attr(755,root,root) %{_bindir}/ocamlrund | |
317 | %attr(755,root,root) %{_bindir}/ocamlruni | |
318 | %dir %{_libdir}/%{name} | |
319 | %{_libdir}/%{name}/eventlog_metadata | |
320 | %{?with_ocaml_opt:%attr(755,root,root) %{_libdir}/%{name}/libasmrun_shared.so} | |
321 | %dir %{_libdir}/%{name}/stublibs | |
322 | %attr(755,root,root) %{_libdir}/%{name}/stublibs/dllcamlstr.so | |
323 | %attr(755,root,root) %{_libdir}/%{name}/stublibs/dllthreads.so | |
324 | %attr(755,root,root) %{_libdir}/%{name}/stublibs/dllunix.so | |
325 | %attr(755,root,root) %{_libdir}/%{name}/libcamlrun_shared.so | |
326 | %{_mandir}/man1/ocamlrun.1* | |
327 | ||
328 | %files lib-source | |
329 | %defattr(644,root,root,755) | |
330 | %{_libdir}/%{name}/*.ml | |
331 | %{_libdir}/%{name}/*.mli | |
332 | %{_libdir}/%{name}/compiler-libs/*.mli | |
333 | %{_libdir}/%{name}/ocamldoc/*.mli | |
334 | %{_libdir}/%{name}/threads/*.mli | |
335 | ||
336 | %files doc-html | |
337 | %defattr(644,root,root,755) | |
338 | %doc docs/html/ocaml/* | |
339 | ||
340 | %files doc-info | |
341 | %defattr(644,root,root,755) | |
342 | %{_infodir}/ocaml.info* | |
343 | ||
344 | %files compiler-objects | |
345 | %defattr(644,root,root,755) | |
346 | %{_libdir}/%{name}/compiler | |
347 | ||
348 | %files ocamldoc-devel | |
349 | %defattr(644,root,root,755) | |
350 | %{_libdir}/%{name}/ocamldoc/*.cm* | |
351 | %{?with_ocaml_opt:%{_libdir}/%{name}/ocamldoc/*.a} | |
352 | ||
353 | %files examples | |
354 | %defattr(644,root,root,755) | |
355 | %{_examplesdir}/%{name}-%{version} |