Selaa lähdekoodia

new package: firefox 0.8 (Graphical Web Browser)

Ralf S. Engelschall 22 vuotta sitten
vanhempi
commit
48012381d8
4 muutettua tiedostoa jossa 581 lisäystä ja 0 poistoa
  1. 31 0
      firefox/firefox.patch
  2. 132 0
      firefox/firefox.pod
  3. 201 0
      firefox/firefox.sh
  4. 217 0
      firefox/firefox.spec

+ 31 - 0
firefox/firefox.patch

@@ -0,0 +1,31 @@
+--- nsprpub/pr/include/md/_freebsd.h.orig	Sat Feb 16 09:12:55 2002
++++ nsprpub/pr/include/md/_freebsd.h	Thu Aug  8 19:31:23 2002
+@@ -40,6 +40,7 @@
+ #if __FreeBSD__ >= 2
+ #include <osreldate.h>  /* for __FreeBSD_version */
+ #endif
++#include <sys/param.h>
+ #include <sys/syscall.h>
+ 
+ #define PR_LINKER_ARCH	"freebsd"
+--- nsprpub/pr/src/md/unix/unix.c.orig	Sat May 31 18:06:04 2003
++++ nsprpub/pr/src/md/unix/unix.c	Sat May 31 18:04:43 2003
+@@ -65,7 +65,8 @@
+  * PRInt32* pointer to a _PRSockLen_t* pointer.
+  */
+ #if defined(HAVE_SOCKLEN_T) \
+-    || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
++    || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
++    || defined(FREEBSD)
+ #define _PRSockLen_t socklen_t
+ #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
+     || defined(AIX4_1) || defined(LINUX) || defined(SONY) \
+@@ -73,7 +74,7 @@
+     || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
+     || defined(NEXTSTEP) || defined(QNX)
+ #define _PRSockLen_t int
+-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
++#elif (defined(AIX) && !defined(AIX4_1)) \
+     || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
+     || defined(DGUX) || defined(VMS) || defined(NTO)
+ #define _PRSockLen_t size_t

+ 132 - 0
firefox/firefox.pod

@@ -0,0 +1,132 @@
+##
+##  firefox.pod -- Mozilla Firefox Startup Control Utility (manpage)
+##  Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2000-2003 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2000-2003 Cable & Wireless <http://www.cw.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.
+##
+
+=pod
+
+=head1 NAME
+
+B<firefox> -- Mozilla Firefox Startup Control Utility
+
+=head1 SYNOPSIS
+
+B<firefox>
+[B<-v>|B<--verbose>]
+[B<-w>|B<--window>]
+[B<-t>|B<--tab>]
+[B<-r>|B<-remote>|B<--remote> I<command>]
+[I<url> ...]
+
+=head1 DESCRIPTION
+
+The B<firefox> command is small startup control utility for the
+B<Mozilla Firefox> browser (http://www.mozilla.org/). It makes sure that
+no more than one B<Mozilla Firefox> instance is running at the same time
+and allows you to conviniently load URLs from the command line into new
+browser windows, new browser tabs or into the currently open browser
+view.
+
+The following command line options are recognized:
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Displays verbose messages on F<stderr> while performing the
+B<Mozilla Firefox> control actions.
+
+=item B<-w>, B<--window>
+
+Opens the URL(s) into new browser windows.
+
+=item B<-t>, B<--tab>
+
+Opens the URL(s) into new browser tabs.
+
+=item B<-r>, B<-remote>, B<--remote> I<command>
+
+This is for compatibility with the lower level C<mozilla>
+executable. It just passes through the options I<command>.
+
+=back
+
+The following URL(s) are recognized on the command line:
+
+=over 4
+
+=item C<http://>..., C<https://...>, C<ftp://>...
+
+Fully qualified URLs are passed through as-is.
+
+=item C<google:>I<wordlist>
+
+Expands into a Google (http://www.google.com/) query URL for the given
+I<wordlist>.
+
+=item C<leo:>I<wordlist>
+
+Expands into a Leo English/German Dictionary (http://dict.leo.org/)
+query URL for the given I<wordlist>.
+
+=item C<ftpsearch:>I<wordlist>
+
+Expands into an AllTheWeb FTPSearch (http://www.alltheweb.com/) query URL for the given
+I<wordlist>.
+
+=item C<rfc:>I<number>
+
+Expands into a Zvon RFC retrival URL (http://zvon.org/) for the given
+RFC I<number>.
+
+=item C<whois:>I<domain>
+
+Expands into a Geektools WHOIS query (http://www.geektools.com/) query URL
+for the given I<domain>.
+
+=item C</>I<path>, I<path>
+
+Expands the absolute or relative Unix filesystem I<path> into a fully
+qualified C<file> scheme URL.
+
+=item C<auto:>...
+
+Trys to autodetect the query.
+
+=back 
+
+Additionally any URL argument can contain an at-sign ("C<@>"), which
+is replaced with the current contents of the X11 selection buffer.
+
+=head1 SEE ALSO
+
+http://www.mozilla.org/unix/remote.html
+
+=head1 HISTORY
+
+This utility was written in November 2002 by B<Ralf S. Engelschall>
+E<lt>rse@engelschall.comE<gt> for use with the B<OpenPKG> I<mozilla>
+package.
+
+=cut
+

+ 201 - 0
firefox/firefox.sh

@@ -0,0 +1,201 @@
+#!/bin/sh
+##
+##  firefox -- Mozilla Firefox Startup Control Utility
+##  Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2000-2003 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2000-2003 Cable & Wireless <http://www.cw.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.
+##
+
+#   configuration
+mozilla_dir="@l_prefix@/lib/firefox"
+mozilla_bin="@l_prefix@/lib/firefox/mozilla"
+xsel_bin="@l_prefix@/bin/xsel"
+
+#   option parsing
+opt_v=no
+opt_w=no
+opt_t=no
+opt_r=""
+while [ ".$1" != . ]; do
+    case $1 in
+        -v|--verbose ) opt_v=yes; shift ;;
+        -w|--window  ) opt_w=yes; shift ;;
+        -t|--tab     ) opt_t=yes; shift ;;
+        -r|-remote|--remote ) opt_r="$2"; shift; shift ;;
+        -* ) echo "$0:ERROR: invalid option \"$1\"" 1>&2; exit 1 ;;
+        * ) break ;;
+    esac
+done
+if [ $# -eq 0 ]; then
+    set -- ""
+fi
+
+verbose () {
+    if [ ".$opt_v" = .yes ]; then
+        echo "firefox: $*" 1>&2
+    fi
+}
+
+#   establish Mozilla environment
+MOZILLA_FIVE_HOME="$mozilla_dir"
+export MOZILLA_FIVE_HOME
+LANG=en_US.ISO8859-1
+export LANG
+
+#   special case of direct remote option
+if [ ".$opt_r" != . ]; then
+    verbose "exec: $mozilla_bin -remote \"$opt_r\""
+    exec $mozilla_bin -remote "$opt_r"
+fi
+
+#   determine Mozilla run-time status
+$mozilla_bin -remote "ping()" >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+    verbose "process already running (available remotely)"
+    restart=no
+else
+    verbose "process still not running (not available remotely)"
+    restart=yes
+fi
+
+#   open one or more URLs
+first=yes
+for url in "$@"; do
+    #   determine URL to open
+    if [ ".`echo .$url | grep '@'`" != . ]; then
+        #   expand at-sign into X11 selection buffer
+        xsel=`($xsel_bin --paste) 2>/dev/null`
+        url=`echo "$url" | sed -e "s;@;$xsel;"`
+    fi
+    if [ ".$url" = . ]; then
+        #   expand an empty URL into the internal blank page
+        url="about:blank"
+    else
+        #   expand special URL constructs
+        case "$url" in
+            auto:* )
+                url=`echo "$url" | sed -e 's;^auto:;;'`
+                case "$url" in
+                    http://* | https://* | ftp://* ) ;;
+                    www.* ) url="http://$url" ;;
+                    ftp.* ) url="ftp://$url" ;;
+                    *.tar.gz | *.tgz ) url="ftpsearch:$url" ;;
+                    *" "* ) url="google:$url" ;;
+                    [0-9]* ) url="rfc:$url" ;;
+                    * ) url="leo:$url" ;;
+                esac
+                ;;
+        esac
+        case "$url" in
+            http://* | https://* | ftp://* )
+                : # URL is already fully qualified
+                ;;
+            google:* ) 
+                #   expand Google query
+                url=`echo "$url" | sed -e 's;^google:;;' | tr ' ' '+'`
+                url="http://www.google.com/search?q=$url"
+                ;;
+            leo:* ) 
+                #   expand Leo Dictionary query
+                url=`echo "$url" | sed -e 's;^leo:;;' | tr ' ' '+'`
+                url="http://dict.leo.org/?search=$url"
+                ;;
+            ftpsearch:* ) 
+                #   expand FTPSearch query
+                url=`echo "$url" | sed -e 's;^ftpsearch:;;' | sed -e 's; ;%20;g'`
+                url="http://www.alltheweb.com/search?advanced=1&cat=ftp&q=$url"
+                ;;
+            rfc:* )
+                #   expand Zvon.org RFC query
+                url=`echo "$url" | sed -e 's;^rfc:;;'`
+                url="http://zvon.org/tmRFC/RFC$url/Output/index.html"
+                ;;
+            whois:* )
+                #   expand Geektools.com WHOIS query
+                url=`echo "$url" | sed -e 's;^whois:;;'`
+                url="http://www.geektools.com/cgi-bin/proxy.cgi?query=$url"
+                ;;
+            jargon:* )
+                #   expand UMEC Jargon File query
+                url=`echo "$url" | sed -e 's;^jargon:;;' | tr ' ' '+'`
+                url="http://www.tf.hut.fi/cgi-bin/jargon?search=$url"
+                ;;
+            /* ) 
+                #   expand absolute filename into file URL
+                url="file://$url"
+                ;;
+            * ) 
+                #   expand relative filename into file URL
+                url="file://`pwd`/$url"
+                ;;
+        esac
+    fi
+
+    if [ ".$first" = .yes -a ".$restart" = .yes ]; then
+        #   handling of first URL if restarting is necessary
+        verbose "running new process"
+        if [ ".$url" = ".about:blank" ]; then
+            verbose "exec: $mozilla_bin >/dev/null 2>&1 &"
+            $mozilla_bin >/dev/null 2>&1 &
+        else
+            verbose "exec: $mozilla_bin \"$url\" >/dev/null 2>&1 &"
+            $mozilla_bin "$url" >/dev/null 2>&1 &
+        fi
+    else
+        #   delayed waiting for process to be finally remotely available
+        #   if it was started from scratch for the handling of the first
+        #   URL. This way we wait only if necessary, i.e., if more than
+        #   one URL was given.
+        if [ ".$first" = .no -a ".$restart" = .yes ]; then
+            verbose "waiting for new process to be available remotely"
+            sleep 4 # give it a little bit of time to fully startup
+            i=0
+            while [ $i -lt 10 ]; do
+                $mozilla_bin -remote "ping()" >/dev/null 2>&1
+                if [ $? -eq 0 ]; then
+                    break
+                fi
+                sleep 1 # give it a little bit more time to startup
+                i=`expr $i + 1`
+            done
+        fi
+
+        #   determine remote command
+        if [ ".$opt_w" = .yes ]; then
+            if [ ".$url" = ".about:blank" ]; then
+                cmd="xfeDoCommand(openBrowser)"
+            else
+                cmd="openURL($url, new-window)"
+            fi
+        elif [ ".$opt_t" = .yes ]; then
+            cmd="openURL($url, new-tab)"
+        else
+            cmd="openURL($url)"
+        fi
+
+        #   perform remote command
+        verbose "sending remote command to running process"
+        verbose "exec: $mozilla_bin -remote \"$cmd\" >/dev/null 2>&1"
+        $mozilla_bin -remote "$cmd" >/dev/null 2>&1
+    fi
+    first=no
+done
+

+ 217 - 0
firefox/firefox.spec

@@ -0,0 +1,217 @@
+##
+##  firefox.spec -- OpenPKG RPM Specification
+##  Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.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:         firefox
+Summary:      Graphical Web Browser
+URL:          http://www.mozilla.org/products/firefox/
+Vendor:       The Mozilla Project
+Packager:     The OpenPKG Project
+Distribution: OpenPKG
+Class:        EVAL
+Group:        Web
+License:      MPL
+Version:      0.8
+Release:      20040210
+
+#   package options
+%option       with_optimize   yes
+
+#   list of sources
+Source0:      ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/%{version}/firefox-source-%{version}.tar.bz2
+Source1:      ftp://ftp.openpkg.org/sources/CPY/mozilla/mozilla-1.4-libart.tar.bz2
+Source2:      firefox.sh
+Source3:      firefox.pod
+Patch0:       firefox.patch
+
+#   build information
+Prefix:       %{l_prefix}
+BuildRoot:    %{l_buildroot}
+BuildPreReq:  OpenPKG, openpkg >= 20040130, make, gcc, perl
+PreReq:       OpenPKG, openpkg >= 20040130, xsel
+BuildPreReq:  X11, glib, gtk, orbit, libiconv, infozip, openssl, freetype
+PreReq:       X11, glib, gtk, orbit, libiconv, infozip, openssl, freetype
+AutoReq:      no
+AutoReqProv:  no
+
+%description
+    Firefox is a speedy, full-featured Web browser based on the Mozilla
+    codebase. It uses the Mozilla Gecko engine for rendering the Mozilla
+    Web content and XUL for presenting the GUI.
+
+%track
+    prog firefox = {
+        version   = %{version}
+        url       = ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
+        regex     = (__VER__)
+        url       = ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/__NEWVER__/
+        regex     = firefox-source-(__VER__)\.tar\.bz2
+    }
+
+%prep
+    #   extract source distribution
+    %setup -q -n mozilla
+    %setup -q -n mozilla -D -T -a 1
+
+    #   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
+    #   determine X11 paths
+    x11_libdir=`%{l_prefix}/etc/rc --query x11_libdir`
+    x11_incdir=`%{l_prefix}/etc/rc --query x11_incdir`
+
+    #   determine build flags
+    CC="%{l_cc}"
+    CXX="%{l_cxx}"
+    CFLAGS="%{l_cflags} %{l_cppflags} -I${x11_incdir}"
+    CXXFLAGS="%{l_cxxflags} -Wno-deprecated %{l_cppflags}"
+    CPPFLAGS="%{l_cppflags glib} -I${x11_incdir}"
+    LDFLAGS="-L`pwd`/dist/bin -L`pwd`/dist/lib -L`pwd`/dist/lib/components"
+    LDFLAGS="$LDFLAGS %{l_ldflags} -L${x11_libdir}"
+    GLIB_CONFIG="%{l_prefix}/bin/glib-config"
+    GTK_CONFIG="%{l_prefix}/bin/gtk-config"
+    LIBIDL_CONFIG="%{l_prefix}/bin/libIDL-config"
+    PERL="%{l_prefix}/bin/perl"
+    MOZ_INTERNAL_LIBART_LGPL=1
+    export CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+    export GLIB_CONFIG GTK_CONFIG LIBIDL_CONFIG
+    export MOZ_INTERNAL_LIBART_LGPL
+
+    #   configure source
+    ./configure \
+        --prefix=%{l_prefix} \
+        --libdir=%{l_prefix}/lib/firefox \
+        --includedir=%{l_prefix}/include/firefox \
+        --with-x \
+        --x-includes=`%{l_prefix}/etc/rc --query x11_incdir` \
+        --x-libraries=`%{l_prefix}/etc/rc --query x11_libdir` \
+        --enable-default-toolkit=gtk \
+        --enable-toolkit-gtk \
+        --disable-toolkit-qt \
+        --disable-toolkit-xlib \
+        --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-svg \
+        --enable-static \
+        --enable-strip \
+%if "%{with_optimize}" == "yes"
+        --enable-optimize="-O2" \
+%else
+        --disable-optimize \
+%endif
+        --disable-xft \
+        --disable-xinerama \
+        --disable-shared \
+        --disable-tests \
+        --disable-ldap \
+        --disable-accessibility \
+        --disable-debug \
+        --disable-dtd-debug \
+        --disable-pedantic \
+        --disable-auto-deps \
+        --disable-md \
+        --disable-cpp-exceptions \
+        --disable-cpp-rtti \
+        --disable-xterm-updates \
+        --disable-elf-dynstr-gc \
+        --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/firefox;" \
+          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 >/dev/null 2>&1 || true
+    ) || exit $?
+
+    #   generate manual page for startup convinience wrapper
+    %{l_prefix}/bin/pod2man \
+        --section=1 --quotes=none \
+        --release="Mozilla %{version}" --center="%{packager}" \
+        %{SOURCE firefox.pod} >firefox.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/firefox \
+        $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/firefox && %{l_tar} -xf - ) || exit $?
+
+    #   add startup convinience wrapper
+    %{l_shtool} install -c -m 755 %{l_value -s -a} \
+        %{SOURCE firefox.sh} $RPM_BUILD_ROOT%{l_prefix}/bin/firefox
+    %{l_shtool} install -c -m 644 \
+        firefox.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
+