%bcond_with php %if "%{php_version}" < "5.6" %global ini_name %{name}.ini %else %global ini_name 40-%{name}.ini %endif %global pluginsver 6 %global php_extdir %(php-config --extension-dir 2>/dev/null || echo %{_libdir}/php4) Name: graphviz Version: 10.0.1 Release: 1 Summary: Graph Visualization Tools License: EPL-1.0 URL: http://www.graphviz.org/ Source0: https://gitlab.com/graphviz/graphviz/-/archive/%{version}/graphviz-%{version}.tar.gz BuildRequires: gcc-g++ BuildRequires: ksh bison m4 flex ruby automake perl-Carp autoconf libtool qpdf urw-base35-fonts, perl-ExtUtils-Embed, perl-generators, librsvg2-devel swig >= 1.3.33 BuildRequires: zlib-devel libpng-devel libjpeg-devel expat-devel tk-devel fontconfig-devel libtool-ltdl-devel ruby-devel guile-devel freetype-devel >= 2 tcl-devel >= 8.3 BuildRequires: python3-devel libXaw-devel libSM-devel libXext-devel java-devel pango-devel gmp-devel lua-devel gtk2-devel cairo-devel >= 1.1.10 BuildRequires: ghostscript libgs-devel gd-devel perl-devel chrpath %if %{with php} BuildRequires: php-devel %endif Requires: urw-base35-fonts xorg-x11-fonts-ISO8859-1-100dpi guile glibc Requires(post): glibc Requires(postun): glibc %description Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains. %package devel Summary: Development headers and libraries for interfacing to the graphviz Requires: %{name} = %{version}-%{release} pkgconfig %description devel Header files for using the graphviz libraries. The libdhcpctl and libomapi static libraries are also included in this package. %package docs Summary: Documentation files for graphviz %description docs The docs package contains documentation files. %package gd Summary: Graphviz plugin for renderers based on gd Requires: %{name} = %{version}-%{release} Requires(post): %{_bindir}/dot /sbin/ldconfig Requires(postun): %{_bindir}/dot /sbin/ldconfig %description gd Graphviz plugin for renderers based on gd. (Unless you absolutely have to use GIF, you are recommended to use the PNG format instead because of the better quality anti-aliased lines provided by the cairo+pango based renderer.) %package graphs Summary: Demo graphs for graphviz %description graphs Some demo graphs for graphviz. %package guile Summary: Guile extension for graphviz Requires: %{name} = %{version}-%{release} guile %description guile Guile extension for graphviz. %package java Summary: Java extension for graphviz Requires: %{name} = %{version}-%{release} %description java Java extension for graphviz. %package lua Summary: Lua extension for graphviz Requires: %{name} = %{version}-%{release} lua %description lua Lua extension for graphviz. %package perl Summary: Perl extension for graphviz Requires: %{name} = %{version}-%{release} perl %description perl Perl extension for graphviz. %package ruby Summary: Ruby extension for graphviz Requires: %{name} = %{version}-%{release} ruby %description ruby Ruby extension for graphviz. %ifnarch loongarch64 %package tcl Summary: Tcl extension & tools for graphviz Requires: %{name} = %{version}-%{release} tcl >= 8.3 tk %description tcl Various tcl packages (extensions) for the graphviz tools. %endif %if %{with php} %package php Summary: PHP extension for graphviz Requires: %{name} = %{version}-%{release} php-common php %description php PHP extension for graphviz. %endif %package python3 Summary: Python 3 extension for graphviz Requires: %{name} = %{version}-%{release} Provides: python3dist(gv) = %{version} %{python3_version}dist(gv) = %{version} %description python3 Python 3 extension for graphviz. %prep %autosetup -n graphviz-%{version} -p1 find -type f -regex '.*\.\(c\|h\)$' -exec chmod a-x {} ';' %build ./autogen.sh sed -i '/JavaVM.framework/!s/JAVA_INCLUDES=/JAVA_INCLUDES=\"_MY_JAVA_INCLUDES_\"/g' configure sed -i 's|_MY_JAVA_INCLUDES_|-I%{java_home}/include/ -I%{java_home}/include/linux/|g' configure sed -i -e 's|expand(|expand(RbConfig::|' -e 's|sitearchdir|vendorarchdir|' config/config_ruby.rb export CPPFLAGS=-I`ruby -e "puts File.join(RbConfig::CONFIG['includedir'], RbConfig::CONFIG['sitearch'])" || echo /dev/null` %configure --with-x --disable-static --disable-dependency-tracking \ --without-mylibgd --with-ipsepcola --with-pangocairo \ --with-gdk-pixbuf --with-visio --disable-silent-rules \ --without-lasi --without-gts --disable-sharp --without-ming \ --disable-r --without-devil --without-qt # drop rpath sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fno-strict-overflow %{?FFSTORE}" \ CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fno-strict-overflow %{?FFSTORE}" \ PYTHON_INCLUDES=`python3-config --includes` PYTHON_LIBS=`python3-config --libs` \ PYTHON_INSTALL_DIR=%{python3_sitearch} PYTHON=%{__python3} %install rm -rf %{buildroot} %make_install docdir=%{_docdir}/%{name} \ pkgconfigdir=%{_libdir}/pkgconfig %delete_la %if %{with php} %{__mkdir_p} %{buildroot}%{_sysconfdir}/php.d %{__cat} << __EOF__ > %{buildroot}%{_sysconfdir}/php.d/%{ini_name} ; Enable %{name} extension module extension=gv.so __EOF__ %endif find $RPM_BUILD_ROOT%{_datadir}/%{name}/demo -type f -exec chmod a-x {} ';' # python 3 pushd tclpkg/gv install -pD .libs/libgv_python3.so $RPM_BUILD_ROOT%{python3_sitearch}/_gv.so install -p gv.py $RPM_BUILD_ROOT%{python3_sitearch}/gv.py popd rm -rf $RPM_BUILD_ROOT%{_libdir}/graphviz/python chrpath -d $RPM_BUILD_ROOT%{_bindir}/gvpack mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d echo "%{_libdir}/graphviz" > $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{_arch}.conf touch $RPM_BUILD_ROOT%{_libdir}/graphviz/config%{pluginsver} %ifarch loongarch64 mkdir -p $RPM_BUILD_ROOT/%{_libdir}/lua/5.4/ mv $RPM_BUILD_ROOT/usr/lib/lua/5.4/gv.so $RPM_BUILD_ROOT/usr/lib64/lua/5.4/gv.so %endif %check %if %{with php} LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir} \ php --no-php-ini --define extension_dir=$RPM_BUILD_ROOT%{_libdir}/graphviz/php/ \ --define extension=libgv_php.so --modules | grep gv %endif %pre %preun %post /sbin/ldconfig %{_bindir}/dot -c %postun -p /sbin/ldconfig %files %defattr(-,root,root) %doc %{_docdir}/%{name} %{_bindir}/* %dir %{_libdir}/graphviz %{_libdir}/*.so.* %{_libdir}/graphviz/*.so.* %dir %{_datadir}/graphviz %{_datadir}/graphviz/ %ghost %{_libdir}/graphviz/config%{pluginsver} %exclude %{_bindir}/dot_builtins %config(noreplace) /etc/ld.so.conf.d/* %if %{with php} %files php %config(noreplace) %{_sysconfdir}/php.d/%{ini_name} %{_libdir}/graphviz/php/ %{php_extdir}/gv.so %{_datadir}/php*/* %endif %exclude %{_libdir}/graphviz/*/* %exclude %{_libdir}/graphviz/libgvplugin_gd.* %files devel %{_includedir}/graphviz %{_libdir}/*.so %{_libdir}/graphviz/*.so %{_libdir}/pkgconfig/*.pc %files docs %defattr(644,root,root) %doc %{_docdir}/%{name}/*.html %doc %{_docdir}/%{name}/*.pdf %doc %{_datadir}/%{name}/demo %{_mandir}/man1/* %{_mandir}/man3/* %{_mandir}/man7/* %files gd %{_libdir}/graphviz/libgvplugin_gd.so.* %files graphs %dir %{_datadir}/graphviz %{_datadir}/graphviz/graphs %files guile %{_libdir}/graphviz/guile/ %files java %{_libdir}/graphviz/java/ %files lua %{_libdir}/graphviz/lua/ %{_libdir}/lua*/* %files perl %{_libdir}/graphviz/perl/ %{_libdir}/perl*/* %files python3 %{python3_sitearch}/* %{_libdir}/graphviz/python3/* %files ruby %{_libdir}/graphviz/ruby/ %{_libdir}/*ruby*/* %ifnarch loongarch64 %files tcl %{_libdir}/graphviz/tcl/ %{_libdir}/tcl*/* %endif %changelog * Mon Mar 11 2024 liweigang - 10.0.1-1 - update to version 10.0.1 - Dropped ocaml plugins (dropped upstream) * Tue Feb 06 2024 yaoxin - 8.1.0-2 - Fix CVE-2023-46045 * Thu Sep 07 2023 yaoxin - 8.1.0-1 - Update to 8.1.0 * Mon Nov 21 2022 huajingyun - 2.48.0-3 - add loongarch support * Sat Jan 8 2022 wuchaochao - 2.48.0-2 - delete redundant Provides and Obsoletes * Wed Dec 15 2021 wuchaochao - 2.48.0-1 - update version to 2.48.0 * Wed May 26 2021 liuyumeng -2.44.1-4 - Add a BuildRequires for gcc-g++ * Tue May 11 2021 wangkerong - 2.44.1-3 - Type:CVE - ID:CVE-2020-18032 - SUG:NA - DESC:fix cve-2020-18032 * Wed Oct 21 2020 jinzhimin - 2.44.1-2 - remove graphviz-python2 subpackage * Fri Jul 24 2020 hanhui - 2.44.1-1 - update to 2.44.1 * Tue Jun 23 2020 xinghe - 2.40.1-39 - Type:bugfix - ID:NA - SUG:NA - DESC:Repair compilation failure * Tue Dec 31 2019 openEuler Buildteam - 2.40.1-38 - Type:bugfix - ID:NA - SUG:NA - DESC:optimization the spec * Thu Sep 19 2019 hufeng - 2.40.1-37 -Create spec