dpierce@ucsd.edu
2003-Dec-11 19:33 UTC
[Rd] bug + insufficient doc in R CMD INSTALL (PR#5703)
Hello,
I believe I have found a bug in the R INSTALL script
(src/scripts/INSTALL.in). The problem comes up when a user tries to
specify more than one "--config-args" (or, I imagine,
"--config-vars") on
the R CMD INSTALL line. In such a case, no error message is generated, but
the first specification is silently overwritten by the second
specification. The process therefore fails.
So for instance, a user contacted me after typing this:
R CMD INSTALL
--configure-args=-with-netcdf_incdir=/usr/local/netcdf/include
--configure-args=-with-netcdf_libdir=/usr/local/netcdf/lib ncdf_1.1.tar.gz
and it failed (they contacted me because I'm the maintainer of the ncdf
package).
I would say that this is both a bug and something that needs more
documentation. It's a bug because it accepts the incorrect line without
giving an error message, but does not parse it "as expected." And I
would
say it needs more documentation because I looked through the R docs on
this, and could find no place where the correct syntax is given. You
probably already know (I didn't), but the syntax should be this instead:
R CMD INSTALL
--configure-args="-with-netcdf_incdir=/usr/local/netcdf/include
-with-netcdf_libdir=/usr/local/netcdf/lib" ncdf_1.1.tar.gz
and, of course, although I'm using the ncdf package as an example for
concreteness, this is a general problem for any R package.
The place in INSTALL.in that seems to be problematic is this bit:
----------------------------------
configure_argsconfigure_varswith_package_versions=false
save="CHECK"
save_argsfake=false
while test -n "${1}"; do
case ${1} in
-h|--help)
echo "${usage}"; exit 0 ;;
...skip stuff...
--configure-args=*)
configure_args=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
--configure-vars=*)
configure_vars=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
---------------------------------
It seems pretty clear that if multiple --configure-args are given on the
command line, they are silently overwritten.
One possible fix is to check and make sure the configure_args variable is
empty before setting it, as follows:
-----------------------------------
--configure-args=*)
if test x${configure_args} != x; then
echo "INSTALL: command line error: only one --configure_args
argument can be given. To specify multiple args to the configure
script, put them in quotes, separated by a space, like this:
--configure_args=\"--config_arg_1 --config_arg_2\""
exit 1
fi
configure_args=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
--configure-vars=*)
if test x${configure_vars} != x; then
echo "INSTALL: command line error: only one --configure_vars
argument can be given. To specify multiple vars to the configure
script, put them in quotes, separated by a space, like this:
--configure_vars=\"--config_vars_1 --config_vars_2\""
exit 1
fi
configure_vars=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
-------------------------------------
Another option would be to concatenate multiple --configure-args arguments
... I imagine it's your call on which way to go.
Regards,
--Dave
---------------------------------------------------------------
David W. Pierce / Climate Research Division
Scripps Inst. Oceanog. / (858) 534-8276 (voice)
dpierce@ucsd.edu / (858) 534-8561 (fax)
>>>>> dpierce writes:> Hello, > I believe I have found a bug in the R INSTALL script > (src/scripts/INSTALL.in). The problem comes up when a user tries to > specify more than one "--config-args" (or, I imagine, "--config-vars") on > the R CMD INSTALL line. In such a case, no error message is generated, but > the first specification is silently overwritten by the second > specification. The process therefore fails.> So for instance, a user contacted me after typing this:> R CMD INSTALL > --configure-args=-with-netcdf_incdir=/usr/local/netcdf/include > --configure-args=-with-netcdf_libdir=/usr/local/netcdf/lib ncdf_1.1.tar.gz> and it failed (they contacted me because I'm the maintainer of the ncdf > package).> I would say that this is both a bug and something that needs more > documentation. It's a bug because it accepts the incorrect line without > giving an error message, but does not parse it "as expected." And I would > say it needs more documentation because I looked through the R docs on > this, and could find no place where the correct syntax is given. You > probably already know (I didn't), but the syntax should be this instead:> R CMD INSTALL > --configure-args="-with-netcdf_incdir=/usr/local/netcdf/include > -with-netcdf_libdir=/usr/local/netcdf/lib" ncdf_1.1.tar.gz> and, of course, although I'm using the ncdf package as an example for > concreteness, this is a general problem for any R package.> The place in INSTALL.in that seems to be problematic is this bit:> ...I would have thought that the current behavior is what everyone would expect to happen: I don't recall having come across a program where command line options accumulate. If really necessary, we can of course say so. I don't think we should change the code, as then we would need to handle *all* command line arguments accordingly, or, even worse, special-case some command line args ... -k