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#!/usr/bin/env bash
#
# Minimal Poly/ML startup script
THIS="$(cd "$(dirname "$0")"; pwd)"
export LD_LIBRARY_PATH="$THIS:$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="$THIS:$DYLD_LIBRARY_PATH"
exec "$THIS/poly" "$@"
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml