Fare, your asdf/uiop image-dumping machinery is great! with only a few minutes of trying i've already made an exe for the dwim.hu service that seems to just work. i'm very pleasantly surprised, because it gets rid of the entire hu.dwim.build complexity, and is now even platform independent... thank you! :)
FTR, the change is here: http://dwim.hu/darcsweb/darcsweb.cgi?r=HEAD%20hu.dwim.home;a=commitdiff;h=20...
it all seems to just work, but i have a hard time telling asdf where to put the resulting exe. the :build-pathname arg of defsystem errors with absolute paths (which sounds reasonable), but then it's merely the filename of the exe. my problem is that it gets saved into the fasl cache, which i cannot calculate from the shell script side of the build script to mv the file to its final place.
is there some doc or test that i have missed?
Dear Attila,
On Sat, May 30, 2015 at 8:43 PM, Attila Lendvai attila@lendvai.name wrote:
Fare, your asdf/uiop image-dumping machinery is great! with only a few minutes of trying i've already made an exe for the dwim.hu service that seems to just work. i'm very pleasantly surprised, because it gets rid of the entire hu.dwim.build complexity, and is now even platform independent... thank you! :)
I'm quite glad you, of all people, like it!
FTR, the change is here: http://dwim.hu/darcsweb/darcsweb.cgi?r=HEAD%20hu.dwim.home;a=commitdiff;h=20...
it all seems to just work, but i have a hard time telling asdf where to put the resulting exe. the :build-pathname arg of defsystem errors with absolute paths (which sounds reasonable), but then it's merely the filename of the exe. my problem is that it gets saved into the fasl cache, which i cannot calculate from the shell script side of the build script to mv the file to its final place.
is there some doc or test that i have missed?
I don't think you've missed anything. If you want the exe to end up somewhere, you can: 1- copy the file (e.g. using uiop/stream:copy-file) from where program-op put it (which you can tell using output-files) to where you want it. Problem is, that won't do you much good on sbcl where save-lisp-and-die dies before you get to copy-file, unless you first use run-program to invoke the sbcl that will program-op. 2- Use (defmethod output-files ((o program-op) (s (eql (find-system "mysys")))) (values ... t)) so it will be exactly where you want it. 3- write ASDF4, that will solve these issues.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Cubans bemoan the three failures of the revolution: breakfast, lunch and dinner
I don't think you've missed anything. If you want the exe to end up somewhere, you can: 1- copy the file (e.g. using uiop/stream:copy-file) from where program-op put it (which you can tell using output-files) to where you want it. Problem is, that won't do you much good on sbcl where save-lisp-and-die dies before you get to copy-file, unless you first use run-program to invoke the sbcl that will program-op. 2- Use (defmethod output-files ((o program-op) (s (eql (find-system "mysys")))) (values ... t)) so it will be exactly where you want it. 3- write ASDF4, that will solve these issues.
Oh, and apparently, cl-launch uses this method: :build-operation ,op ;; the value here will be program-op :build-pathname ,(when dump (ensure-absolute-pathname dump #'getcwd)) (operate op system)
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org To surrender to ignorance and call it God has always been premature, and it remains premature today. — Isaac Asimov
I'm quite glad you, of all people, like it!
what? am i that critical usually? :)
2- Use (defmethod output-files ((o program-op) (s (eql (find-system "mysys")))) (values ... t)) so it will be exactly where you want it.
this one did the trick, thanks!
hu.dwim.build is then pretty much obsoleted... great!