From 611490bb64823926a59d1c2f6314c04a7a81a354 Mon Sep 17 00:00:00 2001
From: Francois-Rene Rideau <tunes@google.com>
Date: Sat, 4 Apr 2015 18:21:09 -0400
Subject: [PATCH] Do NOT override the asdf-tools defaults from the Makefile

---
 Makefile                    | 2 --
 tools/asdf-tools.asd        | 6 +++---
 tools/main.lisp             | 7 +++++--
 tools/test-environment.lisp | 9 +++++----
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/Makefile b/Makefile
index f702d130..035478bb 100644
--- a/Makefile
+++ b/Makefile
@@ -17,8 +17,6 @@
 # Other targets are for maintainer use only.
 #
 
-l ?= sbcl
-
 # Default action: bootstrap asdf.lisp
 # That's the only thing that we really need before we may invoke asdf-builder.
 all: build/asdf.lisp
diff --git a/tools/asdf-tools.asd b/tools/asdf-tools.asd
index e440e6fc..0c616db0 100644
--- a/tools/asdf-tools.asd
+++ b/tools/asdf-tools.asd
@@ -2,10 +2,10 @@
   :description "tools to build, test, maintain and release ASDF itself"
   :depends-on ((:version "asdf" "3.1.2")
                (:version "inferior-shell" "2.0.2")
-               (:version "cl-ppcre" "2.0.4")
                (:version "lisp-invocation" "1.0.2")
-               (:feature :sbcl "sb-introspect")
-               "optima" "optima.ppcre")
+               (:version "cl-ppcre" "2.0.4")
+               (:version "optima.ppcre" "1.0")
+               (:feature :sbcl "sb-introspect"))
   :components
   ((:file "package")
    (:file "main" :depends-on ("package"))
diff --git a/tools/main.lisp b/tools/main.lisp
index dd27417c..6e8982a8 100644
--- a/tools/main.lisp
+++ b/tools/main.lisp
@@ -85,7 +85,7 @@ based on a list of targets"
 
 ;;; Main entry point.
 ;;; NB: For access control, you could check that only exported symbols are used as entry points.
-(defun main (args)
+(defun process-arguments (args)
   (block nil
     (unless args
       (format t "No command provided~%")
@@ -99,9 +99,12 @@ based on a list of targets"
     (format t "Command ~A not found~%" (first args))
     (return)))
 
+;;; For a multi-call binary, use these cl-launch or buildapp arguments: --dispatch-entry asdf-tools/asdf-tools::main
+(defun main (argv)
+  (initialize-environment)
+  (process-arguments argv))
 
 (defun entry-point ()
   (setf *lisp-interaction* nil)
   (uiop:with-fatal-condition-handler ()
-    (initialize-environment)
     (main *command-line-arguments*)))
diff --git a/tools/test-environment.lisp b/tools/test-environment.lisp
index f41bbef8..2cae5775 100644
--- a/tools/test-environment.lisp
+++ b/tools/test-environment.lisp
@@ -60,15 +60,16 @@
           :do (setf (symbol-value variable)
                     (if-let (x (getenvp envvar))
                       (funcall transformer x)
-                      defaults))
+                      (eval defaults)))
               (setf (gethash envvar h) x)
               (setf (gethash short h) x))))
 
 (defun display-environment ()
   (format t "Environment for ASDF tools:~%")
-  (loop :for variable-name :in (mapcar 'first *environment-variable-specs*)
-        :do (format t "~T~A = ~A~%"
-                    variable-name (symbol-value variable-name))))
+  (let ((*package* (find-package :asdf-tools)))
+    (loop :for variable-name :in (mapcar 'first *environment-variable-specs*)
+          :do (format t "~T~S = ~S~%"
+                      variable-name (symbol-value variable-name)))))
 
 (defun test-definition (def)
   (block ()
-- 
GitLab