Installing python code is quite easy using distutils. Here, the code to be installed brings a file setup.py which does all the job. Nevertheless, given the framework, it's essentially declarative. Here is a real example, from wsgitools.
#!/usr/bin/env python __author__ = "Helmut Grohne <helmut@subdivi.de>" from distutils.core import setup setup(name="wsgitools", version="0.2.1", description="a set of tools working with WSGI (see PEP 333)", author="Helmut Grohne", author_email="helmut@subdivi.de", url="http://subdivi.de/~helmut/wsgitools/", platforms = ["any"], license="GPL", keywords=["wsgi", "pep333", "scgi"], classifiers=[ "Development Status :: 4 - Beta", "Environment :: No Input/Output (Daemon)", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Natural Language :: English", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server" ], packages=["wsgitools", "wsgitools.scgi"])
With such a framework, a typical configure, build, install would look as follows.
python setup.py config python setup.py build python setup.py install -c -O1 --prefix=${PREFIX}
Of course, the FreeBSD portsframework, as do many others, supports this form on installation (see bsd.python.mk). So you just write the following.
USE_PYTHON= YES USE_PYDISTUTILS=YES