##
##  mozilla.spec -- OpenPKG RPM Specification
##  Copyright (c) 2000-2003 Cable & Wireless Deutschland GmbH
##  Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
##  Copyright (c) 2000-2003 Ralf S. Engelschall <rse@engelschall.com>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
##  SUCH DAMAGE.
##

#   package information
Name:         mozilla
Summary:      Graphical Internet Communication Frontend
URL:          http://www.mozilla.org/
Vendor:       The Mozilla Project
Packager:     The OpenPKG Project
Distribution: OpenPKG [EVAL]
Group:        Web
License:      MPL
Version:      1.2.1
Release:      20030103

#   package options
%option       with_mailnews   no
%option       with_composer   no

#   list of sources
Source0:      ftp://ftp.mozilla.org/pub/mozilla/releases/mozilla%{version}/src/mozilla-source-%{version}.tar.bz2
Source1:      http://people.freebsd.org/~marcus/libart_lgpl-%{version}.tar.bz2
Source2:      mozilla.sh
Source3:      mozilla.pod
Patch0:       mozilla.patch

#   build information
Prefix:       %{l_prefix}
BuildRoot:    %{l_buildroot}
BuildPreReq:  OpenPKG, openpkg >= 20030103, X11, glib, gtk, orbit, libiconv, infozip, openssl, freetype, make, gcc, perl
PreReq:       OpenPKG, openpkg >= 20030103, X11, glib, gtk, orbit, libiconv, infozip, openssl, freetype, xsel
AutoReq:      no
AutoReqProv:  no

%description
    Mozilla is a full-featured Open Source Internet communication
    frontend derived from the popular Netscape Communicator. It provides
    Web, Mail, News and Chat client services and is designed for
    standards compliance, performance and portability.

%prep
    #   display a warning that this package is a beast
    ( echo "This package requires about 540 MB of free disk space, 200 MB of RAM"
      echo "and 70 minutes real-time to build on a Pentium-III 800Mhz class CPU."
      echo "So be prepared and patient, please... ;-)"
    ) | %{l_rpmtool} msg -b -t notice

    #   extract source distribution
    %setup -q -n mozilla

    #   add back the modified libart which is included in Mozilla CVS
    #   but left out of the source distribution for licensing reasons.
    %{l_bzip2} -d -c %{SOURCE1} | %{l_tar} xf -

    #   patch source distribution
    %patch -p0

    #   strip down source distribution (save disk space)
    find . -type d -name "CVS" -print | xargs rm -rf
    find . -type d -name "macbuild" -print | xargs rm -rf
    find . -type f -name ".cvsignore" -print | xargs rm -f
    find . -type f -name "makefile.win" -print | xargs rm -f
    find . -type f -name "MANIFEST" -print | xargs rm -f
    rm -rf build/package

%build
    #   configure source
    CC="%{l_cc}" \
    CXX="%{l_cxx}" \
    CFLAGS="%{l_cflags} %{l_cppflags}" \
    CXXFLAGS="%{l_cxxflags} -Wno-deprecated %{l_cppflags}" \
    CPPFLAGS="%{l_cppflags}" \
    LDFLAGS="%{l_ldflags}" \
    GLIB_CONFIG="%{l_prefix}/bin/glib-config" \
    GTK_CONFIG="%{l_prefix}/bin/gtk-config" \
    LIBIDL_CONFIG="%{l_prefix}/bin/libIDL-config" \
    MOZ_INTERNAL_LIBART_LGPL=1 \
    ./configure \
        --prefix=%{l_prefix} \
        --libdir=%{l_prefix}/lib/mozilla \
        --includedir=%{l_prefix}/include/mozilla \
        --with-x \
        --x-includes=`%{l_prefix}/etc/rc --query x11_incdir` \
        --x-libraries=`%{l_prefix}/etc/rc --query x11_libdir` \
        --enable-toolkit-gtk \
        --enable-default-toolkit=gtk \
        --with-gtk-prefix=%{l_prefix} \
        --with-glib-prefix=%{l_prefix} \
        --with-libIDL-prefix=%{l_prefix} \
        --with-system-jpeg=%{l_prefix} \
        --with-system-png=%{l_prefix} \
        --with-system-zlib=%{l_prefix} \
        --with-ft-prefix=%{l_prefix} \
        --enable-freetype2 \
        --enable-jsd \
        --enable-crypto \
        --enable-chrome-format=jar \
        --enable-static \
        --enable-strip \
%if "%{with_mailnews}" == "yes"
        --enable-mailnews \
%else
        --disable-mailnews \
%endif
%if "%{with_composer}" == "yes"
        --enable-composer \
%else
        --disable-composer \
%endif
        --disable-xft \
        --disable-xinerama \
        --disable-shared \
        --disable-tests \
        --disable-svg \
        --disable-ldap \
        --disable-accessibility \
        --disable-debug \
        --disable-dtd-debug \
        --disable-pedantic \
        --disable-auto-deps \
        --disable-md \
        --disable-cpp-exceptions \
        --disable-cpp-rtti \
        --disable-optimize \
        --disable-xterm-updates \
        --with-pthreads

    #   build program
    %{l_make} %{l_mflags}

    #   post-adjustments to builded program
    ( cd dist/bin
      #   prepare for multi-user usage
      LD_LIBRARY_PATH=.; export LD_LIBRARY_PATH
      MOZILLA_FIVE_HOME=.; export MOZILLA_FIVE_HOME
      ./regxpcom || true
      ./regchrome || true
      touch chrome/user-skins.rdf chrome/user-locales.rdf

      #   re-adjust paths to reflect final location
      %{l_shtool} subst \
          -e "s;`pwd`;%{l_prefix}/lib/mozilla;" \
          components/xpti.dat components/compreg.dat

      #    strip down installation tree
      find . -type d -depth -print | xargs rmdir >/dev/null 2>&1 || true
      rm -f mozilla-config mkdepend nsinstall bloaturls.txt TestGtk* LICENSE README
      rm -rf res/samples

      #    workaround run-time startup problems
      mkdir .autoreg
    )

    #   generate manual page for startup convinience wrapper
    %{l_prefix}/bin/pod2man \
        --section=1 --quotes=none \
        --release="Mozilla %{version}" --center="%{packager}" \
        %{SOURCE mozilla.pod} >mozilla.1

%install
    rm -rf $RPM_BUILD_ROOT

    #   generate temporary installation tree
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/bin \
        $RPM_BUILD_ROOT%{l_prefix}/lib/mozilla \
        $RPM_BUILD_ROOT%{l_prefix}/man/man1

    #   move files into temporary installation tree
    (cd dist/bin && %{l_tar} -chf - . ) |\
        (cd $RPM_BUILD_ROOT%{l_prefix}/lib/mozilla && %{l_tar} -xf -)

    #   add startup convinience wrapper
    %{l_shtool} install -c -m 755 -e 's;@l_prefix@;%{l_prefix};g' \
        %{SOURCE mozilla.sh} $RPM_BUILD_ROOT%{l_prefix}/bin/mozilla
    %{l_shtool} install -c -m 644 \
        mozilla.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/

    #   determine installation files
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}

%files -f files

%clean
    rm -rf $RPM_BUILD_ROOT

