From 16e6bb2b738e4edc006c77b13dabe461d4a592b0 Mon Sep 17 00:00:00 2001 From: david-sarah Date: Sun, 31 Jul 2011 20:19:52 -0700 Subject: [PATCH] Makefile and setup.py: remove setup.py commands that we no longer need, and their uses in the Makefile. Delete a stale and incorrect comment about updating _version.py. Also fix some coding style checks in the Makefile to operate on all source files. --- Makefile | 66 +++++++++++++++++--------------------------- setup.py | 84 +------------------------------------------------------- 2 files changed, 26 insertions(+), 124 deletions(-) diff --git a/Makefile b/Makefile index a0bda520..47492e2d 100644 --- a/Makefile +++ b/Makefile @@ -9,9 +9,8 @@ export PYTHON # 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. -PP=$(shell $(PYTHON) setup.py -q show_pythonpath) -RUNPP=$(PYTHON) setup.py run_with_pythonpath TAHOE=$(PYTHON) bin/tahoe +SOURCES=src/allmydata src/buildtest static misc/build_helpers bin/tahoe-script.template twisted setup.py .PHONY: make-version build @@ -21,35 +20,15 @@ TAHOE=$(PYTHON) bin/tahoe make-version: $(PYTHON) ./setup.py darcsver --count-all-patches -# 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 -# patches were pulled, but without an obligatory 'build' step this rule -# wouldn't be run frequently enough anyways. -# -# So instead, I'll just make sure that we update the version at least once -# 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. - .built: $(MAKE) build src/allmydata/_version.py: $(MAKE) make-version -build: src/allmydata/_version.py +# It is unnecessary to have this depend on build or src/allmydata/_version.py, +# since 'setup.py build' always updates the version using 'darcsver --count-all-patches'. +build: $(PYTHON) setup.py build touch .built @@ -58,7 +37,7 @@ build: src/allmydata/_version.py # 'make install PREFIX=/usr/local/stow/tahoe-N.N' will do the same, but to # a different location -install: src/allmydata/_version.py +install: ifdef PREFIX mkdir -p $(PREFIX) $(PYTHON) ./setup.py install --single-version-externally-managed \ @@ -90,7 +69,7 @@ test: check: test -test-coverage: build src/allmydata/_version.py +test-coverage: build rm -f .coverage $(TAHOE) debug trial --reporter=bwverbose-coverage $(TEST) @@ -144,9 +123,10 @@ endif pyflakes: - $(PYTHON) -OOu `which pyflakes` src/allmydata static misc/build_helpers bin/tahoe-script.template twisted setup.py |sort |uniq + $(PYTHON) -OOu `which pyflakes` $(SOURCES) |sort |uniq + check-umids: - $(PYTHON) misc/coding_tools/check-umids.py `find src/allmydata -name '*.py'` + $(PYTHON) misc/coding_tools/check-umids.py `find $(SOURCES) -name '*.py'` count-lines: @echo -n "files: " @@ -158,17 +138,17 @@ count-lines: check-memory: .built rm -rf _test_memory - $(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" + $(TAHOE) @src/allmydata/test/check_memory.py upload + $(TAHOE) @src/allmydata/test/check_memory.py upload-self + $(TAHOE) @src/allmydata/test/check_memory.py upload-POST + $(TAHOE) @src/allmydata/test/check_memory.py download + $(TAHOE) @src/allmydata/test/check_memory.py download-GET + $(TAHOE) @src/allmydata/test/check_memory.py download-GET-slow + $(TAHOE) @src/allmydata/test/check_memory.py receive check-memory-once: .built rm -rf _test_memory - $(RUNPP) -p -c "src/allmydata/test/check_memory.py $(MODE)" + $(TAHOE) @src/allmydata/test/check_memory.py $(MODE) # 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 @@ -187,7 +167,7 @@ check-speed: .built -$(TAHOE) stop $(TESTCLIENTDIR) $(TAHOE) start $(TESTCLIENTDIR) sleep 5 - $(PYTHON) src/allmydata/test/check_speed.py $(TESTCLIENTDIR) + $(TAHOE) @src/allmydata/test/check_speed.py $(TESTCLIENTDIR) $(TAHOE) stop $(TESTCLIENTDIR) # The check-grid target also uses a pre-established client node, along with a @@ -195,10 +175,10 @@ check-speed: .built # in src/allmydata/test/check_grid.py to see how to set this up. check-grid: .built if [ -z '$(TESTCLIENTDIR)' ]; then exit 1; fi - $(PYTHON) src/allmydata/test/check_grid.py $(TESTCLIENTDIR) bin/tahoe + $(TAHOE) @src/allmydata/test/check_grid.py $(TESTCLIENTDIR) bin/tahoe bench-dirnode: .built - $(RUNPP) -p -c src/allmydata/test/bench_dirnode.py + $(TAHOE) @src/allmydata/test/bench_dirnode.py # 'make repl' is a simple-to-type command to get a Python interpreter loop # from which you can type 'import allmydata' @@ -216,6 +196,10 @@ test-clean: find . |grep -vEe "_darcs|allfiles.tmp|src/allmydata/_(version|appname).py" |sort >allfiles.tmp.new diff allfiles.tmp.old allfiles.tmp.new +# 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. clean: rm -rf build _trial_temp _test_memory .built rm -f `find src *.egg -name '*.so' -or -name '*.pyc'` @@ -228,7 +212,7 @@ clean: rm -f bin/tahoe bin/tahoe.pyscript find-trailing-spaces: - $(PYTHON) misc/coding_tools/find-trailing-spaces.py -r src + $(PYTHON) misc/coding_tools/find-trailing-spaces.py -r $(SOURCES) # 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 diff --git a/setup.py b/setup.py index dcd2c34e..4b90c36c 100644 --- a/setup.py +++ b/setup.py @@ -184,84 +184,6 @@ if "sdist_dsc" in sys.argv: tests_require=[] -class ShowSupportLib(Command): - user_options = [] - def initialize_options(self): - pass - def finalize_options(self): - pass - def run(self): - # TODO: --quiet suppresses the 'running show_supportlib' message. - # Find a way to do this all the time. - print supportlib # TODO windowsy - -class ShowPythonPath(Command): - user_options = [] - def initialize_options(self): - pass - def finalize_options(self): - pass - def run(self): - # TODO: --quiet suppresses the 'running show_supportlib' message. - # Find a way to do this all the time. - print "PYTHONPATH=%s" % os.environ.get("PYTHONPATH", '') - -class RunWithPythonPath(Command): - description = "Run a subcommand with PYTHONPATH set appropriately" - - user_options = [ ("python", "p", - "Treat command string as arguments to a python executable"), - ("command=", "c", "Command to be run"), - ("directory=", "d", "Directory to run the command in"), - ] - boolean_options = ["python"] - - def initialize_options(self): - self.command = None - self.python = False - self.directory = None - def finalize_options(self): - pass - def run(self): - oldpp = os.environ.get("PYTHONPATH", "").split(os.pathsep) - if oldpp == [""]: - # grr silly split() behavior - oldpp = [] - os.environ['PYTHONPATH'] = os.pathsep.join(oldpp + [supportlib,]) - - # We must require the command to be safe to split on - # whitespace, and have --python and --directory to make it - # easier to achieve this. - - command = [] - if self.python: - command.append(sys.executable) - if self.command: - command.extend(self.command.split()) - if not command: - raise RuntimeError("The --command argument is mandatory") - if self.directory: - os.chdir(self.directory) - if self.verbose: - print "command =", " ".join(command) - rc = subprocess.call(command) - sys.exit(rc) - -class TestMacDiskImage(Command): - description = "test the Mac disk image in dmg format (unmaintained)" - user_options = [] - - def initialize_options(self): - pass - def finalize_options(self): - pass - def run(self): - import sys - sys.path.append(os.path.join('misc', 'build_helpers')) - import test_mac_diskimage - return test_mac_diskimage.test_mac_diskimage('Allmydata', version=self.distribution.metadata.version) - - class Trial(Command): description = "run trial (use 'bin%stahoe debug trial' for the full set of trial options)" % (os.sep,) # This is just a subset of the most useful options, for compatibility. @@ -403,11 +325,7 @@ setup(name=APPNAME, author_email='tahoe-dev@tahoe-lafs.org', url='http://tahoe-lafs.org/', license='GNU GPL', # see README.txt -- there is an alternative licence - cmdclass={"show_supportlib": ShowSupportLib, - "show_pythonpath": ShowPythonPath, - "run_with_pythonpath": RunWithPythonPath, - "test_mac_diskimage": TestMacDiskImage, - "trial": Trial, + cmdclass={"trial": Trial, "make_executable": MakeExecutable, "sdist": MySdist, }, -- 2.45.2