help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

'make' fails with "Argument list too long" message


From: Sergei Steshenko
Subject: 'make' fails with "Argument list too long" message
Date: Wed, 28 Nov 2012 17:47:03 -0800 (PST)

Hello,

as I am again rebuilding octave-3.6.2 with somewhat longer list of 
dependencies, 'make' fails:

"
   /mnt/sdb8/sergei/AFSWD_debug/build/octave-3.6.2/src/Makefile:9063    File 
`oct-conf.h' does not exist.
  /mnt/sdb8/sergei/AFSWD_debug/build/octave-3.6.2/src/Makefile:9063     Must 
remake target `oct-conf.h'.
making oct-conf.h from oct-conf.h.in
make[2]: execvp: /mnt/sdb8/sergei/AFSWD_debug/20121021/bash-4.2/bin/bash: 
Argument list too long
Makefile:9063: *** [oct-conf.h] Error 127
".


The failing part in context:

   9063 oct-conf.h: oct-conf.h.in Makefile
   9064         @$(do_subst_config_vals)
   9065
.

And, in particular, the offending part is 'do_subst_config_vals':

"

   8130 define do_subst_config_vals
   8131 echo "making $@ from $<"
   8132 $(SED) < $< \
   8133   -e "s|%NO_OCT_FILE_STRIP%|${NO_OCT_FILE_STRIP}|" \
   8134   -e "s|%OCTAVE_BINDIR%|\"${bindir}\"|" \
   8135   -e "s|%OCTAVE_CONF_ALL_CFLAGS%|\"${ALL_CFLAGS}\"|" \
   8136   -e "s|%OCTAVE_CONF_ALL_CXXFLAGS%|\"${ALL_CXXFLAGS}\"|" \
   8137   -e "s|%OCTAVE_CONF_ALL_FFLAGS%|\"${ALL_FFLAGS}\"|" \
   8138   -e "s|%OCTAVE_CONF_ALL_LDFLAGS%|\"${ALL_LDFLAGS}\"|" \
   8139   -e "s|%OCTAVE_CONF_AMD_CPPFLAGS%|\"${AMD_CPPFLAGS}\"|" \
   8140   -e "s|%OCTAVE_CONF_AMD_LDFLAGS%|\"${AMD_LDFLAGS}\"|" \
   8141   -e "s|%OCTAVE_CONF_AMD_LIBS%|\"${AMD_LIBS}\"|" \
   8142   -e "s|%OCTAVE_CONF_AR%|\"${AR}\"|" \
   8143   -e "s|%OCTAVE_CONF_ARFLAGS%|\"${ARFLAGS}\"|" \
   8144   -e "s|%OCTAVE_CONF_ARPACK_CPPFLAGS%|\"${ARPACK_CPPFLAGS}\"|" \
   8145   -e "s|%OCTAVE_CONF_ARPACK_LDFLAGS%|\"${ARPACK_LDFLAGS}\"|" \
   8146   -e "s|%OCTAVE_CONF_ARPACK_LIBS%|\"${ARPACK_LIBS}\"|" \
   8147   -e "s|%OCTAVE_CONF_BLAS_LIBS%|\"${BLAS_LIBS}\"|" \
   8148   -e "s|%OCTAVE_CONF_CAMD_CPPFLAGS%|\"${CAMD_CPPFLAGS}\"|" \
   8149   -e "s|%OCTAVE_CONF_CAMD_LDFLAGS%|\"${CAMD_LDFLAGS}\"|" \
   8150   -e "s|%OCTAVE_CONF_CAMD_LIBS%|\"${CAMD_LIBS}\"|" \
   8151   -e "s|%OCTAVE_CONF_CANONICAL_HOST_TYPE%|\"${canonical_host_type}\"|" \
   8152   -e "s|%OCTAVE_CONF_CARBON_LIBS%|\"${CARBON_LIBS}\"|" \
   8153   -e "s|%OCTAVE_CONF_CC%|\"${CC}\"|" \
   8154   -e "s|%OCTAVE_CONF_CC_VERSION%|\"${CC_VERSION}\"|" \
   8155   -e "s|%OCTAVE_CONF_CCOLAMD_CPPFLAGS%|\"${CCOLAMD_CPPFLAGS}\"|" \
   8156   -e "s|%OCTAVE_CONF_CCOLAMD_LDFLAGS%|\"${CCOLAMD_LDFLAGS}\"|" \
   8157   -e "s|%OCTAVE_CONF_CCOLAMD_LIBS%|\"${CCOLAMD_LIBS}\"|" \
   8158   -e "s|%OCTAVE_CONF_CFLAGS%|\"${CFLAGS}\"|" \
   8159   -e "s|%OCTAVE_CONF_CHOLMOD_CPPFLAGS%|\"${CHOLMOD_CPPFLAGS}\"|" \
   8160   -e "s|%OCTAVE_CONF_CHOLMOD_LDFLAGS%|\"${CHOLMOD_LDFLAGS}\"|" \
   8161   -e "s|%OCTAVE_CONF_CHOLMOD_LIBS%|\"${CHOLMOD_LIBS}\"|" \
   8162   -e "s|%OCTAVE_CONF_COLAMD_CPPFLAGS%|\"${COLAMD_CPPFLAGS}\"|" \
   8163   -e "s|%OCTAVE_CONF_COLAMD_LDFLAGS%|\"${COLAMD_LDFLAGS}\"|" \
   8164   -e "s|%OCTAVE_CONF_COLAMD_LIBS%|\"${COLAMD_LIBS}\"|" \
   8165   -e "s|%OCTAVE_CONF_CPICFLAG%|\"${CPICFLAG}\"|" \
   8166   -e "s|%OCTAVE_CONF_CPPFLAGS%|\"${CPPFLAGS}\"|" \
   8167   -e "s|%OCTAVE_CONF_CURL_CPPFLAGS%|\"${CURL_CPPFLAGS}\"|" \
   8168   -e "s|%OCTAVE_CONF_CURL_LDFLAGS%|\"${CURL_LDFLAGS}\"|" \
   8169   -e "s|%OCTAVE_CONF_CURL_LIBS%|\"${CURL_LIBS}\"|" \
   8170   -e "s|%OCTAVE_CONF_CXSPARSE_CPPFLAGS%|\"${CXSPARSE_CPPFLAGS}\"|" \
   8171   -e "s|%OCTAVE_CONF_CXSPARSE_LDFLAGS%|\"${CXSPARSE_LDFLAGS}\"|" \
   8172   -e "s|%OCTAVE_CONF_CXSPARSE_LIBS%|\"${CXSPARSE_LIBS}\"|" \
   8173   -e "s|%OCTAVE_CONF_CXX%|\"${CXX}\"|" \
   8174   -e "s|%OCTAVE_CONF_CXXCPP%|\"${CXXCPP}\"|" \
   8175   -e "s|%OCTAVE_CONF_CXXFLAGS%|\"${CXXFLAGS}\"|" \
   8176   -e "s|%OCTAVE_CONF_CXXPICFLAG%|\"${CXXPICFLAG}\"|" \
   8177   -e "s|%OCTAVE_CONF_CXX_VERSION%|\"${CXX_VERSION}\"|" \
   8178   -e "s|%OCTAVE_CONF_DEFAULT_PAGER%|\"${DEFAULT_PAGER}\"|" \
   8179   -e "s|%OCTAVE_CONF_DEPEND_FLAGS%|\"${DEPEND_FLAGS}\"|" \
   8180   -e 
"s|%OCTAVE_CONF_DEPEND_EXTRA_SED_PATTERN%|\"${DEPEND_EXTRA_SED_PATTERN}\"|" \
   8181   -e "s|%OCTAVE_CONF_DL_LD%|\"${DL_LD}\"|" \
   8182   -e "s|%OCTAVE_CONF_DL_LDFLAGS%|\"${DL_LDFLAGS}\"|" \
   8183   -e "s|%OCTAVE_CONF_DL_LIBS%|\"${DL_LIBS}\"|" \
   8184   -e "s|%OCTAVE_CONF_EXEEXT%|\"${EXEEXT}\"|" \
   8185   -e "s|%OCTAVE_CONF_F77%|\"${F77}\"|" \
   8186   -e 
"s|%OCTAVE_CONF_F77_FLOAT_STORE_FLAG%|\"${F77_FLOAT_STORE_FLAG}\"|" \
   8187   -e "s|%OCTAVE_CONF_F77_INTEGER_8_FLAG%|\"${F77_INTEGER_8_FLAG}\"|" \
   8188   -e "s|%OCTAVE_CONF_FC%|\"${FC}\"|" \
   8189   -e "s|%OCTAVE_CONF_FFLAGS%|\"${FFLAGS}\"|" \
   8190   -e "s|%OCTAVE_CONF_FFTW3_CPPFLAGS%|\"${FFTW3_CPPFLAGS}\"|" \
   8191   -e "s|%OCTAVE_CONF_FFTW3_LDFLAGS%|\"${FFTW3_LDFLAGS}\"|" \
   8192   -e "s|%OCTAVE_CONF_FFTW3_LIBS%|\"${FFTW3_LIBS}\"|" \
   8193   -e "s|%OCTAVE_CONF_FFTW3F_CPPFLAGS%|\"${FFTW3F_CPPFLAGS}\"|" \
   8194   -e "s|%OCTAVE_CONF_FFTW3F_LDFLAGS%|\"${FFTW3F_LDFLAGS}\"|" \
   8195   -e "s|%OCTAVE_CONF_FFTW3F_LIBS%|\"${FFTW3F_LIBS}\"|" \
   8196   -e "s|%OCTAVE_CONF_FLIBS%|\"${FLIBS}\"|" \
   8197   -e "s|%OCTAVE_CONF_FPICFLAG%|\"${FPICFLAG}\"|" \
   8198   -e "s|%OCTAVE_CONF_FT2_LIBS%|\"${FT2_LIBS}\"|" \
   8199   -e "s|%OCTAVE_CONF_GLPK_CPPFLAGS%|\"${GLPK_CPPFLAGS}\"|" \
   8200   -e "s|%OCTAVE_CONF_GLPK_LDFLAGS%|\"${GLPK_LDFLAGS}\"|" \
   8201   -e "s|%OCTAVE_CONF_GLPK_LIBS%|\"${GLPK_LIBS}\"|" \
   8202   -e "s|%OCTAVE_CONF_GNUPLOT%|\"${GNUPLOT}\"|" \
   8203   -e "s|%OCTAVE_CONF_GRAPHICS_LIBS%|\"${GRAPHICS_LIBS}\"|" \
   8204   -e "s|%OCTAVE_CONF_HDF5_CPPFLAGS%|\"${HDF5_CPPFLAGS}\"|" \
   8205   -e "s|%OCTAVE_CONF_HDF5_LDFLAGS%|\"${HDF5_LDFLAGS}\"|" \
   8206   -e "s|%OCTAVE_CONF_HDF5_LIBS%|\"${HDF5_LIBS}\"|" \
   8207   -e "s|%OCTAVE_CONF_INCFLAGS%|\"${INCFLAGS}\"|" \
   8208   -e "s|%OCTAVE_CONF_INCLUDEDIR%|\"${includedir}\"|" \
   8209   -e "s|%OCTAVE_CONF_LAPACK_LIBS%|\"${LAPACK_LIBS}\"|" \
   8210   -e "s|%OCTAVE_CONF_LD_CXX%|\"${LD_CXX}\"|" \
   8211   -e "s|%OCTAVE_CONF_LDFLAGS%|\"${LDFLAGS}\"|" \
   8212   -e "s|%OCTAVE_CONF_LD_STATIC_FLAG%|\"${LD_STATIC_FLAG}\"|" \
   8213   -e "s|%OCTAVE_CONF_LEX%|\"${LEX}\"|" \
   8214   -e "s|%OCTAVE_CONF_LEXLIB%|\"${LEXLIB}\"|" \
   8215   -e "s|%OCTAVE_CONF_LFLAGS%|\"${LFLAGS}\"|" \
   8216   -e "s|%OCTAVE_CONF_LIBCRUFT%|\"${LIBCRUFT}\"|" \
   8217   -e "s|%OCTAVE_CONF_LIBDIR%|\"${libdir}\"|" \
   8218   -e "s|%OCTAVE_CONF_LIBEXT%|\"${LIBEXT}\"|" \
   8219   -e "s|%OCTAVE_CONF_LIBFLAGS%|\"${LIBFLAGS}\"|" \
   8220   -e "s|%OCTAVE_CONF_LIBOCTAVE%|\"${LIBOCTAVE}\"|" \
   8221   -e "s|%OCTAVE_CONF_LIBOCTINTERP%|\"${LIBOCTINTERP}\"|" \
   8222   -e "s|%OCTAVE_CONF_LIBS%|\"${LIBS}\"|" \
   8223   -e "s|%OCTAVE_CONF_LN_S%|\"${LN_S}\"|" \
   8224   -e "s|%OCTAVE_CONF_MAGICK_CPPFLAGS%|\"${MAGICK_CPPFLAGS}\"|" \
   8225   -e "s|%OCTAVE_CONF_MAGICK_LDFLAGS%|\"${MAGICK_LDFLAGS}\"|" \
   8226   -e "s|%OCTAVE_CONF_MAGICK_LIBS%|\"${MAGICK_LIBS}\"|" \
   8227   -e 's|%OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS%|\"-shared -Wl,-Bsymbolic\"|' 
\
   8228   -e "s|%OCTAVE_CONF_OCTAVE_LINK_DEPS%|\"${OCTAVE_LINK_DEPS}\"|" \
   8229   -e "s|%OCTAVE_CONF_OCTAVE_LINK_OPTS%|\"${OCTAVE_LINK_OPTS}\"|" \
   8230   -e "s|%OCTAVE_CONF_OCTINCLUDEDIR%|\"${octincludedir}\"|" \
   8231   -e "s|%OCTAVE_CONF_OCTLIBDIR%|\"${octlibdir}\"|" \
   8232   -e "s|%OCTAVE_CONF_OCT_LINK_DEPS%|\"${OCT_LINK_DEPS}\"|" \
   8233   -e "s|%OCTAVE_CONF_OCT_LINK_OPTS%|\"${OCT_LINK_OPTS}\"|" \
   8234   -e "s|%OCTAVE_CONF_OPENGL_LIBS%|\"${OPENGL_LIBS}\"|" \
   8235   -e "s|%OCTAVE_CONF_PREFIX%|\"${prefix}\"|" \
   8236   -e "s|%OCTAVE_CONF_PTHREAD_CFLAGS%|\"${PTHREAD_CFLAGS}\"|" \
   8237   -e "s|%OCTAVE_CONF_PTHREAD_LIBS%|\"${PTHREAD_LIBS}\"|" \
   8238   -e "s|%OCTAVE_CONF_QHULL_CPPFLAGS%|\"${QHULL_CPPFLAGSS}\"|" \
   8239   -e "s|%OCTAVE_CONF_QHULL_LDFLAGS%|\"${QHULL_LDFLAGSS}\"|" \
   8240   -e "s|%OCTAVE_CONF_QHULL_LIBS%|\"${QHULL_LIBS}\"|" \
   8241   -e "s|%OCTAVE_CONF_QRUPDATE_CPPFLAGS%|\"${QRUPDATE_CPPFLAGS}\"|" \
   8242   -e "s|%OCTAVE_CONF_QRUPDATE_LDFLAGS%|\"${QRUPDATE_LDFLAGS}\"|" \
   8243   -e "s|%OCTAVE_CONF_QRUPDATE_LIBS%|\"${QRUPDATE_LIBS}\"|" \
   8244   -e "s|%OCTAVE_CONF_RANLIB%|\"${RANLIB}\"|" \
   8245   -e "s|%OCTAVE_CONF_RDYNAMIC_FLAG%|\"${RDYNAMIC_FLAG}\"|" \
   8246   -e "s|%OCTAVE_CONF_READLINE_LIBS%|\"${READLINE_LIBS}\"|" \
   8247   -e "s|%OCTAVE_CONF_REGEX_LIBS%|\"${REGEX_LIBS}\"|" \
   8248   -e "s|%OCTAVE_CONF_SED%|\"${SED}\"|" \
   8249   -e "s|%OCTAVE_CONF_SHARED_LIBS%|\"${SHARED_LIBS}\"|" \
   8250   -e "s|%OCTAVE_CONF_SHLEXT%|\"${SHLEXT}\"|" \
   8251   -e "s|%OCTAVE_CONF_SHLLINKEXT%|\"${SHLLINKEXT}\"|" \
   8252   -e "s|%OCTAVE_CONF_SHLEXT_VER%|\"${SHLEXT_VER}\"|" \
   8253   -e "s|%OCTAVE_CONF_SH_LD%|\"${SH_LD}\"|" \
   8254   -e "s|%OCTAVE_CONF_SH_LDFLAGS%|\"${SH_LDFLAGS}\"|" \
   8255   -e "s|%OCTAVE_CONF_SONAME_FLAGS%|\"${SONAME_FLAGS}\"|" \
   8256   -e "s|%OCTAVE_CONF_STATIC_LIBS%|\"${STATIC_LIBS}\"|" \
   8257   -e "s|%OCTAVE_CONF_TERM_LIBS%|\"${TERM_LIBS}\"|" \
   8258   -e "s|%OCTAVE_CONF_UGLY_DEFS%|\"${UGLY_DEFS}\"|" \
   8259   -e "s|%OCTAVE_CONF_UMFPACK_CPPFLAGS%|\"${UMFPACK_CPPFLAGS}\"|" \
   8260   -e "s|%OCTAVE_CONF_UMFPACK_LDFLAGS%|\"${UMFPACK_LDFLAGS}\"|" \
   8261   -e "s|%OCTAVE_CONF_UMFPACK_LIBS%|\"${UMFPACK_LIBS}\"|" \
   8262   -e "s|%OCTAVE_CONF_USE_64_BIT_IDX_T%|\"${USE_64_BIT_IDX_T}\"|" \
   8263   -e "s|%OCTAVE_CONF_VERSION%|\"${version}\"|" \
   8264   -e 
"s|%OCTAVE_CONF_ENABLE_DYNAMIC_LINKING%|\"${ENABLE_DYNAMIC_LINKING}\"|" \
   8265   -e "s|%OCTAVE_CONF_X11_INCFLAGS%|\"${X11_INCFLAGS}\"|" \
   8266   -e "s|%OCTAVE_CONF_X11_LIBS%|\"${X11_LIBS}\"|" \
   8267   -e "s|%OCTAVE_CONF_XTRA_CFLAGS%|\"${XTRA_CFLAGS}\"|" \
   8268   -e "s|%OCTAVE_CONF_XTRA_CXXFLAGS%|\"${XTRA_CXXFLAGS}\"|" \
   8269   -e "s|%OCTAVE_CONF_YACC%|\"${YACC}\"|" \
   8270   -e "s|%OCTAVE_CONF_YFLAGS%|\"${YFLAGS}\"|" \
   8271   -e "s|%OCTAVE_CONF_Z_CPPFLAGS%|\"${Z_CPPFLAGS}\"|" \
   8272   -e "s|%OCTAVE_CONF_Z_LDFLAGS%|\"${Z_LDFLAGS}\"|" \
   8273   -e "s|%OCTAVE_CONF_Z_LIBS%|\"${Z_LIBS}\"|" \
   8274   -e "s|%OCTAVE_CONF_config_opts%|\"${config_opts}\"|" | \
   8275   $(SED)  -e "s|%OCTAVE_CONF_DEFS%|\"${UGLY_DEFS}\"|" > address@hidden
   8276 $(simple_move_if_change_rule)
   8277 endef
".

As one can see, the macro itself is quite long, and contents of the variables 
it exapnds (e.g. CPPFLAGS) are also quite long, so it's surprising it hasn't 
failed earlier.

I performed quick web search regarding "Argument list too long" and came across 
http://www.in-ulm.de/~mascheck/various/argmax/ . The page has contains a number 
of useful advices (though it deal with a different situation: command * ) :

"

How to avoid the limit in a shell
If command *  fails, then you can 
        * iterate with the shell: 
        * for i in *; do command "$i"; done     (simple, completely robust and 
portable, may be very slow) 
        * iterate with find 
        * find . -exec command {} \;     (simple, completely robust and 
portable, may be very slow) 
        * find . -exec command {} +       (optimizes speed) 
        * find . -print0|xargs -0 command      (optimizes speed, if find 
doesn't implement "-exec +" but knows "-print0") 
        * find . -print|xargs command     (if there's no white space in the 
arguments) 
Note: find descends into directories. To avoid that portably,
you can use 
        * "find . ! -name . -prune [...]" 
        * If the major part of the arguments consists of long, absolute or 
relative paths,
then try to move your actions into the directory: 
        * cd /directory/with/long/path; command * 
        * And another quick fix may be to match fewer arguments: 
        * command [a-e]*; command [f-m]*; ... 
".


If I understand correctly the offending command, it's a _single_ call to 'sed' 
with a request to perform _multiple_ substitutions, and those multiple 
substitutions is the part causing "Argument list too long".

So, the fix seems to be along the "for i in *; do command "$i"; done     
(simple, completely robust and portable, may be very slow)" lines, i.e. 
multiple calls to 'sed' with _single_ substitution.

If my understanding are correct, it's a bug - because the implementation fails 
to scale.


If somebody's going to fix this, I'll file this bug.



Meanwhile I'll try the multiple calls myself - directly or through a wrapper 
script.


Thanks,
  Sergei.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]