gcl-devel
[Top][All Lists]
Advanced

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

[Gcl-devel] Re: a chronicle


From: Camm Maguire
Subject: [Gcl-devel] Re: a chronicle
Date: 25 Mar 2006 23:41:42 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and please accept my apologies!  The
makefile/configure/install system has been a mess for a very long time
-- it will definitely be addressed before release, and is just
awaiting manpower at present.  If any developer wishes to take this
on, please do so.  I'm almost through with this phase on the compiler,
and will try to bring the ansi failures down after that.

Looked at the function calling -- the optional by name calling does
indeed appear a bad idea (compilation overhead, doubling the cost of a
function call, by name only appears to save about 10%), so I've left
it out for now.

Just committed the following:

"block typeing via return-from, return-from and go are of type nil,fix
endp-expansion for type inference purposes,mapcar et.al compiler
macro,fix make-array typing,tighten fmla-eval-const to detect when one
of and is known nil or one of or is known t (FIXME, needs to handle if
fmla too),c1the var-tag throw on type conflict
detection,restore-vars around trial tagbody runs, with var-mt set to
var-type at the head and type-or'ed back at the end,tagbody typing
from last non-tag form, fix expt propagator, do not warn of unused
variables on trial tagbody runs"

Types are now passed out of the returns of do loops.  This enables us
to write proper-list returning compiler macros without having to
duplicate the type information with a (the proper-list ...) wrapper
for example.  

Take care,


Robert Boyer <address@hidden> writes:

> Need it be so hard to get and build a big, big GCL 2.7.0 with tcl/tk, 
> installed
> at the prefix of one's choice, with documentation and info?
> 
> Below is a chronicle.  The file called 2.7.0 is given at the end of this
> message.  In it you can see a number of hacks and kludges and reminders of
> some of the stupid things I seem to have to do.
> 
> 1.  Today, I start with nonexistent source, prefix, emacs, and info
>     directories, like someone who had no "rights" to modify system
>     directories, e.g., me.
> 
> 2.  I run my 2.7.0 file, which does the cvs checkout and the configure
>     without difficulty.  The "make install" goes a way, but not all the way.
>     Here is what else I have to do.
> 
> 3.  Because of strange errors today in o/pltd.h I have to manually edit out
>     all the trigonometry lines, leaving _mcount, _setjmp, memset, read, and
>     write, and I try "make install" manually.
> 
> 4.  An error arises at: gcc guis.o tkAppInit.o tkMain.o -o
>       gcltkaux -L/lusr/lib -ltk8.3 -L/v/antivenin/v1/CVSBUILD/tk_tcl/tk/unix
>       -ltk8.3 -L/lusr/X11R6/lib -lX11 -I/lusr/X11R6/include -L/lusr/lib
>       -ltcl8.3 -ldl -lm -lgclp -static -Wl,-zmuldefs -lm ../o/gcllib.a
>       /lusr/lib/libtcl8.3.a(tclLoadDl.o): In function `TclpLoadFile':
>       tclLoadDl.c:(.text+0x3b): warning: Using 'dlopen' in statically linked
>       applications requires at runtime the shared libraries from the glibc
>       version used for linking /usr/bin/ld: cannot find -lgclp collect2: ld
>       returned 1 exit status.
> 
>      So I follow the steps numbered 1-4 in the instructions in the file 2.7.0
>      (at the end of this message), to wit:
> 
> 5.  Fix the LIBS line.
> 
> 6.  Fix the INFO_DIR line.
> 
> 7.  Delete the double slash in the the pathname to default.el.
> 
> 8.  Try "make install" again, see that it is successful (after I copy bin/gcl
>     somewhere), ignoring the 400+ warning messages I have seen go by.  Does
>     the double slash after -libdir in bin/gcl matter?  It seems that some
>     subsystem are outraged at such, other subsystems could care less.
> 
> 9.  Now, pretending it is tomorrow, I run 2.7.0 again to pick up the daily
>     improvements and try to do the rebuild.  (Actually, I first "make clean"
>     just to force a complete rebuild.)
> 
> 10. Damn, why do I have to edit pltd.h again?  I thought that cvs was
>     cool about that sort of thing.  I'll never understand anything.
>     "make install", again.
>      
> 11. Back to fixing up makedefs again, as above.  Then "make install", again.
> 
> 12. Bombs here:
> 
>       cp add-default.el /u/boyer/my-partition/gcl/emacsdir/default.el ; fi ;
>       \ chmod a+r /u/boyer/my-partition/gcl/emacsdir/default.el ; fi /bin/sh:
>       /temp_emacs_default: Permission denied /bin/sh: /temp_emacs_default:
>       Permission denied cp: cannot stat `/temp_emacs_default': No such file
>       or directory chmod: cannot access
>       `/u/boyer/my-partition/gcl/emacsdir/default.el': No such file or
>       directory make[3]: *** [install] Error 1 make[3]: Leaving directory
>       `/v/filer2/boyer/gcl/gcl-2.7.0/elisp' make[2]: *** [install_unix] Error
>       2
> 
> 13. Just for the hell of it, I'll just do make install again.  Sort of like
>     power cycling a machine.  This time it works!  Phase of the moon must
>     have changed.
> 
> 14.  Hum, why did I get an empty /u/boyer/my-partition/gcl/bin directory?
> 
> 15.  Why do I have two new copies of the 3.4mb of info files, one in 
>      /u/boyer/my-partition/gcl/infodir and one in
>      /u/boyer/my-partition/gcl/lib/gcl-2.7.0/info.
> 
> 16.  A 53 mb saved_ansi_gcl seems so... awfully unnecessarily large, but one
>      can ask for too, too much.
> 
> 17.  Is the 15 mb libansi_gcl.a necessary to keep around, too?
> 
> Thanks for your super support of GCL!
> 
> Here's the text of the file 2.7.0 I have mentioned several times above.
> 
> -------------------------------------------------------------------------------
> 
> #!/bin/csh -efX
> # Get, build, and install GCL a spacious GCL 2.7.0 with tcl/tk.
> # We write to all four of the following parameterizable directories.
> # We call cvs on the first of these directories, i.e., ${gclsourcedir}.
> # If gclsourcedir does not exist, we invoke "cvs checkout gcl",
> # otherwise we invok "cvs update gcl" on that directory.
> set gclsourcedir=/u/boyer/gcl/gcl-2.7.0/
> set prefixdir=/u/boyer/my-partition/gcl/
> set emacsdir=/u/boyer/my-partition/gcl/emacsdir/
> set infodir=/u/boyer/my-partition/gcl/infodir/
> mkdir -p ${prefixdir} ${emacsdir} ${infodir}
> set server=":pserver:address@hidden:/sources/gcl"
> if !(-d ${gclsourcedir}) then
>  mkdir -p ${gclsourcedir}
>  cd ${gclsourcedir}
>  cd ..
>  time nice cvs -d ${server} checkout -d gcl-2.7.0 gcl
>  echo "was the cvs gcl checkout time."
>  cd ${gclsourcedir}
> else 
>  cd ${gclsourcedir}
>  time nice cvs -d ${server} update
>  echo "was the cvs gcl update time."
> endif
> #
> # To get a dated version of 2.7.0 via seems to require two commands: 
> # setenv CVSROOT :pserver:address@hidden:/sources/gcl
> # cvs -z9 -q co -d gcl -D 20051214 gcl
> #
> nice makegcltags
> # to work around a stupid bug when making with prefix we do this touch:
> touch unixport/gcl.script
> # The following --disable-statsysbfd --enable-locbfd are to work around
> # some bugs in the UT Computer Sciences Gnu-Linux installation.
> time nice ./configure --enable-ansi --disable-statsysbfd --enable-locbfd      
> \
>              --enable-maxpage=524288                                          
> \
>              --enable-holediv=16                                              
> \
>              --enable-ihssize=2097152                                         
> \
>              --enable-vssize=2097152                                          
> \
>              --enable-frssize=65536                                           
> \
>              --enable-bdssize=65536                                           
> \
>              --prefix=${prefixdir}                                            
> \
>              --enable-emacsdir=${emacsdir}                                    
> \
>              --enable-infodir=${infodir}                                      
> \
>              --enable-static
> echo "was the configure time."
> # One must edit manually the file "makedefs" after make below fails,
> # with these changes:
> # 1.  Edit a line: INFO_DIR=/u/boyer/my-partition/gcl/infodir/
> # 2.  Change the first real line to make a tk/tcl image dynamic, not static.
> #     LIBS=  Wl,-zmuldefs   -lm 
> # 3.  Maybe delete some spurious double slash in some file names.
> # 4.  maybe delete a default.el emacs file
> # 5.  keep trying "make install" and the 4 above until no more errors arise,
> #     and the installation is where you want it.
> # 6.  Copy the small executable file ${gclsources}/bin/gcl to wherever you
> #     wish, e.g., /usr/local/bin, so that whomever wishes can run gcl.
> # 7.  Finally do a chmod a+rX on all the directories you want users to
> #     use, just in case someone was using some fancy umask setting during
> #     the build.
> time nice make -s install
> echo "was the time to make GCL."
> chmod -R a+rX ${gclsourcedir} ${prefixdir} ${emacsdir} ${infodir}
> 
> 
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

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