tahoe-lafs/GNUmakefile
Zooko O'Whielacronx d19d1058e0 extirpate all references the "queen" and "metatracker"
This is a potentially disruptive and potentially ugly change to the code base,
because I renamed the object that serves in both roles from "Queen" to
"IntroducerAndVdrive", which is a bit of an ugly name.

However, I think that clarity is important enough in this release to make this
change.  All unit tests pass.  I'm now darcs recording this patch in order to
pull it to other machines for more testing.
2007-04-30 09:57:52 -07:00

222 lines
5.8 KiB
Makefile

default: build
BASE=$(shell pwd)
PYTHON=python
INSTDIR=$(BASE)/instdir
PATHSEP=$(shell python -c 'import os ; print os.pathsep')
TRIALPATH=$(shell which trial.py 2>/dev/null)
ifeq ($(TRIALPATH),)
TRIALPATH=$(shell which trial 2>/dev/null)
endif
ifeq ($(TRIALPATH),)
TRIALPATH=$(shell $(PYTHON) -c "import os, sys; print repr(os.path.join(sys.prefix, \"Scripts\", \"trial.py\"))")
endif
ifeq ($(TRIALPATH),)
TRIALPATH=$(shell $(PYTHON) -c "import os, sys; print repr(os.path.join(sys.prefix, \"Scripts\", \"trial\"))")
endif
EXTRA_SETUP_ARGS=
REACTOR=poll
PLAT = $(strip $(shell python -c "import sys ; print sys.platform"))
ifeq ($(PLAT),cygwin)
# The platform is Windows with cygwin build tools and the cygwin Python interpreter.
INSTDIR := $(shell cygpath -u $(INSTDIR))
else
ifeq ($(PLAT),win32)
# The platform is Windows with cygwin build tools and the native Python interpreter.
EXTRA_SETUP_ARGS=build -c mingw32
REACTOR=select
INSTDIR := $(shell cygpath -w $(INSTDIR))
TRIALPATH := $(shell cygpath -w $(TRIALPATH))
ifneq ($(PYTHONPATH),)
PYTHONPATH := $(shell cygpath -w $(PYTHONPATH))
endif
endif
endif
ifneq ($(PYTHONPATH),)
PYTHONPATH := "$(PYTHONPATH)$(PATHSEP)$(INSTDIR)"
else
PYTHONPATH := "$(INSTDIR)"
endif
TRIAL=$(PYTHON) -u "$(TRIALPATH)" --rterrors --reactor=$(REACTOR)
show-instdir:
@echo $(INSTDIR)
PP=PYTHONPATH=$(PYTHONPATH)
.PHONY: build
build: build-zfec build-Crypto build-foolscap
$(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --prefix="." --root="$(INSTDIR)" --install-lib="." --install-scripts="scripts"
build-zfec:
cd src/zfec && \
$(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --prefix="." --root="$(INSTDIR)" --install-lib="." --install-scripts="scripts"
build-foolscap:
cd src/foolscap && \
$(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --prefix="." --root="$(INSTDIR)" --install-lib="." --install-scripts="scripts"
build-Crypto:
cd src/Crypto && \
$(PP) $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --prefix="." --root="$(INSTDIR)" --install-lib="." --install-scripts="scripts"
clean-zfec:
-cd src/zfec && \
$(PP) $(PYTHON) ./setup.py clean --all
clean-foolscap:
-cd src/foolscap && \
$(PP) $(PYTHON) ./setup.py clean --all
clean-Crypto:
cd src/Crypto && \
$(PP) $(PYTHON) ./setup.py clean --all
# RUNNING
#
# these targets let you create a client node in the current directory and
# start/stop it.
.PHONY: create-client start-client stop-client run-client
.PHONY: create-introducer start-introducer stop-introducer
create-client: build
$(PP) $(PYTHON) bin/allmydata-tahoe create-client -C CLIENTDIR
start-client: build
$(PP) $(PYTHON) bin/allmydata-tahoe start -C CLIENTDIR
stop-client: build
$(PP) $(PYTHON) bin/allmydata-tahoe stop -C CLIENTDIR
create-introducer: build
$(PP) $(PYTHON) bin/allmydata-tahoe create-introducer -C INTRODUCERDIR
start-introducer: build
$(PP) $(PYTHON) bin/allmydata-tahoe start -C INTRODUCERDIR
stop-introducer: build
$(PP) $(PYTHON) bin/allmydata-tahoe stop -C INTRODUCERDIR
# TESTING
.PHONY: test
ifeq ($(TEST),)
TEST=allmydata zfec # foolscap
endif
REPORTER=
# use 'make test REPORTER=--reporter=bwverbose' from buildbot, to supress the
# ansi color sequences
test: build
$(PP) $(TRIAL) $(REPORTER) $(TEST)
test-figleaf: build
rm -f .figleaf
$(PP) $(TRIAL) --reporter=bwverbose-figleaf $(TEST)
figleaf-output:
$(PP) $(PYTHON) misc/figleaf2html -d coverage-html -r $(INSTDIR) -x misc/figleaf.excludes
@echo "now point your browser at coverage-html/index.html"
# after doing test-figleaf and figleaf-output, point your browser at
# coverage-html/index.html
# this command is meant to be run with an
ifdef UPLOAD_TARGET
upload-figleaf:
rsync -a coverage-html/ $(UPLOAD_TARGET)
else
upload-figleaf:
echo "this target is meant to be run with UPLOAD_TARGET=host:/path/"
/bin/false
endif
.figleaf.el: .figleaf
$(PP) $(PYTHON) misc/figleaf2el.py .figleaf $(INSTDIR)
pyflakes:
$(PP) $(PYTHON) -OOu `which pyflakes` src/allmydata
count-lines:
@echo -n "files: "
@find src -name '*.py' |grep -v /build/ |wc --lines
@echo -n "lines: "
@cat `find src -name '*.py' |grep -v /build/` |wc --lines
@echo -n "TODO: "
@grep TODO `find src -name '*.py' |grep -v /build/` | wc --lines
check-memory:
$(PP) $(PYTHON) src/allmydata/test/check_memory.py
clean: clean-zfec clean-Crypto clean-foolscap
rm -rf build
rm -f debian
rm -rf instdir
create_dirs:
mkdir -p introducer_and_vdrive-basedir
mkdir -p client-basedir
mkdir -p client-basedir2
mkdir -p client-basedir/storage
mkdir -p client-basedir2/storage
DEBVER=`head -1 debian/changelog | sed -e 's/^[^(]*(\([^)]*\)).*$$/\1/' | sed -e 's/^\([0-9]\+\.[0-9]\+\.[0-9]\+\).*$$/\1/'`
DEBSTRING=$(DEBVER)-T`date +%s`
DEBCOMMENTS="'make deb' build"
show:
echo $(DEBVER)
echo $(DEBSTRING)
.PHONY: setup-dapper setup-sid setup-edgy setup-feisty
.PHONY: deb-dapper deb-sid deb-edgy deb-feisty
.PHONY: increment-deb-version
.PHONY: deb-dapper-head deb-sid-head deb-edgy-head deb-feisty-head
setup-dapper:
rm -f debian
ln -s dapper/debian debian
chmod a+x debian/rules
setup-sid:
rm -f debian
ln -s sid/debian debian
chmod a+x debian/rules
# edgy uses the feisty control files for now
setup-edgy:
rm -f debian
ln -s feisty/debian debian
chmod a+x debian/rules
setup-feisty:
rm -f debian
ln -s feisty/debian debian
chmod a+x debian/rules
deb-dapper: setup-dapper
fakeroot debian/rules binary
deb-sid: setup-sid
fakeroot debian/rules binary
deb-edgy: setup-edgy
fakeroot debian/rules binary
deb-feisty: setup-feisty
fakeroot debian/rules binary
increment-deb-version:
debchange --newversion $(DEBSTRING) $(DEBCOMMENTS)
deb-dapper-head: setup-dapper increment-deb-version
fakeroot debian/rules binary
deb-sid-head: setup-sid increment-deb-version
fakeroot debian/rules binary
deb-edgy-head: setup-edgy increment-deb-version
fakeroot debian/rules binary
deb-feisty-head: setup-feisty increment-deb-version
fakeroot debian/rules binary