]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
setup: simplify the setup by removing the "tahoe dependencies" fake project
authorZooko O'Whielacronx <zooko@zooko.com>
Tue, 22 Jan 2008 15:35:38 +0000 (08:35 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Tue, 22 Jan 2008 15:35:38 +0000 (08:35 -0700)
Now we use "./setup.py develop" to ensure that changes to our source code are immediately used without requiring a "make" step.  This simplification will hopefully pave the way for easier py2exe and py2app, solving the "Unit tests test the installed version" bug (#145), and perhaps also #164 and #176.

This patch also conditionalizes the use of setuptools_darcs on the absence of a PKG-INFO file, which is part of fixing #263.

Makefile
calcdeps.py [deleted file]
misc/dependencies/setup.py [deleted file]
setup.py

index d71ba68d592b25d83ad5ba6c2c8cca1469807e36..025cd7f1583bdd9cfb864a4d8cb747e61ad1c90e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 
 # this Makefile requires GNU make
 
-default: simple-build
+default: build
 
 PYTHON=python
 PATHSEP=$(shell python -c 'import os ; print os.pathsep')
@@ -46,18 +46,11 @@ endif
 
 TRIAL=PYTHONUNBUFFERED=1 $(TRIALCMD) --rterrors $(REACTOROPT)
 
-build-auto-deps: check-deps
-       mkdir -p "$(SUPPORTLIB)"
-       @echo PYTHONPATH="$(PYTHONPATH)$(PATHSEP)$(SUPPORTLIB)$(PATHSEP)" \
-               $(PYTHON) misc/dependencies/setup.py install --prefix="$(SUPPORT)"
-       @PYTHONPATH="$(PYTHONPATH)$(PATHSEP)$(SUPPORTLIB)$(PATHSEP)" \
-               $(PYTHON) misc/dependencies/setup.py install --prefix="$(SUPPORT)" || \
-               ( echo "Build of Tahoe's bundled, automatically built dependent libraries failed -- please see docs/install.html for instructions." && false )
-
 # The following target is here because I don't know how to tell the buildmaster
-# to start instructing his slaves to "build-auto-deps" instead of instructing
-# them to "build-deps".  --Z
-build-deps: build-auto-deps
+# to start instructing his slaves to "build" instead of instructing them to
+# "build-deps".  --Z
+build-deps:
+       echo "This is done automatically (by delegating to setuptools) now."
 
 EGGSPATH = $(shell $(PYTHON) misc/find-dep-eggs.py)
 show-eggspath:
@@ -103,15 +96,13 @@ make-version:
        $(MAKE) build
        touch .built
 
-simple-build: build-auto-deps build
-
 src/allmydata/_version.py:
        $(MAKE) make-version
 
 build: src/allmydata/_version.py
-       @echo $(PYTHON) ./setup.py build_ext -i $(INCLUDE_DIRS_ARG) $(LIBRARY_DIRS_ARG) && chmod +x bin/tahoe
-       @( $(PYTHON) ./setup.py build_ext -i $(INCLUDE_DIRS_ARG) $(LIBRARY_DIRS_ARG) && chmod +x bin/tahoe ) || \
-               ( echo "Build of Allmydata-Tahoe failed -- please see docs/install.html for instructions." && false )
+       mkdir -p "$(SUPPORTLIB)"
+       PYTHONPATH="$(PYTHONPATH)$(PATHSEP)$(SUPPORTLIB)$(PATHSEP)" \
+               $(PYTHON) ./setup.py develop install --prefix="$(SUPPORT)"
 
 # 'make install' will do the following:
 #   build+install tahoe (probably to /usr/lib/pythonN.N/site-packages)
diff --git a/calcdeps.py b/calcdeps.py
deleted file mode 100644 (file)
index 81fb148..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-import os
-
-miscdeps=os.path.join('misc', 'dependencies')
-dependency_links=[os.path.join(miscdeps, t) for t in os.listdir(miscdeps) if t.endswith(".tar")]
-
-# By adding a web page to the dependency_links we are able to put new packages
-# up there and have them be automatically discovered by existing copies of the
-# tahoe source when that source was built.
-dependency_links.append("http://allmydata.org/trac/tahoe/wiki/Dependencies")
-
-install_requires=["zfec >= 1.3.0",
-                  "foolscap >= 0.2.3",
-                  "simplejson >= 1.7.3",
-                  "pycryptopp >= 0.2.9",
-                  "nevow >= 0.6.0",
-                  "zope.interface >= 3.1.0",
-                  ]
-
-if __name__ == '__main__':
-    print "install_requires:"
-    for ir in install_requires:
-        print " ", ir
-    print
-    print "dependency_links:"
-    for dl in dependency_links:
-        print " ", dl
-    print
diff --git a/misc/dependencies/setup.py b/misc/dependencies/setup.py
deleted file mode 100644 (file)
index ae024d1..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#! /usr/bin/env python
-
-# N.B.: this expects to run from the top of the source tree
-
-import sys, os
-
-miscdeps=os.path.join('misc', 'dependencies')
-
-# Dapper ships with older versions of Twisted (2.2.0) and Nevow (0.6.0), and
-# (unlike newer distributions) they are not installed with .egg meta-data
-# directories. As a result, they are invisible to setuptools. When the
-# 'build-deps' target thus builds Nevow, it will fail unless Twisted-2.4.0 or
-# newer is available, so Dapper users must install a newer Twisted before
-# running 'make build-deps'. In addition, through some not-yet-understood
-# quirk of setuptools, if that newer Twisted is in /usr/local/lib , somehow
-# the build still manages to pick up the old version from /usr/lib . It turns
-# out that importing twisted now, before use_setuptools() is called, causes
-# setuptools to stick with the correct (newer) Twisted. This causes an error
-# if Twisted is not installed before you run 'make build-deps', but having
-# Twisted at this point is a requirement anyways.
-
-import twisted
-
-try:
-    from ez_setup import use_setuptools
-except ImportError:
-    pass
-else:
-    if 'cygwin' in sys.platform.lower():
-        min_version='0.6c6'
-    else:
-        # foolscap uses a module-level os.urandom() during import, which
-        # breaks inside older setuptools' sandboxing. 0.6c4 is the first
-        # version which fixed this problem.
-        min_version='0.6c4'
-    download_base = "file:"+os.path.join('misc', 'dependencies')+os.path.sep
-    use_setuptools(min_version=min_version,
-                   download_base=download_base,
-                   download_delay=0, to_dir=miscdeps)
-
-from setuptools import setup
-
-from calcdeps import install_requires, dependency_links
-
-setup(name='tahoe-deps',
-      version="1",
-      install_requires=install_requires,
-      dependency_links=dependency_links,
-      zip_safe=False
-      )
index 2ca9c88cea9777826f36ac989a60d37be1897aea..044605d4f4c4464eff99b67588b6f5eb31bbc857 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -8,29 +8,21 @@
 # 
 # See the docs/about.html file for licensing information.
 
-import sys, re, os
-
-miscdeps=os.path.join('misc', 'dependencies')
+import os, re, sys
 
 try:
     from ez_setup import use_setuptools
 except ImportError:
     pass
 else:
+    # On cygwin there was a permissions error that was fixed in 0.6c6.  (Also
     # foolscap uses a module-level os.urandom() during import, which breaks
     # inside older setuptools' sandboxing. 0.6c4 is the first version which
-    # fixed this problem.  On cygwin there was a different problem -- a
-    # permissions error -- that was fixed in 0.6c6.
-    min_version='0.6c6'
-    download_base = "file:"+os.path.join('misc', 'dependencies')+os.path.sep
-    use_setuptools(min_version=min_version,
-                   download_base=download_base,
-                   download_delay=0, to_dir=miscdeps)
+    # fixed this problem.)
+    use_setuptools(min_version='0.6c6')
 
 from setuptools import Extension, find_packages, setup
 
-from calcdeps import install_requires, dependency_links
-
 trove_classifiers=[
     "Development Status :: 3 - Alpha", 
     "Environment :: Console",
@@ -66,13 +58,13 @@ trove_classifiers=[
 
 VERSIONFILE = "src/allmydata/_version.py"
 verstr = "unknown"
-VSRE = re.compile("^verstr = ['\"]([^'\"]*)['\"]", re.M)
 try:
     verstrline = open(VERSIONFILE, "rt").read()
 except EnvironmentError:
     pass # Okay, there is no version file.
 else:
-    mo = VSRE.search(verstrline)
+    VSRE = r"^verstr = ['\"]([^'\"]*)['\"]"
+    mo = re.search(VSRE, verstrline, re.M)
     if mo:
         verstr = mo.group(1)
     else:
@@ -80,12 +72,21 @@ else:
         raise RuntimeError("if %s.py exists, it is required to be well-formed" % (VERSIONFILE,))
 
 LONG_DESCRIPTION=\
-"""Welcome to the AllMyData "tahoe" project. This project implements a secure,
-distributed, fault-tolerant storage grid under a Free Software licence.
+"""Welcome to the Tahoe project, a secure, decentralized, fault-tolerant 
+filesystem.  All of the source code is available under a Free Software, Open 
+Source licence.
+
+This filesystem is encrypted and spread over multiple peers in such a way that 
+it remains available even when some of the peers are unavailable, 
+malfunctioning, or malicious."""
 
-The basic idea is that the data in this storage grid is spread over all
-participating nodes, using an algorithm that can recover the data even if a
-majority of the nodes are no longer available."""
+miscdeps=os.path.join(os.getcwd(), 'misc', 'dependencies')
+dependency_links=[os.path.join(miscdeps, t) for t in os.listdir(miscdeps) if t.endswith(".tar")]
+
+# By adding a web page to the dependency_links we are able to put new packages
+# up there and have them be automatically discovered by existing copies of the
+# tahoe source when that source was built.
+dependency_links.append("http://allmydata.org/trac/tahoe/wiki/Dependencies")
 
 setup_requires = []
 
@@ -95,12 +96,20 @@ setup_requires = []
 # http://pypi.python.org/pypi/darcsver
 setup_requires.append('darcsver >= 1.0.0')
 
-# setuptools_darcs is required only if you want to use "./setup.py sdist",
-# "./setup.py bdist", and the other "dist" commands -- it is necessary for them
-# to produce complete distributions, which need to include all files that are
-# under darcs revision control.
+# setuptools_darcs is required to produce complete distributions (such as with
+# "sdist" or "bdist_egg"), unless there is a PKG-INFO file present which shows
+# that this is itself a source distribution.
 # http://pypi.python.org/pypi/setuptools_darcs
-setup_requires.append('setuptools_darcs >= 1.0.5')
+if not os.path.exists('PKG-INFO'):
+    setup_requires.append('setuptools_darcs >= 1.0.5')
+
+install_requires=["zfec >= 1.3.0",
+                  "foolscap >= 0.2.3",
+                  "simplejson >= 1.7.3",
+                  "pycryptopp >= 0.2.9",
+                  "nevow >= 0.6.0",
+                  "zope.interface >= 3.1.0",
+                  ]
 
 setup(name='allmydata-tahoe',
       version=verstr,