Thread overview
Install Location (again)
Apr 20, 2006
Philip Van Hoof
April 20, 2006
If one is bundling GCC with GDC, would it
be better to have it install in two dirs:

/opt/gcc/
/opt/gdc/

Just like it is being done now on Windows,
when you install the Digital Mars compilers:

C:\dm\
C:\dmd\


Or should everything install in just one
location, say /opt/gnu, for everything ?
(the upside to this is that it is easy to
add e.g. GNU Make and GDB too, later on...)

Under each dir, there would be the usual:
/opt/gnu/bin/*
/opt/gnu/lib/*
/opt/gnu/include/*
/opt/gnu/share/*


For a binary release, I'm leaning towards
using just one single $PREFIX (=/opt/gnu),
since this approach seems to have worked
good for the Fink and DarwinPorts projects ?

One less set of PATHs to set up, as well...
(to find the executables and the libraries)

This was assuming that the regular /usr
won't work, otherwise that would be the
preferred location - if the rest of the
system tools and libraries are "usable".

For the general case, I think we'll need
to bundle the *same* version of GNU C/C++


Thoughts ?
--anders
April 20, 2006
On Thu, 2006-04-20 at 10:21 +0200, Anders F Björklund wrote:
> If one is bundling GCC with GDC, would it
> be better to have it install in two dirs:
> 
> /opt/gcc/
> /opt/gdc/

If you are bundling and then packaging it (for a specific distribution),
you should probably install it in $(prefix)/lib/gdc/ and create symlinks
to $(prefix)/bin, $(prefix)/include and $(prefix)/lib as in that case
the bundled gcc is support code for the application (gdc) itself.

For packages you really don't want to step outside of your $(prefix). So
using /opt isn't really the right thing todo (for packages).

So with $(prefix) set to /usr you get:

/usr/lib/gdc/bin/ and /usr/lib/gdc/lib/ and if possible /usr/include/
and /usr/share and then create symlinks from /usr/lib/gdc/bin/
to /usr/bin (but don't do such symlinks for files like gcc and c++ as
such symlinks would certainly conflict with existing packages).

You could do a symlink like /usr/lib/gdc/bin/gcc to /usr/bin/gdc-gcc and /usr/lib/gdc/bin/gdb to /usr/bin/gdc-gdb . . . :-\

I don't know whether such a bundled install will be usable with existing tools like gdb, gcc and c++. I'm guessing it's not.

> Just like it is being done now on Windows,
> when you install the Digital Mars compilers:
> 
> C:\dm\
> C:\dmd\

> Or should everything install in just one
> location, say /opt/gnu, for everything ?
> (the upside to this is that it is easy to
> add e.g. GNU Make and GDB too, later on...)
> 
> Under each dir, there would be the usual:
> /opt/gnu/bin/*
> /opt/gnu/lib/*
> /opt/gnu/include/*
> /opt/gnu/share/*
> 
> 
> For a binary release, I'm leaning towards
> using just one single $PREFIX (=/opt/gnu),
> since this approach seems to have worked
> good for the Fink and DarwinPorts projects ?
> 
> One less set of PATHs to set up, as well...
> (to find the executables and the libraries)
> 
> This was assuming that the regular /usr
> won't work, otherwise that would be the
> preferred location - if the rest of the
> system tools and libraries are "usable".
> 
> For the general case, I think we'll need
> to bundle the *same* version of GNU C/C++
> 
> 
> Thoughts ?
> --anders

April 20, 2006
Philip Van Hoof wrote:

> If you are bundling and then packaging it (for a specific distribution),
> you should probably install it in $(prefix)/lib/gdc/ and create symlinks
> to $(prefix)/bin, $(prefix)/include and $(prefix)/lib as in that case
> the bundled gcc is support code for the application (gdc) itself.
> 
> For packages you really don't want to step outside of your $(prefix). So
> using /opt isn't really the right thing todo (for packages).

Nah, this was assuming that (ordinary) packages would not work,
since $(prefix)/bin/gcc and $(prefix)/lib/gcc would be "taken"...

> /usr/lib/gdc/bin/ and /usr/lib/gdc/lib/ and if possible /usr/include/
> and /usr/share and then create symlinks from /usr/lib/gdc/bin/
> to /usr/bin (but don't do such symlinks for files like gcc and c++ as
> such symlinks would certainly conflict with existing packages).
> 
> You could do a symlink like /usr/lib/gdc/bin/gcc to /usr/bin/gdc-gcc
> and /usr/lib/gdc/bin/gdb to /usr/bin/gdc-gdb . . . :-\

I'm not sure what creating those symlinks would add, beyond complexity ?
Adding prefixes is *one* option, but it's not a very attractive one...

--anders