2007-07-11 20:39:55 +00:00
2008-04-10 23:47:52 +00:00
# NOTE: this Makefile requires GNU make
2007-07-11 20:39:55 +00:00
2008-01-22 15:35:38 +00:00
default : build
2007-01-07 20:09:37 +00:00
2007-02-01 02:12:33 +00:00
PYTHON = python
2008-09-12 05:09:19 +00:00
export PYTHON
2007-04-04 18:18:38 +00:00
2008-09-12 01:03:21 +00:00
# setup.py will extend sys.path to include our support/lib/... directory
# itself. It will also create it in the beginning of the 'develop' command.
2007-11-14 03:16:59 +00:00
2008-09-12 01:03:21 +00:00
PP = $( shell $( PYTHON) setup.py -q show_pythonpath)
2008-09-12 04:45:08 +00:00
RUNPP = $( PYTHON) setup.py run_with_pythonpath
2008-01-23 00:42:54 +00:00
2007-09-13 01:56:33 +00:00
.PHONY : make -version build
2007-12-21 01:17:55 +00:00
2008-01-01 06:28:31 +00:00
# The 'darcsver' setup.py command comes in the 'darcsver' package:
# http://pypi.python.org/pypi/darcsver It is necessary only if you want to
2007-12-21 01:17:55 +00:00
# automatically produce a new _version.py file from the current darcs history.
2007-09-13 01:56:33 +00:00
make-version :
2008-09-12 01:03:21 +00:00
$( PYTHON) ./setup.py darcsver --count-all-patches
2007-09-13 01:56:33 +00:00
2008-01-03 21:33:33 +00:00
# We want src/allmydata/_version.py to be up-to-date, but it's a fairly
# expensive operation (about 6 seconds on a just-before-0.7.0 tree, probably
# because of the 332 patches since the last tag), and we've removed the need
# for an explicit 'build' step by removing the C code from src/allmydata and
# by running everything in place. It would be neat to do:
#
#src/allmydata/_version.py: _darcs/patches
# $(MAKE) make-version
#
# since that would update the embedded version string each time new darcs
2009-12-06 18:48:35 +00:00
# patches were pulled, but without an obligatory 'build' step this rule
# wouldn't be run frequently enough anyways.
2008-01-03 21:33:33 +00:00
#
# So instead, I'll just make sure that we update the version at least once
2008-01-05 00:25:46 +00:00
# when we first start using the tree, and again whenever an explicit
# 'make-version' is run, since then at least the developer has some means to
# update things. It would be nice if 'make clean' deleted any
# automatically-generated _version.py too, so that 'make clean; make all'
# could be useable as a "what the heck is going on, get me back to a clean
# state', but we need 'make clean' to work on non-darcs trees without
# destroying useful information.
2008-01-03 21:33:33 +00:00
2007-09-19 19:28:30 +00:00
.built :
$( MAKE) build
2008-01-05 00:25:46 +00:00
src/allmydata/_version.py :
2008-01-03 21:33:33 +00:00
$( MAKE) make-version
2008-01-05 00:25:46 +00:00
2008-06-09 23:06:29 +00:00
# c.f. ticket #455, there is a problem in the intersection of setuptools,
# twisted's setup.py, and nevow's setup.py . A Tahoe build, to satisfy its
# dependencies, may try to build both Twisted and Nevow. If both of these
# occur during the same invocation of 'setup.py develop', then the Nevow
# build will fail with an "ImportError: No module named components". Running
# the build a second time will succeed. Until there is a new version of
# setuptools which properly sandboxes sys.modules (or a new version of nevow
# which doesn't import twisted during its build, or a new version of twisted
# which doesn't import itself during its build), we just build tahoe twice
2008-09-17 05:36:43 +00:00
# and ignore the errors from the first pass. Updated 16-Sep-2008: now we need
# three invocations.
2008-06-09 23:06:29 +00:00
2008-01-05 00:25:46 +00:00
build : src /allmydata /_version .py
2009-01-29 20:59:52 +00:00
$( PYTHON) setup.py build
2008-01-30 08:32:57 +00:00
touch .built
2007-09-12 23:48:45 +00:00
2007-09-12 23:02:53 +00:00
# 'make install' will do the following:
# build+install tahoe (probably to /usr/lib/pythonN.N/site-packages)
2007-09-15 02:23:55 +00:00
# 'make install PREFIX=/usr/local/stow/tahoe-N.N' will do the same, but to
# a different location
2007-01-30 21:57:59 +00:00
2008-01-05 00:25:46 +00:00
install : src /allmydata /_version .py
2007-09-12 23:02:53 +00:00
i f d e f P R E F I X
mkdir -p $( PREFIX)
2008-09-12 01:03:21 +00:00
$( PYTHON) ./setup.py install --single-version-externally-managed \
2007-09-12 23:02:53 +00:00
--prefix= $( PREFIX) --record= ./tahoe.files
e l s e
2008-09-12 01:03:21 +00:00
$( PYTHON) ./setup.py install --single-version-externally-managed
2007-09-12 23:02:53 +00:00
e n d i f
2007-02-01 23:07:07 +00:00
2007-01-17 04:02:00 +00:00
2007-04-27 03:16:48 +00:00
# TESTING
2010-01-28 17:39:04 +00:00
.PHONY : signal -error -deps test test -coverage quicktest quicktest -coverage
.PHONY : coverage -output get -old -coverage -coverage coverage -delta -output
2007-09-15 22:17:55 +00:00
2007-09-21 20:40:28 +00:00
signal-error-deps :
2007-11-20 07:07:44 +00:00
@echo
@echo
2008-04-14 13:52:21 +00:00
@echo "ERROR: Not all of Tahoe's dependencies are in place. Please see docs/install.html for help on installing dependencies."
2007-11-20 07:07:44 +00:00
@echo
@echo
2007-09-19 23:23:55 +00:00
exit 1
2008-01-23 00:24:33 +00:00
check-auto-deps :
2008-09-12 03:59:04 +00:00
$( PYTHON) setup.py -q check_auto_deps || $( MAKE) signal-error-deps
2008-01-23 00:24:33 +00:00
2007-09-15 22:17:55 +00:00
.checked-deps :
2008-06-05 20:55:05 +00:00
$( MAKE) check-auto-deps
2007-09-15 22:17:55 +00:00
touch .checked-deps
2006-12-01 02:51:19 +00:00
2007-08-09 22:26:27 +00:00
# you can use 'make test TEST=allmydata.test.test_introducer' to run just
# test_introducer. TEST=allmydata.test.test_client.Basic.test_permute works
2007-05-01 18:08:39 +00:00
# too.
2007-09-12 23:02:53 +00:00
TEST = allmydata
2007-01-04 04:38:29 +00:00
2007-12-13 02:34:08 +00:00
# use 'make test TRIALARGS=--reporter=bwverbose' from buildbot, to
2007-09-14 01:20:35 +00:00
# suppress the ansi color sequences
2007-05-04 04:12:15 +00:00
2008-04-24 16:57:04 +00:00
test : build src /allmydata /_version .py
2009-01-30 11:25:36 +00:00
$( PYTHON) setup.py test $( TRIALARGS) -s $( TEST)
2007-05-01 06:02:45 +00:00
2008-10-19 13:25:18 +00:00
fuse-test : .built .checked -deps
$( RUNPP) -d contrib/fuse -p -c runtests.py
2010-01-28 17:39:04 +00:00
test-coverage : build src /allmydata /_version .py
rm -f .coverage
$( PYTHON) setup.py trial --reporter= bwverbose-coverage -s $( TEST)
2006-12-06 22:26:12 +00:00
2009-04-14 20:14:00 +00:00
quicktest :
2010-06-07 05:16:18 +00:00
$( PYTHON) misc/build_helpers/run-with-pythonpath.py trial $( TRIALARGS) $( TEST)
2009-04-14 20:14:00 +00:00
2010-01-28 17:39:04 +00:00
# code-coverage: install the "coverage" package from PyPI, do "make
# quicktest-coverage" to do a unit test run with coverage-gathering enabled,
# then use "make coverate-output-text" for a brief report, or "make
# coverage-output" for a pretty HTML report. Also see "make .coverage.el" and
2010-08-04 07:11:31 +00:00
# misc/coding_tools/coverage.el for emacs integration.
2008-04-24 18:30:38 +00:00
2010-01-28 17:39:04 +00:00
quicktest-coverage :
rm -f .coverage
2010-06-07 05:16:18 +00:00
$( PYTHON) misc/build_helpers/run-with-pythonpath.py trial --reporter= bwverbose-coverage $( TEST)
2010-01-28 17:39:04 +00:00
# on my laptop, "quicktest" takes 239s, "quicktest-coverage" takes 304s
2010-11-25 20:38:32 +00:00
# --include appeared in coverage-3.4
COVERAGE_OMIT = --include '$(CURDIR)/src/allmydata/*' --omit '$(CURDIR)/src/allmydata/test/*'
2010-01-28 17:39:04 +00:00
coverage-output :
rm -rf coverage-html
2010-08-04 07:11:31 +00:00
coverage html -i -d coverage-html $( COVERAGE_OMIT)
2010-01-28 17:39:04 +00:00
cp .coverage coverage-html/coverage.data
2007-01-04 05:06:51 +00:00
@echo "now point your browser at coverage-html/index.html"
2007-05-01 18:08:39 +00:00
2010-01-28 17:39:04 +00:00
## use these two targets to compare this coverage against the previous run.
## The deltas only work if the old test was run in the same directory, since
## it compares absolute filenames.
#get-old-figleaf-coverage:
# wget --progress=dot -O old.figleaf http://allmydata.org/tahoe-figleaf/current/figleaf.pickle
#
#figleaf-delta-output:
# $(RUNPP) -p -c "misc/figleaf2html -d coverage-html -r src -x misc/figleaf.excludes -o old.figleaf"
# cp .figleaf coverage-html/figleaf.pickle
# @echo "now point your browser at coverage-html/index.html"
2006-12-07 02:24:02 +00:00
2010-01-28 17:39:04 +00:00
.PHONY : upload -coverage .coverage .el pyflakes count -lines
2009-02-13 08:23:41 +00:00
.PHONY : check -memory check -memory -once check -speed check -grid
.PHONY : repl test -darcs -boringfile test -clean clean find -trailing -spaces
2007-05-01 18:08:39 +00:00
2010-01-28 17:39:04 +00:00
.coverage.el : .coverage
2010-08-04 07:11:31 +00:00
$( PYTHON) misc/coding_tools/coverage2el.py
2010-01-28 17:39:04 +00:00
# 'upload-coverage' is meant to be run with an UPLOAD_TARGET=host:/dir setting
2007-03-08 22:28:13 +00:00
i f d e f U P L O A D _ T A R G E T
2007-07-02 22:10:20 +00:00
i f n d e f U P L O A D _ H O S T
$( error UPLOAD_HOST must be set when using UPLOAD_TARGET )
e n d i f
i f n d e f C O V E R A G E D I R
$( error COVERAGEDIR must be set when using UPLOAD_TARGET )
e n d i f
2010-01-28 17:39:04 +00:00
upload-coverage :
2007-03-08 22:28:13 +00:00
rsync -a coverage-html/ $( UPLOAD_TARGET)
2010-01-28 17:39:04 +00:00
ssh $( UPLOAD_HOST) make update-tahoe-coverage COVERAGEDIR = $( COVERAGEDIR)
2007-03-08 22:28:13 +00:00
e l s e
2010-01-28 17:39:04 +00:00
upload-coverage :
2007-03-08 22:28:13 +00:00
echo "this target is meant to be run with UPLOAD_TARGET=host:/path/"
2008-01-11 21:43:31 +00:00
false
2007-03-08 22:28:13 +00:00
e n d i f
2007-01-04 08:25:36 +00:00
2006-12-14 11:05:22 +00:00
pyflakes :
2008-01-10 03:23:12 +00:00
$( PYTHON) -OOu ` which pyflakes` src/allmydata | sort | uniq
2010-08-04 07:10:42 +00:00
check-umids :
$( PYTHON) misc/coding_tools/check-umids.py ` find src/allmydata -name '*.py' `
2006-12-14 11:05:22 +00:00
2007-01-22 08:17:39 +00:00
count-lines :
2007-01-31 01:10:37 +00:00
@echo -n "files: "
@find src -name '*.py' | grep -v /build/ | wc --lines
2007-01-22 08:17:39 +00:00
@echo -n "lines: "
2007-01-31 01:10:37 +00:00
@cat ` find src -name '*.py' | grep -v /build/` | wc --lines
2007-01-22 08:17:39 +00:00
@echo -n "TODO: "
2007-01-31 01:10:37 +00:00
@grep TODO ` find src -name '*.py' | grep -v /build/` | wc --lines
2007-01-22 08:17:39 +00:00
2007-09-19 19:28:30 +00:00
check-memory : .built
2007-09-15 20:53:36 +00:00
rm -rf _test_memory
2008-09-12 04:45:08 +00:00
$( RUNPP) -p -c "src/allmydata/test/check_memory.py upload"
$( RUNPP) -p -c "src/allmydata/test/check_memory.py upload-self"
$( RUNPP) -p -c "src/allmydata/test/check_memory.py upload-POST"
$( RUNPP) -p -c "src/allmydata/test/check_memory.py download"
$( RUNPP) -p -c "src/allmydata/test/check_memory.py download-GET"
$( RUNPP) -p -c "src/allmydata/test/check_memory.py download-GET-slow"
$( RUNPP) -p -c "src/allmydata/test/check_memory.py receive"
2007-09-15 20:53:36 +00:00
2007-09-19 19:29:16 +00:00
check-memory-once : .built
rm -rf _test_memory
2008-09-12 04:45:08 +00:00
$( RUNPP) -p -c " src/allmydata/test/check_memory.py $( MODE) "
2007-09-19 19:29:16 +00:00
2008-06-18 22:49:30 +00:00
# The check-speed target uses a pre-established client node to run a canned
# set of performance tests against a test network that is also
# pre-established (probably on a remote machine). Provide it with the path to
# a local directory where this client node has been created (and populated
# with the necessary FURLs of the test network). This target will start that
# client with the current code and then run the tests. Afterwards it will
# stop the client.
2007-09-21 02:03:16 +00:00
#
# The 'sleep 5' is in there to give the new client a chance to connect to its
# storageservers, since check_speed.py has no good way of doing that itself.
2007-09-20 01:27:47 +00:00
check-speed : .built
if [ -z '$(TESTCLIENTDIR)' ] ; then exit 1; fi
2007-12-14 09:04:25 +00:00
@echo "stopping any leftover client code"
-$( PYTHON) bin/tahoe stop $( TESTCLIENTDIR)
2007-10-11 10:38:24 +00:00
$( PYTHON) bin/tahoe start $( TESTCLIENTDIR)
2007-09-21 02:03:16 +00:00
sleep 5
2007-09-20 01:27:47 +00:00
$( PYTHON) src/allmydata/test/check_speed.py $( TESTCLIENTDIR)
2007-10-11 10:38:24 +00:00
$( PYTHON) bin/tahoe stop $( TESTCLIENTDIR)
2007-03-09 01:12:24 +00:00
2008-06-18 20:15:55 +00:00
# The check-grid target also uses a pre-established client node, along with a
# long-term directory that contains some well-known files. See the docstring
# in src/allmydata/test/check_grid.py to see how to set this up.
2008-06-18 19:57:47 +00:00
check-grid : .built
if [ -z '$(TESTCLIENTDIR)' ] ; then exit 1; fi
2008-06-19 19:39:52 +00:00
$( PYTHON) src/allmydata/test/check_grid.py $( TESTCLIENTDIR) bin/tahoe
2008-06-18 19:57:47 +00:00
2009-11-11 22:25:42 +00:00
bench-dirnode : .built
$( RUNPP) -p -c src/allmydata/test/bench_dirnode.py
2007-11-03 05:32:55 +00:00
# 'make repl' is a simple-to-type command to get a Python interpreter loop
# from which you can type 'import allmydata'
repl :
2008-09-12 04:45:08 +00:00
$( RUNPP) -p
2007-11-03 05:32:55 +00:00
2007-05-24 00:51:28 +00:00
test-darcs-boringfile :
2007-05-24 00:57:48 +00:00
$( MAKE)
2010-06-07 05:16:18 +00:00
$( PYTHON) misc/build_helpers/test-darcs-boringfile.py
2007-05-24 00:51:28 +00:00
2007-05-24 00:57:48 +00:00
test-clean :
2010-09-06 05:57:14 +00:00
find . | grep -vEe "_darcs|allfiles.tmp|src/allmydata/_(version|appname).py" | sort >allfiles.tmp.old
2007-05-24 00:57:48 +00:00
$( MAKE)
$( MAKE) clean
2010-09-06 05:57:14 +00:00
find . | grep -vEe "_darcs|allfiles.tmp|src/allmydata/_(version|appname).py" | sort >allfiles.tmp.new
2007-05-24 00:57:48 +00:00
diff allfiles.tmp.old allfiles.tmp.new
2007-05-24 00:51:28 +00:00
2007-09-12 23:02:53 +00:00
clean :
2007-09-19 19:28:30 +00:00
rm -rf build _trial_temp _test_memory .checked-deps .built
2010-05-23 20:52:28 +00:00
rm -f ` find src *.egg -name '*.so' -or -name '*.pyc' `
2009-02-12 01:04:34 +00:00
rm -rf src/allmydata_tahoe.egg-info
2007-09-15 22:17:55 +00:00
rm -rf support dist
2010-06-04 05:12:50 +00:00
rm -rf ` ls -d *.egg | grep -vEe"setuptools-|setuptools_trial-|darcsver-" `
2010-05-23 20:52:28 +00:00
rm -rf *.pyc
2008-01-11 03:24:44 +00:00
rm -rf misc/dependencies/build misc/dependencies/temp
rm -rf misc/dependencies/tahoe_deps.egg-info
2009-02-03 00:03:07 +00:00
rm -f bin/tahoe bin/tahoe-script.py
2006-12-14 10:59:51 +00:00
2007-11-06 04:32:08 +00:00
find-trailing-spaces :
2010-06-07 05:16:18 +00:00
$( PYTHON) misc/coding_tools/find-trailing-spaces.py -r src
2007-07-31 23:55:45 +00:00
2008-09-17 01:37:02 +00:00
# The test-desert-island target grabs the tahoe-deps tarball, unpacks it,
# does a build, then asserts that the build did not try to download anything
# as it ran. Invoke this on a new tree, or after a 'clean', to make sure the
# support/lib/ directory is gone.
2008-09-17 20:01:19 +00:00
fetch-and-unpack-deps :
2008-09-17 20:44:52 +00:00
test -f tahoe-deps.tar.gz || wget http://allmydata.org/source/tahoe/deps/tahoe-deps.tar.gz
2008-09-17 05:22:04 +00:00
rm -rf tahoe-deps
2010-05-04 09:06:28 +00:00
tar xzf tahoe-deps.tar.gz
2008-09-17 20:01:19 +00:00
test-desert-island :
$( MAKE) fetch-and-unpack-deps
2008-09-17 01:37:02 +00:00
$( MAKE) 2>& 1 | tee make.out
2010-06-07 05:16:18 +00:00
$( PYTHON) misc/build_helpers/check-build.py make.out no-downloads
2008-09-17 01:37:02 +00:00
2008-01-31 03:45:14 +00:00
# TARBALL GENERATION
2008-02-01 02:00:40 +00:00
.PHONY : tarballs upload -tarballs
2008-01-31 03:45:14 +00:00
tarballs :
2008-01-31 20:52:48 +00:00
$( MAKE) make-version
$( PYTHON) setup.py sdist --formats= bztar,gztar,zip
2008-09-17 20:01:19 +00:00
$( PYTHON) setup.py sdist --sumo --formats= bztar,gztar,zip
2008-02-01 02:00:40 +00:00
upload-tarballs :
2010-11-28 23:35:12 +00:00
@if [ " X ${ BB_BRANCH } " = = "X" ] ; then for f in dist/allmydata-tahoe-*; do flappclient --furlfile ~/.tahoe-tarball-upload.furl upload-file $$ f; done ; else echo not uploading tarballs because this is not trunk but is branch \" ${ BB_BRANCH } \" ; fi
2007-07-31 23:55:45 +00:00
2007-05-01 18:08:39 +00:00
# DEBIAN PACKAGING
2006-12-05 09:00:44 +00:00
2010-06-07 05:16:18 +00:00
VER = $( shell $( PYTHON) misc/build_helpers/get-version.py)
2007-01-06 03:06:51 +00:00
DEBCOMMENTS = "'make deb' build"
2007-05-04 03:14:07 +00:00
show-version :
2007-05-01 20:23:15 +00:00
@echo $( VER)
2008-09-12 04:45:08 +00:00
show-pp :
@echo $( PP)
2007-01-06 03:06:51 +00:00
2007-07-11 19:45:00 +00:00
.PHONY : setup -deb deb -ARCH is -known -debian -arch
2009-06-18 05:05:02 +00:00
.PHONY : deb -etch deb -lenny deb -sid
.PHONY : deb -edgy deb -feisty deb -gutsy deb -hardy deb -intrepid deb -jaunty
2007-07-11 19:45:00 +00:00
2010-06-07 05:16:18 +00:00
# we use misc/debian_helpers/$TAHOE_ARCH/debian
2009-07-03 07:28:04 +00:00
deb-etch : # py2.4
$( MAKE) deb-ARCH ARCH = etch TAHOE_ARCH = etch
deb-lenny : # py2.5
$( MAKE) deb-ARCH ARCH = lenny TAHOE_ARCH = lenny
2007-07-11 19:45:00 +00:00
deb-sid :
2009-07-03 07:28:04 +00:00
$( MAKE) deb-ARCH ARCH = sid TAHOE_ARCH = sid
2009-06-18 05:05:02 +00:00
2009-07-03 07:28:04 +00:00
deb-edgy : # py2.4
$( MAKE) deb-ARCH ARCH = edgy TAHOE_ARCH = etch
deb-feisty : # py2.5
$( MAKE) deb-ARCH ARCH = feisty TAHOE_ARCH = lenny
deb-gutsy : # py2.5
$( MAKE) deb-ARCH ARCH = gutsy TAHOE_ARCH = lenny
deb-hardy : # py2.5
$( MAKE) deb-ARCH ARCH = hardy TAHOE_ARCH = lenny
deb-intrepid : # py2.5
$( MAKE) deb-ARCH ARCH = intrepid TAHOE_ARCH = lenny
deb-jaunty : # py2.6
$( MAKE) deb-ARCH ARCH = jaunty TAHOE_ARCH = lenny
2009-03-05 23:00:21 +00:00
2007-07-11 19:45:00 +00:00
# we know how to handle the following debian architectures
2009-06-18 05:05:02 +00:00
KNOWN_DEBIAN_ARCHES := etch lenny sid edgy feisty gutsy hardy intrepid jaunty
2007-07-11 19:45:00 +00:00
i f e q ( $( findstring x -$ ( ARCH ) -x ,$ ( foreach arch ,$ ( KNOWN_DEBIAN_ARCHES ) ,"x -$ ( arch ) -x ") ) , )
is-known-debian-arch :
@echo "ARCH must be set when using setup-deb or deb-ARCH"
@echo "I know how to handle:" $( KNOWN_DEBIAN_ARCHES)
2007-12-22 18:50:10 +00:00
false
2007-07-11 19:45:00 +00:00
e l s e
is-known-debian-arch :
2007-12-22 18:50:10 +00:00
true
2007-07-11 19:45:00 +00:00
e n d i f
2007-04-04 23:39:25 +00:00
2007-07-11 19:45:00 +00:00
i f n d e f T A H O E _ A R C H
TAHOE_ARCH = $( ARCH)
e n d i f
2007-03-29 21:36:15 +00:00
2007-07-11 19:45:00 +00:00
setup-deb : is -known -debian -arch
2007-05-04 07:07:06 +00:00
rm -f debian
2010-06-07 05:16:18 +00:00
ln -s misc/debian_helpers/$( TAHOE_ARCH) /debian debian
2007-07-11 19:45:00 +00:00
chmod +x debian/rules
2007-05-01 19:41:35 +00:00
2009-03-05 23:32:04 +00:00
# etch (current debian stable) has python-simplejson-1.3, which doesn't
2007-09-14 10:28:56 +00:00
# support indent=
2007-07-11 21:00:47 +00:00
# sid (debian unstable) currently has python-simplejson 1.7.1
2007-09-14 10:28:56 +00:00
# edgy has 1.3, which doesn't support indent=
# feisty has 1.4, which supports indent= but emits a deprecation warning
2007-07-11 21:00:47 +00:00
# gutsy has 1.7.1
2007-09-14 10:28:56 +00:00
#
# we need 1.4 or newer
2007-07-11 21:00:47 +00:00
deb-ARCH : is -known -debian -arch setup -deb
fakeroot debian/rules binary
2007-10-11 21:37:29 +00:00
@echo
@echo "The newly built .deb packages are in the parent directory from here."
2007-05-01 19:41:35 +00:00
2007-07-11 19:45:00 +00:00
.PHONY : increment -deb -version
2009-06-18 05:05:02 +00:00
.PHONY : deb -etch -head deb -lenny -head deb -sid -head
.PHONY : deb -edgy -head deb -feisty -head deb -gutsy -head deb -hardy -head deb -intrepid -head deb -jaunty -head
2007-01-06 03:06:51 +00:00
2007-07-11 19:45:00 +00:00
# The buildbot runs the following targets after each change, to produce
2007-08-21 21:01:01 +00:00
# up-to-date tahoe .debs. These steps do not create .debs for anything else.
2007-05-04 07:07:06 +00:00
increment-deb-version : make -version
2007-05-04 03:14:07 +00:00
debchange --newversion $( VER) $( DEBCOMMENTS)
2009-06-18 05:05:02 +00:00
deb-etch-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = etch TAHOE_ARCH = etch
2009-06-18 05:05:02 +00:00
$( MAKE) increment-deb-version
fakeroot debian/rules binary
deb-lenny-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = lenny TAHOE_ARCH = lenny
2009-06-18 05:05:02 +00:00
$( MAKE) increment-deb-version
fakeroot debian/rules binary
2007-07-11 19:45:00 +00:00
deb-sid-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = sid TAHOE_ARCH = lenny
2007-07-11 19:45:00 +00:00
$( MAKE) increment-deb-version
2006-12-05 09:00:44 +00:00
fakeroot debian/rules binary
2009-06-18 05:05:02 +00:00
2007-07-11 19:45:00 +00:00
deb-edgy-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = edgy TAHOE_ARCH = etch
2007-07-11 19:45:00 +00:00
$( MAKE) increment-deb-version
2007-04-04 23:39:25 +00:00
fakeroot debian/rules binary
2007-07-11 19:45:00 +00:00
deb-feisty-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = feisty TAHOE_ARCH = lenny
2007-07-11 19:45:00 +00:00
$( MAKE) increment-deb-version
2007-03-29 21:36:15 +00:00
fakeroot debian/rules binary
2007-10-17 20:35:11 +00:00
deb-gutsy-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = gutsy TAHOE_ARCH = lenny
2007-10-17 20:35:11 +00:00
$( MAKE) increment-deb-version
fakeroot debian/rules binary
2008-06-17 22:26:18 +00:00
deb-hardy-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = hardy TAHOE_ARCH = lenny
2008-06-17 22:26:18 +00:00
$( MAKE) increment-deb-version
fakeroot debian/rules binary
2009-03-05 23:00:21 +00:00
deb-intrepid-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = intrepid TAHOE_ARCH = lenny
2009-03-05 23:00:21 +00:00
$( MAKE) increment-deb-version
fakeroot debian/rules binary
2009-06-18 05:05:02 +00:00
deb-jaunty-head :
2009-07-03 07:28:04 +00:00
$( MAKE) setup-deb ARCH = jaunty TAHOE_ARCH = lenny
2009-03-06 20:10:57 +00:00
$( MAKE) increment-deb-version
fakeroot debian/rules binary
2009-03-05 23:00:21 +00:00
2009-08-18 01:40:52 +00:00
# new experimental debian-packaging-building target
.PHONY : EXPERIMENTAL -deb
EXPERIMENTAL-deb : is -known -debian -arch
2010-06-07 05:16:18 +00:00
$( PYTHON) misc/build_helpers/build-deb.py $( ARCH)
2009-08-18 01:40:52 +00:00
2008-01-10 02:06:28 +00:00
# These targets provide for windows native builds
2008-01-22 20:47:48 +00:00
.PHONY : windows -exe windows -installer windows -installer -upload
2008-01-15 00:53:54 +00:00
2008-01-22 20:47:48 +00:00
windows-exe : .built
2008-09-12 04:45:08 +00:00
$( RUNPP) -c " $( MAKE) -C windows windows-exe "
2008-01-10 02:06:28 +00:00
2008-09-12 05:09:19 +00:00
windows-installer :
2008-09-12 04:45:08 +00:00
$( RUNPP) -c " $( MAKE) -C windows windows-installer "
2008-01-15 00:53:54 +00:00
2008-01-17 03:29:30 +00:00
windows-installer-upload :
2008-09-12 04:45:08 +00:00
$( RUNPP) -c " $( MAKE) -C windows windows-installer-upload "
2008-01-17 03:29:30 +00:00
add mac native build
This patch adds support for a mac native build.
At the moment it's a fairly simple .app - i.e. so simple as to be unacceptable
for a shipping product, but ok for testing and experiment at this point.
notably once launched, the app's ui does not respond at all, although its dock
icon does allow it to be force-quit.
this produces a single .app bundle, which when run will look for a node basedir
in ~/.tahoe. If one is not found, one will be created in ~/Library/Application
Support/Allmydata Tahoe, and that will be symlinked to ~/.tahoe
if the basedir is lacking basic config (introducer.furl and root_dir.cap) then
the wx config wizard will be launched to log into an account and to set up
those files.
if a webport file is not found, the default value of 8123 will be written into
it.
once the node has started running, a webbrowser will be opened to the webish
interface at the users root_dir
note that, once configured, the node runs as the main thread of the .app,
no daemonisation is done, twistd is not involved.
the binary itself, from within the .app bundle, i.e.
"Allmydata Tahoe.app/Contents/MacOS/Allmydata Tahoe"
can be used from the command line and functions as the 'tahoe' executable
would in a unix environment, with one exception - when launched with no args
it triggers the default behaviour of running a node, and if necessary config
wizard, as if the user had launched the .app
one other gotcha to be aware of is that symlinking to this binary from some
other place in ones $PATH will most likely not work. when I tried this,
something - wx I believe - exploded, since it seems to use argv[0] to figure
out where necessary libraries reside and fails if argv[0] isn't in the .app
bundle. it's pretty easy to set up a script a la
#!/bin/bash
/Blah/blah/blah/Allmydata\ Tahoe.app/Contents/MacOS/Allmydata\ Tahoe "${@}"
2008-01-23 02:32:26 +00:00
# These targets provide for mac native builds
.PHONY : mac -exe mac -upload mac -cleanup mac -dbg
mac-exe : .built
$( MAKE) -C mac clean
2008-09-12 04:45:08 +00:00
VERSION = $( VER) $( RUNPP) -c " $( MAKE) -C mac build "
add mac native build
This patch adds support for a mac native build.
At the moment it's a fairly simple .app - i.e. so simple as to be unacceptable
for a shipping product, but ok for testing and experiment at this point.
notably once launched, the app's ui does not respond at all, although its dock
icon does allow it to be force-quit.
this produces a single .app bundle, which when run will look for a node basedir
in ~/.tahoe. If one is not found, one will be created in ~/Library/Application
Support/Allmydata Tahoe, and that will be symlinked to ~/.tahoe
if the basedir is lacking basic config (introducer.furl and root_dir.cap) then
the wx config wizard will be launched to log into an account and to set up
those files.
if a webport file is not found, the default value of 8123 will be written into
it.
once the node has started running, a webbrowser will be opened to the webish
interface at the users root_dir
note that, once configured, the node runs as the main thread of the .app,
no daemonisation is done, twistd is not involved.
the binary itself, from within the .app bundle, i.e.
"Allmydata Tahoe.app/Contents/MacOS/Allmydata Tahoe"
can be used from the command line and functions as the 'tahoe' executable
would in a unix environment, with one exception - when launched with no args
it triggers the default behaviour of running a node, and if necessary config
wizard, as if the user had launched the .app
one other gotcha to be aware of is that symlinking to this binary from some
other place in ones $PATH will most likely not work. when I tried this,
something - wx I believe - exploded, since it seems to use argv[0] to figure
out where necessary libraries reside and fails if argv[0] isn't in the .app
bundle. it's pretty easy to set up a script a la
#!/bin/bash
/Blah/blah/blah/Allmydata\ Tahoe.app/Contents/MacOS/Allmydata\ Tahoe "${@}"
2008-01-23 02:32:26 +00:00
mac-dist :
2008-01-25 23:29:13 +00:00
VERSION = $( VER) $( MAKE) -C mac diskimage
mac-upload :
fuse/impl_c: move mac tahoefuse impl out into contrib/fuse
For a variety of reasons, high amongst them the fact that many people
interested in fuse support for tahoe seem to have missed its existence,
the existing fuse implementation for tahoe, previously 'mac/tahoefuse.py'
has been renamed and moved.
It was suggested that, even though the mac build depends upon it, that
the mac/tahoefuse implementation be moved into contrib/fuse along with
the other fuse implementations. The fact that it's not as extensively
covered by unit tests as mainline tahoe was given as corroboration.
In a bid to try and stem the confusion inherent in having tahoe_fuse,
tfuse and tahoefuse jumbled together (not necessarily helped by
referring to them as impl_a, b and c respectively) I'm hereby renaming
tahoefuse as 'blackmatch' (black match is, per wikipedia "a type of
crude fuse" hey, I'm a punny guy) Maybe one day it'll be promoted to
be 'quickmatch' instead...
Anyway, this patch moves mac/tahoefuse.py out to contrib/fuse/impl_c/
as blackmatch.py, and makes appropriate changes to the mac build process
to transclude blackmatch therein. this leaves the extant fuse.py and
fuseparts business in mac/ as-is and doesn't attempt to address such
issues in contrib/fuse/impl_c.
it is left as an exercise to the reader (or the reader of a message
to follow) as to how to deal with the 'fuse' python module on the mac.
as of this time, blackmatch should work on both mac and linux, and
passes the four extant tests in runtests. (fwiw neither impl_a nor
impl_b have I managed to get working on the mac yet)
since blackmatch supports a read-write and caching fuse interface to
tahoe, some write tests obviously need to be added to runtests.
2008-09-25 01:42:14 +00:00
VERSION = $( VER) $( MAKE) -C mac upload
add mac native build
This patch adds support for a mac native build.
At the moment it's a fairly simple .app - i.e. so simple as to be unacceptable
for a shipping product, but ok for testing and experiment at this point.
notably once launched, the app's ui does not respond at all, although its dock
icon does allow it to be force-quit.
this produces a single .app bundle, which when run will look for a node basedir
in ~/.tahoe. If one is not found, one will be created in ~/Library/Application
Support/Allmydata Tahoe, and that will be symlinked to ~/.tahoe
if the basedir is lacking basic config (introducer.furl and root_dir.cap) then
the wx config wizard will be launched to log into an account and to set up
those files.
if a webport file is not found, the default value of 8123 will be written into
it.
once the node has started running, a webbrowser will be opened to the webish
interface at the users root_dir
note that, once configured, the node runs as the main thread of the .app,
no daemonisation is done, twistd is not involved.
the binary itself, from within the .app bundle, i.e.
"Allmydata Tahoe.app/Contents/MacOS/Allmydata Tahoe"
can be used from the command line and functions as the 'tahoe' executable
would in a unix environment, with one exception - when launched with no args
it triggers the default behaviour of running a node, and if necessary config
wizard, as if the user had launched the .app
one other gotcha to be aware of is that symlinking to this binary from some
other place in ones $PATH will most likely not work. when I tried this,
something - wx I believe - exploded, since it seems to use argv[0] to figure
out where necessary libraries reside and fails if argv[0] isn't in the .app
bundle. it's pretty easy to set up a script a la
#!/bin/bash
/Blah/blah/blah/Allmydata\ Tahoe.app/Contents/MacOS/Allmydata\ Tahoe "${@}"
2008-01-23 02:32:26 +00:00
mac-cleanup :
VERSION = $( VER) $( MAKE) -C mac cleanup
mac-dbg :
cd mac && $( PP) $( PYTHON) w allmydata_tahoe.py
2008-01-17 03:29:30 +00:00