[01:15] vila: it doesn't really matter what bzr-svn is compatible with, but what subvertpy is compatible with [01:16] 1.4 is almost certainly too old though [03:16] <_kbulgrien> hmm... bzr+ssh doesn't load user environment on far end? I get prompt for password then get `bash: bzr: command not found [03:16] <_kbulgrien> bzr: ERROR: Connection closed: Unexpected end of message. Please check connectivity and permissions, and report a bug if problems persist.` [03:21] <_kbulgrien> Hmm... BZR_REMOTE_PATH... [03:36] <_kbulgrien> ok, that helps, but doesn't get by needing PYTHONPATH set to point to where bzrlib is on the remote. [03:42] <_kbulgrien> I had to load bzr and bzrlib in my home directory on a web host. Now I can't seem to get bzr+ssh to work there because the remote bzr can't find its bzrlib because PYTHONPATH in .bash_profile on the remote isn't loaded. Is there a way to work around this other than, for example, putting the repo in an ftp space and avoiding the smart server? [03:59] <_kbulgrien> sftp:// works. [03:59] <_kbulgrien> ls [09:29] jelmer: right, so next question is: if SamB_MacG5 can find a subvertpy version old enough to support svn 1.4, will bzr-svn.trunk be still compatible ? [09:32] _kbulgrien, too bad you left. The trick to address your issues is to use a local wrapper so you can set anything you want. [09:36] _kbulgrien: After that bzr_remote_path in locations.conf (so you can set it differently for different hosts) and you're done [09:38] _kbulgrien: the wrapper I use is: '#!/bin/sh \n python /path/to/bzr $*' [09:39] _kbulgrien: In locations.conf I have: '[bzr+ssh://myhost.local] \n bzr_remote_path = /path/on.myhost.local/to/wrapper [10:12] Or fix his shell config. [10:15] vila: and you want "$@" not $* [10:16] (well, and 'exec' for cleanliness, but...) [12:32] fullermd: ha, thanks for the tips. (shell is one of those languages I never took the time to master (I know make even better than shell...)). [12:33] fullermd: so, even reading the doc didn't give me the feeling that one is better than the other in practice. Any caveat to be aware of ? "$@" is always safer than "$*" ? [12:41] $@ keeps the borders between the arguments. $* resplits. [12:43] Rather "$@" does. Both unquoted end up resplitting, but * quoted is a single. [12:45] vila: e.g.: http://pastebin.com/42tNmcBi [12:46] Upshot being that the $* will fail to DTRT any time there are single args with spaces in them. Filenames, paths, a `-m "log message"`, etc. [12:54] fullermd: right, so to be on the safe side, the rule is to always use "$@" then right ? [12:54] argh, mgz effect, sentence too long with the same word at the beginning and the end ;) [12:55] If the goal is "pass args through as if we were aliasing to this other command", yeah. [12:56] yup, which is the case I care the most about [12:57] I think I always missed to read the right part in bash help as $@ == make target [12:58] in my mind and I just couldn't use that in shell [12:58] Let's not go there. It'll bring up memories of the awk scripts I wrote to handle bmake vs gmake... [12:58] urgh, suffering already :) [12:59] Someday, I'll get the time to finish my make replacement, and I won't have to deal with any of that crap again. [13:01] ha, the adage (haha) about the small and beautiful language hidden in the monster applies to make IMHO [13:02] I dunno. Hidden inside the monster of make, there's a language that's small, beautiful, and completely incompetent. [13:02] the fact that it allowed creating such awful results should be used against it [13:02] ... as opposed to the whole, which is large, terrifying, and still pretty incompetent... [13:02] nah, there are some drawbacks (like in any other) but there are also sane ways to use it right [13:03] but I reckon I rarely saw clean and light makefiles :-/ [13:03] err, not reckon, [13:03] recognize ? confess ? concede ? yeah, probably concede [13:03] Spend some time in the bowels of the ports system sometime; that'll teach you how many clean light makefiles there are out there ;p [13:04] 'reckon' would work too. Especially down here. [13:04] exactly my point then [13:04] for example, how many makefiles truly support -j ? [13:05] All of the ones I write, and most of the ones I deal with ;p [13:05] oh, that wasn't ironic ? [13:06] Life is too short to wait for serial compiles... [13:06] You really mean the ports makefiles are correct ? Worth having a look one day then. But you're not talking about the makefiles provided by the packages then right ? [13:06] (Which are the ones I have the most exposure too) [13:07] Well, the compilation is [almost] never part of ports itself; that would come from the upstreams. And I know a fair number of those are broken stupidity (even before we consider they came from automake). But I don't so much deal with those, as just tolerate them temporarily untarred on my system during the build. [13:09] (yeah, let's exclude automake, that's clearly outside of this discussion ;) [13:10] ok, so we seem to agree now that the context is a bit clearer ;) [13:10] But ports itself is an excellent object lesson in the terrors and horrors that away in an almost-competent language. By the time you realize how wrong a choice it is, it's far too late to change and you have to bull ahead anyway. [13:10] s/that away/that await/ [13:11] ha, 'far too late to change'... the weight of compatibility... 'be ready to throw it, you will' or whatever he said ;) [13:17] In practice, anything nontrivial in "make" winds up really just being a framework for calling a giant pile of unrelated obfuscated inline sh(1), with demonic contortions to get the data from A to B. [13:17] right, don't do that in make then is my attempt to answer [13:17] Which is why doing anything in ports involves calling fork() about a thousand times. [13:17] Right. But *way* too late for that ;p [13:18] I mean, make manages dependencies, it has limited support for complex actions [13:18] indeed [13:18] or not [13:18] that's the point, it's an organizational choice not something the tool is really blamable for [13:19] (and I'm not saying I have the magic bullet either...) [13:19] Yeah, but the tool being almost-competent ensures that it will continue to be chosen and then the organization is left to force the last 10% by hook or crook. [13:19] The "solution" is to have tools that are fully competent and tools that are so weak as to be almost worthless. Which is stupid too. [13:20] So the end of life-as-we-know-it is really the best solution, as I've said all along. No software problem is so intractable it can't be solved by a good supernova. [13:21] yeah, it's a well known fact that things are always simpler when you cool down a bit [13:22] so when you coll down a lot, they have to be even simpler [13:22] cool [13:22] spurious tyop, joke alert [13:22] It don't get much cooler than 2.725 Kelvin ;p [13:23] hehe [13:25] Some day I'll write up and submit a patch to make(1) to allow it to read email. Just to see if I can get it accepted. [13:26] hehe, BCc me ;) [14:39] _kbulgrien, too bad you left. The trick to address your issues is to use a local wrapper so you can set anything you want. [14:39] _kbulgrien: After that bzr_remote_path in locations.conf (so you can set it differently for different hosts) and you're done [14:39] _kbulgrien: the wrapper I use is: '#!/bin/sh \n exec python /path/to/bzr "$@"' [14:39] _kbulgrien: In locations.conf I have: '[bzr+ssh://myhost.local] \n bzr_remote_path = /path/on.myhost.local/to/wrapper === yofel_ is now known as yofel [14:42] <_kbulgrien> Oh, ok... that makes sense... almost feels like a doh moment... [14:43] <_kbulgrien> I did figure out the locations.conf part. [15:01] <_kbulgrien> hmm. I'll have to dink with it. My first few attempts to add PYTHONPATH aren't working, but then I've not used fancy hashbangs like that before. [15:06] <_kbulgrien> doh. [15:09] <_kbulgrien> I read \n as literal but then with a little grey matter applied... that didn't make sense. [15:10] <_kbulgrien> I got it working. Thanks vila [15:14] _kbulgrien: PYTHONPATH shouldn't be needed, the bzr script arranges to call its associated bzrlib [15:31] <_kbulgrien> it doesn't actually... PYTHONPATH is required in this situation as bzr barfs up with bzrlib not found without it ( http://pastebin.com/pYrVQNjw ) [15:32] <_kbulgrien> Adding "export PYTHONPATH=${PYTHONPATH}:${HOME}/lib64/python" to the wrapper fixes that error. [15:39] hmm, weird, I haven't needed that but then the various .rc involved when you connect this way and that left me... discouraged [15:40] <_kbulgrien> of course the webhost only has 2.3.4 because of the old version of python, so maybe this was improved in a later version? [15:41] <_kbulgrien> I had to manually install bzr in my home directory since it was not pre-installed. [15:48] urgh, stuck with python 2.4 ? [15:56] vila: oh, I've got an old enough version of subvertpy [15:57] 6.533 bzr-svn: using Subversion 1.4.4 (), subvertpy 0.8.1 [15:58] SamB_MacG5: with bzr-svn trunk ? [15:58] vila: no, doesn't work with trunk [15:58] SamB_MacG5: which version then ? [15:59] 1.1.0, but the test code is broken ... [15:59] ha too bad :-/ [15:59] maybe I should try and fix subvertpy [16:00] SamB_MacG5: check with jelmer for details there, I'm not sure the tests have been thoroughly and regularly run on osx [16:01] vila: I meant *besides* the breakage due to missed URL escaping wrt TMPDIR [16:01] but there ought to be a combination of bzr-svn/subertpy that works for your case (config.py in the installers may be a good start too (sorry I didn't mention that earlier)) [16:01] ^_o [16:02] TMPDIR URL escaping ? [16:02] iMac:pyprof2calltree user$ printenv TMPDIR [16:02] /var/folders/4b/4b+Qm+OQFj8f23emq17tBU+++TM/-Tmp-/ [16:03] I get a bunch of "tests tried to escape" complaints [16:03] ha crap [16:03] due to the plus signs [16:04] I did a fix for that in bzrlib involving using realpath or something [16:04] I'm not sure it's caused by the plus signs, I'd rather bet on some symlink being resolved or not when needed [16:05] It took quite a long time and several shots to get them all, not sure all of them are in 2.3 [16:05] grepping for osx in bzrlib/tests should get you there [16:06] * SamB_MacG5 checks for sure [16:07] https://gist.github.com/a4eff1160a82eb92602d [16:07] * SamB_MacG5 blames his IRC client this time [16:09] * SamB_MacG5 wonders how his IRC client knew how to authenticate itself as him with github, anyway [16:10] vila: okay, it's also possible that the URL got fully escaped, but was then unescaped before being checked against the list ... [16:11] I don't think so, I'm pretty sure the isolation stuff is encoding neutralassume it receives the urls in the right encoding [16:11] I don't think so, I'm pretty sure the isolation stuff is encoding neutral [16:11] gree [16:11] grrrrrRR [16:12] there may a way to temporarily disable the isolation check too [16:13] *may be [16:13] well, it's easier to just add "TMPDIR=/tmp" at the beginning of the commandline [16:14] oh yeah, far easier ! :) [16:15] perfect work-around, you can pretty safely ignore the isolation errors, the check is here to guarantee we don't introduce new leaks [16:15] but all existing tests have passed that check countless times now [16:15] actually, there seems to be more code that doesn't quite work ... [16:15] outside the test harness [16:15] ha, less good, you really need jelmer there then [16:16] so obviously fixing up subvertpy is better ... [16:16] or search launchpad for later fixes [16:16] probably [16:17] SamB_MacG5: did you try a more recent python version by the way ? (just curious) [16:17] oh, no, not yet ... [16:17] ok, let me know about the end result if/when you do [16:17] but that probably wouldn't help a whole lot with bzr-svn? [16:18] I can't answer that, sorry [16:19] in theory, it could be better as well as worse, so the theory isn't really helpful there, you need the expert's specific knowledge ;) [16:19] well, subvertpy trunk will still need fixing to make it build with SVN 1.4... [16:20] SamB_MacG5: and you really need bzr-svn *there* ? (As opposed to another host where you could use recent stuff and publish with bzr+ssh) [16:21] oh, and about config.py, I know it's supposed to have all the right versions listed, but it had issues even *before* I merged from lp:bzr-mac-installlers [16:22] I'm still trying to sort out the right versions of everything to make things mostly work [16:22] eerk, don't ever merge from lp:b-m-i, you should only work on top of lp:b-m-i/2.3 [16:22] it had some nice-looking infrastructure improvements [16:23] hmm [16:23] there are two things here [16:23] one is config.py, use only the lp:/2.3, [16:24] the other is everything else probably which should be safe to use but has never been tried so may have introduced regressions ? [16:24] but config.py, wow, be extra conservative there or you'll run into an endless maze of compat issues [16:25] it's kind of annoying that launchpad download URLs include the series ... [16:25] why ? [16:27] then it would be simple to build the URL from a template and the version number [16:27] I mean, if they didn't [16:28] anyway ... yeah, I knew I would have to revert a lot of the version numbers in config.py when I did the merge [16:28] err, you mean 'bzr lp:' vs 'lp:/' ? [16:28] vila: no, I meant the tarball URLs [16:29] Well, I thought config,py used a format and some params and build the URL from that no ? [16:30] it seems to just run % on all of the strings with the dict as right-hand argument [16:30] the series is often part of the version [16:31] yes, but sometimes the series has varying length ... [16:31] so if you have 'series' and 'version' as parameters or 'minor_version' stuff like that [16:31] well, I suppose that could be done, yes [16:32] though some of these projects are actually rather irregular in their series usage [16:32] so you basically have to just look up the URL anyway... [16:32] * SamB_MacG5 thinks he's thinking of bzrtools [16:32] yeah, so tweaking config.py at release time was generally light enough to never itch enough ;) [16:33] anyhow, yeah, I know about config.py and am, in fact, trying to prepare it for a release ;-) [16:35] * SamB_MacG5 wonders how to disable lazy imports [16:35] yeah, so the rules when doing releases (up to you to follow them or not) was to push for plugins trunks for beta releases, freeze at 2.x.0 time, update only to dedicated series for plugins providing them otherwise stay frozen [16:37] which is another way to say: if you want to do a 2.3.n+1 release, stick with whatever was in 2.3.n *unless* plugins like qbzr released 2.3 targeted point releases [16:37] looking at the history of config.py should give you the most precise view of it, including divergences from these rules ;)