Blob Blame History Raw
# Bigloo uses the terminology "release" for what Fedora calls version,
# and "version" for a sub-version revision.
# patch_suffix is defined to be empty when patch_ver is not defined,
# so that when updating, the Source and %%setup lines do not have to be
# changed, only the Version and patch_ver
%global patch_ver 5
%global patch_suffix %{?patch_ver:-%{patch_ver}}

# XEmacs build disabled by default, because bee-indent.el uses a function
# undefined in XEmacs:
#   !! Symbol's function definition is void ((file-installed-p))
# Use --with-xemacs to try and enable XEmacs support
#
# For Emacs subpackages
%global pkg     %{name}
%global pkgname Bigloo

Name:           bigloo
Version:        3.3a
Release:        2%{?patch_ver:.%{patch_ver}}%{?dist}
Summary:        A compiler for the Scheme programming language

Group:          Development/Languages
License:        GPLv2+
URL:            http://www-sop.inria.fr/mimosa/fp/Bigloo
Source:         ftp://ftp-sop.inria.fr/mimosa/fp/Bigloo/bigloo%{version}%{?patch_suffix}.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires:  emacs
BuildRequires:  emacs-el
%if 0%{?_with_xemacs}
BuildRequires:  xemacs
BuildRequires:  xemacs-el
%endif
BuildRequires:  /sbin/install-info
BuildRequires:  indent
BuildRequires:  java-1.6.0-openjdk-devel
BuildRequires:  zip
BuildRequires:  gc-devel
BuildRequires:  gmp-devel
BuildRequires:  gstreamer-devel
BuildRequires:  gstreamer-plugins-base-devel
BuildRequires:  indent
BuildRequires:  openssl-devel
BuildRequires:  sqlite-devel
Requires:       bigloo-libs = %{version}-%{release}
Requires:       indent
Requires:       gmp-devel
Requires:       gc-devel
Requires(post):    /sbin/install-info
Requires(postun):  /sbin/install-info
ExcludeArch:    ppc64

%description
Bigloo is a Scheme implementation devoted to one goal: enabling Scheme
based programming style where C(++) is usually required. Bigloo
attempts to make Scheme practical by offering features usually
presented by traditional programming languages but not offered by
Scheme and functional programming. Bigloo compiles Scheme modules. It
delivers small and fast stand alone binary executables. Bigloo enables
full connections between Scheme and C programs.


%package libs
Summary:        Bigloo runtime libraries
Group:          System Environment/Libraries

%description libs
Runtime libraries for Bigloo compiled programs.


%package doc
Summary:        Bigloo documentation
Group:          Documentation
BuildArch:      noarch
# required due to noarch conversion
Obsoletes:      bigloo-doc < %{version}-%{release}

%description doc
Documentation for the Bigloo compiler and integrated development
environment.


%package -n emacs-%{pkg}
Summary:        Compiled elisp files to run %{pkgname} under GNU Emacs
Group:          Development/Languages
BuildArch:      noarch
Requires:       emacs(bin) >= %{_emacs_version}
Provides:       bigloo-emacs = %{version}-%{release}
Obsoletes:      bigloo-emacs < %{version}-%{release}

%description -n emacs-%{pkg}
This package contains the byte compiled elisp files to run %{pkgname}
with GNU Emacs.

%package -n emacs-%{pkg}-el
Summary:        Elisp source files for %{pkgname} under GNU Emacs
Group:          Development/Languages
BuildArch:      noarch
Requires:       emacs-%{pkg} = %{version}-%{release}

%description -n emacs-%{pkg}-el
This package contains the elisp source files for %{pkgname} under GNU Emacs. You
do not need to install this package to run %{pkgname}. Install the emacs-%{pkg}
package to use %{pkgname} with GNU Emacs.


%if 0%{?_with_xemacs}
%package -n xemacs-%{pkg}
Summary:        Compiled elisp files to run %{pkgname} under XEmacs
Group:          Development/Languages
BuildArch:      noarch
Requires:       xemacs(bin) >= %{_xemacs_version}
Provides:       bigloo-xemacs = %{version}-%{release}
Obsoletes:      bigloo-xemacs < %{version}-%{release}

%description -n xemacs-%{pkg}
This package contains the byte compiled elisp files to run %{pkgname}
with XEmacs.

%package -n xemacs-%{pkg}-el
Summary:        Elisp source files for %{pkgname} under XEmacs
Group:          Development/Languages
BuildArch:      noarch
Requires:       xemacs-%{pkg} = %{version}-%{release}

%description -n xemacs-%{pkg}-el
This package contains the elisp source files for %{pkgname} under XEmacs. You do
not need to install this package to run %{pkgname}. Install the xemacs-%{pkg}
package to use %{pkgname} with XEmacs.
%endif


%prep
%setup -q -n %{name}%{version}%{?patch_suffix}
sed -i 's|bmask=755|bmask=644|' configure
# encoding fixes
iconv -f ISO88591 -t UTF8 README -o README.utf8
touch -r README README.utf8
mv README.utf8 README


%build
%define inplace `pwd`/inplace
%define bigloo_opt_flags "`echo $RPM_OPT_FLAGS | sed 's/-Wall/-w/g' | sed 's/FORTIFY_SOURCE=./FORTIFY_SOURCE=0/g'`"
%define bigloo_opt_flags_ -O2 -g -pipe -fexceptions -fstack-protector --param=ssp-buffer-size=4


CFLAGS="%bigloo_opt_flags"
export CFLAGS
./configure \
        --prefix=%{_prefix} \
        --bindir=%{_bindir} \
        --libdir=%{_libdir} \
        --mandir=%{_mandir}/man1 \
        --infodir=%{_infodir} \
        --docdir=%{_docdir} \
        --lispdir=%{_emacs_sitelispdir}/bigloo \
        --bee=full \
        --native-default-backend \
        --dotnet=no \
        --jvm=yes \
        --sharedbde=yes \
        --sharedcompiler=yes \
        --customgc=no \
        --coflags="$CFLAGS"

# not needed anymore
# sed -i 's/^EMACSBRAND.*/EMACSBRAND=emacs22/g' Makefile.config

# _smp_mflags breaks the build
env LD_LIBRARY_PATH=`pwd`/lib/%{version} \
    BIGLOOLIB=%{inplace}%{_libdir}/bigloo/%{version} \
    make
env LD_LIBRARY_PATH=`pwd`/lib/%{version} \
    BIGLOOLIB=%{inplace}%{_libdir}/bigloo/%{version} \
    make DESTDIR=%{inplace} install
env LD_LIBRARY_PATH=`pwd`/lib/%{version} \
    PATH=`pwd`/bin:$PATH \
    BIGLOOLIB=%{inplace}%{_libdir}/bigloo/%{version} \
    make compile-bee


%install
rm -rf $RPM_BUILD_ROOT
env LD_LIBRARY_PATH=`pwd`/lib/%{version} \
    make DESTDIR=$RPM_BUILD_ROOT install
env LD_LIBRARY_PATH=`pwd`/lib/%{version} \
    make DESTDIR=$RPM_BUILD_ROOT EMACSDIR=%{_emacs_sitelispdir}/bigloo install-bee
make -C manuals DESTDIR=$RPM_BUILD_ROOT install-bee

# fix permissions
chmod 755 $RPM_BUILD_ROOT%{_bindir}/*

# move libraries to proper place
(
    cd $RPM_BUILD_ROOT%{_libdir}
    chmod 755 bigloo/%{version}/*.so
    rm -f *.so
    mv bigloo/%{version}/*.so .
    # seems to need to be hard linked so that it is provided by the package
#    for ext in bdl calendar fth gstreamer mail multimedia pkgcomp pkglib pth sqlite ssl web
#    do
#        ln -f libbigloo${ext}_s-%{version}.so libbigloo${ext}_u-%{version}.so
#    done
    (cd bigloo/%{version}; ln -sf ../../*.so .)
)

rm -fr $RPM_BUILD_ROOT%{_infodir}/dir
rm -fr $RPM_BUILD_ROOT%{_datadir}/doc

# emacs
mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir}
cat > $RPM_BUILD_ROOT%{_emacs_sitestartdir}/bigloo.el <<EOF
(require 'bmacs)
EOF
# nuke xemacs-specific files
# byte-compile the remaining .el files by hand
(
  cd $RPM_BUILD_ROOT%{_emacs_sitelispdir}/bigloo
  rm bmacs-xemacs.el xemacs-etags.el
  for f in *.el; do
    [ -f ${f}c ] || \
     emacs -no-site-file -eval '(setq load-path (cons "." load-path))' \
       -batch -q -f batch-byte-compile ${f}
  done
)

%if 0%{?_with_xemacs}
(
  cd bmacs
  make clean
  make EMACS=xemacs EMACSBRAND=xemacs EMACSDIR=$RPM_BUILD_ROOT%{_xemacs_sitelispdir}/bigloo
  make EMACS=xemacs EMACSBRAND=xemacs EMACSDIR=$RPM_BUILD_ROOT%{_xemacs_sitelispdir}/bigloo install
)

mkdir -p $RPM_BUILD_ROOT%{_xemacs_sitestartdir}
cat > $RPM_BUILD_ROOT%{_xemacs_sitestartdir}/bigloo.el <<EOF
(require 'bmacs)
EOF
%endif


%clean
rm -rf $RPM_BUILD_ROOT


%post
/sbin/install-info %{_infodir}/bigloo.info %{_infodir}/dir 2>/dev/null || :
/sbin/install-info %{_infodir}/bdb.info %{_infodir}/dir 2>/dev/null || :


%postun
if [ $1 = 0 ]; then
  /sbin/install-info --delete %{_infodir}/bigloo.info %{_infodir}/dir 2>/dev/null || :
  /sbin/install-info --delete %{_infodir}/bdb.info %{_infodir}/dir 2>/dev/null || :
fi


%post libs -p /sbin/ldconfig


%postun libs -p /sbin/ldconfig


%files
%defattr(-,root,root,-)
%{_bindir}/*
%{_libdir}/bigloo
%{_infodir}/*
%{_mandir}/man*/*
%doc Makefile.config examples LICENSE COPYING
%doc README*


%files -n emacs-bigloo
%defattr(-,root,root,-)
%{_emacs_sitelispdir}/bigloo
%exclude %{_emacs_sitelispdir}/bigloo/*.el
%{_emacs_sitestartdir}/bigloo.el

%files -n emacs-bigloo-el
%defattr(-,root,root,-)
%{_emacs_sitelispdir}/bigloo/*.el


%if 0%{?_with_xemacs}
%files -n xemacs-bigloo
%defattr(-,root,root,-)
%{_xemacs_sitelispdir}/bigloo
%exclude %{_xemacs_sitelispdir}/bigloo/*.el
%{_xemacs_sitestartdir}/bigloo.el

%files -n xemacs-bigloo-el
%defattr(-,root,root,-)
%{_xemacs_sitelispdir}/bigloo/*.el
%endif


%files libs
%defattr(-,root,root,-)
%{_libdir}/lib*.so


%files doc
%defattr(-,root,root,-)
%doc manuals/*.html


%changelog
* Fri Jul  2 2010 Michel Salim <salimma@fedoraproject.org> - 3.3a-2.5
- Now complies with Emacs packaging guidelines
- Disable broken XEmacs subpackages

* Sun May  9 2010 Michel Salim <salimma@fedoraproject.org> - 3.3a-1.5
- Update to 3.3a-5

* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 3.2b-3
- rebuilt with new openssl

* Sun Aug 16 2009 Gerard Milmeister <gemi@bluewin.ch> - 3.2b-2
- added requires gc-devel

* Sun Aug  9 2009 Gerard Milmeister <gemi@bluewin.ch> - 3.2b-1
- new release 3.2b

* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1b-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1b-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Thu Jan 15 2009 Tomas Mraz <tmraz@redhat.com> - 3.1b-4
- rebuild with new openssl

* Tue Sep 30 2008 Gerard Milmeister <gemi@bluewin.ch> - 3.1b-3
- add BR openssl-devel
- add missing Req. gmp-devel

* Thu Sep 18 2008 Gerard Milmeister <gemi@bluewin.ch> - 3.1b-1
- new release 3.1b

* Sat May 31 2008 Gerard Milmeister <gemi@bluewin.ch> - 3.1a-1
- new release 3.1a

* Mon Apr 14 2008 Gerard Milmeister <gemi@bluewin.ch> - 3.0c-4.1
- new release 3.0c-4

* Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 3.0b-2
- Autorebuild for GCC 4.3

* Tue Sep 11 2007 Gerard Milmeister <gemi@bluewin.ch> - 3.0b-1
- new release 3.0b

* Sat Jun  2 2007 Gerard Milmeister <gemi@bluewin.ch> - 3.0a-4
- exclude ppc64

* Fri Jun  1 2007 Gerard Milmeister <gemi@bluewin.ch> - 3.0a-3
- remove java ssl since it does not build with libgcj

* Fri Jun  1 2007 Gerard Milmeister <gemi@bluewin.ch> - 3.0a-1
- new version 3.0a

* Wed Mar 28 2007 Thomas Fitzsimmons <fitzsim@redhat.com> - 2.9a-3
- Patch method calls for Java 1.5.

* Tue Mar 27 2007 Thomas Fitzsimmons <fitzsim@redhat.com> - 2.9a-2
- Require java-1.5.0-gcj-devel for build.

* Thu Dec 28 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.9a-1
- new version 2.9a

* Wed Sep 13 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8c-5
- final version 2.8c

* Tue Sep  5 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8c-4
- reenable hard links

* Fri Sep  1 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8c-2
- updated to 2.8c-beta01Sep06

* Mon Aug 28 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8b-3
- Rebuild for FE6

* Thu Jun 22 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8b-1
- new version 2.8b

* Thu Jun  1 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8a-2
- final 2.8a release

* Tue Mar 21 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8a-1.20060322
- new version 2.8a-20060322

* Mon Mar 13 2006 Gerard Milmeister <gemi@bluewin.ch> - 2.8a-1.20060313
- new version 2.8a-20060313

* Mon Nov 28 2005 Gerard Milmeister <gemi@bluewin.ch> - 2.7a-2
- disable bmem, causes link problems

* Sun Nov 27 2005 Gerard Milmeister <gemi@bluewin.ch> - 2.7a-1
- New Version 2.7a

* Tue Sep 27 2005 Gerard Milmeister <gemi@bluewin.ch> - 2.6f-3
- Removed --arch

* Fri Feb 18 2005 Gerard Milmeister <gemi@bluewin.ch> - 0:2.6f-1
- New Version 2.6f

* Sun Feb 13 2005 Gerard Milmeister <gemi@bluewin.ch> - 0:2.6e-1
- New Version 2.6e

* Tue Mar 16 2004 Gerard Milmeister <gemi@bluewin.ch> - 0:2.6-0.fdr.1.c
- New Version 2.6c
- Separated Emacs and XEmacs packages

* Tue Dec 16 2003 Gerard Milmeister <gemi@bluewin.ch> - 0:2.6-0.fdr.1.b
- New Version 2.6b

* Thu Nov 27 2003 Gerard Milmeister <gemi@bluewin.ch> - 0:2.6-0.fdr.1.a
- First Fedora release