8000 FAQ · roswell/roswell Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Masataro Asai edited this page Mar 23, 2022 · 30 revisions

Roswell Installation

How does Roswell change my system?

See Policy on how Roswell affects or manipulates your system.

Why is Roswell core written in C?

See Why C?< 8000 /p>

How do I customize the system-wide installation dir? (/usr/local/bin/ros)

See Local installation.

How do I customize the user installation dir? ($HOME/.roswell)

Use ROSWELL_HOME environment variable. (Not ROSWELL_INSTALL_DIR)

Roswell Usage & Customization

my .sbclrc isn't loaded!!

For a standardized command line behavior roswell does not load implementation-specific init scripts like .sbclrc. The only init script loaded by the implementation is ~/.roswell/init.lisp. The file is shared & loaded by all common lisp implementations invoked from roswell.

You can disable the init file loading by specifying +R to ros.

Where should I put my local projects?

Roswell adds ~/.roswell/local-projects/ to ASDF's source registry during the initialization. ~/common-lisp/ is also available, as it's the default local directory ASDF uses to look for systems. See in the ASDF manual for further information.

Sure, but I don't want to change the dir I'm using now.

Create a symlink from ~/.roswell/local-projects/ to whatever your favorite directory is. ASDF searches for system definitions recursively.

My SLIME does not jump to the source code of implementation with M-..

If you are using sbcl-bin with roswell, the installation doesn't include source code. You need to install the source via ros install sbcl[/version] --without-install which downloads the sbcl source code for sbcl-bin.

How to Setup Slime with Roswell?

See Initial Recommended Setup.

Why is Roswell's Quicklisp dist old and older than mine in Slime ?

You probably didn't setup Slime with Roswell.

You probably have been using slime and quicklisp when you installed Roswell. If you didn't touch the emacs settings, your slime is the old slime you have been using, and the quicklisp visible from your slime is the quicklisp that you installed.

However, Roswell installs and use a new quicklisp directory installed separately under ~/.roswell, and your slime does not tell the underlying lisp to look up this directory on the startup. The easiest way to achieve the best result is to follow the instruction for installing slime for roswell, which can be found here: Initial Recommended Setup.

Writing & Launching Roswell Scripts

How are roswell scripts evaluated?

Related: What's the default package when launching the script?

Related: In what environment is main executed?

In interpreter mode (without dump), the script is evaluated as a top-level form. So, if you use in-package within the script, that same package will be effective when launching the main function. The main function called by roswell should be in this last effective package.

Edit: now it acts the same in the dumped images. 2015/12/11

How can I extend the dynamic space size? (sbcl-specific)

$ ros dynamic-space-size=2000 -- ... 

Roswell seems to disable the debugger.

On sbcl, try #+sbcl (sb-ext:enable-debugger). You may use other impl-specific interfaces in other implementations.

I gave a script a large (~100k) arglist, caused a memory exhaust

Consider letting the script read the data from the standard input.

My roswell script uses a fixed random seed.

At the moment, you should obtain a fresh random state inside the script by (setf *random-state* (make-random-state t)).

The script stops working when used as a CRON script

PATH is set differently under CRON. Use the absolute path for the ros command in the script. Instead of modifying the script, set up the PATH from the caller in crontab.

Quick recipe for building a binary with my private subprojects

  1. Place your subprojects under the main projects.
+ projects/
  + main.ros
  + src/
  + t/
  + subproj1/
  + subproj2/   ;; or
  + local-projects/
    + subproj1/
    + subproj2/
  1. use ros -e "(setf ql:*local-project-directories* '(#p\"$(PWD)/\"))" dump executable main.ros or equivalent. If you build it with make, use CURDIR instead of PWD, since it is robust against make -C ....

I (guicho2.71828) use the following makefile:

submodules:
	git submodule update --init --recursive --remote

mwup: $(shell find -name "*.lisp") submodules
	ros -e "(setf ql:*local-project-directories* '(#p\"$(CURDIR)/\"))(ql:register-local-projects)" dump executable ./main.ros
Clone this wiki locally
0