README
General
=======

libquvi is a cross-platform library with C API for parsing
adobe flash media properties.

gitweb: <http://repo.or.cz/w/libquvi.git>
Home  : <http://quvi.sourceforge.net/>


Installation
============

Notes
-----

  * This document does not cover how to use GNU Autotools for building
and installing software, instead, refer to the GNU Autotools documentation,
the INSTALL file and the "configure --help" output for more information.

  * If you're not familiar with GNU Autotools and/or installing software
from the source code, you may prefer to install libquvi using a binary
package, instead. You can find libquvi packaged for many distros already.

  * If you have previously installed libquvi from the source code to your
system, the recommended practice is to uninstall the previous installation
first, before you continue with the new one. You would, typically, run
"make uninstall" (as root if necessary) from the same directory you ran
"make install" from.

  * If you are building libquvi from the git repository code, run the
`bootstrap.sh' first. This generates the configuration files. See also
the -h output for any additional info.


Simple install procedure
------------------------

  % ./configure && make

  [ Become root if necessary ]
  % make install

The configure script supports also the following options which are
relevant to the installation:

  --with-scriptsdir=DIR (default:no)

    Look in DIR for libquvi-scripts. This negates the default check for
    the libquvi-scripts package.  DIR is presumed to contain similar
    directory structure to the $prefix/share/libquvi-scripts/ directory
    which is normally created by a typical libquvi-scripts installation.

  --with(out)-manual (default:yes)

    Install the manual page for libquvi.


Requirements
------------

* libquvi-scripts 0.9
  http://quvi.sourceforge.net/

* libcurl 7.21.0
  http://curl.haxx.se/
    $ sudo aptitude install libcurl4-gnutls-dev
       (or libcurl4-openssl-dev)

* GLib 2.24.2
  http://library.gnome.org/devel/glib/
    $ sudo aptitude install libglib2.0-dev

* liblua 5.1
  http://lua.org/
    $ sudo aptitude install liblua5.1-0-dev

      2013-06-04: (Debian, Wheezy)
        At the time of writing this, the lua-socket (listed among the
        libquvi-scripts prerequisites) package does not contain the
        files for Lua 5.2, forcing the installation of liblua 5.1.

* libproxy 0.3.1
  http://code.google.com/p/libproxy/
    $ sudo aptitude install libproxy-dev

* libgcrypt 1.4.5
  http://directory.fsf.org/wiki/Libgcrypt
    $ sudo aptitude install libgcrypt11-dev

* pkg-config for tracking the compilation flags needed for libraries
  http://www.freedesktop.org/software/pkgconfig/

* GNU gettext is recommended
  http://www.gnu.org/software/gettext/

* GNU make is recommended
  http://www.gnu.org/software/make/

* Doxygen for producing the C API reference documentation
  http://www.stack.nl/~dimitri/doxygen/
    (to produce PDF: install LaTeX, e.g. TeX Live or teTeX, refer to
    the Doxygen documentation for more information)

      See also "Documentation".

* asciidoc (a2x) for producing the manual pages
  http://www.methods.co.nz/asciidoc/

      See also "Documentation".


Installation directories
------------------------

The location of the installed files is determined by the --prefix
and the --exec-prefix options given to the configure script.

The .pc file for libquvi is installed in $exec_prefix/lib/pkgconfig to provide
information when compiling packages that depend on libquvi.

If you set PKG_CONFIG_PATH so that it points to this directory, then you
can get the correct include and library flags for compiling a libquvi
application with:

  % pkg-config --cflags libquvi-0.9
  % pkg-config --libs libquvi-0.9


Documentation
=============

To build the documentation suite, you need to have the doxygen/asciidoc
-toolchain.  Because not all users are inclined to install these tools,
the default build target does not build the documentation. See
"make doc" below for more information.

The libquvi documentation is split into:

  - libquvi C API reference documentation
    (generated by doxygen from the libquvi source code comments)

    The dist does NOT contain the libquvi C API reference documentation.

    Installation: The build suite does not currently install the C API
    reference documentation. See "make doc" and "make distdoc" below.

  - libquvi manual pages
    (generated by asciidoc, or a2x to be precise)

    Installation: The libquvi dist tarball contains prebuilt manual
    pages, and are installed by default. See `--with(out)-manual' above.
    See also "make doc" below.

Make targets:

  'make doc'  builds the C API reference documentation from the doxygen
  comments. This produces the 'html' and 'latex' versions of the
  documentation. They are stored under the directory:
    $top_builddir/doc/dox/libquvi-$VERSION

  Additionally, this target generates the manual pages if a2x(1) was
  found by configure. The manual page files can be found at:
    $top_srcdir/doc/man3/ -- input
    $top_builddir/doc/man3/ -- output

  The Doxygen configuration file can be found at:
    $top_srcdir/doc/dox/Doxygen.in -- input
    $top_builddir/doc/dox/Doxygen -- output

      See also "Documentation".

  'make distdoc'  like above but produces tarballs from the documentation.
  These tarballs are stored under the $top_builddir/ directory.

  Alternatively, these targets may be run individually:
    'make distdoc-html'
    'make distdoc-pdf'
    'make distdoc-latex' (depends on distdoc-pdf)

  Note that it is that Doxygen produces the Makefile that will be
  used to generate the PDF file from the LaTeX files.


Tests
=====

The tests use the GLib framework for testing. These tests require
the libquvi-scripts. The tests reside in the tests/ directory.

  'make check'  will run the test programs listed in the TEST_PROGS
  variable in the tests/Makefile.am . 'make check' will fail if any
  of the tests fail. This is identical to running 'make test'.

  'make distcheck'  will fail if any of the tests fail.

    NOTE: Define either
      DISTCHECK_CONFIGURE_FLAGS=--with--scriptsdir=DIR
    or
      PKG_CONFIG_PATH=DIR

    See also the --with-scriptsdir description above
      (under "Simple install procedure").

  'make test-mem'   requires the valgrind(1) program. These tests will
  not automatically.

The tests use the gtester(1) and gtester-report(1) commands to produce
the logs. These programs are part of GLib. The test programs will produce:
  $(top_builddir)/tests/$test_program.html  # gtester-report
  $(top_builddir)/tests/$test_program.xml   # gtester

The 'test-mem' target will, additionally, produce:
  $(top_builddir)/tests/$test_program.vgdump  # valgrind


Tests: Environment variables
----------------------------

The testsuite supports the following environment variables:

  TEST_INTERNET  will enable the tests that require an Internet connection.

  TEST_VERBOSE  will enable verbose libcurl(3) output.

  TEST_SKIP  will disable the specified tests. This list is a comma-separated
  list of test names. The comma-separated values are treated as regular
  expression patterns.

Example:
  % env TEST_VERBOSE=1 TEST_SKIP=test_quvi,test_resolve_  make test


Tests: Scripts
--------------

The tests/ directory contains:

  'find_tests.sh'   will dump a list of available tests.

  'run_tests.sh'  is a convenience script that wraps many of the
  testsuite features making them available via GUI. Note that
  this script requires zenity(1).

For more info, run these scripts with the '-h' switch.


Tests: Notes
------------

  * The test 'test/supports' uses the HTTP proxy address
    "http://localhost:12345" to simulate a network access error.

    If you have something listening to that port, you may want to edit
    test/supports.c to use some other port.

  * Apart from the above, the testsuite does not force any specific
    proxy address with the Internet requiring tests.

    If you need to use a proxy, refer to the curl(1) manual page for
    a complete list of the supported environment variables (e.g. http_proxy).

      libquvi uses libcurl to connect to the internet.


How to report bugs
==================

Please see: http://quvi.sourceforge.net/#bugs


Patches
=======

Please see: http://quvi.sourceforge.net/contrib/


License
=======

libquvi is Free Software licensed under the GNU Affero GPLv3+