Hi again,

On 29/05/2013 18:53, Juan Jose Garcia-Ripoll wrote:

On Wed, May 29, 2013 at 6:10 PM, William Hounslow <hounslow@users.sourceforge.net> wrote:
Can a truly standalone program be created? If not, how to ensure that the end user can deploy the output binary in a location of their choice?

Apart from what you have been told, ECL can be built in statically linked mode with --disable-shared. In this case, standalone executables should be linked against a statically linked version of the library. But I personally find the other solution (deliver executable with the ECL library) preferable (and more compliant with LGPL).

Juanjo


--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain) 
http://juanjose.garciaripoll.googlepages.com

I rebuilt ECL as suggested, deleted the old binary, evaluated (ext:install-c-compiler) and was able to get the hoped-for statically linked program.

Now I need to change something and recompile.

The initial problem was something to do with an unexpected rubout character in the FASL (I don't have a record of this unfortunately). I then tried deleting the ASDF cache to force a total recompilation. Now I get:

Condition of type: CASE-FAILURE
:FASL fell through ECASE expression.
Wanted one of (:PROGRAM :LIB ...).
Broken at C::BUILDER. In: #<process TOP-LEVEL>.
>> :b

Backtrace:
  > C::BUILDER
  > c:build-fasl
  > uiop/lisp-build:compile-file*
  > lambda
  > uiop/utility:call-with-muffled-conditions
  > uiop/lisp-build:call-with-muffled-compiler-conditions
  > lambda
  > uiop/utility:call-function
  > uiop/lisp-build:call-around-hook
  > asdf/lisp-action:call-with-around-compile-hook
  > asdf/lisp-action:perform-lisp-compilation
  > asdf/action:perform
  > asdf/action:perform-with-restarts
  > asdf/action:perform-with-restarts
  > asdf/plan:perform-plan
  > asdf/plan:perform-plan
  > asdf/operate:operate
  > call-next-method
  > lambda
  > asdf/cache:call-with-asdf-cache
  > asdf/find-system::call-with-system-definitions
  > lambda
  > asdf/operate:operate
  > call-next-method
  > lambda
  > asdf/cache:call-with-asdf-cache
  > asdf/find-system::call-with-system-definitions
  > lambda
  > lambda
  > asdf/bundle:make-build
  > si:bytecodes [Evaluation of: (asdf/bundle:make-build :process-form ...)]
  > si:bytecodes [Evaluation of: (si:top-level t)]

What is wrong?

Thanks in anticipation,

William