On Thu, 11 Apr 2013, David Matthews wrote:
I misunderstood the motivation for polyc. I thought that it was to allow those without compiling/linking knowledge to easily build executables, i.e. to de-skill the process. Whilst such users may realize that
./configure --prefix <non-standard location>
requires
PATH=${PATH}:${bindir}
they would not realize that they need (assuming no super-user privileges)
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir}
I just wonder how common that case is. I would expect that most people manage their own machines and have sufficient privileges to be able to install software to the standard locations. The easiest way to try something out is usually to use the package management system to install a package configured for the distro and with all the dependencies sorted out. Personally, I would avoid installing something unfamiliar to a non-standard location because of the possibility of it breaking in unexpected ways.
For the Isabelle distribution (which includes a multi-platform Poly/ML version) we do exactly the opposite quite sucessfully for > 5 years: the many different package managers of the many different operation system distributions are ignored as much as possible.
Instead there are shell scripts and environment variable settings to make things work under most circumstances, even if the user happens to have alternative versions of Isabelle or Poly/ML already installed by other means: OS packages can be very annoying, because they assume to be the one and only one way to have a certain program of a certain name installed.
I have seen so many good programs turned into bad packages, not just Poly/ML.
Mac OS X is especially nasty, since there are several package managers to choose from, but none of them is really native. The Apple app store is probably better, but I don't know how it works.
The most elementary wrapper script for standalone ("portable") Poly/ML directories is included in the attachment. The real one for Isabelle is more advanced. Next time I will consider "./configure --disable-shared", which I did not know before.
Makarius