<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

<!-- This link does not work presently (as of February 16th, 2014), but the
     next one may have to be updated soon.
  <!ENTITY serf-download-http "https://serf.googlecode.com/files/serf-&serf-version;.tar.bz2">-->
  <!ENTITY serf-download-http "http://serf.googlecode.com/svn/src_releases/serf-&serf-version;.tar.bz2">
  <!ENTITY serf-download-ftp  " ">
  <!ENTITY serf-md5sum        "2e4efe57ff28cb3202a112e90f0c2889">
  <!ENTITY serf-size          "140 KB">
  <!ENTITY serf-buildsize     "2.6 MB (additional 2.2 MB for the tests)">
  <!ENTITY serf-time          "less than 0.1 SBU (additional 0.3 SBU for the tests)">
]>

<sect1 id="serf" xreflabel="Serf-&serf-version;">
  <?dbhtml filename="serf.html"?>

  <sect1info>
    <othername>$LastChangedBy: bdubbs $</othername>
    <date>$Date: 2015-02-20 16:15:05 -0500 (Fri, 20 Feb 2015) $</date>
  </sect1info>

  <title>Serf-&serf-version;</title>

  <indexterm zone="serf">
    <primary sortas="a-Serf">Serf</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to Serf</title>

    <para>
      The <application>Serf</application> package contains a C-based HTTP client
      library built upon the Apache Portable Runtime (APR) library. It
      multiplexes connections, running the read/write communication asynchronously.
      Memory copies and transformations are kept to a minimum to provide high
      performance operation.
    </para>

    &lfs77_checked;

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>
          Download (HTTP): <ulink url="&serf-download-http;"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Download (FTP): <ulink url="&serf-download-ftp;"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Download MD5 sum: &serf-md5sum;
        </para>
      </listitem>
      <listitem>
        <para>
          Download size: &serf-size;
        </para>
      </listitem>
      <listitem>
        <para>
          Estimated disk space required: &serf-buildsize;
        </para>
      </listitem>
      <listitem>
        <para>
          Estimated build time: &serf-time;
        </para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Serf Dependencies</bridgehead>

    <bridgehead renderas="sect4">Required</bridgehead>
    <para role="required">
      <xref linkend="apr-util"/>,
      <xref linkend="openssl"/>, and
      <xref linkend="scons"/>
    </para>

    <bridgehead renderas="sect4">Optional</bridgehead>
    <para role="optional">
      <xref linkend="mitkrb"/>, for the GSSAPI
    </para>

    <para condition="html" role="usernotes">
      User Notes: <ulink url="&blfs-wiki;/serf"/>
    </para>
  </sect2>

  <sect2 role="installation">
    <title>Installation of Serf</title>

    <para>
      Install <application>Serf</application> by running the following
      commands:
    </para>

<screen><userinput>sed -i "/Append/s:RPATH=libdir,::"   SConstruct &amp;&amp;
sed -i "/Default/s:lib_static,::"    SConstruct &amp;&amp;
sed -i "/Alias/s:install_static,::"  SConstruct &amp;&amp;
scons PREFIX=/usr</userinput></screen>

    <para>
      If you wish to run the test suite, fix one file:
    </para>

<screen><userinput>sed -i test/test_buckets.c \
    -e 's://\(    buf_size = orig_len + (orig_len / 1000) + 12;\):/\*\1\ */:'</userinput></screen>

    <para>
      To test the results, issue: <command>scons check</command>. With above
      fix, 1 out of 65 tests still fails for unknown reasons.
    </para>

    <para>
      Now, as the <systemitem class="username">root</systemitem> user:
    </para>

<screen role="root"><userinput>scons PREFIX=/usr install</userinput></screen>

  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para>
      <command>sed -i "..."</command>: The first command removes the runtime
      path from a shared library and the next two commands disable building and
      installing of the static library.
    </para>    

    <para>
      <option>GSSAPI=/usr</option>: Use this switch if you have installed a
      GSSAPI library and you want <application>serf</application> to use it.
    </para>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Library</segtitle>
      <segtitle>Installed Directory</segtitle>

      <seglistitem>
        <seg>
          None
        </seg>
        <seg>
          libserf-1.so
        </seg>
        <seg>
          /usr/include/serf-1
        </seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="libserf-1">
        <term><filename class="libraryfile">libserf-1.so</filename></term>
        <listitem>
          <para>
            contains the <application>Serf</application> API functions.
          </para>
          <indexterm zone="serf libserf-1">
            <primary sortas="c-libserf-1">libserf-1.so</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
