[cmucl-imp] unchangeable "ext-formats:uni-data.bin", error starting lisp
When running Unicode CMUCL from the location where it is compiled, it starts with an error saying it cannot find the unidata.bin file. Usually one can set the search-list translations in ~/.cmucl-init.lisp, but this error happens even before that, so the only locations CMUCL can look for are the hardcoded locations. How can one supress the error, or specify the location during startup, so one can start `lisp -noinit' without throwing this error (when the "unidata.bin" file is not where the packaged/installed CMUCL expects to find it installed) $ linux-x86/lisp/lisp Error in function LISP::REINIT-CHAR-ATTRIBUTES: Cannot find "ext-formats:unidata.bin", so unicode support is not available (qui [Condition of type SIMPLE-ERROR] Restarts: 0: [CONTINUE] Continue anyway 1: [ABORT ] Skip remaining initializations. Debug (type H for help) (LISP::REINIT-CHAR-ATTRIBUTES) Source: Error finding source: Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists\ : target:code/print.lisp. 0] back back 0: (LISP::REINIT-CHAR-ATTRIBUTES) 1: ((LABELS LISP::%RESTART-LISP SAVE-LISP)) 2: ((LABELS LISP::RESTART-LISP SAVE-LISP)) 0]
"Madhu" == Madhu <enometh@meer.net> writes:
Madhu> When running Unicode CMUCL from the location where it is compiled, Madhu> it starts with an error saying it cannot find the unidata.bin file. Madhu> Usually one can set the search-list translations in ~/.cmucl-init.lisp, Madhu> but this error happens even before that, so the only locations CMUCL can Madhu> look for are the hardcoded locations. Madhu> How can one supress the error, or specify the location during startup, Madhu> so one can start `lisp -noinit' without throwing this error (when the Madhu> "unidata.bin" file is not where the packaged/installed CMUCL expects to Madhu> find it installed) Ah, you're right. I don't think it's currently possible, because unidata.bin is used by reinit-char-attributes, which is on the *after-save-initializations* list, which is run very early in the startup, just before the locale is setup and before any (lisp) command line arguments are processed. I think calling reinit-char-attributes after the command line is processed is generally too late, because the locale needs to be set before then. I think the only option would be to add a new command-line argument that is processed by the C code before Lisp starts up. Not sure what this argument should be named or do, though. Maybe -unidata-path to specify the location of the unidata.bin file? If not specified, the default (hard-wired) path is used. Would that work for you? Or do you need also need a way to specify that the error should be ignored? (That would be kind of bad, I think, because the user won't know that unicode is broken.) Ray
participants (2)
-
Madhu -
Raymond Toy