# Architectures currently not supported # http://xcas.e.ujf-grenoble.fr/XCAS/viewtopic.php?f=19&t=1723 ExcludeArch: aarch64 ppc64 ppc64le s390x %global subversion 75 Name: giac Summary: Computer Algebra System, Symbolic calculus, Geometry Version: 1.2.2 Release: 8.%{subversion}%{?dist} # LGPLv3+: src/Fl_GDI_Printer.cxx, src/Flv_List.cc, src/Flv_Table.cc # BSD: src/tinymt32* License: GPLv3+ Group: Applications/Engineering URL: http://www-fourier.ujf-grenoble.fr/~parisse/giac.html ## Source package is downloaded from ## http://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/ ## and re-package without non-free FR documentation by giac-makesrc script. Source0: %{name}-%{version}.%{subversion}.tar.gz Source1: %{name}-makesrc.sh Source2: xcas-appdata.xml # Fix cSolveorder check Patch0: %{name}-cSolveorder-check.patch BuildRequires: readline-devel BuildRequires: gettext-devel BuildRequires: gcc-c++ BuildRequires: mpfr-devel BuildRequires: gmp-devel BuildRequires: gsl-devel BuildRequires: ntl-devel BuildRequires: pari-devel BuildRequires: lapack-devel BuildRequires: mpfi-devel BuildRequires: mesa-libGL-devel BuildRequires: libpng-devel BuildRequires: libjpeg-devel BuildRequires: fltk-devel BuildRequires: libXinerama-devel BuildRequires: desktop-file-utils BuildRequires: libappstream-glib BuildRequires: tex(latex), texinfo, texinfo-tex Requires(post): info Requires(preun): info Provides: bundled(tinymt32) %description Giac is a Computer Algebra System made by Bernard Parisse. It provides features from the C/C++ libraries PARI, NTL (arithmetic), GSL (numerics), GMP (big integers), MPFR (bigfloats) and also - Efficient algorithms for multivariate polynomial operations (product, GCD, factorization, groebner bases), - Symbolic computations: solver, simplifications, limits/series, integration, - Linear algebra with numerical or symbolic coefficients. - Partial Maple and TI compatibility. - It has interfaces in texmacs and sagemath. It consists of: - a C++ library (libgiac) - a command line interpreter (icas/giac) - an FLTK-based GUI (xcas) with interactive geometry and formal spreadsheets. #################### %package devel Summary: C++ development files for libgiac Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development files for libgiac. #################### %package doc Summary: Detailled html documentation for Giac/Xcas BuildArch: noarch BuildRequires: hevea # Javascript provided Provides: bundled(CodeMirror) Provides: bundled(FileSaver.js) License: GPLv3+ and GFDL %description doc The detailled html documentation and examples for giac and xcas. It is directly accessible from xcas in many ways (browser, context search, thematic indexes). It is strongly recommended for xcas usage. Note that the french part has been removed from the original source due to non free Licence. #################### %package xcas # The name Xcas is better known than the name giac itself, # so many users will search for the name xcas instead of giac or giac-gui. Summary: GUI application for Giac Provides: xcas = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: hicolor-icon-theme %description xcas Xcas is the Fltk graphic user interface to the computer algebra system giac. It supports formal computations, interactive 2D geometry, 3D plotting, spreadsheets with formal calculus and a Logo mode. There is also a programming editor, and many ways to consult the html help. #################### %package -n pgiac Summary: Perl script for the computer algebra system Giac URL: http://melusine.eu.org/syracuse/giac/pgiac BuildArch: noarch Requires: %{name} = %{version}-%{release} Requires: perl %description -n pgiac The pgiac command is a perl script to mix Latex documents with Giac computations. %prep %setup -q %patch0 -p0 # Remove local intl (already bundled in fedora) rm -rf intl/*.h rm -rf intl/*.cc # NB: Problem with autoreconf: missing config/test-driver . If needed the # following worked # aclocal # autoconf # automake --add-missing # Remove unecessary files and force the rebuild of info. rm -f doc/pari/gphtml rm -f doc/*/texinfo.tex rm -f doc/*/giac_*.info # Some files in the upstream source have unnecessary executable rights chmod -x src/*.h chmod -x src/*.cc find examples -type f -name '*.xws' -exec chmod -x '{}' \; find examples -type f -name '*.cas' -exec chmod -x '{}' \; find examples -type f -name '*.cxx' -exec chmod -x '{}' \; chmod -x examples/lewisw/fermat* # Clean backups in doc find doc -name *~ -delete # Unbundle texinfo file sed -i 's|config/texinfo.tex|%{_datadir}/texmf/tex/texinfo/texinfo.tex|g' Makefile.in rm -f config/texinfo.tex # Remove hidden files rm -f examples/Exemples/demo/._* rm -f examples/Exemples/analyse/._* %build export LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %configure --enable-static=no --with-included-gettext=no --enable-nls=yes \ --enable-tommath=no --enable-debug=no --enable-gc=no --enable-sscl=no \ --enable-dl=yes --enable-gsl=yes --enable-lapack=yes --enable-pari=yes \ --enable-ntl=yes --enable-gmpxx=yes --enable-cocoa=autodetect \ --enable-gui=yes --disable-rpath # The --disable-rpath option of configure was not enough to get rid of the hardcoded libdir 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 # Fix unused-direct-shlib-dependency with libgslcblas.so.0 and libgfortran.so.3 sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool make %{?_smp_mflags} # Rebuild giac_*.info and Convert info file to utf-8 (cd doc ; make) for i in doc/*/giac_*.info doc/en/html_* ; do iconv -f ISO-8859-1 -t UTF-8 -o $i.new $i && \ touch -r $i $i.new && \ mv $i.new $i done # %install make DESTDIR=%{buildroot} install cp -p src/tinymt32_license.h LICENSE.tinymt32 # Remove unwanted files. rm -f %{buildroot}%{_infodir}/dir rm -rf %{buildroot}%{_datadir}/application-registry # The .la is still built despite the built of libgiac.a has been disabled rm -f %{buildroot}%{_libdir}/libgiac.la # I have tried to remove the empty files in the setup stage, it was not a good idea # because make install will then require hevea as an extra (and big) dependancy and I guess # that it will recreate those empty files, so it's better to delete them here. find %{buildroot} -size 0 -delete find %{buildroot} -name *~ -delete # Obsolete symbolic link rm -f %{buildroot}%{_bindir}/xcasnew # # Mime package was not installed. install -pm 644 -D debian/giac.sharedmimeinfo \ %{buildroot}%{_datadir}/mime/packages/giac.xml # # Install/check appdata file. install -pm 644 -D %{SOURCE2} \ %{buildroot}%{_datadir}/appdata/xcas.appdata.xml appstream-util validate-relax --nonet %{buildroot}%{_datadir}/appdata/*.appdata.xml # # Add extra pdf docs. (NB: make dvi gives only the same doc in dvi format) install -pm 644 -t %{buildroot}%{_datadir}/giac/doc doc/en/cas*.pdf install -pm 644 -t %{buildroot}%{_datadir}/giac/doc/en doc/en/*.pdf install -pm 644 -t %{buildroot}%{_datadir}/giac/doc/el doc/el/*.pdf install -pm 644 -t %{buildroot}%{_datadir}/giac/doc/es doc/es/*.pdf # # DOC Files (1-4): # 1) Man: # mkdir -p %{buildroot}%{_mandir}/man1 install -pm 644 debian/giac.1 %{buildroot}%{_mandir}/man1 install -pm 644 debian/cas_help.1 %{buildroot}%{_mandir}/man1 install -pm 644 debian/pgiac.1 %{buildroot}%{_mandir}/man1 # Add a link for FR env users to have the english help instead of a page # not found. mkdir -p %{buildroot}%{_datadir}/giac/doc/fr (cd %{buildroot}%{_datadir}/giac/doc/fr ; ln -s ../en/cascmd_en cascmd_fr ) %find_lang %{name} desktop-file-install --vendor="" --dir=%{buildroot}%{_datadir}/applications/\ %{buildroot}%{_datadir}/applications/xcas.desktop # Create a list of files non required at runtime by icas nor xcas # that are under %%{_datadir}/giac/doc for packaging in giac-doc # a) The non required files at runtime in %%{_datadir}/giac/doc/[a-z]{2} find %{buildroot}%{_datadir}/giac/doc -maxdepth 2 -type f| \ grep -E "%{_datadir}/giac/doc/[a-z]{2}/" | \ grep -v -E "%{_datadir}/giac/doc/[a-z]{2}/keywords$" | \ grep -v -E "%{_datadir}/giac/doc/[a-z]{2}/xcasmenu$" | \ grep -v -E "%{_datadir}/giac/doc/[a-z]{2}/xcasex$" | \ sed -e "s:%{buildroot}::" >giacdoclist # b) Add the files under doc find %{buildroot}%{_datadir}/giac/doc -maxdepth 1 -type f| \ grep -v -E "%{_datadir}/giac/doc/aide_cas$" | \ sed -e "s:%{buildroot}::" >>giacdoclist # c) Add the dir under %%{_datadir}/giac/doc/[a-z]{2} find %{buildroot}%{_datadir}/giac/doc -maxdepth 2 -type d| \ grep -E "%{_datadir}/giac/doc/[a-z]{2}/" | \ grep -v -E "%{_datadir}/giac/doc$" | \ grep -v -E "%{_datadir}/giac/doc/[a-z]{2}$" | \ sed -e "s:%{buildroot}::" | \ sed -e "s:$:/:" >>giacdoclist # d) Add all the doc subdir different from %%{_datadir}/giac/doc/[a-z]{2} find %{buildroot}%{_datadir}/giac/doc -maxdepth 1 -type d| \ grep -v -E "%{_datadir}/giac/doc$" | \ grep -v -E "%{_datadir}/giac/doc/[a-z]{2}$" | \ sed -e "s:%{buildroot}::" | \ sed -e "s:$:/:" >>giacdoclist # e) Add all the links but aide_cas find %{buildroot}%{_datadir}/giac/doc -maxdepth 2 -type l| \ grep -v -E "%{_datadir}/giac/doc/aide_cas$" | \ sed -e "s:%{buildroot}::" >>giacdoclist %post /sbin/ldconfig /sbin/install-info %{_infodir}/%{name}_us.info %{_infodir}/dir || : /sbin/install-info %{_infodir}/%{name}_es.info %{_infodir}/dir || : %preun if [ $1 = 0 ] ; then /sbin/install-info --delete %{_infodir}/%{name}_us.info %{_infodir}/dir || : /sbin/install-info --delete %{_infodir}/%{name}_es.info %{_infodir}/dir || : fi %postun -p /sbin/ldconfig %post xcas if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null fi /bin/touch --no-create %{_datadir}/mime/packages &>/dev/null || : /usr/bin/update-desktop-database &> /dev/null || : %postun xcas touch --no-create %{_datadir}/icons/hicolor if [ -x %{_bindir}/gtk-update-icon-cache ]; then %{_bindir}/gtk-update-icon-cache -q %{_datadir}/icons/hicolor; fi if [ $1 -eq 0 ] ; then /usr/bin/update-mime-database %{_datadir}/mime &> /dev/null || : fi /usr/bin/update-desktop-database &> /dev/null || : %posttrans xcas /usr/bin/update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %check export LD_LIBRARY_PATH=../src/.libs make -C check check %files -f %{name}.lang %license COPYING %license LICENSE.tinymt32 %{_bindir}/icas %{_bindir}/giac %{_bindir}/*_help %{_libdir}/libgiac.so.* # The following files are required at runtime by icas AND xcas. # (Ex: if LANG is fr, alea(5) should give an INT) # Moreover, without aide_cas the keywords files are not found in icas # and xcas. Additionally xcas uses it for tab completions. %{_datadir}/giac/doc/*/keywords %{_datadir}/giac/aide_cas %{_datadir}/giac/doc/aide_cas # The dirs shared %dir %{_datadir}/giac %dir %{_datadir}/giac/doc # %dir %{_datadir}/giac/doc/de %dir %{_datadir}/giac/doc/el %dir %{_datadir}/giac/doc/en %dir %{_datadir}/giac/doc/es %dir %{_datadir}/giac/doc/fr %dir %{_datadir}/giac/doc/pt %dir %{_datadir}/giac/doc/zh # %{_infodir}/giac_*.info.gz %{_mandir}/man1/giac* %{_mandir}/man1/*_help* # The gui files %files xcas %{_bindir}/xcas # The dirs shared %dir %{_datadir}/giac %dir %{_datadir}/giac/doc # %dir %{_datadir}/giac/doc/de %dir %{_datadir}/giac/doc/el %dir %{_datadir}/giac/doc/en %dir %{_datadir}/giac/doc/es %dir %{_datadir}/giac/doc/fr %dir %{_datadir}/giac/doc/pt %dir %{_datadir}/giac/doc/zh # # Required at runtime. (additional menu) %{_datadir}/giac/doc/*/xcasmenu %{_datadir}/giac/doc/*/xcasex # Files under dirs shared with other packages %{_datadir}/applications/xcas.desktop %{_datadir}/appdata/xcas.appdata.xml %{_datadir}/mime/packages/giac.xml %{_datadir}/pixmaps/xcas.xpm %{_datadir}/icons/hicolor/*/apps/xcas.png %{_datadir}/icons/hicolor/*/mimetypes/application-x-xcas.png %files -n pgiac %{_bindir}/pgiac %{_mandir}/man1/pgiac* %files devel %{_includedir}/giac/ %{_libdir}/libgiac.so # DOC Files %files doc -f giacdoclist # 3) As we have removed the FR doc, more than 2/3 of the following files are # for the EN doc, so it is meaningfull to put all the GPL doc together. # # a GPLv3 COPYING file %doc README %license COPYING # 4) Warning about *.xws: # - All the .xws files are examples of sessions saved from xcas. They are # not text files and they *must not* be converted to UTF-8 or any other # character encoding. # - The .cas and .cxx files are giac code and function. They are text files # # NB: %%{_docdir}/giac is in the -filsystem package %{_docdir}/giac/* # Add all the files that are in %%{_datadir}/giac but not giac/aide_cas # and not those in giac/doc/ %dir %{_datadir}/giac %dir %{_docdir}/giac %dir %{_datadir}/giac/doc # The dirs shared # %dir %{_datadir}/giac/doc/de %dir %{_datadir}/giac/doc/el %dir %{_datadir}/giac/doc/en %dir %{_datadir}/giac/doc/es %dir %{_datadir}/giac/doc/fr %dir %{_datadir}/giac/doc/pt %dir %{_datadir}/giac/doc/zh # %{_datadir}/giac/examples/ %changelog * Mon Jul 25 2016 Jerry James 1.2.2-8.75 - Rebuild for ntl 9.10.0 * Fri Jul 15 2016 Antonio Trande 1.2.2-7.75 - Update to subversion 75 * Thu Jul 07 2016 Antonio Trande 1.2.2-6.63 - Exclude s390x * Sat Jul 02 2016 Antonio Trande 1.2.2-5.63 - Fix directories ownership - Exclude PPC and aarch64 * Thu Jun 30 2016 Antonio Trande 1.2.2-4.63 - Update to subversion 63 - Add libXinerama BR - Fix co-owning of documentation sub-directories - Fix appdata file - Add Provides tags * Thu May 19 2016 Antonio Trande 1.2.2-3.45 - Source tarball repacked without non-free docs - Licenses combined in GPLv3+ only * Fri May 13 2016 Antonio Trande 1.2.2-2 - Fix required package of pgiac * Fri May 13 2016 Antonio Trande 1.2.2-1 - Update to 1.2.2 - pgiac script packaged separately - Fix cSolveorder check - Update scriptlets - Add appdata file - Excluded PPC and aarch64 - Drop the filesystem sub-package * Sun Jul 6 2014 Frederic Han 1.1.1-1 - Update to current stable upstream version. Remove obsolete patches. - Add mpfi-devel dependency. (New feature in 1.1.1) - Add requires of hicolor-icon-theme instead of owning dirs. * Sun Apr 27 2014 Frederic Han 1.1.0-1 - Let the doc package be independent of the binary packages. So create a filesystem package containing the shared directories * Wed Apr 16 2014 Frederic Han 1.1.0-1 - Dont delete intl/Makefile to avoid Makefile and configure modif/rebuilt - Create a file list: giacdocfile for giac/doc files that are not needed at runtime - Remove %%dir %%{_datadir}/mime and %%dir %%{_datadir}/mime/packages from giac-xcas package list * Mon Apr 14 2014 Frederic Han 1.1.0-1 - Add tinymt32 License in %%doc, and LGPLv2+ tag - Add gettext-devel in BR and disable included intl - removed doc/*/texinfo.tex, add BR texinfo, and rebuild *.info with the system texinfo.tex file for License clarity, also convert them to utf-8 - Add missing %%dir in %%files xcas and %%files - Fix unused-direct-shlib-dependency for libgiac - Remove x perms in examples, clean backup files - Move the mime and desktop updates to %%post xcas and %%postun xcas - Add a warning to *not* try to convert .xws files to UTF-8 * Fri Apr 11 2014 Frederic Han 1.1.0-1 - Initial version - Found GPLv3 and v2 files in 1.1.0 sources. So package the GPLv3 LICENSE. - Put GPLv3+ tag on the -doc package according to 1.1.1. - Rename the package giac-gui to giac-xcas. - Add a check patch and make check. - Some files of %%{_datadir}/giac are need at runtime. So, add them in the main or -xcas package filelist. - Move all the %%{_docdir}/giac files except LICENSE to the -doc package - Add extra pdf doc found in source archive. - Untabify spec file. - remove the README patch to keep the original 1.1.0 unchanged. add a README.fedora to explain the License evolution of giac non FR doc. - Improve giac.1 manpage.