Commit Graph

190 Commits

Author SHA1 Message Date
Brian Warner
ae6cc14a2d Makefile: give setup.py develop a '--site-dirs' arg to work around the #249 setuptools bug which causes us to unnecessarily rebuild pyopenssl and other support libs installed via debian's python-support. Should be harmless on other platforms. 2008-09-10 16:34:32 -07:00
Zooko O'Whielacronx
3fab96493e setup: don't assert that trial is present when the Makefile is evaluated
This should fix #506, but it means that if (for some weird reason) Twisted can't be auto-installed and the find_trial.py script doesn't work, the user will get a weird failure message instead of a clean failure message explaining that trial couldn't be found.  Oh well.

Chris Galvan is working on a much nicer fix to all these issues -- see #505.
2008-09-03 10:18:37 -07:00
Zooko O'Whielacronx
5786ddd36a setup: remove accidentally duplicated lines from Makefile 2008-08-07 12:30:29 -07:00
Brian Warner
c4405b529f Makefile: avoid bare quotes, since the emacs syntax-highlighter gets confused by them 2008-08-07 11:30:01 -07:00
Zooko O'Whielacronx
d44fc9fb88 setup: don't attempt to escape quote marks, just delete them. Ugly, but it works okay. 2008-08-06 16:27:42 -07:00
Zooko O'Whielacronx
960a648d5b setup: escape any double-quote chars in the PATH before using the PATH to find and invoke trial 2008-08-06 16:11:43 -07:00
Zooko O'Whielacronx
2ed1d03a49 setup: if the user passes a TRIALOPT env var then pass that on to trial
This is useful for --reporter=bwverbose, for example.
2008-07-30 13:58:06 -07:00
Zooko O'Whielacronx
8aab91115a setup: turn back on reactor=poll for cygwin trial (else it runs out of fds) 2008-07-30 11:12:17 -07:00
Zooko O'Whielacronx
5a0e98d693 setup: fix bug in Makefile -- ifeq, not ifneq -- so that now it sets poll reactor only if the user hasn't specified a REACTOR variable, instead of setting poll reactor only if the user has specified a REACTOR variable 2008-07-30 09:04:29 -07:00
Zooko O'Whielacronx
bd0fe3588b setup: whoops, really remove the default reactor=poll this time 2008-07-29 20:23:58 -07:00
Zooko O'Whielacronx
677f26f0f4 setup: instead of setting --reactor=poll for trial in all cases (which fails on platforms that don't have poll reactor, such as Windows and some Mac OS X), just set --reactor=poll for linux2. 2008-07-29 20:16:56 -07:00
Zooko O'Whielacronx
3eb5f221d7 setup: pass --reactor=poll to trial unless REACTOR variable is set, in which case pass --reactor=$(REACTOR)
This hopefully works around the problem that Twisted v8.1.0 has a bug when used
with pyOpenSSL v0.7 which bug causes some unit tests to spuriously fail -- see
known_issues.txt r2788:

http://allmydata.org/trac/tahoe/browser/docs/known_issues.txt?rev=2788#L122

Also it matches with the fact that --reactor=poll is required on cygwin.
2008-07-29 19:39:06 -07:00
Zooko O'Whielacronx
1a62904289 setup: don't use "python" in Makefile, use $(PYTHON) everywhere 2008-07-21 09:28:49 -07:00
Brian Warner
9ed9eb2048 check_grid.py: make it work, move node start/stop responsibility from Makefile to script 2008-06-19 12:39:52 -07:00
Brian Warner
2fffdbd439 Makefile: minor comment 2008-06-18 15:49:30 -07:00
Brian Warner
164c3f83a1 Makefile: edit check-grid comment a bit 2008-06-18 13:15:55 -07:00
Brian Warner
50d945ea8f start work on 'check-grid' target, for use in an automated prodnet tester. Just a docstring so far. 2008-06-18 12:57:47 -07:00
Brian Warner
0cba951ca0 Makefile: add ubuntu/hardy deb targets 2008-06-17 15:26:18 -07:00
Zooko O'Whielacronx
4b8632b7e5 setup: quote another place where spaces in paths cause shell command misparsing 2008-06-09 16:21:50 -07:00
Brian Warner
08d07f0cc5 Makefile: build twice, since sometimes the Nevow build fails the first time. See #455. This ought to be undone once that ticket is fixed by a new release of setuptools 2008-06-09 16:06:29 -07:00
Zooko O'Whielacronx
78791ab36d setup: don't quote REACTOROPT -- when it is empty then we want no argument at all to be passed to trial, rather than the empty-string-argument 2008-06-09 11:53:24 -07:00
Zooko O'Whielacronx
74908b9334 setup: don't quote TRIALCMD in Makefile -- it can be a pair of (python executable, path to command) paths 2008-06-05 16:39:12 -07:00
Zooko O'Whielacronx
065625738a setup: quote variables which are going to be passed through a shell and which might contain spaces 2008-06-05 15:19:51 -07:00
Zooko O'Whielacronx
36182fb1ac setup: indentation 2008-06-05 14:02:49 -07:00
Zooko O'Whielacronx
970edc5c65 setup and docs: various improvements to setup and docs
Remove docs/install-details.html and README.win32 for now (see #282).
Remove checks for pywin32 and pyopenssl in Makefile -- that is (or will be) automated by setuptools.
Remove twisted from setup_requires.  This causes the problem in which Nevow doesn't declare its dependency on Twisted (#440) to yield a clear ImportError mentioning Twisted and to fail repeatedly, rather than yielding a weird ImportError and working on the second identical attempt.
Fix Makefile to set PATH so that trial and twistd can be found by "make test" after Twisted was installed into support/ during "make"
2008-06-05 13:55:05 -07:00
Zooko O'Whielacronx
59cdfb8f35 setup: tiny fix to syntax in makefile 2008-05-07 05:37:11 -07:00
Zooko O'Whielacronx
a097f45243 setup: remove specific checks for twisted dependency in makefile
Now that the twisted dependency is handled by the automatic dependency mechanism.
2008-05-06 12:09:00 -07:00
Brian Warner
19a40d7a2d Makefile: add quicktest-figleaf: this is in my edit-test-repeat loop, and I need it to be fast 2008-04-24 11:30:38 -07:00
Zooko O'Whielacronx
c559769e78 setup: test depends on build, which means it invokes setup.py every time, which is slower but does "the right thing" more often
There is a new target "quicktest" which depends on the .built and .checked-deps files.  test-figleaf also depends on the build target now.
2008-04-24 09:57:04 -07:00
Zooko O'Whielacronx
5fb895c021 setup: remove obsolete makefile target build-deps 2008-04-22 12:07:12 -07:00
Zooko O'Whielacronx
6a112914aa setup: fix spacing in error output messages from makefile
Looking over Brian's shoulder the other day, I saw a message that said "Please seedocs/install.html".
Looking at the source code of the Makefile, it seems like it should say 

       @echo "ERROR: Not all of Tahoe's dependencies are in place.  Please see \
docs/install.html for help on installing dependencies."

instead of its current:

       @echo "ERROR: Not all of Tahoe's dependencies are in place.  Please see\
docs/install.html for help on installing dependencies."

But, I remember changing this more than once in the past, so either there is a different version of make somewhere which interprets trailing backslashes differently, or someone (possibly me) has repeatedly gotten confused about this issue.  Anyway, this time around, I'm trying:

       @echo "ERROR: Not all of Tahoe's dependencies are in place.  Please see docs/install.html for help on installing dependencies."

Even though it is > 80 chars.
2008-04-14 06:52:21 -07:00
Brian Warner
4b68eb0d95 minor patch, to trigger the buildbot 2008-04-10 16:47:52 -07:00
Zooko O'Whielacronx
d6c66f99c0 setup: rename GNUmakefile to Makefile
It's evil and wrong to call something a "Makefile" when it contains code that can't be interpreted by POSIX make and requires GNU make.
But everyone else is doing it.  ;-)
2008-04-01 12:36:09 -07:00
Brian Warner
667037a6d6 appease some unspecified audience by naming our GNU-extension-using makefile 'GNUmakefile'. Closes #214 2008-03-10 18:53:36 -07:00
Peter Secor
ff1b2c770e reverting a change zooko made (2258) to see if it clears up problems in the windows build 2008-03-10 11:37:49 -07:00
Zooko O'Whielacronx
3945188401 setup: don't install, just "develop" in setup.py in build target 2008-03-06 18:28:20 -07:00
Zooko O'Whielacronx
56c71f1bf4 setup: don't echo the echo of EGGSPATH 2008-03-06 18:18:56 -07:00
Zooko O'Whielacronx
854ae28ad6 tests: test depends on _version.py
because there is a test that asserts that our version is not "unknown"
2008-02-28 14:29:24 -07:00
robk-tahoe
1a02f38cf3 mac build: updates to respect UPLOAD_DEST argument to make
the make mac-upload target now requires an UPLOAD_DEST argument to be given,
which is the rsync destination (including trailing '/') to which the version
stamped directory containing the .dmg should be placed.  the account the 
build is running as (e.g. 'buildslave') should have ssh access to the account
specified in that dest. one might also consider locking the key down to the
target directory by adding something like 
command="rsync --server -vlogDtpr . /home/amduser/public_html/dist/mac-blah/"
to the corresponding authorized_key entry on the target machine.
2008-02-26 17:03:53 -07:00
Brian Warner
19b76cfadd Makefile: add 'upload-tarballs' target, using a foolscap-based file-transfer tool 2008-01-31 19:00:40 -07:00
Brian Warner
bf25a041f3 tarballs: stick with setup.py's sdist command, which gives us bz2/gz/zip but not rz/7z/lrz. Closes #298. 2008-01-31 13:52:48 -07:00
Brian Warner
4a363f0281 add 'tarballs' target, to generate compressed source tarballs 2008-01-30 20:45:14 -07:00
robk-tahoe
7b9f3207d0 stats: add a simple stats gathering system
We have a desire to collect runtime statistics from multiple nodes primarily
for server monitoring purposes.   This implements a simple implementation of
such a system, as a skeleton to build more sophistication upon.

Each client now looks for a 'stats_gatherer.furl' config file.  If it has
been configured to use a stats gatherer, then it instantiates internally
a StatsProvider.  This is a central place for code which wishes to offer
stats up for monitoring to report them to, either by calling 
stats_provider.count('stat.name', value) to increment a counter, or by
registering a class as a stats producer with sp.register_producer(obj).

The StatsProvider connects to the StatsGatherer server and provides its
provider upon startup.  The StatsGatherer is then responsible for polling
the attached providers periodically to retrieve the data provided.
The provider queries each registered producer when the gatherer queries
the provider.  Both the internal 'counters' and the queried 'stats' are
then reported to the gatherer.

This provides a simple gatherer app, (c.f. make stats-gatherer-run)
which prints its furl and listens for incoming connections.  Once a
minute, the gatherer polls all connected providers, and writes the
retrieved data into a pickle file.

Also included is a munin plugin which knows how to read the gatherer's
stats.pickle and output data munin can interpret.  this plugin, 
tahoe-stats.py can be symlinked as multiple different names within
munin's 'plugins' directory, and inspects argv to determine which
data to display, doing a lookup in a table within that file.
It looks in the environment for 'statsfile' to determine the path to
the gatherer's stats.pickle.  An example plugins-conf.d file is
provided.
2008-01-30 20:11:07 -07:00
Brian Warner
8e1439d12d Makefile: touch .built on every build, so other targets can depend upon .built and avoid redundant rebuilds 2008-01-30 01:32:57 -07:00
Brian Warner
07a45cd232 Makefile: split mac 'make .dmg' and 'upload' into separate steps 2008-01-25 16:29:13 -07:00
Zooko O'Whielacronx
3b8fbc6ef2 setup: put back "chmod +x bin/tahoe" in the build target 2008-01-23 16:40:20 -07:00
Zooko O'Whielacronx
573502c12a tests: it is okay to leave a src/allmydata/_auto_deps.py lying around after a build 2008-01-23 10:43:37 -07:00
robk-tahoe
68c2d54c0b 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-22 19:32:26 -07:00
Zooko O'Whielacronx
348eecd615 setup: require specific versions of dependencies, both at run-time (if pkg_resources is available) and at build-time, and make there be only once place where we specify those versions
Using pkg_resources.require() like this also apparently allows people to install multiple different versions of packages on their system and tahoe (if pkg_resources is available to it) will import the version of the package that it requires.  I haven't tested this feature.
2008-01-22 17:24:33 -07:00
Zooko O'Whielacronx
8fc26ea4c4 setup: for reasons that I do not understand "show-eggspath" gives me a GNUmake error unless I move it down a couple of stanzas (until after the stanza that sets PYTHONPATH) 2008-01-22 17:22:38 -07:00