[Nagiosplug-devel] subst.in patch
Phil Dibowitz
phil at ipom.com
Tue Aug 30 08:34:07 CEST 2005
Ton Voon wrote:
> Phil,
>
> I've been taking a look at this. I could not recreate your problem. I
> ran a ./configure with /usr/local/nagios/libexec in existence and then
> ran a ./configure after rm -r /usr/local/nagios and all the
> substitutions for the perl scripts in plugins-scripts were the same.
> There is a specific part of subst.in which says:
>
> # used to replace "use lib utils.pm" with "use lib @libexecdir"
> #
> function led() {
> led1 = "@libexecdir@";
>
> So I think your diagnosis is wrong: the libexecdir is being taken from
> the configure script and passing through to subst.in correctly.
>
> I put a debugging line into the main awk loop here:
>
> # Specific programs
>
> #
> /^[^#]/ && /(\/.*)?\/(bin|sbin|lib|libexec)\// {
> print STDERR "Got here!!!: "$0;
> #match($0,/(\/.*)?\/(bin|sbin|lib|libexec)\/[-_a-zA-Z0-9]+/);
> #start=RSTART+RLENGTH;
> #c=substr($0,RSTART,RLENGTH);
> #sub(c,which(c,path));
> }
I'm not sure what this proves - my debugging showed I always got there
as well.
> Eg, check_log.in has GREP="/bin/grep", but after running make
> check_log, it replaces that line with GREP="/usr/bin/grep", which is
> the location of grep on my MacOSX system.
Ah. In that case the script is still in error, but not completely in the
way I thought it was. It's checking for things that may nto be in
libexec - great for grep. But if it doesn't find it, it gives it a
relative path, and that's an *incorrect* action. In this case which()
should return whatever it was sent.
In theory, I don't think the "use" lines should be passed through the
"which" functions at all.... since "which utils.pm" or "which
/usr/lib/nagios/plugins" never makes sense anyway...
One of those two needs to be remedied.
> You mentioned something about building the plugins in a chroot
> environment. My guess is that your chroot is missing a lot of these
> commands, and thus the substitutions are failing.
The chroot has all the basics... it's just using mach(1) to build and
tear it down each time to ensure it's always identical.
> So I am going to reject your patch because it looks like there is
> specific functionality the which routine is providing, even though it
> is failing in your specialised case. However, I will try and make the
> comments more informative.
I think the patch is over-zealous, but a fix is still needed as
described above.
> Long term, the substitutions shouldn't be done at compile time, but
> should be done at configure time instead. However, this will be a
> tougher job to sort out. I welcome any patches in this area.
Agreed, but in the short term, I think which() should be fixed to never
replace "/usr/lib/nagios/plugins" whith "nagios/plugins" because that's
never a good thing.
--
Phil Dibowitz phil at ipom.com
Freeware and Technical Pages Insanity Palace of Metallica
http://www.phildev.net/ http://www.ipom.com/
"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."
- Benjamin Franklin, 1759
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
URL: <http://nagios-plugins.org/archive/devel/attachments/20050830/6d2b3412/attachment.sig>
More information about the Devel
mailing list