zsh complains about locale_warn on launch

Bug #1073077 reported by Marti
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
Fix Released
Low
Unassigned
cloud-init (Ubuntu)
Fix Released
Low
Unassigned
Precise
Fix Released
Low
Unassigned
Quantal
Fix Released
Low
Scott Moser

Bug Description

== SRU Information ==
[Impact]
 * Users who select zsh as shell and invoke /etc/profile.d scripts
   see an error message like:
    locale_warn:13: * not found
 * This contained fix makes that error message go away, and makes
   the Z99-cloud-locale-test.sh script in /etc/profile.d function
   properly with zsh.
 * The fix adds new code to run 'emulate -L sh' if and only if the variable
   ZSH_NAME is defined (which is only likely to be true if shell is zsh).
   Per zshbuiltins(1), '-L' to 'emulate' indicates that the change in
   behavior should be limited to the containing function.

[Test Case]
 * launch cloud-image instance, get IP address and set 'IP' for use below.
 * install zsh, change the 'ubuntu' user's shell
     LC_ALL=en_US.UTF-8 ssh ubuntu@$IP \
        "sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh"
 * problem is then reproduced with:
     LC_ALL=fr_FR.UTF-8 zsh /etc/profile.d/Z99-cloud-locale-test.sh
   Instead of seeing a message about invalid locale and how to fix it, the
   user will see:
     locale_warn:13: * not found

[Regression Potential]
 * chance for regression is low, since the only real change is contained
   with a condition that will limit it to the case where the shell is zsh.
 * If there was fallout, it would one of:
   * 'emulate -L' being run with non-zsh shell, likely resulting in an error
     message but nothing worse.
   * user's zsh shell being changed to 'emulate sh' (if the '-L' did not
     get applied correctly)

== End SRU Information ==

zsh complains if an '=' occurs in a suffix or prefix shell parameter expansion.

  $ sh -c 'f="foo=bar"; echo ${f%%=*}'
  foo
  $ bash -c 'f="foo=bar"; echo ${f%%=*}'
  foo
  $ zsh -c 'f="foo=bar"; echo ${f%%=*}'
  zsh:1: * not found

It is work-aroundable by escaping the '=' in the shell suffix match with a '\'. Ie:
  $ zsh -c 'f="foo=bar"; echo ${f%%\=*}'
  foo

== original bug report ==

After upgrading my Amazon machine to Ubuntu 12.04, every time I run zsh I get the following output:
    locale_warn:13: * not found

Apparenlty this is caused by the file /etc/profile.d/Z99-cloud-locale-test.sh in the cloud-init package. zsh always outputs an error when a glob like * fails to match any files.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: cloud-init 0.6.3-0ubuntu1
ProcVersionSignature: Ubuntu 3.2.0-32.51-virtual 3.2.30
Uname: Linux 3.2.0-32-virtual i686
ApportVersion: 2.0.1-0ubuntu14
Architecture: i386
Date: Tue Oct 30 11:03:46 2012
Ec2AMI: ami-fb9ca98f
Ec2AMIManifest: (unknown)
Ec2AvailabilityZone: eu-west-1c
Ec2InstanceType: c1.medium
Ec2Kernel: aki-4deec439
Ec2Ramdisk: unavailable
PackageArchitecture: all
ProcEnviron:
 TERM=xterm
 PATH=(custom, user)
 LANG=en_GB.UTF-8
 SHELL=/usr/bin/zsh
SourcePackage: cloud-init
UpgradeStatus: Upgraded to precise on 2012-10-29 (0 days ago)

Related branches

Revision history for this message
Marti (intgr) wrote :
Revision history for this message
Scott Moser (smoser) wrote :

It would seem to me that this is a bug in zsh.
It is demonstrable like this:

ubuntu@quantal$ sh -c 'f="foo=bar"; echo ${f%%=*}'
foo
ubuntu@quantal$ bash -c 'f="foo=bar"; echo ${f%%=*}'
foo
ubuntu@quantal$ zsh -c 'f="foo=bar"; echo ${f%%=*}'
zsh:1: * not found

It is work-aroundable by escaping the '=' in the shell suffix match with a '\'. Ie:
zsh -c 'f="foo=bar"; echo ${f%%\=*}'
foo

description: updated
Changed in cloud-init (Ubuntu):
status: New → Triaged
importance: Undecided → Low
Revision history for this message
Scott Moser (smoser) wrote :

workaround is staged in lp:ubuntu/raring/cloud-init at revno 224.

Changed in cloud-init (Ubuntu):
status: Triaged → Fix Committed
Scott Moser (smoser)
Changed in cloud-init (Ubuntu Precise):
status: New → Triaged
Changed in cloud-init (Ubuntu Quantal):
status: New → Triaged
Changed in cloud-init (Ubuntu Precise):
importance: Undecided → Medium
Changed in cloud-init (Ubuntu Quantal):
importance: Undecided → Medium
Changed in cloud-init (Ubuntu Precise):
importance: Medium → Low
Changed in cloud-init (Ubuntu Quantal):
importance: Medium → Low
Scott Moser (smoser)
Changed in cloud-init (Ubuntu):
status: Fix Committed → Triaged
Revision history for this message
Scott Moser (smoser) wrote :

fixed in revno 697

Changed in cloud-init:
status: New → Fix Committed
importance: Undecided → Low
Revision history for this message
Scott Moser (smoser) wrote :

Forwarded this zsh issue upstream at http://www.zsh.org/mla/workers//2012/msg00686.html

no longer affects: zsh (Ubuntu Quantal)
no longer affects: zsh (Ubuntu Precise)
Revision history for this message
Scott Moser (smoser) wrote :

The fix above will make zsh not complain, but it still doesn't function correctly. This is because:
% zsh -c 'args="a b c"; for f in $args; do echo $f; done'
a b c

while
% sh -c 'args="a b c"; for f in $args; do echo $f; done'
a
b
c

I need to figure out how to make zsh do the right thing, info at http://zsh.sourceforge.net/FAQ/zshfaq03.html

This does actually raise a more general issue, on why zsh, which is not posix compliant in these 2 regards is executing content written for a posix compatible shell (ie, running stuff in /etc/profile.d).

Revision history for this message
Scott Moser (smoser) wrote :

I believe that I have a fix committed for this in cloud-init but I'm not able to reproduce this issue other than explicitly running:
$ zsh /etc/profile.d/Z99-cloud-locale-test.sh
/etc/profile.d/Z99-cloud-locale-test.sh
locale_warn:13: * not found

Ie, it doesn't seem to me that the /etc/profile.d scripts are executed if I just change my shell to zsh by:
  sudo usermod --shell=/bin/zsh $(whoami)

How were you seeing this?

Scott Moser (smoser)
description: updated
Scott Moser (smoser)
Changed in cloud-init:
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.1-0ubuntu1

---------------
cloud-init (0.7.1-0ubuntu1) raring; urgency=low

  * New upstream release.
    * landscape: install landscape-client package if not installed.
      only take action if cloud-config is present (LP: #1066115)
    * landscape: restart landscape after install or config (LP: #1070345)
    * multipart/archive: do not fail on unknown headers in multipart
      mime or cloud-archive config (LP: #1065116).
    * tools/Z99-cloud-locale-test.sh: avoid warning when user's shell is
      zsh (LP: #1073077)
    * fix stack trace when unknown user-data input had unicode (LP: #1075756)
    * split 'apt-update-upgrade' config module into 'apt-configure' and
      'package-update-upgrade-install'. The 'package-update-upgrade-install'
      will be a cross distro module.
    * fix bug where cloud-config from user-data could not affect system_info
      settings (LP: #1076811)
    * add yum_add_repo configuration module for adding additional yum repos
    * fix public key importing with config-drive-v2 datasource (LP: #1077700)
    * handle renaming and fixing up of marker names (LP: #1075980)
      this relieves that burden from the distro/packaging.
    * group config: fix how group members weren't being translated correctly
      when the group: [member, member...] format was used (LP: #1077245)
    * work around an issue with boto > 0.6.0 that lazy loaded the return from
      get_instance_metadata(). This resulted in failure for cloud-init to
      install ssh keys. (LP: #1068801)
    * add power_state_change config module for shutting down stystem after
      cloud-init finishes. (LP: #1064665)
 -- Scott Moser <email address hidden> Wed, 14 Nov 2012 15:18:50 -0500

Changed in cloud-init (Ubuntu):
status: Triaged → Fix Released
Scott Moser (smoser)
Changed in cloud-init (Ubuntu Quantal):
status: Triaged → In Progress
assignee: nobody → Scott Moser (smoser)
Revision history for this message
Steve Langasek (vorlon) wrote : Please test proposed package

Hello Marti, or anyone else affected,

Accepted cloud-init into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.6.3-0ubuntu1.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Precise):
status: Triaged → Fix Committed
tags: added: verification-needed
Revision history for this message
Scott Moser (smoser) wrote :

verified fixed.
% dpkg-query --show cloud-init
cloud-init 0.6.3-0ubuntu1.2

% LC_ALL=fr_FR.UTF-8 zsh /etc/profile.d/Z99-cloud-locale-test.sh
_____________________________________________________________________
WARNING! Your environment specifies an invalid locale.
 This can affect your user experience significantly, including the
 ability to manage packages. You may install the locales by running:

   sudo apt-get install language-pack-fr
     or
   sudo locale-gen fr_FR.UTF-8

To see all available language packs, run:
   apt-cache search "^language-pack-[a-z][a-z]$"
To disable this message for all users, run:
   sudo touch /var/lib/cloud/instance/locale-check.skip
_____________________________________________________________________

tags: added: verification-done
removed: verification-needed
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Hello Marti, or anyone else affected,

Accepted cloud-init into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.7.0-0ubuntu2.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Quantal):
status: In Progress → Fix Committed
tags: removed: verification-done
tags: added: verification-needed
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Hello Marti, or anyone else affected,

Accepted cloud-init into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.7.0-0ubuntu2.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Hello Marti, or anyone else affected,

Accepted cloud-init into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.6.3-0ubuntu1.3 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Scott Moser (smoser)
tags: added: verification-done
removed: verification-needed
Revision history for this message
Chris Halse Rogers (raof) wrote :

Scott: Was that verification for Precise or Quantal or both?

Revision history for this message
Scott Moser (smoser) wrote :

I've verified on both.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.6.3-0ubuntu1.3

---------------
cloud-init (0.6.3-0ubuntu1.3) precise-proposed; urgency=low

  * debian/patches/lp-1070345-landscape-restart-after-change.patch,
    debian/patches/lp-1066115-landscape-install-fix-perms.patch:
    fix missing or incorrect imports (LP: #1070345, LP: #1066115).

cloud-init (0.6.3-0ubuntu1.2) precise-proposed; urgency=low

  * debian/patches/lp-978127-maas-oauth-fix-bad-clock.patch: fix usage of
    oauth in maas data source if local system has a bad clock (LP: #978127)
  * debian/cloud-init.preinst: fix bug where user data scripts re-ran on
    upgrade from 10.04 versions (LP: #1049146)
  * debian/patches/lp-974509-detect-dns-server-redirection.patch: detect dns
    server redirection and disable searching dns for a mirror named
    'ubuntu-mirror' (LP: #974509)
  * debian/patches/lp-1018554-shutdown-message-to-console.patch: write a
    message to the console on system shutdown. (LP: #1018554)
  * debian/patches/lp-1066115-landscape-install-fix-perms.patch: install
    landscape package if needed which will ensure proper permissions on config
    file (LP: #1066115).
  * debian/patches/lp-1070345-landscape-restart-after-change.patch: restart
    landscape after modifying config (LP: #1070345)
  * debian/patches/lp-1073077-zsh-workaround-for-locale_warn.patch: avoid
    warning when user's shell is zsh (LP: #1073077)
  * debian/patches/rework-mirror-selection.patch: improve mirror selection by:
    * allowing region/availability-zone to be part of mirror (LP: #1037727)
    * making mirror selection arch aware (LP: #1028501)
    * allow specification of a security mirror (LP: #1006963)
 -- Scott Moser <email address hidden> Thu, 13 Dec 2012 12:16:56 -0500

Changed in cloud-init (Ubuntu Precise):
status: Fix Committed → Fix Released
Revision history for this message
Colin Watson (cjwatson) wrote : Update Released

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.0-0ubuntu2.2

---------------
cloud-init (0.7.0-0ubuntu2.2) quantal-proposed; urgency=low

  * debian/patches/lp-1090482-fix-cloud-config-mirrors.patch:
    fix issue with cloud-config data in user-data providing mirror
    info (LP: #1073077)

cloud-init (0.7.0-0ubuntu2.1) quantal-proposed; urgency=low

  * debian/patches/lp-1073077-zsh-workaround-for-locale_warn.patch: avoid
    warning when user's shell is zsh (LP: #1073077)
  * debian/patches/lp-1077700-config-drive-fix-ssh-authorized-keys.patch:
    fix bug in config-drive-v2 usage of authoried keys (LP: #1077700)
  * debian/patches/lp-1080985-fix-resize-root-noblock.patch:
    fix 'resize_root: noblock' (LP: #1080985)
  * debian/patches/lp-1076811-fix-userdata-update-to-distro-config.patch:
    fix updates to distro config via user-data. (LP: #1076811)
  * debian/patches/lp-1066115-install-landscape-if-needed.patch:
    fix permissions on landscape config, and ensure landscape client
    is installed if landscape config is given. (LP: #1066115)
  * debian/patches/lp-1070345-restart-landscape-if-needed.patch:
    restart the landscape-client if changes to config were made. (LP: #1070345)
  * debian/patches/lp-1077020-fix-ca-certificates-blanklines.patch: fix
    adding of empty lines in ca-certificates file (LP: #1077020)
 -- Scott Moser <email address hidden> Mon, 17 Dec 2012 10:15:03 -0500

Changed in cloud-init (Ubuntu Quantal):
status: Fix Committed → Fix Released
Scott Moser (smoser)
no longer affects: zsh (Ubuntu)
Revision history for this message
James Falcon (falcojr) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.