Compare commits

..

No commits in common. "master" and "v21.10.14.111" have entirely different histories.

120 changed files with 1407 additions and 1416 deletions

69
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,69 @@
name: CI
on:
push:
#pull_request:
#schedule:
# - cron: '0 */2 * * *'
jobs:
build-windows:
runs-on: windows-latest
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
arch: [x86_64, i686]
include:
- arch: x86_64
arch2: amd64
bit: 64
- arch: i686
arch2: i686
bit: 32
env:
RESULT_NAME: windows-${{ matrix.arch2 }}
RESULT_PATH: windows-${{ matrix.arch2 }}
RESULT_PATH_SUB: roswell
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v2
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW${{ matrix.bit }}
path-type: inherit
release: true
update: true
install: 'base-devel mingw-w64-${{ matrix.arch }}-toolchain'
- name: Run MSYS2 once
shell: msys2 {0}
run: |
pwd
echo $MSYSTEM
echo $MSYS2_PATH_TYPE
echo $PATH
- name: Build
shell: msys2 {0}
run: |
gcc -v
./bootstrap
./configure
make
make install
make winrelease
- name: Copy result
if: always()
shell: msys2 {0}
run: |
mkdir -p $RESULT_PATH
cp *.zip $RESULT_PATH/tmp.zip
cd $RESULT_PATH
7z x tmp.zip
rm tmp.zip
- name: Upload Result
if: always()
uses: actions/upload-artifact@v1
with:
name: ${{ env.RESULT_NAME }}
path: ${{ env.RESULT_PATH }}

View file

@ -1,4 +1,4 @@
name: Linux
name: linux
on:
push:
@ -6,58 +6,51 @@ on:
jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
image: [musl64]
variant: ['', '-musl', '-glibc2.31']
target: ['x86_64', 'arm64', 'riscv64']
include:
# set default docker platform and image suffix.
- {docker-platform: linux/amd64 ,docker-image-suffix: '', makeopts: musl }
- {target: arm64 ,docker-platform: linux/arm64 ,docker-image-suffix: 'aarch64' }
- {target: riscv64 ,docker-platform: linux/riscv64 ,docker-image-suffix: 'riscv64' }
- {image: deb, makeopts: deb, target: x86-64 ,docker-platform: linux/amd64}
- {image: pandoc, makeopts: docs, target: x86-64 ,docker-platform: linux/amd64}
- lisp: sbcl-bin/2.0.0
target: x86-64
image: musl64
makeopts: musl
- lisp: sbcl-bin/2.0.0
target: x86-64
image: musl64
makeopts: musl
variant: -musl
- lisp: sbcl-bin/2.0.0
target: x86-64
image: deb
makeopts: deb
- lisp: sbcl-bin/2.0.0
target: x86-64
image: pandoc
makeopts: docs
environment: SET_VERSION
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
image: tonistiigi/binfmt:qemu-v8.1.5
- uses: actions/checkout@v2
- name: setenv
run: |
echo "$HOME/.roswell/bin" >> $GITHUB_PATH
echo "ROSWELL_BRANCH=release" >> $GITHUB_ENV
- name: checkenv
run: |
uname -s -m
uname -s
uname -m
- name: Install Roswell
env:
LISP: sbcl-bin/2.4.0
LISP: ${{ matrix.lisp }}
GITHUB_OAUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
IMAGE: ${{ matrix.image }}
run: |
sh scripts/install-for-ci.sh
ros install snmsts/sn.github
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: docker.pkg.github.com
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: pull or build&push docker image
env:
DOCKER_PLATFORM: ${{ matrix.docker-platform }}
DOCKER_BUILD_OPTIONS: ${{ matrix.docker-build-options }}
DOCKER_IMAGE_SUFFIX: ${{ matrix.docker-image-suffix }}
IMAGE: ${{ matrix.image }}
run: |
if [ -n "$IMAGE" ]; then
docker login docker.pkg.github.com -u snmsts -p $GITHUB_OAUTH_TOKEN;
make -f scripts/Makefile pull-docker || make -f scripts/Makefile build-docker push-docker
fi
- name: build
@ -67,9 +60,6 @@ jobs:
DOCKER: ${{ matrix.docker }}
SUFFIX: ${{ matrix.suffix }}
LINKFLAGS: ${{ matrix.linkflags }}
DOCKER_PLATFORM: ${{ matrix.docker-platform }}
DOCKER_BUILD_OPTIONS: ${{ matrix.docker-build-options }}
DOCKER_IMAGE_SUFFIX: ${{ matrix.docker-image-suffix }}
IMAGE: ${{ matrix.image }}
MAKEOPTS: ${{ matrix.makeopts }}
VARIANT: ${{ matrix.variant }}

View file

@ -6,34 +6,25 @@ on:
jobs:
build:
runs-on: ${{ matrix.target == 'arm64' && 'macos-14' || 'macos-15-intel' }}
runs-on: macos-10.15
strategy:
fail-fast: false
matrix:
lisp: [sbcl-bin/2.3.8]
target: [arm64, x86-64]
lisp: [sbcl-bin/2.0.0]
target: [x86-64]
environment: SET_VERSION
steps:
- uses: actions/checkout@v4
- name: setenv
run: |
echo "$HOME/.roswell/bin" >> $GITHUB_PATH
echo "ROSWELL_INSTALL_DIR=$HOME/.roswell" >> $GITHUB_ENV
- uses: actions/checkout@v2
- name: checkenv
run: |
uname -s -m
uname -s
uname -m
brew install autoconf automake
- name: Build
env:
CFLAGS: -mmacosx-version-min=10.9
CXXFLAGS: -mmacosx-version-min=10.9
LDFLAGS: -mmacosx-version-min=10.9
ARCH: ${{ matrix.target }}
run: |
gcc -v
./bootstrap
./configure --prefix=$ROSWELL_INSTALL_DIR
./configure
make
make install
make pack

View file

@ -1,8 +1,7 @@
name: test
on:
schedule:
- cron: '0 1 * * *'
push:
workflow_dispatch:
jobs:
@ -13,7 +12,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest]
os: [macos-10.15, ubuntu-18.04]
lisp:
- alisp
- cmu-bin/2019-06
@ -21,34 +20,27 @@ jobs:
- ecl
- clisp
- ccl-bin
- sbcl/2.4.0
- sbcl/1.4.0
- ccl32
experimental: [false]
exclude:
- lisp: ccl-bin
os: macos-latest
- lisp: ccl32
os: macos-latest
- lisp: cmu-bin/2019-06
os: macos-latest
include:
- lisp: mkcl
os: macos-latest
os: macos-10.15
experimental: true
- lisp: mkcl
os: ubuntu-latest
os: ubuntu-18.04
experimental: true
- lisp: sbcl/git
os: macos-latest
os: macos-10.15
experimental: true
- lisp: sbcl/git
os: ubuntu-latest
os: ubuntu-18.04
experimental: true
- lisp: abcl
os: macos-latest
os: macos-10.15
experimental: true
- lisp: abcl
os: ubuntu-latest
os: ubuntu-18.04
experimental: true
env:
@ -71,5 +63,5 @@ jobs:
ros version=t run
ros install prove
run-prove roswell-test.asd 2>&1
ros -q run && [ "$(ros -q run 2>&1)" = "" ]
ros -q run && [`ros -q run 2>&1` == ""]
ros config

View file

@ -35,12 +35,7 @@ jobs:
path-type: inherit
release: true
update: true
install: >-
base-devel
p7zip
autotools
mingw-w64-${{ matrix.arch }}-toolchain
mingw-w64-${{ matrix.arch }}-autotools
install: 'base-devel mingw-w64-${{ matrix.arch }}-toolchain p7zip'
- name: Run MSYS2 once
shell: msys2 {0}
run: |
@ -63,51 +58,3 @@ jobs:
shell: msys2 {0}
run: |
make -f scripts/Makefile latest-version win-upload
build-windows-arm64:
runs-on: windows-11-arm
timeout-minutes: 90
env:
RESULT_NAME: windows-aarch64
RESULT_PATH: windows-aarch64
RESULT_PATH_SUB: roswell
environment: SET_VERSION
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v2
- uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
path-type: inherit
release: true
update: true
install: >-
base-devel
p7zip
autotools
mingw-w64-clang-aarch64-toolchain
mingw-w64-clang-aarch64-autotools
- name: Run MSYS2 once
shell: msys2 {0}
run: |
pwd
echo $MSYSTEM
echo $MSYSTEM_CARCH
echo $PATH
- name: Build
shell: msys2 {0}
run: |
clang -v
./bootstrap
CC=clang ./configure
make
make install
make pack.zip
- name: Upload
env:
GITHUB_OAUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: msys2 {0}
run: |
make -f scripts/Makefile latest-version win-upload

View file

@ -1,4 +1,4 @@
Copyright (c) 2014-2022 SANO Masatoshi
Copyright (c) 2014-2021 SANO Masatoshi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -1,49 +1,3 @@
roswell (26.02.116-1) unstable; urgency=low
* Fix: failure to load djula on sbcl 2.5.11 environment.
* Fix: declaration-definition disagreement in src/cmd-run.h. (reported by ItsMeForLua and fixed by Trichiurus-lepturus)
* Fix: support sbcl lisp-implementation-version returning '2.4.10.roswell'.
* Change: Allegro CL upgraded to release 11.0express. (by Xiaming Chen)
* Change: ros command return 1 when script file not found.
* Change: ros fmt rewritten to use cl-indentify.
-- SANO,Masatoshi <snmsts@gmail.com> Tue, 24 Feb 2026 06:39:51 +0900
roswell (24.10.115-1) unstable; urgency=low
* New: tested on darwin/ppc environment.
* New: tested on netbsd/aarch64 environment.
* Fix: absolute path error on Windows (by Ashton Fagg)
* Fix: build error on non Windows environment with windres (reported by Richard DW Redcroft)
* Fix: error message in build (by Rongsong Shen)
-- snmsts <snmsts@gmail.com> Wed, 16 Oct 2024 15:06:42 +0900
roswell (23.10.14.114-1) unstable; urgency=low
* New: use patchelf to support for distributions like guix/nix.
* Fix: 'ros.installing' feature not work. (reported by Fukamachi)
* Fix: fix windows build script (by Jeongsoo, Park)
* Fix: ros fmt (by Daniel Jay Haskin)
-- SANO Masatoshi <snmsts@gmail.com> Tue, 03 Oct 2023 12:57:11 +0000
roswell (22.12.14.113-1) unstable; urgency=low
* Fix: release CI for debian package.
-- SANO Masatoshi <snmsts@gmail.com> Sat, 10 Dec 2022 23:14:05 +0800
roswell (22.12.14.112-1) unstable; urgency=low
* New: Support cab extract on windows.
* New: `ros template path template-name files` to show native for template file.
* Fix: crush when download file smaller than 74bytes.
* Fix: `dynamic-space-size` parameter accepted by `ros build`.
* Fix: install old implementation when new quicklisp dist used. (reported by Alexander Artemenko)
-- SANO Masatoshi <snmsts@gmail.com> Tue, 06 Dec 2022 21:59:43 +0900
roswell (21.10.14.111-1) unstable; urgency=low
* New: 'ros client' to send oneshot message to lisp server. only support swank for now.

View file

@ -13,38 +13,6 @@ if MANUAL_GENERATE
SUBDIRS += documents
endif
ROSS = balus.ros \
build.ros \
checkout.ros \
client.ros \
config.ros \
compile-file.ros \
ecl-config.ros \
emacs.ros \
exec.ros \
dist.ros \
fmt.ros \
get.ros \
git.ros \
hg.ros \
run.ros \
setup.ros \
shell.ros \
version.ros \
wait.ros \
delete.ros \
dump.ros \
help.ros \
init.ros \
install.ros \
serve.ros \
update.ros \
list.ros \
make-depends.ros \
template.ros \
use.ros \
which.ros
LISPS = helper.el \
init.lisp \
util.lisp util-main.lisp \
@ -55,30 +23,52 @@ LISPS = helper.el \
extend-quicklisp-system.lisp \
system.lisp \
\
balus.ros \
build.ros \
build-ros.lisp build-asd.lisp \
\
client-swank.lisp \
checkout.ros \
client.ros client-swank.lisp \
config.ros \
compile-file.ros \
util-config.lisp \
ecl-config.ros \
emacs.ros \
exec.ros \
dist.ros \
dist-list.lisp dist-clean.lisp dist-enable.lisp dist-disable.lisp dist-add.lisp \
dist-delete.lisp dist-use.lisp dist-versions.lisp dist-preference.lisp dist-default.lisp \
fmt.ros \
get.ros \
git.ros \
hg.ros \
run.ros \
setup.ros \
shell.ros \
version.ros \
wait.ros \
\
delete.ros \
delete-default.lisp delete-dump.lisp delete-git.lisp delete-asdf.lisp \
delete-env.lisp \
\
dump.ros \
util-dump.lisp \
dump-ccl.lisp dump-clisp.lisp \
dump-cmucl.lisp dump-ecl.lisp dump-sbcl.lisp \
\
help.ros \
help-install.lisp help-options.lisp help-run.lisp \
\
init.ros \
init-default.lisp init-env.lisp init-dist.lisp \
\
install.ros \
util-install.lisp util-install-quicklisp.lisp \
install+7zip.lisp install-abcl-bin.lisp install-allegro.lisp \
install-ccl-bin.lisp install-clasp-bin.lisp install-clasp.lisp \
install-clisp.lisp install-clisp-head.lisp \
install-cmu-bin.lisp install-dotcl-bin.lisp install-ecl.lisp \
install-quicklisp.lisp \
install-cmu-bin.lisp install-ecl.lisp install-quicklisp.lisp \
install-sbcl-bin.lisp install-sbcl.lisp install-sbcl-source.lisp \
install-sbcl-head.lisp \
install-slime.lisp install-sly.lisp \
@ -87,20 +77,26 @@ LISPS = helper.el \
install+externals-clasp.lisp install+ffcall.lisp \
install+msys2.lisp install+sigsegv.lisp install-asdf.lisp \
\
serve.ros \
serve-default.lisp serve-swank.lisp \
update.ros \
update-git.lisp update-hg.lisp update-quicklisp.lisp update-default.lisp \
\
list.ros \
list-default.lisp \
list-dump.lisp list-git.lisp list-installed.lisp list-versions.lisp \
list-asdf.lisp list-env.lisp \
\
make-depends.ros \
template.ros \
util-template.lisp \
\
use.ros \
util-use.lisp \
use-asdf.lisp use-env.lisp
use-asdf.lisp use-env.lisp \
\
which.ros
dist_roslisp_DATA = $(LISPS:%=lisp/%)
dist_roslisp_SCRIPTS = $(ROSS:%=lisp/%)
dist_roslisppatch_DATA = patch/sbcl-1.3.11.patch patch/sbcl-posix-tests.patch
@ -108,7 +104,7 @@ dist_roslisppatch_DATA = patch/sbcl-1.3.11.patch patch/sbcl-posix-tests.patch
release-prepare:
ros scripts/release.ros prepare
release-commit:
ros scripts/release.ros release-commit
ros scripts/release.ros release
release-push:
ros scripts/release.ros release-push
release-changelog:
@ -123,7 +119,7 @@ winrelease: roswell/Makefile
cp lisp/*.lisp lisp/*.ros lisp/*.el roswell/lisp
cd documents;MSYSTEM=MINGW64 make roswell.chm
cp documents/roswell.chm roswell/documents
7z a Roswell-`if [ "$$MSYSTEM" = "MINGW64" ];then echo x86_64 ;elif [ "$$MSYSTEM" = "CLANGARM64" ];then echo aarch64; else echo i686; fi`.zip roswell/ros.exe roswell/lisp/*.* roswell/documents/roswell.chm
7z a Roswell-`if [ $$MSYSTEM = 'MINGW64' ];then echo x86_64 ;else echo i686; fi`.zip roswell/ros.exe roswell/lisp/*.* roswell/documents/roswell.chm
debian:
ros debian/debian.ros all
test:
@ -132,7 +128,7 @@ brewpr:
git pull
if [ `uname` = 'Darwin' ];then brew bump-formula-pr -v --url=https://github.com/roswell/roswell/archive/`git describe --abbrev=0 --tags`.tar.gz roswell; fi
PACK = $(PACKAGE)-$(VERSION)-$(shell uname -s | tr '[A-Z]' '[a-z]' | sed -E 's/([^-]*).*/\1/')-$(ARCH)$(SBCL_BIN_VARIANT)
PACK = $(PACKAGE)-$(VERSION)-$(shell uname -s | tr '[A-Z]' '[a-z]' | sed -E 's/([^-]*).*/\1/')-$(shell uname -m)$(SBCL_BIN_VARIANT)
roswell/Makefile:
rm -rf roswell
@ -145,7 +141,7 @@ roswell/Makefile:
echo " mkdir -p $$""(prefix)/etc/roswell/patch" >> $@
echo " mkdir -p $$""(mandir)" >> $@
echo " install -c ros$(EXEEXT) $$""(prefix)/bin" >> $@
echo " install -c -m 644 $(ROSS:%=lisp/%) $(LISPS:%=lisp/%) $$""(prefix)/etc/roswell" >> $@
echo " install -c -m 644 $(LISPS:%=lisp/%) $$""(prefix)/etc/roswell" >> $@
echo " install -c -m 644 $(dist_roslisppatch_DATA) $$""(prefix)/etc/roswell/patch" >> $@
if [ 'x$(MDS)' != 'x' ]; then \
echo " install -c $(MDS:%.md=man/%.1) $$""(mandir)" >> $@; \
@ -162,7 +158,6 @@ $(PACK).tar.bz2: roswell/Makefile
cp src/ros$(EXEEXT) roswell
$(MKDIR_P) roswell/lisp
cp $(LISPS:%=lisp/%) roswell/lisp
cp $(ROSS:%=lisp/%) roswell/lisp
cp $(dist_roslisppatch_DATA) roswell/patch
if [ 'x$(MDS)' != x ]; then \
$(MKDIR_P) roswell/man; \
@ -172,7 +167,7 @@ $(PACK).tar.bz2: roswell/Makefile
pack: $(PACK).tar.bz2
WINPACK = roswell_$(VERSION)_$(shell if [ "$$MSYSTEM" = "MINGW64" ];then echo amd64 ;elif [ "$$MSYSTEM" = "CLANGARM64" ];then echo aarch64; else echo i686; fi)
WINPACK = roswell_$(VERSION)_$(shell if [ $$MSYSTEM = 'MINGW64' ];then echo amd64 ;else echo i686; fi)
pack.zip: $(PACK).tar.bz2
7z a $(WINPACK).zip roswell

View file

@ -10,7 +10,7 @@ Roswell started out as a command-line tool with the aim to make installing and m
Roswell has now evolved into a full-stack environment for Common Lisp development, and has many features that makes it easy to test, share, and distribute your Lisp applications.
With Roswell, we aim to push the Common Lisp community to a whole new level of productivity.
Roswell is still in beta. Despite this, the basic interfaces are stable and not likely to change. Roswell currently works well on Unix-like platforms such as Linux, macOS and FreeBSD.
Roswell is still in beta. Despite this, the basic interfaces are stable and not likely to change. Roswell currently works well on Unix-like platforms such as Linux, Mac OS X and FreeBSD.
Roswell also works on other operating systems, but currently some parts or features might be missing or unstable.
Checkout [issues list](https://github.com/roswell/roswell/issues) if you are interested in what's lacking.
@ -18,10 +18,10 @@ Checkout [issues list](https://github.com/roswell/roswell/issues) if you are int
## Installation, Dependency & Usage
See our [github wiki](https://github.com/roswell/roswell/wiki).
We provide prebuilt binaries for homebrew on macOS, various Linux distributions and **also on Windows**.
* [Linux](https://github.com/roswell/roswell/wiki/Installation#linux)
We provide prebuilt binaries for homebrew on OSX, AUR on Arch and **also on Windows**.
* [Linux (arch)](https://github.com/roswell/roswell/wiki/Installation#linux)
* [FreeBSD](https://github.com/roswell/roswell/wiki/Installation#freebsd)
* [macOS (via Homebrew)](https://github.com/roswell/roswell/wiki/Installation#mac-os-x--homebrew)
* [Mac OS X (brew)](https://github.com/roswell/roswell/wiki/Installation#mac-os-x--homebrew)
* [Windows](https://github.com/roswell/roswell/wiki/Installation#windows)
* [Building from Source](https://github.com/roswell/roswell/wiki/Installation#building-from-source)

View file

@ -2,16 +2,17 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.59])
AC_INIT([roswell],[26.02.116],snmsts@gmail.com)
AC_INIT([roswell],[21.10.14.111],snmsts@gmail.com)
CFLAGS=${CFLAGS=""}
CXXFLAGS=${CXXFLAGS=""}
AC_CONFIG_HEADERS(config.h)
AM_CONFIG_HEADER(config.h)
AC_CONFIG_FILES([Makefile src/Makefile])
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([foreign])
AM_MAINTAINER_MODE([enable])
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
@ -43,6 +44,9 @@ if test "x$enable_debug" = xyes; then
CXXFLAGS="$CXXFLAGS -g -O0"
fi
AC_CHECK_LIB([wininet], [main],[LIBS="-lwininet $LIBS";wwwlib=yes],[])
if test "x$wwwlib" = xno; then
AC_CHECK_LIB([curl], [curl_global_init],[LIBS="-lcurl $LIBS";wwwlib=yes],[])
@ -58,7 +62,7 @@ AC_CHECK_HEADERS(gnu/libc-version.h)
AC_CHECK_HEADERS(windows.h,[with_windows=true])
AM_CONDITIONAL([WITH_WINDOWS], [test "$with_windows" != ""])
AC_CHECK_TOOL([WINDRES], [windres], [])
AM_CONDITIONAL([WITH_WIN_ICON], [test "$WINDRES" != "" -a "$with_windows" != ""])
AM_CONDITIONAL([WITH_WIN_ICON], [test "$WINDRES" != ""])
AC_CHECK_MEMBERS([struct dirent.d_type],,,[#include <dirent.h>])
@ -68,8 +72,8 @@ AS_IF([test "x$GIT_CHECK" = xyes],
[AC_SUBST([git_version], `set -o pipefail ; { git describe | sed -n -e 's/^.*-g//p' ; } 2>/dev/null || echo 'NO-GIT-REVISION'
`,[git SHA1 for HEAD.])],
[AC_SUBST([git_version],[NO-GIT-REVISION])])
AS_IF([test "x$GIT_CHECK" = xyes],
AS_IF([test "x$GIT_CHECK" = xyes],
[AC_SUBST([git_version_long], `set -e | git describe --abbrev=7 --dirty 2>/dev/null || echo 'NO-GIT-REVISION'`, [long version for git source])],
[AC_SUBST([git_version_long], [NO-GIT-REVISION])])
@ -93,30 +97,24 @@ AC_SUBST(roslisppatchdir)
# Change master uri for sbcl-bin
AC_ARG_WITH([sbcl_bin_base],
[AS_HELP_STRING([--with-sbcl-bin-base=URI],[set URI for sbcl-bin [default=https://github.com/roswell/sbcl_bin/releases/download/]])],
[AC_HELP_STRING([--with-sbcl-bin-base=URI],[set URI for sbcl-bin [default=https://github.com/roswell/sbcl_bin/releases/download/]])],
[SBCL_BIN_URI=$withval],[SBCL_BIN_URI="https://github.com/roswell/sbcl_bin/releases/download/"])
AC_DEFINE_UNQUOTED([SBCL_BIN_URI],["${SBCL_BIN_URI}"],[uri for sbcl master])
AC_ARG_WITH([platformtsvl_base],
[AS_HELP_STRING([--with-platformtsv-base=URI],[set URI for sbcl-bin_uri.tsv [default=https://github.com/roswell/sbcl_bin/releases/download/files/sbcl-bin_uri.tsv]])],
[AC_HELP_STRING([--with-platformtsv-base=URI],[set URI for sbcl-bin_uri.tsv [default=https://github.com/roswell/sbcl_bin/releases/download/files/sbcl-bin_uri.tsv]])],
[PLATFORM_TSV_URI=$withval],[PLATFORM_TSV_URI=https://github.com/roswell/sbcl_bin/releases/download/files/sbcl-bin_uri.tsv])
AC_DEFINE_UNQUOTED([PLATFORM_TSV_URI],["${PLATFORM_TSV_URI}"],[uri for sbcl-bin_uri.tsv])
AC_ARG_WITH([sbcl_bin_variant],
[AS_HELP_STRING([--with-sbcl-bin-variant=string],[set which variant for sbcl-bin [default=''] possible choices are '-glibc2.10', '-musl'.])],
[AC_HELP_STRING([--with-sbcl-bin-variant=string],[set which variant for sbcl-bin [default=''] possible choices are '-glibc2.10', '-musl'.])],
[SBCL_BIN_VARIANT=$withval],[SBCL_BIN_VARIANT=""])
AC_SUBST([SBCL_BIN_VARIANT], ["${SBCL_BIN_VARIANT}"])
AC_DEFINE_UNQUOTED([SBCL_BIN_VARIANT],["${SBCL_BIN_VARIANT}"],[variant for sbcl-bin])
AC_ARG_WITH([fixed_arch],
[AS_HELP_STRING([--with-fixed-arch=string],[set arch instead of on the fly detecting [default=''] possible choices are 'armhf', 'arm64'.])],
[FIXED_ARCH=$withval],[FIXED_ARCH=""])
AC_SUBST([FIXED_ARCH], ["${FIXED_ARCH}"])
AC_DEFINE_UNQUOTED([FIXED_ARCH],["${FIXED_ARCH}"],[arch to decide binary])
# man file (ros.1) generation switch
AC_ARG_ENABLE([manual_generation],
[AS_HELP_STRING([--enable-manual-generation],[generate manual if enabled])],
[AC_HELP_STRING([--enable-manual-generation],[generate manual if enabled])],
[case "${enableval}" in
yes) manual_generate=true ;;
no) manual_generate=false ;;
@ -125,7 +123,7 @@ AC_ARG_ENABLE([manual_generation],
AM_CONDITIONAL(MANUAL_GENERATE,[test x$manual_generate = x"true"])
AC_ARG_ENABLE([manual_install],
[AS_HELP_STRING([--disable-manual-install],[install manual if enabled])],
[AC_HELP_STRING([--disable-manual-install],[install manual if enabled])],
[case "${enableval}" in
yes) manual_install=true ;;
no) manual_install=false ;;
@ -134,7 +132,7 @@ AC_ARG_ENABLE([manual_install],
AM_CONDITIONAL(MANUAL_INSTALL,[test x$manual_install != x"false"])
AC_ARG_ENABLE([html_generation],
[AS_HELP_STRING([--enable-html-generation],[generate html if enabled])],
[AC_HELP_STRING([--enable-html-generation],[generate html if enabled])],
[case "${enableval}" in
yes) html_generate=true ;;
no) html_generate=false ;;
@ -145,4 +143,6 @@ AM_CONDITIONAL(HTML_GENERATE,[test x$html_generate = x"true"])
AM_COND_IF([MANUAL_INSTALL],
[AC_CONFIG_FILES([documents/Makefile])])
AC_OUTPUT

2
debian/copyright vendored
View file

@ -3,7 +3,7 @@ Upstream-Name: roswell
Source: https://github.com/roswell/roswell
Files: *
Copyright: 2014-2022 SANO Masatoshi
Copyright: 2014-2021 SANO Masatoshi
License: MIT

22
debian/debian.ros vendored
View file

@ -5,7 +5,7 @@ exec ros -Q -L sbcl-bin -- $0 "$@"
|#
(progn ;;init forms
(ros:ensure-asdf)
#+quicklisp (ql:quickload '(:jonathan :uiop :dexador) :silent t))
#+quicklisp (ql:quickload '(:cl-html-parse :uiop :dexador) :silent t))
(defpackage :ros.script.debian.3703769507
(:use :cl))
@ -20,16 +20,24 @@ exec ros -Q -L sbcl-bin -- $0 "$@"
(if branch
(format nil "https://github.com/~A/archive/~A.tar.gz" base branch)
(multiple-value-bind (body res)
(dex:get (format nil "https://api.github.com/repos/~A/releases" base)
:headers '(("X-GitHub-Api-Version" . "2022-11-28")))
(dex:get (format nil "https://github.com/~A/releases/" base))
(when (= res 200)
(getf (first (jojo:parse body)) :|tarball_url|))))))
(net.html.parser:parse-html
body
:callbacks
(list (cons :a (lambda (arg)
(let ((href (getf (cdr (car arg)) :href)))
(when (and (> (length href) 6)
(equal (subseq href (-(length href) 6))
"tar.gz")
;; href which include "archive" not "release"
(eql (aref href (1+ (position #\a href))) #\r))
(return-from get-newest-url (format nil "https://github.com~A" href)))))))
:callback-only t))))))
(defun fetch-upstream (&optional (output *pwd*))
(let* ((url (get-newest-url "roswell/roswell"))
(path (make-pathname :name (format nil "roswell_~A.tar" (subseq url (1+ (position #\/ url :from-end t))))
:defaults output
:type "gz")))
(path (merge-pathnames (subseq url (1+ (position #\/ url :from-end t))) output)))
(roswell.util:download url path)
path))

166
debian/init.d.ex vendored Normal file
View file

@ -0,0 +1,166 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: roswell
# Required-Start: $local_fs $network $remote_fs $syslog
# Required-Stop: $local_fs $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: <Enter a short description of the software>
# Description: <Enter a long description of the software>
# <...>
# <...>
### END INIT INFO
# Author: Masatoshi SANO <snmsts@gmail.com>
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="roswell"
NAME=roswell
DAEMON=/usr/sbin/roswell
DAEMON_ARGS=""
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# The above code will not work for interpreted scripts, use the next
# six lines below instead (Ref: #643337, start-stop-daemon(8) )
#start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON \
# --name $NAME --test > /dev/null \
# || return 1
#start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON \
# --name $NAME -- $DAEMON_ARGS \
# || return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:

2
debian/menu.ex vendored Normal file
View file

@ -0,0 +1,2 @@
?package(roswell):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
title="roswell" command="/usr/bin/roswell"

39
debian/postinst.ex vendored Normal file
View file

@ -0,0 +1,39 @@
#!/bin/sh
# postinst script for roswell
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

37
debian/postrm.ex vendored Normal file
View file

@ -0,0 +1,37 @@
#!/bin/sh
# postrm script for roswell
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

35
debian/preinst.ex vendored Normal file
View file

@ -0,0 +1,35 @@
#!/bin/sh
# preinst script for roswell
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
install|upgrade)
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

38
debian/prerm.ex vendored Normal file
View file

@ -0,0 +1,38 @@
#!/bin/sh
# prerm script for roswell
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <prerm> `remove'
# * <old-prerm> `upgrade' <new-version>
# * <new-prerm> `failed-upgrade' <old-version>
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
# * <deconfigured's-prerm> `deconfigure' `in-favour'
# <package-being-installed> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
remove|upgrade|deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

10
debian/roswell.default.ex vendored Normal file
View file

@ -0,0 +1,10 @@
# Defaults for roswell initscript
# sourced by /etc/init.d/roswell
# installed at /etc/default/roswell by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Additional options that are passed to the Daemon.
DAEMON_OPTS=""

20
debian/roswell.doc-base.EX vendored Normal file
View file

@ -0,0 +1,20 @@
Document: roswell
Title: Debian roswell Manual
Author: <insert document author here>
Abstract: This manual describes what roswell is
and how it can be used to
manage online manuals on Debian systems.
Section: unknown
Format: debiandoc-sgml
Files: /usr/share/doc/roswell/roswell.sgml.gz
Format: postscript
Files: /usr/share/doc/roswell/roswell.ps.gz
Format: text
Files: /usr/share/doc/roswell/roswell.text.gz
Format: HTML
Index: /usr/share/doc/roswell/html/index.html
Files: /usr/share/doc/roswell/html/*.html

23
debian/watch.ex vendored Normal file
View file

@ -0,0 +1,23 @@
# Example watch control file for uscan
# Rename this file to "watch" and then you can run the "uscan" command
# to check for upstream updates and more.
# See uscan(1) for format
# Compulsory line, this is a version 3 file
version=3
# Uncomment to examine a Webpage
# <Webpage URL> <string match>
#http://www.example.com/downloads.php roswell-(.*)\.tar\.gz
# Uncomment to examine a Webserver directory
#http://www.example.com/pub/roswell-(.*)\.tar\.gz
# Uncommment to examine a FTP server
#ftp://ftp.example.com/pub/roswell-(.*)\.tar\.gz debian uupdate
# Uncomment to find new files on sourceforge, for devscripts >= 2.9
# http://sf.net/roswell/roswell-(.*)\.tar\.gz
# Uncomment to find new files on GooglePages
# http://example.googlepages.com/foo.html roswell-(.*)\.tar\.gz

View file

@ -4,7 +4,6 @@
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Roswell Project Team">
<title>ros-asdf(1)</title>
<style type="text/css">code{white-space: pre;}</style>
<link rel="stylesheet" href="../ros.css">
@ -18,17 +17,14 @@
<ul>
<li class="author">Roswell Project Team</li>
</ul>
<h3 class="date">January 2022</h3>
</header>
<h1 id="name">NAME</h1>
<p>ros-asdf -</p>
<h1 id="synopsis">SYNOPSIS</h1>
<p>ros-asdf - # synopsis</p>
<p><strong>ros [options] asdf [subcommand]</strong></p>
<!-- # subcommands -->
<!-- somecommand -->
<!-- : description. end with a period. -->
<h1 id="description">DESCRIPTION</h1>
<p><strong>ros asdf</strong> install and manage ASDF(https://common-lisp.net/project/asdf/).</p>
<h1 id="description">description</h1>
<p><strong>ros asdf</strong> install and manage ASDF(https://common-lisp.net/project/asdf/)</p>
<!-- # options -->
<!-- -->
<!-- # Environmental Variables -->

View file

@ -18,7 +18,7 @@
<li class="author">Roswell Project Team</li>
</ul>
</header>
<p>ros-build - Shortcut to “ros dump executable” # synopsis</p>
<p>ros-build - Shortcut to &quot;ros dump executable&quot; # synopsis</p>
<p><strong>ros [options] build</strong> <file></p>
<p>Equivalent to calling <code>ros dump executable &lt;file&gt;</code>.</p>
<!-- # subcommands -->

View file

@ -19,7 +19,7 @@
</ul>
</header>
<p>ros-checkout - # synopsis</p>
<p><strong>ros [options] checkout</strong> args</p>
<p><strong>ros [options] checkout</strong> args...</p>
<!-- # subcommands -->
<!-- somecommand -->
<!-- : description. end with a period. -->

View file

@ -20,7 +20,7 @@
</header>
<p>ros-client - one-shot connect to remote repl.</p>
<h1 id="synopsis">synopsis</h1>
<p><strong>ros client</strong> protocol [options for the protocol …] …</p>
<p><strong>ros [options for roswell ...] client</strong> protocol [options for the protocol ...] ...</p>
<!-- # subcommands -->
<!-- somecommand -->
<!-- : description. end with a period. -->
@ -34,7 +34,7 @@
<dt><code>--interface interface</code></dt>
<dd><p>interface for connect. default is <code>localhost</code>.</p>
</dd>
<dt>-e FORM eval FORM</dt>
<dt>-e FORM --eval FORM</dt>
<dd><p>Evaluate FORM while building</p>
</dd>
</dl>

View file

@ -19,9 +19,9 @@
</ul>
</header>
<p>ros-config - get and set options # Synopsis</p>
<p><strong>ros [options] config</strong> [SUBCOMMAND ARGS]</p>
<p><strong>ros [options] config</strong> [SUBCOMMAND ARGS...]</p>
<h1 id="description">Description</h1>
<p>Without any arguments, it shows all variables and its value.</p>
<p>Without any arguments, it shows all variables and it's value.</p>
<dl>
<dt>show TARGET</dt>
<dd><p>show TARGET.</p>

View file

@ -19,14 +19,14 @@
</ul>
</header>
<p>ros-delete - # synopsis</p>
<p><strong>ros delete</strong> ARGS</p>
<p><strong>ros delete</strong> ARGS...</p>
<p>Slightly complex arguments.</p>
<h2 id="ros-delete-dump-images">ros delete dump IMAGES</h2>
<h2 id="ros-delete-dump-images...">ros delete dump IMAGES...</h2>
<p>Whem ARGS starts with <code>dump</code>, it considers the remaining args as the names for the dumped images. It then deletes the image with the given name, if it exists.</p>
<p>The deletion happens only to the images compatible with the current lisp implementation/version. For example, when ccl-bin/1.10 and sbcl-bin/1.3.1 both have images named X, and if the current lisp in use is sbcl-bin/1.3.1, then <code>ros delete dump X</code> removes sbcl-bin/1.3.1/X only.</p>
<h2 id="ros-delete-impls">ros delete IMPLS…</h2>
<h2 id="ros-delete-impls...">ros delete IMPLS...</h2>
<p>When the first argument is not <code>dump</code>, then the arguments are treated as a list of installed implementations.</p>
<p>If a name of some implementation is given without version specifiers, e.g. sbcl-bin, then it removes all instances (versions) of sbcl-bin.</p>
<p>If a name of some implementation is given without version specifiers, e.g. sbcl-bin, then it removes all instances (versions) of sbcl-bin.</p>
<p>If a version is specified, then it removes only the specified instance.</p>
<!-- somecommand -->
<!-- : description. end with a period. -->

View file

@ -19,7 +19,7 @@
</ul>
</header>
<p>ros-dist - # synopsis</p>
<p><strong>ros [options] dist</strong> args</p>
<p><strong>ros [options] dist</strong> args...</p>
<!-- # subcommands -->
<!-- somecommand -->
<!-- : description. end with a period. -->

View file

@ -20,11 +20,11 @@
</header>
<p>ros-dump - make a dumped image of a roswell script</p>
<h1 id="synopsis">Synopsis</h1>
<p><strong>ros [OPTIONS1…] dump [OPTIONS2…] MODE</strong> args…</p>
<p><strong>ros [OPTIONS1...] dump [OPTIONS2...] MODE</strong> args...</p>
<p><code>OPTIONS1</code> specify the standard roswell options such as <code>-L</code> or <code>-m LISP</code>. <code>OPTIONS2</code> specify the image reduction options we describe later. <code>MODE</code> is either <code>output</code> or <code>executable</code>.</p>
<h1 id="description">Description</h1>
<p><code>ros-dump</code> creates a dumped lisp image of the state after processing all options <code>OPTIONS1</code>.</p>
<p>It has two modes <code>output</code> and <code>executable</code>. In both modes, the global environment (e.g. global binding to special variables such as <code>*package*</code>) of the state just after the restart is the environment which was effective when the script was dumped.</p>
<p>It has two modes <code>output</code> and <code>executable</code>. In both modes, the global environment (e.g. global binding to special variables such as <code>*package*</code>) of the state just after the restart is the environment which was effective when the script was dumped.</p>
<!-- Fixme: what kind of? this is unnecessarily retracting the users from using this feature -->
<!-- There might be a limitation regarding this feature depending on the lisp -->
<!-- implementation used by roswell at the time of building. -->
@ -52,37 +52,37 @@
<p>Care should be taken to ensure the resulting program works as expected, as some of these operation may destroy the common assumptions of the conforming programs. For example, package-related reduction options may inhibit the runtime calls to <code>READ</code> after the restart.</p>
<p>Reduction options are processed in the left-to-right manner.</p>
<dl>
<dt>disable-compression, enable-compression, -c</dt>
<dt>--disable-compression, --enable-compression, -c</dt>
<dd><p>These options disable/enable/enable the core compression feature in SBCL. Thus this option is meaningful only on SBCL. Compression is enabled by default.</p>
</dd>
<dt>remove-docstrings</dt>
<dt>--remove-docstrings</dt>
<dd><p>This option removes all docstrings from all symbols in the entire lisp image.</p>
</dd>
<dt>delete-package PKG</dt>
<dd><p>This option can be specified multiple times. It uninterns the symbols in PACKAGE, calls <code>makeunbound</code> and <code>fmakeunbound</code> on each symbol and deletes the package. Package names are automatically string-upcased.</p>
<dt>--delete-package PKG</dt>
<dd><p>This option can be specified multiple times. It uninterns the symbols in PACKAGE, calls <code>makeunbound</code> and <code>fmakeunbound</code> on each symbol and deletes the package. Package names are automatically string-upcase'd.</p>
</dd>
<dt>delete-all-packages</dt>
<dd><p>This option applies delete-package PKG on all packages, except some blacklisted packages (keyword, roswell, ROS.SCRIPT.DUMP, and the package of the main function symbol).</p>
<dt>--delete-all-packages</dt>
<dd><p>This option applies --delete-package PKG on all packages, except some blacklisted packages (keyword, roswell, ROS.SCRIPT.DUMP, and the package of the main function symbol).</p>
</dd>
<dt>delete-packages-except PACKAGE</dt>
<dd><p>This option can be specified multiple times. It is identical to delete-all-packages except that it adds PACKAGE to the blacklist. Package names are automatically string-upcased.</p>
<dt>--delete-packages-except PACKAGE</dt>
<dd><p>This option can be specified multiple times. It is identical to --delete-all-packages except that it adds PACKAGE to the blacklist. Package names are automatically string-upcase'd.</p>
</dd>
<dt>destroy-packages-sbcl</dt>
<dd><p>This is an sbcl-specific option which is even more aggressive than the above methods (&gt;10MB reduction). It destroys the package system by modifying the internal tables for packages, cleaning up the caches for package-use-list etc. The blacklist is shared among delete-all-packages and destroy-packages-sbcl. However, this method does not call fmakunbound/makunbound, so combining the two methods can result in a more aggressive image size reduction. Due to the nature of this option, it is desirable to specify it as the last method (i.e. rightmost).</p>
<dt>--destroy-packages-sbcl</dt>
<dd><p>This is an sbcl-specific option which is even more aggressive than the above methods (&gt;10MB reduction). It destroys the package system by modifying the internal tables for packages, cleaning up the caches for package-use-list etc. The blacklist is shared among --delete-all-packages and --destroy-packages-sbcl. However, this method does not call fmakunbound/makunbound, so combining the two methods can result in a more aggressive image size reduction. Due to the nature of this option, it is desirable to specify it as the last method (i.e. rightmost).</p>
</dd>
<dt>purify, no-purify</dt>
<dt>--purify, --no-purify</dt>
<dd><p>This is common to CCL, SBCL, CMUCL. Moves all objects to the static space where GC does not scan, for the later performance of GC. Purification is enabled by default.</p>
</dd>
<dt>impurify, no-impurify</dt>
<dd><p>This is an CCL-specific option (enabled by default). It moves all objects to the dynamic space before saving the image. This allows the static-space objects to be GCed. When purification is enabled, it impurifies all objects before running the purifying GC.</p>
<dt>--impurify, --no-impurify</dt>
<dd><p>This is an CCL-specific option (enabled by default). It moves all objects to the dynamic space before saving the image. This allows the static-space objects to be GC'ed. When purification is enabled, it impurifies all objects before running the purifying GC.</p>
</dd>
<dt>delete-debug-info</dt>
<dt>--delete-debug-info</dt>
<dd><p>This removes the debug infomation of functions (used to show the stack frame etc), as well as the source locations and the deprecation information of various symbols. SBCL only. This option has a large effect (+10MB reduction).</p>
</dd>
<dt>delete-macro-definitions, delete-compiler-macro-definitions</dt>
<dt>--delete-macro-definitions, --delete-compiler-macro-definitions</dt>
<dd><p>This removes all definitions of macros and compiler-macros, assuming that no runtime compilation/interpretation of code will be performed. This option should be portable across implementations. It has ~2MB reduction on SBCL.</p>
</dd>
<dt>delete-compiler-information-sbcl</dt>
<dt>--delete-compiler-information-sbcl</dt>
<dd><p>This is an SBCL-specific option which is more aggressive than the above methods (~4MB reduction). In addition to the macro and the compiler-macro definitions, it destroys the internal compiler systems of SBCL by also removing the inlining information, IR1 transformer and IR2 (VOP).</p>
</dd>
</dl>

View file

@ -19,7 +19,7 @@
</ul>
</header>
<p>ros-emacs - launch Emacs with Slime # Synopsis</p>
<p><strong>ros emacs</strong> [ARGS]</p>
<p><strong>ros emacs</strong> [ARGS...]</p>
<!-- # subcommands -->
<!-- somecommand -->
<!-- : description. end with a period. -->

View file

@ -20,14 +20,14 @@
</header>
<p>ros-init - Create a roswell script (optionally based on a template)</p>
<h1 id="synopsis">Synopsis</h1>
<p><strong>ros init [TEMPLATE] NAME [ARGS]]</strong></p>
<p><strong>ros init [TEMPLATE] NAME [ARGS...]]</strong></p>
<dl>
<dt>TEMPLATE</dt>
<dd><p>Specifies the name of a template, defaulted to <em>default</em> template. However, if <em>TEMPLATE</em> is not specified and <em>FILENAME</em> matches one of the templates being stored, then it automatically uses the template. To suppress this behavior, you should explicitly specify <em>TEMPLATE</em> as <em>default</em>.</p>
<p>Thus you are warned when you use this command from a shell script. In order to achieve a consistent and desired behavior, it is adviced that they should always explicitly specify the template name.</p>
</dd>
<dt>NAME</dt>
<dd><p>Specify the output filename, or “-” to indicate <em>stdout</em>. When <em>TEMPLATE</em> is <em>default</em>, it automatically appends a file type “.ros”.</p>
<dd><p>Specify the output filename, or &quot;-&quot; to indicate <em>stdout</em>. When <em>TEMPLATE</em> is <em>default</em>, it automatically appends a file type &quot;.ros&quot;.</p>
</dd>
</dl>
<!-- # subcommands -->

View file

@ -21,8 +21,8 @@
<p>ros-install - Install lisp implementations or quicklisp system</p>
<h1 id="synopsis">Synopsis</h1>
<ul>
<li><strong>ros install</strong> system [system ]</li>
<li><strong>ros install</strong> impl[/version] [param ]</li>
<li><strong>ros install</strong> system [system ...]</li>
<li><strong>ros install</strong> impl[/version] [param ...]</li>
</ul>
<h1 id="description">Description</h1>
<dl>
@ -52,7 +52,7 @@ ccl-bin
sbcl-bin</code></pre>
<p>The name can be optionally followed by a slash <code>/</code> and a version of the implementation.</p>
<pre><code>$ ros install sbcl/1.2.14</code></pre>
<p>There might be some <em>hidden</em> implementation that are not listed here they are in the alpha quality, but try the one you like or watch the website (https://github.com/roswell/roswell).</p>
<p>There might be some <em>hidden</em> implementation that are not listed here --- they are in the alpha quality, but try the one you like or watch the website (https://github.com/roswell/roswell).</p>
<pre><code>$ ros install ccl
$ ros install abcl
$ ...</code></pre>

View file

@ -27,7 +27,7 @@
<h1 id="description">Description</h1>
<p><strong>ros list</strong> shows the list of the materials installed by roswell.</p>
<dl>
<dt>installed [ [ IMPL | IMPL/VERSION ]]</dt>
<dt>installed [ [ IMPL | IMPL/VERSION ]...]</dt>
<dd><p>List the implementations that have been already installed. Optionally providing IMPL shows the installed versions of the implementation.</p>
</dd>
<dt>dump [IMPL]</dt>

View file

@ -20,7 +20,7 @@
</header>
<p>ros-serve - start lisp server</p>
<h1 id="synopsis">Synopsis</h1>
<p><strong>ros [options for roswell … ] serve</strong> protocol [options for the protocol …] …</p>
<p><strong>ros [options for roswell ... ] serve</strong> protocol [options for the protocol ...] ...</p>
<!-- # subcommands -->
<!-- somecommand -->
<!-- : description. end with a period. -->

View file

@ -21,7 +21,7 @@
<p>ros-template - Edit template for ros-init</p>
<h1 id="synopsis">synopsis</h1>
<ul>
<li><strong>ros template</strong> command args</li>
<li><strong>ros template</strong> command args...</li>
</ul>
<h1 id="subcommands">Subcommands</h1>
<dl>
@ -37,25 +37,22 @@
<dt>checkout [template-name]</dt>
<dd><p>When invoked without template-name,this command shows candidates for current templates to operate.If with template-name, this command choose the name as current template.</p>
</dd>
<dt>add [template-name] [files ]</dt>
<dt>add [template-name] [files ...]</dt>
<dd><p>Add files to current template.First parameter could taken as a template-name when current template are <em>default</em>.</p>
</dd>
<dt>cat [template-name] [files ]</dt>
<dt>cat [template-name] [files ...]</dt>
<dd><p>Show contents in the current template.</p>
</dd>
<dt>edit [template-name] [files ]</dt>
<dt>edit [template-name] [files ...]</dt>
<dd><p>Edit content of files in template using <code>/usr/bin/editor</code>.</p>
</dd>
<dt>path [template-name] [files …]</dt>
<dd><p>Show native path of files in template.</p>
</dd>
<dt>rm [template-name] [files …]</dt>
<dt>rm [template-name] [files ...]</dt>
<dd><p>Remove file form current template.</p>
</dd>
<dt>type [template-name] [type] [files ]</dt>
<dt>type [template-name] [type] [files ...]</dt>
<dd><p>Change file type. current choice for <em>type</em>s are <em>djula</em> or <em>copy</em> {{name}} {{author}} {{email}} {{universal_time}} are available variable in the template file. Withoug files, change default type.</p>
</dd>
<dt>chmod [template-name] [mode] [files ]</dt>
<dt>chmod [template-name] [mode] [files ...]</dt>
<dd><p>Change file mode bits to generate. specify mode in octal format.</p>
</dd>
<dt>rewrite [template-name] file rewrite-rule</dt>

View file

@ -21,8 +21,8 @@
<p>ros-update - Update system installed from vcs</p>
<h1 id="synopsis">Synopsis</h1>
<ul>
<li><strong>ros update</strong> system [system ]</li>
<li><strong>ros update</strong> method [params ]</li>
<li><strong>ros update</strong> system [system ...]</li>
<li><strong>ros update</strong> method [params ...]</li>
</ul>
<h1 id="description">Description</h1>
<dl>

View file

@ -21,10 +21,10 @@
<p>ros-use - sets the default implementation used by roswell # synopsis</p>
<p><strong>ros [options] use</strong> impl[/version]</p>
<p>impl : The name of an implementation which is already installed. New implementations can be downloaded by <em><a href="ros-install.html">ros-install</a></em>(1). The list of installed implementations is available in <em><a href="ros-list.html">ros-list</a></em>(1).</p>
<p>version: : The version specifier. The string representation of the version (e.g. <major>.<minor>) depends on each implementation and roswell generally follows the representation used by the implementation. In addition, <em>a special version name “system”</em> tells roswell to use the implementation that is installed in your system, which should be in PATH.</p>
<p>version: : The version specifier. The string representation of the version (e.g. <major>.<minor>) depends on each implementation and roswell generally follows the representation used by the implementation. In addition, <em>a special version name &quot;system&quot;</em> tells roswell to use the implementation that is installed in your system, which should be in PATH.</p>
<h1 id="example">example</h1>
<p>ros use sbcl : use the latest SBCL among several versions of SBCLs installed by <em><a href="ros-install.html">ros-install</a></em>. This is compiled from the source, which may take some time to install but allows SLIME to jump to the implementation source code.</p>
<p>ros use sbcl-bin : use the latest stable SBCL binary downloaded from vendors website. Roswell uses this by default. <code>sbcl-bin</code> tends to be an older version compared to <code>sbcl</code>, but surely newer than your <em>apt-get</em> installed counterpart!</p>
<p>ros use sbcl-bin : use the latest stable SBCL binary downloaded from vendor's website. Roswell uses this by default. <code>sbcl-bin</code> tends to be an older version compared to <code>sbcl</code>, but surely newer than your <em>apt-get</em> installed counterpart!</p>
<p>ros use sbcl/1.3.1 : use the compiled SBCL 1.3.1.</p>
<p>ros use sbcl-bin/1.3.1 : use the prebuilt SBCL 1.3.1.</p>
<p>ros use sbcl/system : use the SBCL available in the PATH.</p>

View file

@ -33,7 +33,7 @@
<p>In an order of utility/frequency.</p>
<dl>
<dt>install</dt>
<dd><p>Install a given implementation (e.g. sbcl, ccl) or a system (e.g. alexandria) for roswell environment. See <em><a href="ros-install.html">ros-install</a></em>(1).</p>
<dd><p>Install a given implementation (e.g. sbcl, ccl) or a system (e.g. alexandria) for roswell environment. See <em><a href="ros-install.html">ros-install</a></em>(1).</p>
</dd>
<dt>init [name[.ros]]</dt>
<dd><p>Create a new ros script. <code>.ros</code> is optional, and is added automaticaly. See <em><a href="ros-init.html">ros-init</a></em>.</p>
@ -78,79 +78,79 @@
<h1 id="options">Options</h1>
<p>Options are processed in left-to-right order.</p>
<dl>
<dt>-w CODE wrap CODE</dt>
<dd><p>Run the script with a shell wrapper CODE, e.g. rlwrap</p>
<dt>-w CODE --wrap CODE</dt>
<dd><p>Run the script with a shell wrapper CODE, e.g. rlwrap</p>
</dd>
<dt>-m IMAGE image IMAGE</dt>
<dt>-m IMAGE --image IMAGE</dt>
<dd><p>Continue from Lisp image IMAGE</p>
</dd>
<dt>-L NAME lisp NAME</dt>
<dd><p>Run the script with a lisp impl NAME[/VERSION] if present, e.g. sbcl-bin, sbcl/1.2.16. Fails otherwise.</p>
<dt>-L NAME --lisp NAME</dt>
<dd><p>Run the script with a lisp impl NAME[/VERSION] if present, e.g. sbcl-bin, sbcl/1.2.16. Fails otherwise.</p>
</dd>
<dt>-l FILE load FILE</dt>
<dt>-l FILE --load FILE</dt>
<dd><p>Load a lisp file FILE while building</p>
</dd>
<dt>-S X source-registry X</dt>
<dt>-S X --source-registry X</dt>
<dd><p>Override the source registry of asdf systems.</p>
</dd>
<dt>-s SYSTEM system SYSTEM</dt>
<dt>-s SYSTEM --system SYSTEM</dt>
<dd><p>Load the asdf SYSTEM while building.</p>
</dd>
<dt>load-system SYSTEM</dt>
<dt>--load-system SYSTEM</dt>
<dd><p>Same as above (buildapp compatibility)</p>
</dd>
<dt>-p PACKAGE package PACKAGE</dt>
<dt>-p PACKAGE --package PACKAGE</dt>
<dd><p>Change the current package to PACKAGE</p>
</dd>
<dt>-sp SP system-package SP</dt>
<dt>-sp SP --system-package SP</dt>
<dd><p>Combination of -s SP and -p SP</p>
</dd>
<dt>-e FORM eval FORM</dt>
<dt>-e FORM --eval FORM</dt>
<dd><p>Evaluate FORM while building</p>
</dd>
<dt>require MODULE</dt>
<dt>--require MODULE</dt>
<dd><p>require MODULE while building</p>
</dd>
<dt>-q quit</dt>
<dt>-q --quit</dt>
<dd><p>quit lisp here</p>
</dd>
<dt>-r FUNC restart FUNC</dt>
<dt>-r FUNC --restart FUNC</dt>
<dd><p>the build image restarts from calling FUNC</p>
</dd>
<dt>-E FUNC entry FUNC</dt>
<dt>-E FUNC --entry FUNC</dt>
<dd><p>the build image restarts from calling (FUNC argv).</p>
</dd>
<dt>-i FORM init FORM</dt>
<dt>-i FORM --init FORM</dt>
<dd><p>evaluate FORM after the restart.</p>
</dd>
<dt>-ip FORM print FORM</dt>
<dt>-ip FORM --print FORM</dt>
<dd><p>evaluate and princ FORM after the restart</p>
</dd>
<dt>-iw FORM write FORM</dt>
<dt>-iw FORM --write FORM</dt>
<dd><p>evaluate and write FORM after the restart</p>
</dd>
<dt>-F FORM final FORM</dt>
<dt>-F FORM --final FORM</dt>
<dd><p>evaluate FORM before dumping the IMAGE</p>
</dd>
<dt>-R rc</dt>
<dt>-R --rc</dt>
<dd><p>try to read /etc/rosrc, ~/.roswell/init.lisp</p>
</dd>
<dt>+R no-rc</dt>
<dt>+R --no-rc</dt>
<dd><p>skip /etc/rosrc, ~/.roswell/init.lisp</p>
</dd>
<dt>-Q quicklisp</dt>
<dt>-Q --quicklisp</dt>
<dd><p>load quicklisp (default)</p>
</dd>
<dt>+Q no-quicklisp</dt>
<dt>+Q --no-quicklisp</dt>
<dd><p>do not load quicklisp</p>
</dd>
<dt>-v verbose</dt>
<dt>-v --verbose</dt>
<dd><p>be quite verbose while building</p>
</dd>
<dt>quiet</dt>
<dt>--quiet</dt>
<dd><p>suppress output while building (default)</p>
</dd>
<dt>test</dt>
<dt>--test</dt>
<dd><p>for test purpose</p>
</dd>
<dt>dynamic-space-size=[size in MB]</dt>

View file

@ -1,19 +1,17 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-asdf" "1" "January 2022" "" ""
.TH "ros-asdf" "1" "" "" ""
.hy
.SH NAME
.PP
ros\-asdf \-
.SH SYNOPSIS
ros\-asdf \- # synopsis
.PP
\f[B]ros [options] asdf [subcommand]\f[R]
.SH DESCRIPTION
\f[B]ros [options] asdf [subcommand]\f[]
.SH description
.PP
\f[B]ros asdf\f[R] install and manage
ASDF(https://common\-lisp.net/project/asdf/).
\f[B]ros asdf\f[] install and manage
ASDF(https://common\-lisp.net/project/asdf/)
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,16 +1,16 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-build" "1" "" "" ""
.hy
.PP
ros\-build \- Shortcut to \[lq]ros dump executable\[rq] # synopsis
ros\-build \- Shortcut to "ros dump executable" # synopsis
.PP
\f[B]ros [options] build\f[R]
\f[B]ros [options] build\f[]
.PP
Equivalent to calling \f[C]ros dump executable <file>\f[R].
Equivalent to calling \f[C]ros\ dump\ executable\ <file>\f[].
.SH description
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,16 +1,16 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-checkout" "1" "" "" ""
.hy
.PP
ros\-checkout \- # synopsis
.PP
\f[B]ros [options] checkout\f[R] args\&...
\f[B]ros [options] checkout\f[] args...
.SH description
.PP
to enable this command ros install roswell/ql\-checkout is needed.
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-client" "1" "" "" ""
.hy
@ -6,25 +6,32 @@
ros\-client \- one\-shot connect to remote repl.
.SH synopsis
.PP
\f[B]ros client\f[R] protocol [options for the protocol \&...] \&...
\f[B]ros [options for roswell ...] client\f[] protocol [options for the
protocol ...] ...
.SH description
.PP
\f[C]ros\-client\f[R] send message to lisp server and wait for message
\f[C]ros\-client\f[] send message to lisp server and wait for message
sent back.
.SH swank protocol options
.TP
.B \f[C]\-\-port port\f[R]
set server \f[C]port\f[R] to connect.
.B \f[C]\-\-port\ port\f[]
set server \f[C]port\f[] to connect.
default port 4005.
.RS
.RE
.TP
.B \f[C]\-\-interface interface\f[R]
.B \f[C]\-\-interface\ interface\f[]
interface for connect.
default is \f[C]localhost\f[R].
default is \f[C]localhost\f[].
.RS
.RE
.TP
.B \-e FORM \[en]eval FORM
.B \-e FORM \-\-eval FORM
Evaluate FORM while building
.RS
.RE
.SH SEE ALSO
.PP
\f[I]ros\f[R](1) \f[I]ros\-serve\f[R](1)
\f[I]ros\f[](1) \f[I]ros\-serve\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,22 +1,26 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-config" "1" "" "" ""
.hy
.PP
ros\-config \- get and set options # Synopsis
.PP
\f[B]ros [options] config\f[R] [SUBCOMMAND ARGS\&...]
\f[B]ros [options] config\f[] [SUBCOMMAND ARGS...]
.SH Description
.PP
Without any arguments, it shows all variables and it\[cq]s value.
Without any arguments, it shows all variables and it\[aq]s value.
.TP
.B show TARGET
show TARGET.
.RS
.RE
.TP
.B set TARGET VALUE
set the VALUE to the TARGET.
.RS
.RE
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,16 +1,16 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-delete" "1" "" "" ""
.hy
.PP
ros\-delete \- # synopsis
.PP
\f[B]ros delete\f[R] ARGS\&...
\f[B]ros delete\f[] ARGS...
.PP
Slightly complex arguments.
.SS ros delete dump IMAGES\&...
.SS ros delete dump IMAGES...
.PP
Whem ARGS starts with \f[C]dump\f[R], it considers the remaining args as
Whem ARGS starts with \f[C]dump\f[], it considers the remaining args as
the names for the dumped images.
It then deletes the image with the given name, if it exists.
.PP
@ -18,19 +18,20 @@ The deletion happens only to the images compatible with the current lisp
implementation/version.
For example, when ccl\-bin/1.10 and sbcl\-bin/1.3.1 both have images
named X, and if the current lisp in use is sbcl\-bin/1.3.1, then
\f[C]ros delete dump X\f[R] removes sbcl\-bin/1.3.1/X only.
.SS ros delete IMPLS\&...
\f[C]ros\ delete\ dump\ X\f[] removes sbcl\-bin/1.3.1/X only.
.SS ros delete IMPLS...
.PP
When the first argument is not \f[C]dump\f[R], then the arguments are
When the first argument is not \f[C]dump\f[], then the arguments are
treated as a list of installed implementations.
.PP
If a name of some implementation is given without version specifiers,
e.g.\ sbcl\-bin, then it removes all instances (versions) of sbcl\-bin.
e.g.
sbcl\-bin, then it removes all instances (versions) of sbcl\-bin.
.PP
If a version is specified, then it removes only the specified instance.
.SH description
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,14 +1,14 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-dist" "1" "" "" ""
.hy
.PP
ros\-dist \- # synopsis
.PP
\f[B]ros [options] dist\f[R] args\&...
\f[B]ros [options] dist\f[] args...
.SH description
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-dump" "1" "" "" ""
.hy
@ -6,65 +6,67 @@
ros\-dump \- make a dumped image of a roswell script
.SH Synopsis
.PP
\f[B]ros [OPTIONS1\&...] dump [OPTIONS2\&...] MODE\f[R] args\&...
\f[B]ros [OPTIONS1...] dump [OPTIONS2...] MODE\f[] args...
.PP
\f[C]OPTIONS1\f[R] specify the standard roswell options such as
\f[C]\-L\f[R] or \f[C]\-m LISP\f[R].
\f[C]OPTIONS2\f[R] specify the image reduction options we describe
later.
\f[C]MODE\f[R] is either \f[C]output\f[R] or \f[C]executable\f[R].
\f[C]OPTIONS1\f[] specify the standard roswell options such as
\f[C]\-L\f[] or \f[C]\-m\ LISP\f[].
\f[C]OPTIONS2\f[] specify the image reduction options we describe later.
\f[C]MODE\f[] is either \f[C]output\f[] or \f[C]executable\f[].
.SH Description
.PP
\f[C]ros\-dump\f[R] creates a dumped lisp image of the state after
processing all options \f[C]OPTIONS1\f[R].
\f[C]ros\-dump\f[] creates a dumped lisp image of the state after
processing all options \f[C]OPTIONS1\f[].
.PP
It has two modes \f[C]output\f[R] and \f[C]executable\f[R].
In both modes, the global environment (e.g.\ global binding to special
variables such as \f[C]*package*\f[R]) of the state just after the
restart is the environment which was effective when the script was
dumped.
It has two modes \f[C]output\f[] and \f[C]executable\f[].
In both modes, the global environment (e.g.
global binding to special variables such as \f[C]*package*\f[]) of the
state just after the restart is the environment which was effective when
the script was dumped.
.PP
The dumped image is generally not compatible between the different
implementations, and also between the versions.
.SH Dump modes
.SS output [\-f] [\-o OUTPUT] NAME
.PP
It loads the roswell script \f[C]NAME\f[R] and saves the current lisp
It loads the roswell script \f[C]NAME\f[] and saves the current lisp
state to an image.
.PP
The image file is by default written to an internal directory of roswell
in an organized manner, i.e., somewhere under
\f[C]$ROSWELL_INSTALL_DIR\f[R] deduced by the current implementation,
its version and the given NAME.
\f[C]$ROSWELL_INSTALL_DIR\f[] deduced by the current implementation, its
version and the given NAME.
.PP
When the output file already exists, the command fails with an error
code.
.PP
The image can be loaded by \f[C]ros \-m IMAGE\f[R].
The image can be loaded by \f[C]ros\ \-m\ IMAGE\f[].
When restarting from the image, standard roswell subcommands and
additional arguments to the script are also available, for example
\f[C]ros run\f[R] to resume with a repl, or \f[C]\-\-restart FUNC\f[R]
\f[C]ros\ run\f[] to resume with a repl, or \f[C]\-\-restart\ FUNC\f[]
to call a specific function, leaving some flexibility.
.TP
.B \f[C]\-o OUTPUT\f[R]
The image is written to \f[C]OUTPUT\f[R] instead of the default
location.
.B \f[C]\-o\ OUTPUT\f[]
The image is written to \f[C]OUTPUT\f[] instead of the default location.
.RS
.RE
.TP
.B \f[C]\-f\f[R]
.B \f[C]\-f\f[]
Force output when the output already exists.
.RS
.RE
.SS executable NAME [\-o OUTPUT]
.PP
When a script is dumped with \f[C]executable\f[R], the dumped image
When a script is dumped with \f[C]executable\f[], the dumped image
becomes an self\-contained executable binary which implies
\f[C]\-\-restart main\f[R].
\f[C]\-\-restart\ main\f[].
.PP
If \f[C]OUTPUT\f[R] is given, the resulting binary is written to this
If \f[C]OUTPUT\f[] is given, the resulting binary is written to this
file.
Otherwise, the output filename is deduced from \f[C]NAME\f[R] and is
Otherwise, the output filename is deduced from \f[C]NAME\f[] and is
written in the same directory.
On Windows and if \f[C]SCRIPT\f[R] has \f[C].ros\f[R] extension, the
filename will be \f[C]SCRIPT.exe\f[R].
On the other systems, the result will be \f[C]SCRIPT\f[R] (without
On Windows and if \f[C]SCRIPT\f[] has \f[C]\&.ros\f[] extension, the
filename will be \f[C]SCRIPT.exe\f[].
On the other systems, the result will be \f[C]SCRIPT\f[] (without
extension).
.PP
This feature is supported on SBCL, CCL, CMUCL, CLISP, ECL.
@ -78,83 +80,106 @@ Care should be taken to ensure the resulting program works as expected,
as some of these operation may destroy the common assumptions of the
conforming programs.
For example, package\-related reduction options may inhibit the runtime
calls to \f[C]READ\f[R] after the restart.
calls to \f[C]READ\f[] after the restart.
.PP
Reduction options are processed in the left\-to\-right manner.
.TP
.B \[en]disable\-compression, \[en]enable\-compression, \-c
.B \-\-disable\-compression, \-\-enable\-compression, \-c
These options disable/enable/enable the core compression feature in
SBCL.
Thus this option is meaningful only on SBCL.
Compression is enabled by default.
.RS
.RE
.TP
.B \[en]remove\-docstrings
.B \-\-remove\-docstrings
This option removes all docstrings from all symbols in the entire lisp
image.
.RS
.RE
.TP
.B \[en]delete\-package PKG
.B \-\-delete\-package PKG
This option can be specified multiple times.
It uninterns the symbols in PACKAGE, calls \f[C]makeunbound\f[R] and
\f[C]fmakeunbound\f[R] on each symbol and deletes the package.
Package names are automatically string\-upcase\[cq]d.
It uninterns the symbols in PACKAGE, calls \f[C]makeunbound\f[] and
\f[C]fmakeunbound\f[] on each symbol and deletes the package.
Package names are automatically string\-upcase\[aq]d.
.RS
.RE
.TP
.B \[en]delete\-all\-packages
This option applies \[en]delete\-package PKG on all packages, except
some blacklisted packages (keyword, roswell, ROS.SCRIPT.DUMP, and the
package of the main function symbol).
.B \-\-delete\-all\-packages
This option applies \-\-delete\-package PKG on all packages, except some
blacklisted packages (keyword, roswell, ROS.SCRIPT.DUMP, and the package
of the main function symbol).
.RS
.RE
.TP
.B \[en]delete\-packages\-except PACKAGE
.B \-\-delete\-packages\-except PACKAGE
This option can be specified multiple times.
It is identical to \[en]delete\-all\-packages except that it adds
PACKAGE to the blacklist.
Package names are automatically string\-upcase\[cq]d.
It is identical to \-\-delete\-all\-packages except that it adds PACKAGE
to the blacklist.
Package names are automatically string\-upcase\[aq]d.
.RS
.RE
.TP
.B \[en]destroy\-packages\-sbcl
.B \-\-destroy\-packages\-sbcl
This is an sbcl\-specific option which is even more aggressive than the
above methods (>10MB reduction).
It destroys the package system by modifying the internal tables for
packages, cleaning up the caches for package\-use\-list etc.
The blacklist is shared among \[en]delete\-all\-packages and
\[en]destroy\-packages\-sbcl.
The blacklist is shared among \-\-delete\-all\-packages and
\-\-destroy\-packages\-sbcl.
However, this method does not call fmakunbound/makunbound, so combining
the two methods can result in a more aggressive image size reduction.
Due to the nature of this option, it is desirable to specify it as the
last method (i.e.\ rightmost).
last method (i.e.
rightmost).
.RS
.RE
.TP
.B \[en]purify, \[en]no\-purify
.B \-\-purify, \-\-no\-purify
This is common to CCL, SBCL, CMUCL.
Moves all objects to the static space where GC does not scan, for the
later performance of GC.
Purification is enabled by default.
.RS
.RE
.TP
.B \[en]impurify, \[en]no\-impurify
.B \-\-impurify, \-\-no\-impurify
This is an CCL\-specific option (enabled by default).
It moves all objects to the dynamic space before saving the image.
This allows the static\-space objects to be GC\[cq]ed.
This allows the static\-space objects to be GC\[aq]ed.
When purification is enabled, it impurifies all objects before running
the purifying GC.
.RS
.RE
.TP
.B \[en]delete\-debug\-info
.B \-\-delete\-debug\-info
This removes the debug infomation of functions (used to show the stack
frame etc), as well as the source locations and the deprecation
information of various symbols.
SBCL only.
This option has a large effect (+10MB reduction).
.RS
.RE
.TP
.B \[en]delete\-macro\-definitions, \[en]delete\-compiler\-macro\-definitions
.B \-\-delete\-macro\-definitions, \-\-delete\-compiler\-macro\-definitions
This removes all definitions of macros and compiler\-macros, assuming
that no runtime compilation/interpretation of code will be performed.
This option should be portable across implementations.
It has \[ti]2MB reduction on SBCL.
It has ~2MB reduction on SBCL.
.RS
.RE
.TP
.B \[en]delete\-compiler\-information\-sbcl
.B \-\-delete\-compiler\-information\-sbcl
This is an SBCL\-specific option which is more aggressive than the above
methods (\[ti]4MB reduction).
methods (~4MB reduction).
In addition to the macro and the compiler\-macro definitions, it
destroys the internal compiler systems of SBCL by also removing the
inlining information, IR1 transformer and IR2 (VOP).
.RS
.RE
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1) \f[I]ros\f[R](1) \f[I]ros\-init\f[R](1)
\f[I]sbcl\f[](1) \f[I]ros\f[](1) \f[I]ros\-init\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,11 +1,11 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-emacs" "1" "" "" ""
.hy
.PP
ros\-emacs \- launch Emacs with Slime # Synopsis
.PP
\f[B]ros emacs\f[R] [ARGS\&...]
\f[B]ros emacs\f[] [ARGS...]
.SH Description
.PP
Launches Emacs with a Slime(https://common\-lisp.net/project/slime/)
@ -14,6 +14,6 @@ of roswell.
Additional arguments are passed to emacs.
.SH SEE ALSO
.PP
\f[I]ros\f[R](1), \f[I]emacs\f[R](1)
\f[I]ros\f[](1), \f[I]emacs\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-help" "1" "" "" ""
.hy
@ -6,12 +6,12 @@
ros\-help \- Show Command help
.SH Synopsis
.PP
\f[B]ros help\f[R] [subcommand or topics]
\f[B]ros help\f[] [subcommand or topics]
.SH Description
.PP
\f[B]ros help\f[R] shows description of subcommand or topics
\f[B]ros help\f[] shows description of subcommand or topics
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1), \f[I]ros\f[R](1)
\f[I]sbcl\f[](1), \f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-init" "1" "" "" ""
.hy
@ -6,16 +6,16 @@
ros\-init \- Create a roswell script (optionally based on a template)
.SH Synopsis
.PP
\f[B]ros init [TEMPLATE] NAME [ARGS\&...]]\f[R]
\f[B]ros init [TEMPLATE] NAME [ARGS...]]\f[]
.TP
.B TEMPLATE
Specifies the name of a template, defaulted to \f[I]default\f[R]
Specifies the name of a template, defaulted to \f[I]default\f[]
template.
However, if \f[I]TEMPLATE\f[R] is not specified and \f[I]FILENAME\f[R]
However, if \f[I]TEMPLATE\f[] is not specified and \f[I]FILENAME\f[]
matches one of the templates being stored, then it automatically uses
the template.
To suppress this behavior, you should explicitly specify
\f[I]TEMPLATE\f[R] as \f[I]default\f[R].
\f[I]TEMPLATE\f[] as \f[I]default\f[].
.RS
.PP
Thus you are warned when you use this command from a shell script.
@ -24,46 +24,47 @@ that they should always explicitly specify the template name.
.RE
.TP
.B NAME
Specify the output filename, or \[lq]\-\[rq] to indicate
\f[I]stdout\f[R].
When \f[I]TEMPLATE\f[R] is \f[I]default\f[R], it automatically appends a
file type \[lq].ros\[rq].
Specify the output filename, or "\-" to indicate \f[I]stdout\f[].
When \f[I]TEMPLATE\f[] is \f[I]default\f[], it automatically appends a
file type ".ros".
.RS
.RE
.SH Description
.PP
Initialises a roswell file based on a template.
User\-specified templates can be added by \f[I]ros\-template\f[R](1).
User\-specified templates can be added by \f[I]ros\-template\f[](1).
.PP
The default template is something like:
.IP
.nf
\f[C]
#!/bin/sh
#|\-*\- mode:lisp \-*\-|#
#| <Put a one\-line description here>
exec ros \-Q \-\- $0 \[dq]$\[at]\[dq]
#|\-*\-\ mode:lisp\ \-*\-|#
#|\ <Put\ a\ one\-line\ description\ here>
exec\ ros\ \-Q\ \-\-\ $0\ "$\@"
|#
(progn ;;init forms
(ros:ensure\-asdf)
;;#+quicklisp (ql:quickload \[aq]() :silent t)
)
(progn\ ;;init\ forms
\ \ (ros:ensure\-asdf)
\ \ ;;#+quicklisp\ (ql:quickload\ \[aq]()\ :silent\ t)
\ \ )
(defpackage :ros.script.test.3703600390
(:use :cl))
(in\-package :ros.script.test.3703600390)
(defpackage\ :ros.script.test.3703600390
\ \ (:use\ :cl))
(in\-package\ :ros.script.test.3703600390)
(defun main (&rest argv)
(declare (ignorable argv)))
;;; vim: set ft=lisp lisp:
\f[R]
(defun\ main\ (&rest\ argv)
\ \ (declare\ (ignorable\ argv)))
;;;\ vim:\ set\ ft=lisp\ lisp:
\f[]
.fi
.PP
This is basically a shell script which immediately invokes Roswell by
exec (see \f[I]sh(1)\f[R]).
exec (see \f[I]sh(1)\f[]).
Roswell loads the same script as an input, skips multi\-line comments,
reads the rest of the file as a Common Lisp program, and finally invokes
a function main with command\-line arguments.
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1) \f[I]ros\f[R](1) \f[I]ros\-template\f[R](1)
\f[I]sbcl\f[](1) \f[I]ros\f[](1) \f[I]ros\-template\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-install" "1" "" "" ""
.hy
@ -6,78 +6,82 @@
ros\-install \- Install lisp implementations or quicklisp system
.SH Synopsis
.IP \[bu] 2
\f[B]ros install\f[R] system [system \&...]
\f[B]ros install\f[] system [system ...]
.IP \[bu] 2
\f[B]ros install\f[R] impl[/version] [param \&...]
\f[B]ros install\f[] impl[/version] [param ...]
.SH Description
.TP
.B system
a name specifying a system.
.RS
.RE
.TP
.B impl
a name specifying a lisp implementation.
.RS
.RE
.SH Installing a Lisp Implementation
.PP
When the \f[C]impl\f[R] or \f[C]system\f[R] matches to one of the
When the \f[C]impl\f[] or \f[C]system\f[] matches to one of the
supported implementations, it fetches, downloads and installs it to one
of the internal directory managed by roswell (\[ti]/.roswell, or
\f[C]ROSWELL_INSTALL_DIR\f[R]).
of the internal directory managed by roswell (~/.roswell, or
\f[C]ROSWELL_INSTALL_DIR\f[]).
In order to use the installed implementation, you have to run
\f[I]ros\-use(1)\f[R].
\f[I]ros\-use(1)\f[].
.PP
For example, the following command downloads the latest sbcl binary from
sbcl.org.
Note that this may be different from the default binary installed by
roswell, called \f[C]sbcl\-bin\f[R].
\f[C]sbcl\-bin\f[R] is a stable and well\-tested version of the sbcl
roswell, called \f[C]sbcl\-bin\f[].
\f[C]sbcl\-bin\f[] is a stable and well\-tested version of the sbcl
binary which is supposed to be a little older than the latest sbcl.
.IP
.nf
\f[C]
$ ros install sbcl
\f[R]
$\ ros\ install\ sbcl
\f[]
.fi
.PP
When invoked without a name, it prints the list of installable
implementations.
(Not to be confused with \f[C]ros list installed\f[R], which shows the
(Not to be confused with \f[C]ros\ list\ installed\f[], which shows the
implementations already installed.)
.IP
.nf
\f[C]
Usage: ros install impl [OPTIONS]
Usage:\ ros\ install\ impl\ [OPTIONS]
For more details on impl specific options, type:
ros help install impl
For\ more\ details\ on\ impl\ specific\ options,\ type:
ros\ help\ install\ impl
Candidates impls for installation are:
Candidates\ impls\ for\ installation\ are:
ecl
sbcl
clisp
ccl\-bin
sbcl\-bin
\f[R]
\f[]
.fi
.PP
The name can be optionally followed by a slash \f[C]/\f[R] and a version
The name can be optionally followed by a slash \f[C]/\f[] and a version
of the implementation.
.IP
.nf
\f[C]
$ ros install sbcl/1.2.14
\f[R]
$\ ros\ install\ sbcl/1.2.14
\f[]
.fi
.PP
There might be some \f[I]hidden\f[R] implementation that are not listed
here \[em] they are in the alpha quality, but try the one you like or
There might be some \f[I]hidden\f[] implementation that are not listed
here \-\-\- they are in the alpha quality, but try the one you like or
watch the website (https://github.com/roswell/roswell).
.IP
.nf
\f[C]
$ ros install ccl
$ ros install abcl
$ ...
\f[R]
$\ ros\ install\ ccl
$\ ros\ install\ abcl
$\ ...
\f[]
.fi
.SH Installing a quicklisp system and the bundled roswell scripts
.PP
@ -86,36 +90,36 @@ tries to find a quicklisp system of the given name.
.IP
.nf
\f[C]
$ ros install alexandria
\f[R]
$\ ros\ install\ alexandria
\f[]
.fi
.PP
After compiling and loading the system, it funcalls
\f[C]ros:*build\-hook*\f[R] special variable with no argument, if some
\f[C]ros:*build\-hook*\f[] special variable with no argument, if some
function is set during the compilation/load.
.PP
When the system comes with a \f[B]roswell script\f[R] created by
\f[I]ros\-init\f[R](1) in the subdirectory \f[C]roswell\f[R], they are
installed into \f[B]ROSWELL_INSTALL_DIR/bin\f[R].
When the system comes with a \f[B]roswell script\f[] created by
\f[I]ros\-init\f[](1) in the subdirectory \f[C]roswell\f[], they are
installed into \f[B]ROSWELL_INSTALL_DIR/bin\f[].
Setting the path to this directory makes those scripts available from
the shell command line.
.IP
.nf
\f[C]
$ ros install qlot
System \[aq]qlot\[aq] found. Loading the system..
Processing build\-hook..
Found 1 scripts: qlot
Attempting to install the scripts in roswell/ subdirectory of the system...
$\ ros\ install\ qlot
System\ \[aq]qlot\[aq]\ found.\ Loading\ the\ system..
Processing\ build\-hook..
Found\ 1\ scripts:\ qlot
Attempting\ to\ install\ the\ scripts\ in\ roswell/\ subdirectory\ of\ the\ system...
/home/user/.roswell/bin/qlot
$ qlot
Usage: qlot [install | update | bundle | exec shell\-args..]
\f[R]
$\ qlot
Usage:\ qlot\ [install\ |\ update\ |\ bundle\ |\ exec\ shell\-args..]
\f[]
.fi
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1), \f[I]ros\f[R](1), \f[I]ros\-list\f[R](1),
\f[I]ros\-init\f[R](1)
\f[I]sbcl\f[](1), \f[I]ros\f[](1), \f[I]ros\-list\f[](1),
\f[I]ros\-init\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-list" "1" "" "" ""
.hy
@ -6,29 +6,35 @@
ros\-list \- list the materials installed by roswell
.SH Synopsis
.PP
\f[B]ros list [type] [options]\f[R]
\f[B]ros list [type] [options]\f[]
.SH Description
.PP
\f[B]ros list\f[R] shows the list of the materials installed by roswell.
\f[B]ros list\f[] shows the list of the materials installed by roswell.
.TP
.B installed [ [ IMPL | IMPL/VERSION ]\&...]
.B installed [ [ IMPL | IMPL/VERSION ]...]
List the implementations that have been already installed.
Optionally providing IMPL shows the installed versions of the
implementation.
.RS
.RE
.TP
.B dump [IMPL]
List the internal dumped images that are compatible with IMPL.
When IMPL is ommited, it is defaulted to the current lisp implementation
in use.
Images are in \f[C]$ROSWELL_INSTALL_DIR/impl/.../dump/\f[R].
Images are in \f[C]$ROSWELL_INSTALL_DIR/impl/.../dump/\f[].
.RS
.RE
.TP
.B versions [IMPL]
List the installable versions for IMPL.
When IMPL is ommited, it is defaulted to the current lisp implementation
in use.
This feature is experimental.
.RS
.RE
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1) \f[I]ros\f[R](1)
\f[I]sbcl\f[](1) \f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,17 +1,17 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-run" "1" "" "" ""
.hy
.PP
ros\-run \- start a REPL # Synopsis
.PP
\f[B]ros [options] run\f[R]
\f[B]ros [options] run\f[]
.SH Description
.PP
Processes the given options and start a REPL using the currently
effective lisp implementation set by \f[I]ros\-use\f[R](1).
effective lisp implementation set by \f[I]ros\-use\f[](1).
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-serve" "1" "" "" ""
.hy
@ -6,22 +6,26 @@
ros\-serve \- start lisp server
.SH Synopsis
.PP
\f[B]ros [options for roswell \&... ] serve\f[R] protocol [options for
the protocol \&...] \&...
\f[B]ros [options for roswell ... ] serve\f[] protocol [options for the
protocol ...] ...
.SH description
.PP
\f[C]ros\-serve\f[R] start lisp and wait for clients to connect to the
\f[C]ros\-serve\f[] start lisp and wait for clients to connect to the
lisp.
.SH swank protocol options
.TP
.B \f[C]\-\-port port\f[R]
Listen port would be \f[C]port\f[R] instead of the default port 4005.
.B \f[C]\-\-port\ port\f[]
Listen port would be \f[C]port\f[] instead of the default port 4005.
.RS
.RE
.TP
.B \f[C]\-\-interface interface\f[R]
.B \f[C]\-\-interface\ interface\f[]
limit interface for listen.
default is \f[C]localhost\f[R] so there would be no limitation.
default is \f[C]localhost\f[] so there would be no limitation.
.RS
.RE
.SH SEE ALSO
.PP
\f[I]ros\f[R](1) \f[I]ros\-client\f[R](1)
\f[I]ros\f[](1) \f[I]ros\-client\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-setup" "1" "" "" ""
.hy
@ -6,22 +6,22 @@
ros\-setup \- setup the backend of roswell
.SH Synopsis
.PP
\f[B]ros setup\f[R]
\f[B]ros setup\f[]
.SH Description
.PP
\f[B]ros setup\f[R] initializes roswell.
\f[B]ros setup\f[] initializes roswell.
The process includes the following steps:
.IP \[bu] 2
Downloading the default stable lisp implementation (sbcl\-bin) to
\f[C]ROSWELL_INSTALL_DIR\f[R].
\f[C]ROSWELL_INSTALL_DIR\f[].
.IP \[bu] 2
Installing quicklisp to \f[C]ROSWELL_INSTALL_DIR\f[R].
Installing quicklisp to \f[C]ROSWELL_INSTALL_DIR\f[].
.IP \[bu] 2
On Windows, install 7zip to \f[C]ROSWELL_INSTALL_DIR\f[R].
On Windows, install 7zip to \f[C]ROSWELL_INSTALL_DIR\f[].
.IP \[bu] 2
Making the core image of roswell itself.
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1), \f[I]ros\f[R](1), section Environmental Variables
\f[I]sbcl\f[](1), \f[I]ros\f[](1), section Environmental Variables
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-template" "1" "" "" ""
.hy
@ -6,223 +6,248 @@
ros\-template \- Edit template for ros\-init
.SH synopsis
.IP \[bu] 2
\f[B]ros template\f[R] command args\&...
\f[B]ros template\f[] command args...
.SH Subcommands
.TP
.B init template\-name
Create new template in local\-project directory.
.RS
.RE
.TP
.B deinit template\-name
Remove a template from local\-project directory.
.RS
.RE
.TP
.B list
Show file list and states of the files \f[I]type\f[R] \f[I]chmod\f[R]
\f[I]rewrite\f[R] in templates.
Show file list and states of the files \f[I]type\f[] \f[I]chmod\f[]
\f[I]rewrite\f[] in templates.
.RS
.RE
.TP
.B checkout [template\-name]
When invoked without template\-name,this command shows candidates for
current templates to operate.If with template\-name, this command choose
the name as current template.
.RS
.RE
.TP
.B add [template\-name] [files \&...]
.B add [template\-name] [files ...]
Add files to current template.First parameter could taken as a
template\-name when current template are \f[I]default\f[R].
template\-name when current template are \f[I]default\f[].
.RS
.RE
.TP
.B cat [template\-name] [files \&...]
.B cat [template\-name] [files ...]
Show contents in the current template.
.RS
.RE
.TP
.B edit [template\-name] [files \&...]
Edit content of files in template using \f[C]/usr/bin/editor\f[R].
.B edit [template\-name] [files ...]
Edit content of files in template using \f[C]/usr/bin/editor\f[].
.RS
.RE
.TP
.B path [template\-name] [files \&...]
Show native path of files in template.
.TP
.B rm [template\-name] [files \&...]
.B rm [template\-name] [files ...]
Remove file form current template.
.RS
.RE
.TP
.B type [template\-name] [type] [files \&...]
.B type [template\-name] [type] [files ...]
Change file type.
current choice for \f[I]type\f[R]s are \f[I]djula\f[R] or \f[I]copy\f[R]
current choice for \f[I]type\f[]s are \f[I]djula\f[] or \f[I]copy\f[]
{{name}} {{author}} {{email}} {{universal_time}} are available variable
in the template file.
Withoug files, change default type.
.RS
.RE
.TP
.B chmod [template\-name] [mode] [files \&...]
.B chmod [template\-name] [mode] [files ...]
Change file mode bits to generate.
specify mode in octal format.
.RS
.RE
.TP
.B rewrite [template\-name] file rewrite\-rule
Change file name using djula template.Variables {{name}} {{author}}
{{email}} {{universal_time}} are available for rewrite\-rule.
.RS
.RE
.TP
.B export [template\-name] [directory]
Export files in current template to current directory.
.RS
.RE
.TP
.B import [directory]
Import template in current directory
.RS
.RE
.TP
.B help
Show the subcommand help.
.RS
.RE
.SH Description
.PP
The \f[I]ros\-template\f[R](1) command manages templates of projects.
The \f[I]ros\-template\f[](1) command manages templates of projects.
.SS Create template
.PP
First, the \f[C]init\f[R] sub\-command creates an empty template.
First, the \f[C]init\f[] sub\-command creates an empty template.
.IP
.nf
\f[C]
$ ros template init sample\-template
\f[R]
$\ ros\ template\ init\ sample\-template
\f[]
.fi
.PP
Many of sub\-commands take a template name as first argument.
But you can omit it by the \f[C]checkout\f[R] sub\-commands.
But you can omit it by the \f[C]checkout\f[] sub\-commands.
After the following, such sub\-commands are applied to
\f[C]sample\-template\f[R].
\f[C]sample\-template\f[].
.IP
.nf
\f[C]
$ ros template checkout sample\-template
\f[R]
$\ ros\ template\ checkout\ sample\-template
\f[]
.fi
.PP
Next, the \f[C]add\f[R] sub\-command adds local file[s] to template.
Then, the \f[C]list\f[R] sub\-command shows information of files in
Next, the \f[C]add\f[] sub\-command adds local file[s] to template.
Then, the \f[C]list\f[] sub\-command shows information of files in
template.
.IP
.nf
\f[C]
$ echo \[dq]Hello {{ author }}!!\[dq] > sample.txt
$ ros template add sample.txt
$ ros template list
copy sample.txt
\f[R]
$\ echo\ "Hello\ {{\ author\ }}!!"\ >\ sample.txt
$\ ros\ template\ add\ sample.txt
$\ ros\ template\ list
\ \ \ \ \ \ copy\ \ sample.txt\
\f[]
.fi
.PP
The word \f[I]copy\f[R] means a strategy when applying the template.
The word \f[I]copy\f[] means a strategy when applying the template.
There are the following 2 strategies.
.IP \[bu] 2
\f[I]copy\f[R] simply copies the file as\-is.
\f[I]copy\f[] simply copies the file as\-is.
.IP \[bu] 2
\f[I]djula\f[R] processes the content of the file by template engine,
\f[I]djula\f[] processes the content of the file by template engine,
Djula (http://mmontone.github.io/djula/).
.RS 2
.IP \[bu] 2
Available variables are explained later.
.RE
.PP
The \f[C]type\f[R] sub\-command changes it.
In addition, default strategy (\f[I]copy\f[R]) can be changed for each
template by the \f[C]type\f[R] sub\-command without file names (Ex.
\f[C]ros template type djula\f[R]).
The \f[C]type\f[] sub\-command changes it.
In addition, default strategy (\f[I]copy\f[]) can be changed for each
template by the \f[C]type\f[] sub\-command without file names (Ex.
\f[C]ros\ template\ type\ djula\f[]).
.IP
.nf
\f[C]
$ ros template type djula sample.txt
$ ros template list
djula sample.txt
\f[R]
$\ ros\ template\ type\ djula\ sample.txt
$\ ros\ template\ list
\ \ \ \ \ \ djula\ sample.txt\
\f[]
.fi
.PP
The \f[C]sample.txt\f[R] will be simply output as \f[C]sample.txt\f[R]
in default.
But you can change it by the \f[C]rewrite\f[R] sub\-command.
The \f[C]sample.txt\f[] will be simply output as \f[C]sample.txt\f[] in
default.
But you can change it by the \f[C]rewrite\f[] sub\-command.
In the following example, it will be output as
\f[C]sample_<project name>.txt\f[R].
\f[C]sample_<project\ name>.txt\f[].
.IP
.nf
\f[C]
$ ros template rewrite sample.txt \[dq]sample\-{{ name }}.txt\[dq]
$ ros template list
djula sample.txt \-> \[dq]sample\-{{ name }}.txt\[dq]
\f[R]
$\ ros\ template\ rewrite\ sample.txt\ "sample\-{{\ name\ }}.txt"
$\ ros\ template\ list
\ \ \ \ \ \ djula\ sample.txt\ \->\ "sample\-{{\ name\ }}.txt"
\f[]
.fi
.PP
Note: Rewrite rules are always processed by Djula irrespective of
strategy of the file.
.SS Apply template
.PP
\f[I]ros\-init\f[R](1) can specify a template.
\f[I]ros\-init\f[](1) can specify a template.
.IP
.nf
\f[C]
$ mkdir temp ; cd temp
$ ros init sample\-template some\-project
$ ls
$\ mkdir\ temp\ ;\ cd\ temp
$\ ros\ init\ sample\-template\ some\-project
$\ ls
sample\-some\-project.txt
$ cat sample\-some\-project.txt # Assume that \[dq]author\[dq] is \[dq]alien\[dq]
Hello alien!!
\f[R]
$\ cat\ sample\-some\-project.txt\ #\ Assume\ that\ "author"\ is\ "alien"
Hello\ alien!!
\f[]
.fi
.PP
The file name and its content are processed by Djula as explained in the
above.
The following variables can be used in defaut.
.IP \[bu] 2
{{name}}: A project name specified in \f[I]ros\-init\f[R](1)
{{name}}: A project name specified in \f[I]ros\-init\f[](1)
.IP \[bu] 2
{{author}}: An author name extracted from config of Git or
\f[C]whoami\f[R]
\f[C]whoami\f[]
.IP \[bu] 2
{{email}}: An e\-mail address extracted from config of Git or created
using \f[C]whoami\f[R] and \f[C]hostname\f[R]
using \f[C]whoami\f[] and \f[C]hostname\f[]
.IP \[bu] 2
{{universal_time}}: A universal time created by
\f[C]get\-universal\-time\f[R] function
\f[C]get\-universal\-time\f[] function
.PP
In addition, you can use original variables as the followings.
.IP
.nf
\f[C]
$ echo \[dq]Hello {{ area }}!!\[dq] > sample.txt
$ ros template add sample.txt # Note: It overwrites existing
$ mkdir temp ; cd temp
$ ros init sample\-template roswell \-\-area 51
$ cat sample\-roswell.txt
Hello 51!!
\f[R]
$\ echo\ "Hello\ {{\ area\ }}!!"\ >\ sample.txt
$\ ros\ template\ add\ sample.txt\ #\ Note:\ It\ overwrites\ existing
$\ mkdir\ temp\ ;\ cd\ temp
$\ ros\ init\ sample\-template\ roswell\ \-\-area\ 51
$\ cat\ sample\-roswell.txt
Hello\ 51!!
\f[]
.fi
.SS Export and import template
.PP
Basically, \f[I]ros\-template\f[R](1) is designed to internally manage
Basically, \f[I]ros\-template\f[](1) is designed to internally manage
added files.
.PP
However, if you want to, for example, manage it using Git in a local
directory or to install distributed templates, you can use the
\f[C]export\f[R] and \f[C]import\f[R] sub\-commands.
\f[C]export\f[] and \f[C]import\f[] sub\-commands.
.PP
First, the \f[C]export\f[R] sub\-command exports added files and a
setting file \f[C]roswell.init.<template name>.asd\f[R] that is
First, the \f[C]export\f[] sub\-command exports added files and a
setting file \f[C]roswell.init.<template\ name>.asd\f[] that is
internally created and editted.
.IP
.nf
\f[C]
$ ros template export dir
$ ls dir
roswell.init.sample\-template.asd sample.txt
$ cat dir/sample.txt
Hello {{ area }}!!
\f[R]
$\ ros\ template\ export\ dir
$\ ls\ dir
roswell.init.sample\-template.asd\ \ sample.txt
$\ cat\ dir/sample.txt
Hello\ {{\ area\ }}!!
\f[]
.fi
.PP
Second, the \f[C]import\f[R] sub\-command imports them.
Second, the \f[C]import\f[] sub\-command imports them.
.IP
.nf
\f[C]
# Assume that this is another machine...
$ ros template list sample\-template # nothing is output
$ ls downloaded
roswell.init.sample\-template.asd sample.txt
$ ros template import downloaded
$ ros template list sample\-template
djula sample.txt \-> \[dq]sample\-{{ name }}.txt\[dq]
\f[R]
#\ Assume\ that\ this\ is\ another\ machine...
$\ ros\ template\ list\ sample\-template\ #\ nothing\ is\ output\
$\ ls\ downloaded
roswell.init.sample\-template.asd\ \ sample.txt
$\ ros\ template\ import\ downloaded
$\ ros\ template\ list\ sample\-template
\ \ \ \ \ \ djula\ sample.txt\ \->\ "sample\-{{\ name\ }}.txt"
\f[]
.fi
.PP
Note: If there is a template whose name is same, it will be overwritten.
.SH SEE ALSO
.PP
\f[I]ros\f[R](1) \f[I]ros\-init\f[R](1)
\f[I]ros\f[](1) \f[I]ros\-init\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-update" "1" "" "" ""
.hy
@ -6,23 +6,27 @@
ros\-update \- Update system installed from vcs
.SH Synopsis
.IP \[bu] 2
\f[B]ros update\f[R] system [system \&...]
\f[B]ros update\f[] system [system ...]
.IP \[bu] 2
\f[B]ros update\f[R] method [params \&...]
\f[B]ros update\f[] method [params ...]
.SH Description
.TP
.B system
a name specifying a system.
.RS
.RE
.TP
.B method
currently supported method is \f[C]git\f[R].
currently supported method is \f[C]git\f[].
.RS
.RE
.SH Update system
.PP
When system are already installed and the system has \f[C].git\f[R] in
the system directory it invoke \f[C]git pull\f[R] and
\f[C]ros install\f[R] the system.
When system are already installed and the system has \f[C]\&.git\f[] in
the system directory it invoke \f[C]git\ pull\f[] and
\f[C]ros\ install\f[] the system.
.SH SEE ALSO
.PP
\f[I]ros\f[R](1), \f[I]ros\-install\f[R](1)
\f[I]ros\f[](1), \f[I]ros\-install\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,36 +1,36 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-use" "1" "" "" ""
.hy
.PP
ros\-use \- sets the default implementation used by roswell # synopsis
.PP
\f[B]ros [options] use\f[R] impl[/version]
\f[B]ros [options] use\f[] impl[/version]
.PP
impl : The name of an implementation which is already installed.
New implementations can be downloaded by \f[I]ros\-install\f[R](1).
New implementations can be downloaded by \f[I]ros\-install\f[](1).
The list of installed implementations is available in
\f[I]ros\-list\f[R](1).
\f[I]ros\-list\f[](1).
.PP
version: : The version specifier.
The string representation of the version (e.g.\ .) depends on each
implementation and roswell generally follows the representation used by
the implementation.
In addition, \f[I]a special version name \[lq]system\[rq]\f[R] tells
roswell to use the implementation that is installed in your system,
which should be in PATH.
The string representation of the version (e.g.
.) depends on each implementation and roswell generally follows the
representation used by the implementation.
In addition, \f[I]a special version name "system"\f[] tells roswell to
use the implementation that is installed in your system, which should be
in PATH.
.SH example
.PP
ros use sbcl : use the latest SBCL among several versions of SBCLs
installed by \f[I]ros\-install\f[R].
installed by \f[I]ros\-install\f[].
This is compiled from the source, which may take some time to install
but allows SLIME to jump to the implementation source code.
.PP
ros use sbcl\-bin : use the latest stable SBCL binary downloaded from
vendor\[cq]s website.
vendor\[aq]s website.
Roswell uses this by default.
\f[C]sbcl\-bin\f[R] tends to be an older version compared to
\f[C]sbcl\f[R], but surely newer than your \f[I]apt\-get\f[R] installed
\f[C]sbcl\-bin\f[] tends to be an older version compared to
\f[C]sbcl\f[], but surely newer than your \f[I]apt\-get\f[] installed
counterpart!
.PP
ros use sbcl/1.3.1 : use the compiled SBCL 1.3.1.
@ -42,11 +42,11 @@ ros use sbcl/system : use the SBCL available in the PATH.
ros use ccl : use the CCL compiled from the source.
Same set of version specifiers as for SBCL can be applied.
.PP
Roswell also supports \f[I]abcl\f[R], \f[I]acl\f[R], \f[I]clisp\f[R],
\f[I]cmu\f[R] and \f[I]ecl\f[R].
Roswell also supports \f[I]abcl\f[], \f[I]acl\f[], \f[I]clisp\f[],
\f[I]cmu\f[] and \f[I]ecl\f[].
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1), \f[I]ros\f[R](1), \f[I]ros\-install\f[R](1),
\f[I]ros\-list\f[R](1)
\f[I]sbcl\f[](1), \f[I]ros\f[](1), \f[I]ros\-install\f[](1),
\f[I]ros\-list\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,11 +1,11 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros-wait" "1" "" "" ""
.hy
.PP
ros\-wait \- # synopsis
.PP
\f[B]ros [options] wait\f[R]
\f[B]ros [options] wait\f[]
.SH Description
.PP
Wait forever after processing the options.
@ -19,11 +19,11 @@ from the client.
.IP
.nf
\f[C]
$ ros \-sp clack \-l app.lisp \-e \[aq](clack:clackup)\[aq] wait
\f[R]
$\ ros\ \-sp\ clack\ \-l\ app.lisp\ \-e\ \[aq](clack:clackup)\[aq]\ wait
\f[]
.fi
.SH SEE ALSO
.PP
\f[I]ros\f[R](1)
\f[I]ros\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 2.5
.\" Automatically generated by Pandoc 1.16.0.2
.\"
.TH "ros" "1" "" "" ""
.hy
@ -6,11 +6,11 @@
Roswell \- Common Lisp environment setup Utility
.SH Synopsis
.IP \[bu] 2
\f[B]ros\f[R] [\f[B]options\f[R]] \f[C][command [args...]\f[R]
\f[B]ros\f[] [\f[B]options\f[]] \f[C][command\ [args...]\f[]
.IP \[bu] 2
\f[B]ros\f[R] [\f[B]options\f[R]] \f[C][\-\-]script [args...]\f[R]
\f[B]ros\f[] [\f[B]options\f[]] \f[C][\-\-]script\ [args...]\f[]
.IP \[bu] 2
\f[B]ros\f[R] [\f[B]options\f[R]] < script.ros
\f[B]ros\f[] [\f[B]options\f[]] < script.ros
.SH Description
.PP
Roswell is a command line tool for installing and managing Common Lisp
@ -20,7 +20,7 @@ ROSWELL\-SCRIPTS written in Common Lisp.
.PP
Currently roswell supports sbcl, ccl, clisp and ecl as its supported
lisp implementations.
For further details see \f[I]ros\-install\f[R](1).
For further details see \f[I]ros\-install\f[](1).
.PP
Scripts installed by roswell will be system wide if appropriate
directory is included in PATH.
@ -29,157 +29,241 @@ directory is included in PATH.
In an order of utility/frequency.
.TP
.B install
Install a given implementation (e.g.\ sbcl, ccl) or a system
(e.g.\ alexandria) for roswell environment.
See \f[I]ros\-install\f[R](1).
Install a given implementation (e.g.
sbcl, ccl) or a system (e.g.
alexandria) for roswell environment.
See \f[I]ros\-install\f[](1).
.RS
.RE
.TP
.B init [name[.ros]]
Create a new ros script.
\f[C].ros\f[R] is optional, and is added automaticaly.
See \f[I]ros\-init\f[R].
\f[C]\&.ros\f[] is optional, and is added automaticaly.
See \f[I]ros\-init\f[].
.RS
.RE
.TP
.B dump [executable|output] [script]
Dump an image of the script for the faster startup or to make an
executable.
See \f[I]ros\-dump\f[R].
See \f[I]ros\-dump\f[].
.RS
.RE
.TP
.B build
Make an executable from the script.
See \f[I]ros\-build\f[R].
See \f[I]ros\-build\f[].
.RS
.RE
.TP
.B run
Initiate REPL.
See \f[I]ros\-run\f[R].
See \f[I]ros\-run\f[].
.RS
.RE
.TP
.B use
Change the default implementation used by roswell.
See \f[I]ros\-use\f[R].
See \f[I]ros\-use\f[].
.RS
.RE
.TP
.B list
List the various informations.
See \f[I]ros\-list\f[R].
See \f[I]ros\-list\f[].
.RS
.RE
.TP
.B config
Get and set the options.
See \f[I]ros\-config\f[R].
See \f[I]ros\-config\f[].
.RS
.RE
.TP
.B setup
Run the initial setup.
See \f[I]ros\-setup\f[R].
See \f[I]ros\-setup\f[].
.RS
.RE
.TP
.B emacs
Launch emacs with slime.
See \f[I]ros\-emacs\f[R].
See \f[I]ros\-emacs\f[].
.RS
.RE
.TP
.B wait
Wait forever, used for daemonizing the script.
See \f[I]ros\-wait\f[R].
See \f[I]ros\-wait\f[].
.RS
.RE
.TP
.B delete
Delete an installed implementation.
See \f[I]ros\-delete\f[R].
See \f[I]ros\-delete\f[].
.RS
.RE
.TP
.B version
Show the roswell version information.
See \f[I]ros\-version\f[R].
See \f[I]ros\-version\f[].
.RS
.RE
.TP
.B help
Show the subcommand help.
.RS
.RE
.SH Options
.PP
Options are processed in left\-to\-right order.
.TP
.B \-w CODE \[en]wrap CODE
Run the script with a shell wrapper CODE, e.g.\ rlwrap
.B \-w CODE \-\-wrap CODE
Run the script with a shell wrapper CODE, e.g.
rlwrap
.RS
.RE
.TP
.B \-m IMAGE \[en]image IMAGE
.B \-m IMAGE \-\-image IMAGE
Continue from Lisp image IMAGE
.RS
.RE
.TP
.B \-L NAME \[en]lisp NAME
Run the script with a lisp impl NAME[/VERSION] if present,
e.g.\ sbcl\-bin, sbcl/1.2.16.
.B \-L NAME \-\-lisp NAME
Run the script with a lisp impl NAME[/VERSION] if present, e.g.
sbcl\-bin, sbcl/1.2.16.
Fails otherwise.
.RS
.RE
.TP
.B \-l FILE \[en]load FILE
.B \-l FILE \-\-load FILE
Load a lisp file FILE while building
.RS
.RE
.TP
.B \-S X \[en]source\-registry X
.B \-S X \-\-source\-registry X
Override the source registry of asdf systems.
.RS
.RE
.TP
.B \-s SYSTEM \[en]system SYSTEM
.B \-s SYSTEM \-\-system SYSTEM
Load the asdf SYSTEM while building.
.RS
.RE
.TP
.B \[en]load\-system SYSTEM
.B \-\-load\-system SYSTEM
Same as above (buildapp compatibility)
.RS
.RE
.TP
.B \-p PACKAGE \[en]package PACKAGE
.B \-p PACKAGE \-\-package PACKAGE
Change the current package to PACKAGE
.RS
.RE
.TP
.B \-sp SP \[en]system\-package SP
.B \-sp SP \-\-system\-package SP
Combination of \-s SP and \-p SP
.RS
.RE
.TP
.B \-e FORM \[en]eval FORM
.B \-e FORM \-\-eval FORM
Evaluate FORM while building
.RS
.RE
.TP
.B \[en]require MODULE
.B \-\-require MODULE
require MODULE while building
.RS
.RE
.TP
.B \-q \[en]quit
.B \-q \-\-quit
quit lisp here
.RS
.RE
.TP
.B \-r FUNC \[en]restart FUNC
.B \-r FUNC \-\-restart FUNC
the build image restarts from calling FUNC
.RS
.RE
.TP
.B \-E FUNC \[en]entry FUNC
.B \-E FUNC \-\-entry FUNC
the build image restarts from calling (FUNC argv).
.RS
.RE
.TP
.B \-i FORM \[en]init FORM
.B \-i FORM \-\-init FORM
evaluate FORM after the restart.
.RS
.RE
.TP
.B \-ip FORM \[en]print FORM
.B \-ip FORM \-\-print FORM
evaluate and princ FORM after the restart
.RS
.RE
.TP
.B \-iw FORM \[en]write FORM
.B \-iw FORM \-\-write FORM
evaluate and write FORM after the restart
.RS
.RE
.TP
.B \-F FORM \[en]final FORM
.B \-F FORM \-\-final FORM
evaluate FORM before dumping the IMAGE
.RS
.RE
.TP
.B \-R \[en]rc
try to read /etc/rosrc, \[ti]/.roswell/init.lisp
.B \-R \-\-rc
try to read /etc/rosrc, ~/.roswell/init.lisp
.RS
.RE
.TP
.B +R \[en]no\-rc
skip /etc/rosrc, \[ti]/.roswell/init.lisp
.B +R \-\-no\-rc
skip /etc/rosrc, ~/.roswell/init.lisp
.RS
.RE
.TP
.B \-Q \[en]quicklisp
.B \-Q \-\-quicklisp
load quicklisp (default)
.RS
.RE
.TP
.B +Q \[en]no\-quicklisp
.B +Q \-\-no\-quicklisp
do not load quicklisp
.RS
.RE
.TP
.B \-v \[en]verbose
.B \-v \-\-verbose
be quite verbose while building
.RS
.RE
.TP
.B \[en]quiet
.B \-\-quiet
suppress output while building (default)
.RS
.RE
.TP
.B \[en]test
.B \-\-test
for test purpose
.RS
.RE
.TP
.B dynamic\-space\-size=[size in MB]
SBCL specific.
The argument is passed to SBCL by \f[C]\-\-dynamic\-space\-size\f[R]
The argument is passed to SBCL by \f[C]\-\-dynamic\-space\-size\f[]
.RS
.RE
.SH Environmental Variables
.TP
.B ROSWELL_HOME
Specifies the home directory of roswell, defaulted to $HOME on Unix
platform .
.RS
.RE
.SH Bugs
.PP
Check out issues list (https://github.com/roswell/roswell/issues)
.SH SEE ALSO
.PP
\f[I]sbcl\f[R](1) \f[I]ros\-dump\f[R](1) \f[I]ros\-init\f[R](1)
\f[I]ros\-install\f[R](1) \f[I]ros\-list\f[R](1) \f[I]ros\-setup\f[R](1)
\f[I]sbcl\f[](1) \f[I]ros\-dump\f[](1) \f[I]ros\-init\f[](1)
\f[I]ros\-install\f[](1) \f[I]ros\-list\f[](1) \f[I]ros\-setup\f[](1)
.SH AUTHORS
Roswell Project Team.

View file

@ -1,12 +1,6 @@
% ros-asdf(1)
% Roswell Project Team
% January 2022
# NAME
ros-asdf -
# SYNOPSIS
# synopsis
**ros [options] asdf [subcommand]**
@ -16,9 +10,9 @@ ros-asdf -
<!-- : description. end with a period. -->
# DESCRIPTION
# description
**ros asdf** install and manage ASDF(https://common-lisp.net/project/asdf/).
**ros asdf** install and manage ASDF(https://common-lisp.net/project/asdf/)
<!-- # options -->
<!-- -->

View file

@ -34,10 +34,6 @@ edit [template-name] [files ...]
: Edit content of files in template using `/usr/bin/editor`.
path [template-name] [files ...]
: Show native path of files in template.
rm [template-name] [files ...]
: Remove file form current template.

View file

@ -27,16 +27,10 @@
(loop repeat 4
for line = (read-line in)
when (ignore-errors (string= line "exec" :end1 4))
do (setf opts (parse-argv line))))
(let ((impl (or (ros:opt "*lisp")
(ros:opt "default.lisp"))))
(roswell:roswell `(,@(when (roswell:verbose) '("-v"))
,@impl-argv
,@(cond ((find impl '("sbcl" "sbcl-bin" "sbcl32" "sbcl-head") :test 'equal)
(append (if (ros:opt "dynamic-space-size")
(list (format nil "dynamic-space-size=~A" (ros:opt "dynamic-space-size"))))
(if (ros:opt "control-stack-size")
(list (format nil "control-stack-size=~A" (ros:opt "control-stack-size")))))))
,opts "-L" ,impl
do (setf opts (parse-argv line))))
(roswell:roswell `(,@(when (roswell:verbose) '("-v"))
,@impl-argv
,opts "-L" ,(or (ros:opt "*lisp")
(ros:opt "default.lisp"))
"dump" ,@dump-argv "executable" ,(first argv))
:interactive nil))))
:interactive nil)))

View file

@ -126,14 +126,10 @@ IR1 (deftransform), IR2 (VOP) information in the infodb."
(setf (sb-impl::package-%shadowing-symbols package) nil)
(format t ".")
(setf (sb-impl::package-internal-symbols package)
(if (fboundp 'sb-impl::make-symbol-table)
(sb-impl::make-symbol-table 0)
(sb-impl::make-package-hashtable 0)))
(sb-impl::make-package-hashtable 0))
(format t ".")
(setf (sb-impl::package-external-symbols package)
(if (fboundp 'sb-impl::make-symbol-table)
(sb-impl::make-symbol-table 0)
(sb-impl::make-package-hashtable 0)))
(sb-impl::make-package-hashtable 0))
(format t ".")
(setf (sb-impl::package-tables package) #())
(format t ".")

View file

@ -33,44 +33,33 @@
(defun roswell-installed-system-name (system-name)
;; should return repo part of system-name.
;; "user:repo[:branch or tag][/subsystem/name]" "git://bra/bra/bra/repo.git" "github://user/repo"
(let ((split (split-sequence #\: system-name)))
(when (rest split) ;; found ":"
(if (ignore-errors (and (eql (aref (second split) 0) #\/)
(eql (aref (second split) 1) #\/)))
(values nil "not implemented yet") ;; TBD
(let* ((str (first (last split)))
(pos (position #\/ str))
(subsystem (if pos
(prog1
(subseq str pos)
(setf (first (last split)) (subseq str 0 pos)))
"")))
(values (and (second split)
(not (zerop (length (second split))))
(format nil "~A~A" (second split) subsystem))
(lambda (system-name)
(roswell:roswell `("install" ,(format nil "~{~A~^/~}" split)
)))))))))
;; "user//repo" "user//repo/branch" "git://bra/bra/bra/repo.git" "github://user/repo"
(when (find "" (split-sequence #\/ system-name) :test 'equal) ;; found "//"
(if (find #\: system-name)
(values nil "not implemented yet") ;; TBD
(second (remove "" (split-sequence #\/ system-name) :test 'equal)))))
(defun roswell-installable-searcher (system-name)
(multiple-value-bind (name func)
(roswell-installed-system-name system-name)
(let ((name (roswell-installed-system-name system-name))
pname)
(and
name
(not (equal name system-name))
(let ((result
(or (ignore-errors (asdf:find-system name))
(progn
(funcall func system-name)
(local-project-build-hash :rebuild t)
(asdf:find-system name))
(return-from roswell-installable-searcher)))) ;;can't find.
(when result
(let ((*load-pathname* nil))
(eval `(asdf:defsystem ,system-name
:depends-on (,name)))))
result))))
(not (when (setf pname (read-call "asdf/find-system::primary-system-name" system-name))
(asdf:find-system pname nil)))
(prog1
(or (quicklisp-client:local-projects-searcher name)
(unless (find system-name (loop for ar = (ros:getenv "ROSINSTALL") then (subseq ar (1+ p))
for p = (position #\, ar)
for arg = (if p (subseq ar 0 p) ar)
collect arg
while p)
:test 'equal)
(roswell:roswell `("install" ,system-name))
(quicklisp-client:register-local-projects)
(quicklisp-client:local-projects-searcher name))
(return-from roswell-installable-searcher)) ;;can't find.
(eval `(asdf:defsystem ,system-name :depends-on (,name))))
(asdf:find-system system-name))))
(defun local-project-enum (path)
(let ((sub (remove-if (lambda (x)

View file

@ -5,30 +5,17 @@ exec ros -Q -N roswell -- $0 "$@"
|#
(progn ;;init forms
(ros:ensure-asdf)
#+sbcl (require "sb-introspect")
#+quicklisp (ql:quickload '("cl-indentify") :silent t))
#+quicklisp
(progn
(unless (ql:where-is-system :lem)
(roswell:roswell '("git" "clone" "https://github.com/cxxxr/lem.git"))
(roswell.util:read-call "roswell.util:local-project-build-hash" :rebuild t))
(ql:quickload '("swank" "lem" "lem-lisp-syntax") :silent t)))
(defpackage :ros.script.fmt.3707812168
(:use :cl))
(in-package :ros.script.fmt.3707812168)
(defun function-lambda-list (fn)
"Portably retrieve a function's lambda list."
(ignore-errors
#+sbcl
(funcall (find-symbol "FUNCTION-LAMBDA-LIST" "SB-INTROSPECT") fn)
#-sbcl nil))
(defun register-macro-templates ()
"Auto-detect macros with &body and register cl-indentify templates."
(do-all-symbols (sym)
(when (macro-function sym)
(let* ((arglist (function-lambda-list (macro-function sym)))
(body-pos (position '&body arglist)))
(when body-pos
(setf (indentify:indent-template sym)
`(:style :call :count ,body-pos)))))))
(defun system (path)
(let ((* (when (and (probe-file path)
(equal (pathname-type path) "asd"))
@ -50,39 +37,15 @@ exec ros -Q -N roswell -- $0 "$@"
(list c)))))
(when *
(ql:quickload * :silent (not (ros:verbose)))
(register-macro-templates)
(lem-lisp-syntax.indent:indentation-update)
(r (asdf:find-system *))))))
(defun register-standard-templates ()
"Override templates to match Lem/Emacs/SLIME indentation."
;; if: (&rest nil) in Lem - all args aligned with first arg
(setf (indentify:indent-template 'if) '(:count 3))
;; case/typecase: (4 &rest (&whole 2 &rest 1)) - clause body at paren+1
(dolist (sym '(case ccase ecase typecase ctypecase etypecase))
(setf (indentify:indent-template sym)
'(:count 1 :sub (nil nil (:style :list)))))
;; cond: (&rest (&whole 2 &rest 1)) - clause body at paren+1
(setf (indentify:indent-template 'cond)
'(:count 0 :sub (nil (:style :list)))))
(defun format-file (file)
(let ((result (with-output-to-string (out)
(with-open-file (in file)
(indentify:indentify in out)))))
(with-open-file (out file :direction :output :if-exists :supersede)
(with-input-from-string (in result)
(loop for line = (read-line in nil)
while line
do (write-string (string-right-trim '(#\Space #\Tab) line) out)
(terpri out))))))
(defun main (&rest argv)
"go fmt like something"
(indentify:load-default-templates)
(register-standard-templates)
(dolist (arg (if argv
(loop for arg in argv
append (or (system arg) (list arg)))
(prog1 (loop for arg in argv
append (or (system arg) (list arg)))
(lem-lisp-syntax:indentation-update))
(ignore-errors
(let* ((name (first (last (pathname-directory *default-pathname-defaults*))))
(path (probe-file (make-pathname :name name :type "asd"))))
@ -90,6 +53,18 @@ exec ros -Q -N roswell -- $0 "$@"
(append (directory "*.lisp")
(directory "*.ros")))))))
(if (probe-file arg)
(format-file arg)
(let ((buffer (lem-base:find-file-buffer arg)))
(setf (lem-base:buffer-syntax-table buffer)
lem-lisp-syntax:*syntax-table*)
(setf (lem-base:variable-value 'lem-base:calc-indent-function :buffer buffer)
'lem-lisp-syntax:calc-indent)
(lem-base:indent-region (lem-base:buffer-start-point buffer)
(lem-base:buffer-end-point buffer))
(loop with regexp = "[ ]+$" ;; remove trailing spaces.
for start = (lem-base:search-forward-regexp (lem-base:copy-point (lem-base:buffer-start-point buffer)) regexp)
while start
for end = (lem-base:search-backward-regexp (lem-base:copy-point start) regexp)
do (lem-base:delete-between-points start end))
(lem-base:write-to-file buffer (lem-base:buffer-filename buffer)))
(format *error-output* "~A does not exist" arg))))
;;; vim: set ft=lisp lisp:

View file

@ -17,7 +17,7 @@
(mapcar #'usage
'("Usage:"
""
"To install a new Lisp implementation:"
"To install a new Lisp implementaion:"
" ~A install impl [options]"
"or a system from the GitHub:"
" ~A install fukamachi/prove/v2.0.0 [repository... ]"
@ -30,7 +30,6 @@
""
"For more details on impl specific options, type:"
" ~A help install impl"
"e.g.: ~A help install sbcl"
""
""
"Candidates impls for installation are:")))

View file

@ -1,4 +1,3 @@
;; -*- lexical-binding: nil; -*-
(defun roswell-configdir ()
(substring (shell-command-to-string "ros roswell-internal-use version confdir") 0 -1))

View file

@ -160,8 +160,7 @@ have the latest asdf, and this file has a workaround for this.
(ext:run-shell-command (format nil "~{~A~^ ~}" args))))))
(defun exec (args)
#+(and unix sbcl
(not haiku))
#+(and unix sbcl)
(execvp (first args) args)
#+(and unix ccl)
(ignore-errors
@ -175,8 +174,8 @@ have the latest asdf, and this file has a workaround for this.
(cond
(is-quicklisp-already-available
(unless (equal (ignore-errors (truename (pathname (opt "quicklisp"))))
(ignore-errors (truename (symbol-value (read-from-string "ql:*quicklisp-home*")))))
(unless (equal (opt "quicklisp")
(namestring (symbol-value (read-from-string "ql:*quicklisp-home*"))))
(setf *local-project-directories*
(copy-list
(symbol-value (read-from-string "ql:*local-project-directories*")))))
@ -309,25 +308,13 @@ As a hacky side effect, files with the same name as PROVIDE is not loaded.
(or *version-cache*
(setf *version-cache* (roswell '("roswell-internal-use" "version") :string t)))))
(defun implementation-version ()
"cut off after third? dot from lisp-implementation-version"
(let ((version (lisp-implementation-version)))
(loop with j = 0
for i from 0 to (1- (length version))
when (eql (aref version i) #\.)
do (incf j)
(when (= j 3)
(return-from implementation-version (subseq version 0 i))))
version))
#+sbcl
(when (ignore-errors (string-equal (opt "impl") "sbcl-bin" :end1 8))
(flet ((source (version)
(let ((path (merge-pathnames (format nil "src/sbcl-~A/" version) (opt "homedir"))))
(when (probe-file path)
(sb-ext:set-sbcl-source-location path)))))
(or (source (implementation-version))
(or (source (lisp-implementation-version))
(source "git"))))
(defun source-registry (arg &rest rest)
@ -446,8 +433,7 @@ As a hacky side effect, files with the same name as PROVIDE is not loaded.
(with-open-file (in arg)
(body in)))
(*latest-system* (apply 'hook (cons arg *argv*)))
(t (format t "script ~S does not exist~%" arg)
(quit 1)))))
(t (format t "script ~S does not exist~%" arg)))))
(defun stdin (arg &rest rest)
(declare (ignorable arg rest))

View file

@ -9,21 +9,8 @@
(defvar *msys2-arch*)
(defvar *msys2-bits*)
(defun msys2-get-release (version)
"
In the new GitHub releases, the release name is a date with dashes
and the version is a date without.
"
(if (equal (length version) 8)
(format nil "~A-~A-~A"
(subseq version 0 4)
(subseq version 4 6)
(subseq version 6 8))
version))
(defun msys2-get-version ()
'("20230127"))
'("20180531"))
;;sha1 "309f604a165179d50fbe4131cf87bd160769f974"
;;(ironclad:byte-array-to-hex-string (ironclad:digest-file :sha1 path))
@ -46,12 +33,9 @@
(when (or (not (probe-file path))
(opt "download.force"))
(download
(format nil "~A~A/msys2-base-~A-~A.tar.xz"
(format nil "~Amsys2/Base/~A/msys2-base-~A-~A.tar.xz"
(msys2-uri)
(msys2-get-release
(getf argv :version))
*msys2-arch*
(getf argv :version))
*msys2-arch* *msys2-arch* (getf argv :version))
path))
(format t " done.~%")
(expand path
@ -83,10 +67,11 @@
"make zlib-devel"))
:output t
:error-output t))
(uiop/run-program:run-program
`(,(uiop:native-namestring (merge-pathnames "autorebase.bat" msys)))
:output t
:error-output t)
`(,(uiop:native-namestring (merge-pathnames "autorebase.bat" msys)))
:output t
:error-output t)
(setf (config "msys2.version") (getf argv :version)))))
(cons t argv))

View file

@ -11,10 +11,10 @@
(let ((file (merge-pathnames "tmp/abcl-bin.html" (homedir))))
(format *error-output* "Checking version to install....~%")
(download (abcl-bin-uri) file)
(loop for a in (get-elements-by-tag-name
(loop for a in (plump:get-elements-by-tag-name
(plump:parse file) "a")
for x = (string-right-trim "/" (plump:get-attribute a "href"))
when (ignore-errors (digit-char-p (aref x 0)))
when (digit-char-p (aref x 0))
collect x)))))
(defun abcl-bin-impl ()

View file

@ -8,50 +8,27 @@
(mapcar #'car *allegro-agreement-uri*))
(defun make-allegro-uri (argv &key
(uname (uname))
(uname-m (uname-m))
(version (getf argv :version)))
(uname (uname))
(uname-m (uname-m))
(version (getf argv :version)))
(let ((os (intern uname :keyword))
(machine (intern uname-m :keyword)))
(cond ((find version '("11.0express"
"10.1express")
:test 'equal)
(cond ((find version '("10.1express" "100express") :test 'equal)
(format nil "~@{~A~}"
(allegro-uri) "ftp/pub/acl" version "/"
(ecase os
(:|linux| (ecase machine
(:|x86-64| "linuxamd64.64")
(:|arm64| "linuxarm64")
(:|x86| "linux86")))
(:|darwin| (case machine
(:|arm64| "macarm64.64")
(:|x86-64| "macosx86-64.64")))
(:|windows| os) ;; 32bit only
(:|freebsd| os)) ;; 32bit only
(allegro-uri) "pub/acl" version "/"
(case os (:|darwin| "macosx") (t os))
(if (eql os :|windows|) ""
(case machine (:|x86| 86) (:|x86-64| 86)))
"/acl" version
(ecase os
(:|linux| (format nil "~@{~A~}"
"-linux-"
(ecase machine
(:|x86-64| "x64")
(:|arm64| "aarch64")
(:|x86| "x86"))
(cond
((equal "100express" version) ".bz2")
(t ".tbz2"))))
(:|darwin| (format nil "~@{~A~}"
(if (equal version "10.1express")
"-macosx-"
"-macos-")
(ecase machine
(:|x86-64| "x64.dmg")
(:|arm64| "arm64.dmg"))))
(:|windows| "-x86.exe")
(:|freebsd| (format nil "~@{~A~}"
"-freebsd-"
(ecase machine
(:|x86-64| "x86.tbz2")
(:|x86| "x86.tbz2"))))))))))
(case os (:|linux| "-linux") (:|darwin| "-macosx") (:|windows| "") (t os))
"-" (if (eql os :|darwin|) "x64"
(case machine (:|x86-64| "x86") (t machine)))
(case os
(:|linux| (cond ((equal "10.1express" version) ".tbz2")
((equal "100express" version) ".bz2")))
(:|darwin| ".dmg")
(:|windows| ".exe"))))
((equal "101b" version)))))
(defun allegro-argv-parse (argv)
(format *error-output* "~&Installing allegro/~A...~%" (getf argv :version))
@ -88,9 +65,7 @@
(uiop/filesystem:delete-directory-tree
path :validate t))
(ql-impl-util:rename-directory
(first (loop for file in (directory (merge-pathnames (format nil "acl~A*/" (getf argv :version)) impls))
when (probe-file file)
collect it))
(merge-pathnames (format nil "acl~A/" (getf argv :version)) impls)
(merge-pathnames (format nil "~A/" (opt "as")) impls))))
(cons t argv)))

View file

@ -32,7 +32,7 @@
(let* ((src (merge-pathnames (format nil "asdf-~A/" version) src))
(cmd (list (sh) "-lc" (format nil "cd ~S;~A"
(#+win32 mingw-namestring #-win32 princ-to-string src)
(make)))))
(or #+freebsd "gmake" "make")))))
(uiop/os:chdir src)
(format t "~&chdir ~A~%" src)
(uiop/run-program:run-program cmd :output t :ignore-error-status nil)

View file

@ -11,7 +11,7 @@
(let ((file (merge-pathnames "tmp/clisp.html" (homedir))))
(format *error-output* "Checking version to install....~%")
(download (clisp-version-uri) file :interval (* 60 60))
(loop for link in (get-elements-by-tag-name (plump:parse file) "a")
(loop for link in (plump:get-elements-by-tag-name (plump:parse file) "a")
for href = (plump:get-attribute link "href") for len = (1- (length href))
when (and (eql (aref href len) #\/)
(not (eql (aref href 0) #\/))

View file

@ -7,7 +7,7 @@
(let ((file (merge-pathnames "tmp/cmu-bin.html" (homedir))))
(format *error-output* "Checking version to install...~%")
(download (format nil "~Arelease/" (cmu-bin-uri)) file :interval (* 60 60))
(loop for link in (get-elements-by-tag-name (plump:parse file) "a")
(loop for link in (plump:get-elements-by-tag-name (plump:parse file) "a")
for href = (plump:get-attribute link "href")
for len = (length href)
when (and (digit-char-p (aref href 0))
@ -21,31 +21,11 @@
(or (cdr (assoc (uname-m) *cmu-uname-m-alist* :test 'equal))
(uname-m)))
(defun cmu-bin-directory-uri (version)
(format nil "~@{~A~}" (cmu-bin-uri) (if (find #\- version) "snapshots/" "release/")
(substitute #\/ #\- version) "/"))
(defun cmu-bin-archive-name (version extra)
(format nil "~@{~A~}" "cmucl-" version "-" (cmu-uname-m) "-" (uname) (if extra ".extra" "")))
(defun cmu-bin-archive-type (version)
"CMUCL was published as .tar.bz2 up to 21e and as .tar.xz from 21f on,
so ask the download directory which one it has for VERSION."
(let ((file (merge-pathnames (format nil "tmp/cmu-bin-~A.html" version) (homedir)))
(name (cmu-bin-archive-name version nil)))
(or (ignore-errors
(download (cmu-bin-directory-uri version) file :interval (* 60 60))
(loop for link in (get-elements-by-tag-name (plump:parse file) "a")
for href = (plump:get-attribute link "href")
thereis (and href
(find-if (lambda (type)
(equal href (format nil "~A~A" name type)))
'(".tar.xz" ".tar.bz2")))))
".tar.bz2")))
(defun cmu-bin-archive-uri (version extra)
(format nil "~@{~A~}" (cmu-bin-directory-uri version)
(cmu-bin-archive-name version extra) (cmu-bin-archive-type version)))
(let ((uname (uname))
(cmu-uname-m (cmu-uname-m)))
(format nil "~@{~A~}" (cmu-bin-uri) (if (find #\- version) "snapshots/" "release/")
(substitute #\/ #\- version) "/cmucl-" version "-" cmu-uname-m "-" uname (if extra ".extra" "") ".tar.bz2")))
(defun cmu-bin-argv-parse (argv)
(format *error-output* "~&Installing cmu-bin/~A...~%" (getf argv :version))

View file

@ -1,95 +0,0 @@
(roswell:include "util-install")
(defpackage :roswell.install.dotcl-bin
(:use :cl :roswell.install :roswell.util :roswell.locations))
(in-package :roswell.install.dotcl-bin)
(defun dotcl-bin-impl ()
(merge-pathnames (format nil "impls/~A/~A/dotcl-bin/" (uname-m) (uname)) (homedir)))
(defun dotcl-bin-rid ()
(let* ((arch (uname-m))
(os (uname))
(arch-key (cond ((equal arch "x86-64") "x64")
((equal arch "arm64") "arm64")
(t (error "dotcl-bin: unsupported arch ~A" arch))))
(os-key (cond ((equal os "linux") "linux")
((equal os "darwin") "osx")
((equal os "windows") "win")
(t (error "dotcl-bin: unsupported os ~A" os)))))
(format nil "~A-~A" os-key arch-key)))
(defvar *dotcl-bin-version-cache* nil)
(defun dotcl-bin-get-version ()
(or *dotcl-bin-version-cache*
(setf *dotcl-bin-version-cache*
(let ((file (merge-pathnames "tmp/dotcl-bin.json" (homedir))))
(format *error-output* "Checking version to install....~%")
(download "https://api.github.com/repos/dotcl/dotcl/releases" file)
(with-open-file (in file)
(loop for line = (read-line in nil nil) while line
for pos = (search "\"tag_name\"" line)
when pos
collect (let* ((q1 (position #\" line :start (+ pos 11)))
(q2 (and q1 (position #\" line :start (1+ q1)))))
(when (and q1 q2)
(let ((tag (subseq line (1+ q1) q2)))
(if (and (plusp (length tag)) (char= (aref tag 0) #\v))
(subseq tag 1)
tag))))))))))
(defun dotcl-bin-argv-parse (argv)
(set-opt "prefix" (dotcl-bin-impl))
(cons t argv))
(defun dotcl-bin-download (argv)
(let ((rid (dotcl-bin-rid))
(ver (version argv)))
(set-opt "as" ver)
(set-opt "download.uri"
(format nil "https://github.com/dotcl/dotcl/releases/download/v~A/dotcl-~A-~A.tar.bz2"
ver rid ver))
(set-opt "download.archive"
(let ((pos (position #\/ (opt "download.uri") :from-end t)))
(when pos
(merge-pathnames (format nil "archives/~A"
(subseq (opt "download.uri") (1+ pos)))
(homedir)))))
`((,(opt "download.archive") ,(opt "download.uri")))))
(defun dotcl-bin-expand (argv)
(format t "~%Extracting archive:~A~%" (opt "download.archive"))
(let ((dest (merge-pathnames (format nil "~A/" (opt "as")) (dotcl-bin-impl))))
(when (probe-file dest)
(uiop/filesystem:delete-directory-tree dest :validate t))
(ensure-directories-exist dest)
(expand (opt "download.archive") dest)
#-os-windows
(let ((apphost (merge-pathnames "runtime" dest)))
(when (probe-file apphost)
(uiop:run-program (list "chmod" "+x" (namestring apphost))
:ignore-error-status t))))
(cons t argv))
(defun dotcl-bin-script (argv)
(let* ((dotnet (which "dotnet"))
(dir (merge-pathnames (format nil "~A/" (opt "as")) (dotcl-bin-impl))))
(unless dotnet
(format *error-output* "Error: 'dotnet' (.NET SDK 10+) was not found in PATH.~%")
(format *error-output* " Install .NET SDK 10 from https://dotnet.microsoft.com/download~%")
(format *error-output* " 'ros use dotcl-bin' will fail without dotnet.~%")
(roswell:quit 1))
(install-script
(merge-pathnames "dotcl" dir)
(format nil "exec \"~Aruntime\" \"$@\"" dir))
(cons t argv)))
(defun dotcl-bin (type)
(case type
(:install `(,(decide-version 'dotcl-bin-get-version)
dotcl-bin-argv-parse
,(decide-download 'dotcl-bin-download)
dotcl-bin-expand
dotcl-bin-script
setup))
(:list 'dotcl-bin-get-version)))

View file

@ -90,7 +90,7 @@
(homedir)))
:direction :output :if-exists :append :if-does-not-exist :create)
(format out "~&--~&~A~%" (date))
(let* ((cmd (make))
(let* ((cmd (format nil "make"))
(*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream))))
(ecl-chdir argv)
(uiop/run-program:run-program cmd :output t :ignore-error-status t)))
@ -108,7 +108,7 @@
(format out "~&--~&~A~%" (date))
(let ((*standard-output* (make-broadcast-stream
out #+sbcl(make-instance 'count-line-stream))))
(uiop/run-program:run-program (format nil "~A install" (make)) :output t)))
(uiop/run-program:run-program "make install" :output t)))
(format *error-output* "done.~%"))
(cons t argv))
@ -119,7 +119,7 @@
(*standard-output* (make-broadcast-stream
out #+sbcl(make-instance 'count-line-stream))))
(uiop/run-program:run-program
(list (sh) "-lc" (format nil "cd ~S;~A clean" (namestring (uiop:getcwd)) (make)))
(list (sh) "-lc" (format nil "cd ~S;make clean" (namestring (uiop:getcwd))))
:output t))
(format t "done.~%")
(cons t argv))

View file

@ -17,7 +17,7 @@
(defuri clisp-version-uri "http://ftp.gnu.org/pub/gnu/clisp/release/")
(defuri clisp-head-version-uri "https://github.com/roswell/clisp_head/releases/download/files/clisp_head.tsv")
(defuri 7za-uri "http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download#")
(defuri allegro-uri "https://franz.com/")
(defuri allegro-uri "ftp://ftp.franz.com/")
(defuri abcl-bin-uri "https://common-lisp.net/project/armedbear/releases/")
(defuri ccl-bin-uri "https://github.com/roswell/ccl_bin/releases/download/")
(defuri clasp-bin-uri "https://github.com/roswell/clasp_bin/releases/download/")
@ -28,7 +28,7 @@
(defuri ffcall-uri "https://github.com/roswell/libffcall/archive/")
(defuri sigsegv-uri "http://ftpmirror.gnu.org/libsigsegv/")
(defuri msys2-uri "https://github.com/msys2/msys2-installer/releases/download/")
(defuri msys2-uri "http://kent.dl.sourceforge.net/project/")
(defuri clisp-patch1-uri "https://raw.githubusercontent.com/Homebrew/homebrew/2fb8cb1a2279f80dc89900b3ebaca9e5afc90494/Library/Formula/clisp.rb")
@ -54,7 +54,6 @@
(export
(defvar *allegro-agreement-uri*
'(("11.0express" . "https://franz.com/ftp/pub/legal/ACL-Express-20170301.pdf")
("10.1express" . #1="https://franz.com/ftp/pub/legal/ACL-Express-20170301.pdf")
'(("10.1express" . #1="http://franz.com/ftp/pub/legal/ACL-Express-20150812.pdf")
("100express" . #1#)
("101b" . "http://franz.com/products/licensing/FSLA10.1.beta.pdf"))))

View file

@ -17,7 +17,6 @@ exec ros -Q -m roswell -N roswell -- $0 "$@"
("add" . template-add)
("cat" . template-cat)
("edit" . template-edit)
("path" . template-native-path)
("rm" . template-rm)
("delete" . template-rm)
("type" . template-type)
@ -29,15 +28,12 @@ exec ros -Q -m roswell -N roswell -- $0 "$@"
(defun template-init (names)
"Create new template"
(if names
(let* ((name (first names))
(path (template-asd-path name)))
(when (probe-file path)
(format *error-output* "already exist ~A~%" path)
(ros:quit 1))
(template-create name)
(format *error-output* "template written ~A~%" path))
(format *error-output* "template init need template name.~%")))
(let* ((name (first names))
(path (template-asd-path name)))
(when (probe-file path)
(format *error-output* "already exist ~A~%" path)
(ros:quit 0))
(template-create name)))
(defun template-deinit (names)
"Remove a template"
@ -80,7 +76,7 @@ exec ros -Q -m roswell -N roswell -- $0 "$@"
(format *error-output* "current default is ~S~%~%candidates:~%~{~A~%~}"
(template-default)
(templates-list :name t))
(ros:quit 0))
(ros:quit 1))
(let ((path (templates-list :filter name)))
(unless path
(format *error-output* "template: ~S not found.~%" name)
@ -125,18 +121,6 @@ exec ros -Q -m roswell -N roswell -- $0 "$@"
,@(loop for i in _
collect (uiop:native-namestring (template-file-path name i)))))))
(defun template-native-path (_)
"show native path in the template"
(let ((name (template-default)))
(when (equal name "default")
(setf name (pop _)))
(unless (and (templates-list :filter name)
(not (equal name "default")))
(format *error-output* "template ~S does not contain files.~%" name)
(ros:quit 1))
(loop for i in _
do (format t "~A~%" (uiop:native-namestring (template-file-path name i))))))
(defun template-rm (_)
"Remove (delete) files from template."
(let ((name (template-default)))

View file

@ -26,17 +26,10 @@ exec ros -Q -m roswell -N roswell -- $0 "$@"
;; update systems
(dolist (alias argv)
(loop
with path = (or
(and (find #\/ alias)
(let ((dir (merge-pathnames
(format nil "local-projects/~A/" alias)
(roswell.util:homedir))))
(when (probe-file (merge-pathnames ".git/" dir))
dir)))
(ignore-errors
(make-pathname
:type nil :name nil
:defaults (asdf:system-source-file (asdf:find-system alias)))))
with path = (ignore-errors
(make-pathname
:type nil :name nil
:defaults (asdf:system-source-file (asdf:find-system alias))))
for f in *update-functions*
for r = (and path (funcall f path))
when r do (roswell:roswell `("install" ,alias))

View file

@ -5,18 +5,6 @@
(defvar *build-hook* nil)
(defun get-elements-by-tag-name (node tag)
(let* ((current-version
(ignore-errors
(let* ((* "plump")
(* (ql-dist:find-system *))
(* (ql-dist:dist *))
(* (ql-dist:version *)))
*)))
(new (string< "2022-07-08" current-version)))
(funcall (if new #'nreverse #'identity)
(plump:get-elements-by-tag-name node tag))))
#+sbcl
(defclass count-line-stream (sb-gray:fundamental-character-output-stream)
((base :initarg :base
@ -174,8 +162,7 @@
*error-output* (make-broadcast-stream)
*trace-output*(make-broadcast-stream)))
(if (ql:where-is-system system)
(progn (asdf:load-asd (asdf:system-source-file system))
(ql:quickload system)
(progn (ql:quickload system)
(ignore-errors(asdf:oos 'asdf:load-op system :force t)))
(ql:quickload system)))
(format *error-output* "~&[~a/3] Processing build-hook.." (incf step))

View file

@ -5,8 +5,7 @@
:install-system-script :install-impl-if-probed :install-script-if-probed
:install-system-if-probed :mingw-namestring :install-github :*checkout-default*
:install :decide-version :decide-download :require-system-package
:start :setup :date :github-version :version :install-script :count-line-stream
:get-elements-by-tag-name))
:start :setup :date :github-version :version :install-script :count-line-stream))
(in-package :roswell.install)
(defvar *ros-path* nil)
@ -78,7 +77,7 @@ To differentiate it from the system with the same name in quicklisp, the path sh
(download uri file :interval (* 60 60))
(read-call "plump:parse" file))))
(nreverse
(loop for link in (read-call "roswell.install:get-elements-by-tag-name" elts "link")
(loop for link in (read-call "plump:get-elements-by-tag-name" elts "link")
for href = (read-call "plump:get-attribute" link "href")
when (funcall filter href)
collect it))))

View file

@ -1,7 +1,7 @@
#+ros.init
(roswell:include '("util" "system") "util-template")
#+quicklisp
(ignore-errors (ql:quickload '("uiop" "djula") :silent t))
(ql:quickload '("uiop" "djula") :silent t)
(defpackage :roswell.util.template
(:use :cl)
(:export
@ -113,8 +113,7 @@
:name (format nil "roswell.init.~A" template-name)))
(defun apply-djula (template-string stream params)
(apply (read-from-string "djula::render-template*")
(read-call "djula::compile-string" template-string) stream
(apply 'djula::render-template* (djula::compile-string template-string) stream
`(,@params
:author ,(author)
:email ,(email)

View file

@ -4,7 +4,7 @@
(:import-from :ros :opt :ensure-asdf :*local-project-directories*)
(:export
:uname :uname-m :homedir :config :impl :which :config-env :checkoutdir
:parse-version-spec :head :download :expand :sh :make :chdir :system :module
:parse-version-spec :head :download :expand :sh :chdir :system :module
:core-extention :clone-github :opt :read-call :set-opt :copy-dir
:roswell-installable-searcher :setenv :unsetenv :ensure-asdf :split-sequence
:local-project-build-hash))
@ -196,9 +196,6 @@ Example:
(which "bash")
"sh"))
(defun make ()
(or #+freebsd "gmake" "make"))
(defvar *version*
`(:roswell ,(or (ignore-errors (roswell:version))
(progn

View file

@ -1,5 +1,5 @@
(defsystem "roswell"
:version "26.2.116"
:version "21.10.14.111"
:author "SANO Masatoshi"
:license "MIT"
:depends-on ("simple-date-time" "split-sequence" "plump" "zip")
@ -36,7 +36,7 @@
:components
((:file "ros"))))
:perform (test-op :after (op c)
#+quicklisp(ql:quickload :prove-asdf)
#+quickisp(ql:quickload :prove-asdf)
#-asdf(asdf:load-system :prove-asdf)
(uiop:symbol-call :prove-asdf :run-test-system c)
(asdf:clear-system c)))

View file

@ -1,5 +1,7 @@
FROM alpine:3.20
FROM alpine:3.13
run apk add --no-cache \
alpine-sdk automake autoconf curl-dev bash linux-headers \
curl-static nghttp2-static openssl-libs-static brotli-static zlib-static zstd-static c-ares-static \
libidn2-static libunistring-static libpsl-static;
curl-static nghttp2-static openssl-libs-static brotli-static zlib-static; \
cd /tmp/roswell;./bootstrap;./configure --with-sbcl-bin-variant='-musl';make; make install; \
ros install sbcl-bin/2.0.5; \
rm -rf /tmp/roswell

View file

@ -1 +1 @@
roswell-musl:24.10
roswell-musl:64

View file

@ -1,12 +1,12 @@
FROM ubuntu:20.04
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y \
build-essential git automake libcurl4-openssl-dev curl pandoc ruby-sass \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
run ln -s /bin/echo /bin/run-prove
run curl -L -O https://github.com/roswell/roswell/releases/download/v21.10.14.111/roswell-21.10.14.111-linux-x86_64.tar.bz2 \
&& tar xf roswell-21.10.14.111-linux-x86_64.tar.bz2 \
run curl -L -O https://github.com/roswell/roswell/releases/download/v21.06.14.110/roswell-21.06.14.110-linux-x86_64.tar.bz2 \
&& tar xf roswell-21.06.14.110-linux-x86_64.tar.bz2 \
&& cd roswell;make install \
&& rm -rf roswell roswell-21.10.14.111-linux-x86_64.tar.bz2
&& rm -rf roswell roswell-21.06.14.110-linux-x86_64.tar.bz2
run ros install sbcl-bin/2.0.0; ros run -- --version
run ros install snmsts/sn.github

View file

@ -1 +1 @@
pandoc:focal
pandoc:xenial

View file

@ -1,12 +1,6 @@
-include .env
export $(shell sed 's/=.*//' .env)
DOCKER_REPO ?= docker.pkg.github.com/roswell/roswell
DOCKER_PLATFORM ?= linux/amd64
DOCKER_BUILD_OPTIONS ?=
DOCKER_IMAGE_SUFFIX ?=
IMAGE ?=
all:
echo all
@ -22,27 +16,20 @@ show:
@echo VERSION=$(VERSION) VARIANT=$(VARIANT)
build-docker:
docker build \
--platform $(DOCKER_PLATFORM) \
-t $(DOCKER_REPO)/$$(cat ./scripts/Docker/$(IMAGE)/Name)$(DOCKER_IMAGE_SUFFIX) \
$(DOCKER_BUILD_OPTIONS) \
./scripts/Docker/$(IMAGE)
docker build -t docker.pkg.github.com/roswell/roswell/$$(cat ./scripts/Docker/$(IMAGE)/Name) ./scripts/Docker/$(IMAGE)
push-docker:
docker push $(DOCKER_REPO)/$$(cat ./scripts/Docker/$(IMAGE)/Name)$(DOCKER_IMAGE_SUFFIX);
docker push docker.pkg.github.com/roswell/roswell/$$(cat ./scripts/Docker/$(IMAGE)/Name);
pull-docker:
docker pull $(DOCKER_REPO)/$$(cat ./scripts/Docker/$(IMAGE)/Name)$(DOCKER_IMAGE_SUFFIX);
docker pull docker.pkg.github.com/roswell/roswell/$$(cat ./scripts/Docker/$(IMAGE)/Name);
docker:
docker run \
--rm \
--platform $(DOCKER_PLATFORM) \
-v `pwd`:/tmp2 \
-e ARCH=$(ARCH) \
-e VERSION=$(VERSION) \
-e SUFFIX=$(SUFFIX) \
-e CFLAGS=$(CFLAGS) \
-e LINKFLAGS=$(LINKFLAGS) \
-e VARIANT=$(VARIANT) \
$(DOCKER_REPO)/$$(cat ./scripts/Docker/$(IMAGE)/Name)$(DOCKER_IMAGE_SUFFIX) \
docker.pkg.github.com/roswell/roswell/$$(cat ./scripts/Docker/$(IMAGE)/Name) \
bash \
-c "cd /tmp2;make -f scripts/Makefile $(MAKEOPTS)"
upload:
@ -54,7 +41,7 @@ musl:
./bootstrap
./configure --enable-maintainer-mode --with-sbcl-bin-variant=$(VARIANT) \
LDFLAGS="--static -static-libgcc -static-libstdc++ -static" \
LIBS="-lcurl -lbrotlidec -lbrotlicommon -lnghttp2 -lssl -lcrypto -lz -lzstd -lcares -lidn2 -lunistring -lpsl"
LIBS="-lcurl -lbrotlidec-static -lbrotlicommon-static -lnghttp2 -lssl -lcrypto -lz"
make
make pack

View file

@ -1,7 +1,7 @@
#!/bin/sh
set -e
ROSWELL_RELEASE_VERSION=26.02.116
ROSWELL_RELEASE_VERSION=21.06.14.110
ROSWELL_TARBALL_PATH=$HOME/roswell.tar.gz
ROSWELL_DIR=$HOME/.roswell
ROSWELL_REPO=${ROSWELL_REPO:-https://github.com/roswell/roswell}
@ -33,16 +33,10 @@ log () {
fetch () {
echo "Downloading $1..."
if curl --no-progress-bar --retry 10 --connect-timeout 30 \
--max-time 300 -o "$2" -L "$1" 2>&1; then
echo "✓ Successfully downloaded $1"
return 0
if curl --no-progress-bar --retry 10 -o $2 -L $1; then
return 0;
else
code=$? # capture curl's exit code immediately
echo "✗ Failed to download $1"
echo " URL: $1"
echo " Destination: $2"
echo " Curl exit code: $code"
echo "Failed to download $1."
exit 1
fi
}
@ -165,7 +159,7 @@ install_roswell_bin () {
GNUMAKE=/usr/local/bin/gmake
apt_unless_installed roswell
elif [ `uname` = "Darwin" ] && [ $ROSWELL_BRANCH = release ]; then
brew upgrade roswell 2>/dev/null || brew install roswell
apt_unless_installed roswell
fi
fi
}
@ -208,6 +202,8 @@ install_sbcl_bin () {
install_lisp_dependency () {
case "$USE_LISP" in
alisp|allegro)
apt_unless_installed libc6-i386
apt_unless_installed gcc-multilib
USE_LISP=allegro
;;
cmu|cmucl|cmu-bin)
@ -225,13 +221,6 @@ install_lisp_dependency () {
apt_unless_installed gcc-multilib
ros config set ccl.bit 32
;;
sbcl/*)
if [ "$(uname)" = "Darwin" ]; then
brew install zstd 2>/dev/null || true
else
apt_unless_installed libzstd-dev
fi
;;
# 'sbcl-bin' is the default
"")
USE_LISP=sbcl-bin

View file

@ -30,7 +30,7 @@ exec ros -Q -L sbcl-bin -- $0 "$@"
(d (multiple-value-list(decode-universal-time (get-universal-time)))))
(setf (first version) (- (nth 5 d) 2000)
(second version) (nth 4 d)
(first (last version)) (1+ (first (last version))))
(fourth version) (1+ (fourth version)))
(format nil "~{~2,'0d~^.~}" version)))
(defun edit-file (path match replace version &key test)
@ -119,7 +119,7 @@ exec ros -Q -L sbcl-bin -- $0 "$@"
`("To release"
"1. Review changes and complete ChangeLog"
"2. Type"
"make release-commit")))
"make release")))
(defun prepare (argv)
(declare (ignore argv))
@ -139,7 +139,7 @@ exec ros -Q -L sbcl-bin -- $0 "$@"
(edit-roswell-asd)
(show-how-to-release))
(defun release-commit (argv)
(defun release (argv)
(declare (ignore argv))
(!"git checkout master")
(!"git add ChangeLog configure.ac roswell.asd")
@ -179,7 +179,7 @@ exec ros -Q -L sbcl-bin -- $0 "$@"
(defun main (subcmd &rest argv)
(declare (ignorable argv))
(let ((subcmd (find subcmd '(prepare release-commit release-push changelog release-ci)
(let ((subcmd (find subcmd '(prepare release release-push changelog release-ci)
:test 'equal :key 'string-downcase)))
(when subcmd
(funcall subcmd argv))))

View file

@ -32,7 +32,7 @@ ros_SOURCES = main.c opt.c download.c download_windows.c archive.c archive_windo
cmd-internal.c cmd-script.c \
cmd-run.c cmd-run-sbcl.c cmd-run-ccl.c cmd-run-clasp.c cmd-run-clisp.c cmd-run-ecl.c \
cmd-run-mkcl.c cmd-run-abcl.c cmd-run-cmu.c cmd-run-acl.c cmd-run-lispworks.c \
cmd-run-npt.c cmd-run-dotcl.c \
cmd-run-npt.c \
cmd-install.c install-sbcl-bin.c install-sbcl-bin_windows.c
if WITH_WIN_ICON

View file

@ -25,17 +25,17 @@ int extract(const char *filename, int do_extract, int flags,const char* outputpa
char* type="gzip"; /*for gz*/
if(len>4) {
int i,c;
const char* ext;
for(c=0,i=len;filename[i]!='.' && len>c;--i,++c);
ext=filename+i;
if(strcmp(".tbz2",ext)==0 || strcmp(".bz2",ext)==0) {
type="bzip2";
}else if(strcmp(".xz",ext)==0) {
type="xz";
}else if(strcmp(".7z",ext)==0) {
type="7za";
}else if(strcmp(".cab",ext)==0) {
type="cab";
for(c=0,i=len;filename[i]!='.' && c<5;--i,++c) {
if(filename[i]=='b'||filename[i]=='B') {
type="bzip2";
break;
}else if(filename[i]=='x'||filename[i]=='X') {
type="xz";
break;
}else if(filename[i]=='7') {
type="7za";
break;
}
}
}
cond_printf(1,"extracttype=%s\n",type);

View file

@ -6,7 +6,7 @@ char* extract_command_str(int flags,const char *filename,int do_extract,const ch
char* _uname_m=uname_m();
char* _uname=uname_s();
char* _confdir=configdir();
char* exe=s_escape_string(cat(_confdir,"impls",DIRSEP,_uname_m,DIRSEP,_uname,DIRSEP,"7za",DIRSEP,"9.20",DIRSEP,"7za.exe",NULL));
char* exe=s_escape_string(cat(_confdir,"impls",SLASH,_uname_m,SLASH,_uname,SLASH,"7za",SLASH,"9.20",SLASH,"7za.exe",NULL));
char *outputpath2=q(outputpath);
char *filename2=q(filename);
substitute_char('\\','/',outputpath2);
@ -18,9 +18,6 @@ char* extract_command_str(int flags,const char *filename,int do_extract,const ch
}else if(strcmp(type,"7za")==0) {
ensure_directories_exist(outputpath2);
str=cat(exe," ",do_extract?"x":"t"," -y -o",outputpath2," ",filename2,NULL);
}else if(strcmp(type,"cab")==0) {
if(do_extract)
str=cat("expand.exe /r \"-F:*\" ",filename2," ",outputpath2,NULL);
}
s(outputpath2),s(filename2),s(_confdir),s(_uname),s(_uname_m);
return str;

View file

@ -10,8 +10,8 @@ extern int extract(const char *filename, int do_extract, int flags,const char* o
int installed_p(struct install_options* param) {
int ret;
char *i,*impl=q(param->impl);
i=s_cat(configdir(),q("impls"),q(DIRSEP),q(param->arch),q(DIRSEP),q(param->os),q(DIRSEP),
q(impl),q(param->version?DIRSEP:""),q(param->version?param->version:""),q(DIRSEP),NULL);
i=s_cat(configdir(),q("impls"),q(SLASH),q(param->arch),q(SLASH),q(param->os),q(SLASH),
q(impl),q(param->version?SLASH:""),q(param->version?param->version:""),q(SLASH),NULL);
ret=directory_exist_p(i);
cond_printf(1,"directory_exist_p(%s)=%d\n",i,ret);
s(i),s(impl);
@ -30,11 +30,11 @@ int start(struct install_options* param) {
set_defaultlisp(param->impl,param->version);
exit(EXIT_SUCCESS);
}
p=cat(home,"tmp",DIRSEP,param->impl,param->version?"-":"",param->version?param->version:"",DIRSEP,NULL);
p=cat(home,"tmp",SLASH,param->impl,param->version?"-":"",param->version?param->version:"",SLASH,NULL);
ensure_directories_exist(p);
s(p);
p=cat(home,"tmp",DIRSEP,param->impl,param->version?"-":"",param->version?param->version:"",".lock",NULL);
p=cat(home,"tmp",SLASH,param->impl,param->version?"-":"",param->version?param->version:"",".lock",NULL);
delete_at_exit(p);
touch(p);
@ -53,7 +53,7 @@ int download(struct install_options* param) {
char* home=configdir();
char* url=install_impl->uri;
char* archive_name=download_archive_name(param);
char* impl_archive=cat(home,"archives",DIRSEP,archive_name,NULL);
char* impl_archive=cat(home,"archives",SLASH,archive_name,NULL);
if(!file_exist_p(impl_archive)
|| get_opt("download.force",1)) {
printf("Downloading %s\n",url);

View file

@ -177,15 +177,15 @@ char* lispdir(void) {
s(w);
/* $(bindir)/lisp/ */
LISPDIR_CANDIDATE(cat(ros_bin,"lisp",DIRSEP,NULL));
LISPDIR_CANDIDATE(cat(ros_bin,"lisp",SLASH,NULL));
ros_bin[strlen(ros_bin)-1]='\0';
ros_bin=pathname_directory(ros_bin);
/* $(bindir)/../etc/roswell/ */
LISPDIR_CANDIDATE(cat(ros_bin,"etc"DIRSEP PACKAGE_NAME DIRSEP,NULL));
LISPDIR_CANDIDATE(cat(ros_bin,"etc"SLASH PACKAGE_NAME SLASH,NULL));
/* $(bindir)/../lisp/ */
LISPDIR_CANDIDATE(cat(ros_bin,"lisp",DIRSEP,NULL));
LISPDIR_CANDIDATE(cat(ros_bin,"lisp",SLASH,NULL));
s(ros_bin);
result=append_trail_slash(LISP_PATH);
return q(result);

View file

@ -19,7 +19,7 @@ char** cmd_run_abcl(int argc,char** argv,struct sub_command* cmd) {
s(arch),s(os);
ret=conss((strcmp("system",version)==0)?truename(which("abcl")):cat(home,impl_path,DIRSEP,"abcl",EXE_EXTENTION,NULL),ret);
ret=conss((strcmp("system",version)==0)?truename(which("abcl")):cat(home,impl_path,SLASH,"abcl",EXE_EXTENTION,NULL),ret);
/* runtime options from here */
ret=conss(q("--noinform"),ret);
ret=conss(q("--noinit"),ret);

View file

@ -23,7 +23,7 @@ char** cmd_run_acl(int argc,char** argv,struct sub_command* cmd) {
ret=conss((strcmp("system",version)==0)?
truename(which(lisp)):
cat(home,impl_path,DIRSEP,lisp,EXE_EXTENTION,NULL),ret);
cat(home,impl_path,SLASH,lisp,EXE_EXTENTION,NULL),ret);
/* runtime options from here */
ret=conss(q("-qq"),ret);
if(acl_version) {
@ -33,7 +33,7 @@ char** cmd_run_acl(int argc,char** argv,struct sub_command* cmd) {
}
if(image) {
char *path=cat(basedir(),impl_path,DIRSEP,"dump",DIRSEP,image,".core",NULL);
char *path=cat(basedir(),impl_path,SLASH,"dump",SLASH,image,".core",NULL);
if(file_exist_p(path)) {
ret=conss(q("-I"),ret);
ret=conss(path,ret);

View file

@ -52,7 +52,7 @@ char** cmd_run_ccl(int argc,char** argv,struct sub_command* cmd) {
unsetenv("CCL_DEFAULT_DIRECTORY");
ret=conss(issystem?truename(which(strcmp(impl,"ccl32")==0?"ccl32":"ccl")):
cat(home,impl_path,DIRSEP,binname,EXE_EXTENTION,NULL),ret);
cat(home,impl_path,SLASH,binname,EXE_EXTENTION,NULL),ret);
if(ccl_version)
ret=conss(q("--version"),ret);
ret=conss(q("--no-init"),ret);
@ -61,9 +61,9 @@ char** cmd_run_ccl(int argc,char** argv,struct sub_command* cmd) {
ret=conss(q("--image-name"),ret);
if(!image) {
if(!issystem)
ret=conss(cat(home,impl_path,DIRSEP,binname,".image",NULL),ret);
ret=conss(cat(home,impl_path,SLASH,binname,".image",NULL),ret);
}else
ret=conss(cat(basedir(),impl_path,DIRSEP,"dump",DIRSEP,image,".",binname,NULL),ret);
ret=conss(cat(basedir(),impl_path,SLASH,"dump",SLASH,image,".",binname,NULL),ret);
ret=conss(q("--eval"),ret);
ret=conss(s_cat(q("(progn #-ros.init(cl:load \""),lispdir(),q("init.lisp"),q("\"))"),NULL),ret);

View file

@ -15,7 +15,7 @@ char** cmd_run_clasp(int argc,char** argv,struct sub_command* cmd) {
LVal ret=0;
char *bin=cat(home,impl_path,DIRSEP,"build/boehm/iclasp-boehm",EXE_EXTENTION,NULL);
char *bin=cat(home,impl_path,SLASH,"build/boehm/iclasp-boehm",EXE_EXTENTION,NULL);
s(arch),s(os);
ret=conss(bin,ret);
s(impl_path);

Some files were not shown because too many files have changed in this diff Show more