On Apr 27, 2012, at 02:30 , Paul Davis wrote:
> Found it:
>
> {set,"couch_httpd_auth","secret","81732db8242bbeacb35ce76fe44b554d",true}
>
> I'm just gonna make local_dev.ini writable and forget about it. This
> is just a VPATH build artifact because it forces the local.ini to be
> read-only.
I'd prefer making that set not persistent. In addition, this call doesn't
occur in cookie_auth.js.
Cheers
Jan
--
>
> On Thu, Apr 26, 2012 at 7:20 PM, Randall Leeds <[email protected]>
> wrote:
>> On Thu, Apr 26, 2012 at 17:03, Paul Davis <[email protected]>
>> wrote:
>>> Now we figure out what its trying to write to.
>>
>> Blind guess: not using X-Couch-Persist: false for something?
>>
>>>
>>> On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <[email protected]> wrote:
>>>> The problem is that the vpath directory has -w perms. Running
>>>> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
>>>> ./test/javascript/run again, it all works.
>>>>
>>>> What now? :)
>>>>
>>>> Cheers
>>>> Jan
>>>> --
>>>>
>>>>
>>>> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:
>>>>
>>>>>
>>>>> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
>>>>>
>>>>>>
>>>>>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>>>>>>
>>>>>>> Reproduces for me. Also looks related to the vpath build because it
>>>>>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>>>>>>
>>>>>> one more interesting point, if you cd into the distcheck build dir,
>>>>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>>>>>> and then run ./test/javascript/run it all succeeds as well.
>>>>>>
>>>>>> Maybe we are digging in the wrong place?
>>>>>
>>>>> This however reproduces the failure:
>>>>>
>>>>>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run
>>>>>> cookie_auth
>>>>>
>>>>> *keeps digging*
>>>>>
>>>>>>
>>>>>>
>>>>>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <[email protected]> wrote:
>>>>>>>> Actually, no.
>>>>>>>>
>>>>>>>> I can now repeatedly get make distcheck to fail at
>>>>>>>>
>>>>>>>> not ok 18 cookie_auth
>>>>>>>>
>>>>>>>> on two different machines. I don't know if this was introduced in the
>>>>>>>> "fixing" commit or one of Paul's others.
>>>>>>>>
>>>>>>>> Full log:
>>>>>>>>
>>>>>>>> not ok 18 cookie_auth
>>>>>>>> Reason: false
>>>>>>>> Trace back (most recent call first):
>>>>>>>>
>>>>>>>> 46:
>>>>>>>> /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>> T(false)
>>>>>>>> 133:
>>>>>>>> /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>> ()
>>>>>>>> "[email protected]"}, "eh, Boo-Boo?");try
>>>>>>>> {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate
>>>>>>>> user names. Should have thrown an error.");} catch (e) {T(e.error ==
>>>>>>>> "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc =
>>>>>>>> CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try
>>>>>>>> {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore
>>>>>>>> user names. Should have thrown an error.");} catch (e) {T(e.error ==
>>>>>>>> "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc =
>>>>>>>> CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id =
>>>>>>>> "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false &&
>>>>>>>> "Can't create malformed docids. Should have thrown an error.");} catch
>>>>>>>> (e) {T(e.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);}T(CouchDB.login("Jason Davies",
>>>>>>>> password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var
>>>>>>>> xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type':
>>>>>>>> "application/json"}, body: JSON.stringify({name: "Jason Davies",
>>>>>>>> password:
>>>>>>>> password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name
>>>>>>>> == "Jason Davies");jasonUserDoc.foo =
>>>>>>>> 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin")
>>>>>>>> == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete
>>>>>>>> other users docs. Should have thrown an error.");} catch (e)
>>>>>>>> {T(e.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);}T(!CouchDB.login("Jason Davies",
>>>>>>>> "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman",
>>>>>>>> "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr =
>>>>>>>> CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type':
>>>>>>>> "application/x-www-form-urlencoded"}, body:
>>>>>>>> "name=Jason%20Davies&password=" + encodeURIComponent(password)});if
>>>>>>>> (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr =
>>>>>>>> CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type':
>>>>>>>> "application/x-www-form-urlencoded"}, body:
>>>>>>>> "name=Jason%20Davies&password=foobar"});if (xhr.status == 200)
>>>>>>>> {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);T(CouchDB.session().userCtx.name ==
>>>>>>>> "[email protected]");T(CouchDB.session().userCtx.roles.length ==
>>>>>>>> 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false &&
>>>>>>>> "Can't update someone else's user doc. Should have thrown an
>>>>>>>> error.");} catch (e) {T(e.error ==
>>>>>>>> "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles =
>>>>>>>> ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles
>>>>>>>> unless you are admin. Should have thrown an error.");} catch (e)
>>>>>>>> {T(e.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo =
>>>>>>>> ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles
>>>>>>>> = ["_bar"];var res = save_as(usersDb, jchrisUserDoc,
>>>>>>>> "jan");T(res.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);T(CouchDB.session().userCtx.name ==
>>>>>>>> "[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin")
>>>>>>>> == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=
>>>>>>>> -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan",
>>>>>>>> "apple").ok);run_on_modified_server([{section: "admins", key:
>>>>>>>> "[email protected]", value: "funnybone"}], function ()
>>>>>>>> {T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);T(CouchDB.session().userCtx.name ==
>>>>>>>> "[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin")
>>>>>>>> != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=
>>>>>>>> -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete
>>>>>>>> jchrisUserDoc.salt;delete
>>>>>>>> jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name ==
>>>>>>>> "[email protected]");T(s.userCtx.roles.indexOf("_admin") !=
>>>>>>>> -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db ==
>>>>>>>> "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo")
>>>>>>>> != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true,
>>>>>>>> CouchDB.login("jan",
>>>>>>>> "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380:
>>>>>>>> apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var
>>>>>>>> duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>> run_on_modified_server([object Array],(function () {try {var ddoc =
>>>>>>>> op
>>>>>>>> 286:
>>>>>>>> /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>> ()
>>>>>>>> "[email protected]"}, "eh, Boo-Boo?");try
>>>>>>>> {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate
>>>>>>>> user names. Should have thrown an error.");} catch (e) {T(e.error ==
>>>>>>>> "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc =
>>>>>>>> CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try
>>>>>>>> {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore
>>>>>>>> user names. Should have thrown an error.");} catch (e) {T(e.error ==
>>>>>>>> "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc =
>>>>>>>> CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id =
>>>>>>>> "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false &&
>>>>>>>> "Can't create malformed docids. Should have thrown an error.");} catch
>>>>>>>> (e) {T(e.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);}T(CouchDB.login("Jason Davies",
>>>>>>>> password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var
>>>>>>>> xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type':
>>>>>>>> "application/json"}, body: JSON.stringify({name: "Jason Davies",
>>>>>>>> password:
>>>>>>>> password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name
>>>>>>>> == "Jason Davies");jasonUserDoc.foo =
>>>>>>>> 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin")
>>>>>>>> == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete
>>>>>>>> other users docs. Should have thrown an error.");} catch (e)
>>>>>>>> {T(e.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);}T(!CouchDB.login("Jason Davies",
>>>>>>>> "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman",
>>>>>>>> "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr =
>>>>>>>> CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type':
>>>>>>>> "application/x-www-form-urlencoded"}, body:
>>>>>>>> "name=Jason%20Davies&password=" + encodeURIComponent(password)});if
>>>>>>>> (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr =
>>>>>>>> CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type':
>>>>>>>> "application/x-www-form-urlencoded"}, body:
>>>>>>>> "name=Jason%20Davies&password=foobar"});if (xhr.status == 200)
>>>>>>>> {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);T(CouchDB.session().userCtx.name ==
>>>>>>>> "[email protected]");T(CouchDB.session().userCtx.roles.length ==
>>>>>>>> 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false &&
>>>>>>>> "Can't update someone else's user doc. Should have thrown an
>>>>>>>> error.");} catch (e) {T(e.error ==
>>>>>>>> "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles =
>>>>>>>> ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles
>>>>>>>> unless you are admin. Should have thrown an error.");} catch (e)
>>>>>>>> {T(e.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo =
>>>>>>>> ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles
>>>>>>>> = ["_bar"];var res = save_as(usersDb, jchrisUserDoc,
>>>>>>>> "jan");T(res.error == "forbidden");T(usersDb.last_req.status ==
>>>>>>>> 403);T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);T(CouchDB.session().userCtx.name ==
>>>>>>>> "[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin")
>>>>>>>> == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=
>>>>>>>> -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan",
>>>>>>>> "apple").ok);run_on_modified_server([{section: "admins", key:
>>>>>>>> "[email protected]", value: "funnybone"}], function ()
>>>>>>>> {T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);T(CouchDB.session().userCtx.name ==
>>>>>>>> "[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin")
>>>>>>>> != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=
>>>>>>>> -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete
>>>>>>>> jchrisUserDoc.salt;delete
>>>>>>>> jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("[email protected]",
>>>>>>>> "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name ==
>>>>>>>> "[email protected]");T(s.userCtx.roles.indexOf("_admin") !=
>>>>>>>> -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db ==
>>>>>>>> "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo")
>>>>>>>> != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true,
>>>>>>>> CouchDB.login("jan", "apple").ok);};var usersDb = new
>>>>>>>> CouchDB("test_suite_users", {'X-Couch-Full-Commit':
>>>>>>>> "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section:
>>>>>>>> "couch_httpd_auth", key: "authentication_db", value:
>>>>>>>> "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations",
>>>>>>>> value: "1"}, {section: "admins", key: "jan", value: "apple"}],
>>>>>>>> testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53:
>>>>>>>> apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var
>>>>>>>> duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>> var testFun = function () {try {var ddoc = open_as(usersDb,
>>>>>>>> "_design/_
>>>>>>>> 72:
>>>>>>>> /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>> runAllTestsConsole()
>>>>>>>> 85:
>>>>>>>> /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>>>>>>
>>>>>>>>> Paul fixed this in
>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>>>>>>
>>>>>>>>> Cheers!
>>>>>>>>>
>>>>>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>>>>>>
>>>>>>>>>> Thanks for the replies!
>>>>>>>>>>
>>>>>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>>>>>>
>>>>>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>>>>>>
>>>>>>>>>> What now? :)
>>>>>>>>>>
>>>>>>>>>> Jan
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>>>>>>
>>>>>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>>>>>> those needs to support write backs by one of the tests. Basic
>>>>>>>>>>> solution
>>>>>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>>>>>> or so.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds
>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Jan 27, 2012, at 02:37 , [email protected] wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up
>>>>>>>>>>>>>>> on a
>>>>>>>>>>>>>>> different port. To work around this, add a getter property for
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> object to store the value.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>>>>>> Commit:
>>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>>>>>> Tree:
>>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>>>>>> Diff:
>>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>>>>>> Author: Randall Leeds <[email protected]>
>>>>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>>>>>> Committer: Randall Leeds <[email protected]>
>>>>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h | 2 +
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c | 60
>>>>>>>>>>>>>>> +++++++++++++++++++++++++++++++-
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h | 3 ++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c | 8 ++++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c | 8 ++++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c | 8 ++++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c | 3 +-
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h | 2 +
>>>>>>>>>>>>>>> test/Makefile.am | 1 +
>>>>>>>>>>>>>>> test/etap/Makefile.am | 1 -
>>>>>>>>>>>>>>> test/etap/random_port.ini | 19 ----------
>>>>>>>>>>>>>>> test/etap/test_util.erl.in | 2 +-
>>>>>>>>>>>>>>> test/javascript/Makefile.am | 1 +
>>>>>>>>>>>>>>> test/javascript/couch_http.js | 9 ++---
>>>>>>>>>>>>>>> test/javascript/run.tpl | 9 ++++-
>>>>>>>>>>>>>>> test/random_port.ini | 19 ++++++++++
>>>>>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [...]
>>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>>>>>> then
>>>>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>>>>> make dev
>>>>>>>>>>>>>>> trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>>>>>> - ./utils/run -b -r 1
>>>>>>>>>>>>>>> + ./utils/run -b -r 1 -n \
>>>>>>>>>>>>>>> + -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>>>>>> + -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>>>>>> + -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and
>>>>>>>>>>>>>> the -n lines makes it work for me.
>>>>>>>>>>>>>
>>>>>>>>>>>>> … and the -a lines …
>>>>>>>>>>>>
>>>>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the
>>>>>>>>>>>> point
>>>>>>>>>>>> of the patch. I can't remember at this moment why I needed to
>>>>>>>>>>>> specify
>>>>>>>>>>>> exactly all the configs and use the -n to reset the config chain,
>>>>>>>>>>>> but
>>>>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>>>>>> preference over default_dev.ini or something).
>>>>>>>>>>>>
>>>>>>>>>>>> -R
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>