From: Zooko O'Whielacronx <zooko@allmydata.com>
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/%5B/%5D%20/file/URI:LIT:krugkidfnzsc4/quickstart.html?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