Bug 172692 - Defines not getting expanded
Defines not getting expanded
Product: Red Hat Enterprise Linux 3
Classification: Red Hat
Component: autofs (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jeff Moyer
Brock Organ
: Regression
Depends On:
  Show dependency treegraph
Reported: 2005-11-08 09:46 EST by Bastien Nocera
Modified: 2007-11-30 17:07 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2006-01-09 17:15:10 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
autofs-eval-options.patch (363 bytes, patch)
2005-11-08 09:46 EST, Bastien Nocera
no flags Details | Diff

  None (edit)
Description Bastien Nocera 2005-11-08 09:46:06 EST

When using defines in the auto.master, the variables that require shell
expansion aren't getting substituted.
For example, in auto.master:
/mnt/testnfs /etc/auto.testnfs -D OSREL=RHEL-4 -D OSUPDATE=U2 -D OSVER=AS -D
OSARCH=`uname -i`

And in auto.testnfs:
current -ro,hard,intr,wsize=8192,rsize=8192

You will get errors such as:

Nov  7 09:03:22 localhost automount[4017]: >> mount:
tree failed, reason given by server: Permission denied

The patch below evaluates the additional options so that shell commands can be
expanded as necessary
Comment 1 Bastien Nocera 2005-11-08 09:46:07 EST
Created attachment 120813 [details]
Comment 2 Jeff Moyer 2005-11-08 13:31:14 EST
Shell expansion is not supported in autofs configuration files.  If you want
shell expansion, try using a program map.
Comment 4 Jeff Moyer 2005-11-10 13:54:49 EST
This functionality is neither documented nor supported.  I understand the
"preserve functionality, bug for bug," mentality, but the ability to do this is
going away in the next release of our operating system, anyway.

The following variables are defined by default:

ARCH	The application architecture is derived from the output of uname -m
CPU	The output of uname -p

Why can't the customer use one of these?
Comment 5 Chris Kloiber 2005-11-10 14:20:43 EST
Customer's original auto.* files are attached to the IT#, but basically they
have different versions of their custom application for particular arch and base
kernel version, so they are doing a claculation like:

-D OSREL=`uname -r | sed s/-[0-9.]*/-/

Which will return '2.4.21' on any RHEL-3 kernel. So basically they need more
flexibility than just ARCH and CPU.
Comment 6 Jeff Moyer 2005-11-10 14:46:35 EST
Why was this changed to MODIFIED?  I'm moving it back to ASSIGNED, with a note
that I'm still not convinced that this is something which should be "fixed."
Comment 7 Chris Kloiber 2005-11-10 14:51:30 EST
My supervisor told me to change the status off of NEEDINFO_REPORTER, and there
was no better status I could see as I don't feel I have the right to set it as
Comment 9 Greg Baker 2005-11-28 12:32:04 EST

Just wanted a clarification on Comment #2

"Shell expansion is not supported in autofs configuration files.  If you want
shell expansion, try using a program map."

Is the shell expansion example below supported?

$ uname -a
Linux minuet 2.4.21-37.EL #1 Wed Sep 7 13:49:00 EDT 2005 x86_64 unknown unknown

$ rpm -qa | grep autofs

$ cat /etc/sysconfig/autofs 
LOCALOPTIONS='tcp -D OS=k24_g23_64'

$ ypcat -k auto.tool | grep OS
pandora -ro,intr  escher:/vol/vol2/pandora/pandora-${OS} 

We've been doing this (set OS variable in autofs startup + using OS variable
expansion in auto.* NIS maps) for years...

$ man 5 autofs

   Variable Substitution
       Additional entries can be defined with the -Dvariable=Value  map-option
       to automount(8).

$ man 8 automount

                     Replace variable with value in map substitutions.


Comment 10 Jeff Moyer 2005-11-28 12:42:53 EST
There is a table of supported variable substitutions in the automount man page
for Solaris:


Those expansions are, of course, supported.  You can also use -D to define a
custom map variable, as you note above.  You cannot, however, use shell
expressions in this expression.

-D foo=bar

is supported

-D foo=`uname -r`

is not.

Comment 11 Jeff Moyer 2006-01-09 17:15:10 EST
an automounter map is a configuration file.  It simply does not support shell
expansion.  Yes, it happened to work in previous versions, but it will not
continue to work in the future.

Have the customer try to use program maps to generate custom variables.

Note You need to log in before you can comment on or make changes to this bug.