quicklisp / quicklisp-bootstrap Goto Github PK
View Code? Open in Web Editor NEWQuicklisp bootstrap.
Home Page: http://www.quicklisp.org/
License: MIT License
Quicklisp bootstrap.
Home Page: http://www.quicklisp.org/
License: MIT License
Hi there, I am using sbcl and would like to run the quicklisp setup using the instructions on the quicklisp site https://www.quicklisp.org/beta/#installation or the very similar ones here: https://lisp-lang.org/learn/getting-started/
However, I'd like to be able to do this using a script which runs automatically on a test machine where there is no possibility for interactive input to the script.
This fails because ql:add-to-init-file waits for 'Enter' to go ahead and write to the sbcl config file.
Is there some way I can workaround this currently? If not, could the function be changed so that optionally it doesn't need Enter?
On a lark, I tried to load Quicklisp on MCL 5.2 on an iBook G4 running Mac OS X 10.4.11. It failed because on that platform, there’s no CCL:make-socket
to re-export from qlqs-ccl
.
It’d be awesome if Quicklisp could support old versions of MCL, of course, but in the absence of support it should probably explicitly reject them.
Speaking of the problems: LW6.0.1, 32bit, Win7 64 bits.
-- Compilation aborted. Error: Could not load ASDF "2.009" or newer
1 (continue) Try loading C:\Users\Art\quicklisp\setup.lisp again.
2 Give up loading C:\Users\Art\quicklisp\setup.lisp. --- Error: component
"quicklisp" not found
1 (continue) Try loading C:\Users\Art\quicklisp\setup.lisp again. ---
And lot of warrning dialogs when loading asdf.lisp that goes with
quicklisp. Redefining issues.
In short, can't get it working :)
Best,
Art
Hello,
I am the maintainer for ecl in Alpine Linux and I am attempting to install Quick Lisp
but I am having an issue with the includes path.
Alpine Linux v3.7 (using edge for testing repository)
The only packages installed are ecl, and libffi-dev
# ecl -load quicklisp.lisp -eval "(quicklisp-quickstart:install)"
;;; Loading "/quicklisp.lisp"
;;; Loading #P"/usr/lib/ecl-16.1.3/sockets.fas"
==== quicklisp quickstart 2015-01-28 loaded ====
To continue with installation, evaluate: (quicklisp-quickstart:install)
For installation options, evaluate: (quicklisp-quickstart:help)
; Fetching #<url "http://beta.quicklisp.org/client/quicklisp.sexp">
; 0.82KB
==================================================
838 bytes in 0.00 seconds (818.36KB/sec)
; Fetching #<url "http://beta.quicklisp.org/client/2017-03-06/quicklisp.tar">
; 250.00KB
==================================================
256,000 bytes in 0.04 seconds (6250.00KB/sec)
; Fetching #<url "http://beta.quicklisp.org/client/2015-09-24/setup.lisp">
; 4.94KB
==================================================
5,054 bytes in 0.00 seconds (4935.55KB/sec)
; Fetching #<url "http://beta.quicklisp.org/asdf/2.26/asdf.lisp">
; 194.07KB
==================================================
198,729 bytes in 0.03 seconds (6260.36KB/sec)
;;; Internal error:
;;; ** Unable to find include directoryAn error occurred during initialization:
COMPILE-FILE-ERROR while compiling #<cl-source-file "quicklisp" "package">.
When quicklisp-quickstart:install
function is called in the Quicklisp bootstrap process ASDF writes .fasl
files to its default location ~/.cache/common-lisp/...
. In some situations I prefer to keep all files inside my program's build directory so I need to load and configure ASDF before bootstrapping Quicklisp:
(require "asdf")
(asdf:disable-output-translations)
(quicklisp-quickstart:install)
It would be nice if quicklisp-quickstart:install
had an option for automatically calling asdf:disable-output-translations
or some other general way of configuring ASDF before writing any .fasl
files. It feels ugly to load ASDF manually first because Quicklisp will do that again later.
Researching for Kreyren/kreyren#47 to allow quicklisp implementation in cargo-make.
Currently loading quicklisp through emacs to interpret the following file returns Symbol’s function definition is void: defpackage
.
;; Not working on elisp
(setf *load-verbose* nil)
(load "/home/kreyren/quicklisp/setup.lisp" :verbose nil)
(ql:quickload :uiop :silent t)
(write-line (uiop:getenv "MESSAGE"))
Is it possible to optimize quicklisp to allow it to be ran through emacs?
Add support for HTTP proxies that require authentication. See http://groups.google.com/group/quicklisp/browse_thread/thread/aba32c79d80eec86 for the initial request.
CL-USER> (ql:update-client)
Updating from version 2010121400 to version 2015092400.
Press Enter to continue.
; Redirecting to #<URL "http://103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
; Redirecting to #<URL "http://103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/103.237.181.52/beta.quicklisp.org/quickstart/quicklisp-2015092400.tgz">
Get quicklisp to fetch the resources using https instead of http
quicklisp/quicklisp-client#167
The quickstart message says only this:
==== quicklisp quickstart loaded ====
To continue, evaluate: (quicklisp-quickstart:install)
It would be nice to include some info about the :path and :proxy options, or a link to a page that describes those options.
SOLVED: #22 (comment) (Credit irc.freenode.net/#lisp)
kreyren@leonid:~/Repositories/s7i$ docker build --file docker/debian.Dockerfile --tag kreyren .
Sending build context to Docker daemon 19.97kB
Step 1/8 : FROM debian:testing
---> 03c237d6b0a4
Step 2/8 : ENV DEBIAN_FRONTEND=noninteractive
---> Using cache
---> c35184f3b94d
Step 3/8 : USER root
---> Using cache
---> 48682f2eac52
Step 4/8 : ENV LANG=en_US.UTF-8
---> Using cache
---> 9645af937249
Step 5/8 : ENV LC_ALL=C
---> Using cache
---> 70dc6401ff08
Step 6/8 : RUN true && apt-get update -q && apt-get install -qy apt-utils wget && apt-get autoremove -qy && rm -rf /var/lib/apt/lists/*
---> Using cache
---> 440537154b7e
Step 7/8 : RUN true && apt-get update -q && apt-get install -qy ecl clisp && apt-get autoremove -qy && rm -rf /var/lib/apt/lists/*
---> Using cache
---> 78ad929b927d
Step 8/8 : RUN true && wget https://beta.quicklisp.org/quicklisp.lisp -O /tmp/quicklisp.lisp && printf '%s\n' '(load #p"/tmp/quicklisp.lisp")' '(quicklisp-quickstart:install)' > /tmp/my.lisp && ecl --norc --quiet --shell /tmp/my.lisp && rm -r /tmp/*.lisp
---> Running in f86102fd934c
�[91m--2020-11-13 16:25:11-- https://beta.quicklisp.org/quicklisp.lisp
�[0m�[91mResolving beta.quicklisp.org (beta.quicklisp.org)... �[0m�[91m99.86.243.53, 99.86.243.113, 99.86.243.74, ...
Connecting to beta.quicklisp.org (beta.quicklisp.org)|99.86.243.53|:443... �[0m�[91mconnected.
�[0m�[91mHTTP request sent, awaiting response... �[0m�[91m200 OK
Length: 57144 (56K) [text/plain]
Saving to: '/tmp/quicklisp.lisp'
�[0m�[91m
0K .......... ......�[0m�[91m.... ....�[0m�[91m...... ..�[0m�[91m........ ........�[0m�[91m.. 89% 2.13M 0s
50K .....�[0m�[91m �[0m�[91m �[0m�[91m100% 92.7M=0.02s
�[0m�[91m2020-11-13 16:25:11 (2.37 MB/s) - '/tmp/quicklisp.lisp' saved [57144/57144]
�[0m;;; Loading "/tmp/quicklisp.lisp"
;;; Loading #P"/usr/lib/x86_64-linux-gnu/ecl-20.4.24/sockets.fas"
==== quicklisp quickstart 2015-01-28 loaded ====
To continue with installation, evaluate: (quicklisp-quickstart:install)
For installation options, evaluate: (quicklisp-quickstart:help)
�[91mAn error occurred during initialization:
�[0m�[91mSocket error in "socket": EINVAL (Invalid argument).
�[0mThe command '/bin/sh -c true && wget https://beta.quicklisp.org/quicklisp.lisp -O /tmp/quicklisp.lisp && printf '%s\n' '(load #p"/tmp/quicklisp.lisp")' '(quicklisp-quickstart:install)' > /tmp/my.lisp && ecl --norc --quiet --shell /tmp/my.lisp && rm -r /tmp/*.lisp' returned a non-zero code: 1
FROM debian:testing
# To avoid bricked workspaces (https://github.com/gitpod-io/gitpod/issues/1171)
ENV DEBIAN_FRONTEND=noninteractive
USER root
ENV LANG=en_US.UTF-8
ENV LC_ALL=C
# Get dependencies
RUN true \
&& apt-get update -q \
&& apt-get install -qy \
apt-utils \
wget \
&& apt-get autoremove -qy \
&& rm -rf /var/lib/apt/lists/*
# Get implementations
RUN true \
&& apt-get update -q \
&& apt-get install -qy \
ecl \
clisp \
&& apt-get autoremove -qy \
&& rm -rf /var/lib/apt/lists/*
# Install quicklisp
RUN true \
&& wget https://beta.quicklisp.org/quicklisp.lisp -O /tmp/quicklisp.lisp \
&& printf '%s\n' \
'(load #p"/tmp/quicklisp.lisp")' \
'(quicklisp-quickstart:install)' > /tmp/my.lisp \
&& ecl --norc --quiet --shell /tmp/my.lisp \
&& rm -r /tmp/*.lisp
Works using clisp
-> Assuming bug
Backtrace: http://ix.io/2E1U
/usr/lib/x86_64-linux-gnu/libecl.so.20.4(cl_error+0xf0) [0x7fadebe796a0]
/usr/lib/x86_64-linux-gnu/ecl-20.4.24/sockets.fas(+0x4080) [0x7fade9073080]
Strace: http://ix.io/2E1Z / https://rust-lang.github.io/rust-log-analyzer/log-viewer/#https://cors-anywhere.herokuapp.com/ix.io/2E1Z
socket(AF_INET, SOCK_STREAM, 0xffffffff /* IPPROTO_??? */) = -1 EINVAL (Invalid argument)
The ASDF shipped with latest Quicklisp-client doesn't work on Allegro CL 8.1 correctly. So I fixed it and made an ugly patch for it. I'm so sorry I don't know whether this is the right place ( I found that the file asdf.lisp' is in this project but not in
quicklisp-client' project) to discuss this problem, so I also post an email to asdf-devel.
The problem and patch can also be found here: nakrakiiya/acl-patches@86236e1#8.1/quicklisp-client-2012112500/asdf.lisp
Illegal keyword given: :EXTERNAL-FORMAT.' while executing `(quicklisp-quickstart:install)'.
Details:
CL-USER> (quicklisp-quickstart:install)
; Loading D:\Documents and Settings\nakra\quicklisp\setup.lisp
Illegal keyword given: :EXTERNAL-FORMAT.
[Condition of type PROGRAM-ERROR]
Restarts:
0: [RETRY] Retry compiling #<CL-SOURCE-FILE "quicklisp" "package">.
1: [ACCEPT] Continue, treating compiling #<CL-SOURCE-FILE "quicklisp" "package"> as having been successful.
2: [RETRY] retry the load of D:\Documents and Settings\nakra\quicklisp\setup.lisp
3: [SKIP] skip loading D:\Documents and Settings\nakra\quicklisp\setup.lisp
4: [RECOMPILE-DUE-TO-INCOMPATIBLE-FASL] recompile D:\Documents and Settings\nakra\quicklisp\setup.lisp
5: [RETRY] Retry SLIME REPL evaluation request.
--more--
Backtrace:
0: (ERROR PROGRAM-ERROR :FORMAT-CONTROL "Illegal keyword given: ~s." :FORMAT-ARGUMENTS (:EXTERNAL-FORMAT))
1: (COMPILE-FILE-PATHNAME "x.lisp" ..)
2: (ASDF:COMPILE-FILE-PATHNAME* #P"D:\Documents and Settings\nakra\quicklisp\quicklisp\package.lisp" :OUTPUT-FILE ..)
3: (ASDF:COMPILE-FILE* #P"D:\Documents and Settings\nakra\quicklisp\quicklisp\package.lisp" :OUTPUT-FILE ..)
4: ((:INTERNAL (METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) 0))
5: ((METHOD ASDF::CALL-WITH-AROUND-COMPILE-HOOK (ASDF:COMPONENT T)) #<ASDF:CL-SOURCE-FILE "quicklisp" "package"> #<Closure (:INTERNAL (METHOD ASDF:PERFORM #) 0) @ #x2143fc7a>)
6: ((METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">)
7: ((:INTERNAL (:EFFECTIVE-METHOD 2 NIL NIL NIL NIL) 0) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">)
8: ((METHOD ASDF::PERFORM-WITH-RESTARTS (T T)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">)
9: ((METHOD ASDF::PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">)
10: ((:INTERNAL (:EFFECTIVE-METHOD 2 NIL NIL T T) 0) #<ASDF:COMPILE-OP (:VERBOSE NIL) @ #x213d60c2> #<ASDF:CL-SOURCE-FILE "quicklisp" "package">)
11: ((FLET (METHOD ASDF::PERFORM-PLAN (LIST)) EXCL::CONTINUATION))
12: ((METHOD ASDF::PERFORM-PLAN (LIST)) ..)
13: ((:INTERNAL (:EFFECTIVE-METHOD 1 T T NIL NIL) 0) ..)
14: ((:INTERNAL (METHOD ASDF:OPERATE (T T)) 0))
15: (ASDF::CALL-WITH-SYSTEM-DEFINITIONS #<Closure (:INTERNAL (METHOD ASDF:OPERATE #) 0) [LOAD-OP] @ #x213d36da>)
16: ((METHOD ASDF:OPERATE (T T)) ASDF:LOAD-OP "quicklisp" :VERBOSE NIL)
17: ((:INTERNAL (:EFFECTIVE-METHOD 2 T NIL NIL NIL) 0) ASDF:LOAD-OP "quicklisp" . 1)
18: (ASDF:OOS ASDF:LOAD-OP "quicklisp" :VERBOSE NIL)
19: (LET ((COMPILE-PRINT NIL) (COMPILE-VERBOSE NIL) (LOAD-VERBOSE NIL) (LOAD-PRINT NIL)) (ASDF:OOS 'ASDF:LOAD-OP "quicklisp" :VERBOSE NIL))
--more--
The diff from the origin asdf.lisp file:
$ git diff 6d465f92b240fe5ded55447f9a000a1e54a7a22a 86236e11d89765a15fe44c0ede40119ed4958c3c
diff --git a/8.1/quicklisp-client-2012112500/asdf.lisp b/8.1/quicklisp-client-2012112500/asdf.lisp
index 283ad86..2f9b98a 100644
--- a/8.1/quicklisp-client-2012112500/asdf.lisp
+++ b/8.1/quicklisp-client-2012112500/asdf.lisp
@@ -2478,7 +2478,10 @@ recursive calls to traverse.")
c #'(lambda (&rest flags)
(apply *compile-op-compile-file-function* source-file
:output-file output-file
- :external-format (component-external-format c)
+ #+(or (and allegro (version>= 8 2))
+ (not allegro)) :external-format
+ #+(or (and allegro (version>= 8 2))
+ (not allegro)) (component-external-format c)
(append flags (compile-op-flags operation)))))
(unless output
(error 'compile-error :component c :operation operation))
With only a little bit of hacking, I managed to load the QuickLisp bootstrap on MCL 5.1 on Mac OS 9.2.2. However during the installation the tar file was expanded into a flat directory of files with slashes in their names.
This is probably because the classic Mac OS uses colon as its path separator, while minitar is expecting to be able to use a slash-containing path obtained from a tar file directly in a filesystem path.
Minimalism in quicklisp-bootstrap is antithetical to a lot of features that people would like to see in bootstrapping quicklisp, such as supporting cryptographic checksums, if not native https support, etc.
Yet minimalism in source code can be compatible with maximalism in deployed artifact:
1- A lot of libraries could be shipped with the quicklisp.lisp loadable file, using asdf:monolithic-concatenate-source-op. The constraint is that none of the concatenated source file may rely on a wrapper or dynamic environment reset around individual files to setup or reset readtables or other syntax variables. This unhappily excludes, e.g. ironclad. Assuming no funky business with the reader, the file could be further minimized, if needed, by filtering out docstrings, comments, blanks, etc.
2- If further libraries are required that do not satisfy those requirements, they can be shipped as part of of an embedded tarball, compressed and mime-encoded into a string, then installed and loaded by the loader.
TL;DR:
My suggestions:
(quicklisp-quickstart:install)
show a simple message instead of throw an error when trying to re-install Quicklisp(ql:add-to-init-file)
after completion of either (quicklisp-quickstart:install)
or (load "quicklisp/setup.lisp")
.The current procedure for setting up a fresh installation of Quicklisp:
helpfully suggests the user to use:
to load Quicklisp automatically the next time s/he starts their Lisp.
However, when Quicklisp is already installed using one Lisp implementation, and the user tries to use the above procedure while running a different Lisp implementation, after the step:
the user gets an error, like (using CCL as an example):
? (quicklisp-quickstart:install)
Error: Quicklisp has already been installed. Load #P"/home/miki/quicklisp/setup.lisp" instead.
While executing: QUICKLISP-QUICKSTART:INSTALL, in process listener(1).
Type :POP to abort, :R for a list of available restarts.
Type :? for other options.
Lisp signals Error: Quicklisp has already been installed. Load #P"/home/miki/quicklisp/setup.lisp" instead
and the user gets thrown into the debugger, which may be unfamiliar (i.e. depending on the verbosity of the particular Lisp's debugger, it may not be obvious that there is a simple restart which loads the needed file).
After (if?) the user manages to exit to the top-level and uses:
s/he no longer receives the suggestion to use (ql:add-to-init-file)
to setup Quicklisp on every session, and may have to go look for documentation elsewhere on how to do this.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.