1# @configure_input@
2
3#-- Global graphviz rpm and src.rpm tags-------------------------------------
4Name:    graphviz
5Summary: Graph Visualization Tools
6Version: @VERSION@
7Release: 1%{?dist}
8Group:   Applications/Multimedia
9License: EPL
10URL:     http://www.graphviz.org/
11Source0: http://www.graphviz.org/pub/@GRAPHVIZ_SOURCES@/graphviz-@VERSION@.tar.gz
12
13# Necessary conditionals
14%ifarch %{mono_arches}
15%global SHARP      1
16%else
17%global SHARP      0
18%endif
19
20# Assuming Fedora
21%global LICENSE    1
22%global ANN        1
23%global ARRRR      1
24%global DEEEE      0
25%global DEVIL      1
26%global GOLANG     1
27%global GTS        1
28%global GTK        1
29%global GUILE      1
30%global JAVA       1
31%global JAVASCRIPT 0
32%global LASI       1
33%global OCAML      1
34%global WEBP       1
35%global PYTHON     0
36%global PYTHON2    1
37%global PYTHON3    1
38%global QT5        1
39# Not yet.
40%global MING       0
41
42# Overrides for RHEL
43%if 0%{?rhel}
44%global LICENSE    0
45%global ANN        0
46%global ARRRR      0
47%global DEEEE      0
48%global DEVIL      0
49%global GOLANG     0
50%global GTS        0
51%global GTK        0
52%global JAVASCRIPT 0
53%global LASI       0
54%if 0%{?rhel} >= 8
55%global PYTHON     0
56%global PYTHON2    1
57%global PYTHON3    1
58%else
59%global PYTHON     1
60%global PYTHON2    0
61%global PYTHON3    0
62%endif
63%global SHARP      0
64%global WEBP       0
65%endif
66
67# Plugins version
68%global pluginsver 6
69
70BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
71
72BuildRequires: zlib-devel expat-devel ksh bison m4 flex swig gcc-c++
73BuildRequires: libXaw-devel libSM-devel libICE-devel libXpm-devel libXt-devel
74BuildRequires: libXmu-devel libXext-devel libX11-devel gtk2-devel freeglut-devel
75BuildRequires: freetype-devel fontconfig-devel cairo-devel pango-devel
76BuildRequires: gmp-devel gd gd-devel librsvg2-devel
77BuildRequires: ghostscript ghostscript-devel poppler-glib-devel libtool-ltdl libtool-ltdl-devel
78BuildRequires: ruby ruby-devel php-devel lua-devel
79BuildRequires: perl-devel perl-libs perl-ExtUtils-Embed tcl tcl-devel tk tk-devel
80
81%if %{ANN}
82BuildRequires: ann-devel
83%endif
84%if %{ARRRR}
85BuildRequires: R-devel
86%endif
87%if %{DEEEE}
88BuildRequires: ldc-druntime-devel
89%endif
90%if %{DEVIL}
91BuildRequires: DevIL-devel
92%endif
93%if %{GOLANG}
94BuildRequires: golang gcc-go swig >= 3.0.2
95%endif
96%if %{GTK}
97BuildRequires: libglade2-devel gtkglext-devel
98%if 0%{?fedora} <= 32
99BuildRequires: glade3-libgladeui-devel
100%endif
101%endif
102%if %{GTS}
103BuildRequires: gts-devel
104%endif
105%if %{GUILE}
106BuildRequires: guile-devel
107%endif
108%if %{JAVA}
109BuildRequires: java-devel
110%endif
111#%if %{JAVASCRIPT}
112#BuildRequires: javascript-devel
113#%endif
114%if %{LASI}
115BuildRequires: lasi-devel
116%endif
117%if %{OCAML}
118BuildRequires: ocaml
119%endif
120%if %{PYTHON}
121BuildRequires: python python-devel
122%endif
123%if %{PYTHON2}
124BuildRequires: python2 python2-devel
125%endif
126%if %{PYTHON3}
127BuildRequires: python3 python3-devel
128%endif
129%if %{QT5}
130BuildRequires: qt5-qtbase-devel
131%endif
132%if %{SHARP}
133BuildRequires: mono-core
134%endif
135%if %{WEBP}
136BuildRequires: libwebp-devel
137%endif
138
139# What a meal PHP makes of versioning !!!
140%define php_extdir %(php-config --extension-dir 2>/dev/null || echo %{_libdir}/php4)
141%global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1)
142
143%if "%{php_version}" < "5.6"
144%global ini_name     %{name}.ini
145%else
146%global ini_name     40-%{name}.ini
147%endif
148
149# Fix private-shared-object-provides
150# RPM 4.8
151%{?filter_provides_in: %filter_provides_in %{php_extdir}/.*\.so$}
152%{?filter_setup}
153# RPM 4.9
154%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{php_extdir}/.*\\.so$
155
156# Fix for the i386 extended precision (rhbz#772637)
157%ifarch i386 i686
158%global FFSTORE -ffloat-store
159%endif
160
161#-- main graphviz rpm ------------------------------------------------
162Requires:         %{name}-nox = %{version}-%{release}
163Requires:         %{name}-x = %{version}-%{release}
164
165%description
166A collection of tools for the manipulation and layout
167of graphs (as in nodes and edges, not as in bar-charts).
168
169%files
170%defattr(-,root,root,-)
171%if %{LICENSE}
172%license COPYING
173%endif
174%doc COPYING AUTHORS CHANGELOG.md NEWS README
175
176#-- graphviz-nox rpm --------------------------------------------------
177%package nox
178Group:            Applications/Multimedia
179Summary:          Graphviz commands with no X11 dependencies
180Requires:         urw-fonts
181Requires:         %{name}-libs = %{version}-%{release}
182Requires:         %{name}-plugins-core = %{version}-%{release}
183Provides:         %{name}-nox = %{version}-%{release}
184
185%description nox
186Graphviz plugins and commands that do not depend on x11.
187When used alone, this is intended for minimalist web-server apps
188with no X11 on the server.
189
190# completely remove any old configs before any fresh install of dot.
191# don't remove any externally provided plugins. "doc -c" should refind them
192%pre nox
193rm -rf %{_libdir}/graphviz/config* || :
194
195# run "dot -c" to generate plugin config in {_libdir}/graphviz/config%{pluginsver}
196%post nox
197LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
198
199%files nox
200%defattr(-,root,root,-)
201%if %{LICENSE}
202%license COPYING
203%endif
204%doc COPYING AUTHORS CHANGELOG.md NEWS README
205%exclude %{_bindir}/dot_builtins
206%{_bindir}/acyclic
207%{_bindir}/bcomps
208%{_bindir}/ccomps
209%{_bindir}/circo
210%{_bindir}/cluster
211%{_bindir}/dijkstra
212%{_bindir}/dot
213%{_bindir}/dot2gxl
214%{_bindir}/fdp
215%{_bindir}/gc
216%{_bindir}/gml2gv
217%{_bindir}/graphml2gv
218%{_bindir}/gv2gml
219%{_bindir}/gv2gxl
220%{_bindir}/gvcolor
221%{_bindir}/gvgen
222%{_bindir}/gvmap
223%{_bindir}/gvmap.sh
224%{_bindir}/gvpack
225%{_bindir}/gvpr
226%{_bindir}/gxl2dot
227%{_bindir}/gxl2gv
228%if %{ANN}
229%{_bindir}/mingle
230%endif
231%{_bindir}/edgepaint
232%{_bindir}/mm2gv
233%{_bindir}/neato
234%{_bindir}/nop
235%{_bindir}/osage
236%{_bindir}/patchwork
237%{_bindir}/prune
238%{_bindir}/sccmap
239%{_bindir}/sfdp
240%{_bindir}/tred
241%{_bindir}/twopi
242%{_bindir}/unflatten
243%{_mandir}/man1/acyclic.1*
244%{_mandir}/man1/bcomps.1*
245%{_mandir}/man1/ccomps.1*
246%{_mandir}/man1/circo.1*
247%{_mandir}/man1/cluster.1*
248%{_mandir}/man1/dijkstra.1*
249%{_mandir}/man1/dot.1*
250%{_mandir}/man1/dot2gxl.1*
251%{_mandir}/man1/fdp.1*
252%{_mandir}/man1/gc.1*
253%{_mandir}/man1/gml2gv.1*
254%{_mandir}/man1/graphml2gv.1*
255%{_mandir}/man1/gv2gml.1*
256%{_mandir}/man1/gv2gxl.1*
257%{_mandir}/man1/gvcolor.1*
258%{_mandir}/man1/gvgen.1*
259%{_mandir}/man1/gvmap.1*
260%{_mandir}/man1/gvmap.sh.1*
261%{_mandir}/man1/gvpack.1*
262%{_mandir}/man1/gvpr.1*
263%{_mandir}/man1/gxl2dot.1*
264%{_mandir}/man1/gxl2gv.1*
265%{_mandir}/man1/mingle.1*
266%{_mandir}/man1/edgepaint.1*
267%{_mandir}/man1/mm2gv.1*
268%{_mandir}/man1/neato.1*
269%{_mandir}/man1/nop.1*
270%{_mandir}/man1/osage.1*
271%{_mandir}/man1/patchwork.1*
272%{_mandir}/man1/prune.1*
273%{_mandir}/man1/sccmap.1*
274%{_mandir}/man1/sfdp.1*
275%{_mandir}/man1/tred.1*
276%{_mandir}/man1/twopi.1*
277%{_mandir}/man1/unflatten.1*
278%{_mandir}/man7/graphviz.7*
279%dir %{_datadir}/graphviz
280%{_datadir}/graphviz/gvpr/*
281
282#-- graphviz-libs rpm --------------------------------------------------
283%package libs
284Group:            Applications/Multimedia
285Summary:          Graphviz base libs
286Requires(post):   /sbin/ldconfig
287Requires(postun): /sbin/ldconfig
288
289%description libs
290Graphviz core libs
291
292%post libs
293/sbin/ldconfig
294
295%postun libs
296/sbin/ldconfig
297
298%files libs
299%defattr(-,root,root,-)
300%{_libdir}/libcdt.so.*
301%{_libdir}/libcgraph.so.*
302%{_libdir}/libgvc.so.*
303%{_libdir}/libgvpr.so.*
304%{_libdir}/libpathplan.so.*
305%{_libdir}/libxdot.so.4*
306%{_libdir}/liblab_gamut.so.*
307%exclude %{_libdir}/graphviz/*
308
309#-- graphviz-plugins-core rpm --------------------------------------------------
310%package plugins-core
311Group:            Applications/Multimedia
312Summary:          Graphviz plugins - core layout engines and text renderers
313Requires:         %{name}-nox = %{version}-%{release}
314
315%description plugins-core
316Graphviz plugins - core layout engines and text renderers
317
318# run "dot -c" to generate plugin config in {_libdir}/graphviz/config%{pluginsver}
319# this one is conditional because of rpm dependency ordering
320# on a fresh install this package is installed before dot is avaiable from graphviz-nox
321# no matter since dot -c is also run from the graphviz-nox install
322%post plugins-core
323[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
324
325# if there is no dot after everything else is done, then remove config
326%postun plugins-core
327if [ $1 -eq 0 ]; then
328        rm -f %{_libdir}/graphviz/config6 || :
329fi
330
331%files plugins-core
332%defattr(-,root,root,-)
333%dir %{_libdir}/graphviz
334%{_libdir}/graphviz/libgvplugin_core.so.*
335%{_libdir}/graphviz/libgvplugin_dot_layout.so.*
336%{_libdir}/graphviz/libgvplugin_neato_layout.so.*
337
338#-- graphviz-x rpm --------------------------------------------------
339%package x
340Group:            Applications/Multimedia
341Summary:          Graphviz commands with X11 dependencies
342Requires:         %{name}-nox = %{version}-%{release}
343Requires:         %{name}-plugins-x = %{version}-%{release}
344
345%description x
346Graphviz commands with X11 dependencies
347
348%files x
349%defattr(-,root,root,-)
350%if %{LICENSE}
351%license COPYING
352%endif
353%doc COPYING AUTHORS CHANGELOG.md NEWS README
354%{_bindir}/lefty
355%{_bindir}/lneato
356%{_bindir}/dotty
357%{_bindir}/vimdot
358%{_mandir}/man1/lefty.1*
359%{_mandir}/man1/lneato.1*
360%{_mandir}/man1/dotty.1*
361%{_mandir}/man1/vimdot.1*
362%{_datadir}/graphviz/lefty
363%if %{GTK}
364%{_bindir}/smyrna
365%{_datadir}/graphviz/smyrna
366%{_mandir}/man1/smyrna.1*
367%endif
368
369#-- graphviz-plugins-x rpm --------------------------------------------------
370%package plugins-x
371Group:            Applications/Multimedia
372Summary:          Graphviz plugins with X11 dependencies
373Requires:         %{name} = %{version}-%{release}
374
375%description plugins-x
376Graphviz plugins that depend on x11 - most installations will want this.
377
378# run "dot -c" to generate plugin config in {_libdir}/graphviz/config6
379%post plugins-x
380LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
381
382%postun plugins-x
383[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
384
385%files plugins-x
386%defattr(-,root,root,-)
387%dir %{_libdir}/graphviz
388%{_libdir}/graphviz/libgvplugin_xlib.so.*
389%{_libdir}/graphviz/libgvplugin_pango.so.*
390%{_libdir}/graphviz/libgvplugin_rsvg.so.*
391%{_libdir}/graphviz/libgvplugin_gdk.so.*
392%{_libdir}/graphviz/libgvplugin_gs.so.*
393%{_libdir}/graphviz/libgvplugin_poppler.so.*
394%if %{GTK}
395%{_libdir}/graphviz/libgvplugin_gtk.so.*
396%endif
397%if %{LASI}
398%{_libdir}/graphviz/libgvplugin_lasi.so.*
399%endif
400
401#-- graphviz-gd rpm --------------------------------------------------
402%package gd
403Group:            Applications/Multimedia
404Summary:          Graphviz binaries that depend on libgd
405Requires:         %{name} = %{version}-%{release}
406
407# this next Requires is not strictly neccessary for diffimg,
408#   but users will probably expect the plugins to get pulled in
409Requires:         %{name}-plugins-gd = %{version}-%{release}
410
411%description gd
412Graphviz binaries that depend on gd.  (Unless you absolutely have
413to use GIF, you are recommended to use the PNG format instead because
414of the better quality anti-aliased lines provided by the cairo+pango
415based renderer.)
416
417%files gd
418%defattr(-,root,root,-)
419%{_bindir}/diffimg
420%{_mandir}/man1/diffimg.1*
421
422#-- graphviz-plugins-gd rpm --------------------------------------------------
423%package plugins-gd
424Group:            Applications/Multimedia
425Summary:          Graphviz plugin for gd renderers
426Requires:         %{name} = %{version}-%{release}
427
428%description plugins-gd
429Graphviz plugin for image rendering using libgd.  (Unless you absolutely have
430to use GIF, you are recommended to use the PNG format instead because
431of the better quality anti-aliased lines provided by the cairo+pango
432based renderer.)
433
434# run "dot -c" to generate plugin config in {_libdir}/graphviz/config6
435%post plugins-gd
436LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
437
438%postun plugins-gd
439[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
440
441%files plugins-gd
442%defattr(-,root,root,-)
443%dir %{_libdir}/graphviz
444%{_libdir}/graphviz/libgvplugin_gd.so.*
445
446#-- graphviz-plugins-webp rpm --------------------------------------------------
447%if %{WEBP}
448%package plugins-webp
449Group:            Applications/Multimedia
450Summary:          Graphviz plugin for webp format images, using libwebp
451Requires:         %{name}-x = %{version}-%{release}
452Obsoletes:        %{name}-webp <= 2.41
453Provides:         %{name}-webp = %{version}-%{release}
454
455%description plugins-webp
456Graphviz plugin for webp image rendering.
457
458# run "dot -c" to generate plugin config in {_libdir}/graphviz/config6
459%post plugins-webp
460LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
461
462%postun plugins-webp
463[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
464
465%files plugins-webp
466%defattr(-,root,root,-)
467%dir %{_libdir}/graphviz
468%{_libdir}/graphviz/libgvplugin_webp.so.*
469%endif
470
471#-- graphviz-plugins-visio rpm --------------------------------------------------
472%package plugins-visio
473Group:            Applications/Multimedia
474Summary:          Graphviz plugin for visio format images
475Requires:         %{name}-nox = %{version}-%{release}
476
477%description plugins-visio
478Graphviz plugin for visio image rendering.
479
480# run "dot -c" to generate plugin config in {_libdir}/graphviz/config6
481%post plugins-visio
482LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
483
484%postun plugins-visio
485[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
486
487%files plugins-visio
488%defattr(-,root,root,-)
489%dir %{_libdir}/graphviz
490%{_libdir}/graphviz/libgvplugin_visio.so.*
491
492#-- graphviz-plugins-devil rpm --------------------------------------------------
493%if %{DEVIL}
494%package plugins-devil
495Group:            Applications/Multimedia
496Summary:          Graphviz plugin for renderers based on DevIL
497Requires:         %{name}-x = %{version}-%{release}
498Obsoletes:        %{name}-devil <= 2.41
499Provides:         %{name}-devil = %{version}-%{release}
500
501%description plugins-devil
502Graphviz plugin for renderers based on DevIL.  (Unless you absolutely have
503to use BMP, TIF, or TGA, you are recommended to use the PNG format instead
504supported directly by the cairo+pango based renderer in the base graphviz rpm.)
505
506# run "dot -c" to generate plugin config in {_libdir}/graphviz/config6
507%post plugins-devil
508LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
509
510%postun plugins-devil
511[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
512
513%files plugins-devil
514%defattr(-,root,root,-)
515%dir %{_libdir}/graphviz
516%{_libdir}/graphviz/libgvplugin_devil.so.*
517%endif
518
519#-- graphviz-plugins-ming rpm --------------------------------------------------
520%if %{MING}
521%package plugins-ming
522Group:            Applications/Multimedia
523Summary:          Graphviz plugin for flash renderer based on ming
524Requires:         %{name}-x = %{version}-%{release}
525Obsoletes:        %{name}-ming <= 2.41
526Provides:         %{name}-ming = %{version}-%{release}
527
528%description plugins-ming
529Graphviz plugin for -Tswf (flash) renderer based on ming.
530
531# run "dot -c" to generate plugin config in {_libdir}/graphviz/config6
532%post plugins-ming
533LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c
534
535%postun plugins-ming
536[ -x %{_bindir}/dot ] && LD_LIBRARY_PATH=%{_libdir} %{_bindir}/dot -c || :
537
538%files plugins-ming
539%{_libdir}/graphviz/libgvplugin_ming.so.*
540%{_libdir}/graphviz/*fdb
541%endif
542
543#-- graphviz-qt rpm --------------------------------------------------
544%package qt
545Group:            Applications/Multimedia
546Summary:          Graphviz applications using _QT
547Requires:         %{name}-x = %{version}-%{release}
548
549%description qt
550Graphviz applications using _QT - currently just gvedit
551
552%files qt
553%defattr(-,root,root,-)
554%{_bindir}/gvedit
555%{_datadir}/graphviz/gvedit
556%{_mandir}/man1/gvedit.1*
557
558#-- graphviz-lang-sharp rpm --------------------------------------------
559%if %{SHARP}
560%package lang-sharp
561Group:          Applications/Multimedia
562Summary:        C# extension for graphviz
563Requires:       %{name} = %{version}-%{release}, mono-core
564Obsoletes:      %{name}-sharp <= 2.41
565Provides:       %{name}-sharp = %{version}-%{release}
566
567%description lang-sharp
568C# extension for graphviz.
569
570%files lang-sharp
571%defattr(-,root,root,-)
572%dir %{_libdir}/graphviz/sharp
573%{_libdir}/graphviz/sharp/*
574%{_mandir}/man3/*.3sharp.*
575%endif
576
577#-- graphviz-lang-d rpm ---------------------------------------------
578%if 0%{?DEEEE}
579%package lang-d
580Group:          Applications/Multimedia
581Summary:        D extension for graphviz
582Requires:       %{name} = %{version}-%{release}, D
583Obsoletes:      %{name}-d <= 2.41
584Provides:       %{name}-d = %{version}-%{release}
585
586%description lang-d
587D extension for graphviz.
588
589%files lang-d
590%defattr(-,root,root,-)
591%dir %{_libdir}/graphviz/d
592%{_libdir}/graphviz/d/*
593%{_mandir}/man3/*.3d.*
594%endif
595
596#-- graphviz-lang-go rpm --------------------------------------------
597%if %{GOLANG}
598%package lang-go
599Group:          Applications/Multimedia
600Summary:        GO extension for graphviz
601Requires:       %{name} = %{version}-%{release}, golang
602Obsoletes:      %{name}-go <= 2.41
603Provides:       %{name}-go = %{version}-%{release}
604
605%description lang-go
606Guile extension for graphviz.
607
608%files lang-go
609%defattr(-,root,root,-)
610%dir %{_libdir}/graphviz/go
611%{_libdir}/graphviz/go/*
612%{_mandir}/man3/*.3go.*
613%endif
614
615#-- graphviz-lang-guile rpm --------------------------------------------
616%if %{GUILE}
617%package lang-guile
618Group:          Applications/Multimedia
619Summary:        Guile extension for graphviz
620Requires:       %{name} = %{version}-%{release}, guile
621Obsoletes:      %{name}-guile <= 2.41
622Provides:       %{name}-guile = %{version}-%{release}
623
624%description lang-guile
625Guile extension for graphviz.
626
627%files lang-guile
628%defattr(-,root,root,-)
629%dir %{_libdir}/graphviz/guile
630%{_libdir}/graphviz/guile/*
631%{_mandir}/man3/*.3guile.*
632%endif
633
634#-- graphviz-lang-io rpm -----------------------------------------------
635%if 0%{?_IO}
636%package lang-io
637Group:          Applications/Multimedia
638Summary:        Io extension for graphviz
639Requires:       %{name} = %{version}-%{release}, io
640Obsoletes:      %{name}-io <= 2.41
641Provides:       %{name}-io = %{version}-%{release}
642
643%description lang-io
644Io extension for graphviz.
645
646%files lang-io
647%defattr(-,root,root,-)
648%{_mandir}/man3/*.3io.*
649%endif
650
651#-- graphviz-lang-java rpm ---------------------------------------------
652%if 0%{?JAVA}
653%package lang-java
654Group:          Applications/Multimedia
655Summary:        Java extension for graphviz
656Requires:       %{name} = %{version}-%{release}, java
657Obsoletes:      %{name}-java <= 2.41
658Provides:       %{name}-java = %{version}-%{release}
659
660%description lang-java
661Java extension for graphviz.
662
663%files lang-java
664%defattr(-,root,root,-)
665%dir %{_libdir}/graphviz/java
666%{_libdir}/graphviz/java/*
667%{_mandir}/man3/*.3java.*
668%endif
669
670#-- graphviz-lang-javascript rpm ---------------------------------------------
671%if 0%{?JAVASCRIPT}
672%package lang-javascript
673Group:          Applications/Multimedia
674Summary:        Javascript extension for graphviz
675Requires:       %{name} = %{version}-%{release}, javascript
676Obsoletes:      %{name}-javascript <= 2.41
677Provides:       %{name}-javascript = %{version}-%{release}
678
679%description lang-javascript
680Javascript extension for graphviz.
681
682%files lang-javascript
683%defattr(-,root,root,-)
684%dir %{_libdir}/graphviz/javascript
685%{_libdir}/graphviz/javascript/*
686%{_mandir}/man3/*.3javascript.*
687%endif
688
689#-- graphviz-lang-lua rpm ----------------------------------------------
690%package lang-lua
691Group:          Applications/Multimedia
692Summary:        Lua extension for graphviz
693Requires:       %{name} = %{version}-%{release}, lua
694Obsoletes:      %{name}-lua <= 2.41
695Provides:       %{name}-lua = %{version}-%{release}
696
697%description lang-lua
698Lua extension for graphviz.
699
700%files lang-lua
701%defattr(-,root,root,-)
702%{_libdir}/lua*/*
703%{_datadir}/graphviz/demo/*.lua*
704%{_mandir}/man3/*.3lua.*
705%exclude %{_libdir}/graphviz/lua/*.so
706
707#-- graphviz-lang-ocaml rpm --------------------------------------------
708%if %{OCAML}
709%package lang-ocaml
710Group:          Applications/Multimedia
711Summary:        Ocaml extension for graphviz
712Requires:       %{name} = %{version}-%{release}, ocaml
713Obsoletes:      %{name}-ocaml <= 2.41
714Provides:       %{name}-ocaml = %{version}-%{release}
715
716%description lang-ocaml
717Ocaml extension for graphviz.
718
719%files lang-ocaml
720%defattr(-,root,root,-)
721%dir %{_libdir}/graphviz/ocaml
722%{_libdir}/graphviz/ocaml/*
723%{_mandir}/man3/*.3ocaml.*
724%endif
725
726#-- graphviz-lang-perl rpm ---------------------------------------------
727%package lang-perl
728Group:          Applications/Multimedia
729Summary:        Perl extension for graphviz
730Requires:       %{name} = %{version}-%{release}, perl
731Obsoletes:      %{name}-perl <= 2.41
732Provides:       %{name}-perl = %{version}-%{release}
733
734%description lang-perl
735Perl extension for graphviz.
736
737%files lang-perl
738%defattr(-,root,root,-)
739%{_libdir}/perl*/*
740%{_datadir}/graphviz/demo/*.pl*
741%{_mandir}/man3/*.3perl.*
742%exclude %{_libdir}/graphviz/perl/*.so
743%exclude %{_libdir}/graphviz/perl/*.pm
744
745#-- graphviz-lang-php rpm ----------------------------------------------
746%package lang-php
747Group:          Applications/Multimedia
748Summary:        PHP extension for graphviz
749Requires:       %{name} = %{version}-%{release}, /usr/bin/php
750Obsoletes:      %{name}-php <= 2.41
751Provides:       %{name}-php = %{version}-%{release}
752
753%description lang-php
754PHP extension for graphviz.
755
756%files lang-php
757%defattr(-,root,root,-)
758%config(noreplace) %{_sysconfdir}/php.d/%{name}.ini
759%{php_extdir}/gv.so
760%{_datadir}/php*/*
761%{_datadir}/graphviz/demo/*.php*
762%{_mandir}/man3/*.3php.*
763%exclude %{_libdir}/graphviz/php/*.so
764%exclude %{_libdir}/graphviz/php/*.php
765
766#-- graphviz-lang-python rpm -------------------------------------------
767%if %{PYTHON}
768%package lang-python
769Group:          Applications/Multimedia
770Summary:        Python extension for graphviz
771Requires:       %{name} = %{version}-%{release}, python
772Obsoletes:      %{name}-python <= 2.41
773Provides:       %{name}-python = %{version}-%{release}
774
775%description lang-python
776Python extension for graphviz.
777
778%files lang-python
779%defattr(-,root,root,-)
780%{_libdir}/python*/*
781%{_datadir}/graphviz/demo/*.py*
782%{_mandir}/man3/gv.3python.*
783%exclude %{_libdir}/graphviz/python*/*.so
784%exclude %{_libdir}/graphviz/python*/*.py*
785%endif
786
787#-- graphviz-lang-python2 rpm -------------------------------------------
788%if %{PYTHON2}
789%package lang-python2
790Group:          Applications/Multimedia
791Summary:        Python extension for graphviz
792Requires:       %{name} = %{version}-%{release}, python2
793Conflicts:      %{name}-python <= 2.41
794Conflicts:      %{name}-lang-python <= 2.41
795
796%description lang-python2
797Python extension for graphviz.
798
799%files lang-python2
800%defattr(-,root,root,-)
801%{_libdir}/python2*/*
802%{_datadir}/graphviz/demo/*.py*
803%{_mandir}/man3/gv.3python.*
804%exclude %{_libdir}/graphviz/python2/*.so
805%exclude %{_libdir}/graphviz/python2/*.py*
806%endif
807
808#-- graphviz-lang-python3 rpm -------------------------------------------
809%if %{PYTHON3}
810%package lang-python3
811Group:          Applications/Multimedia
812Summary:        Python extension for graphviz
813Requires:       %{name} = %{version}-%{release}, python3
814Conflicts:      %{name}-python <= 2.41
815Conflicts:      %{name}-lang-python <= 2.41
816
817%description lang-python3
818Python extension for graphviz.
819
820%files lang-python3
821%defattr(-,root,root,-)
822%{_libdir}/python3*/*
823%{_datadir}/graphviz/demo/*.py*
824%{_mandir}/man3/gv.3python.*
825%exclude %{_libdir}/graphviz/python3/*.so
826%exclude %{_libdir}/graphviz/python3/*.py*
827%endif
828
829#-- graphviz-lang-R rpm ---------------------------------------------
830%if %{ARRRR}
831%package lang-R
832Group:          Applications/Multimedia
833Summary:        R extension for graphviz
834Requires:       %{name} = %{version}-%{release}, R
835Obsoletes:      %{name}-R <= 2.41
836Provides:       %{name}-R = %{version}-%{release}
837
838%description lang-R
839R extension for graphviz.
840
841%files lang-R
842%defattr(-,root,root,-)
843%dir %{_libdir}/graphviz/R
844%{_libdir}/graphviz/R/*
845%{_mandir}/man3/*.3r.*
846%endif
847
848#-- graphviz-lang-ruby rpm ---------------------------------------------
849%package lang-ruby
850Group:          Applications/Multimedia
851Summary:        Ruby extension for graphviz
852Requires:       %{name} = %{version}-%{release}, ruby
853Obsoletes:      %{name}-ruby <= 2.41
854Provides:       %{name}-ruby = %{version}-%{release}
855
856%description lang-ruby
857Ruby extension for graphviz.
858
859%files lang-ruby
860%defattr(-,root,root,-)
861%{_libdir}/*ruby*/*
862%{_datadir}/graphviz/demo/*.rb*
863%{_mandir}/man3/*.3ruby.*
864%exclude %{_libdir}/graphviz/ruby/*.so
865
866#-- graphviz-lang-tcl rpm ----------------------------------------------
867%package lang-tcl
868Group:          Applications/Multimedia
869Summary:        Tcl extension & tools for graphviz
870Requires:       %{name} = %{version}-%{release}, tcl >= 8.3
871Obsoletes:      %{name}-tcl <= 2.41
872Provides:       %{name}-tcl = %{version}-%{release}
873
874%description lang-tcl
875Various tcl packages (extensions) for the graphviz tools.
876
877%files lang-tcl
878%defattr(-,root,root,-)
879%{_libdir}/tcl*/*
880%{_datadir}/graphviz/demo/*.tcl*
881%{_datadir}/graphviz/demo/*_data
882%{_datadir}/graphviz/demo/entities.html
883%{_mandir}/man3/*.3tcl.*
884%exclude %{_libdir}/graphviz/tcl/*
885
886#-- graphviz-devel rpm --------------------------------------------
887%package devel
888Group:          Development/Libraries
889Summary:        Development package for graphviz
890Requires:       %{name}-libs = %{version}-%{release}, pkgconfig
891Requires(post):   /sbin/ldconfig
892Requires(postun): /sbin/ldconfig
893
894%description devel
895A collection of tools for the manipulation and layout
896of graphs (as in nodes and edges, not as in bar-charts).
897This package contains development files for graphviz-libs.
898
899%post devel
900/sbin/ldconfig
901
902%postun devel
903/sbin/ldconfig
904
905%files devel
906%defattr(-,root,root,-)
907%{_includedir}/graphviz
908%{_libdir}/libcdt.so
909%{_mandir}/man3/cdt.3.*
910%{_libdir}/pkgconfig/libcdt.pc
911%{_libdir}/libcgraph.so
912%{_mandir}/man3/cgraph.3.*
913%{_libdir}/pkgconfig/libcgraph.pc
914%{_libdir}/libgvc.so
915%{_mandir}/man3/gvc.3.*
916%{_libdir}/pkgconfig/libgvc.pc
917%{_libdir}/libgvpr.so
918%{_mandir}/man3/gvpr.3.*
919%{_libdir}/pkgconfig/libgvpr.pc
920%{_libdir}/libpathplan.so
921%{_mandir}/man3/pathplan.3.*
922%{_libdir}/pkgconfig/libpathplan.pc
923%{_libdir}/libxdot.so
924%{_mandir}/man3/xdot.3.*
925%{_libdir}/pkgconfig/libxdot.pc
926%{_libdir}/liblab_gamut.so
927%{_libdir}/pkgconfig/liblab_gamut.pc
928%{_mandir}/man3/expr.3.*
929%{_mandir}/man3/pack.3.*
930%exclude %{_libdir}/graphviz/libgvplugin*
931%exclude %{_libdir}/graphviz/*.so
932
933#-- graphviz-graphs rpm -------------------------------------------
934%package graphs
935Group:          Applications/Multimedia
936Summary:        Demo graphs for graphviz
937BuildArch:      noarch
938
939%description graphs
940Some demo graphs for graphviz.
941
942%files graphs
943%defattr(-,root,root,-)
944%dir %{_datadir}/graphviz
945%{_datadir}/graphviz/graphs
946%if %{GTK}
947%{_datadir}/graphviz/examples
948%endif
949
950#-- graphviz-doc rpm ----------------------------------------------
951%package doc
952Group:          Documentation
953Summary:        PDF and HTML documents for graphviz
954BuildArch:      noarch
955
956%description doc
957Provides some additional PDF and HTML documentation for graphviz.
958
959%files doc
960%defattr(-,root,root,-)
961%doc __doc/*
962
963#-- building --------------------------------------------------
964
965%prep
966%setup -q
967for p in %{patches}; do
968     patch -p1 < ${p} || exit 1
969done
970
971%build
972CFLAGS="$RPM_OPT_FLAGS" \
973./configure \
974        --prefix=%{_prefix} \
975        --bindir=%{_bindir} \
976        --libdir=%{_libdir} \
977        --includedir=%{_includedir} \
978        --datadir=%{_datadir} \
979        --mandir=%{_mandir} \
980        --disable-static \
981        --disable-dependency-tracking \
982        --enable-sharp \
983        --enable-guile \
984        --disable-io \
985        --enable-java \
986        --disable-d \
987        --disable-javascript \
988        --enable-lua \
989        --enable-perl \
990        --enable-php \
991        --enable-ruby \
992        --enable-tcl \
993        --with-gdk \
994        --with-ghostscript \
995        --without-glitz \
996        --with-ipsepcola \
997%if ! %{ANN}
998        --without-ann \
999%endif
1000%if ! %{PYTHON}
1001        --disable-python \
1002%endif
1003%if ! %{PYTHON2}
1004        --disable-python2 \
1005%endif
1006%if ! %{PYTHON3}
1007        --disable-python3 \
1008%endif
1009%if ! %{GOLANG}
1010        --disable-go \
1011%endif
1012%if ! %{JAVASCRIPT}
1013        --disable-javascript \
1014%endif
1015%if ! %{JAVA}
1016        --disable-java \
1017%endif
1018%if ! %{GUILE}
1019        --disable-guile \
1020%endif
1021%if ! %{LASI}
1022        --without-lasi \
1023%endif
1024%if ! %{GTS}
1025        --without-gts \
1026%endif
1027%if ! %{SHARP}
1028        --disable-sharp \
1029%endif
1030%if ! %{OCAML}
1031        --disable-ocaml \
1032%endif
1033%if ! %{MING}
1034        --without-ming \
1035%endif
1036%if ! %{ARRRR}
1037        --disable-r \
1038%endif
1039%if ! %{DEEEE}
1040        --disable-d \
1041%endif
1042%if ! %{WEBP}
1043        --without-webp \
1044%endif
1045%if ! %{DEVIL}
1046        --without-devil \
1047%endif
1048%if ! %{GTK}
1049        --without-gtk \
1050        --without-gtkgl \
1051        --without-gtkglext \
1052        --without-smyrna \
1053%endif
1054        --with-qt \
1055        --with-visio \
1056        --with-pangocairo \
1057        --with-poppler \
1058        --with-rsvg \
1059        --with-ortho \
1060        --with-sfdp \
1061        --with-x
1062make %{?_smp_mflags}
1063
1064%install
1065rm -rf %{buildroot} __doc
1066make DESTDIR=%{buildroot} \
1067        docdir=%{buildroot}%{_docdir}/%{name} \
1068        pkgconfigdir=%{_libdir}/pkgconfig \
1069        install
1070find %{buildroot} -type f -name "*.la" -exec rm -f {} ';'
1071chmod -x %{buildroot}%{_datadir}/%{name}/lefty/*
1072cp -a %{buildroot}%{_datadir}/%{name}/doc __doc
1073rm -rf %{buildroot}%{_datadir}/%{name}/doc
1074
1075# PHP configuration file
1076%{__mkdir_p} %{buildroot}%{_sysconfdir}/php.d
1077%{__cat} << __EOF__ > %{buildroot}%{_sysconfdir}/php.d/%{name}.ini
1078; Enable %{name} extension module
1079extension=gv.so
1080__EOF__
1081
1082# Remove executable modes from demos
1083find %{buildroot}%{_datadir}/%{name}/demo -type f -exec chmod a-x {} ';'
1084
1085# Rename python demos to prevent byte compilation
1086find %{buildroot}%{_datadir}/%{name}/demo -type f -name "*.py" -exec mv {} {}.demo ';'
1087
1088# # Remove metadata from generated PDFs
1089# pushd %{buildroot}%{_docdir}/%{name}/pdf
1090# for f in prune lneato.1 lefty.1 gvgen.1 gc.1 dotty.1 dot.1 cluster.1
1091# do
1092#   if [ -f $f.pdf ]
1093#   then
1094# # ugly, but there is probably no better solution
1095#     qpdf --empty --static-id --pages $f.pdf -- $f.pdf.$$
1096#     mv -f $f.pdf.$$ $f.pdf
1097#   fi
1098# done
1099
1100# Ghost plugins config
1101touch %{buildroot}%{_libdir}/graphviz/config%{pluginsver}
1102
1103%check
1104%ifnarch ppc64 ppc
1105# regression test, segfaults on ppc/ppc64, possible endian issues?
1106#cd rtest
1107#make rtest
1108%endif
1109
1110%clean
1111# optional regression test using the products in the build tree
1112# FIXME - rtest not working reliably in rpm build environment - JCE
1113%if 0%{?rtest}
1114#cd rtest
1115#make rtest
1116%endif
1117# clean up temporary installation
1118rm -rf %{buildroot}
1119
1120#-- changelog --------------------------------------------------
1121
1122%changelog
1123* @GRAPHVIZ_CHANGE_DATE@ @GRAPHVIZ_AUTHOR_NAME@ <@GRAPHVIZ_AUTHOR_EMAIL@> @VERSION@
1124- see git log
1125  (This automatically-replaced single-entry is used for frequent
1126  updates in the unstable development series of releases.
1127  A properly constructed changelog entry is a requirement
1128  for stable releases.)
1129