# Simple makefile to rapidly deploy IPython with all its dependencies.

# Configuration section.  The version numbers and paths declared here may
# change with each release.

# IPython version
IPYTHON_VER=0.9.1

# Declare here version numbers of all the dependencies
PYOPENSSL_VER=0.6
ZOPE_INTERFACE_VER=3.4.1
TWISTED_VER=8.1.0
FOOLSCAP_VER=0.3.1
NOSE_VER=0.10.3

# Repository URLs for all packages.  Make sure these are correct for each
# release, since projects may change paths!
IPYTHON_REPO=http://ipython.scipy.org/dist
PYOPENSSL_REPO=http://downloads.sourceforge.net/pyopenssl
ZOPE_INTERFACE_REPO=http://pypi.python.org/packages/source/z/zope.interface
TWISTED_REPO=http://tmrc.mit.edu/mirror/twisted/Twisted/8.1
FOOLSCAP_REPO=http://foolscap.lothar.com/releases
NOSE_REPO=http://somethingaboutorange.com/mrl/projects/nose

#-----------------------------------------------------------------------------
# Main code begins.  There shouldn't be much to change here with each release.
#

# Hand-written files to ship in self-contained tarball
SOURCES=pkginstall pkginstall.cfg Makefile README.txt README.html

# Versions of tarballs we ship
IPYTHON=ipython-$(IPYTHON_VER).tar.gz
IP_ALLDEPS=ipython-alldeps-$(IPYTHON_VER)

PYOPENSSL=pyOpenSSL-$(PYOPENSSL_VER).tar.gz
ZOPE_INTERFACE=zope.interface-$(ZOPE_INTERFACE_VER).tar.gz
NOSE=nose-$(NOSE_VER).tar.gz
TWISTED=Twisted-$(TWISTED_VER).tar.bz2
FOOLSCAP=foolscap-$(FOOLSCAP_VER).tar.gz

TARBALLS=$(PYOPENSSL) $(ZOPE_INTERFACE) $(TWISTED) $(FOOLSCAP) \
$(NOSE) $(IPYTHON)

# URLs for downloads

#-----------------------------------------------------------------------------
# Target declaration
#

# Targets to install, in correct dependency order
install: pyopenssl zope.interface twisted foolscap nose ipython
	echo
	echo "IPython Installation finished."
	echo "You can now run the ipython test suite by running:"
	echo "iptest"
	echo "If all tests pass, you can delete this entire directory."
	echo

# Download targets
download: $(TARBALLS)

$(IPYTHON):
	wget $(IPYTHON_REPO)/$(IPYTHON)

$(PYOPENSSL):
	wget $(PYOPENSSL_REPO)/$(PYOPENSSL)

$(ZOPE_INTERFACE):
	wget $(ZOPE_INTERFACE_REPO)/$(ZOPE_INTERFACE)

$(TWISTED):
	wget $(TWISTED_REPO)/$(TWISTED)

$(FOOLSCAP):
	wget $(FOOLSCAP_REPO)/$(FOOLSCAP)

$(NOSE):
	wget $(NOSE_REPO)/$(NOSE)


# The calls to pkginstall must use the actual Python package name
nose: $(NOSE)
	./pkginstall nose

zope.interface: $(ZOPE_INTERFACE)
	./pkginstall zope.interface zope

pyopenssl: $(PYOPENSSL)
	./pkginstall pyOpenSSL OpenSSL

twisted: $(TWISTED)
	./pkginstall Twisted

foolscap: $(FOOLSCAP)
	./pkginstall foolscap

ipython: $(IPYTHON)
	./pkginstall ipython IPython

# Distribution targets
dist: $(IP_ALLDEPS).tar

$(IP_ALLDEPS).tar: download readme
	-mkdir $(IP_ALLDEPS)
	-ln $(SOURCES) $(TARBALLS) $(IP_ALLDEPS)/
	tar cf $(IP_ALLDEPS).tar $(IP_ALLDEPS)
	rm -rf $(IP_ALLDEPS)

readme: README.html

README.html: README.txt
	rst2html README.txt > README.html

# Auxiliary targets
upload: dist
	rsync -e ssh -av README.html $(IP_ALLDEPS).tar \
	ipython@ipython.scipy.org:www/dist/alldeps

clean:
	ls -p | grep /$ | xargs rm -rf
	rm -f $(IP_ALLDEPS)* *~

distclean: clean
	rm -f $(TARBALLS)
	rm README.html

info:
	echo "TARBALLS"
	echo $(TARBALLS)