This file contains recommendations for distro packagers. Please try
to follow them as closely as possible so that fungw is packaged the same
way on all distros. This will ease the life of users and developers who
try to support users.

Before packaging, please make sure you read lang.html - especially
library versions. Some bindings will work only with a specific version
of the scripting lib.

1. For binary distros

1.1. how to package

This applies if your packages are going to deliver precompiled binaries.

There should be a core package, called libfungw. It should contain the
files installed from trunk/libfungw. To get a list:
	cd trunk
	./configure --prefix=/usr
	make
	cd libfungw
	make install DESTDIR=/tmp/foo
	# then explore /tmp/foo

libfungw should not depend on anything (but libc).

There should be a separate package for each binding,
called libfungw-BINDINGNAME, e.g. libfungw-lua. These packages
should contain the .so files _and_ the puplug/* files installed
by the package. (The above method should work in libfungwbind/*).

libfgunw-c does not need a package.

NOTE: the puplug/* files are essential: most applications will dynamic
link these .so files using dlopen() through puplug - it will be the
rare case that the .so files are directly linked with -l. If the puplug/*
files are not in place, the package will be unusable for most apps.

A binding package should depend on libfungw (same version!) and in most
cases on 3rd party script lib (e.g. liblua).

Please do not create bundled packages of selected bindings, rather stick
to one package per directory.

Optionally a metapackage should be created, called fungw, which installs:
	libfungw
	libfungw-fawk
	libfungw-cli

These are the packages that won't have external dependencies so would be
cheap to install. Together they will provide at least 4 scripting languages.

1.2 special case: the "C" binding

The "C" binding is in:
  $(PREFIX)/lib/libfungw_c.* 
  $(PREFIX)/lib/puplug/libfungw_c.* 
  $(PREFIX)/include/libfungwbind/c/fungw_c.h

This module is a special case as it is often used by host applications
as well for glue. This module also does not have any external dependency.

Thus this module should be part of the main fungwpackage, not a separate
module package, adding files in the following packages:

 - libfungw package:
    $(PREFIX)/lib/libfungw_c.so.*
    $(PREFIX)/lib/puplug/fungw_c.so
    $(PREFIX)/lib/puplug/fungw_c.mak
    $(PREFIX)/lib/puplug/fungw_c.pup

 - libfungw-dev(el) package:
    $(PREFIX)/lib/libfungw_c.so
    $(PREFIX)/include/libfungwbind

2. For source distros

This applies if your packages are NOT going to deliver precompiled binaries,
only sources and users of the package will always compile.

The core is always compiled. Bindings can be disabled or enabled one by one.
Please let the user decide which bindings to use. Each binding
depends only on libfungw core and its own 3rd party scripting lib (except 
for fawk and cli which won't have any external dependencies).

Please do NOT make any scripting language mandatory: fungw works perfectly
fine without python or perl or lua or whichever language is the popular one
this week. Many users will prefer to use something less popular because they
happen to know that language. Let the user pick which ones they are going to
use, don't force them to install dependencies for a language they would never
use.

NOTE: ./configure is much smarter than the usual autotools stuff: it can
automatically figure which languages are available on the users system and
will enable bindings accordingly. This doesn't need any distro side
help or scripting, it just happens any time the user runs ./configure.
No need to pass configure parameters to explicitly enable or disable
languages, it's enough to just install the right libs.

It's probably a good idea to use --prefix=/usr for ./configure
