unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#927: vc-bzr.el with cygwin bzr
@ 2008-09-08  9:51 Phillip Lord
  2008-09-09 14:22 ` Stefan Monnier
       [not found] ` <EMEW-k88FN4d513b6d9437cad00641ec17907dfd5b8-jwvmyihh03v.fsf-monnier+emacsbugreports@gnu.org>
  0 siblings, 2 replies; 6+ messages in thread
From: Phillip Lord @ 2008-09-08  9:51 UTC (permalink / raw)
  To: bug-gnu-emacs



Problem: vc-bzr.el doesn't work with cygwin bzr

I've recently been trying out bzr on windows and was pleased to find
vc-bzr.el. It works well with the windows bzr executable but,
unfortunately, this doesn't deal with symlinks which is important to me.
So I tried cygwin instead. Unfortunately vc-bzr.el doesn't work with
this failing with "No such file or program" errors. vc-svn and vc-cvs
work fine with cygin. 


Cause:

bzr is a python file. On cygwin it uses a magic #!/usr/bin/python line,
which vc "start-process" doesn't work with. 

I tested this with following hack, which launches python and gives the
location of bzr (under cygwin as it's cygwin python) as an argument. 

(defun vc-bzr-command (bzr-command buffer okstatus file-or-list &rest args)
  "Wrapper round `vc-do-command' using `vc-bzr-program' as COMMAND.
Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and
`LC_MESSAGES=C' to the environment."
  (let ((process-environment
         (list* "BZR_PROGRESS_BAR=none" ; Suppress progress output (bzr >=0.9)
                "LC_MESSAGES=C"         ; Force English output
                process-environment)))

    (apply 'vc-do-command (or buffer "*vc*") okstatus "python"
           file-or-list "/usr/bin/bzr" bzr-command args)))

vc-bzr now works. 


Suggested Solution:

My hack is platform specific. A better solution would be, to modify
vc-bzr-command to be either of the form "bzr-program-name" or '("python
name" "bzr name"). vc-bzr-command would need to be modified to cope.
There is couple of other places vc-bzr-command is used which would need
changing also. 


Thanks for your attention!

Phil 











^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#927: vc-bzr.el with cygwin bzr
  2008-09-08  9:51 bug#927: vc-bzr.el with cygwin bzr Phillip Lord
@ 2008-09-09 14:22 ` Stefan Monnier
       [not found] ` <EMEW-k88FN4d513b6d9437cad00641ec17907dfd5b8-jwvmyihh03v.fsf-monnier+emacsbugreports@gnu.org>
  1 sibling, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2008-09-09 14:22 UTC (permalink / raw)
  To: Phillip Lord; +Cc: bug-gnu-emacs, 927

> My hack is platform specific. A better solution would be, to modify
> vc-bzr-command to be either of the form "bzr-program-name" or '("python
> name" "bzr name"). vc-bzr-command would need to be modified to cope.
> There is couple of other places vc-bzr-command is used which would need
> changing also. 

A better solution would be to write a w32 wrapper for Bzr (an plain w32
executable that runs python with the bzr script), so that it does not
rely on cygwin's own handling of #!

After all, does Cygwin's bzr work with any other program that's not part
of Cygwin?  I'd guess not, which is why I think the problem is not
specific to Emacs.


        Stefan







^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#927: vc-bzr.el with cygwin bzr
       [not found] ` <EMEW-k88FN4d513b6d9437cad00641ec17907dfd5b8-jwvmyihh03v.fsf-monnier+emacsbugreports@gnu.org>
@ 2008-09-09 14:44   ` Phillip Lord
  2008-09-09 17:22     ` Stefan Monnier
       [not found]     ` <EMEW-k88IMHa0452283789433ad2c459dd52d31d774-jwvsks9qlqs.fsf-monnier+emacsbugreports@gnu.org>
  0 siblings, 2 replies; 6+ messages in thread
From: Phillip Lord @ 2008-09-09 14:44 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: bug-gnu-emacs, 927

>>>>> "Stefan" == Stefan Monnier <monnier@iro.umontreal.ca> writes:

  >> My hack is platform specific. A better solution would be, to modify
  >> vc-bzr-command to be either of the form "bzr-program-name" or
  >> '("python name" "bzr name"). vc-bzr-command would need to be
  >> modified to cope. There is couple of other places vc-bzr-command is
  >> used which would need changing also.

  Stefan> A better solution would be to write a w32 wrapper for Bzr (an
  Stefan> plain w32 executable that runs python with the bzr script), so
  Stefan> that it does not rely on cygwin's own handling of #!

I don't think that the two contradict. Both would be possible. But, yes,
a bzr.bat in cygwin would probably solve the problem. 

  Stefan> After all, does Cygwin's bzr work with any other program
  Stefan> that's not part of Cygwin? I'd guess not, which is why I think
  Stefan> the problem is not specific to Emacs.

This depends on how they launch bzr; for vc-bzr, for instance, if vc
used an external shell-command instead of start-process it would work.
Even if emacs was using dos as it's shell, I could reconfigure
bzr-command to be "c:/cygwin/bin/python bzr"; unfortunately, you can't
do this with start-process because the space is interpreted as part of
the command name, and bzr not considered an argument. 

Given that the change I suggested is quite small, is there a problem
with putting it in; I'm willing to send in a patch if you wish. It would
also support the use case where one the user wishes to use a specific
python to run bzr. It should be transparent to other users. 

In the meantime, if I can work out how to do it, I'll write to the
cygwin packager and ask for a bzr.bat to be added to cygwin (having
tested that it works). As you say, it would help to make it more
usuable, irrespective of emacs. 

Phil






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#927: vc-bzr.el with cygwin bzr
  2008-09-09 14:44   ` Phillip Lord
@ 2008-09-09 17:22     ` Stefan Monnier
       [not found]     ` <EMEW-k88IMHa0452283789433ad2c459dd52d31d774-jwvsks9qlqs.fsf-monnier+emacsbugreports@gnu.org>
  1 sibling, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2008-09-09 17:22 UTC (permalink / raw)
  To: Phillip Lord; +Cc: bug-gnu-emacs, 927

> Given that the change I suggested is quite small, is there a problem
> with putting it in;

Yes, because I think it's just a workaround whereas a real bug fix is
easy to do.  Don't use a hack when you can use a clean solution.


        Stefan






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#927: vc-bzr.el with cygwin bzr
       [not found]     ` <EMEW-k88IMHa0452283789433ad2c459dd52d31d774-jwvsks9qlqs.fsf-monnier+emacsbugreports@gnu.org>
@ 2008-09-10 14:33       ` Phillip Lord
  2008-09-11 16:32       ` Phillip Lord
  1 sibling, 0 replies; 6+ messages in thread
From: Phillip Lord @ 2008-09-10 14:33 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: bug-gnu-emacs, 927

>>>>> "Stefan" == Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

  >> Given that the change I suggested is quite small, is there a
  >> problem with putting it in;

  Stefan> Yes, because I think it's just a workaround whereas a real bug
  Stefan> fix is easy to do. Don't use a hack when you can use a clean
  Stefan> solution.

Stefan

I'm not 100% I agree that this is a hack -- enabling people to specify
a python interpreter is useful outside of this difficulty. 

Still, the batch file solution also works; as you say, it's works for
other things also (DVC.el for instance!). I'll see whether I can get
this into the cygwin package so that it just does the right thing. 

Thanks for your help!

Phil






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#927: vc-bzr.el with cygwin bzr
       [not found]     ` <EMEW-k88IMHa0452283789433ad2c459dd52d31d774-jwvsks9qlqs.fsf-monnier+emacsbugreports@gnu.org>
  2008-09-10 14:33       ` Phillip Lord
@ 2008-09-11 16:32       ` Phillip Lord
  1 sibling, 0 replies; 6+ messages in thread
From: Phillip Lord @ 2008-09-11 16:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: bug-gnu-emacs, 927

>>>>> "Stefan" == Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

  >> Given that the change I suggested is quite small, is there a problem with
  >> putting it in;

  Stefan> Yes, because I think it's just a workaround whereas a real bug fix
  Stefan> is easy to do. Don't use a hack when you can use a clean solution.

Stefan

I tried cygwin, but the answer seems to be no. 

I understand why you don't want to amend vc-bzr; would it at least be possible
to put a comment into "known bugs" or commentary, saying that it works with
cygwin but needs a wrapper script? This would at least save people wishing to
do this from having to hunt through the code? 

Thanks for your time; I'll stop mailing about this now. 

Phil







^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-09-11 16:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-08  9:51 bug#927: vc-bzr.el with cygwin bzr Phillip Lord
2008-09-09 14:22 ` Stefan Monnier
     [not found] ` <EMEW-k88FN4d513b6d9437cad00641ec17907dfd5b8-jwvmyihh03v.fsf-monnier+emacsbugreports@gnu.org>
2008-09-09 14:44   ` Phillip Lord
2008-09-09 17:22     ` Stefan Monnier
     [not found]     ` <EMEW-k88IMHa0452283789433ad2c459dd52d31d774-jwvsks9qlqs.fsf-monnier+emacsbugreports@gnu.org>
2008-09-10 14:33       ` Phillip Lord
2008-09-11 16:32       ` Phillip Lord

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).