Mark Rader c9d0040
# Some ideas for this spec file taken from a prior attempt by Richard
Mark Rader c9d0040
# W. M. Jones
Mark Rader c9d0040
Mark Rader c9d0040
#  General Information
Mark Rader c9d0040
# This program has its own version of cil, there is an ocaml-cil upon which this
Mark Rader c9d0040
# based, however the version contained in this package has custom mods that
Mark Rader c9d0040
# are not availible with the ocaml-cil because the upstream has
Mark Rader c9d0040
# forked their own version of cil.
Mark Rader c9d0040
Mark Rader c9d0040
%global debug_package %{nil}
Mark Rader c9d0040
%global opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0)
Mark Rader c9d0040
%if %opt
Mark Rader c9d0040
%global ocamlbest opt
Mark Rader c9d0040
%else
Mark Rader c9d0040
%global ocamlbest byte
Mark Rader c9d0040
%endif
Mark Rader c9d0040
d253b21
%global pkgversion Nitrogen-20111001
Mark Rader c9d0040
Mark Rader c9d0040
Name:           frama-c
d253b21
Version:        1.7
e5054df
Release:        3%{?dist}
Mark Rader c9d0040
Summary:        Framework for source code analysis of C software
Mark Rader c9d0040
Mark Rader c9d0040
Group:          Development/Libraries
91f4bbf
# Licensing breakdown in source file frama-c-1.6-licensing
91f4bbf
License:        LGPLv2 and GPLv2 and GPLv2+ and BSD and (QPL with exceptions)
91f4bbf
URL:            http://frama-c.com/
91f4bbf
Source0:        http://frama-c.com/download/%{name}-%{pkgversion}.tar.gz
91f4bbf
Source1:        frama-c-1.6.licensing
Mark Rader 6c8d007
Source2:        %{name}-gui.desktop
91f4bbf
Source3:        acsl.el
91f4bbf
d253b21
BuildRequires:  alt-ergo
d253b21
BuildRequires:  coq
91f4bbf
BuildRequires:  desktop-file-utils
91f4bbf
BuildRequires:  emacs-nox xemacs-nox
91f4bbf
BuildRequires:  graphviz
91f4bbf
BuildRequires:  gtksourceview2-devel
91f4bbf
BuildRequires:  libgnomecanvas-devel
91f4bbf
BuildRequires:  ltl2ba
91f4bbf
BuildRequires:  ocaml
91f4bbf
BuildRequires:  ocaml-findlib-devel
91f4bbf
BuildRequires:  ocaml-lablgtk-devel
91f4bbf
BuildRequires:  ocaml-ocamlgraph-devel
91f4bbf
91f4bbf
Requires:       cpp
91f4bbf
Requires:       graphviz
91f4bbf
Requires:       ltl2ba
Mark Rader c9d0040
f30d344
# ocaml only available on these:
91f4bbf
ExclusiveArch:  %{ocaml_arches}
Mark Rader c9d0040
91f4bbf
# Filter out bogus requires
d253b21
%global __requires_exclude ocaml\\\(((Formula)|(GtkSourceView2_types)|(Ltlast)|(Mcfg)|(Mfloat)|(Mint)|(Mlogic)|(Mvalues)|(Mwp)|(Promelaast)|(Sig))\\\)
Mark Rader c9d0040
Mark Rader c9d0040
%description
Mark Rader c9d0040
Frama-C is a suite of tools dedicated to the analysis of the source
Mark Rader c9d0040
code of software written in C.
Mark Rader c9d0040
Mark Rader c9d0040
Frama-C gathers several static analysis techniques in a single
Mark Rader c9d0040
collaborative framework. The collaborative approach of Frama-C allows
Mark Rader c9d0040
static analyzers to build upon the results already computed by other
Mark Rader c9d0040
analyzers in the framework. Thanks to this approach, Frama-C provides
Mark Rader c9d0040
sophisticated tools, such as a slicer and dependency analysis.
Mark Rader c9d0040
Mark Rader c9d0040
%package devel
Mark Rader c9d0040
Summary:        Development files for %{name}
Mark Rader c9d0040
Group:          Development/Libraries
91f4bbf
Requires:       %{name}%{?_isa} = %{version}-%{release}
Mark Rader c9d0040
Mark Rader c9d0040
%description devel
Mark Rader c9d0040
The %{name}-devel package contains libraries and signature files for
Mark Rader c9d0040
developing applications that use %{name}. In particular, this package
Mark Rader c9d0040
is necessary to compile plug ins for Frama-C.
Mark Rader c9d0040
91f4bbf
%package doc
91f4bbf
Summary:        Large documentation files for %{name}
91f4bbf
Group:          Documentation 
91f4bbf
Requires:       %{name} = %{version}-%{release}
91f4bbf
BuildArch:      noarch
91f4bbf
91f4bbf
%description doc
91f4bbf
Large documentation files for %{name}.
91f4bbf
91f4bbf
%package emacs
91f4bbf
Summary:        Emacs support file for ACSL markup
91f4bbf
Group:          Development/Languages
91f4bbf
License:        LGPLv2
91f4bbf
Requires:       %{name} = %{version}-%{release}
91f4bbf
Requires:       emacs(bin)
91f4bbf
BuildArch:      noarch
91f4bbf
91f4bbf
%description emacs
91f4bbf
This package contains an Emacs support file for working with C source
91f4bbf
files marked up with ACSL.
91f4bbf
91f4bbf
%package emacs-el
91f4bbf
Summary:        Emacs source file for ACSL markup
91f4bbf
Group:          Development/Languages
91f4bbf
License:        LGPLv2
91f4bbf
Requires:       %{name}-emacs = %{version}-%{release}
91f4bbf
BuildArch:      noarch
91f4bbf
91f4bbf
%description emacs-el
91f4bbf
This package contains the Emacs source file for working with C source
91f4bbf
files marked up with ACSL.  This package is not needed to use the Emacs
91f4bbf
support.
91f4bbf
91f4bbf
%package xemacs
91f4bbf
Summary:        XEmacs support file for ACSL markup
91f4bbf
Group:          Development/Languages
91f4bbf
License:        LGPLv2
91f4bbf
Requires:       %{name} = %{version}-%{release}
91f4bbf
Requires:       xemacs(bin), xemacs-packages-extra
91f4bbf
BuildArch:      noarch
91f4bbf
91f4bbf
%description xemacs
91f4bbf
This package contains an XEmacs support file for working with C source
91f4bbf
files marked up with ACSL.
91f4bbf
91f4bbf
%package xemacs-el
91f4bbf
Summary:        XEmacs source file for ACSL markup
91f4bbf
Group:          Development/Languages
91f4bbf
License:        LGPLv2
91f4bbf
Requires:       %{name}-xemacs = %{version}-%{release}
91f4bbf
BuildArch:      noarch
91f4bbf
91f4bbf
%description xemacs-el
91f4bbf
This package contains the XEmacs source file for working with C source
91f4bbf
files marked up with ACSL.  This package is not needed to use the XEmacs
91f4bbf
support.
91f4bbf
Mark Rader c9d0040
%prep
Mark Rader c9d0040
%setup -q -n %{name}-%pkgversion
Mark Rader c9d0040
91f4bbf
# Fix encodings
91f4bbf
iconv -f iso-8859-1 -t utf8 man/frama-c.1 > man/frama-c.1.conv
91f4bbf
touch -r man/frama-c.1 man/frama-c.1.conv
91f4bbf
mv -f man/frama-c.1.conv man/frama-c.1
Mark Rader c9d0040
d253b21
# Version 1.8 of ocamlgraph is good, therefore version 1.8.1 is also
d253b21
sed -i 's|1\.8)|1.8.1)|' configure
d253b21
Mark Rader c9d0040
%build
Mark Rader c9d0040
# This option prints the actual make commands so we can see what's
Mark Rader c9d0040
# happening (eg: for debugging the spec file)
Mark Rader c9d0040
%global framac_make_options VERBOSEMAKE=yes OCAMLBEST=%{ocamlbest}
Mark Rader c9d0040
d253b21
# Fake the existence of why so the plugin is built
d253b21
touch why why-dp
d253b21
chmod a+x why why-dp
d253b21
PATH=${PATH}:`pwd`
d253b21
91f4bbf
%configure
Mark Rader c9d0040
make %{framac_make_options}
Mark Rader c9d0040
Mark Rader c9d0040
%install
Mark Rader c9d0040
make install DESTDIR=%{buildroot} %{framac_make_options}
91f4bbf
strip %{buildroot}%{_bindir}/frama-c
91f4bbf
strip %{buildroot}%{_bindir}/frama-c-gui
91f4bbf
strip %{buildroot}%{_libdir}/frama-c/plugins/*.cmxs
91f4bbf
strip %{buildroot}%{_libdir}/frama-c/plugins/gui/*.cmxs
Mark Rader c9d0040
desktop-file-install                                    \
Mark Rader 6c8d007
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications/         \
Mark Rader c9d0040
%{SOURCE2}
Mark Rader c9d0040
91f4bbf
# Install and bytecompile the XEmacs file
91f4bbf
mkdir -p %{buildroot}%{_xemacs_sitelispdir}
91f4bbf
cp -p share/acsl.el %{buildroot}%{_xemacs_sitelispdir}
91f4bbf
cd %{buildroot}%{_xemacs_sitelispdir}
91f4bbf
%{_xemacs_bytecompile} acsl.el
91f4bbf
mkdir -p %{buildroot}%{_xemacs_sitestartdir}
91f4bbf
cp -p %{SOURCE3} %{buildroot}%{_xemacs_sitestartdir}
91f4bbf
91f4bbf
# Install and bytecompile the Emacs file
91f4bbf
mkdir -p %{buildroot}%{_emacs_sitelispdir}
91f4bbf
mv %{buildroot}%{_datadir}/frama-c/acsl.el %{buildroot}%{_emacs_sitelispdir}
d253b21
chmod a-x %{buildroot}%{_emacs_sitelispdir}/acsl.el
91f4bbf
cd %{buildroot}%{_emacs_sitelispdir}
91f4bbf
%{_emacs_bytecompile} acsl.el
91f4bbf
mkdir -p %{buildroot}%{_emacs_sitestartdir}
91f4bbf
cp -p %{SOURCE3} %{buildroot}%{_emacs_sitestartdir}
Mark Rader c9d0040
d253b21
# The install step adds lots of spurious executable bits
d253b21
find %{buildroot}%{_datadir}/frama-c -type f -perm /0111 | \
d253b21
xargs chmod a-x %{buildroot}%{_libdir}/frama-c/*.cmx \
d253b21
                %{buildroot}%{_mandir}/man1/*
d253b21
Mark Rader c9d0040
%files
d253b21
%doc licenses/* doc/manuals/user-manual.pdf VERSION
Mark Rader c9d0040
%{_bindir}/*
Mark Rader c9d0040
%exclude %{_bindir}/frama-c.byte
Mark Rader c9d0040
%exclude %{_bindir}/frama-c-gui.byte
Mark Rader c9d0040
%exclude %{_bindir}/ptests.byte
Mark Rader c9d0040
%exclude %{_libdir}/frama-c/*.cmo
Mark Rader c9d0040
%exclude %{_libdir}/frama-c/*.cmx
Mark Rader c9d0040
%exclude %{_libdir}/frama-c/*.o
Mark Rader c9d0040
%{_libdir}/frama-c
Mark Rader 6c8d007
%dir %{_datadir}/frama-c/
91f4bbf
%{_datadir}/frama-c/*.gif
91f4bbf
%{_datadir}/frama-c/*.ico
91f4bbf
%{_datadir}/frama-c/*.png
Mark Rader 6c8d007
%{_datadir}/applications/*.desktop
Mark Rader c9d0040
%{_mandir}/man1/*
Mark Rader c9d0040
Mark Rader c9d0040
%files devel
91f4bbf
%doc doc/manuals/plugin-development-guide.pdf
Mark Rader c9d0040
%{_datadir}/frama-c/*
Mark Rader 6c8d007
%{_libdir}/frama-c/*.cmo
Mark Rader 6c8d007
%{_libdir}/frama-c/*.cmx
Mark Rader 6c8d007
%{_libdir}/frama-c/*.o
91f4bbf
%exclude %{_datadir}/frama-c/*.gif
91f4bbf
%exclude %{_datadir}/frama-c/*.ico
91f4bbf
%exclude %{_datadir}/frama-c/*.png
Mark Rader c9d0040
%exclude %{_datadir}/frama-c/manuals
Mark Rader c9d0040
91f4bbf
%files doc
91f4bbf
%doc doc/manuals/acsl* doc/manuals/aorai-manual.pdf
d253b21
%doc doc/manuals/jessie-tutorial.pdf doc/manuals/metrics-manual.pdf
d253b21
%doc doc/manuals/rte-manual.pdf doc/manuals/value-analysis.pdf
d253b21
%doc doc/manuals/wp-manual.pdf
91f4bbf
91f4bbf
%files emacs
91f4bbf
%{_emacs_sitelispdir}/acsl.elc
91f4bbf
%{_emacs_sitestartdir}/acsl.el
91f4bbf
91f4bbf
%files emacs-el
91f4bbf
%{_emacs_sitelispdir}/acsl.el
Mark Rader c9d0040
91f4bbf
%files xemacs
91f4bbf
%{_xemacs_sitelispdir}/acsl.elc
91f4bbf
%{_xemacs_sitestartdir}/acsl.el
91f4bbf
91f4bbf
%files xemacs-el
91f4bbf
%{_xemacs_sitelispdir}/acsl.el
3cf52ee
Mark Rader 6c8d007
%changelog
e5054df
* Mon Jan  9 2012 Jerry James <loganjerry@gmail.com> - 1.7-3
e5054df
- Rebuild for OCaml 3.12.1
e5054df
1fe2839
* Tue Nov  8 2011 Jerry James <loganjerry@gmail.com> - 1.7-2
1fe2839
- Rebuild to eliminate libpng dependency
1fe2839
d253b21
* Tue Oct 25 2011 Jerry James <loganjerry@gmail.com> - 1.7-1
d253b21
- Update to Nitrogen version
d253b21
91f4bbf
* Mon Jul 11 2011 Jerry James <loganjerry@gmail.com> - 1.6-1
91f4bbf
- Update to Carbon version
91f4bbf
- Removed unnecessary spec file elements (BuildRoot, etc.)
91f4bbf
- Update approach to filtering provides and requires
91f4bbf
- Do not filter as much; why should Require some of the filtered names
91f4bbf
- Add (X)Emacs support packages
91f4bbf
- Add doc subpackage to hold large manual PDFs
91f4bbf
- Support for gtksourceview 1.x has been dropped
91f4bbf
c26941c
* Wed Apr 13 2011 Karsten Hopp <karsten@redhat.com> 1.5-3.1
c26941c
- add ppc64 to archs with ocaml
c26941c
a306c33
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5-3
a306c33
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
a306c33
f30d344
* Sat Jan 22 2011 Dan HorĂ¡k <dan[at]danny.cz> - 1.5-2
f30d344
- updated the supported arch list
f30d344
Mark Rader 6c8d007
* Sat Jul 07 2010 Mark Rader <msrader@gmail.com> 1.5-1
Mark Rader 6c8d007
- Upgraded Frama C to Boron version and added ltl2ba dependencies.
Mark Rader c9d0040
Mark Rader c9d0040
* Mon Jul 05 2010 Mark Rader <msrader@gmail.com> 1.4-4
Mark Rader c9d0040
- Modified spec file to add new OCAML dependency structure for FC-13
Mark Rader c9d0040
Mark Rader c9d0040
* Sun Jun 06 2010 Mark Rader <msrader@gmail.com> 1.4-3
Mark Rader c9d0040
- Added documentation to explain the various licensing entries.
Mark Rader c9d0040
- Added .desktop file
Mark Rader c9d0040
Mark Rader c9d0040
* Wed May 24 2010 Mark Rader <msrader@gmail.com> 1.4-2
Mark Rader c9d0040
- Add SELinux context settings.
Mark Rader c9d0040
Mark Rader c9d0040
* Wed Feb 10 2010 Alan Dunn <amdunn@gmail.com> 1.4-1
Mark Rader c9d0040
- Initial Fedora RPM