show-instdir:
@echo $(INSTDIR)/lib
-PP=PYTHONPATH=$(PYTHONPATH)
+#PP=PYTHONPATH=$(PYTHONPATH)
.PHONY: make-version build
make-version:
$(PYTHON) misc/make-version.py "allmydata-tahoe" "src/allmydata/_version.py"
-build: make-version build-zfec build-foolscap build-simplejson
- $(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --prefix="$(INSTDIR)" --install-lib="$(INSTDIR)/lib" --install-scripts="$(INSTDIR)/bin"
+build: make-version
+ $(PP) $(PYTHON) ./setup.py build_ext -i
-build-zfec:
- cd src/zfec && \
- $(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --single-version-externally-managed --prefix="$(INSTDIR)" --record="$(INSTDIR)/zfec_install.log" --install-lib="$(INSTDIR)/lib" --install-scripts="$(INSTDIR)/bin"
+# 'make install' will do the following:
+# build+install tahoe (probably to /usr/lib/pythonN.N/site-packages)
-build-foolscap:
- cd src/foolscap && \
- $(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --prefix="$(INSTDIR)" --record="$(INSTDIR)/foolscap_install.log" --install-lib="$(INSTDIR)/lib" --install-scripts="$(INSTDIR)/bin"
-
-build-simplejson:
- cd src/simplejson && \
- $(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --single-version-externally-managed --prefix="$(INSTDIR)" --record="$(INSTDIR)/simplejson_install.log" --install-lib="$(INSTDIR)/lib" --install-scripts="$(INSTDIR)/bin"
-
-clean-zfec:
- -cd src/zfec && $(PP) $(PYTHON) ./setup.py clean --all
- rm -rf src/zfec/zfec.egg-info
- rm -f src/zfec/setuptools-*.egg
- find src/zfec -name '*.pyc' |xargs rm -f
-
-clean-simplejson:
- -cd src/simplejson && $(PP) $(PYTHON) ./setup.py clean --all
- rm -rf src/simplejson/simplejson.egg-info
- rm -f src/simplejson/setuptools-*.egg
- find src/simplejson -name '*.pyc' |xargs rm -f
-
-clean-foolscap:
- -cd src/foolscap && $(PP) $(PYTHON) ./setup.py clean --all
- find src/foolscap -name '*.pyc' |xargs rm -f
+# 'make install PREFIX=/usr/local/stow/tahoe-N.N' will do the following:
+# build+install tahoe to the given PREFIX
+install: make-version
+ifdef PREFIX
+ mkdir -p $(PREFIX)
+ $(PP) $(PYTHON) ./setup.py install \
+ --single-version-externally-managed \
+ --prefix=$(PREFIX) --record=./tahoe.files
+else
+ $(PP) $(PYTHON) ./setup.py install \
+ --single-version-externally-managed
+endif
# RUNNING
# TESTING
-.PHONY: test-all test test-foolscap test-figleaf figleaf-output
+.PHONY: test-all test test-figleaf figleaf-output
# you can use 'make test TEST=allmydata.test.test_introducer' to run just
# test_introducer. TEST=allmydata.test.test_client.Basic.test_permute works
# too.
-TEST=allmydata zfec
+TEST=allmydata
REPORTER=
-test-all: test-foolscap test
+test-all: test
# use 'make test REPORTER=--reporter=bwverbose' from buildbot, to supress the
# ansi color sequences
test: build
$(PP) $(TRIAL) $(REPORTER) $(TEST)
-# foolscap tests need to be run in their own source dir, so that the paths to
-# the .pyc files are correct (since some of the foolscap tests depend upon
-# stack traces having actual source code in them, and they don't when the
-# tests are run from the 'instdir' that the tahoe makefile uses).
-test-foolscap:
- cd src/foolscap && PYTHONPATH=$(ORIGPYTHONPATH) $(TRIAL) $(REPORTER) foolscap
test-figleaf: build
find $(INSTDIR) -name '*.pyc' |xargs rm
# coverage-html/index.html
.PHONY: upload-figleaf .figleaf.el pyflakes count-lines check-memory
-.PHONY: clean clean-zfec clean-simplejson clean-foolscap
+.PHONY: clean
# 'upload-figleaf' is meant to be run with an UPLOAD_TARGET=host:/dir setting
ifdef UPLOAD_TARGET
find . |grep -v allfiles.tmp |sort >allfiles.tmp.new
diff allfiles.tmp.old allfiles.tmp.new
-clean: clean-zfec clean-foolscap clean-simplejson
+clean:
rm -rf build
rm -f debian
rm -rf instdir
- rm -f `find src/allmydata -name '*.so'`
- rm -f src/allmydata/_version.py
+ rm -f `find src/allmydata -name '*.so' -or -name '*.pyc'`
+ rm -rf allmydata_tahoe.egg-info
-install:
- cd src/zfec && python ./setup.py install && cd ../..
- cd src/foolscap && python ./setup.py install && cd ../..
- cd src/simplejson && python ./setup.py install && cd ../..
- python ./setup.py install
# DEBIAN PACKAGING
$(MAKE) deb-ARCH ARCH=edgy TAHOE_ARCH=feisty
# etch uses the feisty control files for now
deb-etch:
- $(MAKE) deb-ARCH ARCH=etch FOOLSCAP_ARCH=sid TAHOE_ARCH=feisty
+ $(MAKE) deb-ARCH ARCH=etch TAHOE_ARCH=feisty
# we know how to handle the following debian architectures
KNOWN_DEBIAN_ARCHES := sid feisty edgy etch
/bin/true
endif
-ifndef FOOLSCAP_ARCH
-FOOLSCAP_ARCH=$(ARCH)
-endif
ifndef TAHOE_ARCH
TAHOE_ARCH=$(ARCH)
endif
Feedback with details of other builds is greatly appreciated)
-Tahoe uses a few additional libraries which are included in this source
-distribution for convenience. These will be automatically built when you type
-'make', but if you have separate installations of them you may wish to modify
-the makefile to use those in preference to the included versions. They
-include Foolscap (a secure remote-object-invocation library) and zfec
-(erasure coding). There are also pieces of PyCrypto copied into
-allmydata.Crypto, modified to provide a faster CTR-mode API.
-
-
BUILDING:
Just type 'make' in the top-level tahoe directory. This works on Windows
If the desired version of 'python' is not already on your PATH, then type
'make PYTHON=/path/to/your/preferred/python'.
- 'make test-all' runs the unit test suites. (This can take a long time on
+ 'make test' runs the unit test suites. (This can take a long time on
slow computers. There are a lot of tests and some of them do a lot of
public-key cryptography.)
directory to construct a debian package named 'allmydata-tahoe' which you
can then install with dpkg.
- The Python Way:
-
- Just run make install. (This works on cygwin and Windows, too.)
+ The Setuptools Way:
- In case you want to configure the location or other install options you can
- learn how it is done here:
+ Just run 'python setup.py install'. This will compile and install the Tahoe
+ code to a system-specific standard location (somewhere inside /usr/lib/ on
+ unix). It will also acquire and install many of the necessary dependencies
+ in the same place. (The dependency-checking can handle foolscap and zfec,
+ but you are still responsible for ensuring that twisted, nevow, and
+ pyopenssl are installed).
- The Python Way is to execute "setup.py install" for each Python package.
+ To install it to a non-standard location, learn about the
+ "--single-version-externally-managed" flag, and visit
+ http://allmydata.org/trac/tahoe/wiki/Installing .
- You'll need to run "setup.py install" four separate times, one for each of
- the four subpackages (allmydata, foolscap, simplejson, and zfec).
+ The easy_install Way:
- for PACKAGE in zfec foolscap simplejson; do
- cd src/${PACKAGE} && python setup.py install && cd ../..
- done
-
- # the tahoe subpackage's setup.py script is in the root directory
- PACKAGE=tahoe
- python setup.py install
+ Tahoe is registered with the Python Package Index (PyPI), so the
+ 'easy_install' tool can download and install it for you. Just type
+ 'easy_install allmydata-tahoe' from any shell. That will download the most
+ recent Tahoe source tarball, unpack it in a temporary directory, install it
+ to the standard location, then download and install any easy_install-able
+ dependencies (like zfec and foolscap) that you need.
The Running-In-Place Way:
- The Running-In-Place Way is to add a directory to your PYTHONPATH.
-
- To run from a source tree (without installing first) just build it
- (i.e. type 'make'), which will put all the necessary libraries into a local
- directory named "./instdir/lib", which you can then add to your
- PYTHONPATH . It will put executables into "./instdir/bin".
+ You can use Tahoe without installing it. Once you've built Tahoe then you
+ can execute "./bin/allmydata-tahoe".
TESTING THAT IT IS PROPERLY INSTALLED
# http://allmydata.com/.
import re, os.path
-from distutils.core import Extension, setup
+from setuptools import Extension, setup
trove_classifiers=[
"Development Status :: 3 - Alpha",
package_data={ 'allmydata': ['web/*.xhtml', 'web/*.html', 'web/*.css'] },
classifiers=trove_classifiers,
test_suite="allmydata.test",
+ install_requires=["zfec >= 1.0.3",
+ "foolscap >= 0.1.6", "simplejson", "nevow"],
+ dependency_links=["http://allmydata.org/trac/tahoe/wiki/Dependencies",
+ # this form is used when the unpacked source
+ # distribution is copied into our tree:
+ #"file:misc/dependencies/zfec-1.0.2/"
+ # and this form is used when we provide a tarball
+ #"file:misc/dependencies/zfec-1.0.2.tar.gz",
+ # The file: URL can start with either 'misc' or
+ # './misc' to get a relative path.
+ ],
ext_modules=[
Extension("allmydata.Crypto.Cipher.AES",
include_dirs=["src/allmydata/Crypto"],