From: Zooko O'Whielacronx Date: Wed, 4 Apr 2007 18:18:38 +0000 (-0700) Subject: port the makefile to Windows and update the README X-Git-Url: https://git.rkrishnan.org/?a=commitdiff_plain;h=01502ce6653263f18ea33f16ec8c655dd48608f7;p=tahoe-lafs%2Ftahoe-lafs.git port the makefile to Windows and update the README --- diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 00000000..b1e25267 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,168 @@ +default: build + +BASE=$(shell pwd) +PYTHON=python +INSTDIR=$(BASE)/instdir + +UNAME=$(shell uname) +ifeq ($(findstring CYGWIN,$(UNAME)),CYGWIN) +EXTRA_SETUP_ARGS=build -c mingw32 +PATHDIR := $(shell cygpath -m $(INSTDIR)) +INSTDIR := $(shell cygpath -w $(INSTDIR)) +TRIAL=$(PYTHON) `cygpath -m \`type -p trial\` ` +ifneq ($(PYTHONPATH),) +PYTHONPATH := $(shell cygpath -m $(PYTHONPATH)) +endif +else +EXTRA_SETUP_ARGS= +PATHDIR := $(INSTDIR) +TRIAL=trial +endif + +show-instdir: + @echo $(INSTDIR) + +PATHSEP=$(shell python -c 'import os; print os.pathsep') +ifneq ($(PYTHONPATH),) +PP=PYTHONPATH=$(PYTHONPATH)$(PATHSEP)$(PATHDIR) +else +PP=PYTHONPATH=$(PATHDIR) +endif + +.PHONY: build +build: build-pyfec build-Crypto + $(PYTHON) setup.py $(EXTRA_SETUP_ARGS) install --install-lib="$(INSTDIR)" --install-scripts="$(INSTDIR)/scripts" + +build-pyfec: + cd src/pyfec && $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --install-lib="$(INSTDIR)" --install-scripts="$(INSTDIR)/scripts" + +test-pyfec: + $(PP) $(PYTHON) src/pyfec/fec/test/test_pyfec.py + +clean-pyfec: + cd src/pyfec && python ./setup.py clean + + +build-Crypto: + cd src/Crypto && $(PYTHON) ./setup.py $(EXTRA_SETUP_ARGS) install --install-lib="$(INSTDIR)" --install-scripts="$(INSTDIR)/scripts" + +clean-Crypto: + cd src/Crypto && python ./setup.py clean + + +.PHONY: run-queen run-client test + +run-queen: + cd queen-basedir && PYTHONPATH=.. twistd -noy ../queen.tac + +run-client: build + cd client-basedir && $(PP) twistd -noy ../client.tac + +run-client2: + cd client-basedir2 && PYTHONPATH=.. twistd -noy ../client.tac +run-client3: + cd client-basedir3 && PYTHONPATH=.. twistd -noy ../client.tac + + +TEST=allmydata +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) + @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: + 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-pyfec clean-Crypto + rm -rf build + rm -f debian + rm -rf instdir + +create_dirs: + mkdir -p queen-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-feisty +.PHONY: deb-dapper deb-sid deb-feisty +.PHONY: increment-deb-version +.PHONY: deb-dapper-head deb-sid-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 + +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-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-feisty-head: setup-feisty increment-deb-version + fakeroot debian/rules binary + diff --git a/Makefile b/Makefile deleted file mode 100644 index b1d97b19..00000000 --- a/Makefile +++ /dev/null @@ -1,155 +0,0 @@ - -default: build - -BASE=$(shell pwd) -PYTHON=python - -INSTDIR=$(BASE)/instdir/lib/python$(shell $(PYTHON) -c 'import sys;print sys.version_info[0]').$(shell $(PYTHON) -c 'import sys;print sys.version_info[1]')/site-packages - -show-instdir: - @echo $(INSTDIR) - -ifneq ($(PYTHONPATH),) -PP=PYTHONPATH=${PYTHONPATH}:$(INSTDIR) -else -PP=PYTHONPATH=$(INSTDIR) -endif - -.PHONY: build -build: build-pyfec build-Crypto - $(PYTHON) setup.py install --prefix=$(BASE)/instdir - -build-pyfec: - cd src/pyfec && $(PYTHON) ./setup.py install --prefix=$(BASE)/instdir - -test-pyfec: - $(PP) $(PYTHON) src/pyfec/fec/test/test_pyfec.py - -clean-pyfec: - cd src/pyfec && python ./setup.py clean - - -build-Crypto: - cd src/Crypto && $(PYTHON) ./setup.py install --prefix=$(BASE)/instdir - -clean-Crypto: - cd src/Crypto && python ./setup.py clean - - -.PHONY: run-queen run-client test - -run-queen: - cd queen-basedir && PYTHONPATH=.. twistd -noy ../queen.tac - -run-client: build - cd client-basedir && $(PP) twistd -noy ../client.tac - -run-client2: - cd client-basedir2 && PYTHONPATH=.. twistd -noy ../client.tac -run-client3: - cd client-basedir3 && PYTHONPATH=.. twistd -noy ../client.tac - - -TRIAL=trial -TEST=allmydata -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) - @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: - 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-pyfec clean-Crypto - rm -rf build - rm -f debian - rm -rf instdir - -create_dirs: - mkdir -p queen-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-feisty -.PHONY: deb-dapper deb-sid deb-feisty -.PHONY: increment-deb-version -.PHONY: deb-dapper-head deb-sid-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 - -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-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-feisty-head: setup-feisty increment-deb-version - fakeroot debian/rules binary - diff --git a/README b/README index 2c5d4eac..48624ab3 100644 --- a/README +++ b/README @@ -31,10 +31,16 @@ DEPENDENCIES: PyOpenSSL (0.6 or later) http://pyopenssl.sourceforge.net + a C compiler (if building on Windows, cygwin gcc with mingw32 support) + http://gcc.gnu.org/ + http://www.cygwin.com/ + GNU make + BUILDING: - Just type 'make'. If the desired version of 'python' is not already on your - $PATH, then type 'make PYTHON=/path/to/your/preferred/python'. + Just type 'make'. This works on Windows too, provided that you have the + dependencies mentioned above. If the desired version of 'python' is not + already on your PATH, then type 'make PYTHON=/path/to/your/preferred/python'. 'make test' runs the unit test suite. @@ -43,8 +49,10 @@ BUILDING: RUNNING: - The installed package creates an 'allmydata-tahoe' executable, usually in - /usr/bin . This tool is used to create, start, and stop nodes. + If you installed one of the debian packages constructed by "make deb-*" then + it creates an 'allmydata-tahoe' executable, usually in /usr/bin . If you + didn't install a package you can find allmydata-tahoe in instdir/scripts. + This tool is used to create, start, and stop nodes. Somewhere in your mesh there must be a central 'queen' node. This is constructed by running 'allmydata-tahoe create-queen --basedir WHERE'. Once