Package mozart: Specfile

# Spec file for Mozart, an efficient and distributed implementation of Oz
# Author: Christian Schulte, 1998
# Contributor: Konstantin Popov, 2001, 2004
# Contributor: Denys Duchier, 2001
# Copyright: Christian Schulte, 1998, 1999
# Copyright: Konstantin Popov, 2001, 2004
# Copyright: Denys Duchier, 2001
Name: mozart
Version: 1.3.2.20060615
Release: alt3
Summary: Mozart, an efficient and distributed implementation of Oz
License: bsdstyle 
Url: http://www.mozart-oz.org/
Group: Development/Other 
Packager: Denis Medvedev <nbr@altlinux.ru>
Icon: mozart.xpm

Source: ftp://ftp.mozart-oz.org/pub/1.3.2.20060615/tar/mozart-1.3.2.20060615-src.tar.gz
Source1: ftp://ftp.mozart-oz.org/pub/1.3.2.20060615/tar/mozart-1.3.2.20060615-doc.tar.gz
Source2: mozart-profiles.tar.gz
Source3: ftp://ftp.mozart-oz.org/pub/1.3.2.20060615/tar/mozart-1.3.2.20060615-std.tar.gz
BuildPreReq: gdbm-devel gdbm tcl-devel tcl tk-devel tk libgmp-devel libgmp gcc-c++ rpm-build-licenses flex bison zlib zlib-devel emacs libXScrnSaver-devel libXScrnSaver
%add_findreq_skiplist %_libdir/mozart/bin/convertTextPickle
%add_findprov_skiplist %_libdir/mozart/bin/convertTextPickle

%add_findreq_skiplist %_libdir/mozart/bin/oldpickle2text
%add_findprov_skiplist %_libdir/mozart/bin/oldpickle2text
%add_findreq_skiplist %_libdir/mozart/bin/oz
%add_findprov_skiplist %_libdir/mozart/bin/oz

%add_findreq_skiplist %_libdir/mozart/bin/ozc
%add_findprov_skiplist %_libdir/mozart/bin/ozc
%add_findreq_skiplist %_libdir/mozart/bin/ozd
%add_findprov_skiplist %_libdir/mozart/bin/ozd
%add_findprov_skiplist %_libdir/mozart/bin/ozdoc
%add_findreq_skiplist %_libdir/mozart/bin/ozdoc
%add_findreq_skiplist %_libdir/mozart/bin/ozengine
%add_findprov_skiplist %_libdir/mozart/bin/ozengine
%add_findreq_skiplist %_libdir/mozart/bin/ozl
%add_findprov_skiplist %_libdir/mozart/bin/ozl
%add_findreq_skiplist %_libdir/mozart/bin/ozmake
%add_findprov_skiplist %_libdir/mozart/bin/ozmake
%add_findreq_skiplist %_libdir/mozart/bin/ozplatform
%add_findprov_skiplist %_libdir/mozart/bin/ozplatform
%add_findreq_skiplist %_libdir/mozart/bin/oztool
%add_findprov_skiplist %_libdir/mozart/bin/oztool
%add_findreq_skiplist %_libdir/mozart/bin/ozwrapper.bin
%add_findprov_skiplist %_libdir/mozart/bin/ozwrapper.bin
%add_findreq_skiplist %_libdir/mozart/bin/ozwrapperw.bin
%add_findprov_skiplist %_libdir/mozart/bin/ozwrapperw.bin
%add_findreq_skiplist %_libdir/mozart/bin/pickle2text
%add_findprov_skiplist %_libdir/mozart/bin/pickle2text
%add_findreq_skiplist %_libdir/mozart/bin/text2pickle
%add_findprov_skiplist %_libdir/mozart/bin/text2pickle

%description
The Mozart system provides state-of-the-art support in two areas: open
distributed computing and constraint-based inference. Mozart
implements Oz, a concurrent object-oriented language with dataflow
synchronization. Oz combines concurrent and distributed programming
with logical constraint-based inference, making it a unique choice for
developing multi-agent systems. Mozart is an ideal platform for both
general-purpose distributed applications as well as for hard problems
requiring sophisticated optimization and inferencing abilities. We
have developed applications in scheduling and time-tabling, in
placement and configuration, in natural language and knowledge
representation, multi-agent systems and sophisticated collaborative
tools.

Mozart has been jointly developed by the Programming Systems Lab at
DFKI and Universitet des Saarlandes, the Swedish Institute of Computer
Science, and Universite de Louvain.

This package contains all you need to run and develop Oz programs with
Mozart.
%package doc
Summary: Mozart documentation
Group: Development/Other
requires: mozart
%description doc
This package contains the extensive Mozart online documentation as a
set of HTML pages, postscript and pdf documents. It also contains demo
applications that can directly be started from the pages.
%prep
%setup -q
%setup -q -D -T -b 3

%build
# configure and build mozart core distro
: ${CFLAGS="$RPM_OPT_FLAGS"}
: ${CXXFLAGS="$RPM_OPT_FLAGS"}
export CFLAGS CXXFLAGS
%configure --prefix=%buildroot%_libdir/mozart --with-ozhome=%_libdir/mozart --enable-opt=yes --with-tcl=%_libdir/tcl --with-tk=%_libdir/tk
make
# perform an install to a temporary fake root
# so that the rest of the distro can use it for
# purposes of compilation

%make_install install
# configure and build the standard library
( cd $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION-std;   ./configure --prefix=%buildroot%_libdir/mozart --with-tcl=%_libdir/tcl --with-tk=%_libdir/tk;   make )

%install
### rm -rf %buildroot
PREFIX=%buildroot%_libdir/mozart
# config files
mkdir -p %buildroot%_sysconfdir/profile.d
(cd %buildroot%_sysconfdir/profile.d;  gzip -dc $RPM_SOURCE_DIR/mozart-profiles.tar.gz | tar xf -)
mkdir -p $PREFIX
# Generic install
%make_install install
PLTFRM=`$PREFIX/bin/ozplatform`
if [ "no" = "yes" ]; then
    # inspect the emulator.exe for being dynamically linked against
    # libstdc++.so.5 and libgcc_s.so, and if so - copy the library(s) into
    # /platform//lib:
    found=""
    dynlib=`ldd $PREFIX/platform/${PLTFRM}/emulator.exe | grep libgcc_s.so && eval '' || eval ''`
    for e in $dynlib ; do
        match=`echo $e | grep "/.*libgcc_s.so" && eval '' || eval ''`
        if [ "$match" != "" ]; then
    	found=$match
    	break
        fi
    done
    if [ "$found" != "" ]; then
        lib=""
        for e in `echo $found | tr '/' ' '` ; do
    	lib=$e
        done
        mkdir -p $PREFIX/platform/${PLTFRM}/lib
        /bin/cp $found $PREFIX/platform/${PLTFRM}/lib/$lib
        /bin/chmod a+x $PREFIX/platform/${PLTFRM}/lib/$lib
        unset lib
    fi
    unset found
    unset dynlib
    found=""
    dynlib=`ldd $PREFIX/platform/${PLTFRM}/emulator.exe | grep "libstdc++.so" && eval '' || eval ''`
    for e in $dynlib ; do
        match=`echo $e | grep "/.*libstdc++.so" && eval '' || eval ''`
        if [ "$match" != "" ]; then
    	found=$match
    	break
        fi
    done
    if [ "$found" != "" ]; then
        lib=""
        for e in `echo $found | tr '/' ' '` ; do
    	lib=$e
        done
        mkdir -p $PREFIX/platform/${PLTFRM}/lib
        /bin/cp $found $PREFIX/platform/${PLTFRM}/lib/$lib
        /bin/chmod a+x $PREFIX/platform/${PLTFRM}/lib/$lib
        unset lib
    fi
    unset found
    unset dynlib
fi

# Strip binaries and shared objects
find $PREFIX -type f -name '*.so*' -exec strip '{}' ';'
find $PREFIX -type f -name '*.exe' -exec strip '{}' ';'
# standard library
(cd $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION-std;  make install )

# documentation files (overwrite whatever is installed up until now;)
(cd $PREFIX;  gzip -dc $RPM_SOURCE_DIR/mozart-1.3.2.20060615-doc.tar.gz | tar xf -;  rm -rf doc print;  mv mozart/doc .;  mv mozart/print .;  rm -rf mozart;  rm -rf doc/demo/applets;  chown -R root .;  chgrp -R root .;  chmod -R a+rX,g-w,o-w .)

# Create file lists
make files.base files.base-${PLTFRM}
make files.contrib files.contrib-${PLTFRM}
make files.doc
cat files.base files.base-${PLTFRM} files.contrib files.contrib-${PLTFRM} |     sed 's|^./|%_libdir/mozart/|g' > mfiles.base
cat files.doc |     sed 's|^./|%_libdir/mozart/|g' > mfiles.doc


rm -rf $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION-std
%files -f mfiles.base
%doc README LICENSE LICENSE.html LICENSE.rtf
%config %_sysconfdir/profile.d/oz.sh
%config %_sysconfdir/profile.d/oz.csh
%files doc -f mfiles.doc

%changelog
* Mon Nov 26 2007 Denis Medvedev <nbr@altlinux.ru> 1.3.2.20060615-alt3
- added --with-tcl and --with-tk to second configure

* Sun Nov 25 2007 Denis Medvedev <nbr@altlinux.ru> 1.3.2.20060615-alt2
- Added direct dependence to libXScrnSaver

* Sun Oct 07 2007 Denis Medvedev <nbr@altlinux.ru> 1.3.2.20060615-alt1
Initial ALT release