cvs commit: hugs98/src MkInstal.in

ross 2002/08/12 05:21:54 PDT Modified files: src MkInstal.in Log: Minor rearrangement of libraries targets. I'd like to suggest that install or install_libs depend on install_libraries and install_oldlib Revision Changes Path 1.19 +9 -5 hugs98/src/MkInstal.in

I'd like to suggest that install or install_libs depend on install_libraries and install_oldlib
I think we need to figure out the full story for people using CVS or distros. I imagine doing something like: 1) From CVS: cvs checkout hugs98 libraries cd hugs98/src/unix ./configure --without-libs cd .. make install which would do a standard install (i.e., what you get at the moment) cvs checkout hugs98 libraries cd hugs98/src/unix ./configure --with-libs=../../../libraries cd .. make install which would run convert_libs and make install install_libraries[_ffi] 2) From official distro: cd hugs98/src/unix ./configure --without-libs cd .. make install which gives a standard install cvs checkout hugs98 libraries cd hugs98/src/unix ./configure --enable-newlibs cd .. make install which runs make install install_libraries[_ffi] (the distro would include converted libs) Obviously, the official distro is the one to focus on but I'd like the cvs story to be pleasant too. -- Alastair

On Mon, Aug 12, 2002 at 04:07:12PM +0100, Alastair Reid wrote:
I think we need to figure out the full story for people using CVS or distros.
I think the new setup is usable now; the only problem is that it hasn't had enough users thumping on it. So I'd suggest that for the upcoming release, both source and binary installations include both full sets of libraries, with a run-time choice between them (via -P), defaulting to the old setup. After the release the default could be switched, and the old libs eventually eliminated. It doesn't seem worth it to maintain parallel libraries for a long period. So for now the story would be something like: cvs checkout hugs98 fpconfig cd fptools cvs checkout hslibs libraries cd ../hugs98/src/unix ./convert_hslibs ../../../fptools ./convert_libraries ../../../fptools # this would be the source distro ./configure cd .. make install[_ffi] # installs both lib and libraries # this would be the binary distro hugs # gets the old libs HUGSFLAGS='-P{Hugs}/libraries:{Hugs}/oldlib:{Hugs}/lib/hugs' export HUGSFLAGS hugs # gets the new setup Maybe including the ffi stuff should be a configure option.

On Tue, Aug 13, 2002 at 09:23:34AM +1000, I wrote:
So for now the story would be something like:
cvs checkout hugs98 fpconfig cd fptools cvs checkout hslibs libraries cd ../hugs98/src/unix ./convert_hslibs ../../../fptools ./convert_libraries ../../../fptools # this would be the source distro ./configure
I see this doesn't work: convert_libraries uses config.h and options.h, which are generated by configure. But that makes the source distribution architecture-dependent, and hardwires the original setting of USE_DOUBLE_PRECISION, both undesirable. Only the hierarchical libraries are affected, specifically Foreign.C.Error Foreign.C.Types Foreign.C.TypesISO Foreign.Storable It seems the #include is superfluous in the first one, but what to do about the other three? (You also copy config.h into libraries/Foreign/C, but that could be done by make install.)

I see this doesn't work: convert_libraries uses config.h and options.h, which are generated by configure. But that makes the source distribution architecture-dependent, and hardwires the original setting of USE_DOUBLE_PRECISION, both undesirable.
I'd like to get future versions of Hugs to use float for Float and double for Double - but that isn't going to affect this release.
Only the hierarchical libraries are affected, specifically
Foreign.C.Error Foreign.C.Types Foreign.C.TypesISO Foreign.Storable
It seems the #include is superfluous in the first one, but what to do about the other three?
My gut feeling is that the libraries will acquire more ifdefs as time goes on so trying to eliminate the ones we have is only a short-term solution. This suggests that we should distribute the raw libraries with Hugs and have the user run convert_libraries (probably invoked through the Makefile which is probably a better way to run things anyway). The problem is that this won't work on Windows. If they have a C compiler, then they have cpp but they don't necessarily have a usable shell. If we were starting from scratch, we could consider rewriting convert_libraries as a Makefile something along the lines of: CVT_LIBRARIES = <huge list here> NOCVT_LIBRARIES = <and another long list> HSLIBS_LIBRARIES = <more still> libraries_cvt: $(CVT_LIBRARIES) helper_cvt ... libraries_nocvt: $(NOCVT_LIBRARIES) helper_nocvt ... with the idea that it would be easy enough to provide Win32-compatible helper functions. But I don't think we want to get into this now. So I'm kind of stuck. -- Alastair

On Wed, Sep 04, 2002 at 02:29:04PM +0100, Alastair Reid wrote:
My gut feeling is that the libraries will acquire more ifdefs as time goes on so trying to eliminate the ones we have is only a short-term solution.
This suggests that we should distribute the raw libraries with Hugs and have the user run convert_libraries (probably invoked through the Makefile which is probably a better way to run things anyway).
The problem is that this won't work on Windows. If they have a C compiler, then they have cpp but they don't necessarily have a usable shell.
Perhaps we could get by (for this release) with two source releases: - a .zip for Windows with converted libraries - a .tar.gz for Unix with unconverted libraries and a Makefile that runs convert_libraries We'd just need to tell the Windows users they can't change USE_DOUBLE_PRECISION if they want to use FFI. As for the long term, I'd always thought of convert_libraries as a kludge to get through the transition. I hope things will get cleaner after this release is out the door.

How about this story: cvs checkout hugs98 cd hugs98/src/unix cvs checkout hslibs libraries/base libraries/haskell98 libraries/haskell-src # -> Unix source distribution ./configure ./convert_hslibs . ./convert_libraries . cd .. # -> Windows source distribution make install[_ffi] # installs both lib and libraries # -> binary distribution hugs # gets the old library setup HUGSFLAGS='-P{Hugs}/libraries:{Hugs}/oldlib:{Hugs}/lib/hugs' export HUGSFLAGS hugs # gets the new library setup
participants (3)
-
Alastair Reid
-
Ross Paterson
-
ross@glass.cse.ogi.edu