Bug 1126235

Summary: PROMPT_COMMAND does not include required escape codes
Product: [Fedora] Fedora Reporter: Corey Farrell <git>
Component: mockAssignee: Miroslav Suchý <msuchy>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: low Docs Contact:
Priority: unspecified    
Version: rawhideCC: jdisnard, mebrown, msimacek, msuchy, praiskup, williams
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: mock-1.2.3-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-12-12 04:08:04 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Description Flags
Fix PROMPT_COMMAND default definition
Fix PROMPT_COMMAND default definition (attempt 2) none

Description Corey Farrell 2014-08-03 21:57:15 UTC
Created attachment 923698 [details]
Fix PROMPT_COMMAND default definition

Description of problem:
When running 'mock --shell', PROMPT_COMMAND is incorrect (does not set window title).  This is due to the lack of \033]0; and \007.

Version-Release number of selected component (if applicable):
1.1.39 and git master

How reproducible:
Every time

Steps to Reproduce:
1. Run mock --shell

Actual results:
"<mock-chroot>" is prepended to the command prompt.  This also causes spacing error's if you press up/down to go through command history.

Expected results:
Window title should be "<mock-chroot>", command prompt should not be prepended.

Additional info:
My patch switches PROMPT_COMMAND from 'echo -n' to 'printf'.  The '-e' parameter could be used with echo, but I decided to use a command closer to what is used in the CentOS PROMPT_COMMAND.

Comment 1 Corey Farrell 2014-08-04 01:31:29 UTC
Created attachment 923719 [details]
Fix PROMPT_COMMAND default definition (attempt 2)

First patch was missing a definition

Comment 2 Jon Disnard 2014-08-07 19:52:57 UTC
Going with printf in the PROMPT_CMD is probably a good idea.

Setting the terminal window makes sense for xterm type situations. 

But what about when mock is operated from a root console? 
(think headless server, with serial console)

Hopefully the escape sequences have no impact in windowless terminals.
(E.G. produce garbled text on the prompt)

Can someone please test the proposed patch in a dumb-terminal type setup to ensure this does not introduce a bug?

Comment 3 Jon Disnard 2014-08-07 20:43:00 UTC
Hey also, this is not a bug fix.

More like an enhancement request.

Comment 4 Corey Farrell 2014-08-08 23:48:50 UTC
Actually the existing PROMPT_COMMAND does cause issues currently with certain commands in history.  Maybe it's a bug in bash.  For example given the following history:
ls -lh build
echo "hello"
SOMEVAR="some value"
echo "nothing"

if you arrow up through history, setting the variable causes the prompt to be displayed incorrectly.  Going back through the above history:
<mock-chroot>[root@mock1 ~]# echo "nothing"
<mock-chroot>[root@mock1 ~]# SOMEVAR="some value"
<mock-chroot>[roecho "hello"

In this example it seems to be the line that sets a bash variable which causes the next arrow-up through history to truncate the prompt, seems to be based on the length of $PS1 output, instead of being the length of output from "`$PROMPT_COMMAND`$PS1".

So I still believe this is a bug, the prompt display should not be broken like this.  If my patch poses a problem for dumb terminals then we may need to clear PROMPT_COMMAND and consider prepending $PS1 instead.

As for the (possible) bug in bash, I am running bash-4.1.2-15.el6_4.x86_64 (CentOS 6).  What is the best way to ensure this bug is seen by those who work on bash?

Comment 5 Miroslav Suchý 2014-10-20 14:29:27 UTC
It does not work for me - I am using konsole from KDE (however I can confirm corruption of prompt as reproduced in #4).
I search how title bar should be set and it seems that it is non-trivial:

Your code seems to work in xterm - although to preserve <moch-chroot> text even on PS1 it should be:
 environ['PROMPT_COMMAND'] = 'printf "\033]0;<mock-chroot>\007<mock-chroot>"'

with this modification there is no regression in headless mode (did not print garbage), in konsole (did not set title, but neither previously) and works now in xterm.

Therefore I see it as safe to accept.
With small modification committed as 03aa277

Comment 6 Fedora Update System 2014-11-16 17:37:29 UTC
mock-1.2.1-1.fc21 has been submitted as an update for Fedora 21.

Comment 7 Fedora Update System 2014-11-16 17:38:51 UTC
mock-1.2.1-1.fc20 has been submitted as an update for Fedora 20.

Comment 8 Fedora Update System 2014-11-16 17:39:42 UTC
mock-1.2.1-1.el7 has been submitted as an update for Fedora EPEL 7.

Comment 9 Fedora Update System 2014-11-16 17:40:43 UTC
mock-1.2.1-1.el6 has been submitted as an update for Fedora EPEL 6.

Comment 10 Fedora Update System 2014-11-17 06:29:49 UTC
Package mock-1.2.1-1.fc20:
* should fix your issue,
* was pushed to the Fedora 20 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing mock-1.2.1-1.fc20'
as soon as you are able to.
Please go to the following url:
then log in and leave karma (feedback).

Comment 11 Fedora Update System 2014-12-04 12:07:07 UTC
mock-1.2.3-1.fc21 has been submitted as an update for Fedora 21.

Comment 12 Fedora Update System 2014-12-04 12:10:36 UTC
mock-1.2.3-1.fc20 has been submitted as an update for Fedora 20.

Comment 13 Fedora Update System 2014-12-04 12:11:33 UTC
mock-1.2.3-1.el7 has been submitted as an update for Fedora EPEL 7.

Comment 14 Fedora Update System 2014-12-12 04:08:04 UTC
mock-1.2.3-1.fc21 has been pushed to the Fedora 21 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 15 Fedora Update System 2014-12-17 04:43:06 UTC
mock-1.2.3-1.fc20 has been pushed to the Fedora 20 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 16 Fedora Update System 2015-01-06 02:06:51 UTC
mock-1.2.3-1.el7 has been pushed to the Fedora EPEL 7 stable repository.  If problems still persist, please make note of it in this bug report.