From octave-maintainers-request at bevo dot che dot wisc dot edu Thu Jan 29 12:23:47 1998 Subject: Compile problem of v2.0.9 on Linux From: Carlyn Iuzzolino To: octave-maintainers at bevo dot che dot wisc dot edu Date: Thu, 29 Jan 1998 11:22:04 -0700 Dear Octave people, I downloaded the source for Octave and tried to compile it. I am running a clean, ie straight out of the box, no upgrades, RedHat Linux 4.1. Down below I have included the Makeconf and octave-bug files. My kernel is 2.0.27 rpm -qf `which gcc` gcc-2.7.2.1-2 rpm -qf `which g++` gcc-c++-2.7.2.1-2 ll /usr/lib/libg++* -rw-r--r-- 1 root root 1257456 Aug 12 1996 /usr/lib/libg++.a lrwxrwxrwx 1 root root 25 Apr 1 1997 /usr/lib/libg++.so -> /usr/lib/libg++.so.27.1.4 lrwxrwxrwx 1 root root 16 Apr 1 1997 /usr/lib/libg++.so.27 -> libg++.so.27.1.4 -r-xr-xr-x 1 root root 953531 Aug 12 1996 /usr/lib/libg++.so.27.1.4 ll /usr/lib/libc* -rw-r--r-- 1 root root 1197954 Dec 5 1996 /usr/lib/libc.a lrwxrwxrwx 1 root root 24 Apr 1 1997 /usr/lib/libc.so -> ../../lib/libc.so.5.3.12 ll /usr/lib/libstdc* -rw-r--r-- 1 root root 1147656 Aug 12 1996 /usr/lib/libstdc++.a lrwxrwxrwx 1 root root 28 Apr 1 1997 /usr/lib/libstdc++.so -> /usr/lib/libstdc++.so.27.1.4 lrwxrwxrwx 1 root root 19 Apr 1 1997 /usr/lib/libstdc++.so.27 -> libstdc++.so.27.1.4 -r-xr-xr-x 1 root root 841780 Aug 12 1996 /usr/lib/libstdc++.so.27.1.4 The configure appears to have worked completely. The compile went ok until I got to liboctave. Then it complained that it couldn't find lots of include files. I tracked that down to the files in /usr/include/g++. So I added -I/usr/include/g++ in the Makeconf file. Next attempt at the compilation worked better but then I got this complaint. cd liboctave ; make all make[2]: Entering directory `/usr4/linux/octave-2.0.9/liboctave' c++ -c -I. -I.. -I../liboctave -I../src -I../glob -I../libcruft/misc -I/usr/include/g++ -DHAVE_CONFIG_H -fno-implicit-templates -g -O2 -Wall Bounds.cc c++ -c -I. -I.. -I../liboctave -I../src -I../glob -I../libcruft/misc -I/usr/include/g++ -DHAVE_CONFIG_H -fno-implicit-templates -g -O2 -Wall CollocWt.cc In file included from /usr/include/g++/std/bastring.h:35, from /usr/include/g++/std/string.h:6, from /usr/include/g++/string:5, from mach-info.h:26, from data-conv.h:28, from dMatrix.h:35, from CollocWt.h:32, from CollocWt.cc:33: /usr/include/g++/std/stddef.h:15: parse error before `::' make[2]: *** [CollocWt.o] Error 1 make[2]: Leaving directory `/usr4/linux/octave-2.0.9/liboctave' make[1]: *** [liboctave] Error 2 make[1]: Leaving directory `/usr4/linux/octave-2.0.9' Here is the contents of /usr/include/g++/std/stddef.h // The -*- C++ -*- standard definitions header. // This file is part of the GNU ANSI C++ Library. #ifndef __STDDEF__ #define __STDDEF__ #ifdef __GNUG__ #pragma interface "std/stddef.h" #endif #include <_G_config.h> #include extern "C++" { const size_t NPOS = (size_t)(-1); <---------- line 15 typedef void fvoid_t(); #ifndef _WINT_T #define _WINT_T typedef _G_wint_t wint_t; #endif } // extern "C++" #endif I don't see any '::' At this point I gave up and downloaded the binary. Thank you SO MUCH for the pre-compiled binaries. That installed fine and the program is great!! Carlyn Iuzzolino cviuzzo at numerex dot com ----------------- Contents of Makeconf ---------------------------- search for cvi to see my addition. # Generated automatically from Makeconf.in by configure. # # Common configuration rules for all of octave's Makefiles. # # John W. Eaton # jwe at bevo dot che dot wisc dot edu # University of Wisconsin-Madison # Department of Chemical Engineering SHELL = /bin/sh #### Start of system configuration section. #### EXE = LEX = flex LFLAGS = -t -I LEXLIB = YACC = bison -y YFLAGS = -dv AR = ar ARFLAGS = rc RANLIB = ranlib LN_S = ln -s RUNTEST = TEXI2DVI = $(top_srcdir)/texi2dvi DEFAULT_PAGER = less WITH_DL = true WITH_SHL = false WITH_DYNAMIC_LINKING = true OCTAVE_LITE = false SHARED_LIBS = false SHLEXT = so # Fortran to C translator and associated flags. F2C = F2CFLAGS = # Fortran compiler flags. FC = g77 F77 = g77 FFLAGS = -O FPICFLAG = -fPIC FORTRAN_MAIN_FLAG = -u MAIN__ ALL_FFLAGS = $(FFLAGS) # cc and associated flags. DLFCN_INCFLAGS = # Clean up INCFLAGS a bit if we are not compiling in a separate # directory. ifeq ($(srcdir),.) TMP_IF_1 = -I. else TMP_IF_1 = -I. -I$(srcdir) endif ifeq ($(TOPDIR),$(top_srcdir)) TMP_IF_2 = -I$(TOPDIR) -I$(TOPDIR)/liboctave -I$(TOPDIR)/src \ -I$(TOPDIR)/glob -I$(TOPDIR)/libcruft/misc else TMP_IF_2 = -I$(TOPDIR) -I$(TOPDIR)/liboctave -I$(TOPDIR)/src \ -I$(TOPDIR)/glob -I$(TOPDIR)/libcruft/misc -I$(top_srcdir) \ -I$(top_srcdir)/liboctave -I$(top_srcdir)/src \ -I$(top_srcdir)/glob -I$(top_srcdir)/libcruft/misc endif #cvi added C__FLAGS C__FLAGS= -I/usr/include/g++ INCFLAGS = $(TMP_IF_1) $(TMP_IF_2) $(DLFCN_INCFLAGS) $(C__FLAGS) LIBFLAGS = -L$(TOPDIR) DEFS = -DHAVE_CONFIG_H UGLY_DEFS = -DOCTAVE_SOURCE=1 -DSEPCHAR=\':\' -DSEPCHAR_STR=\\\\\":\\\\\" -DUSE_GNU_INFO=1 -DUSE_READLINE=1 -DF77_APPEND_UNDERSCORE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DNPOS=string::npos -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_NCURSES_H=1 -DHAVE_PWD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DH! ! AVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_PROGRAM_INVOCATION_NAME=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_LIBM=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 ! ! -DHAVE_TZNAME=1 -DHAVE_GR_PASSWD =1 -DRETSIGTYPE=void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 CC = gcc CC_VERSION = 2.7.2.1 CFLAGS = -g -O2 -Wall CPICFLAG = -fPIC GCC_IEEE_FP_FLAG = ALL_CFLAGS = $(INCFLAGS) $(DEFS) $(GCC_IEEE_FP_FLAG) $(CFLAGS) BUG_CFLAGS = $(DEFS) $(GCC_IEEE_FP_FLAG) $(CFLAGS) CXX = c++ CXX_VERSION = 2.7.2.1 CXXCPP = c++ -E CXXFLAGS = -g -O2 -Wall CXXPICFLAG = -fPIC NO_IMPLICIT_TEMPLATES = -fno-implicit-templates HOST_CXXFLAGS = ALL_CXXFLAGS = $(INCFLAGS) $(DEFS) $(HOST_CXXFLAGS) \ $(NO_IMPLICIT_TEMPLATES) $(GCC_IEEE_FP_FLAG) $(CXXFLAGS) UGLY_ALL_CXXFLAGS = $(INCFLAGS) $(UGLY_DEFS) $(HOST_CXXFLAGS) \ $(NO_IMPLICIT_TEMPLATES) $(GCC_IEEE_FP_FLAG) $(CXXFLAGS) BUG_CXXFLAGS = $(DEFS) $(HOST_CXXFLAGS) $(NO_IMPLICIT_TEMPLATES) \ $(GCC_IEEE_FP_FLAG) $(CXXFLAGS) CPPFLAGS = LDFLAGS = -g LD_STATIC_FLAG = ALL_LDFLAGS = $(LIBFLAGS) $(FORTRAN_MAIN_FLAG) $(GCC_IEEE_FP_FLAG) \ $(LD_STATIC_FLAG) $(CPICFLAG) $(LDFLAGS) SH_LD = gcc SH_LDFLAGS = -shared RLD_FLAG = -Xlinker -rpath -Xlinker $(libdir) FLIBS = -lf2c -lm -L/usr/lib/gcc-lib/i686-unknown-linux/2.7.2.1 -lm -lgcc -lc CXXLIBS = -lstdc++ -lm -L/usr/lib/gcc-lib/i686-unknown-linux/2.7.2.1 -lstdc++ -lm -lgcc -lc -lgcc TERMLIBS = -lncurses LIBPLPLOT = LIBDLFCN = # The arguments passed to configure. config_opts = # A shell command to extract the version number from version.h. getversion = sed -e '/VERSION/!d' -e 's/.*"\(.*\)".*$$/\1/' -e q # Look for version.h to get version information. xfiles := $(TOPDIR)/src/version.h $(srcdir)/$(TOPDIR)/src/version.h version_file := $(firstword $(foreach file, $(xfiles), $(wildcard $(file)))) version := $(shell $(getversion) $(version_file)) # ==================== Where To Install Things ==================== # The default location for installation. Everything is placed in # subdirectories of this directory. The default values for many of # the variables below are expressed in terms of this one, so you may # not need to change them. This defaults to /usr/local. prefix = /usr/local # Like `prefix', but used for architecture-specific files. exec_prefix = ${prefix} # Where to install Octave and other binaries that people will want to # run directly. bindir = ${exec_prefix}/bin # Where to install architecture-independent data files. ${fcnfiledir} # and ${localfcnfiledir} are subdirectories of this. datadir = ${prefix}/share # Where to install and expect libraries like libcruft.a, liboctave.a, # and libreadline.a and other architecture-dependent data. The # directory ${archlibdir} is a subdirectory of this. libdir = ${exec_prefix}/lib # Where to install and expect executable programs to be run by Octave # rather than directly by users. libexecdir = ${exec_prefix}/libexec # The prefix for Octave's include file directory. The default is # ${prefix}/include includedir = ${prefix}/include # Where to install Octave's include files. The default is # ${includedir}/octave-${version} octincludedir = $(includedir)/octave-$(version) # Where to install Octave's man pages, and what extension they should # have. The default is ${prefix}/man/man1 mandir = ${prefix}/man man1dir = $(mandir)/man1 man1ext = .1 # Where to install and expect the info files describing Octave.. infodir = ${prefix}/info # The fill path to the default info file. infofile = $(infodir)/octave.info # ==================== Octave-specific directories ==================== # These variables hold the values Octave will actually use. They are # based on the values of the standard Make variables above. # Where to install the function file distributed with # Octave. This includes the Octave version, so that the # function files for different versions of Octave will install # themselves in separate directories. fcnfiledir = $(datadir)/octave/$(version)/m # Directories Octave should search for function files specific # to this site (i.e. customizations), before consulting # ${fcnfiledir}. This should be a colon-separated list of # directories. localfcnfiledir = $(datadir)/octave/site/m localfcnfilepath = $(localfcnfiledir)// # Where to put executables to be run by Octave rather than # the user. This path usually includes the Octave version # and configuration name, so that multiple configurations # for multiple versions of Octave may be installed at once. archlibdir = $(libexecdir)/octave/$(version)/exec/$(target_host_type) # Where to put executables to be run by Octave rather than by the # user that are specific to this site. localarchlibdir = $(libexecdir)/octave/site/exec/$(target_host_type) # Where to put object files that will by dynamically loaded. # This path usually includes the Octave version and configuration # name, so that multiple configurations for multiple versions of # Octave may be installed at once. octfiledir = $(libexecdir)/octave/$(version)/oct/$(target_host_type) # Directories Octave should search for object files that will be # dynamically loaded and that are specific to this site # (i.e. customizations), before consulting ${octfiledir}. This should # be a colon-separated list of directories. localoctfiledir = $(libexecdir)/octave/site/oct/$(target_host_type) localoctfilepath = $(localoctfiledir)// # Where Octave will search to find its function files. Before # changing this, check to see if your purpose wouldn't # better be served by changing localfcnfilepath. This # should be a colon-separated list of directories. fcnfilepath = .:$(localoctfilepath):$(localfcnfilepath):$(octfiledir)//:$(fcnfiledir)// # Where Octave will search to find image files.es. imagedir = $(datadir)/octave/$(version)/imagelib imagepath = .:$(imagedir)// # The type of computer we are running on. target_host_type = i686-pc-linux-gnu # The following pattern rules and the substitution functions require # GNU make. If you don't have it, get it! # Rules for making object files from Fortran source. # # If we are using f2c there will be a command for the `%.c : %.f' # pattern and no command for the `%.o : %.f' pattern, so that make # will not invoke the fortran compiler by mistake. # # If we are not using f2c, it should be ok to have an empty rule for # the pattern `%.c : %.f', but we don't want to replace make's default # rule for making object from Fortran source files, so there should be # no pattern or command for that. %.c : %.f %.o : %.f $(FC) -c $(ALL_FFLAGS) $< pic/%.o : %.f $(FC) -c $(FPICFLAG) $(ALL_FFLAGS) $< -o $ at # How to make .o files: %.o : %.c $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< %.o : %.cc $(CXX) -c $(CPPFLAGS) $(ALL_CXXFLAGS) $< pic/%.o : %.c $(CC) -c $(CPPFLAGS) $(CPICFLAG) $(ALL_CFLAGS) $< -o $ at pic/%.o : %.cc $(CXX) -c $(CPPFLAGS) $(CXXPICFLAG) $(ALL_CXXFLAGS) $< -o $ at # Here is a rule for generating dependencies for .cc files: %.d : %.cc at echo making $@ from $< at rm -f $@ at $(CXX)| -M $(CPPFLAGS) $(ALL_CXXFLAGS) $< -M $(CPPFLAGS) $(ALL_CXXFLAGS) $< | \ sed -e 's,$*\.o,pic/& & $ at ,g' > $@.tmp at mv $@.tmp $@ # And one for .c files.too: %.d : %.c at echo making $@ from $< at rm -f $@ at $(CC)| -M $(CPPFLAGS) $(ALL_CFLAGS) $< -M $(CPPFLAGS) $(ALL_CFLAGS) $< | \ sed -e 's,$*\.o,pic/& & $ at ,g' > $@.tmp at mv $@.tmp $@ define do-subdir-for-command echo making $ at in $d; cd $d; $(MAKE) $@; cd ..; endef define subdir-for-command $(foreach d, $(SUBDIRS), $(do-subdir-for-command)) endef define do-subst-config-vals echo "making $ at from $<" sed < $< \ -e "s;%BUG_CXXFLAGS%;\"${BUG_CXXFLAGS}\";" \ -e "s;%CC%;\"${CC}\";" \ -e "s;%CC_VERSION%;\"${CC_VERSION}\";" \ -e "s;%CFLAGS%;\"${BUG_CFLAGS}\";" \ -e "s;%CPICFLAG%;\"${CPICFLAG}\";" \ -e "s;%CPPFLAGS%;\"${CPPFLAGS}\";" \ -e "s;%CXX%;\"${CXX}\";" \ -e "s;%CXXFLAGS%;\"${CXXFLAGS}\";" \ -e "s;%CXXLIBS%;\"${CXXLIBS}\";" \ -e "s;%CXXPICFLAG%;\"${CXXPICFLAG}\";" \ -e "s;%CXX_VERSION%;\"${CXX_VERSION}\";" \ -e "s;%F2C%;\"${F2C}\";" \ -e "s;%F2CFLAGS%;\"${F2CFLAGS}\";" \ -e "s;%F77%;\"${F77}\";" \ -e "s;%FFLAGS%;\"${FFLAGS}\";" \ -e "s;%FLIBS%;\"${FLIBS}\";" \ -e "s;%FPICFLAG%;\"${FPICFLAG}\";" \ -e "s;%GCC_IEEE_FP_FLAG%;\"${GCC_IEEE_FP_FLAG}\";" \ -e "s;%HOST_CXXFLAGS%;\"${HOST_CXXFLAGS}\";" \ -e "s;%INCFLAGS%;\"-I${includedir} -I${octincludedir}\";" \ -e "s;%LDFLAGS%;\"${LDFLAGS}\";" \ -e "s;%LEXLIB%;\"${LEXLIB}\";" \ -e "s;%LIBDLFCN%;\"${LIBDLFCN}\";" \ -e "s;%LIBFLAGS%;\"-L${libdir}\";" \ -e "s;%LIBPLPLOT%;\"${LIBPLPLOT}\";" \ -e "s;%LIBS%;\"${LIBS}\";" \ -e "s;%NO_IMPLICIT_TEMPLATES%;\"${NO_IMPLICIT_TEMPLATES}\";" \ -e "s;%RLD_FLAG%;\"${RLD_FLAG}\";" \ -e "s;%SH_LD%;\"${SH_LD}\";" \ -e "s;%SH_LDFLAGS%;\"${SH_LDFLAGS}\";" \ -e "s;%TARGET_HOST_TYPE%;\"${target_host_type}\";" \ -e "s;%TERMLIBS%;\"${TERMLIBS}\";" \ -e "s;%VERSION%;\"${version}\";" \ -e "s;%config_opts%;\"${config_opts}\";" | \ sed -e "s;%DEFS%;\"${UGLY_DEFS}\";" > $ at dot tmp $(top_srcdir)/move-if-change $ at dot tmp $@ endef define do-subst-default-vals echo "making $ at from $<" sed < $< > $ at dot tmp \ -e "s;%DEFAULT_PAGER%;\"${DEFAULT_PAGER}\";" \ -e "s;%OCTAVE_ARCHLIBDIR%;\"${archlibdir}\";" \ -e "s;%OCTAVE_BINDIR%;\"${bindir}\";" \ -e "s;%OCTAVE_DATADIR%;\"${datadir}\";" \ -e "s;%OCTAVE_EXEC_PREFIX%;\"${exec_prefix}\";" \ -e "s;%OCTAVE_FCNFILEDIR%;\"${fcnfiledir}\";" \ -e "s;%OCTAVE_FCNFILEPATH%;\"${fcnfilepath}\";" \ -e "s;%OCTAVE_IMAGEPATH%;\"${imagepath}\";" \ -e "s;%OCTAVE_INFODIR%;\"${infodir}\";" \ -e "s;%OCTAVE_INFOFILE%;\"${infofile}\";" \ -e "s;%OCTAVE_LIBDIR%;\"${libdir}\";" \ -e "s;%OCTAVE_LOCALARCHLIBDIR%;\"${localarchlibdir}\";" \ -e "s;%OCTAVE_LOCALFCNFILEDIR%;\"${localfcnfiledir}\";" \ -e "s;%OCTAVE_LOCALFCNFILEPATH%;\"${localfcnfilepath}\";" \ -e "s;%OCTAVE_LOCALOCTFILEPATH%;\"${localoctfilepath}\";" \ -e "s;%OCTAVE_OCTFILEDIR%;\"${octfiledir}\";" \ -e "s;%OCTAVE_PREFIX%;\"${prefix}\";" \ -e "s;%TARGET_HOST_TYPE%;\"${target_host_type}\";" $(top_srcdir)/move-if-change $ at dot tmp $@ endef # Make a relative symbolic link from $includedir/octave to $octincludedir. # XXX FIXME XXX -- this assumes that $octincludedir is a subdirectory # of $includedir. define mk-includedir-link src=`echo $(octincludedir) | sed 's|^$(includedir)/*||'` ; \ echo $$src ; \ if [ "$$src" = "octave" ] ; then \ true ; \ else \ cd $(includedir) ; \ rm -f octave ; \ $(LN_S) $$src octave ; \ fi endef -------------------------- End of Makeconf ------------------------------- Here is octave-bug, but notice that I added to the INCFLAGS in Makeconf and that wouldn't show up in the octave-bug file. -------------------------- octave-bug ------------------------------- #! /bin/sh - # # octave-bug - create a bug report and mail it to the bug-octave # mailing list. # # Patterned after the bashbug script from bash 1.14. # # John W. Eaton # jwe at bevo dot che dot wisc dot edu # University of Wisconsin-Madison # Department of Chemical Engineering # Configuration: these variables are filled in when running make to # compile Octave. config_opts="" VERSION="2.0.9" MACHINE="i686-pc-linux-gnu" F77="g77" FFLAGS="-O" FPICFLAG="-fPIC" FLIBS="-lf2c -lm -L/usr/lib/gcc-lib/i686-unknown-linux/2.7.2.1 -lm -lgcc -lc" F2C="" F2CFLAGS="" CPPFLAGS="" INCFLAGS="-I/usr/local/include -I/usr/local/include/octave-2.0.9" CC="gcc" CC_VERSION="2.7.2.1" CFLAGS="-DHAVE_CONFIG_H -g -O2 -Wall" CPICFLAG="-fPIC" CXX="c++" CXX_VERSION="2.7.2.1" CXXFLAGS="-DHAVE_CONFIG_H -fno-implicit-templates -g -O2 -Wall" CXXPICFLAG="-fPIC" LDFLAGS="-g" LIBFLAGS="-L/usr/local/lib" RLD_FLAG="-Xlinker -rpath -Xlinker /usr/local/lib" CXXLIBS="-lstdc++ -lm -L/usr/lib/gcc-lib/i686-unknown-linux/2.7.2.1 -lstdc++ -lm -lgcc -lc -lgcc" TERMLIBS="-lncurses" LIBS="" LEXLIB="" LIBPLPLOT="" LIBDLFCN="" DEFS="-DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=\":\" -DUSE_GNU_INFO=1 -DUSE_READLINE=1 -DF77_APPEND_UNDERSCORE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DNPOS=string::npos -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_NCURSES_H=1 -DHAVE_PWD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -! ! DHAVE_GETGRNAM=1 -DHAVE_GETHOSTN AME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_PROGRAM_INVOCATION_NAME=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_LIBM=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 -DHAVE_TZNAME=1 ! ! -DHAVE_GR_PASSWD=1 -DRETSIGTYPE= void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1" CC_AND_VERSION= if test -n "$CC_VERSION"; then CC_AND_VERSION="$CC, version $CC_VERSION" fi CXX_AND_VERSION= if test -n "$CXX_VERSION"; then CXX_AND_VERSION="$CXX, version $CXX_VERSION" fi PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:$PATH export PATH TEMP=/tmp/octave-bug.$$ : ${EDITOR=emacs} : ${PAGER=more} trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15 trap 'rm -f $TEMP $TEMP.x' 0 UN= if (uname) > /dev/null 2>&1; then UN=`uname -a` fi HAVE_FMT=false if (fmt < /dev/null) > /dev/null 2>&1; then HAVE_FMT=true fi # Check whether to use -n or \c to keep echo from printing a newline # character. Stolen from autoconf, which borrowed the idea from dist 3.0. if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi at caip dot rutgers dot edu dot if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then echo_n= echo_c=' ' else echo_n=-n echo_c= fi else echo_n= echo_c='\c' fi ss_p=`echo $VERSION | grep "^ss-"` if test -n "$ss_p"; then BUGADDR="octave-maintainers at bevo dot che dot wisc dot edu" else pretest_p=`echo $VERSION \ | sed 's,.*\.\([0-9]*\).*,\1,' \ | grep -v '\.' \ | grep '[0-9]'` if test -n "$pretest_p" && test "$pretest_p" -ge 90; then BUGADDR="octave-maintainers at bevo dot che dot wisc dot edu" else BUGADDR="bug-octave at bevo dot che dot wisc dot edu" fi fi SUBJECT="[50 character or so descriptive subject here (for reference)]" if test $# -gt 0; then case "$1" in -s) shift if test $# -gt 0; then SUBJECT="$1" shift else echo "usage: octave-bug [-s subject]" exit 1 fi ;; esac fi cat > $TEMP << EOF To: $BUGADDR Subject: $SUBJECT -------- Bug report for Octave $VERSION configured for $MACHINE Description: ----------- * Please replace this item with a detailed description of the problem. Suggestions or general comments are also welcome. Repeat-By: --------- * Please replace this item with a description of the sequence of events that causes the problem to occur. Fix: --- * If possible, replace this item with a description of how to fix the problem (if you don't have a fix for the problem, don't include this section, but please do submit your report anyway). Configuration (please do not edit this section): ----------------------------------------------- uname output: $UN configure opts: $config_opts Fortran compiler: $F77 FFLAGS: $FFLAGS F2C: $F2C F2CFLAGS: $F2CFLAGS FLIBS: $FLIBS CPPFLAGS: $CPPFLAGS INCFLAGS: $INCFLAGS C compiler: $CC_AND_VERSION CFLAGS: $CFLAGS CPICFLAG: $CPICFLAG C++ compiler: $CXX_AND_VERSION CXXFLAGS: $CXXFLAGS CXXPICFLAG: $CXXPICFLAG LDFLAGS: $LDFLAGS LIBFLAGS: $LIBFLAGS RLD_FLAG: $RLD_FLAG CXXLIBS: $CXXLIBS TERMLIBS: $TERMLIBS LIBS: $LIBS LEXLIB: $LEXLIB LIBPLPLOT: $LIBPLPLOT LIBDLFCN: $LIBDLFCN DEFS: EOF if $HAVE_FMT; then echo $DEFS | fmt | sed 's/^/ /' >> $TEMP else echo $DEFS >> $TEMP fi if test $# -gt 0; then if test -f "$1"; then cat >> $TEMP << EOF User-preferences (please do not edit this section): -------------------------------------------------- EOF cat $1 >> $TEMP fi fi chmod u+w $TEMP cp $TEMP $TEMP.x status=0 editing=true while $editing; do if $EDITOR $TEMP; then while $editing; do echo $echo_n "(a)bort, (e)dit, (l)ist, (s)end? $echo_c" read ans case "$ans" in a* | A*) status=1 editing=false ;; e* | E*) break; ;; l* | L*) $PAGER $TEMP ;; s* | S*) editing=false ;; esac done else echo "problems with edit -- no bug report submitted" status=1 editing=false fi done if test $status -eq 0; then if cmp -s $TEMP $TEMP.x; then echo "file not changed -- no bug report submitted" status=1 elif test `wc $TEMP | awk '{print $1}'` -eq 0; then echo "empty bug report file -- not submitted" status=1 else # Try to extract the recipient address, in case the To: line in the # message template has been changed. Also get cc: lines. TO_ADDR=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^[Tt][Oo]://p'` CC_ADDR=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^[Cc][Cc]://p'` if test -z "$TO_ADDR"; then echo "no valid \`To:' field found in header -- using $BUGADDR instead" else BUGADDR="$TO_ADDR" fi BUGADDR="$BUGADDR $CC_ADDR" TMP_SUB=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^Subject://p'` if test -n "$TMP_SUB"; then SUBJECT="$TMP_SUB" fi # Delete the `--------' separator in the message. # Don't pretty-print this. Odd whitespace kills Ultrix AWK! awk 'BEGIN{in_header=1;} /^--------[ \t]*$/ { if (in_header) { in_header=0; print ""; next; } } { print $0; }' $TEMP > $TEMP.x # Now try to mail it. ( /bin/mail $BUGADDR < $TEMP.x ) > /dev/null 2>&1 status=$? if test $status -ne 0; then ( Mail -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1 status=$? if test $status -ne 0; then ( /usr/ucb/mail -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1 status=$? if test $status -ne 0; then ( mailx -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1 status=$? fi fi fi if test $status -ne 0; then echo "unable to send mail..." fi fi fi if test $status -ne 0; then echo "saving message in \$HOME/dead.octave-bug"; cat $TEMP >> $HOME/dead.octave-bug; exit 1 else echo "bug report sent to: $TO_ADDR" echo " cc to: $CC_ADDR" fi exit $status -------------------------- End of octave-bug ------------------------------- Thanks, Carlyn Iuzzolino cviuzzo at numerex dot com